| 1 |
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=421)}([function(e,t,n){var r; |
| 2 |
/*! |
| 3 |
Copyright (c) 2017 Jed Watson. |
| 4 |
Licensed under the MIT License (MIT), see |
| 5 |
http://jedwatson.github.io/classnames |
| 6 |
*/!function(){"use strict";var n={}.hasOwnProperty;function a(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var i=a.apply(null,r);i&&e.push(i)}else if("object"===o)for(var s in r)n.call(r,s)&&r[s]&&e.push(s)}}return e.join(" ")}e.exports?(a.default=a,e.exports=a):void 0===(r=function(){return a}.apply(t,[]))||(e.exports=r)}()},function(e,t,n){(function(e){e.exports=function(){"use strict";var t,r;function a(){return t.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e){return void 0===e}function l(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function c(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function u(e,t){var n,r=[];for(n=0;n<e.length;++n)r.push(t(e[n],n));return r}function d(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function p(e,t){for(var n in t)d(t,n)&&(e[n]=t[n]);return d(t,"toString")&&(e.toString=t.toString),d(t,"valueOf")&&(e.valueOf=t.valueOf),e}function m(e,t,n,r){return Lt(e,t,n,r,!0).utc()}function f(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function h(e){if(null==e._isValid){var t=f(e),n=r.call(t.parsedDateParts,(function(e){return null!=e})),a=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(a=a&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return a;e._isValid=a}return e._isValid}function b(e){var t=m(NaN);return null!=e?p(f(t),e):f(t).userInvalidated=!0,t}r=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,r=0;r<n;r++)if(r in t&&e.call(this,t[r],r,t))return!0;return!1};var g=a.momentProperties=[];function _(e,t){var n,r,a;if(s(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),s(t._i)||(e._i=t._i),s(t._f)||(e._f=t._f),s(t._l)||(e._l=t._l),s(t._strict)||(e._strict=t._strict),s(t._tzm)||(e._tzm=t._tzm),s(t._isUTC)||(e._isUTC=t._isUTC),s(t._offset)||(e._offset=t._offset),s(t._pf)||(e._pf=f(t)),s(t._locale)||(e._locale=t._locale),g.length>0)for(n=0;n<g.length;n++)s(a=t[r=g[n]])||(e[r]=a);return e}var y=!1;function k(e){_(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===y&&(y=!0,a.updateOffset(this),y=!1)}function w(e){return e instanceof k||null!=e&&null!=e._isAMomentObject}function v(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function M(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=v(t)),n}function L(e,t,n){var r,a=Math.min(e.length,t.length),o=Math.abs(e.length-t.length),i=0;for(r=0;r<a;r++)(n&&e[r]!==t[r]||!n&&M(e[r])!==M(t[r]))&&i++;return i+o}function T(e){!1===a.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function E(e,t){var n=!0;return p((function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,e),n){for(var r,o=[],i=0;i<arguments.length;i++){if(r="","object"==typeof arguments[i]){for(var s in r+="\n["+i+"] ",arguments[0])r+=s+": "+arguments[0][s]+", ";r=r.slice(0,-2)}else r=arguments[i];o.push(r)}T(e+"\nArguments: "+Array.prototype.slice.call(o).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var S,x={};function C(e,t){null!=a.deprecationHandler&&a.deprecationHandler(e,t),x[e]||(T(t),x[e]=!0)}function D(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function O(e,t){var n,r=p({},e);for(n in t)d(t,n)&&(i(e[n])&&i(t[n])?(r[n]={},p(r[n],e[n]),p(r[n],t[n])):null!=t[n]?r[n]=t[n]:delete r[n]);for(n in e)d(e,n)&&!d(t,n)&&i(e[n])&&(r[n]=p({},r[n]));return r}function Y(e){null!=e&&this.set(e)}a.suppressDeprecationWarnings=!1,a.deprecationHandler=null,S=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)d(e,t)&&n.push(t);return n};var j={};function P(e,t){var n=e.toLowerCase();j[n]=j[n+"s"]=j[t]=e}function N(e){return"string"==typeof e?j[e]||j[e.toLowerCase()]:void 0}function B(e){var t,n,r={};for(n in e)d(e,n)&&(t=N(n))&&(r[t]=e[n]);return r}var A={};function H(e,t){A[e]=t}function z(e,t,n){var r=""+Math.abs(e),a=t-r.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}var I=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,F=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,R={},W={};function U(e,t,n,r){var a=r;"string"==typeof r&&(a=function(){return this[r]()}),e&&(W[e]=a),t&&(W[t[0]]=function(){return z(a.apply(this,arguments),t[1],t[2])}),n&&(W[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),e)})}function q(e,t){return e.isValid()?(t=G(t,e.localeData()),R[t]=R[t]||function(e){var t,n,r,a=e.match(I);for(t=0,n=a.length;t<n;t++)W[a[t]]?a[t]=W[a[t]]:a[t]=(r=a[t]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(t){var r,o="";for(r=0;r<n;r++)o+=D(a[r])?a[r].call(t,e):a[r];return o}}(t),R[t](e)):e.localeData().invalidDate()}function G(e,t){var n=5;function r(e){return t.longDateFormat(e)||e}for(F.lastIndex=0;n>=0&&F.test(e);)e=e.replace(F,r),F.lastIndex=0,n-=1;return e}var V=/\d/,$=/\d\d/,J=/\d{3}/,X=/\d{4}/,Q=/[+-]?\d{6}/,K=/\d\d?/,Z=/\d\d\d\d?/,ee=/\d\d\d\d\d\d?/,te=/\d{1,3}/,ne=/\d{1,4}/,re=/[+-]?\d{1,6}/,ae=/\d+/,oe=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,se=/Z|[+-]\d\d(?::?\d\d)?/gi,le=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ce={};function ue(e,t,n){ce[e]=D(t)?t:function(e,r){return e&&n?n:t}}function de(e,t){return d(ce,e)?ce[e](t._strict,t._locale):new RegExp(pe(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,r,a){return t||n||r||a}))))}function pe(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var me={};function fe(e,t){var n,r=t;for("string"==typeof e&&(e=[e]),l(t)&&(r=function(e,n){n[t]=M(e)}),n=0;n<e.length;n++)me[e[n]]=r}function he(e,t){fe(e,(function(e,n,r,a){r._w=r._w||{},t(e,r._w,r,a)}))}function be(e,t,n){null!=t&&d(me,e)&&me[e](t,n._a,n,e)}function ge(e){return _e(e)?366:365}function _e(e){return e%4==0&&e%100!=0||e%400==0}U("Y",0,0,(function(){var e=this.year();return e<=9999?""+e:"+"+e})),U(0,["YY",2],0,(function(){return this.year()%100})),U(0,["YYYY",4],0,"year"),U(0,["YYYYY",5],0,"year"),U(0,["YYYYYY",6,!0],0,"year"),P("year","y"),H("year",1),ue("Y",oe),ue("YY",K,$),ue("YYYY",ne,X),ue("YYYYY",re,Q),ue("YYYYYY",re,Q),fe(["YYYYY","YYYYYY"],0),fe("YYYY",(function(e,t){t[0]=2===e.length?a.parseTwoDigitYear(e):M(e)})),fe("YY",(function(e,t){t[0]=a.parseTwoDigitYear(e)})),fe("Y",(function(e,t){t[0]=parseInt(e,10)})),a.parseTwoDigitYear=function(e){return M(e)+(M(e)>68?1900:2e3)};var ye,ke=we("FullYear",!0);function we(e,t){return function(n){return null!=n?(Me(this,e,n),a.updateOffset(this,t),this):ve(this,e)}}function ve(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Me(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&_e(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Le(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Le(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,r=(t%(n=12)+n)%n;return e+=(t-r)/12,1===r?_e(e)?29:28:31-r%7%2}ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},U("M",["MM",2],"Mo",(function(){return this.month()+1})),U("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),U("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),P("month","M"),H("month",8),ue("M",K),ue("MM",K,$),ue("MMM",(function(e,t){return t.monthsShortRegex(e)})),ue("MMMM",(function(e,t){return t.monthsRegex(e)})),fe(["M","MM"],(function(e,t){t[1]=M(e)-1})),fe(["MMM","MMMM"],(function(e,t,n,r){var a=n._locale.monthsParse(e,r,n._strict);null!=a?t[1]=a:f(n).invalidMonth=e}));var Te=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ee="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Se="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function xe(e,t,n){var r,a,o,i=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)o=m([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(o,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(o,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(a=ye.call(this._shortMonthsParse,i))?a:null:-1!==(a=ye.call(this._longMonthsParse,i))?a:null:"MMM"===t?-1!==(a=ye.call(this._shortMonthsParse,i))||-1!==(a=ye.call(this._longMonthsParse,i))?a:null:-1!==(a=ye.call(this._longMonthsParse,i))||-1!==(a=ye.call(this._shortMonthsParse,i))?a:null}function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=M(t);else if(!l(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Le(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function De(e){return null!=e?(Ce(this,e),a.updateOffset(this,!0),this):ve(this,"Month")}var Oe=le,Ye=le;function je(){function e(e,t){return t.length-e.length}var t,n,r=[],a=[],o=[];for(t=0;t<12;t++)n=m([2e3,t]),r.push(this.monthsShort(n,"")),a.push(this.months(n,"")),o.push(this.months(n,"")),o.push(this.monthsShort(n,""));for(r.sort(e),a.sort(e),o.sort(e),t=0;t<12;t++)r[t]=pe(r[t]),a[t]=pe(a[t]);for(t=0;t<24;t++)o[t]=pe(o[t]);this._monthsRegex=new RegExp("^("+o.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Pe(e,t,n,r,a,o,i){var s;return e<100&&e>=0?(s=new Date(e+400,t,n,r,a,o,i),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,t,n,r,a,o,i),s}function Ne(e){var t;if(e<100&&e>=0){var n=Array.prototype.slice.call(arguments);n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Be(e,t,n){var r=7+t-n;return-(7+Ne(e,0,r).getUTCDay()-t)%7+r-1}function Ae(e,t,n,r,a){var o,i,s=1+7*(t-1)+(7+n-r)%7+Be(e,r,a);return s<=0?i=ge(o=e-1)+s:s>ge(e)?(o=e+1,i=s-ge(e)):(o=e,i=s),{year:o,dayOfYear:i}}function He(e,t,n){var r,a,o=Be(e.year(),t,n),i=Math.floor((e.dayOfYear()-o-1)/7)+1;return i<1?r=i+ze(a=e.year()-1,t,n):i>ze(e.year(),t,n)?(r=i-ze(e.year(),t,n),a=e.year()+1):(a=e.year(),r=i),{week:r,year:a}}function ze(e,t,n){var r=Be(e,t,n),a=Be(e+1,t,n);return(ge(e)-r+a)/7}function Ie(e,t){return e.slice(t,7).concat(e.slice(0,t))}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),P("week","w"),P("isoWeek","W"),H("week",5),H("isoWeek",5),ue("w",K),ue("ww",K,$),ue("W",K),ue("WW",K,$),he(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=M(e)})),U("d",0,"do","day"),U("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),U("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),U("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),P("day","d"),P("weekday","e"),P("isoWeekday","E"),H("day",11),H("weekday",11),H("isoWeekday",11),ue("d",K),ue("e",K),ue("E",K),ue("dd",(function(e,t){return t.weekdaysMinRegex(e)})),ue("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),ue("dddd",(function(e,t){return t.weekdaysRegex(e)})),he(["dd","ddd","dddd"],(function(e,t,n,r){var a=n._locale.weekdaysParse(e,r,n._strict);null!=a?t.d=a:f(n).invalidWeekday=e})),he(["d","e","E"],(function(e,t,n,r){t[r]=M(e)}));var Fe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Re="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),We="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Ue(e,t,n){var r,a,o,i=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)o=m([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(o,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(a=ye.call(this._weekdaysParse,i))?a:null:"ddd"===t?-1!==(a=ye.call(this._shortWeekdaysParse,i))?a:null:-1!==(a=ye.call(this._minWeekdaysParse,i))?a:null:"dddd"===t?-1!==(a=ye.call(this._weekdaysParse,i))||-1!==(a=ye.call(this._shortWeekdaysParse,i))||-1!==(a=ye.call(this._minWeekdaysParse,i))?a:null:"ddd"===t?-1!==(a=ye.call(this._shortWeekdaysParse,i))||-1!==(a=ye.call(this._weekdaysParse,i))||-1!==(a=ye.call(this._minWeekdaysParse,i))?a:null:-1!==(a=ye.call(this._minWeekdaysParse,i))||-1!==(a=ye.call(this._weekdaysParse,i))||-1!==(a=ye.call(this._shortWeekdaysParse,i))?a:null}var qe=le,Ge=le,Ve=le;function $e(){function e(e,t){return t.length-e.length}var t,n,r,a,o,i=[],s=[],l=[],c=[];for(t=0;t<7;t++)n=m([2e3,1]).day(t),r=this.weekdaysMin(n,""),a=this.weekdaysShort(n,""),o=this.weekdays(n,""),i.push(r),s.push(a),l.push(o),c.push(r),c.push(a),c.push(o);for(i.sort(e),s.sort(e),l.sort(e),c.sort(e),t=0;t<7;t++)s[t]=pe(s[t]),l[t]=pe(l[t]),c[t]=pe(c[t]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function Je(){return this.hours()%12||12}function Xe(e,t){U(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function Qe(e,t){return t._meridiemParse}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Je),U("k",["kk",2],0,(function(){return this.hours()||24})),U("hmm",0,0,(function(){return""+Je.apply(this)+z(this.minutes(),2)})),U("hmmss",0,0,(function(){return""+Je.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)})),U("Hmm",0,0,(function(){return""+this.hours()+z(this.minutes(),2)})),U("Hmmss",0,0,(function(){return""+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)})),Xe("a",!0),Xe("A",!1),P("hour","h"),H("hour",13),ue("a",Qe),ue("A",Qe),ue("H",K),ue("h",K),ue("k",K),ue("HH",K,$),ue("hh",K,$),ue("kk",K,$),ue("hmm",Z),ue("hmmss",ee),ue("Hmm",Z),ue("Hmmss",ee),fe(["H","HH"],3),fe(["k","kk"],(function(e,t,n){var r=M(e);t[3]=24===r?0:r})),fe(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),fe(["h","hh"],(function(e,t,n){t[3]=M(e),f(n).bigHour=!0})),fe("hmm",(function(e,t,n){var r=e.length-2;t[3]=M(e.substr(0,r)),t[4]=M(e.substr(r)),f(n).bigHour=!0})),fe("hmmss",(function(e,t,n){var r=e.length-4,a=e.length-2;t[3]=M(e.substr(0,r)),t[4]=M(e.substr(r,2)),t[5]=M(e.substr(a)),f(n).bigHour=!0})),fe("Hmm",(function(e,t,n){var r=e.length-2;t[3]=M(e.substr(0,r)),t[4]=M(e.substr(r))})),fe("Hmmss",(function(e,t,n){var r=e.length-4,a=e.length-2;t[3]=M(e.substr(0,r)),t[4]=M(e.substr(r,2)),t[5]=M(e.substr(a))}));var Ke,Ze=we("Hours",!0),et={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ee,monthsShort:Se,week:{dow:0,doy:6},weekdays:Fe,weekdaysMin:We,weekdaysShort:Re,meridiemParse:/[ap]\.?m?\.?/i},tt={},nt={};function rt(e){return e?e.toLowerCase().replace("_","-"):e}function at(t){var r=null;if(!tt[t]&&void 0!==e&&e&&e.exports)try{r=Ke._abbr,n(392)("./"+t),ot(r)}catch(e){}return tt[t]}function ot(e,t){var n;return e&&((n=s(t)?st(e):it(e,t))?Ke=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Ke._abbr}function it(e,t){if(null!==t){var n,r=et;if(t.abbr=e,null!=tt[e])C("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=tt[e]._config;else if(null!=t.parentLocale)if(null!=tt[t.parentLocale])r=tt[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return nt[t.parentLocale]||(nt[t.parentLocale]=[]),nt[t.parentLocale].push({name:e,config:t}),null;r=n._config}return tt[e]=new Y(O(r,t)),nt[e]&&nt[e].forEach((function(e){it(e.name,e.config)})),ot(e),tt[e]}return delete tt[e],null}function st(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Ke;if(!o(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,r,a,o=0;o<e.length;){for(t=(a=rt(e[o]).split("-")).length,n=(n=rt(e[o+1]))?n.split("-"):null;t>0;){if(r=at(a.slice(0,t).join("-")))return r;if(n&&n.length>=t&&L(a,n,!0)>=t-1)break;t--}o++}return Ke}(e)}function lt(e){var t,n=e._a;return n&&-2===f(e).overflow&&(t=n[1]<0||n[1]>11?1:n[2]<1||n[2]>Le(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,f(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),f(e)._overflowWeeks&&-1===t&&(t=7),f(e)._overflowWeekday&&-1===t&&(t=8),f(e).overflow=t),e}function ct(e,t,n){return null!=e?e:null!=t?t:n}function ut(e){var t,n,r,o,i,s=[];if(!e._d){for(r=function(e){var t=new Date(a.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[2]&&null==e._a[1]&&function(e){var t,n,r,a,o,i,s,l;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)o=1,i=4,n=ct(t.GG,e._a[0],He(Tt(),1,4).year),r=ct(t.W,1),((a=ct(t.E,1))<1||a>7)&&(l=!0);else{o=e._locale._week.dow,i=e._locale._week.doy;var c=He(Tt(),o,i);n=ct(t.gg,e._a[0],c.year),r=ct(t.w,c.week),null!=t.d?((a=t.d)<0||a>6)&&(l=!0):null!=t.e?(a=t.e+o,(t.e<0||t.e>6)&&(l=!0)):a=o}r<1||r>ze(n,o,i)?f(e)._overflowWeeks=!0:null!=l?f(e)._overflowWeekday=!0:(s=Ae(n,r,a,o,i),e._a[0]=s.year,e._dayOfYear=s.dayOfYear)}(e),null!=e._dayOfYear&&(i=ct(e._a[0],r[0]),(e._dayOfYear>ge(i)||0===e._dayOfYear)&&(f(e)._overflowDayOfYear=!0),n=Ne(i,0,e._dayOfYear),e._a[1]=n.getUTCMonth(),e._a[2]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=s[t]=r[t];for(;t<7;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?Ne:Pe).apply(null,s),o=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==o&&(f(e).weekdayMismatch=!0)}}var dt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,pt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/Z|[+-]\d\d(?::?\d\d)?/,ft=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],ht=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],bt=/^\/?Date\((\-?\d+)/i;function gt(e){var t,n,r,a,o,i,s=e._i,l=dt.exec(s)||pt.exec(s);if(l){for(f(e).iso=!0,t=0,n=ft.length;t<n;t++)if(ft[t][1].exec(l[1])){a=ft[t][0],r=!1!==ft[t][2];break}if(null==a)return void(e._isValid=!1);if(l[3]){for(t=0,n=ht.length;t<n;t++)if(ht[t][1].exec(l[3])){o=(l[2]||" ")+ht[t][0];break}if(null==o)return void(e._isValid=!1)}if(!r&&null!=o)return void(e._isValid=!1);if(l[4]){if(!mt.exec(l[4]))return void(e._isValid=!1);i="Z"}e._f=a+(o||"")+(i||""),vt(e)}else e._isValid=!1}var _t=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function yt(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}var kt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function wt(e){var t,n,r,a,o,i,s,l=_t.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(l){var c=(t=l[4],n=l[3],r=l[2],a=l[5],o=l[6],i=l[7],s=[yt(t),Se.indexOf(n),parseInt(r,10),parseInt(a,10),parseInt(o,10)],i&&s.push(parseInt(i,10)),s);if(!function(e,t,n){return!e||Re.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(f(n).weekdayMismatch=!0,n._isValid=!1,!1)}(l[1],c,e))return;e._a=c,e._tzm=function(e,t,n){if(e)return kt[e];if(t)return 0;var r=parseInt(n,10),a=r%100;return(r-a)/100*60+a}(l[8],l[9],l[10]),e._d=Ne.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),f(e).rfc2822=!0}else e._isValid=!1}function vt(e){if(e._f!==a.ISO_8601)if(e._f!==a.RFC_2822){e._a=[],f(e).empty=!0;var t,n,r,o,i,s=""+e._i,l=s.length,c=0;for(r=G(e._f,e._locale).match(I)||[],t=0;t<r.length;t++)o=r[t],(n=(s.match(de(o,e))||[])[0])&&((i=s.substr(0,s.indexOf(n))).length>0&&f(e).unusedInput.push(i),s=s.slice(s.indexOf(n)+n.length),c+=n.length),W[o]?(n?f(e).empty=!1:f(e).unusedTokens.push(o),be(o,n,e)):e._strict&&!n&&f(e).unusedTokens.push(o);f(e).charsLeftOver=l-c,s.length>0&&f(e).unusedInput.push(s),e._a[3]<=12&&!0===f(e).bigHour&&e._a[3]>0&&(f(e).bigHour=void 0),f(e).parsedDateParts=e._a.slice(0),f(e).meridiem=e._meridiem,e._a[3]=function(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),ut(e),lt(e)}else wt(e);else gt(e)}function Mt(e){var t=e._i,n=e._f;return e._locale=e._locale||st(e._l),null===t||void 0===n&&""===t?b({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),w(t)?new k(lt(t)):(c(t)?e._d=t:o(n)?function(e){var t,n,r,a,o;if(0===e._f.length)return f(e).invalidFormat=!0,void(e._d=new Date(NaN));for(a=0;a<e._f.length;a++)o=0,t=_({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[a],vt(t),h(t)&&(o+=f(t).charsLeftOver,o+=10*f(t).unusedTokens.length,f(t).score=o,(null==r||o<r)&&(r=o,n=t));p(e,n||t)}(e):n?vt(e):function(e){var t=e._i;s(t)?e._d=new Date(a.now()):c(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=bt.exec(e._i);null===t?(gt(e),!1===e._isValid&&(delete e._isValid,wt(e),!1===e._isValid&&(delete e._isValid,a.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):o(t)?(e._a=u(t.slice(0),(function(e){return parseInt(e,10)})),ut(e)):i(t)?function(e){if(!e._d){var t=B(e._i);e._a=u([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),ut(e)}}(e):l(t)?e._d=new Date(t):a.createFromInputFallback(e)}(e),h(e)||(e._d=null),e))}function Lt(e,t,n,r,a){var s,l={};return!0!==n&&!1!==n||(r=n,n=void 0),(i(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=a,l._l=n,l._i=e,l._f=t,l._strict=r,(s=new k(lt(Mt(l))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function Tt(e,t,n,r){return Lt(e,t,n,r,!1)}a.createFromInputFallback=E("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),a.ISO_8601=function(){},a.RFC_2822=function(){};var Et=E("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:b()})),St=E("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:b()}));function xt(e,t){var n,r;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],r=1;r<t.length;++r)t[r].isValid()&&!t[r][e](n)||(n=t[r]);return n}var Ct=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Dt(e){var t=B(e),n=t.year||0,r=t.quarter||0,a=t.month||0,o=t.week||t.isoWeek||0,i=t.day||0,s=t.hour||0,l=t.minute||0,c=t.second||0,u=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===ye.call(Ct,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,r=0;r<Ct.length;++r)if(e[Ct[r]]){if(n)return!1;parseFloat(e[Ct[r]])!==M(e[Ct[r]])&&(n=!0)}return!0}(t),this._milliseconds=+u+1e3*c+6e4*l+1e3*s*60*60,this._days=+i+7*o,this._months=+a+3*r+12*n,this._data={},this._locale=st(),this._bubble()}function Ot(e){return e instanceof Dt}function Yt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function jt(e,t){U(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+z(~~(e/60),2)+t+z(~~e%60,2)}))}jt("Z",":"),jt("ZZ",""),ue("Z",se),ue("ZZ",se),fe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=Nt(se,e)}));var Pt=/([\+\-]|\d\d)/gi;function Nt(e,t){var n=(t||"").match(e);if(null===n)return null;var r=((n[n.length-1]||[])+"").match(Pt)||["-",0,0],a=60*r[1]+M(r[2]);return 0===a?0:"+"===r[0]?a:-a}function Bt(e,t){var n,r;return t._isUTC?(n=t.clone(),r=(w(e)||c(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+r),a.updateOffset(n,!1),n):Tt(e).local()}function At(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Ht(){return!!this.isValid()&&this._isUTC&&0===this._offset}a.updateOffset=function(){};var zt=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,It=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ft(e,t){var n,r,a,o,i,s,c=e,u=null;return Ot(e)?c={ms:e._milliseconds,d:e._days,M:e._months}:l(e)?(c={},t?c[t]=e:c.milliseconds=e):(u=zt.exec(e))?(n="-"===u[1]?-1:1,c={y:0,d:M(u[2])*n,h:M(u[3])*n,m:M(u[4])*n,s:M(u[5])*n,ms:M(Yt(1e3*u[6]))*n}):(u=It.exec(e))?(n="-"===u[1]?-1:1,c={y:Rt(u[2],n),M:Rt(u[3],n),w:Rt(u[4],n),d:Rt(u[5],n),h:Rt(u[6],n),m:Rt(u[7],n),s:Rt(u[8],n)}):null==c?c={}:"object"==typeof c&&("from"in c||"to"in c)&&(o=Tt(c.from),i=Tt(c.to),a=o.isValid()&&i.isValid()?(i=Bt(i,o),o.isBefore(i)?s=Wt(o,i):((s=Wt(i,o)).milliseconds=-s.milliseconds,s.months=-s.months),s):{milliseconds:0,months:0},(c={}).ms=a.milliseconds,c.M=a.months),r=new Dt(c),Ot(e)&&d(e,"_locale")&&(r._locale=e._locale),r}function Rt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Wt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Ut(e,t){return function(n,r){var a;return null===r||isNaN(+r)||(C(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),a=n,n=r,r=a),qt(this,Ft(n="string"==typeof n?+n:n,r),e),this}}function qt(e,t,n,r){var o=t._milliseconds,i=Yt(t._days),s=Yt(t._months);e.isValid()&&(r=null==r||r,s&&Ce(e,ve(e,"Month")+s*n),i&&Me(e,"Date",ve(e,"Date")+i*n),o&&e._d.setTime(e._d.valueOf()+o*n),r&&a.updateOffset(e,i||s))}Ft.fn=Dt.prototype,Ft.invalid=function(){return Ft(NaN)};var Gt=Ut(1,"add"),Vt=Ut(-1,"subtract");function $t(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,"months");return-(n+(t-r<0?(t-r)/(r-e.clone().add(n-1,"months")):(t-r)/(e.clone().add(n+1,"months")-r)))||0}function Jt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=st(e))&&(this._locale=t),this)}a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xt=E("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function Qt(){return this._locale}function Kt(e,t){return(e%t+t)%t}function Zt(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-126227808e5:new Date(e,t,n).valueOf()}function en(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-126227808e5:Date.UTC(e,t,n)}function tn(e,t){U(0,[e,e.length],0,t)}function nn(e,t,n,r,a){var o;return null==e?He(this,r,a).year:(t>(o=ze(e,r,a))&&(t=o),rn.call(this,e,t,n,r,a))}function rn(e,t,n,r,a){var o=Ae(e,t,n,r,a),i=Ne(o.year,0,o.dayOfYear);return this.year(i.getUTCFullYear()),this.month(i.getUTCMonth()),this.date(i.getUTCDate()),this}U(0,["gg",2],0,(function(){return this.weekYear()%100})),U(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),tn("gggg","weekYear"),tn("ggggg","weekYear"),tn("GGGG","isoWeekYear"),tn("GGGGG","isoWeekYear"),P("weekYear","gg"),P("isoWeekYear","GG"),H("weekYear",1),H("isoWeekYear",1),ue("G",oe),ue("g",oe),ue("GG",K,$),ue("gg",K,$),ue("GGGG",ne,X),ue("gggg",ne,X),ue("GGGGG",re,Q),ue("ggggg",re,Q),he(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=M(e)})),he(["gg","GG"],(function(e,t,n,r){t[r]=a.parseTwoDigitYear(e)})),U("Q",0,"Qo","quarter"),P("quarter","Q"),H("quarter",7),ue("Q",V),fe("Q",(function(e,t){t[1]=3*(M(e)-1)})),U("D",["DD",2],"Do","date"),P("date","D"),H("date",9),ue("D",K),ue("DD",K,$),ue("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),fe(["D","DD"],2),fe("Do",(function(e,t){t[2]=M(e.match(K)[0])}));var an=we("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),P("dayOfYear","DDD"),H("dayOfYear",4),ue("DDD",te),ue("DDDD",J),fe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=M(e)})),U("m",["mm",2],0,"minute"),P("minute","m"),H("minute",14),ue("m",K),ue("mm",K,$),fe(["m","mm"],4);var on=we("Minutes",!1);U("s",["ss",2],0,"second"),P("second","s"),H("second",15),ue("s",K),ue("ss",K,$),fe(["s","ss"],5);var sn,ln=we("Seconds",!1);for(U("S",0,0,(function(){return~~(this.millisecond()/100)})),U(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),U(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),U(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),U(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),U(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),U(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),P("millisecond","ms"),H("millisecond",16),ue("S",te,V),ue("SS",te,$),ue("SSS",te,J),sn="SSSS";sn.length<=9;sn+="S")ue(sn,ae);function cn(e,t){t[6]=M(1e3*("0."+e))}for(sn="S";sn.length<=9;sn+="S")fe(sn,cn);var un=we("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var dn=k.prototype;function pn(e){return e}dn.add=Gt,dn.calendar=function(e,t){var n=e||Tt(),r=Bt(n,this).startOf("day"),o=a.calendarFormat(this,r)||"sameElse",i=t&&(D(t[o])?t[o].call(this,n):t[o]);return this.format(i||this.localeData().calendar(o,this,Tt(n)))},dn.clone=function(){return new k(this)},dn.diff=function(e,t,n){var r,a,o;if(!this.isValid())return NaN;if(!(r=Bt(e,this)).isValid())return NaN;switch(a=6e4*(r.utcOffset()-this.utcOffset()),t=N(t)){case"year":o=$t(this,r)/12;break;case"month":o=$t(this,r);break;case"quarter":o=$t(this,r)/3;break;case"second":o=(this-r)/1e3;break;case"minute":o=(this-r)/6e4;break;case"hour":o=(this-r)/36e5;break;case"day":o=(this-r-a)/864e5;break;case"week":o=(this-r-a)/6048e5;break;default:o=this-r}return n?o:v(o)},dn.endOf=function(e){var t;if(void 0===(e=N(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?en:Zt;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-Kt(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-Kt(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-Kt(t,1e3)-1}return this._d.setTime(t),a.updateOffset(this,!0),this},dn.format=function(e){e||(e=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var t=q(this,e);return this.localeData().postformat(t)},dn.from=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||Tt(e).isValid())?Ft({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},dn.fromNow=function(e){return this.from(Tt(),e)},dn.to=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||Tt(e).isValid())?Ft({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},dn.toNow=function(e){return this.to(Tt(),e)},dn.get=function(e){return D(this[e=N(e)])?this[e]():this},dn.invalidAt=function(){return f(this).overflow},dn.isAfter=function(e,t){var n=w(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=N(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},dn.isBefore=function(e,t){var n=w(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=N(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},dn.isBetween=function(e,t,n,r){var a=w(e)?e:Tt(e),o=w(t)?t:Tt(t);return!!(this.isValid()&&a.isValid()&&o.isValid())&&("("===(r=r||"()")[0]?this.isAfter(a,n):!this.isBefore(a,n))&&(")"===r[1]?this.isBefore(o,n):!this.isAfter(o,n))},dn.isSame=function(e,t){var n,r=w(e)?e:Tt(e);return!(!this.isValid()||!r.isValid())&&("millisecond"===(t=N(t)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},dn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},dn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},dn.isValid=function(){return h(this)},dn.lang=Xt,dn.locale=Jt,dn.localeData=Qt,dn.max=St,dn.min=Et,dn.parsingFlags=function(){return p({},f(this))},dn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:A[n]});return t.sort((function(e,t){return e.priority-t.priority})),t}(e=B(e)),r=0;r<n.length;r++)this[n[r].unit](e[n[r].unit]);else if(D(this[e=N(e)]))return this[e](t);return this},dn.startOf=function(e){var t;if(void 0===(e=N(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?en:Zt;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=Kt(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=Kt(t,6e4);break;case"second":t=this._d.valueOf(),t-=Kt(t,1e3)}return this._d.setTime(t),a.updateOffset(this,!0),this},dn.subtract=Vt,dn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},dn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},dn.toDate=function(){return new Date(this.valueOf())},dn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||n.year()>9999?q(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):D(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",q(n,"Z")):q(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},dn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a=t+'[")]';return this.format(n+r+"-MM-DD[T]HH:mm:ss.SSS"+a)},dn.toJSON=function(){return this.isValid()?this.toISOString():null},dn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},dn.unix=function(){return Math.floor(this.valueOf()/1e3)},dn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},dn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},dn.year=ke,dn.isLeapYear=function(){return _e(this.year())},dn.weekYear=function(e){return nn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},dn.isoWeekYear=function(e){return nn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},dn.quarter=dn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},dn.month=De,dn.daysInMonth=function(){return Le(this.year(),this.month())},dn.week=dn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},dn.isoWeek=dn.isoWeeks=function(e){var t=He(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},dn.weeksInYear=function(){var e=this.localeData()._week;return ze(this.year(),e.dow,e.doy)},dn.isoWeeksInYear=function(){return ze(this.year(),1,4)},dn.date=an,dn.day=dn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},dn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},dn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},dn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},dn.hour=dn.hours=Ze,dn.minute=dn.minutes=on,dn.second=dn.seconds=ln,dn.millisecond=dn.milliseconds=un,dn.utcOffset=function(e,t,n){var r,o=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Nt(se,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(r=At(this)),this._offset=e,this._isUTC=!0,null!=r&&this.add(r,"m"),o!==e&&(!t||this._changeInProgress?qt(this,Ft(e-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?o:At(this)},dn.utc=function(e){return this.utcOffset(0,e)},dn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(At(this),"m")),this},dn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Nt(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},dn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},dn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},dn.isLocal=function(){return!!this.isValid()&&!this._isUTC},dn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},dn.isUtc=Ht,dn.isUTC=Ht,dn.zoneAbbr=function(){return this._isUTC?"UTC":""},dn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},dn.dates=E("dates accessor is deprecated. Use date instead.",an),dn.months=E("months accessor is deprecated. Use month instead",De),dn.years=E("years accessor is deprecated. Use year instead",ke),dn.zone=E("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),dn.isDSTShifted=E("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={};if(_(e,this),(e=Mt(e))._a){var t=e._isUTC?m(e._a):Tt(e._a);this._isDSTShifted=this.isValid()&&L(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var mn=Y.prototype;function fn(e,t,n,r){var a=st(),o=m().set(r,t);return a[n](o,e)}function hn(e,t,n){if(l(e)&&(t=e,e=void 0),e=e||"",null!=t)return fn(e,t,n,"month");var r,a=[];for(r=0;r<12;r++)a[r]=fn(e,r,n,"month");return a}function bn(e,t,n,r){"boolean"==typeof e?(l(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,l(t)&&(n=t,t=void 0),t=t||"");var a,o=st(),i=e?o._week.dow:0;if(null!=n)return fn(t,(n+i)%7,r,"day");var s=[];for(a=0;a<7;a++)s[a]=fn(t,(a+i)%7,r,"day");return s}mn.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return D(r)?r.call(t,n):r},mn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,(function(e){return e.slice(1)})),this._longDateFormat[e])},mn.invalidDate=function(){return this._invalidDate},mn.ordinal=function(e){return this._ordinal.replace("%d",e)},mn.preparse=pn,mn.postformat=pn,mn.relativeTime=function(e,t,n,r){var a=this._relativeTime[n];return D(a)?a(e,t,n,r):a.replace(/%d/i,e)},mn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return D(n)?n(t):n.replace(/%s/i,t)},mn.set=function(e){var t,n;for(n in e)D(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},mn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Te).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},mn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Te.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},mn.monthsParse=function(e,t,n){var r,a,o;if(this._monthsParseExact)return xe.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(a=m([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(o="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),this._monthsParse[r]=new RegExp(o.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}},mn.monthsRegex=function(e){return this._monthsParseExact?(d(this,"_monthsRegex")||je.call(this),e?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=Ye),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},mn.monthsShortRegex=function(e){return this._monthsParseExact?(d(this,"_monthsRegex")||je.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Oe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},mn.week=function(e){return He(e,this._week.dow,this._week.doy).week},mn.firstDayOfYear=function(){return this._week.doy},mn.firstDayOfWeek=function(){return this._week.dow},mn.weekdays=function(e,t){var n=o(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ie(n,this._week.dow):e?n[e.day()]:n},mn.weekdaysMin=function(e){return!0===e?Ie(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},mn.weekdaysShort=function(e){return!0===e?Ie(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},mn.weekdaysParse=function(e,t,n){var r,a,o;if(this._weekdaysParseExact)return Ue.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(a=m([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(o="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[r]=new RegExp(o.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}},mn.weekdaysRegex=function(e){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},mn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ge),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},mn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ve),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},mn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},mn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},ot("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===M(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),a.lang=E("moment.lang is deprecated. Use moment.locale instead.",ot),a.langData=E("moment.langData is deprecated. Use moment.localeData instead.",st);var gn=Math.abs;function _n(e,t,n,r){var a=Ft(t,n);return e._milliseconds+=r*a._milliseconds,e._days+=r*a._days,e._months+=r*a._months,e._bubble()}function yn(e){return e<0?Math.floor(e):Math.ceil(e)}function kn(e){return 4800*e/146097}function wn(e){return 146097*e/4800}function vn(e){return function(){return this.as(e)}}var Mn=vn("ms"),Ln=vn("s"),Tn=vn("m"),En=vn("h"),Sn=vn("d"),xn=vn("w"),Cn=vn("M"),Dn=vn("Q"),On=vn("y");function Yn(e){return function(){return this.isValid()?this._data[e]:NaN}}var jn=Yn("milliseconds"),Pn=Yn("seconds"),Nn=Yn("minutes"),Bn=Yn("hours"),An=Yn("days"),Hn=Yn("months"),zn=Yn("years"),In=Math.round,Fn={ss:44,s:45,m:45,h:22,d:26,M:11};function Rn(e,t,n,r,a){return a.relativeTime(t||1,!!n,e,r)}var Wn=Math.abs;function Un(e){return(e>0)-(e<0)||+e}function qn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Wn(this._milliseconds)/1e3,r=Wn(this._days),a=Wn(this._months);e=v(n/60),t=v(e/60),n%=60,e%=60;var o=v(a/12),i=a%=12,s=r,l=t,c=e,u=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var p=d<0?"-":"",m=Un(this._months)!==Un(d)?"-":"",f=Un(this._days)!==Un(d)?"-":"",h=Un(this._milliseconds)!==Un(d)?"-":"";return p+"P"+(o?m+o+"Y":"")+(i?m+i+"M":"")+(s?f+s+"D":"")+(l||c||u?"T":"")+(l?h+l+"H":"")+(c?h+c+"M":"")+(u?h+u+"S":"")}var Gn=Dt.prototype;return Gn.isValid=function(){return this._isValid},Gn.abs=function(){var e=this._data;return this._milliseconds=gn(this._milliseconds),this._days=gn(this._days),this._months=gn(this._months),e.milliseconds=gn(e.milliseconds),e.seconds=gn(e.seconds),e.minutes=gn(e.minutes),e.hours=gn(e.hours),e.months=gn(e.months),e.years=gn(e.years),this},Gn.add=function(e,t){return _n(this,e,t,1)},Gn.subtract=function(e,t){return _n(this,e,t,-1)},Gn.as=function(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=N(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+kn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(wn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}},Gn.asMilliseconds=Mn,Gn.asSeconds=Ln,Gn.asMinutes=Tn,Gn.asHours=En,Gn.asDays=Sn,Gn.asWeeks=xn,Gn.asMonths=Cn,Gn.asQuarters=Dn,Gn.asYears=On,Gn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*M(this._months/12):NaN},Gn._bubble=function(){var e,t,n,r,a,o=this._milliseconds,i=this._days,s=this._months,l=this._data;return o>=0&&i>=0&&s>=0||o<=0&&i<=0&&s<=0||(o+=864e5*yn(wn(s)+i),i=0,s=0),l.milliseconds=o%1e3,e=v(o/1e3),l.seconds=e%60,t=v(e/60),l.minutes=t%60,n=v(t/60),l.hours=n%24,i+=v(n/24),a=v(kn(i)),s+=a,i-=yn(wn(a)),r=v(s/12),s%=12,l.days=i,l.months=s,l.years=r,this},Gn.clone=function(){return Ft(this)},Gn.get=function(e){return e=N(e),this.isValid()?this[e+"s"]():NaN},Gn.milliseconds=jn,Gn.seconds=Pn,Gn.minutes=Nn,Gn.hours=Bn,Gn.days=An,Gn.weeks=function(){return v(this.days()/7)},Gn.months=Hn,Gn.years=zn,Gn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),n=function(e,t,n){var r=Ft(e).abs(),a=In(r.as("s")),o=In(r.as("m")),i=In(r.as("h")),s=In(r.as("d")),l=In(r.as("M")),c=In(r.as("y")),u=a<=Fn.ss&&["s",a]||a<Fn.s&&["ss",a]||o<=1&&["m"]||o<Fn.m&&["mm",o]||i<=1&&["h"]||i<Fn.h&&["hh",i]||s<=1&&["d"]||s<Fn.d&&["dd",s]||l<=1&&["M"]||l<Fn.M&&["MM",l]||c<=1&&["y"]||["yy",c];return u[2]=t,u[3]=+e>0,u[4]=n,Rn.apply(null,u)}(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)},Gn.toISOString=qn,Gn.toString=qn,Gn.toJSON=qn,Gn.locale=Jt,Gn.localeData=Qt,Gn.toIsoString=E("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",qn),Gn.lang=Xt,U("X",0,0,"unix"),U("x",0,0,"valueOf"),ue("x",oe),ue("X",/[+-]?\d+(\.\d{1,3})?/),fe("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))})),fe("x",(function(e,t,n){n._d=new Date(M(e))})),a.version="2.24.0",t=Tt,a.fn=dn,a.min=function(){var e=[].slice.call(arguments,0);return xt("isBefore",e)},a.max=function(){var e=[].slice.call(arguments,0);return xt("isAfter",e)},a.now=function(){return Date.now?Date.now():+new Date},a.utc=m,a.unix=function(e){return Tt(1e3*e)},a.months=function(e,t){return hn(e,t,"months")},a.isDate=c,a.locale=ot,a.invalid=b,a.duration=Ft,a.isMoment=w,a.weekdays=function(e,t,n){return bn(e,t,n,"weekdays")},a.parseZone=function(){return Tt.apply(null,arguments).parseZone()},a.localeData=st,a.isDuration=Ot,a.monthsShort=function(e,t){return hn(e,t,"monthsShort")},a.weekdaysMin=function(e,t,n){return bn(e,t,n,"weekdaysMin")},a.defineLocale=it,a.updateLocale=function(e,t){if(null!=t){var n,r,a=et;null!=(r=at(e))&&(a=r._config),t=O(a,t),(n=new Y(t)).parentLocale=tt[e],tt[e]=n,ot(e)}else null!=tt[e]&&(null!=tt[e].parentLocale?tt[e]=tt[e].parentLocale:null!=tt[e]&&delete tt[e]);return tt[e]},a.locales=function(){return S(tt)},a.weekdaysShort=function(e,t,n){return bn(e,t,n,"weekdaysShort")},a.normalizeUnits=N,a.relativeTimeRounding=function(e){return void 0===e?In:"function"==typeof e&&(In=e,!0)},a.relativeTimeThreshold=function(e,t){return void 0!==Fn[e]&&(void 0===t?Fn[e]:(Fn[e]=t,"s"===e&&(Fn.ss=t-1),!0))},a.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},a.prototype=dn,a.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},a}()}).call(this,n(27)(e))},function(e,t,n){"use strict";e.exports=n(340)},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(96),a="object"==typeof self&&self&&self.Object===Object&&self,o=r||a||Function("return this")();e.exports=o},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r; |
| 7 |
/*! |
| 8 |
* jQuery JavaScript Library v3.4.1 |
| 9 |
* https://jquery.com/ |
| 10 |
* |
| 11 |
* Includes Sizzle.js |
| 12 |
* https://sizzlejs.com/ |
| 13 |
* |
| 14 |
* Copyright JS Foundation and other contributors |
| 15 |
* Released under the MIT license |
| 16 |
* https://jquery.org/license |
| 17 |
* |
| 18 |
* Date: 2019-05-01T21:04Z |
| 19 |
*/!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,(function(n,a){"use strict";var o=[],i=n.document,s=Object.getPrototypeOf,l=o.slice,c=o.concat,u=o.push,d=o.indexOf,p={},m=p.toString,f=p.hasOwnProperty,h=f.toString,b=h.call(Object),g={},_=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},y=function(e){return null!=e&&e===e.window},k={type:!0,src:!0,nonce:!0,noModule:!0};function w(e,t,n){var r,a,o=(n=n||i).createElement("script");if(o.text=e,t)for(r in k)(a=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,a);n.head.appendChild(o).parentNode.removeChild(o)}function v(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?p[m.call(e)]||"object":typeof e}var M=function(e,t){return new M.fn.init(e,t)},L=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function T(e){var t=!!e&&"length"in e&&e.length,n=v(e);return!_(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}M.fn=M.prototype={jquery:"3.4.1",constructor:M,length:0,toArray:function(){return l.call(this)},get:function(e){return null==e?l.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=M.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return M.each(this,e)},map:function(e){return this.pushStack(M.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(l.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:o.sort,splice:o.splice},M.extend=M.fn.extend=function(){var e,t,n,r,a,o,i=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof i&&(c=i,i=arguments[s]||{},s++),"object"==typeof i||_(i)||(i={}),s===l&&(i=this,s--);s<l;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&i!==r&&(c&&r&&(M.isPlainObject(r)||(a=Array.isArray(r)))?(n=i[t],o=a&&!Array.isArray(n)?[]:a||M.isPlainObject(n)?n:{},a=!1,i[t]=M.extend(c,o,r)):void 0!==r&&(i[t]=r));return i},M.extend({expando:"jQuery"+("3.4.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==m.call(e))&&(!(t=s(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&h.call(n)===b)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){w(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(T(e))for(n=e.length;r<n&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(L,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(T(Object(e))?M.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:d.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,a=e.length;r<n;r++)e[a++]=t[r];return e.length=a,e},grep:function(e,t,n){for(var r=[],a=0,o=e.length,i=!n;a<o;a++)!t(e[a],a)!==i&&r.push(e[a]);return r},map:function(e,t,n){var r,a,o=0,i=[];if(T(e))for(r=e.length;o<r;o++)null!=(a=t(e[o],o,n))&&i.push(a);else for(o in e)null!=(a=t(e[o],o,n))&&i.push(a);return c.apply([],i)},guid:1,support:g}),"function"==typeof Symbol&&(M.fn[Symbol.iterator]=o[Symbol.iterator]),M.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),(function(e,t){p["[object "+t+"]"]=t.toLowerCase()}));var E= |
| 20 |
/*! |
| 21 |
* Sizzle CSS Selector Engine v2.3.4 |
| 22 |
* https://sizzlejs.com/ |
| 23 |
* |
| 24 |
* Copyright JS Foundation and other contributors |
| 25 |
* Released under the MIT license |
| 26 |
* https://js.foundation/ |
| 27 |
* |
| 28 |
* Date: 2019-04-08 |
| 29 |
*/ |
| 30 |
function(e){var t,n,r,a,o,i,s,l,c,u,d,p,m,f,h,b,g,_,y,k="sizzle"+1*new Date,w=e.document,v=0,M=0,L=le(),T=le(),E=le(),S=le(),x=function(e,t){return e===t&&(d=!0),0},C={}.hasOwnProperty,D=[],O=D.pop,Y=D.push,j=D.push,P=D.slice,N=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",A="[\\x20\\t\\r\\n\\f]",H="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",z="\\["+A+"*("+H+")(?:"+A+"*([*^$|!~]?=)"+A+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+H+"))|)"+A+"*\\]",I=":("+H+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+z+")*)|.*)\\)|)",F=new RegExp(A+"+","g"),R=new RegExp("^"+A+"+|((?:^|[^\\\\])(?:\\\\.)*)"+A+"+$","g"),W=new RegExp("^"+A+"*,"+A+"*"),U=new RegExp("^"+A+"*([>+~]|"+A+")"+A+"*"),q=new RegExp(A+"|>"),G=new RegExp(I),V=new RegExp("^"+H+"$"),$={ID:new RegExp("^#("+H+")"),CLASS:new RegExp("^\\.("+H+")"),TAG:new RegExp("^("+H+"|[*])"),ATTR:new RegExp("^"+z),PSEUDO:new RegExp("^"+I),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+A+"*(even|odd|(([+-]|)(\\d*)n|)"+A+"*(?:([+-]|)"+A+"*(\\d+)|))"+A+"*\\)|)","i"),bool:new RegExp("^(?:"+B+")$","i"),needsContext:new RegExp("^"+A+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+A+"*((?:-\\d)?\\d*)"+A+"*\\)|)(?=[^-]|$)","i")},J=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+A+"?|("+A+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ae=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){p()},ie=ke((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{j.apply(D=P.call(w.childNodes),w.childNodes),D[w.childNodes.length].nodeType}catch(e){j={apply:D.length?function(e,t){Y.apply(e,P.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,a){var o,s,c,u,d,f,g,_=t&&t.ownerDocument,v=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==v&&9!==v&&11!==v)return r;if(!a&&((t?t.ownerDocument||t:w)!==m&&p(t),t=t||m,h)){if(11!==v&&(d=Z.exec(e)))if(o=d[1]){if(9===v){if(!(c=t.getElementById(o)))return r;if(c.id===o)return r.push(c),r}else if(_&&(c=_.getElementById(o))&&y(t,c)&&c.id===o)return r.push(c),r}else{if(d[2])return j.apply(r,t.getElementsByTagName(e)),r;if((o=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return j.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!b||!b.test(e))&&(1!==v||"object"!==t.nodeName.toLowerCase())){if(g=e,_=t,1===v&&q.test(e)){for((u=t.getAttribute("id"))?u=u.replace(re,ae):t.setAttribute("id",u=k),s=(f=i(e)).length;s--;)f[s]="#"+u+" "+ye(f[s]);g=f.join(","),_=ee.test(e)&&ge(t.parentNode)||t}try{return j.apply(r,_.querySelectorAll(g)),r}catch(t){S(e,!0)}finally{u===k&&t.removeAttribute("id")}}}return l(e.replace(R,"$1"),t,r,a)}function le(){var e=[];return function t(n,a){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=a}}function ce(e){return e[k]=!0,e}function ue(e){var t=m.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){for(var n=e.split("|"),a=n.length;a--;)r.attrHandle[n[a]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function me(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function fe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function he(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function be(e){return ce((function(t){return t=+t,ce((function(n,r){for(var a,o=e([],n.length,t),i=o.length;i--;)n[a=o[i]]&&(n[a]=!(r[a]=n[a]))}))}))}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!J.test(t||n&&n.nodeName||"HTML")},p=se.setDocument=function(e){var t,a,i=e?e.ownerDocument||e:w;return i!==m&&9===i.nodeType&&i.documentElement?(f=(m=i).documentElement,h=!o(m),w!==m&&(a=m.defaultView)&&a.top!==a&&(a.addEventListener?a.addEventListener("unload",oe,!1):a.attachEvent&&a.attachEvent("onunload",oe)),n.attributes=ue((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ue((function(e){return e.appendChild(m.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=K.test(m.getElementsByClassName),n.getById=ue((function(e){return f.appendChild(e).id=k,!m.getElementsByName||!m.getElementsByName(k).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&h){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&h){var n,r,a,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(a=t.getElementsByName(e),r=0;o=a[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],a=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[a++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&h)return t.getElementsByClassName(e)},g=[],b=[],(n.qsa=K.test(m.querySelectorAll))&&(ue((function(e){f.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&b.push("[*^$]="+A+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||b.push("\\["+A+"*(?:value|"+B+")"),e.querySelectorAll("[id~="+k+"-]").length||b.push("~="),e.querySelectorAll(":checked").length||b.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||b.push(".#.+[+~]")})),ue((function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=m.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&b.push("name"+A+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&b.push(":enabled",":disabled"),f.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&b.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),b.push(",.*:")}))),(n.matchesSelector=K.test(_=f.matches||f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ue((function(e){n.disconnectedMatch=_.call(e,"*"),_.call(e,"[s!='']:x"),g.push("!=",I)})),b=b.length&&new RegExp(b.join("|")),g=g.length&&new RegExp(g.join("|")),t=K.test(f.compareDocumentPosition),y=t||K.test(f.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},x=t?function(e,t){if(e===t)return d=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===m||e.ownerDocument===w&&y(w,e)?-1:t===m||t.ownerDocument===w&&y(w,t)?1:u?N(u,e)-N(u,t):0:4&r?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,r=0,a=e.parentNode,o=t.parentNode,i=[e],s=[t];if(!a||!o)return e===m?-1:t===m?1:a?-1:o?1:u?N(u,e)-N(u,t):0;if(a===o)return pe(e,t);for(n=e;n=n.parentNode;)i.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;i[r]===s[r];)r++;return r?pe(i[r],s[r]):i[r]===w?-1:s[r]===w?1:0},m):m},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==m&&p(e),n.matchesSelector&&h&&!S[t+" "]&&(!g||!g.test(t))&&(!b||!b.test(t)))try{var r=_.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){S(t,!0)}return se(t,m,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!==m&&p(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==m&&p(e);var a=r.attrHandle[t.toLowerCase()],o=a&&C.call(r.attrHandle,t.toLowerCase())?a(e,t,!h):void 0;return void 0!==o?o:n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+"").replace(re,ae)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,r=[],a=0,o=0;if(d=!n.detectDuplicates,u=!n.sortStable&&e.slice(0),e.sort(x),d){for(;t=e[o++];)t===e[o]&&(a=r.push(o));for(;a--;)e.splice(r[a],1)}return u=null,e},a=se.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=a(t);return n},(r=se.selectors={cacheLength:50,createPseudo:ce,match:$,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return $.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&G.test(n)&&(t=i(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=L[e+" "];return t||(t=new RegExp("(^|"+A+")"+e+"("+A+"|$)"))&&L(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var a=se.attr(r,e);return null==a?"!="===t:!t||(a+="","="===t?a===n:"!="===t?a!==n:"^="===t?n&&0===a.indexOf(n):"*="===t?n&&a.indexOf(n)>-1:"$="===t?n&&a.slice(-n.length)===n:"~="===t?(" "+a.replace(F," ")+" ").indexOf(n)>-1:"|="===t&&(a===n||a.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,a){var o="nth"!==e.slice(0,3),i="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===a?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,p,m,f,h=o!==i?"nextSibling":"previousSibling",b=t.parentNode,g=s&&t.nodeName.toLowerCase(),_=!l&&!s,y=!1;if(b){if(o){for(;h;){for(p=t;p=p[h];)if(s?p.nodeName.toLowerCase()===g:1===p.nodeType)return!1;f=h="only"===e&&!f&&"nextSibling"}return!0}if(f=[i?b.firstChild:b.lastChild],i&&_){for(y=(m=(c=(u=(d=(p=b)[k]||(p[k]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===v&&c[1])&&c[2],p=m&&b.childNodes[m];p=++m&&p&&p[h]||(y=m=0)||f.pop();)if(1===p.nodeType&&++y&&p===t){u[e]=[v,m,y];break}}else if(_&&(y=m=(c=(u=(d=(p=t)[k]||(p[k]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===v&&c[1]),!1===y)for(;(p=++m&&p&&p[h]||(y=m=0)||f.pop())&&((s?p.nodeName.toLowerCase()!==g:1!==p.nodeType)||!++y||(_&&((u=(d=p[k]||(p[k]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]=[v,y]),p!==t)););return(y-=a)===r||y%r==0&&y/r>=0}}},PSEUDO:function(e,t){var n,a=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(t):a.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ce((function(e,n){for(var r,o=a(e,t),i=o.length;i--;)e[r=N(e,o[i])]=!(n[r]=o[i])})):function(e){return a(e,0,n)}):a}},pseudos:{not:ce((function(e){var t=[],n=[],r=s(e.replace(R,"$1"));return r[k]?ce((function(e,t,n,a){for(var o,i=r(e,null,a,[]),s=e.length;s--;)(o=i[s])&&(e[s]=!(t[s]=o))})):function(e,a,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:ce((function(e){return function(t){return se(e,t).length>0}})),contains:ce((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||a(t)).indexOf(e)>-1}})),lang:ce((function(e){return V.test(e||"")||se.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===m.activeElement&&(!m.hasFocus||m.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:he(!1),disabled:he(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return X.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:be((function(){return[0]})),last:be((function(e,t){return[t-1]})),eq:be((function(e,t,n){return[n<0?n+t:n]})),even:be((function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e})),odd:be((function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e})),lt:be((function(e,t,n){for(var r=n<0?n+t:n>t?t:n;--r>=0;)e.push(r);return e})),gt:be((function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e}))}}).pseudos.nth=r.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=me(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=fe(t);function _e(){}function ye(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function ke(e,t,n){var r=t.dir,a=t.next,o=a||r,i=n&&"parentNode"===o,s=M++;return t.first?function(t,n,a){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,a);return!1}:function(t,n,l){var c,u,d,p=[v,s];if(l){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,l))return!0}else for(;t=t[r];)if(1===t.nodeType||i)if(u=(d=t[k]||(t[k]={}))[t.uniqueID]||(d[t.uniqueID]={}),a&&a===t.nodeName.toLowerCase())t=t[r]||t;else{if((c=u[o])&&c[0]===v&&c[1]===s)return p[2]=c[2];if(u[o]=p,p[2]=e(t,n,l))return!0}return!1}}function we(e){return e.length>1?function(t,n,r){for(var a=e.length;a--;)if(!e[a](t,n,r))return!1;return!0}:e[0]}function ve(e,t,n,r,a){for(var o,i=[],s=0,l=e.length,c=null!=t;s<l;s++)(o=e[s])&&(n&&!n(o,r,a)||(i.push(o),c&&t.push(s)));return i}function Me(e,t,n,r,a,o){return r&&!r[k]&&(r=Me(r)),a&&!a[k]&&(a=Me(a,o)),ce((function(o,i,s,l){var c,u,d,p=[],m=[],f=i.length,h=o||function(e,t,n){for(var r=0,a=t.length;r<a;r++)se(e,t[r],n);return n}(t||"*",s.nodeType?[s]:s,[]),b=!e||!o&&t?h:ve(h,p,e,s,l),g=n?a||(o?e:f||r)?[]:i:b;if(n&&n(b,g,s,l),r)for(c=ve(g,m),r(c,[],s,l),u=c.length;u--;)(d=c[u])&&(g[m[u]]=!(b[m[u]]=d));if(o){if(a||e){if(a){for(c=[],u=g.length;u--;)(d=g[u])&&c.push(b[u]=d);a(null,g=[],c,l)}for(u=g.length;u--;)(d=g[u])&&(c=a?N(o,d):p[u])>-1&&(o[c]=!(i[c]=d))}}else g=ve(g===i?g.splice(f,g.length):g),a?a(null,i,g,l):j.apply(i,g)}))}function Le(e){for(var t,n,a,o=e.length,i=r.relative[e[0].type],s=i||r.relative[" "],l=i?1:0,u=ke((function(e){return e===t}),s,!0),d=ke((function(e){return N(t,e)>-1}),s,!0),p=[function(e,n,r){var a=!i&&(r||n!==c)||((t=n).nodeType?u(e,n,r):d(e,n,r));return t=null,a}];l<o;l++)if(n=r.relative[e[l].type])p=[ke(we(p),n)];else{if((n=r.filter[e[l].type].apply(null,e[l].matches))[k]){for(a=++l;a<o&&!r.relative[e[a].type];a++);return Me(l>1&&we(p),l>1&&ye(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(R,"$1"),n,l<a&&Le(e.slice(l,a)),a<o&&Le(e=e.slice(a)),a<o&&ye(e))}p.push(n)}return we(p)}return _e.prototype=r.filters=r.pseudos,r.setFilters=new _e,i=se.tokenize=function(e,t){var n,a,o,i,s,l,c,u=T[e+" "];if(u)return t?0:u.slice(0);for(s=e,l=[],c=r.preFilter;s;){for(i in n&&!(a=W.exec(s))||(a&&(s=s.slice(a[0].length)||s),l.push(o=[])),n=!1,(a=U.exec(s))&&(n=a.shift(),o.push({value:n,type:a[0].replace(R," ")}),s=s.slice(n.length)),r.filter)!(a=$[i].exec(s))||c[i]&&!(a=c[i](a))||(n=a.shift(),o.push({value:n,type:i,matches:a}),s=s.slice(n.length));if(!n)break}return t?s.length:s?se.error(e):T(e,l).slice(0)},s=se.compile=function(e,t){var n,a=[],o=[],s=E[e+" "];if(!s){for(t||(t=i(e)),n=t.length;n--;)(s=Le(t[n]))[k]?a.push(s):o.push(s);(s=E(e,function(e,t){var n=t.length>0,a=e.length>0,o=function(o,i,s,l,u){var d,f,b,g=0,_="0",y=o&&[],k=[],w=c,M=o||a&&r.find.TAG("*",u),L=v+=null==w?1:Math.random()||.1,T=M.length;for(u&&(c=i===m||i||u);_!==T&&null!=(d=M[_]);_++){if(a&&d){for(f=0,i||d.ownerDocument===m||(p(d),s=!h);b=e[f++];)if(b(d,i||m,s)){l.push(d);break}u&&(v=L)}n&&((d=!b&&d)&&g--,o&&y.push(d))}if(g+=_,n&&_!==g){for(f=0;b=t[f++];)b(y,k,i,s);if(o){if(g>0)for(;_--;)y[_]||k[_]||(k[_]=O.call(l));k=ve(k)}j.apply(l,k),u&&!o&&k.length>0&&g+t.length>1&&se.uniqueSort(l)}return u&&(v=L,c=w),y};return n?ce(o):o}(o,a))).selector=e}return s},l=se.select=function(e,t,n,a){var o,l,c,u,d,p="function"==typeof e&&e,m=!a&&i(e=p.selector||e);if(n=n||[],1===m.length){if((l=m[0]=m[0].slice(0)).length>2&&"ID"===(c=l[0]).type&&9===t.nodeType&&h&&r.relative[l[1].type]){if(!(t=(r.find.ID(c.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(o=$.needsContext.test(e)?0:l.length;o--&&(c=l[o],!r.relative[u=c.type]);)if((d=r.find[u])&&(a=d(c.matches[0].replace(te,ne),ee.test(l[0].type)&&ge(t.parentNode)||t))){if(l.splice(o,1),!(e=a.length&&ye(l)))return j.apply(n,a),n;break}}return(p||s(e,m))(a,t,!h,n,!t||ee.test(e)&&ge(t.parentNode)||t),n},n.sortStable=k.split("").sort(x).join("")===k,n.detectDuplicates=!!d,p(),n.sortDetached=ue((function(e){return 1&e.compareDocumentPosition(m.createElement("fieldset"))})),ue((function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")}))||de("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ue((function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||de("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ue((function(e){return null==e.getAttribute("disabled")}))||de(B,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(n);M.find=E,M.expr=E.selectors,M.expr[":"]=M.expr.pseudos,M.uniqueSort=M.unique=E.uniqueSort,M.text=E.getText,M.isXMLDoc=E.isXML,M.contains=E.contains,M.escapeSelector=E.escape;var S=function(e,t,n){for(var r=[],a=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(a&&M(e).is(n))break;r.push(e)}return r},x=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},C=M.expr.match.needsContext;function D(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var O=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function Y(e,t,n){return _(t)?M.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?M.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?M.grep(e,(function(e){return d.call(t,e)>-1!==n})):M.filter(t,e,n)}M.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?M.find.matchesSelector(r,e)?[r]:[]:M.find.matches(e,M.grep(t,(function(e){return 1===e.nodeType})))},M.fn.extend({find:function(e){var t,n,r=this.length,a=this;if("string"!=typeof e)return this.pushStack(M(e).filter((function(){for(t=0;t<r;t++)if(M.contains(a[t],this))return!0})));for(n=this.pushStack([]),t=0;t<r;t++)M.find(e,a[t],n);return r>1?M.uniqueSort(n):n},filter:function(e){return this.pushStack(Y(this,e||[],!1))},not:function(e){return this.pushStack(Y(this,e||[],!0))},is:function(e){return!!Y(this,"string"==typeof e&&C.test(e)?M(e):e||[],!1).length}});var j,P=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(M.fn.init=function(e,t,n){var r,a;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:P.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof M?t[0]:t,M.merge(this,M.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:i,!0)),O.test(r[1])&&M.isPlainObject(t))for(r in t)_(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(a=i.getElementById(r[2]))&&(this[0]=a,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):_(e)?void 0!==n.ready?n.ready(e):e(M):M.makeArray(e,this)}).prototype=M.fn,j=M(i);var N=/^(?:parents|prev(?:Until|All))/,B={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}M.fn.extend({has:function(e){var t=M(e,this),n=t.length;return this.filter((function(){for(var e=0;e<n;e++)if(M.contains(this,t[e]))return!0}))},closest:function(e,t){var n,r=0,a=this.length,o=[],i="string"!=typeof e&&M(e);if(!C.test(e))for(;r<a;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(i?i.index(n)>-1:1===n.nodeType&&M.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?M.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?d.call(M(e),this[0]):d.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(M.uniqueSort(M.merge(this.get(),M(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),M.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return S(e,"parentNode")},parentsUntil:function(e,t,n){return S(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return S(e,"nextSibling")},prevAll:function(e){return S(e,"previousSibling")},nextUntil:function(e,t,n){return S(e,"nextSibling",n)},prevUntil:function(e,t,n){return S(e,"previousSibling",n)},siblings:function(e){return x((e.parentNode||{}).firstChild,e)},children:function(e){return x(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(D(e,"template")&&(e=e.content||e),M.merge([],e.childNodes))}},(function(e,t){M.fn[e]=function(n,r){var a=M.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(a=M.filter(r,a)),this.length>1&&(B[e]||M.uniqueSort(a),N.test(e)&&a.reverse()),this.pushStack(a)}}));var H=/[^\x20\t\r\n\f]+/g;function z(e){return e}function I(e){throw e}function F(e,t,n,r){var a;try{e&&_(a=e.promise)?a.call(e).done(t).fail(n):e&&_(a=e.then)?a.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}M.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return M.each(e.match(H)||[],(function(e,n){t[n]=!0})),t}(e):M.extend({},e);var t,n,r,a,o=[],i=[],s=-1,l=function(){for(a=a||e.once,r=t=!0;i.length;s=-1)for(n=i.shift();++s<o.length;)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,a&&(o=n?[]:"")},c={add:function(){return o&&(n&&!t&&(s=o.length-1,i.push(n)),function t(n){M.each(n,(function(n,r){_(r)?e.unique&&c.has(r)||o.push(r):r&&r.length&&"string"!==v(r)&&t(r)}))}(arguments),n&&!t&&l()),this},remove:function(){return M.each(arguments,(function(e,t){for(var n;(n=M.inArray(t,o,n))>-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?M.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return a=i=[],o=n="",this},disabled:function(){return!o},lock:function(){return a=i=[],n||t||(o=n=""),this},locked:function(){return!!a},fireWith:function(e,n){return a||(n=[e,(n=n||[]).slice?n.slice():n],i.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},M.extend({Deferred:function(e){var t=[["notify","progress",M.Callbacks("memory"),M.Callbacks("memory"),2],["resolve","done",M.Callbacks("once memory"),M.Callbacks("once memory"),0,"resolved"],["reject","fail",M.Callbacks("once memory"),M.Callbacks("once memory"),1,"rejected"]],r="pending",a={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return a.then(null,e)},pipe:function(){var e=arguments;return M.Deferred((function(n){M.each(t,(function(t,r){var a=_(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=a&&a.apply(this,arguments);e&&_(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,a?[e]:arguments)}))})),e=null})).promise()},then:function(e,r,a){var o=0;function i(e,t,r,a){return function(){var s=this,l=arguments,c=function(){var n,c;if(!(e<o)){if((n=r.apply(s,l))===t.promise())throw new TypeError("Thenable self-resolution");c=n&&("object"==typeof n||"function"==typeof n)&&n.then,_(c)?a?c.call(n,i(o,t,z,a),i(o,t,I,a)):(o++,c.call(n,i(o,t,z,a),i(o,t,I,a),i(o,t,z,t.notifyWith))):(r!==z&&(s=void 0,l=[n]),(a||t.resolveWith)(s,l))}},u=a?c:function(){try{c()}catch(n){M.Deferred.exceptionHook&&M.Deferred.exceptionHook(n,u.stackTrace),e+1>=o&&(r!==I&&(s=void 0,l=[n]),t.rejectWith(s,l))}};e?u():(M.Deferred.getStackHook&&(u.stackTrace=M.Deferred.getStackHook()),n.setTimeout(u))}}return M.Deferred((function(n){t[0][3].add(i(0,n,_(a)?a:z,n.notifyWith)),t[1][3].add(i(0,n,_(e)?e:z)),t[2][3].add(i(0,n,_(r)?r:I))})).promise()},promise:function(e){return null!=e?M.extend(e,a):a}},o={};return M.each(t,(function(e,n){var i=n[2],s=n[5];a[n[1]]=i.add,s&&i.add((function(){r=s}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),i.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=i.fireWith})),a.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),a=l.call(arguments),o=M.Deferred(),i=function(e){return function(n){r[e]=this,a[e]=arguments.length>1?l.call(arguments):n,--t||o.resolveWith(r,a)}};if(t<=1&&(F(e,o.done(i(n)).resolve,o.reject,!t),"pending"===o.state()||_(a[n]&&a[n].then)))return o.then();for(;n--;)F(a[n],i(n),o.reject);return o.promise()}});var R=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;M.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&R.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},M.readyException=function(e){n.setTimeout((function(){throw e}))};var W=M.Deferred();function U(){i.removeEventListener("DOMContentLoaded",U),n.removeEventListener("load",U),M.ready()}M.fn.ready=function(e){return W.then(e).catch((function(e){M.readyException(e)})),this},M.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--M.readyWait:M.isReady)||(M.isReady=!0,!0!==e&&--M.readyWait>0||W.resolveWith(i,[M]))}}),M.ready.then=W.then,"complete"===i.readyState||"loading"!==i.readyState&&!i.documentElement.doScroll?n.setTimeout(M.ready):(i.addEventListener("DOMContentLoaded",U),n.addEventListener("load",U));var q=function(e,t,n,r,a,o,i){var s=0,l=e.length,c=null==n;if("object"===v(n))for(s in a=!0,n)q(e,t,s,n[s],!0,o,i);else if(void 0!==r&&(a=!0,_(r)||(i=!0),c&&(i?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(M(e),n)})),t))for(;s<l;s++)t(e[s],n,i?r:r.call(e[s],s,t(e[s],n)));return a?e:c?t.call(e):l?t(e[0],n):o},G=/^-ms-/,V=/-([a-z])/g;function $(e,t){return t.toUpperCase()}function J(e){return e.replace(G,"ms-").replace(V,$)}var X=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=M.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},X(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,a=this.cache(e);if("string"==typeof t)a[J(t)]=n;else for(r in t)a[J(r)]=t[r];return a},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][J(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(J):(t=J(t))in r?[t]:t.match(H)||[]).length;for(;n--;)delete r[t[n]]}(void 0===t||M.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!M.isEmptyObject(t)}};var K=new Q,Z=new Q,ee=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,te=/[A-Z]/g;function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(te,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=function(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}Z.set(e,t,n)}else n=void 0;return n}M.extend({hasData:function(e){return Z.hasData(e)||K.hasData(e)},data:function(e,t,n){return Z.access(e,t,n)},removeData:function(e,t){Z.remove(e,t)},_data:function(e,t,n){return K.access(e,t,n)},_removeData:function(e,t){K.remove(e,t)}}),M.fn.extend({data:function(e,t){var n,r,a,o=this[0],i=o&&o.attributes;if(void 0===e){if(this.length&&(a=Z.get(o),1===o.nodeType&&!K.get(o,"hasDataAttrs"))){for(n=i.length;n--;)i[n]&&0===(r=i[n].name).indexOf("data-")&&(r=J(r.slice(5)),ne(o,r,a[r]));K.set(o,"hasDataAttrs",!0)}return a}return"object"==typeof e?this.each((function(){Z.set(this,e)})):q(this,(function(t){var n;if(o&&void 0===t)return void 0!==(n=Z.get(o,e))||void 0!==(n=ne(o,e))?n:void 0;this.each((function(){Z.set(this,e,t)}))}),null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each((function(){Z.remove(this,e)}))}}),M.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=K.get(e,t),n&&(!r||Array.isArray(n)?r=K.access(e,t,M.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=M.queue(e,t),r=n.length,a=n.shift(),o=M._queueHooks(e,t);"inprogress"===a&&(a=n.shift(),r--),a&&("fx"===t&&n.unshift("inprogress"),delete o.stop,a.call(e,(function(){M.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return K.get(e,n)||K.access(e,n,{empty:M.Callbacks("once memory").add((function(){K.remove(e,[t+"queue",n])}))})}}),M.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?M.queue(this[0],e):void 0===t?this:this.each((function(){var n=M.queue(this,e,t);M._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&M.dequeue(this,e)}))},dequeue:function(e){return this.each((function(){M.dequeue(this,e)}))},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,a=M.Deferred(),o=this,i=this.length,s=function(){--r||a.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";i--;)(n=K.get(o[i],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),a.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ae=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ie=i.documentElement,se=function(e){return M.contains(e.ownerDocument,e)},le={composed:!0};ie.getRootNode&&(se=function(e){return M.contains(e.ownerDocument,e)||e.getRootNode(le)===e.ownerDocument});var ce=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&se(e)&&"none"===M.css(e,"display")},ue=function(e,t,n,r){var a,o,i={};for(o in t)i[o]=e.style[o],e.style[o]=t[o];for(o in a=n.apply(e,r||[]),t)e.style[o]=i[o];return a};function de(e,t,n,r){var a,o,i=20,s=r?function(){return r.cur()}:function(){return M.css(e,t,"")},l=s(),c=n&&n[3]||(M.cssNumber[t]?"":"px"),u=e.nodeType&&(M.cssNumber[t]||"px"!==c&&+l)&&ae.exec(M.css(e,t));if(u&&u[3]!==c){for(l/=2,c=c||u[3],u=+l||1;i--;)M.style(e,t,u+c),(1-o)*(1-(o=s()/l||.5))<=0&&(i=0),u/=o;u*=2,M.style(e,t,u+c),n=n||[]}return n&&(u=+u||+l||0,a=n[1]?u+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=u,r.end=a)),a}var pe={};function me(e){var t,n=e.ownerDocument,r=e.nodeName,a=pe[r];return a||(t=n.body.appendChild(n.createElement(r)),a=M.css(t,"display"),t.parentNode.removeChild(t),"none"===a&&(a="block"),pe[r]=a,a)}function fe(e,t){for(var n,r,a=[],o=0,i=e.length;o<i;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(a[o]=K.get(r,"display")||null,a[o]||(r.style.display="")),""===r.style.display&&ce(r)&&(a[o]=me(r))):"none"!==n&&(a[o]="none",K.set(r,"display",n)));for(o=0;o<i;o++)null!=a[o]&&(e[o].style.display=a[o]);return e}M.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each((function(){ce(this)?M(this).show():M(this).hide()}))}});var he=/^(?:checkbox|radio)$/i,be=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ge=/^$|^module$|\/(?:java|ecma)script/i,_e={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ye(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&D(e,t)?M.merge([e],n):n}function ke(e,t){for(var n=0,r=e.length;n<r;n++)K.set(e[n],"globalEval",!t||K.get(t[n],"globalEval"))}_e.optgroup=_e.option,_e.tbody=_e.tfoot=_e.colgroup=_e.caption=_e.thead,_e.th=_e.td;var we,ve,Me=/<|&#?\w+;/;function Le(e,t,n,r,a){for(var o,i,s,l,c,u,d=t.createDocumentFragment(),p=[],m=0,f=e.length;m<f;m++)if((o=e[m])||0===o)if("object"===v(o))M.merge(p,o.nodeType?[o]:o);else if(Me.test(o)){for(i=i||d.appendChild(t.createElement("div")),s=(be.exec(o)||["",""])[1].toLowerCase(),l=_e[s]||_e._default,i.innerHTML=l[1]+M.htmlPrefilter(o)+l[2],u=l[0];u--;)i=i.lastChild;M.merge(p,i.childNodes),(i=d.firstChild).textContent=""}else p.push(t.createTextNode(o));for(d.textContent="",m=0;o=p[m++];)if(r&&M.inArray(o,r)>-1)a&&a.push(o);else if(c=se(o),i=ye(d.appendChild(o),"script"),c&&ke(i),n)for(u=0;o=i[u++];)ge.test(o.type||"")&&n.push(o);return d}we=i.createDocumentFragment().appendChild(i.createElement("div")),(ve=i.createElement("input")).setAttribute("type","radio"),ve.setAttribute("checked","checked"),ve.setAttribute("name","t"),we.appendChild(ve),g.checkClone=we.cloneNode(!0).cloneNode(!0).lastChild.checked,we.innerHTML="<textarea>x</textarea>",g.noCloneChecked=!!we.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ee=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Se=/^([^.]*)(?:\.(.+)|)/;function xe(){return!0}function Ce(){return!1}function De(e,t){return e===function(){try{return i.activeElement}catch(e){}}()==("focus"===t)}function Oe(e,t,n,r,a,o){var i,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Oe(e,s,n,r,t[s],o);return e}if(null==r&&null==a?(a=n,r=n=void 0):null==a&&("string"==typeof n?(a=r,r=void 0):(a=r,r=n,n=void 0)),!1===a)a=Ce;else if(!a)return e;return 1===o&&(i=a,(a=function(e){return M().off(e),i.apply(this,arguments)}).guid=i.guid||(i.guid=M.guid++)),e.each((function(){M.event.add(this,t,a,r,n)}))}function Ye(e,t,n){n?(K.set(e,t,!1),M.event.add(e,t,{namespace:!1,handler:function(e){var r,a,o=K.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(M.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=l.call(arguments),K.set(this,t,o),r=n(this,t),this[t](),o!==(a=K.get(this,t))||r?K.set(this,t,!1):a={},o!==a)return e.stopImmediatePropagation(),e.preventDefault(),a.value}else o.length&&(K.set(this,t,{value:M.event.trigger(M.extend(o[0],M.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===K.get(e,t)&&M.event.add(e,t,xe)}M.event={global:{},add:function(e,t,n,r,a){var o,i,s,l,c,u,d,p,m,f,h,b=K.get(e);if(b)for(n.handler&&(n=(o=n).handler,a=o.selector),a&&M.find.matchesSelector(ie,a),n.guid||(n.guid=M.guid++),(l=b.events)||(l=b.events={}),(i=b.handle)||(i=b.handle=function(t){return void 0!==M&&M.event.triggered!==t.type?M.event.dispatch.apply(e,arguments):void 0}),c=(t=(t||"").match(H)||[""]).length;c--;)m=h=(s=Se.exec(t[c])||[])[1],f=(s[2]||"").split(".").sort(),m&&(d=M.event.special[m]||{},m=(a?d.delegateType:d.bindType)||m,d=M.event.special[m]||{},u=M.extend({type:m,origType:h,data:r,handler:n,guid:n.guid,selector:a,needsContext:a&&M.expr.match.needsContext.test(a),namespace:f.join(".")},o),(p=l[m])||((p=l[m]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(e,r,f,i)||e.addEventListener&&e.addEventListener(m,i)),d.add&&(d.add.call(e,u),u.handler.guid||(u.handler.guid=n.guid)),a?p.splice(p.delegateCount++,0,u):p.push(u),M.event.global[m]=!0)},remove:function(e,t,n,r,a){var o,i,s,l,c,u,d,p,m,f,h,b=K.hasData(e)&&K.get(e);if(b&&(l=b.events)){for(c=(t=(t||"").match(H)||[""]).length;c--;)if(m=h=(s=Se.exec(t[c])||[])[1],f=(s[2]||"").split(".").sort(),m){for(d=M.event.special[m]||{},p=l[m=(r?d.delegateType:d.bindType)||m]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=o=p.length;o--;)u=p[o],!a&&h!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||r&&r!==u.selector&&("**"!==r||!u.selector)||(p.splice(o,1),u.selector&&p.delegateCount--,d.remove&&d.remove.call(e,u));i&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,f,b.handle)||M.removeEvent(e,m,b.handle),delete l[m])}else for(m in l)M.event.remove(e,m+t[c],n,r,!0);M.isEmptyObject(l)&&K.remove(e,"handle events")}},dispatch:function(e){var t,n,r,a,o,i,s=M.event.fix(e),l=new Array(arguments.length),c=(K.get(this,"events")||{})[s.type]||[],u=M.event.special[s.type]||{};for(l[0]=s,t=1;t<arguments.length;t++)l[t]=arguments[t];if(s.delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,s)){for(i=M.event.handlers.call(this,s,c),t=0;(a=i[t++])&&!s.isPropagationStopped();)for(s.currentTarget=a.elem,n=0;(o=a.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((M.event.special[o.origType]||{}).handle||o.handler).apply(a.elem,l))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,a,o,i,s=[],l=t.delegateCount,c=e.target;if(l&&c.nodeType&&!("click"===e.type&&e.button>=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||!0!==c.disabled)){for(o=[],i={},n=0;n<l;n++)void 0===i[a=(r=t[n]).selector+" "]&&(i[a]=r.needsContext?M(a,this).index(c)>-1:M.find(a,this,null,[c]).length),i[a]&&o.push(r);o.length&&s.push({elem:c,handlers:o})}return c=this,l<t.length&&s.push({elem:c,handlers:t.slice(l)}),s},addProp:function(e,t){Object.defineProperty(M.Event.prototype,e,{enumerable:!0,configurable:!0,get:_(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[M.expando]?e:new M.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return he.test(t.type)&&t.click&&D(t,"input")&&Ye(t,"click",xe),!1},trigger:function(e){var t=this||e;return he.test(t.type)&&t.click&&D(t,"input")&&Ye(t,"click"),!0},_default:function(e){var t=e.target;return he.test(t.type)&&t.click&&D(t,"input")&&K.get(t,"click")||D(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},M.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},M.Event=function(e,t){if(!(this instanceof M.Event))return new M.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?xe:Ce,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&M.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[M.expando]=!0},M.Event.prototype={constructor:M.Event,isDefaultPrevented:Ce,isPropagationStopped:Ce,isImmediatePropagationStopped:Ce,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=xe,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=xe,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=xe,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},M.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ee.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},M.event.addProp),M.each({focus:"focusin",blur:"focusout"},(function(e,t){M.event.special[e]={setup:function(){return Ye(this,e,De),!1},trigger:function(){return Ye(this,e),!0},delegateType:t}})),M.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},(function(e,t){M.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,a=e.relatedTarget,o=e.handleObj;return a&&(a===r||M.contains(r,a))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}})),M.fn.extend({on:function(e,t,n,r){return Oe(this,e,t,n,r)},one:function(e,t,n,r){return Oe(this,e,t,n,r,1)},off:function(e,t,n){var r,a;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,M(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(a in e)this.off(a,t,e[a]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ce),this.each((function(){M.event.remove(this,e,n,t)}))}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Pe=/<script|<style|<link/i,Ne=/checked\s*(?:[^=]|=\s*.checked.)/i,Be=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ae(e,t){return D(e,"table")&&D(11!==t.nodeType?t:t.firstChild,"tr")&&M(e).children("tbody")[0]||e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ze(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,r,a,o,i,s,l,c;if(1===t.nodeType){if(K.hasData(e)&&(o=K.access(e),i=K.set(t,o),c=o.events))for(a in delete i.handle,i.events={},c)for(n=0,r=c[a].length;n<r;n++)M.event.add(t,a,c[a][n]);Z.hasData(e)&&(s=Z.access(e),l=M.extend({},s),Z.set(t,l))}}function Fe(e,t){var n=t.nodeName.toLowerCase();"input"===n&&he.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=c.apply([],t);var a,o,i,s,l,u,d=0,p=e.length,m=p-1,f=t[0],h=_(f);if(h||p>1&&"string"==typeof f&&!g.checkClone&&Ne.test(f))return e.each((function(a){var o=e.eq(a);h&&(t[0]=f.call(this,a,o.html())),Re(o,t,n,r)}));if(p&&(o=(a=Le(t,e[0].ownerDocument,!1,e,r)).firstChild,1===a.childNodes.length&&(a=o),o||r)){for(s=(i=M.map(ye(a,"script"),He)).length;d<p;d++)l=a,d!==m&&(l=M.clone(l,!0,!0),s&&M.merge(i,ye(l,"script"))),n.call(e[d],l,d);if(s)for(u=i[i.length-1].ownerDocument,M.map(i,ze),d=0;d<s;d++)l=i[d],ge.test(l.type||"")&&!K.access(l,"globalEval")&&M.contains(u,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?M._evalUrl&&!l.noModule&&M._evalUrl(l.src,{nonce:l.nonce||l.getAttribute("nonce")}):w(l.textContent.replace(Be,""),l,u))}return e}function We(e,t,n){for(var r,a=t?M.filter(t,e):e,o=0;null!=(r=a[o]);o++)n||1!==r.nodeType||M.cleanData(ye(r)),r.parentNode&&(n&&se(r)&&ke(ye(r,"script")),r.parentNode.removeChild(r));return e}M.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,a,o,i,s=e.cloneNode(!0),l=se(e);if(!(g.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||M.isXMLDoc(e)))for(i=ye(s),r=0,a=(o=ye(e)).length;r<a;r++)Fe(o[r],i[r]);if(t)if(n)for(o=o||ye(e),i=i||ye(s),r=0,a=o.length;r<a;r++)Ie(o[r],i[r]);else Ie(e,s);return(i=ye(s,"script")).length>0&&ke(i,!l&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,a=M.event.special,o=0;void 0!==(n=e[o]);o++)if(X(n)){if(t=n[K.expando]){if(t.events)for(r in t.events)a[r]?M.event.remove(n,r):M.removeEvent(n,r,t.handle);n[K.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),M.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return q(this,(function(e){return void 0===e?M.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Re(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ae(this,e).appendChild(e)}))},prepend:function(){return Re(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(M.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return M.clone(this,e,t)}))},html:function(e){return q(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Pe.test(e)&&!_e[(be.exec(e)||["",""])[1].toLowerCase()]){e=M.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(M.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)}),null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,(function(t){var n=this.parentNode;M.inArray(this,e)<0&&(M.cleanData(ye(this)),n&&n.replaceChild(t,this))}),e)}}),M.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},(function(e,t){M.fn[e]=function(e){for(var n,r=[],a=M(e),o=a.length-1,i=0;i<=o;i++)n=i===o?this:this.clone(!0),M(a[i])[t](n),u.apply(r,n.get());return this.pushStack(r)}}));var Ue=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),qe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},Ge=new RegExp(oe.join("|"),"i");function Ve(e,t,n){var r,a,o,i,s=e.style;return(n=n||qe(e))&&(""!==(i=n.getPropertyValue(t)||n[t])||se(e)||(i=M.style(e,t)),!g.pixelBoxStyles()&&Ue.test(i)&&Ge.test(t)&&(r=s.width,a=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=i,i=n.width,s.width=r,s.minWidth=a,s.maxWidth=o)),void 0!==i?i+"":i}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){c.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(c).appendChild(u);var e=n.getComputedStyle(u);r="1%"!==e.top,l=12===t(e.marginLeft),u.style.right="60%",s=36===t(e.right),a=36===t(e.width),u.style.position="absolute",o=12===t(u.offsetWidth/3),ie.removeChild(c),u=null}}function t(e){return Math.round(parseFloat(e))}var r,a,o,s,l,c=i.createElement("div"),u=i.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",g.clearCloneStyle="content-box"===u.style.backgroundClip,M.extend(g,{boxSizingReliable:function(){return e(),a},pixelBoxStyles:function(){return e(),s},pixelPosition:function(){return e(),r},reliableMarginLeft:function(){return e(),l},scrollboxSize:function(){return e(),o}}))}();var Je=["Webkit","Moz","ms"],Xe=i.createElement("div").style,Qe={};function Ke(e){var t=M.cssProps[e]||Qe[e];return t||(e in Xe?e:Qe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Je.length;n--;)if((e=Je[n]+t)in Xe)return e}(e)||e)}var Ze=/^(none|table(?!-c[ea]).+)/,et=/^--/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=ae.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function at(e,t,n,r,a,o){var i="width"===t?1:0,s=0,l=0;if(n===(r?"border":"content"))return 0;for(;i<4;i+=2)"margin"===n&&(l+=M.css(e,n+oe[i],!0,a)),r?("content"===n&&(l-=M.css(e,"padding"+oe[i],!0,a)),"margin"!==n&&(l-=M.css(e,"border"+oe[i]+"Width",!0,a))):(l+=M.css(e,"padding"+oe[i],!0,a),"padding"!==n?l+=M.css(e,"border"+oe[i]+"Width",!0,a):s+=M.css(e,"border"+oe[i]+"Width",!0,a));return!r&&o>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-l-s-.5))||0),l}function ot(e,t,n){var r=qe(e),a=(!g.boxSizingReliable()||n)&&"border-box"===M.css(e,"boxSizing",!1,r),o=a,i=Ve(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Ue.test(i)){if(!n)return i;i="auto"}return(!g.boxSizingReliable()&&a||"auto"===i||!parseFloat(i)&&"inline"===M.css(e,"display",!1,r))&&e.getClientRects().length&&(a="border-box"===M.css(e,"boxSizing",!1,r),(o=s in e)&&(i=e[s])),(i=parseFloat(i)||0)+at(e,t,n||(a?"border":"content"),o,r,i)+"px"}function it(e,t,n,r,a){return new it.prototype.init(e,t,n,r,a)}M.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ve(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var a,o,i,s=J(t),l=et.test(t),c=e.style;if(l||(t=Ke(s)),i=M.cssHooks[t]||M.cssHooks[s],void 0===n)return i&&"get"in i&&void 0!==(a=i.get(e,!1,r))?a:c[t];"string"===(o=typeof n)&&(a=ae.exec(n))&&a[1]&&(n=de(e,t,a),o="number"),null!=n&&n==n&&("number"!==o||l||(n+=a&&a[3]||(M.cssNumber[s]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(c[t]="inherit"),i&&"set"in i&&void 0===(n=i.set(e,n,r))||(l?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,r){var a,o,i,s=J(t);return et.test(t)||(t=Ke(s)),(i=M.cssHooks[t]||M.cssHooks[s])&&"get"in i&&(a=i.get(e,!0,n)),void 0===a&&(a=Ve(e,t,r)),"normal"===a&&t in nt&&(a=nt[t]),""===n||n?(o=parseFloat(a),!0===n||isFinite(o)?o||0:a):a}}),M.each(["height","width"],(function(e,t){M.cssHooks[t]={get:function(e,n,r){if(n)return!Ze.test(M.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,t,r):ue(e,tt,(function(){return ot(e,t,r)}))},set:function(e,n,r){var a,o=qe(e),i=!g.scrollboxSize()&&"absolute"===o.position,s=(i||r)&&"border-box"===M.css(e,"boxSizing",!1,o),l=r?at(e,t,r,s,o):0;return s&&i&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-at(e,t,"border",!1,o)-.5)),l&&(a=ae.exec(n))&&"px"!==(a[3]||"px")&&(e.style[t]=n,n=M.css(e,t)),rt(0,n,l)}}})),M.cssHooks.marginLeft=$e(g.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Ve(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),M.each({margin:"",padding:"",border:"Width"},(function(e,t){M.cssHooks[e+t]={expand:function(n){for(var r=0,a={},o="string"==typeof n?n.split(" "):[n];r<4;r++)a[e+oe[r]+t]=o[r]||o[r-2]||o[0];return a}},"margin"!==e&&(M.cssHooks[e+t].set=rt)})),M.fn.extend({css:function(e,t){return q(this,(function(e,t,n){var r,a,o={},i=0;if(Array.isArray(t)){for(r=qe(e),a=t.length;i<a;i++)o[t[i]]=M.css(e,t[i],!1,r);return o}return void 0!==n?M.style(e,t,n):M.css(e,t)}),e,t,arguments.length>1)}}),M.Tween=it,it.prototype={constructor:it,init:function(e,t,n,r,a,o){this.elem=e,this.prop=n,this.easing=a||M.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(M.cssNumber[n]?"":"px")},cur:function(){var e=it.propHooks[this.prop];return e&&e.get?e.get(this):it.propHooks._default.get(this)},run:function(e){var t,n=it.propHooks[this.prop];return this.options.duration?this.pos=t=M.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):it.propHooks._default.set(this),this}},it.prototype.init.prototype=it.prototype,it.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=M.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){M.fx.step[e.prop]?M.fx.step[e.prop](e):1!==e.elem.nodeType||!M.cssHooks[e.prop]&&null==e.elem.style[Ke(e.prop)]?e.elem[e.prop]=e.now:M.style(e.elem,e.prop,e.now+e.unit)}}},it.propHooks.scrollTop=it.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},M.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},M.fx=it.prototype.init,M.fx.step={};var st,lt,ct=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function dt(){lt&&(!1===i.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(dt):n.setTimeout(dt,M.fx.interval),M.fx.tick())}function pt(){return n.setTimeout((function(){st=void 0})),st=Date.now()}function mt(e,t){var n,r=0,a={height:e};for(t=t?1:0;r<4;r+=2-t)a["margin"+(n=oe[r])]=a["padding"+n]=e;return t&&(a.opacity=a.width=e),a}function ft(e,t,n){for(var r,a=(ht.tweeners[t]||[]).concat(ht.tweeners["*"]),o=0,i=a.length;o<i;o++)if(r=a[o].call(n,t,e))return r}function ht(e,t,n){var r,a,o=0,i=ht.prefilters.length,s=M.Deferred().always((function(){delete l.elem})),l=function(){if(a)return!1;for(var t=st||pt(),n=Math.max(0,c.startTime+c.duration-t),r=1-(n/c.duration||0),o=0,i=c.tweens.length;o<i;o++)c.tweens[o].run(r);return s.notifyWith(e,[c,r,n]),r<1&&i?n:(i||s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:M.extend({},t),opts:M.extend(!0,{specialEasing:{},easing:M.easing._default},n),originalProperties:t,originalOptions:n,startTime:st||pt(),duration:n.duration,tweens:[],createTween:function(t,n){var r=M.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(r),r},stop:function(t){var n=0,r=t?c.tweens.length:0;if(a)return this;for(a=!0;n<r;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(!function(e,t){var n,r,a,o,i;for(n in e)if(a=t[r=J(n)],o=e[n],Array.isArray(o)&&(a=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(i=M.cssHooks[r])&&"expand"in i)for(n in o=i.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=a);else t[r]=a}(u,c.opts.specialEasing);o<i;o++)if(r=ht.prefilters[o].call(c,e,u,c.opts))return _(r.stop)&&(M._queueHooks(c.elem,c.opts.queue).stop=r.stop.bind(r)),r;return M.map(u,ft,c),_(c.opts.start)&&c.opts.start.call(e,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),M.fx.timer(M.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c}M.Animation=M.extend(ht,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return de(n.elem,e,ae.exec(t),n),n}]},tweener:function(e,t){_(e)?(t=e,e=["*"]):e=e.match(H);for(var n,r=0,a=e.length;r<a;r++)n=e[r],ht.tweeners[n]=ht.tweeners[n]||[],ht.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,a,o,i,s,l,c,u,d="width"in t||"height"in t,p=this,m={},f=e.style,h=e.nodeType&&ce(e),b=K.get(e,"fxshow");for(r in n.queue||(null==(i=M._queueHooks(e,"fx")).unqueued&&(i.unqueued=0,s=i.empty.fire,i.empty.fire=function(){i.unqueued||s()}),i.unqueued++,p.always((function(){p.always((function(){i.unqueued--,M.queue(e,"fx").length||i.empty.fire()}))}))),t)if(a=t[r],ct.test(a)){if(delete t[r],o=o||"toggle"===a,a===(h?"hide":"show")){if("show"!==a||!b||void 0===b[r])continue;h=!0}m[r]=b&&b[r]||M.style(e,r)}if((l=!M.isEmptyObject(t))||!M.isEmptyObject(m))for(r in d&&1===e.nodeType&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],null==(c=b&&b.display)&&(c=K.get(e,"display")),"none"===(u=M.css(e,"display"))&&(c?u=c:(fe([e],!0),c=e.style.display||c,u=M.css(e,"display"),fe([e]))),("inline"===u||"inline-block"===u&&null!=c)&&"none"===M.css(e,"float")&&(l||(p.done((function(){f.display=c})),null==c&&(u=f.display,c="none"===u?"":u)),f.display="inline-block")),n.overflow&&(f.overflow="hidden",p.always((function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]}))),l=!1,m)l||(b?"hidden"in b&&(h=b.hidden):b=K.access(e,"fxshow",{display:c}),o&&(b.hidden=!h),h&&fe([e],!0),p.done((function(){for(r in h||fe([e]),K.remove(e,"fxshow"),m)M.style(e,r,m[r])}))),l=ft(h?b[r]:0,r,p),r in b||(b[r]=l.start,h&&(l.end=l.start,l.start=0))}],prefilter:function(e,t){t?ht.prefilters.unshift(e):ht.prefilters.push(e)}}),M.speed=function(e,t,n){var r=e&&"object"==typeof e?M.extend({},e):{complete:n||!n&&t||_(e)&&e,duration:e,easing:n&&t||t&&!_(t)&&t};return M.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in M.fx.speeds?r.duration=M.fx.speeds[r.duration]:r.duration=M.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){_(r.old)&&r.old.call(this),r.queue&&M.dequeue(this,r.queue)},r},M.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ce).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var a=M.isEmptyObject(e),o=M.speed(t,n,r),i=function(){var t=ht(this,M.extend({},e),o);(a||K.get(this,"finish"))&&t.stop(!0)};return i.finish=i,a||!1===o.queue?this.each(i):this.queue(o.queue,i)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each((function(){var t=!0,a=null!=e&&e+"queueHooks",o=M.timers,i=K.get(this);if(a)i[a]&&i[a].stop&&r(i[a]);else for(a in i)i[a]&&i[a].stop&&ut.test(a)&&r(i[a]);for(a=o.length;a--;)o[a].elem!==this||null!=e&&o[a].queue!==e||(o[a].anim.stop(n),t=!1,o.splice(a,1));!t&&n||M.dequeue(this,e)}))},finish:function(e){return!1!==e&&(e=e||"fx"),this.each((function(){var t,n=K.get(this),r=n[e+"queue"],a=n[e+"queueHooks"],o=M.timers,i=r?r.length:0;for(n.finish=!0,M.queue(this,e,[]),a&&a.stop&&a.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<i;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish}))}}),M.each(["toggle","show","hide"],(function(e,t){var n=M.fn[t];M.fn[t]=function(e,r,a){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(mt(t,!0),e,r,a)}})),M.each({slideDown:mt("show"),slideUp:mt("hide"),slideToggle:mt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},(function(e,t){M.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}})),M.timers=[],M.fx.tick=function(){var e,t=0,n=M.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||M.fx.stop(),st=void 0},M.fx.timer=function(e){M.timers.push(e),M.fx.start()},M.fx.interval=13,M.fx.start=function(){lt||(lt=!0,dt())},M.fx.stop=function(){lt=null},M.fx.speeds={slow:600,fast:200,_default:400},M.fn.delay=function(e,t){return e=M.fx&&M.fx.speeds[e]||e,t=t||"fx",this.queue(t,(function(t,r){var a=n.setTimeout(t,e);r.stop=function(){n.clearTimeout(a)}}))},function(){var e=i.createElement("input"),t=i.createElement("select").appendChild(i.createElement("option"));e.type="checkbox",g.checkOn=""!==e.value,g.optSelected=t.selected,(e=i.createElement("input")).value="t",e.type="radio",g.radioValue="t"===e.value}();var bt,gt=M.expr.attrHandle;M.fn.extend({attr:function(e,t){return q(this,M.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each((function(){M.removeAttr(this,e)}))}}),M.extend({attr:function(e,t,n){var r,a,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?M.prop(e,t,n):(1===o&&M.isXMLDoc(e)||(a=M.attrHooks[t.toLowerCase()]||(M.expr.match.bool.test(t)?bt:void 0)),void 0!==n?null===n?void M.removeAttr(e,t):a&&"set"in a&&void 0!==(r=a.set(e,n,t))?r:(e.setAttribute(t,n+""),n):a&&"get"in a&&null!==(r=a.get(e,t))?r:null==(r=M.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!g.radioValue&&"radio"===t&&D(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,a=t&&t.match(H);if(a&&1===e.nodeType)for(;n=a[r++];)e.removeAttribute(n)}}),bt={set:function(e,t,n){return!1===t?M.removeAttr(e,n):e.setAttribute(n,n),n}},M.each(M.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=gt[t]||M.find.attr;gt[t]=function(e,t,r){var a,o,i=t.toLowerCase();return r||(o=gt[i],gt[i]=a,a=null!=n(e,t,r)?i:null,gt[i]=o),a}}));var _t=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function kt(e){return(e.match(H)||[]).join(" ")}function wt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(H)||[]}M.fn.extend({prop:function(e,t){return q(this,M.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[M.propFix[e]||e]}))}}),M.extend({prop:function(e,t,n){var r,a,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&M.isXMLDoc(e)||(t=M.propFix[t]||t,a=M.propHooks[t]),void 0!==n?a&&"set"in a&&void 0!==(r=a.set(e,n,t))?r:e[t]=n:a&&"get"in a&&null!==(r=a.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=M.find.attr(e,"tabindex");return t?parseInt(t,10):_t.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(M.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),M.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){M.propFix[this.toLowerCase()]=this})),M.fn.extend({addClass:function(e){var t,n,r,a,o,i,s,l=0;if(_(e))return this.each((function(t){M(this).addClass(e.call(this,t,wt(this)))}));if((t=vt(e)).length)for(;n=this[l++];)if(a=wt(n),r=1===n.nodeType&&" "+kt(a)+" "){for(i=0;o=t[i++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");a!==(s=kt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,a,o,i,s,l=0;if(_(e))return this.each((function(t){M(this).removeClass(e.call(this,t,wt(this)))}));if(!arguments.length)return this.attr("class","");if((t=vt(e)).length)for(;n=this[l++];)if(a=wt(n),r=1===n.nodeType&&" "+kt(a)+" "){for(i=0;o=t[i++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");a!==(s=kt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):_(e)?this.each((function(n){M(this).toggleClass(e.call(this,n,wt(this),t),t)})):this.each((function(){var t,a,o,i;if(r)for(a=0,o=M(this),i=vt(e);t=i[a++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=wt(this))&&K.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":K.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+kt(wt(n))+" ").indexOf(t)>-1)return!0;return!1}});var Mt=/\r/g;M.fn.extend({val:function(e){var t,n,r,a=this[0];return arguments.length?(r=_(e),this.each((function(n){var a;1===this.nodeType&&(null==(a=r?e.call(this,n,M(this).val()):e)?a="":"number"==typeof a?a+="":Array.isArray(a)&&(a=M.map(a,(function(e){return null==e?"":e+""}))),(t=M.valHooks[this.type]||M.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,a,"value")||(this.value=a))}))):a?(t=M.valHooks[a.type]||M.valHooks[a.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(a,"value"))?n:"string"==typeof(n=a.value)?n.replace(Mt,""):null==n?"":n:void 0}}),M.extend({valHooks:{option:{get:function(e){var t=M.find.attr(e,"value");return null!=t?t:kt(M.text(e))}},select:{get:function(e){var t,n,r,a=e.options,o=e.selectedIndex,i="select-one"===e.type,s=i?null:[],l=i?o+1:a.length;for(r=o<0?l:i?o:0;r<l;r++)if(((n=a[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!D(n.parentNode,"optgroup"))){if(t=M(n).val(),i)return t;s.push(t)}return s},set:function(e,t){for(var n,r,a=e.options,o=M.makeArray(t),i=a.length;i--;)((r=a[i]).selected=M.inArray(M.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),M.each(["radio","checkbox"],(function(){M.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=M.inArray(M(e).val(),t)>-1}},g.checkOn||(M.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),g.focusin="onfocusin"in n;var Lt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};M.extend(M.event,{trigger:function(e,t,r,a){var o,s,l,c,u,d,p,m,h=[r||i],b=f.call(e,"type")?e.type:e,g=f.call(e,"namespace")?e.namespace.split("."):[];if(s=m=l=r=r||i,3!==r.nodeType&&8!==r.nodeType&&!Lt.test(b+M.event.triggered)&&(b.indexOf(".")>-1&&(g=b.split("."),b=g.shift(),g.sort()),u=b.indexOf(":")<0&&"on"+b,(e=e[M.expando]?e:new M.Event(b,"object"==typeof e&&e)).isTrigger=a?2:3,e.namespace=g.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:M.makeArray(t,[e]),p=M.event.special[b]||{},a||!p.trigger||!1!==p.trigger.apply(r,t))){if(!a&&!p.noBubble&&!y(r)){for(c=p.delegateType||b,Lt.test(c+b)||(s=s.parentNode);s;s=s.parentNode)h.push(s),l=s;l===(r.ownerDocument||i)&&h.push(l.defaultView||l.parentWindow||n)}for(o=0;(s=h[o++])&&!e.isPropagationStopped();)m=s,e.type=o>1?c:p.bindType||b,(d=(K.get(s,"events")||{})[e.type]&&K.get(s,"handle"))&&d.apply(s,t),(d=u&&s[u])&&d.apply&&X(s)&&(e.result=d.apply(s,t),!1===e.result&&e.preventDefault());return e.type=b,a||e.isDefaultPrevented()||p._default&&!1!==p._default.apply(h.pop(),t)||!X(r)||u&&_(r[b])&&!y(r)&&((l=r[u])&&(r[u]=null),M.event.triggered=b,e.isPropagationStopped()&&m.addEventListener(b,Tt),r[b](),e.isPropagationStopped()&&m.removeEventListener(b,Tt),M.event.triggered=void 0,l&&(r[u]=l)),e.result}},simulate:function(e,t,n){var r=M.extend(new M.Event,n,{type:e,isSimulated:!0});M.event.trigger(r,null,t)}}),M.fn.extend({trigger:function(e,t){return this.each((function(){M.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return M.event.trigger(e,t,n,!0)}}),g.focusin||M.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){M.event.simulate(t,e.target,M.event.fix(e))};M.event.special[t]={setup:function(){var r=this.ownerDocument||this,a=K.access(r,t);a||r.addEventListener(e,n,!0),K.access(r,t,(a||0)+1)},teardown:function(){var r=this.ownerDocument||this,a=K.access(r,t)-1;a?K.access(r,t,a):(r.removeEventListener(e,n,!0),K.remove(r,t))}}}));var Et=n.location,St=Date.now(),xt=/\?/;M.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||M.error("Invalid XML: "+e),t};var Ct=/\[\]$/,Dt=/\r?\n/g,Ot=/^(?:submit|button|image|reset|file)$/i,Yt=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var a;if(Array.isArray(t))M.each(t,(function(t,a){n||Ct.test(e)?r(e,a):jt(e+"["+("object"==typeof a&&null!=a?t:"")+"]",a,n,r)}));else if(n||"object"!==v(t))r(e,t);else for(a in t)jt(e+"["+a+"]",t[a],n,r)}M.param=function(e,t){var n,r=[],a=function(e,t){var n=_(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!M.isPlainObject(e))M.each(e,(function(){a(this.name,this.value)}));else for(n in e)jt(n,e[n],t,a);return r.join("&")},M.fn.extend({serialize:function(){return M.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=M.prop(this,"elements");return e?M.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!M(this).is(":disabled")&&Yt.test(this.nodeName)&&!Ot.test(e)&&(this.checked||!he.test(e))})).map((function(e,t){var n=M(this).val();return null==n?null:Array.isArray(n)?M.map(n,(function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}})):{name:t.name,value:n.replace(Dt,"\r\n")}})).get()}});var Pt=/%20/g,Nt=/#.*$/,Bt=/([?&])_=[^&]*/,At=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:GET|HEAD)$/,zt=/^\/\//,It={},Ft={},Rt="*/".concat("*"),Wt=i.createElement("a");function Ut(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,a=0,o=t.toLowerCase().match(H)||[];if(_(n))for(;r=o[a++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qt(e,t,n,r){var a={},o=e===Ft;function i(s){var l;return a[s]=!0,M.each(e[s]||[],(function(e,s){var c=s(t,n,r);return"string"!=typeof c||o||a[c]?o?!(l=c):void 0:(t.dataTypes.unshift(c),i(c),!1)})),l}return i(t.dataTypes[0])||!a["*"]&&i("*")}function Gt(e,t){var n,r,a=M.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((a[n]?e:r||(r={}))[n]=t[n]);return r&&M.extend(!0,e,r),e}Wt.href=Et.href,M.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":M.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,M.ajaxSettings),t):Gt(M.ajaxSettings,e)},ajaxPrefilter:Ut(It),ajaxTransport:Ut(Ft),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,a,o,s,l,c,u,d,p,m,f=M.ajaxSetup({},t),h=f.context||f,b=f.context&&(h.nodeType||h.jquery)?M(h):M.event,g=M.Deferred(),_=M.Callbacks("once memory"),y=f.statusCode||{},k={},w={},v="canceled",L={readyState:0,getResponseHeader:function(e){var t;if(u){if(!s)for(s={};t=At.exec(o);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(e,t){return null==u&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,k[e]=t),this},overrideMimeType:function(e){return null==u&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(u)L.always(e[L.status]);else for(t in e)y[t]=[y[t],e[t]];return this},abort:function(e){var t=e||v;return r&&r.abort(t),T(0,t),this}};if(g.promise(L),f.url=((e||f.url||Et.href)+"").replace(zt,Et.protocol+"//"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(H)||[""],null==f.crossDomain){c=i.createElement("a");try{c.href=f.url,c.href=c.href,f.crossDomain=Wt.protocol+"//"+Wt.host!=c.protocol+"//"+c.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=M.param(f.data,f.traditional)),qt(It,f,t,L),u)return L;for(p in(d=M.event&&f.global)&&0==M.active++&&M.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!Ht.test(f.type),a=f.url.replace(Nt,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(Pt,"+")):(m=f.url.slice(a.length),f.data&&(f.processData||"string"==typeof f.data)&&(a+=(xt.test(a)?"&":"?")+f.data,delete f.data),!1===f.cache&&(a=a.replace(Bt,"$1"),m=(xt.test(a)?"&":"?")+"_="+St+++m),f.url=a+m),f.ifModified&&(M.lastModified[a]&&L.setRequestHeader("If-Modified-Since",M.lastModified[a]),M.etag[a]&&L.setRequestHeader("If-None-Match",M.etag[a])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&L.setRequestHeader("Content-Type",f.contentType),L.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Rt+"; q=0.01":""):f.accepts["*"]),f.headers)L.setRequestHeader(p,f.headers[p]);if(f.beforeSend&&(!1===f.beforeSend.call(h,L,f)||u))return L.abort();if(v="abort",_.add(f.complete),L.done(f.success),L.fail(f.error),r=qt(Ft,f,t,L)){if(L.readyState=1,d&&b.trigger("ajaxSend",[L,f]),u)return L;f.async&&f.timeout>0&&(l=n.setTimeout((function(){L.abort("timeout")}),f.timeout));try{u=!1,r.send(k,T)}catch(e){if(u)throw e;T(-1,e)}}else T(-1,"No Transport");function T(e,t,i,s){var c,p,m,k,w,v=t;u||(u=!0,l&&n.clearTimeout(l),r=void 0,o=s||"",L.readyState=e>0?4:0,c=e>=200&&e<300||304===e,i&&(k=function(e,t,n){for(var r,a,o,i,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(a in s)if(s[a]&&s[a].test(r)){l.unshift(a);break}if(l[0]in n)o=l[0];else{for(a in n){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}i||(i=a)}o=o||i}if(o)return o!==l[0]&&l.unshift(o),n[o]}(f,L,i)),k=function(e,t,n,r){var a,o,i,s,l,c={},u=e.dataTypes.slice();if(u[1])for(i in e.converters)c[i.toLowerCase()]=e.converters[i];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(i=c[l+" "+o]||c["* "+o]))for(a in c)if((s=a.split(" "))[1]===o&&(i=c[l+" "+s[0]]||c["* "+s[0]])){!0===i?i=c[a]:!0!==c[a]&&(o=s[0],u.unshift(s[1]));break}if(!0!==i)if(i&&e.throws)t=i(t);else try{t=i(t)}catch(e){return{state:"parsererror",error:i?e:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}(f,k,L,c),c?(f.ifModified&&((w=L.getResponseHeader("Last-Modified"))&&(M.lastModified[a]=w),(w=L.getResponseHeader("etag"))&&(M.etag[a]=w)),204===e||"HEAD"===f.type?v="nocontent":304===e?v="notmodified":(v=k.state,p=k.data,c=!(m=k.error))):(m=v,!e&&v||(v="error",e<0&&(e=0))),L.status=e,L.statusText=(t||v)+"",c?g.resolveWith(h,[p,v,L]):g.rejectWith(h,[L,v,m]),L.statusCode(y),y=void 0,d&&b.trigger(c?"ajaxSuccess":"ajaxError",[L,f,c?p:m]),_.fireWith(h,[L,v]),d&&(b.trigger("ajaxComplete",[L,f]),--M.active||M.event.trigger("ajaxStop")))}return L},getJSON:function(e,t,n){return M.get(e,t,n,"json")},getScript:function(e,t){return M.get(e,void 0,t,"script")}}),M.each(["get","post"],(function(e,t){M[t]=function(e,n,r,a){return _(n)&&(a=a||r,r=n,n=void 0),M.ajax(M.extend({url:e,type:t,dataType:a,data:n,success:r},M.isPlainObject(e)&&e))}})),M._evalUrl=function(e,t){return M.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){M.globalEval(e,t)}})},M.fn.extend({wrapAll:function(e){var t;return this[0]&&(_(e)&&(e=e.call(this[0])),t=M(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return _(e)?this.each((function(t){M(this).wrapInner(e.call(this,t))})):this.each((function(){var t=M(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=_(e);return this.each((function(n){M(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){M(this).replaceWith(this.childNodes)})),this}}),M.expr.pseudos.hidden=function(e){return!M.expr.pseudos.visible(e)},M.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},M.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},$t=M.ajaxSettings.xhr();g.cors=!!$t&&"withCredentials"in $t,g.ajax=$t=!!$t,M.ajaxTransport((function(e){var t,r;if(g.cors||$t&&!e.crossDomain)return{send:function(a,o){var i,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];for(i in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||a["X-Requested-With"]||(a["X-Requested-With"]="XMLHttpRequest"),a)s.setRequestHeader(i,a[i]);t=function(e){return function(){t&&(t=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),r=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout((function(){t&&r()}))},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),M.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),M.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return M.globalEval(e),e}}}),M.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),M.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,a){t=M("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&a("error"===e.type?404:200,e.type)}),i.head.appendChild(t[0])},abort:function(){n&&n()}}}));var Jt,Xt=[],Qt=/(=)\?(?=&|$)|\?\?/;M.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||M.expando+"_"+St++;return this[e]=!0,e}}),M.ajaxPrefilter("json jsonp",(function(e,t,r){var a,o,i,s=!1!==e.jsonp&&(Qt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return a=e.jsonpCallback=_(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Qt,"$1"+a):!1!==e.jsonp&&(e.url+=(xt.test(e.url)?"&":"?")+e.jsonp+"="+a),e.converters["script json"]=function(){return i||M.error(a+" was not called"),i[0]},e.dataTypes[0]="json",o=n[a],n[a]=function(){i=arguments},r.always((function(){void 0===o?M(n).removeProp(a):n[a]=o,e[a]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(a)),i&&_(o)&&o(i[0]),i=o=void 0})),"script"})),g.createHTMLDocument=((Jt=i.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),M.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(g.createHTMLDocument?((r=(t=i.implementation.createHTMLDocument("")).createElement("base")).href=i.location.href,t.head.appendChild(r)):t=i),o=!n&&[],(a=O.exec(e))?[t.createElement(a[1])]:(a=Le([e],t,o),o&&o.length&&M(o).remove(),M.merge([],a.childNodes)));var r,a,o},M.fn.load=function(e,t,n){var r,a,o,i=this,s=e.indexOf(" ");return s>-1&&(r=kt(e.slice(s)),e=e.slice(0,s)),_(t)?(n=t,t=void 0):t&&"object"==typeof t&&(a="POST"),i.length>0&&M.ajax({url:e,type:a||"GET",dataType:"html",data:t}).done((function(e){o=arguments,i.html(r?M("<div>").append(M.parseHTML(e)).find(r):e)})).always(n&&function(e,t){i.each((function(){n.apply(this,o||[e.responseText,t,e])}))}),this},M.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],(function(e,t){M.fn[t]=function(e){return this.on(t,e)}})),M.expr.pseudos.animated=function(e){return M.grep(M.timers,(function(t){return e===t.elem})).length},M.offset={setOffset:function(e,t,n){var r,a,o,i,s,l,c=M.css(e,"position"),u=M(e),d={};"static"===c&&(e.style.position="relative"),s=u.offset(),o=M.css(e,"top"),l=M.css(e,"left"),("absolute"===c||"fixed"===c)&&(o+l).indexOf("auto")>-1?(i=(r=u.position()).top,a=r.left):(i=parseFloat(o)||0,a=parseFloat(l)||0),_(t)&&(t=t.call(e,n,M.extend({},s))),null!=t.top&&(d.top=t.top-s.top+i),null!=t.left&&(d.left=t.left-s.left+a),"using"in t?t.using.call(e,d):u.css(d)}},M.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each((function(t){M.offset.setOffset(this,e,t)}));var t,n,r=this[0];return r?r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],a={top:0,left:0};if("fixed"===M.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===M.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((a=M(e).offset()).top+=M.css(e,"borderTopWidth",!0),a.left+=M.css(e,"borderLeftWidth",!0))}return{top:t.top-a.top-M.css(r,"marginTop",!0),left:t.left-a.left-M.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent;e&&"static"===M.css(e,"position");)e=e.offsetParent;return e||ie}))}}),M.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},(function(e,t){var n="pageYOffset"===t;M.fn[e]=function(r){return q(this,(function(e,r,a){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===a)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:a,n?a:o.pageYOffset):e[r]=a}),e,r,arguments.length)}})),M.each(["top","left"],(function(e,t){M.cssHooks[t]=$e(g.pixelPosition,(function(e,n){if(n)return n=Ve(e,t),Ue.test(n)?M(e).position()[t]+"px":n}))})),M.each({Height:"height",Width:"width"},(function(e,t){M.each({padding:"inner"+e,content:t,"":"outer"+e},(function(n,r){M.fn[r]=function(a,o){var i=arguments.length&&(n||"boolean"!=typeof a),s=n||(!0===a||!0===o?"margin":"border");return q(this,(function(t,n,a){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===a?M.css(t,n,s):M.style(t,n,a,s)}),t,i?a:void 0,i)}}))})),M.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),(function(e,t){M.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}})),M.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),M.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),M.proxy=function(e,t){var n,r,a;if("string"==typeof t&&(n=e[t],t=e,e=n),_(e))return r=l.call(arguments,2),(a=function(){return e.apply(t||this,r.concat(l.call(arguments)))}).guid=e.guid=e.guid||M.guid++,a},M.holdReady=function(e){e?M.readyWait++:M.ready(!0)},M.isArray=Array.isArray,M.parseJSON=JSON.parse,M.nodeName=D,M.isFunction=_,M.isWindow=y,M.camelCase=J,M.type=v,M.now=Date.now,M.isNumeric=function(e){var t=M.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},void 0===(r=function(){return M}.apply(t,[]))||(e.exports=r);var Kt=n.jQuery,Zt=n.$;return M.noConflict=function(e){return n.$===M&&(n.$=Zt),e&&n.jQuery===M&&(n.jQuery=Kt),M},a||(n.jQuery=n.$=M),M}))},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){var r=n(20),a=n(263),o=n(322),i=n(15),s=n(12),l=n(331),c=n(111),u=n(80),d=c((function(e,t){var n={};if(null==e)return n;var c=!1;t=r(t,(function(t){return t=i(t,e),c||(c=t.length>1),t})),s(e,u(e),n),c&&(n=a(n,7,l));for(var d=t.length;d--;)o(n,t[d]);return n}));e.exports=d},function(e,t,n){var r=n(274),a=n(279);e.exports=function(e,t){var n=a(e,t);return r(n)?n:void 0}},function(e,t,n){var r=n(11),a=n(275),o=n(276),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?a(e):o(e)}},function(e,t,n){var r=n(4).Symbol;e.exports=r},function(e,t,n){var r=n(26),a=n(98);e.exports=function(e,t,n,o){var i=!n;n||(n={});for(var s=-1,l=t.length;++s<l;){var c=t[s],u=o?o(n[c],e[c],c,n,e):void 0;void 0===u&&(u=e[c]),i?a(n,c,u):r(n,c,u)}return n}},function(e,t,n){var r=n(100),a=n(297),o=n(14);e.exports=function(e){return o(e)?r(e):a(e)}},function(e,t,n){var r=n(95),a=n(74);e.exports=function(e){return null!=e&&a(e.length)&&!r(e)}},function(e,t,n){var r=n(3),a=n(82),o=n(323),i=n(326);e.exports=function(e,t){return r(e)?e:a(e,t)?[e]:o(i(e))}},function(e,t,n){var r=n(31);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t,n){var r=n(105),a=n(345),o=n(34),i=n(3);e.exports=function(e,t){return(i(e)?r:a)(e,o(t,3))}},function(e,t){e.exports=function(e){for(var t=-1,n=null==e?0:e.length,r=0,a=[];++t<n;){var o=e[t];o&&(a[r++]=o)}return a}},function(e,t,n){var r=n(20),a=n(34),o=n(369),i=n(3);e.exports=function(e,t){return(i(e)?r:o)(e,a(t,3))}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a}},function(e,t,n){var r=n(264),a=n(265),o=n(266),i=n(267),s=n(268);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=a,l.prototype.get=o,l.prototype.has=i,l.prototype.set=s,e.exports=l},function(e,t,n){var r=n(23);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(9)(Object,"create");e.exports=r},function(e,t,n){var r=n(288);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){var r=n(98),a=n(23),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];o.call(e,t)&&a(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t,n){var r=n(306),a=n(69),o=n(307),i=n(308),s=n(309),l=n(10),c=n(97),u=c(r),d=c(a),p=c(o),m=c(i),f=c(s),h=l;(r&&"[object DataView]"!=h(new r(new ArrayBuffer(1)))||a&&"[object Map]"!=h(new a)||o&&"[object Promise]"!=h(o.resolve())||i&&"[object Set]"!=h(new i)||s&&"[object WeakMap]"!=h(new s))&&(h=function(e){var t=l(e),n="[object Object]"==t?e.constructor:void 0,r=n?c(n):"";if(r)switch(r){case u:return"[object DataView]";case d:return"[object Map]";case p:return"[object Promise]";case m:return"[object Set]";case f:return"[object WeakMap]"}return t}),e.exports=h},function(e,t,n){var r=n(10),a=n(7);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(15),a=n(16);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[a(t[n++])];return n&&n==o?e:void 0}},function(e,t){e.exports=function(e){return e}},function(e,t,n){var r=n(350),a=n(363),o=n(33),i=n(3),s=n(366);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?a(e[0],e[1]):r(e):s(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.canUseDOM=t.slidesOnLeft=t.slidesOnRight=t.siblingDirection=t.getTotalSlides=t.getPostClones=t.getPreClones=t.getTrackLeft=t.getTrackAnimateCSS=t.getTrackCSS=t.checkSpecKeys=t.getSlideCount=t.checkNavigable=t.getNavigableIndexes=t.swipeEnd=t.swipeMove=t.swipeStart=t.keyHandler=t.changeSlide=t.slideHandler=t.initializedState=t.extractObject=t.canGoNext=t.getSwipeDirection=t.getHeight=t.getWidth=t.lazySlidesOnRight=t.lazySlidesOnLeft=t.lazyEndIndex=t.lazyStartIndex=t.getRequiredLazySlides=t.getOnDemandLazySlides=void 0;var r=o(n(2)),a=o(n(121));function o(e){return e&&e.__esModule?e:{default:e}}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){s(e,t,n[t])}))}return e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var l=function(e){for(var t=[],n=c(e),r=u(e),a=n;a<r;a++)e.lazyLoadedList.indexOf(a)<0&&t.push(a);return t};t.getOnDemandLazySlides=l;t.getRequiredLazySlides=function(e){for(var t=[],n=c(e),r=u(e),a=n;a<r;a++)t.push(a);return t};var c=function(e){return e.currentSlide-d(e)};t.lazyStartIndex=c;var u=function(e){return e.currentSlide+p(e)};t.lazyEndIndex=u;var d=function(e){return e.centerMode?Math.floor(e.slidesToShow/2)+(parseInt(e.centerPadding)>0?1:0):0};t.lazySlidesOnLeft=d;var p=function(e){return e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow};t.lazySlidesOnRight=p;var m=function(e){return e&&e.offsetWidth||0};t.getWidth=m;var f=function(e){return e&&e.offsetHeight||0};t.getHeight=f;var h=function(e){var t,n,r,a,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t=e.startX-e.curX,n=e.startY-e.curY,r=Math.atan2(n,t),(a=Math.round(180*r/Math.PI))<0&&(a=360-Math.abs(a)),a<=45&&a>=0||a<=360&&a>=315?"left":a>=135&&a<=225?"right":!0===o?a>=35&&a<=135?"up":"down":"vertical"};t.getSwipeDirection=h;var b=function(e){var t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t};t.canGoNext=b;t.extractObject=function(e,t){var n={};return t.forEach((function(t){return n[t]=e[t]})),n};t.initializedState=function(e){var t,n=r.default.Children.count(e.children),o=Math.ceil(m(a.default.findDOMNode(e.listRef))),i=Math.ceil(m(a.default.findDOMNode(e.trackRef)));if(e.vertical)t=o;else{var s=e.centerMode&&2*parseInt(e.centerPadding);"string"==typeof e.centerPadding&&"%"===e.centerPadding.slice(-1)&&(s*=o/100),t=Math.ceil((o-s)/e.slidesToShow)}var c=a.default.findDOMNode(e.listRef)&&f(a.default.findDOMNode(e.listRef).querySelector('[data-index="0"]')),u=c*e.slidesToShow,d=void 0===e.currentSlide?e.initialSlide:e.currentSlide;e.rtl&&void 0===e.currentSlide&&(d=n-1-e.initialSlide);var p=e.lazyLoadedList||[],h=l({currentSlide:d,lazyLoadedList:p});p.concat(h);var b={slideCount:n,slideWidth:t,listWidth:o,trackWidth:i,currentSlide:d,slideHeight:c,listHeight:u,lazyLoadedList:p};return null===e.autoplaying&&e.autoplay&&(b.autoplaying="playing"),b};t.slideHandler=function(e){var t=e.waitForAnimate,n=e.animating,r=e.fade,a=e.infinite,o=e.index,s=e.slideCount,c=e.lazyLoadedList,u=e.lazyLoad,d=e.currentSlide,p=e.centerMode,m=e.slidesToScroll,f=e.slidesToShow,h=e.useCSS;if(t&&n)return{};var g,_,y,k=o,L={},T={};if(r){if(!a&&(o<0||o>=s))return{};o<0?k=o+s:o>=s&&(k=o-s),u&&c.indexOf(k)<0&&c.push(k),L={animating:!0,currentSlide:k,lazyLoadedList:c},T={animating:!1}}else g=k,k<0?(g=k+s,a?s%m!=0&&(g=s-s%m):g=0):!b(e)&&k>d?k=g=d:p&&k>=s?(k=a?s:s-1,g=a?0:s-1):k>=s&&(g=k-s,a?s%m!=0&&(g=0):g=s-f),_=M(i({},e,{slideIndex:k})),y=M(i({},e,{slideIndex:g})),a||(_===y&&(k=g),_=y),u&&c.concat(l(i({},e,{currentSlide:k}))),h?(L={animating:!0,currentSlide:g,trackStyle:v(i({},e,{left:_})),lazyLoadedList:c},T={animating:!1,currentSlide:g,trackStyle:w(i({},e,{left:y})),swipeLeft:null}):L={currentSlide:g,trackStyle:w(i({},e,{left:y})),lazyLoadedList:c};return{state:L,nextState:T}};t.changeSlide=function(e,t){var n,r,a,o,s=e.slidesToScroll,l=e.slidesToShow,c=e.slideCount,u=e.currentSlide,d=e.lazyLoad,p=e.infinite;if(n=c%s!=0?0:(c-u)%s,"previous"===t.message)o=u-(a=0===n?s:l-n),d&&!p&&(o=-1===(r=u-a)?c-1:r);else if("next"===t.message)o=u+(a=0===n?s:n),d&&!p&&(o=(u+s)%c+n);else if("dots"===t.message){if((o=t.index*t.slidesToScroll)===t.currentSlide)return null}else if("children"===t.message){if((o=t.index)===t.currentSlide)return null;if(p){var m=S(i({},e,{targetSlide:o}));o>t.currentSlide&&"left"===m?o-=c:o<t.currentSlide&&"right"===m&&(o+=c)}}else if("index"===t.message&&(o=Number(t.index))===t.currentSlide)return null;return o};t.keyHandler=function(e,t,n){return e.target.tagName.match("TEXTAREA|INPUT|SELECT")||!t?"":37===e.keyCode?n?"next":"previous":39===e.keyCode?n?"previous":"next":""};t.swipeStart=function(e,t,n){return"IMG"===e.target.tagName&&e.preventDefault(),!t||!n&&-1!==e.type.indexOf("mouse")?"":{dragging:!0,touchObject:{startX:e.touches?e.touches[0].pageX:e.clientX,startY:e.touches?e.touches[0].pageY:e.clientY,curX:e.touches?e.touches[0].pageX:e.clientX,curY:e.touches?e.touches[0].pageY:e.clientY}}};t.swipeMove=function(e,t){var n=t.scrolling,r=t.animating,a=t.vertical,o=t.swipeToSlide,s=t.verticalSwiping,l=t.rtl,c=t.currentSlide,u=t.edgeFriction,d=t.edgeDragged,p=t.onEdge,m=t.swiped,f=t.swiping,g=t.slideCount,_=t.slidesToScroll,y=t.infinite,k=t.touchObject,v=t.swipeEvent,L=t.listHeight,T=t.listWidth;if(!n){if(r)return e.preventDefault();a&&o&&s&&e.preventDefault();var E,S={},x=M(t);k.curX=e.touches?e.touches[0].pageX:e.clientX,k.curY=e.touches?e.touches[0].pageY:e.clientY,k.swipeLength=Math.round(Math.sqrt(Math.pow(k.curX-k.startX,2)));var C=Math.round(Math.sqrt(Math.pow(k.curY-k.startY,2)));if(!s&&!f&&C>10)return{scrolling:!0};s&&(k.swipeLength=C);var D=(l?-1:1)*(k.curX>k.startX?1:-1);s&&(D=k.curY>k.startY?1:-1);var O=Math.ceil(g/_),Y=h(t.touchObject,s),j=k.swipeLength;return y||(0===c&&"right"===Y||c+1>=O&&"left"===Y||!b(t)&&"left"===Y)&&(j=k.swipeLength*u,!1===d&&p&&(p(Y),S.edgeDragged=!0)),!m&&v&&(v(Y),S.swiped=!0),E=a?x+j*(L/T)*D:l?x-j*D:x+j*D,s&&(E=x+j*D),S=i({},S,{touchObject:k,swipeLeft:E,trackStyle:w(i({},t,{left:E}))}),Math.abs(k.curX-k.startX)<.8*Math.abs(k.curY-k.startY)?S:(k.swipeLength>10&&(S.swiping=!0,e.preventDefault()),S)}};t.swipeEnd=function(e,t){var n=t.dragging,r=t.swipe,a=t.touchObject,o=t.listWidth,s=t.touchThreshold,l=t.verticalSwiping,c=t.listHeight,u=t.currentSlide,d=t.swipeToSlide,p=t.scrolling,m=t.onSwipe;if(!n)return r&&e.preventDefault(),{};var f=l?c/s:o/s,b=h(a,l),g={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(p)return g;if(!a.swipeLength)return g;if(a.swipeLength>f){var k,w;switch(e.preventDefault(),m&&m(b),b){case"left":case"up":w=u+y(t),k=d?_(t,w):w,g.currentDirection=0;break;case"right":case"down":w=u-y(t),k=d?_(t,w):w,g.currentDirection=1;break;default:k=u}g.triggerSlideHandler=k}else{var L=M(t);g.trackStyle=v(i({},t,{left:L}))}return g};var g=function(e){for(var t=e.infinite?2*e.slideCount:e.slideCount,n=e.infinite?-1*e.slidesToShow:0,r=e.infinite?-1*e.slidesToShow:0,a=[];n<t;)a.push(n),n=r+e.slidesToScroll,r+=Math.min(e.slidesToScroll,e.slidesToShow);return a};t.getNavigableIndexes=g;var _=function(e,t){var n=g(e),r=0;if(t>n[n.length-1])t=n[n.length-1];else for(var a in n){if(t<n[a]){t=r;break}r=n[a]}return t};t.checkNavigable=_;var y=function(e){var t=e.centerMode?e.slideWidth*Math.floor(e.slidesToShow/2):0;if(e.swipeToSlide){var n,r=a.default.findDOMNode(e.listRef).querySelectorAll(".slick-slide");if(Array.from(r).every((function(r){if(e.vertical){if(r.offsetTop+f(r)/2>-1*e.swipeLeft)return n=r,!1}else if(r.offsetLeft-t+m(r)/2>-1*e.swipeLeft)return n=r,!1;return!0})),!n)return 0;var o=!0===e.rtl?e.slideCount-e.currentSlide:e.currentSlide;return Math.abs(n.dataset.index-o)||1}return e.slidesToScroll};t.getSlideCount=y;var k=function(e,t){return t.reduce((function(t,n){return t&&e.hasOwnProperty(n)}),!0)?null:console.error("Keys Missing:",e)};t.checkSpecKeys=k;var w=function(e){var t,n;k(e,["left","variableWidth","slideCount","slidesToShow","slideWidth"]);var r=e.slideCount+2*e.slidesToShow;e.vertical?n=r*e.slideHeight:t=E(e)*e.slideWidth;var a={opacity:1,transition:"",WebkitTransition:""};e.useTransform?a=i({},a,{WebkitTransform:e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",transform:e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",msTransform:e.vertical?"translateY("+e.left+"px)":"translateX("+e.left+"px)"}):e.vertical?a.top=e.left:a.left=e.left;return e.fade&&(a={opacity:1}),t&&(a.width=t),n&&(a.height=n),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?a.marginTop=e.left+"px":a.marginLeft=e.left+"px"),a};t.getTrackCSS=w;var v=function(e){k(e,["left","variableWidth","slideCount","slidesToShow","slideWidth","speed","cssEase"]);var t=w(e);return e.useTransform?(t.WebkitTransition="-webkit-transform "+e.speed+"ms "+e.cssEase,t.transition="transform "+e.speed+"ms "+e.cssEase):e.vertical?t.transition="top "+e.speed+"ms "+e.cssEase:t.transition="left "+e.speed+"ms "+e.cssEase,t};t.getTrackAnimateCSS=v;var M=function(e){if(e.unslick)return 0;k(e,["slideIndex","trackRef","infinite","centerMode","slideCount","slidesToShow","slidesToScroll","slideWidth","listWidth","variableWidth","slideHeight"]);var t,n,r=e.slideIndex,o=e.trackRef,i=e.infinite,s=e.centerMode,l=e.slideCount,c=e.slidesToShow,u=e.slidesToScroll,d=e.slideWidth,p=e.listWidth,m=e.variableWidth,f=e.slideHeight,h=e.fade,b=e.vertical;if(h||1===e.slideCount)return 0;var g=0;if(i?(g=-L(e),l%u!=0&&r+u>l&&(g=-(r>l?c-(r-l):l%u)),s&&(g+=parseInt(c/2))):(l%u!=0&&r+u>l&&(g=c-l%u),s&&(g=parseInt(c/2))),t=b?r*f*-1+g*f:r*d*-1+g*d,!0===m){var _,y=a.default.findDOMNode(o);if(_=r+L(e),t=(n=y&&y.childNodes[_])?-1*n.offsetLeft:0,!0===s){_=i?r+L(e):r,n=y&&y.children[_],t=0;for(var w=0;w<_;w++)t-=y&&y.children[w]&&y.children[w].offsetWidth;t-=parseInt(e.centerPadding),t+=n&&(p-n.offsetWidth)/2}}return t};t.getTrackLeft=M;var L=function(e){return e.unslick||!e.infinite?0:e.variableWidth?e.slideCount:e.slidesToShow+(e.centerMode?1:0)};t.getPreClones=L;var T=function(e){return e.unslick||!e.infinite?0:e.slideCount};t.getPostClones=T;var E=function(e){return 1===e.slideCount?1:L(e)+e.slideCount+T(e)};t.getTotalSlides=E;var S=function(e){return e.targetSlide>e.currentSlide?e.targetSlide>e.currentSlide+x(e)?"left":"right":e.targetSlide<e.currentSlide-C(e)?"right":"left"};t.siblingDirection=S;var x=function(e){var t=e.slidesToShow,n=e.centerMode,r=e.rtl,a=e.centerPadding;if(n){var o=(t-1)/2+1;return parseInt(a)>0&&(o+=1),r&&t%2==0&&(o+=1),o}return r?0:t-1};t.slidesOnRight=x;var C=function(e){var t=e.slidesToShow,n=e.centerMode,r=e.rtl,a=e.centerPadding;if(n){var o=(t-1)/2+1;return parseInt(a)>0&&(o+=1),r||t%2!=0||(o+=1),o}return r?t-1:0};t.slidesOnLeft=C;t.canUseDOM=function(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}},function(e,t,n){var r=n(32);e.exports=function(e,t,n){var a=null==e?void 0:r(e,t);return void 0===a?n:a}},function(e,t){e.exports=function(e){return void 0===e}},function(e,t,n){var r=n(20),a=n(34),o=n(123),i=n(80);e.exports=function(e,t){if(null==e)return{};var n=r(i(e),(function(e){return[e]}));return t=a(t),o(e,n,(function(e,n){return t(e,n[0])}))}},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-accordion","category":"blockspare","attributes":{"uniqueId":{"type":"string","default":""},"defaultItems":{"type":"number","default":3},"itemToggle":{"type":"boolean","default":true}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-call-to-action","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"center"},"sectionAlignment":{"type":"string","default":"center"},"showImage":{"type":"boolean","default":true},"imgURL":{"type":"string"},"imgID":{"type":"number"},"imgAlt":{"type":"string"},"opacityRatio":{"type":"number","default":75},"ctaBackGroundColor":{"type":"string","default":"#0e0e0e"},"borderRadius":{"type":"number","default":0},"headerTagOption":{"type":"string","default":"h2"},"backgroundFix":{"type":"boolean","default":false},"headertitleColor":{"type":"string","default":"#fff"},"headersubtitleColor":{"type":"string","default":"#fff"},"headermarginTop":{"type":"number","default":5},"headermarginBottom":{"type":"number","default":5}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/content-box","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"center"},"sectionAlignment":{"type":"string","default":"left"},"sectionDescription":{"type":"string","default":"Add your description here..."},"showContentImg":{"type":"boolean","default":true},"imgURL":{"type":"string","default":false},"imgID":{"type":"number"},"imgAlt":{"type":"string","source":"attribute","attribute":"alt","selector":"img"},"showButton":{"type":"boolean","default":false},"enableBackgroundColor":{"type":"boolean","default":true},"backGroundColor":{"type":"string","default":"#fff"},"borderRadius":{"type":"number","default":0},"titleColor":{"type":"string","default":"#000"},"descriptionColor":{"type":"string","default":"#6d6d6d"},"layoutOption":{"type":"boolean","default":false},"imageShape":{"type":"string","default":""},"design":{"type":"string","default":"style-1"},"headerpaddingTop":{"type":"number","default":0},"headerpaddingRight":{"type":"number","default":0},"headerpaddingBottom":{"type":"number","default":0},"headerpaddingLeft":{"type":"number","default":0},"headermarginTop":{"type":"number","default":0},"headermarginBottom":{"type":"number","default":0},"paddingTop":{"type":"number","default":0},"paddingRight":{"type":"number","default":0},"paddingBottom":{"type":"number","default":0},"paddingLeft":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-container","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"center"},"imgURL":{"type":"string"},"imgID":{"type":"number"},"imgAlt":{"type":"string"},"opacityRatio":{"type":"number","default":100},"backGroundColor":{"type":"string","default":"#fff"},"borderRadius":{"type":"number","default":0},"backgroundFix":{"type":"boolean","default":false},"separatorEnable":{"type":"boolean","default":false},"showFront":{"type":"boolean","default":false},"zindexDivider":{"type":"number","default":20},"verticalFlip":{"type":"boolean","default":true},"horizontalFlip":{"type":"boolean","default":false},"dividerPosition":{"type":"string","default":"has-separator-top"},"topDividerMargin":{"type":"number","default":0},"bottomDividerMargin":{"type":"number","default":0},"enableGap":{"type":"boolean","default":false}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-counter","category":"blockspare","attributes":{"className":{"type":"string"},"counter":{"type":"number","default":25},"counterFontColor":{"type":"string","default":"#000"},"backGroundColor":{"type":"string","default":"#fff"},"imageSize":{"type":"string","default":"full"},"showImage":{"type":"boolean","default":true},"imgIconOption":{"type":"string","default":"icon"},"name":{"type":"string","default":"fas fa-chart-line"},"iconSize":{"type":"string","default":"blockspare-icon-size-small"},"iconStyles":{"type":"string","default":"blockspare-icon-style2"},"iconBackgroundColor":{"type":"string"},"iconBorderColor":{"type":"string","default":"#000"},"iconColor":{"type":"string"},"borderRadius":{"type":"number","default":50},"design":{"type":"string","default":"blockspare-layout1"},"blockBorderRadius":{"type":"number","default":0},"headertitleColor":{"type":"string","default":"#000"},"headersubtitleColor":{"type":"string","default":"#000"},"headermarginTop":{"type":"number","default":5},"headermarginBottom":{"type":"number","default":5},"paddingTop":{"type":"number","default":20},"paddingBottom":{"type":"number","default":20},"openPopover":{"type":"boolean","default":false}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-iconset","category":"blockspare","attributes":{"align":{"type":"string","default":"center"},"sectionAlignment":{"type":"string","default":"center"},"name":{"type":"string","default":"fas fa-rocket"},"iconSize":{"type":"string","default":"blockspare-icon-size-small"},"iconStyles":{"type":"string","default":"blockspare-icon-style2"},"iconBackgroundColor":{"type":"string","default":"#8b249c"},"iconBorderColor":{"type":"string","default":"#8b249c"},"iconColor":{"type":"string","default":"#fff"},"borderRadius":{"type":"number","default":50}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-carousel","category":"blockspare","attributes":{"align":{"type":"string"},"images":{"type":"array","default":[],"selector":"img","query":{"url":{"type":"string","source":"attribute","attribute":"src"},"alt":{"type":"string","source":"attribute","attribute":"alt","default":""},"id":{"type":"string","source":"attribute","attribute":"data-id"},"width":{"type":"string","source":"attribute","attribute":"data-width"}}},"imageSize":{"type":"string","default":"thumbnail"},"showsliderNextPrev":{"type":"boolean","default":true},"showDots":{"type":"boolean","default":false},"numberofSlide":{"type":"number","default":2},"enableAutoPlay":{"type":"boolean","default":true},"carouselSpeed":{"type":"number","default":"1000"},"carouselNextIcon":{"type":"string","default":"fas fa-chevron-right"},"navigationColor":{"type":"string","default":"#fff"},"gutterSpace":{"type":"number","default":1},"colorFilter":{"type":"string","default":"blockspare-original"},"showOriginalOnHover":{"type":"boolean","default":false},"navigationSize":{"type":"string","default":"blockspare-navigation-small"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-linearprogressbar","category":"blockspare","attributes":{"uniqueId":{"type":"string","default":""},"defaultItems":{"type":"number","default":3}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-skillbar","category":"blockspare","attributes":{"className":{"type":"string"},"blockID":{"type":"string","default":""},"title":{"type":"string","default":"Enter title"},"textColor":{"type":"string","default":"#404040"},"percentageTextColor":{"type":"string","default":"#8b249c"},"textSize":{"type":"number","default":20},"percentage":{"type":"number","default":25},"sectionAlignment":{"type":"string","default":"left"},"barColor":{"type":"string","default":"#3c1a5b"},"backgroundColor":{"type":"string","default":"#f6f6f6"},"barThickness":{"type":"number","default":2}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-list","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"left"},"sectionAlignment":{"type":"string","default":"left"},"listBackGroundColor":{"type":"string"},"name":{"type":"string","default":"blockspare-list-check"},"listData":{"type":"string","source":"html","selector":"ol,ul","multiline":"li","default":"<li>Vestibulum ac diam sit amet</li>"},"listType":{"type":"string","default":"ul"},"orderListStyle":{"type":"string","default":"blockspare-style1"},"color":{"type":"string","default":"#000"},"borderRadius":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-logos","category":"blockspare","attributes":{"align":{"type":"string"},"images":{"type":"array","default":[],"selector":"img","query":{"url":{"type":"string","source":"attribute","attribute":"src"},"alt":{"type":"string","source":"attribute","attribute":"alt","default":""},"id":{"type":"string","source":"attribute","attribute":"data-id"},"width":{"type":"string","source":"attribute","attribute":"data-width"}}}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-masonry","category":"blockspare","attributes":{"gridSize":{"type":"string","default":"xlrg"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-notice-bar","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"center"},"sectionAlignment":{"type":"string","default":"left"},"textsColor":{"type":"string","default":"#4c4c4c"},"fontSize":{"type":"number","default":18},"backGroundColor":{"type":"string","default":"#fff"},"boxBorderColor":{"type":"string","default":"#cc0000"},"noticeContent":{"type":"string","default":"Add your notice here...."},"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20},"marginTop":{"type":"number","default":30},"marginBottom":{"type":"number","default":30},"enableButton":{"type":"boolean","default":false},"borderRadius":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-price-list","category":"blockspare","attributes":{"align":{"type":"string"},"sectionAlignment":{"type":"string","default":"wide"},"uniqueId":{"type":"string","default":""},"defaultItems":{"type":"number","default":3},"backgroundColor":{"type":"string","default":"#fff"},"backgroundTransparent":{"type":"boolean","default":false}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing","category":"blockspare","attributes":{"columns":{"type":"number","default":2},"columnsGap":{"type":"number","default":1},"align":{"type":"string","default":"center"},"defaultItems":{"type":"number","default":2},"marginTop":{"type":"number","default":30},"marginBottom":{"type":"number","default":30}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner","category":"blockspare","attributes":{"borderWidth":{"type":"number","default":1},"borderColor":{"type":"string","default":"#ececec"},"borderRadius":{"type":"number","default":0},"backgroundColor":{"type":"string","default":"#fff"},"alignment":{"type":"string"},"padding":{"type":"number","default":0},"sectionScale":{"type":"number","default":0},"enableBadge":{"type":"boolean","default":false},"badgeText":{"type":"string","default":"Badge Text"},"badgeStyle":{"type":"string","default":"blockspare-badge-style1"},"badgeOption":{"type":"string","default":"badge-text"},"imgURL1":{"type":"string"},"imgID1":{"type":"number"},"imgAlt1":{"type":"string"},"badgeTextColor":{"type":"string","default":"#fff"},"badgeBackGroundColor":{"type":"string","default":"#af0000"},"badgeImgSize":{"type":"number","default":100}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner-price","category":"blockspare","attributes":{"sectionAlignment":{"type":"string","default":"center"},"price":{"type":"string"},"currency":{"type":"string"},"fontSize":{"type":"string"},"customFontSize":{"type":"number","default":32},"textColor":{"type":"string","default":"#af0000"},"customTextColor":{"type":"string","default":"#af0000"},"backgroundColor":{"type":"string"},"customBackgroundColor":{"type":"string"},"term":{"type":"string"},"showTerm":{"type":"boolean","default":true},"showCurrency":{"type":"boolean","default":true},"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner-description","category":"blockspare","attributes":{"features":{"type":"string","source":"html","selector":"ol,ul","multiline":"li"},"sectionAlignment":{"type":"string","default":"center"},"fontSize":{"type":"string"},"customFontSize":{"type":"number"},"textColor":{"type":"string"},"customTextColor":{"type":"string","default":"#6d6d6d"},"backgroundColor":{"type":"string"},"customBackgroundColor":{"type":"string"},"borderStyle":{"type":"string","default":"blockspare-list-border-none"},"borderColor":{"type":"string"},"borderWidth":{"type":"number","default":1},"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20},"name":{"type":"string","default":"blockspare-list-check"},"listType":{"type":"string","default":"ul"},"orderListStyle":{"type":"string","default":"blockspare-style1"},"color":{"type":"string","default":"#6d6d6d"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner-button","category":"blockspare","attributes":{"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-social-links","category":"blockspare","attributes":{"sectionAlignment":{"type":"string","default":"center"},"facebookTitle":{"type":"string","default":"Facebook"},"facebookUrl":{"type":"url","default":"https://facebook.com"},"twitterTitle":{"type":"string","default":"Twitter"},"twitterUrl":{"type":"url","default":"https://twitter.com"},"instagramTitle":{"type":"string","default":"Instagram"},"instagramUrl":{"type":"url","default":"https://instagram.com"},"youtubeTitle":{"type":"string","default":"YouTube"},"youtubeUrl":{"type":"url","default":""},"linkedinTitle":{"type":"string","default":"LinkedIn"},"linkedinUrl":{"type":"url"},"pinterestTitle":{"type":"string","default":"Pinterest"},"pinterestUrl":{"type":"url"},"tumblrTitle":{"type":"string","default":"Tumblr"},"tumblrUrl":{"type":"url"},"telegramTitle":{"type":"string","default":"Telegram"},"telegramUrl":{"type":"url"},"redditTitle":{"type":"string","default":"Reddit"},"redditUrl":{"type":"url"},"flickrTitle":{"type":"string","default":"Flickr"},"flickrUrl":{"type":"url"},"dribbbleTitle":{"type":"string","default":"Dribbble"},"dribbbleUrl":{"type":"url"},"vkTitle":{"type":"string","default":"VK"},"vkUrl":{"type":"url"},"yelpTitle":{"type":"string","default":"Yelp"},"yelpUrl":{"type":"url"},"quoraTitle":{"type":"string","default":"Quora"},"quoraUrl":{"type":"url"},"meetupTitle":{"type":"string","default":"Meetup"},"meetupUrl":{"type":"url"},"githubTitle":{"type":"url","default":"Git hub"},"githubUrl":{"type":"url"},"buttonOptions":{"type":"string","default":"blockspare-icon-only"},"buttonFills":{"type":"string","default":"blockspare-social-icon-solid"},"iconColorOption":{"type":"string","default":"blockspare-default-official-color"},"customfontColorOption":{"type":"string","default":"#fff"},"custombackgroundColorOption":{"type":"string","default":"#404040"},"buttonShapes":{"type":"string","default":"blockspare-social-icon-square"},"buttonSizes":{"type":"string","default":"blockspare-social-icon-small"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-services","category":"blockspare","attributes":{"serviceItems":{"type":"number","default":2},"columns":{"type":"number","default":2},"columnsGap":{"type":"number","default":1},"align":{"type":"string"},"defaultItems":{"type":"number","default":2},"sectionAlignment":{"type":"string","default":"center"},"marginTop":{"type":"number","default":30},"marginBottom":{"type":"number","default":30}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-services-inner-description","category":"blockspare","attributes":{"features":{"type":"string","source":"html","selector":"p"},"fontSize":{"type":"string"},"customFontSize":{"type":"number"},"textColor":{"type":"string","default":"#6d6d6d"},"customTextColor":{"type":"string","default":"#6d6d6d"},"backgroundColor":{"type":"string"},"customBackgroundColor":{"type":"string"},"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-service-inner-button","category":"blockspare","attributes":{"paddingTop":{"type":"number","default":10},"paddingBottom":{"type":"number","default":10}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-star-ratings","category":"blockspare","attributes":{"className":{"type":"string"},"starAlign":{"type":"string","default":"center"},"blockID":{"type":"string","default":""},"starCount":{"type":"number","default":5},"starSize":{"type":"number","default":20},"starColor":{"type":"string","default":"#fbd012"},"selectedStars":{"type":"number","default":5},"emptyStarColor":{"type":"string","default":"#d5d3d3"},"backgroundColor":{"type":"string","default":"transparent"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-tabs","category":"blockspare","attributes":{"className":{"type":"string"},"tabs":{"type":"number","default":3},"tabTitles":{"type":"array","default":[{"title":"Tab 1"},{"title":"Tab 2"},{"title":"Tab 3"}]},"tabStyle":{"type":"string","default":"blockspare-horizontal"},"tabLayout":{"type":"string","default":"blockspare-layout1"},"tabBackGroundColor":{"type":"string","default":"#3c1a5b"},"activeTabBackgroundColor":{"type":"string","default":"#8b249c"},"tabTextColor":{"type":"string","default":"#fff"},"activetabTextColor":{"type":"string","default":"#fff"},"tabAlignment":{"type":"string","default":"blockspare-left"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-testimonial","category":"blockspare","attributes":{"serviceItems":{"type":"number","default":2},"columns":{"type":"number","default":2},"columnsGap":{"type":"number","default":1},"align":{"type":"string","default":"center"},"defaultItems":{"type":"number","default":2}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/user-profile","category":"blockspare","attributes":{"profileContent":{"type":"string","default":"Add your content..."},"profileContentFontSize":{"type":"number","default":18},"sectionAlignment":{"type":"string","default":"left"},"profileBackgroundColor":{"type":"string","default":"#fff"},"profileTextColor":{"type":"string","default":"#6d6d6d"},"facebook":{"type":"url","default":"facebook.com"},"twitter":{"type":"url","default":"twitter.com"},"instagram":{"type":"url"},"linkedin":{"type":"url","default":"linkedin.com"},"youtube":{"type":"url"},"paddingTop":{"type":"number","default":0},"paddingRight":{"type":"number","default":0},"paddingBottom":{"type":"number","default":0},"paddingLeft":{"type":"number","default":0},"marginTop":{"type":"number","default":0},"marginBottom":{"type":"number","default":0},"iconColorOption":{"type":"string","default":"blockspare-default-official-color"},"customfontColorOption":{"type":"string","default":"#fff"},"custombackgroundColorOption":{"type":"string","default":"#404040"},"buttonShapes":{"type":"string","default":"blockspare-social-icon-square"},"buttonSizes":{"type":"string","default":"blockspare-social-icon-small"},"buttonFills":{"type":"string","default":"blockspare-social-icon-solid"},"headerpaddingTop":{"type":"number","default":0},"headerpaddingRight":{"type":"number","default":0},"headerpaddingBottom":{"type":"number","default":0},"headerpaddingLeft":{"type":"number","default":0},"headermarginTop":{"type":"number","default":0},"headermarginBottom":{"type":"number","default":0},"borderRadius":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/shape-divider","category":"blockspare","attributes":{"align":{"type":"string","default":"full"},"design":{"type":"string","default":"double-wave"},"layer1Shadow":{"type":"boolean","default":false},"width":{"type":"number","default":1},"height":{"type":"number","default":150},"verticalFlip":{"type":"boolean","default":false},"horizontalFlip":{"type":"boolean","default":false},"color":{"type":"string","default":"#3c1a5b"},"marginTop":{"type":"number","default":30},"marginBottom":{"type":"number","default":30}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-empty-section","category":"blockspare","attributes":{"className":{"type":"string"},"height":{"type":"number","default":10},"backGroundColor":{"type":"string","default":"#fff"}}}')},function(e,t,n){var r=n(21),a=n(269),o=n(270),i=n(271),s=n(272),l=n(273);function c(e){var t=this.__data__=new r(e);this.size=t.size}c.prototype.clear=a,c.prototype.delete=o,c.prototype.get=i,c.prototype.has=s,c.prototype.set=l,e.exports=c},function(e,t,n){var r=n(9)(n(4),"Map");e.exports=r},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var r=n(280),a=n(287),o=n(289),i=n(290),s=n(291);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=a,l.prototype.get=o,l.prototype.has=i,l.prototype.set=s,e.exports=l},function(e,t,n){var r=n(294),a=n(7),o=Object.prototype,i=o.hasOwnProperty,s=o.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return a(e)&&i.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},function(e,t,n){(function(e){var r=n(4),a=n(295),o=t&&!t.nodeType&&t,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,s=i&&i.exports===o?r.Buffer:void 0,l=(s?s.isBuffer:void 0)||a;e.exports=l}).call(this,n(27)(e))},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,n){(function(e){var r=n(96),a=t&&!t.nodeType&&t,o=a&&"object"==typeof e&&e&&!e.nodeType&&e,i=o&&o.exports===a&&r.process,s=function(){try{var e=o&&o.require&&o.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=s}).call(this,n(27)(e))},function(e,t,n){var r=n(105),a=n(106),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return o.call(e,t)})))}:a;e.exports=s},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e}},function(e,t,n){var r=n(103)(Object.getPrototypeOf,Object);e.exports=r},function(e,t,n){var r=n(109),a=n(107),o=n(104);e.exports=function(e){return r(e,o,a)}},function(e,t,n){var r=n(110);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},function(e,t,n){var r=n(3),a=n(31),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!a(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},function(e,t,n){"use strict"; |
| 31 |
/* |
| 32 |
object-assign |
| 33 |
(c) Sindre Sorhus |
| 34 |
@license MIT |
| 35 |
*/var r=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=i(e),c=1;c<arguments.length;c++){for(var u in n=Object(arguments[c]))a.call(n,u)&&(l[u]=n[u]);if(r){s=r(n);for(var d=0;d<s.length;d++)o.call(n,s[d])&&(l[s[d]]=n[s[d]])}}return l}},function(e,t,n){var r,a;"undefined"!=typeof window&&window,void 0===(a="function"==typeof(r=function(){"use strict";function e(){}var t=e.prototype;return t.on=function(e,t){if(e&&t){var n=this._events=this._events||{},r=n[e]=n[e]||[];return-1==r.indexOf(t)&&r.push(t),this}},t.once=function(e,t){if(e&&t){this.on(e,t);var n=this._onceEvents=this._onceEvents||{};return(n[e]=n[e]||{})[t]=!0,this}},t.off=function(e,t){var n=this._events&&this._events[e];if(n&&n.length){var r=n.indexOf(t);return-1!=r&&n.splice(r,1),this}},t.emitEvent=function(e,t){var n=this._events&&this._events[e];if(n&&n.length){n=n.slice(0),t=t||[];for(var r=this._onceEvents&&this._onceEvents[e],a=0;a<n.length;a++){var o=n[a];r&&r[o]&&(this.off(e,o),delete r[o]),o.apply(this,t)}return this}},t.allOff=function(){delete this._events,delete this._onceEvents},e})?r.call(t,n,t,e):r)||(e.exports=a)},function(e,t,n){var r,a; |
| 36 |
/*! |
| 37 |
* getSize v2.0.3 |
| 38 |
* measure size of elements |
| 39 |
* MIT license |
| 40 |
*/window,void 0===(a="function"==typeof(r=function(){"use strict";function e(e){var t=parseFloat(e);return-1==e.indexOf("%")&&!isNaN(t)&&t}var t="undefined"==typeof console?function(){}:function(e){console.error(e)},n=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],r=n.length;function a(e){var n=getComputedStyle(e);return n||t("Style returned "+n+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),n}var o,i=!1;function s(t){if(function(){if(!i){i=!0;var t=document.createElement("div");t.style.width="200px",t.style.padding="1px 2px 3px 4px",t.style.borderStyle="solid",t.style.borderWidth="1px 2px 3px 4px",t.style.boxSizing="border-box";var n=document.body||document.documentElement;n.appendChild(t);var r=a(t);o=200==Math.round(e(r.width)),s.isBoxSizeOuter=o,n.removeChild(t)}}(),"string"==typeof t&&(t=document.querySelector(t)),t&&"object"==typeof t&&t.nodeType){var l=a(t);if("none"==l.display)return function(){for(var e={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},t=0;t<r;t++)e[n[t]]=0;return e}();var c={};c.width=t.offsetWidth,c.height=t.offsetHeight;for(var u=c.isBorderBox="border-box"==l.boxSizing,d=0;d<r;d++){var p=n[d],m=l[p],f=parseFloat(m);c[p]=isNaN(f)?0:f}var h=c.paddingLeft+c.paddingRight,b=c.paddingTop+c.paddingBottom,g=c.marginLeft+c.marginRight,_=c.marginTop+c.marginBottom,y=c.borderLeftWidth+c.borderRightWidth,k=c.borderTopWidth+c.borderBottomWidth,w=u&&o,v=e(l.width);!1!==v&&(c.width=v+(w?0:h+y));var M=e(l.height);return!1!==M&&(c.height=M+(w?0:b+k)),c.innerWidth=c.width-(h+y),c.innerHeight=c.height-(b+k),c.outerWidth=c.width+g,c.outerHeight=c.height+_,c}}return s})?r.call(t,n,t,e):r)||(e.exports=a)},function(e){e.exports=JSON.parse('{"category":"blockspare","attributes":{"uniqueId":{"type":"string","default":""},"itemNumber":{"type":"number"},"heading":{"type":"string","default":"Accordion Item"},"active":{"type":"boolean","default":false},"defaultText":{"type":"string","default":""},"fillType":{"type":"string","default":"fill"},"openFirstItem":{"type":"boolean","default":true},"name":{"type":"string","default":"fa fa-plus"},"iconPosition":{"type":"string","default":"blockspare-right"},"panelColor":{"type":"string","default":"#3c1a5b"},"panelActiveColor":{"type":"string","default":"#8b249c"},"textColor":{"type":"string","default":"#fff"},"marginBottom":{"type":"number","default":"10"},"activeTextColor":{"type":"string","default":"#fff"},"panelBackGroundColor":{"type":"string","default":"#fff"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-buttons","category":"blockspare"}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-price-list-item","category":"blockspare","attributes":{"className":{"type":"string"},"sectionAlignment":{"type":"string","default":"left"},"priceTitle":{"type":"string","default":"Enter Title"},"priceDescription":{"type":"string","default":"Add you item description..."},"priceUnit":{"type":"string","default":"$"},"price":{"type":"string","default":"100"},"ImgURL":{"type":"string"},"ImgAlt":{"type":"string","source":"attribute","selector":"figure img","attribute":"alt","default":""},"ImgID":{"type":"number"},"layoutOptions":{"type":"string","default":"blockspare-layout1"},"imageOption":{"type":"string","default":"blockspare-img-square"},"priceUnitPosition":{"type":"string","default":"blockspare-before-price"},"showDots":{"type":"boolean","default":true},"priceTitleColor":{"type":"string","default":"#404040"},"priceColor":{"type":"string","default":"#af0000"},"priceUnitColor":{"type":"string","default":"#af0000"},"priceDescriptionColor":{"type":"string","default":"#6d6d6d"},"backgroundColor":{"type":"string","default":"#fff"},"showImage":{"type":"boolean","default":true},"imgIconOption":{"type":"string","default":"image"},"name":{"type":"string","default":"fas fa-rocket"},"iconSize":{"type":"string","default":"blockspare-icon-size-small"},"iconStyles":{"type":"string","default":"blockspare-icon-style2"},"iconBackgroundColor":{"type":"string","default":"#8b249c"},"iconBorderColor":{"type":"string","default":"#8b249c"},"iconColor":{"type":"string","default":"#fff"},"borderRadius":{"type":"number","default":50},"blockBorderRadius":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner-title","category":"blockspare"}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-section-header","category":"blockspare"}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-services-inner","category":"blockspare","attributes":{"borderWidth":{"type":"number","default":1},"borderColor":{"type":"string","default":"#ececec"},"borderRadius":{"type":"number","default":0},"backgroundColor":{"type":"string","default":"#fff"},"alignment":{"type":"string"},"padding":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-services-inner-title","category":"blockspare"}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-tab","category":"blockspare","attributes":{"uniqueId":{"type":"string","default":""},"id":{"type":"number","default":1},"customClassName":{"type":"string","default":""}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-testimonial-item","category":"blockspare","attributes":{"className":{"type":"string"},"testimonialDescription":{"type":"string","default":"Donec odit magni, nesciunt pariatur! Nec, purus voluptate ridiculus odit nobis euismod, ac laudantium facere perferendis! "},"testimonialDescriptionTextSize":{"type":"number","default":18},"testimonialDescriptionTextColor":{"type":"string","default":"#6d6d6d"},"blockID":{"type":"string","default":""},"starCount":{"type":"number","default":5},"starSize":{"type":"number","default":20},"starColor":{"type":"string","default":"#fbd012"},"selectedStars":{"type":"number","default":3},"emptyStarColor":{"type":"string","default":"#d5d3d3"},"enableRatings":{"type":"boolean","default":false},"backGroundColor":{"type":"string","default":"#fff"},"headermarginTop":{"type":"number","default":5},"headermarginBottom":{"type":"number","default":5},"borderRadius":{"type":"number","default":0}}}')},function(e,t,n){var r=n(10),a=n(5);e.exports=function(e){if(!a(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(70))},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t,n){var r=n(99);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},function(e,t,n){var r=n(9),a=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=a},function(e,t,n){var r=n(101),a=n(72),o=n(3),i=n(73),s=n(28),l=n(102),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),u=!n&&a(e),d=!n&&!u&&i(e),p=!n&&!u&&!d&&l(e),m=n||u||d||p,f=m?r(e.length,String):[],h=f.length;for(var b in e)!t&&!c.call(e,b)||m&&("length"==b||d&&("offset"==b||"parent"==b)||p&&("buffer"==b||"byteLength"==b||"byteOffset"==b)||s(b,h))||f.push(b);return f}},function(e,t){e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},function(e,t,n){var r=n(296),a=n(75),o=n(76),i=o&&o.isTypedArray,s=i?a(i):r;e.exports=s},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){var r=n(100),a=n(300),o=n(14);e.exports=function(e){return o(e)?r(e,!0):a(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=0,o=[];++n<r;){var i=e[n];t(i,n,e)&&(o[a++]=i)}return o}},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(78),a=n(79),o=n(77),i=n(106),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=a(e);return t}:i;e.exports=s},function(e,t,n){var r=n(109),a=n(77),o=n(13);e.exports=function(e){return r(e,o,a)}},function(e,t,n){var r=n(78),a=n(3);e.exports=function(e,t,n){var o=t(e);return a(e)?o:r(o,n(e))}},function(e,t,n){var r=n(4).Uint8Array;e.exports=r},function(e,t,n){var r=n(333),a=n(112),o=n(113);e.exports=function(e){return o(a(e,void 0,r),e+"")}},function(e,t,n){var r=n(336),a=Math.max;e.exports=function(e,t,n){return t=a(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,s=a(o.length-t,0),l=Array(s);++i<s;)l[i]=o[t+i];i=-1;for(var c=Array(t+1);++i<t;)c[i]=o[i];return c[t]=n(l),r(e,this,c)}}},function(e,t,n){var r=n(337),a=n(339)(r);e.exports=a},function(e,t,n){e.exports=n(341)()},function(e,t,n){var r=n(346),a=n(349)(r);e.exports=a},function(e,t,n){var r=n(352),a=n(7);e.exports=function e(t,n,o,i,s){return t===n||(null==t||null==n||!a(t)&&!a(n)?t!=t&&n!=n:r(t,n,o,i,e,s))}},function(e,t,n){var r=n(353),a=n(356),o=n(357);e.exports=function(e,t,n,i,s,l){var c=1&n,u=e.length,d=t.length;if(u!=d&&!(c&&d>u))return!1;var p=l.get(e);if(p&&l.get(t))return p==t;var m=-1,f=!0,h=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++m<u;){var b=e[m],g=t[m];if(i)var _=c?i(g,b,m,t,e,l):i(b,g,m,e,t,l);if(void 0!==_){if(_)continue;f=!1;break}if(h){if(!a(t,(function(e,t){if(!o(h,t)&&(b===e||s(b,e,n,i,l)))return h.push(t)}))){f=!1;break}}else if(b!==g&&!s(b,g,n,i,l)){f=!1;break}}return l.delete(e),l.delete(t),f}},function(e,t,n){var r=n(5);e.exports=function(e){return e==e&&!r(e)}},function(e,t){e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},function(e,t,n){var r=n(364),a=n(365);e.exports=function(e,t){return null!=e&&a(e,t,r)}},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}}(),e.exports=n(372)},function(e,t){e.exports={isFunction:function(e){return"function"==typeof e},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},each:function(e,t){for(var n=0,r=e.length;n<r&&!1!==t(e[n],n);n++);}}},function(e,t,n){var r=n(32),a=n(389),o=n(15);e.exports=function(e,t,n){for(var i=-1,s=t.length,l={};++i<s;){var c=t[i],u=r(e,c);n(u,c)&&a(l,o(c,e),u)}return l}},function(e,t,n){var r=n(391);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},function(e,t,n){var r=n(5),a=n(31),o=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(a(e))return NaN;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var n=s.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):i.test(e)?NaN:+e}},function(e,t,n){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},r=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},a={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(t,n,o,i){var s=r(t),l=a[e][r(t)];return 2===s&&(l=l[n?0:1]),l.replace(/%d/i,t)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},a=function(e){return function(t,a,o,i){var s=n(t),l=r[e][n(t)];return 2===s&&(l=l[a?0:1]),l.replace(/%d/i,t)}},o=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:o,monthsShort:o,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r,a;return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(r=+e,a={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),r%10==1&&r%100!=11?a[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?a[1]:a[2])}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(function e(t){return t>9?e(t%10):t}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),r=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],a=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function o(e){return e>1&&e<5&&1!=~~(e/10)}function i(e,t,n,r){var a=e+" ";switch(n){case"s":return t||r?"pár sekund":"pár sekundami";case"ss":return t||r?a+(o(e)?"sekundy":"sekund"):a+"sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?a+(o(e)?"minuty":"minut"):a+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?a+(o(e)?"hodiny":"hodin"):a+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?a+(o(e)?"dny":"dní"):a+"dny";case"M":return t||r?"měsíc":"měsícem";case"MM":return t||r?a+(o(e)?"měsíce":"měsíců"):a+"měsíci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?a+(o(e)?"roky":"let"):a+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:a,monthsShortRegex:a,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var a={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?a[n][0]:a[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var a={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?a[n][0]:a[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var a={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?a[n][0]:a[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,r=this._calendarEl[e],a=t&&t.hours();return((n=r)instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(r=r.apply(t)),r.replace("{}",a%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],a=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:a,monthsShortRegex:a,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],a=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:a,monthsShortRegex:a,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],a=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:a,monthsShortRegex:a,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var a={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?a[n][2]?a[n][2]:a[n][1]:r?a[n][0]:a[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function r(e,r,a,o){var i="";switch(a){case"s":return o?"muutaman sekunnin":"muutama sekunti";case"ss":return o?"sekunnin":"sekuntia";case"m":return o?"minuutin":"minuutti";case"mm":i=o?"minuutin":"minuuttia";break;case"h":return o?"tunnin":"tunti";case"hh":i=o?"tunnin":"tuntia";break;case"d":return o?"päivän":"päivä";case"dd":i=o?"päivän":"päivää";break;case"M":return o?"kuukauden":"kuukausi";case"MM":i=o?"kuukauden":"kuukautta";break;case"y":return o?"vuoden":"vuosi";case"yy":i=o?"vuoden":"vuotta"}return i=function(e,r){return e<10?r?n[e]:t[e]:e}(e,o)+" "+i}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var a={s:["thodde secondanim","thodde second"],ss:[e+" secondanim",e+" second"],m:["eka mintan","ek minute"],mm:[e+" mintanim",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voranim",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disanim",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineanim",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsanim",e+" vorsam"]};return t?a[n][0]:a[n][1]}e.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokalli"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,r){var a=e;switch(n){case"s":return r||t?"néhány másodperc":"néhány másodperce";case"ss":return a+(r||t)?" másodperc":" másodperce";case"m":return"egy"+(r||t?" perc":" perce");case"mm":return a+(r||t?" perc":" perce");case"h":return"egy"+(r||t?" óra":" órája");case"hh":return a+(r||t?" óra":" órája");case"d":return"egy"+(r||t?" nap":" napja");case"dd":return a+(r||t?" nap":" napja");case"M":return"egy"+(r||t?" hónap":" hónapja");case"MM":return a+(r||t?" hónap":" hónapja");case"y":return"egy"+(r||t?" év":" éve");case"yy":return a+(r||t?" év":" éve")}return""}function r(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return r.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return r.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,r,a){var o=e+" ";switch(r){case"s":return n||a?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?o+(n||a?"sekúndur":"sekúndum"):o+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?o+(n||a?"mínútur":"mínútum"):n?o+"mínúta":o+"mínútu";case"hh":return t(e)?o+(n||a?"klukkustundir":"klukkustundum"):o+"klukkustund";case"d":return n?"dagur":a?"dag":"degi";case"dd":return t(e)?n?o+"dagar":o+(a?"daga":"dögum"):n?o+"dagur":o+(a?"dag":"degi");case"M":return n?"mánuður":a?"mánuð":"mánuði";case"MM":return t(e)?n?o+"mánuðir":o+(a?"mánuði":"mánuðum"):n?o+"mánuður":o+(a?"mánuð":"mánuði");case"y":return n||a?"ár":"ári";case"yy":return t(e)?o+(n||a?"ár":"árum"):o+(n||a?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()<e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},r=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:r,monthsShort:r,weekdays:"یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه".split("_"),weekdaysShort:"یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره|بهیانی/,isPM:function(e){return/ئێواره/.test(e)},meridiem:function(e,t,n){return e<12?"بهیانی":"ئێواره"},calendar:{sameDay:"[ئهمرۆ كاتژمێر] LT",nextDay:"[بهیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له %s",past:"%s",s:"چهند چركهیهك",ss:"چركه %d",m:"یهك خولهك",mm:"%d خولهك",h:"یهك كاتژمێر",hh:"%d كاتژمێر",d:"یهك ڕۆژ",dd:"%d ڕۆژ",M:"یهك مانگ",MM:"%d مانگ",y:"یهك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var a={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?a[n][0]:a[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,r){return t?a(n)[0]:r?a(n)[1]:a(n)[2]}function r(e){return e%10==0||e>10&&e<20}function a(e){return t[e].split("_")}function o(e,t,o,i){var s=e+" ";return 1===e?s+n(0,t,o[0],i):t?s+(r(e)?a(o)[1]:a(o)[0]):i?s+a(o)[1]:s+(r(e)?a(o)[1]:a(o)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,r){return t?"kelios sekundės":r?"kelių sekundžių":"kelias sekundes"},ss:o,m:n,mm:o,h:n,hh:o,d:n,dd:o,M:n,MM:o,y:n,yy:o},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function r(e,r,a){return e+" "+n(t[a],e,r)}function a(e,r,a){return n(t[a],e,r)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:r,m:a,mm:r,h:a,hh:r,d:a,dd:r,M:a,MM:r,y:a,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var a=t.words[r];return 1===r.length?n?a[0]:a[1]:e+" "+t.correctGrammaticalCase(e,a)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function r(e,t,n,r){var a="";if(t)switch(n){case"s":a="काही सेकंद";break;case"ss":a="%d सेकंद";break;case"m":a="एक मिनिट";break;case"mm":a="%d मिनिटे";break;case"h":a="एक तास";break;case"hh":a="%d तास";break;case"d":a="एक दिवस";break;case"dd":a="%d दिवस";break;case"M":a="एक महिना";break;case"MM":a="%d महिने";break;case"y":a="एक वर्ष";break;case"yy":a="%d वर्षे"}else switch(n){case"s":a="काही सेकंदां";break;case"ss":a="%d सेकंदां";break;case"m":a="एका मिनिटा";break;case"mm":a="%d मिनिटां";break;case"h":a="एका तासा";break;case"hh":a="%d तासां";break;case"d":a="एका दिवसा";break;case"dd":a="%d दिवसां";break;case"M":a="एका महिन्या";break;case"MM":a="%d महिन्यां";break;case"y":a="एका वर्षा";break;case"yy":a="%d वर्षां"}return a.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात्री"===t?e<4?e:e+12:"सकाळी"===t?e:"दुपारी"===t?e>=10?e:e+12:"सायंकाळी"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात्री":e<10?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),r=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],a=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:a,monthsShortRegex:a,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),r=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],a=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:a,monthsShortRegex:a,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function a(e,t,n){var a=e+" ";switch(n){case"ss":return a+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return a+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return a+(r(e)?"godziny":"godzin");case"MM":return a+(r(e)?"miesiące":"miesięcy");case"yy":return a+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,r){return e?""===r?"("+n[e.month()]+"|"+t[e.month()]+")":/D MMMM/.test(r)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:a,m:a,mm:a,h:a,hh:a,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:a,y:"rok",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r=" ";return(e%100>=20||e>=100&&e%100==0)&&(r=" de "),e+r+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r,a;return"m"===n?t?"минута":"минуту":e+" "+(r=+e,a={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),r%10==1&&r%100!=11?a[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?a[1]:a[2])}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function r(e){return e>1&&e<5}function a(e,t,n,a){var o=e+" ";switch(n){case"s":return t||a?"pár sekúnd":"pár sekundami";case"ss":return t||a?o+(r(e)?"sekundy":"sekúnd"):o+"sekundami";case"m":return t?"minúta":a?"minútu":"minútou";case"mm":return t||a?o+(r(e)?"minúty":"minút"):o+"minútami";case"h":return t?"hodina":a?"hodinu":"hodinou";case"hh":return t||a?o+(r(e)?"hodiny":"hodín"):o+"hodinami";case"d":return t||a?"deň":"dňom";case"dd":return t||a?o+(r(e)?"dni":"dní"):o+"dňami";case"M":return t||a?"mesiac":"mesiacom";case"MM":return t||a?o+(r(e)?"mesiace":"mesiacov"):o+"mesiacmi";case"y":return t||a?"rok":"rokom";case"yy":return t||a?o+(r(e)?"roky":"rokov"):o+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var a=e+" ";switch(n){case"s":return t||r?"nekaj sekund":"nekaj sekundami";case"ss":return a+=1===e?t?"sekundo":"sekundi":2===e?t||r?"sekundi":"sekundah":e<5?t||r?"sekunde":"sekundah":"sekund";case"m":return t?"ena minuta":"eno minuto";case"mm":return a+=1===e?t?"minuta":"minuto":2===e?t||r?"minuti":"minutama":e<5?t||r?"minute":"minutami":t||r?"minut":"minutami";case"h":return t?"ena ura":"eno uro";case"hh":return a+=1===e?t?"ura":"uro":2===e?t||r?"uri":"urama":e<5?t||r?"ure":"urami":t||r?"ur":"urami";case"d":return t||r?"en dan":"enim dnem";case"dd":return a+=1===e?t||r?"dan":"dnem":2===e?t||r?"dni":"dnevoma":t||r?"dni":"dnevi";case"M":return t||r?"en mesec":"enim mesecem";case"MM":return a+=1===e?t||r?"mesec":"mesecem":2===e?t||r?"meseca":"mesecema":e<5?t||r?"mesece":"meseci":t||r?"mesecev":"meseci";case"y":return t||r?"eno leto":"enim letom";case"yy":return a+=1===e?t||r?"leto":"letom":2===e?t||r?"leti":"letoma":e<5?t||r?"leta":"leti":t||r?"let":"leti"}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var a=t.words[r];return 1===r.length?n?a[0]:a[1]:e+" "+t.correctGrammaticalCase(e,a)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var a=t.words[r];return 1===r.length?n?a[0]:a[1]:e+" "+t.correctGrammaticalCase(e,a)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"e":1===t||2===t?"a":"e")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,r,a){var o=function(e){var n=Math.floor(e%1e3/100),r=Math.floor(e%100/10),a=e%10,o="";return n>0&&(o+=t[n]+"vatlh"),r>0&&(o+=(""!==o?" ":"")+t[r]+"maH"),a>0&&(o+=(""!==o?" ":"")+t[a]),""===o?"pagh":o}(e);switch(r){case"ss":return o+" lup";case"mm":return o+" tup";case"hh":return o+" rep";case"dd":return o+" jaj";case"MM":return o+" jar";case"yy":return o+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var r=e%10;return e+(t[r]||t[e%100-r]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var a={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return r||t?a[n][0]:a[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var r=100*e+t;return r<600?"يېرىم كېچە":r<900?"سەھەر":r<1130?"چۈشتىن بۇرۇن":r<1230?"چۈش":r<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r,a;return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(r=+e,a={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),r%10==1&&r%100!=11?a[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?a[1]:a[2])}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(1))},function(e,t,n){"use strict";(e.exports={}).forEach=function(e,t){for(var n=0;n<e.length;n++){var r=t(e[n]);if(r)return r}}},function(e,t,n){"use strict";var r=e.exports={};r.isIE=function(e){return(-1!==(t=navigator.userAgent.toLowerCase()).indexOf("msie")||-1!==t.indexOf("trident")||-1!==t.indexOf(" edge/"))&&(!e||e===function(){var e=3,t=document.createElement("div"),n=t.getElementsByTagName("i");do{t.innerHTML="\x3c!--[if gt IE "+ ++e+"]><i></i><![endif]--\x3e"}while(n[0]);return e>4?e:void 0}());var t},r.isLegacyOpera=function(){return!!window.opera}},function(e,t,n){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(114)),o=n(2),i=r(o),s=r(n(343)),l=r(n(344));function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e,t){return(f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function b(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?h(e):t}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e))&&"[object Arguments]"!==Object.prototype.toString.call(e))return;var n=[],r=!0,a=!1,o=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw o}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var _=function(e,t){var n=t.decimal,r=t.decimals,a=t.duration,o=t.easingFn,i=t.end,s=t.formattingFn,c=t.prefix,u=t.separator,d=t.start,p=t.suffix,m=t.useEasing;return new l(e,d,i,r,a,{decimal:n,easingFn:o,formattingFn:s,separator:u,prefix:c,suffix:p,useEasing:m,useGrouping:!!u})},y=function(e){function t(){var e,n;c(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return d(h(n=b(this,(e=m(t)).call.apply(e,[this].concat(a)))),"createInstance",(function(){return"function"==typeof n.props.children&&s(n.containerRef.current&&(n.containerRef.current instanceof HTMLElement||n.containerRef.current instanceof SVGTextElement||n.containerRef.current instanceof SVGTSpanElement),'Couldn\'t find attached element to hook the CountUp instance into! Try to attach "containerRef" from the render prop to a an HTMLElement, eg. <span ref={containerRef} />.'),_(n.containerRef.current,n.props)})),d(h(n),"pauseResume",(function(){var e=h(n),t=e.reset,r=e.restart,a=e.update,o=n.props.onPauseResume;n.instance.pauseResume(),o({reset:t,start:r,update:a})})),d(h(n),"reset",(function(){var e=h(n),t=e.pauseResume,r=e.restart,a=e.update,o=n.props.onReset;n.instance.reset(),o({pauseResume:t,start:r,update:a})})),d(h(n),"restart",(function(){n.reset(),n.start()})),d(h(n),"start",(function(){var e=h(n),t=e.pauseResume,r=e.reset,a=e.restart,o=e.update,i=n.props,s=i.delay,l=i.onEnd,c=i.onStart,u=function(){return n.instance.start((function(){return l({pauseResume:t,reset:r,start:a,update:o})}))};s>0?n.timeoutId=setTimeout(u,1e3*s):u(),c({pauseResume:t,reset:r,update:o})})),d(h(n),"update",(function(e){var t=h(n),r=t.pauseResume,a=t.reset,o=t.restart,i=n.props.onUpdate;n.instance.update(e),i({pauseResume:r,reset:a,start:o})})),d(h(n),"containerRef",i.createRef()),n}var n,r,a;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){var e=this.props,t=e.children,n=e.delay;this.instance=this.createInstance(),"function"==typeof t&&0!==n||this.start()}},{key:"shouldComponentUpdate",value:function(e){var t=this.props,n=t.end,r=t.start,a=t.suffix,o=t.prefix,i=t.redraw,s=t.duration,l=t.separator,c=t.decimals,u=t.decimal;return s!==e.duration||n!==e.end||r!==e.start||a!==e.suffix||o!==e.prefix||l!==e.separator||c!==e.decimals||u!==e.decimal||i}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.end,r=t.start,a=t.suffix,o=t.prefix,i=t.duration,s=t.separator,l=t.decimals,c=t.decimal,u=t.preserveValue;i===e.duration&&r===e.start&&a===e.suffix&&o===e.prefix&&s===e.separator&&l===e.decimals&&c===e.decimal||(this.instance.reset(),this.instance=this.createInstance(),this.start()),n!==e.end&&(u||this.instance.reset(),this.instance.update(n))}},{key:"componentWillUnmount",value:function(){this.timeoutId&&clearTimeout(this.timeoutId),this.instance.reset()}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.className,r=e.style,a=this.containerRef,o=this.pauseResume,s=this.reset,l=this.restart,c=this.update;return"function"==typeof t?t({countUpRef:a,pauseResume:o,reset:s,start:l,update:c}):i.createElement("span",{className:n,ref:a,style:r})}}])&&u(n.prototype,r),a&&u(n,a),t}(o.Component);d(y,"propTypes",{decimal:a.string,decimals:a.number,delay:a.number,easingFn:a.func,end:a.number.isRequired,formattingFn:a.func,onEnd:a.func,onStart:a.func,prefix:a.string,redraw:a.bool,separator:a.string,start:a.number,startOnMount:a.bool,suffix:a.string,style:a.object,useEasing:a.bool,preserveValue:a.bool}),d(y,"defaultProps",{decimal:".",decimals:0,delay:null,duration:null,easingFn:null,formattingFn:null,onEnd:function(){},onPauseResume:function(){},onReset:function(){},onStart:function(){},onUpdate:function(){},prefix:"",redraw:!1,separator:"",start:0,startOnMount:!0,suffix:"",style:void 0,useEasing:!0,preserveValue:!1});var k={innerHTML:null};t.default=y,t.useCountUp=function(e){var t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){d(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},y.defaultProps,{},e),n=t.start,r=t.formattingFn,a=g(o.useState("function"==typeof r?r(n):n),2),i=a[0],s=a[1],l=o.useRef(null),c=function(){var e=l.current;if(null!==e)return e;var n=function(){var e=_(k,t),n=e.options.formattingFn;return e.options.formattingFn=function(){var e=n.apply(void 0,arguments);s(e)},e}();return l.current=n,n},u=function(){var e=t.onReset;c().reset(),e({pauseResume:f,start:m,update:h})},m=function e(){var n=t.onStart,r=t.onEnd;c().reset(),c().start((function(){r({pauseResume:f,reset:u,start:e,update:h})})),n({pauseResume:f,reset:u,update:h})},f=function(){var e=t.onPauseResume;c().pauseResume(),e({reset:u,start:m,update:h})},h=function(e){var n=t.onUpdate;c().update(e),n({pauseResume:f,reset:u,start:m})};return o.useEffect((function(){var e=t.delay,n=t.onStart,r=t.onEnd;if(t.startOnMount)var a=setTimeout((function(){n({pauseResume:f,reset:u,update:h}),c().start((function(){clearTimeout(a),r({pauseResume:f,reset:u,start:m,update:h})}))}),1e3*e);return u}),[]),{countUp:i,start:m,pauseResume:f,reset:u,update:h}}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=((r=n(370))&&r.__esModule?r:{default:r}).default;t.default=a},function(e,t,n){var r=n(388),a=n(111)((function(e,t){return null==e?{}:r(e,t)}));e.exports=a},function(e,t,n){var r=n(390),a=n(34),o=n(124),i=Math.max;e.exports=function(e,t,n){var s=null==e?0:e.length;if(!s)return-1;var l=null==n?0:o(n);return l<0&&(l=i(s+l,0)),r(e,a(t,3),l)}},function(e,t,n){var r="undefined"!=typeof window,a=r?window.Masonry||n(393):null,o=r?n(398):null,i=n(399),s=n(403),l=n(414),c=n(8),u=n(114),d=n(2),p=n(416),m={enableResizableChildren:u.bool,disableImagesLoaded:u.bool,onImagesLoaded:u.func,updateOnEachImageLoad:u.bool,options:u.object,imagesLoadedOptions:u.object,elementType:u.string,onLayoutComplete:u.func,onRemoveComplete:u.func},f=p({masonry:!1,erd:void 0,latestKnownDomChildren:[],displayName:"MasonryComponent",imagesLoadedCancelRef:void 0,propTypes:m,getDefaultProps:function(){return{enableResizableChildren:!1,disableImagesLoaded:!1,updateOnEachImageLoad:!1,options:{},imagesLoadedOptions:{},className:"",elementType:"div",onLayoutComplete:function(){},onRemoveComplete:function(){}}},initializeMasonry:function(e){this.masonry&&!e||(this.masonry=new a(this.masonryContainer,this.props.options),this.props.onLayoutComplete&&this.masonry.on("layoutComplete",this.props.onLayoutComplete),this.props.onRemoveComplete&&this.masonry.on("removeComplete",this.props.onRemoveComplete),this.latestKnownDomChildren=this.getCurrentDomChildren())},getCurrentDomChildren:function(){var e=this.masonryContainer,t=this.props.options.itemSelector?e.querySelectorAll(this.props.options.itemSelector):e.children;return Array.prototype.slice.call(t)},diffDomChildren:function(){var e=!1,t=this.latestKnownDomChildren.filter((function(e){return!!e.parentNode}));t.length!==this.latestKnownDomChildren.length&&(e=!0);var n=this.getCurrentDomChildren(),r=t.filter((function(e){return!~n.indexOf(e)})),a=n.filter((function(e){return!~t.indexOf(e)})),o=0,i=a.filter((function(e){var t=o===n.indexOf(e);return t&&o++,t})),s=a.filter((function(e){return-1===i.indexOf(e)})),l=[];return 0===r.length&&(l=t.filter((function(e,t){return t!==n.indexOf(e)}))),this.latestKnownDomChildren=n,{old:t,new:n,removed:r,appended:s,prepended:i,moved:l,forceItemReload:e}},performLayout:function(){var e=this.diffDomChildren(),t=e.forceItemReload||e.moved.length>0;e.removed.length>0&&(this.props.enableResizableChildren&&e.removed.forEach(this.erd.removeAllListeners,this.erd),this.masonry.remove(e.removed),t=!0),e.appended.length>0&&(this.masonry.appended(e.appended),0===e.prepended.length&&(t=!0),this.props.enableResizableChildren&&e.appended.forEach(this.listenToElementResize,this)),e.prepended.length>0&&(this.masonry.prepended(e.prepended),this.props.enableResizableChildren&&e.prepended.forEach(this.listenToElementResize,this)),t&&this.masonry.reloadItems(),this.masonry.layout()},derefImagesLoaded:function(){this.imagesLoadedCancelRef(),this.imagesLoadedCancelRef=void 0},imagesLoaded:function(){if(!this.props.disableImagesLoaded){this.imagesLoadedCancelRef&&this.derefImagesLoaded();var e=this.props.updateOnEachImageLoad?"progress":"always",t=l(function(e){this.props.onImagesLoaded&&this.props.onImagesLoaded(e),this.masonry.layout()}.bind(this),100),n=o(this.masonryContainer,this.props.imagesLoadedOptions).on(e,t);this.imagesLoadedCancelRef=function(){n.off(e,t),t.cancel()}}},initializeResizableChildren:function(){this.props.enableResizableChildren&&(this.erd=s({strategy:"scroll"}),this.latestKnownDomChildren.forEach(this.listenToElementResize,this))},listenToElementResize:function(e){this.erd.listenTo(e,function(){this.masonry.layout()}.bind(this))},destroyErd:function(){this.erd&&this.latestKnownDomChildren.forEach(this.erd.uninstall,this.erd)},componentDidMount:function(){this.initializeMasonry(),this.initializeResizableChildren(),this.imagesLoaded()},componentDidUpdate:function(){this.performLayout(),this.imagesLoaded()},componentWillUnmount:function(){this.destroyErd(),this.props.onLayoutComplete&&this.masonry.off("layoutComplete",this.props.onLayoutComplete),this.props.onRemoveComplete&&this.masonry.off("removeComplete",this.props.onRemoveComplete),this.imagesLoadedCancelRef&&this.derefImagesLoaded(),this.masonry.destroy()},setRef:function(e){this.masonryContainer=e},render:function(){var e=c(this.props,Object.keys(m));return d.createElement(this.props.elementType,i({},e,{ref:this.setRef}),this.props.children)}});e.exports=f,e.exports.default=f},function(e,t,n){e.exports=function(e,t){var n,r,a=0;function o(){var o,i,s=n,l=arguments.length;e:for(;s;){if(s.args.length===arguments.length){for(i=0;i<l;i++)if(s.args[i]!==arguments[i]){s=s.next;continue e}return s!==n&&(s===r&&(r=s.prev),s.prev.next=s.next,s.next&&(s.next.prev=s.prev),s.next=n,s.prev=null,n.prev=s,n=s),s.val}s=s.next}for(o=new Array(l),i=0;i<l;i++)o[i]=arguments[i];return s={args:o,val:e.apply(null,o)},n?(n.prev=s,s.next=n):r=s,a===t.maxSize?(r=r.prev).next=null:a++,n=s,s.val}return t=t||{},o.clear=function(){n=null,r=null,a=0},o}},function(e,t,n){var r=n(101),a=n(420),o=n(124),i=Math.min;e.exports=function(e,t){if((e=o(e))<1||e>9007199254740991)return[];var n=4294967295,s=i(e,4294967295);t=a(t),e-=4294967295;for(var l=r(s,t);++n<e;)t(n);return l}},function(e,t){const n=wp.element.createElement,r=n("svg",{width:20,height:20},n("path",{fill:"#474745",d:"M0.1,10.7C-0.2,7.4,1.4,3,5.8,1C9.7-0.9,14.5,0.1,17,2.8c-0.4,0-0.8-0.1-1.2-0.1 c-1.5,0-2.7,1.1-3,2.6c0,0.2,0,0.4,0,0.6c0,3.2,0,6.4,0,9.5c0,1.1,0,2.3,0,3.4c0,0.6-0.3,1-0.8,1.1c-0.6,0.2-1.2-0.2-1.3-0.9 c0-0.1,0-0.2,0-0.2c0-1.4,0-2.8,0-4.2c0-0.7,0-1.5-0.1-2.2c-0.3-2.2-2.1-4-4.3-4.5C4,7.4,1.8,8.3,0.5,10.3 C0.4,10.4,0.3,10.5,0.1,10.7z"}),n("path",{fill:"#474745",d:"M14.5,18.9c0-0.7,0-1.3,0-1.9c0-1.1,0-2.3,0-3.4c0-0.2,0.1-0.3,0.3-0.3c0.7,0,1.4,0,2,0 c0.6,0,1-0.4,1-0.9c0-0.6-0.4-1-1-1c-0.7,0-1.4,0-2,0c-0.3,0-0.4-0.1-0.4-0.3c0-1.7,0-3.5,0-5.2c0-0.7,0.3-1.1,0.9-1.3 c0.5-0.1,1.1,0.2,1.2,0.7c0.1,0.2,0.1,0.4,0.1,0.6c0.1,0.6,0.5,0.9,1.1,0.9c0.6,0,1-0.5,0.9-1.2c0,0,0-0.1,0-0.2 c1.2,1.7,1.6,4.7,0.8,7.5C18.7,15.6,17.1,17.6,14.5,18.9z"}),n("path",{fill:"#474745",d:"M8.9,13.5c0,2.1-1.7,3.7-3.7,3.7s-3.7-1.7-3.7-3.8c0-2.1,1.7-3.7,3.8-3.7 C7.2,9.7,8.9,11.3,8.9,13.5z"}),n("path",{fill:"#474745",d:"M5.8,19.1c1.1-0.2,2.1-0.6,3-1.3C8.9,18.5,8.9,19.3,9,20C7.9,19.9,6.8,19.6,5.8,19.1z"}));wp.blocks.updateCategory("blockspare",{icon:r})},function(e,t,n){var r=n(68),a=n(292),o=n(26),i=n(293),s=n(299),l=n(302),c=n(303),u=n(304),d=n(305),p=n(108),m=n(80),f=n(30),h=n(310),b=n(311),g=n(316),_=n(3),y=n(73),k=n(318),w=n(5),v=n(320),M=n(13),L={};L["[object Arguments]"]=L["[object Array]"]=L["[object ArrayBuffer]"]=L["[object DataView]"]=L["[object Boolean]"]=L["[object Date]"]=L["[object Float32Array]"]=L["[object Float64Array]"]=L["[object Int8Array]"]=L["[object Int16Array]"]=L["[object Int32Array]"]=L["[object Map]"]=L["[object Number]"]=L["[object Object]"]=L["[object RegExp]"]=L["[object Set]"]=L["[object String]"]=L["[object Symbol]"]=L["[object Uint8Array]"]=L["[object Uint8ClampedArray]"]=L["[object Uint16Array]"]=L["[object Uint32Array]"]=!0,L["[object Error]"]=L["[object Function]"]=L["[object WeakMap]"]=!1,e.exports=function e(t,n,T,E,S,x){var C,D=1&n,O=2&n,Y=4&n;if(T&&(C=S?T(t,E,S,x):T(t)),void 0!==C)return C;if(!w(t))return t;var j=_(t);if(j){if(C=h(t),!D)return c(t,C)}else{var P=f(t),N="[object Function]"==P||"[object GeneratorFunction]"==P;if(y(t))return l(t,D);if("[object Object]"==P||"[object Arguments]"==P||N&&!S){if(C=O||N?{}:g(t),!D)return O?d(t,s(C,t)):u(t,i(C,t))}else{if(!L[P])return S?t:{};C=b(t,P,D)}}x||(x=new r);var B=x.get(t);if(B)return B;x.set(t,C),v(t)?t.forEach((function(r){C.add(e(r,n,T,r,t,x))})):k(t)&&t.forEach((function(r,a){C.set(a,e(r,n,T,a,t,x))}));var A=Y?O?m:p:O?keysIn:M,H=j?void 0:A(t);return a(H||t,(function(r,a){H&&(r=t[a=r]),o(C,a,e(r,n,T,a,t,x))})),C}},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var r=n(22),a=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():a.call(t,n,1),--this.size,!0)}},function(e,t,n){var r=n(22);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var r=n(22);e.exports=function(e){return r(this.__data__,e)>-1}},function(e,t,n){var r=n(22);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},function(e,t,n){var r=n(21);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(21),a=n(69),o=n(71);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!a||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(i)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(95),a=n(277),o=n(5),i=n(97),s=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,d=c.hasOwnProperty,p=RegExp("^"+u.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||a(e))&&(r(e)?p:s).test(i(e))}},function(e,t,n){var r=n(11),a=Object.prototype,o=a.hasOwnProperty,i=a.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var a=i.call(e);return r&&(t?e[s]=n:delete e[s]),a}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r,a=n(278),o=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},function(e,t,n){var r=n(4)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(281),a=n(21),o=n(69);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||a),string:new r}}},function(e,t,n){var r=n(282),a=n(283),o=n(284),i=n(285),s=n(286);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=a,l.prototype.get=o,l.prototype.has=i,l.prototype.set=s,e.exports=l},function(e,t,n){var r=n(24);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var r=n(24),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return a.call(t,e)?t[e]:void 0}},function(e,t,n){var r=n(24),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:a.call(t,e)}},function(e,t,n){var r=n(24);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t,n){var r=n(25);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(25);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(25);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(25);e.exports=function(e,t){var n=r(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},function(e,t,n){var r=n(12),a=n(13);e.exports=function(e,t){return e&&r(t,a(t),e)}},function(e,t,n){var r=n(10),a=n(7);e.exports=function(e){return a(e)&&"[object Arguments]"==r(e)}},function(e,t){e.exports=function(){return!1}},function(e,t,n){var r=n(10),a=n(74),o=n(7),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&a(e.length)&&!!i[r(e)]}},function(e,t,n){var r=n(29),a=n(298),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t,n){var r=n(103)(Object.keys,Object);e.exports=r},function(e,t,n){var r=n(12),a=n(104);e.exports=function(e,t){return e&&r(t,a(t),e)}},function(e,t,n){var r=n(5),a=n(29),o=n(301),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=a(e),n=[];for(var s in e)("constructor"!=s||!t&&i.call(e,s))&&n.push(s);return n}},function(e,t){e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},function(e,t,n){(function(e){var r=n(4),a=t&&!t.nodeType&&t,o=a&&"object"==typeof e&&e&&!e.nodeType&&e,i=o&&o.exports===a?r.Buffer:void 0,s=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}}).call(this,n(27)(e))},function(e,t){e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},function(e,t,n){var r=n(12),a=n(77);e.exports=function(e,t){return r(e,a(e),t)}},function(e,t,n){var r=n(12),a=n(107);e.exports=function(e,t){return r(e,a(e),t)}},function(e,t,n){var r=n(9)(n(4),"DataView");e.exports=r},function(e,t,n){var r=n(9)(n(4),"Promise");e.exports=r},function(e,t,n){var r=n(9)(n(4),"Set");e.exports=r},function(e,t,n){var r=n(9)(n(4),"WeakMap");e.exports=r},function(e,t){var n=Object.prototype.hasOwnProperty;e.exports=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&n.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},function(e,t,n){var r=n(81),a=n(312),o=n(313),i=n(314),s=n(315);e.exports=function(e,t,n){var l=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new l(+e);case"[object DataView]":return a(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return s(e,n);case"[object Map]":return new l;case"[object Number]":case"[object String]":return new l(e);case"[object RegExp]":return o(e);case"[object Set]":return new l;case"[object Symbol]":return i(e)}}},function(e,t,n){var r=n(81);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},function(e,t){var n=/\w*$/;e.exports=function(e){var t=new e.constructor(e.source,n.exec(e));return t.lastIndex=e.lastIndex,t}},function(e,t,n){var r=n(11),a=r?r.prototype:void 0,o=a?a.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},function(e,t,n){var r=n(81);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},function(e,t,n){var r=n(317),a=n(79),o=n(29);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(a(e))}},function(e,t,n){var r=n(5),a=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(a)return a(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},function(e,t,n){var r=n(319),a=n(75),o=n(76),i=o&&o.isMap,s=i?a(i):r;e.exports=s},function(e,t,n){var r=n(30),a=n(7);e.exports=function(e){return a(e)&&"[object Map]"==r(e)}},function(e,t,n){var r=n(321),a=n(75),o=n(76),i=o&&o.isSet,s=i?a(i):r;e.exports=s},function(e,t,n){var r=n(30),a=n(7);e.exports=function(e){return a(e)&&"[object Set]"==r(e)}},function(e,t,n){var r=n(15),a=n(328),o=n(329),i=n(16);e.exports=function(e,t){return t=r(t,e),null==(e=o(e,t))||delete e[i(a(t))]}},function(e,t,n){var r=n(324),a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(a,(function(e,n,r,a){t.push(r?a.replace(o,"$1"):n||e)})),t}));e.exports=i},function(e,t,n){var r=n(325);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},function(e,t,n){var r=n(71);function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=t?t.apply(this,r):r[0],o=n.cache;if(o.has(a))return o.get(a);var i=e.apply(this,r);return n.cache=o.set(a,i)||o,i};return n.cache=new(a.Cache||r),n}a.Cache=r,e.exports=a},function(e,t,n){var r=n(327);e.exports=function(e){return null==e?"":r(e)}},function(e,t,n){var r=n(11),a=n(20),o=n(3),i=n(31),s=r?r.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return a(t,e)+"";if(i(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,n){var r=n(32),a=n(330);e.exports=function(e,t){return t.length<2?e:r(e,a(t,0,-1))}},function(e,t){e.exports=function(e,t,n){var r=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(a);++r<a;)o[r]=e[r+t];return o}},function(e,t,n){var r=n(332);e.exports=function(e){return r(e)?void 0:e}},function(e,t,n){var r=n(10),a=n(79),o=n(7),i=Function.prototype,s=Object.prototype,l=i.toString,c=s.hasOwnProperty,u=l.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=r(e))return!1;var t=a(e);if(null===t)return!0;var n=c.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&l.call(n)==u}},function(e,t,n){var r=n(334);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},function(e,t,n){var r=n(78),a=n(335);e.exports=function e(t,n,o,i,s){var l=-1,c=t.length;for(o||(o=a),s||(s=[]);++l<c;){var u=t[l];n>0&&o(u)?n>1?e(u,n-1,o,i,s):r(s,u):i||(s[s.length]=u)}return s}},function(e,t,n){var r=n(11),a=n(72),o=n(3),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||a(e)||!!(i&&e&&e[i])}},function(e,t){e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},function(e,t,n){var r=n(338),a=n(99),o=n(33),i=a?function(e,t){return a(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=i},function(e,t){e.exports=function(e){return function(){return e}}},function(e,t){var n=Date.now;e.exports=function(e){var t=0,r=0;return function(){var a=n(),o=16-(a-r);if(r=a,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){"use strict"; |
| 41 |
/** @license React v16.13.1 |
| 42 |
* react.production.min.js |
| 43 |
* |
| 44 |
* Copyright (c) Facebook, Inc. and its affiliates. |
| 45 |
* |
| 46 |
* This source code is licensed under the MIT license found in the |
| 47 |
* LICENSE file in the root directory of this source tree. |
| 48 |
*/var r=n(83),a="function"==typeof Symbol&&Symbol.for,o=a?Symbol.for("react.element"):60103,i=a?Symbol.for("react.portal"):60106,s=a?Symbol.for("react.fragment"):60107,l=a?Symbol.for("react.strict_mode"):60108,c=a?Symbol.for("react.profiler"):60114,u=a?Symbol.for("react.provider"):60109,d=a?Symbol.for("react.context"):60110,p=a?Symbol.for("react.forward_ref"):60112,m=a?Symbol.for("react.suspense"):60113,f=a?Symbol.for("react.memo"):60115,h=a?Symbol.for("react.lazy"):60116,b="function"==typeof Symbol&&Symbol.iterator;function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var _={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y={};function k(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||_}function w(){}function v(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||_}k.prototype.isReactComponent={},k.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(g(85));this.updater.enqueueSetState(this,e,t,"setState")},k.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},w.prototype=k.prototype;var M=v.prototype=new w;M.constructor=v,r(M,k.prototype),M.isPureReactComponent=!0;var L={current:null},T=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,a={},i=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)T.call(t,r)&&!E.hasOwnProperty(r)&&(a[r]=t[r]);var l=arguments.length-2;if(1===l)a.children=n;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];a.children=c}if(e&&e.defaultProps)for(r in l=e.defaultProps)void 0===a[r]&&(a[r]=l[r]);return{$$typeof:o,type:e,key:i,ref:s,props:a,_owner:L.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var C=/\/+/g,D=[];function O(e,t,n,r){if(D.length){var a=D.pop();return a.result=e,a.keyPrefix=t,a.func=n,a.context=r,a.count=0,a}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function Y(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>D.length&&D.push(e)}function j(e,t,n){return null==e?0:function e(t,n,r,a){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var l=!1;if(null===t)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case o:case i:l=!0}}if(l)return r(a,t,""===n?"."+P(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c<t.length;c++){var u=n+P(s=t[c],c);l+=e(s,u,r,a)}else if(null===t||"object"!=typeof t?u=null:u="function"==typeof(u=b&&t[b]||t["@@iterator"])?u:null,"function"==typeof u)for(t=u.call(t),c=0;!(s=t.next()).done;)l+=e(s=s.value,u=n+P(s,c++),r,a);else if("object"===s)throw r=""+t,Error(g(31,"[object Object]"===r?"object with keys {"+Object.keys(t).join(", ")+"}":r,""));return l}(e,"",t,n)}function P(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function N(e,t){e.func.call(e.context,t,e.count++)}function B(e,t,n){var r=e.result,a=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?A(e,r,n,(function(e){return e})):null!=e&&(x(e)&&(e=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,a+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(C,"$&/")+"/")+n)),r.push(e))}function A(e,t,n,r,a){var o="";null!=n&&(o=(""+n).replace(C,"$&/")+"/"),j(e,B,t=O(t,o,r,a)),Y(t)}var H={current:null};function z(){var e=H.current;if(null===e)throw Error(g(321));return e}var I={ReactCurrentDispatcher:H,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:L,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:function(e,t,n){if(null==e)return e;var r=[];return A(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;j(e,N,t=O(null,null,t,n)),Y(t)},count:function(e){return j(e,(function(){return null}),null)},toArray:function(e){var t=[];return A(e,t,null,(function(e){return e})),t},only:function(e){if(!x(e))throw Error(g(143));return e}},t.Component=k,t.Fragment=s,t.Profiler=c,t.PureComponent=v,t.StrictMode=l,t.Suspense=m,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I,t.cloneElement=function(e,t,n){if(null==e)throw Error(g(267,e));var a=r({},e.props),i=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=L.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)T.call(t,u)&&!E.hasOwnProperty(u)&&(a[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)a.children=n;else if(1<u){c=Array(u);for(var d=0;d<u;d++)c[d]=arguments[d+2];a.children=c}return{$$typeof:o,type:e.type,key:i,ref:s,props:a,_owner:l}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:d,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:u,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:p,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:h,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:f,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return z().useCallback(e,t)},t.useContext=function(e,t){return z().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return z().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return z().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return z().useLayoutEffect(e,t)},t.useMemo=function(e,t){return z().useMemo(e,t)},t.useReducer=function(e,t,n){return z().useReducer(e,t,n)},t.useRef=function(e){return z().useRef(e)},t.useState=function(e){return z().useState(e)},t.version="16.13.1"},function(e,t,n){"use strict";var r=n(342);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){var r,a;void 0===(a="function"==typeof(r=function(e,t,n){return function(e,t,n,r,a,o){function i(e){return"number"==typeof e&&!isNaN(e)}var s=this;if(s.version=function(){return"1.9.3"},s.options={useEasing:!0,useGrouping:!0,separator:",",decimal:".",easingFn:function(e,t,n,r){return n*(1-Math.pow(2,-10*e/r))*1024/1023+t},formattingFn:function(e){var t,n,r,a,o,i,l=e<0;if(e=Math.abs(e).toFixed(s.decimals),n=(t=(e+="").split("."))[0],r=t.length>1?s.options.decimal+t[1]:"",s.options.useGrouping){for(a="",o=0,i=n.length;o<i;++o)0!==o&&o%3==0&&(a=s.options.separator+a),a=n[i-o-1]+a;n=a}return s.options.numerals.length&&(n=n.replace(/[0-9]/g,(function(e){return s.options.numerals[+e]})),r=r.replace(/[0-9]/g,(function(e){return s.options.numerals[+e]}))),(l?"-":"")+s.options.prefix+n+r+s.options.suffix},prefix:"",suffix:"",numerals:[]},o&&"object"==typeof o)for(var l in s.options)o.hasOwnProperty(l)&&null!==o[l]&&(s.options[l]=o[l]);""===s.options.separator?s.options.useGrouping=!1:s.options.separator=""+s.options.separator;for(var c=0,u=["webkit","moz","ms","o"],d=0;d<u.length&&!window.requestAnimationFrame;++d)window.requestAnimationFrame=window[u[d]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[u[d]+"CancelAnimationFrame"]||window[u[d]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var n=(new Date).getTime(),r=Math.max(0,16-(n-c)),a=window.setTimeout((function(){e(n+r)}),r);return c=n+r,a}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)}),s.initialize=function(){return!(!s.initialized&&(s.error="",s.d="string"==typeof e?document.getElementById(e):e,s.d?(s.startVal=Number(t),s.endVal=Number(n),i(s.startVal)&&i(s.endVal)?(s.decimals=Math.max(0,r||0),s.dec=Math.pow(10,s.decimals),s.duration=1e3*Number(a)||2e3,s.countDown=s.startVal>s.endVal,s.frameVal=s.startVal,s.initialized=!0,0):(s.error="[CountUp] startVal ("+t+") or endVal ("+n+") is not a number",1)):(s.error="[CountUp] target is null or undefined",1)))},s.printValue=function(e){var t=s.options.formattingFn(e);"INPUT"===s.d.tagName?this.d.value=t:"text"===s.d.tagName||"tspan"===s.d.tagName?this.d.textContent=t:this.d.innerHTML=t},s.count=function(e){s.startTime||(s.startTime=e),s.timestamp=e;var t=e-s.startTime;s.remaining=s.duration-t,s.options.useEasing?s.countDown?s.frameVal=s.startVal-s.options.easingFn(t,0,s.startVal-s.endVal,s.duration):s.frameVal=s.options.easingFn(t,s.startVal,s.endVal-s.startVal,s.duration):s.countDown?s.frameVal=s.startVal-(s.startVal-s.endVal)*(t/s.duration):s.frameVal=s.startVal+(s.endVal-s.startVal)*(t/s.duration),s.countDown?s.frameVal=s.frameVal<s.endVal?s.endVal:s.frameVal:s.frameVal=s.frameVal>s.endVal?s.endVal:s.frameVal,s.frameVal=Math.round(s.frameVal*s.dec)/s.dec,s.printValue(s.frameVal),t<s.duration?s.rAF=requestAnimationFrame(s.count):s.callback&&s.callback()},s.start=function(e){s.initialize()&&(s.callback=e,s.rAF=requestAnimationFrame(s.count))},s.pauseResume=function(){s.paused?(s.paused=!1,delete s.startTime,s.duration=s.remaining,s.startVal=s.frameVal,requestAnimationFrame(s.count)):(s.paused=!0,cancelAnimationFrame(s.rAF))},s.reset=function(){s.paused=!1,delete s.startTime,s.initialized=!1,s.initialize()&&(cancelAnimationFrame(s.rAF),s.printValue(s.startVal))},s.update=function(e){if(s.initialize()){if(!i(e=Number(e)))return void(s.error="[CountUp] update() - new endVal is not a number: "+e);s.error="",e!==s.frameVal&&(cancelAnimationFrame(s.rAF),s.paused=!1,delete s.startTime,s.startVal=s.frameVal,s.endVal=e,s.countDown=s.startVal>s.endVal,s.rAF=requestAnimationFrame(s.count))}},s.initialize()&&s.printValue(s.startVal)}})?r.call(t,n,t,e):r)||(e.exports=a)},function(e,t,n){var r=n(115);e.exports=function(e,t){var n=[];return r(e,(function(e,r,a){t(e,r,a)&&n.push(e)})),n}},function(e,t,n){var r=n(347),a=n(13);e.exports=function(e,t){return e&&r(e,t,a)}},function(e,t,n){var r=n(348)();e.exports=r},function(e,t){e.exports=function(e){return function(t,n,r){for(var a=-1,o=Object(t),i=r(t),s=i.length;s--;){var l=i[e?s:++a];if(!1===n(o[l],l,o))break}return t}}},function(e,t,n){var r=n(14);e.exports=function(e,t){return function(n,a){if(null==n)return n;if(!r(n))return e(n,a);for(var o=n.length,i=t?o:-1,s=Object(n);(t?i--:++i<o)&&!1!==a(s[i],i,s););return n}}},function(e,t,n){var r=n(351),a=n(362),o=n(119);e.exports=function(e){var t=a(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(68),a=n(116);e.exports=function(e,t,n,o){var i=n.length,s=i,l=!o;if(null==e)return!s;for(e=Object(e);i--;){var c=n[i];if(l&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++i<s;){var u=(c=n[i])[0],d=e[u],p=c[1];if(l&&c[2]){if(void 0===d&&!(u in e))return!1}else{var m=new r;if(o)var f=o(d,p,u,e,t,m);if(!(void 0===f?a(p,d,3,o,m):f))return!1}}return!0}},function(e,t,n){var r=n(68),a=n(117),o=n(358),i=n(361),s=n(30),l=n(3),c=n(73),u=n(102),d="[object Object]",p=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,f,h){var b=l(e),g=l(t),_=b?"[object Array]":s(e),y=g?"[object Array]":s(t),k=(_="[object Arguments]"==_?d:_)==d,w=(y="[object Arguments]"==y?d:y)==d,v=_==y;if(v&&c(e)){if(!c(t))return!1;b=!0,k=!1}if(v&&!k)return h||(h=new r),b||u(e)?a(e,t,n,m,f,h):o(e,t,_,n,m,f,h);if(!(1&n)){var M=k&&p.call(e,"__wrapped__"),L=w&&p.call(t,"__wrapped__");if(M||L){var T=M?e.value():e,E=L?t.value():t;return h||(h=new r),f(T,E,n,m,h)}}return!!v&&(h||(h=new r),i(e,t,n,m,f,h))}},function(e,t,n){var r=n(71),a=n(354),o=n(355);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=a,i.prototype.has=o,e.exports=i},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t,n){var r=n(11),a=n(110),o=n(23),i=n(117),s=n(359),l=n(360),c=r?r.prototype:void 0,u=c?c.valueOf:void 0;e.exports=function(e,t,n,r,c,d,p){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!d(new a(e),new a(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var m=s;case"[object Set]":var f=1&r;if(m||(m=l),e.size!=t.size&&!f)return!1;var h=p.get(e);if(h)return h==t;r|=2,p.set(e,t);var b=i(m(e),m(t),r,c,d,p);return p.delete(e),b;case"[object Symbol]":if(u)return u.call(e)==u.call(t)}return!1}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},function(e,t,n){var r=n(108),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,i,s){var l=1&n,c=r(e),u=c.length;if(u!=r(t).length&&!l)return!1;for(var d=u;d--;){var p=c[d];if(!(l?p in t:a.call(t,p)))return!1}var m=s.get(e);if(m&&s.get(t))return m==t;var f=!0;s.set(e,t),s.set(t,e);for(var h=l;++d<u;){var b=e[p=c[d]],g=t[p];if(o)var _=l?o(g,b,p,t,e,s):o(b,g,p,e,t,s);if(!(void 0===_?b===g||i(b,g,n,o,s):_)){f=!1;break}h||(h="constructor"==p)}if(f&&!h){var y=e.constructor,k=t.constructor;y==k||!("constructor"in e)||!("constructor"in t)||"function"==typeof y&&y instanceof y&&"function"==typeof k&&k instanceof k||(f=!1)}return s.delete(e),s.delete(t),f}},function(e,t,n){var r=n(118),a=n(13);e.exports=function(e){for(var t=a(e),n=t.length;n--;){var o=t[n],i=e[o];t[n]=[o,i,r(i)]}return t}},function(e,t,n){var r=n(116),a=n(36),o=n(120),i=n(82),s=n(118),l=n(119),c=n(16);e.exports=function(e,t){return i(e)&&s(t)?l(c(e),t):function(n){var i=a(n,e);return void 0===i&&i===t?o(n,e):r(t,i,3)}}},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,n){var r=n(15),a=n(72),o=n(3),i=n(28),s=n(74),l=n(16);e.exports=function(e,t,n){for(var c=-1,u=(t=r(t,e)).length,d=!1;++c<u;){var p=l(t[c]);if(!(d=null!=e&&n(e,p)))break;e=e[p]}return d||++c!=u?d:!!(u=null==e?0:e.length)&&s(u)&&i(p,u)&&(o(e)||a(e))}},function(e,t,n){var r=n(367),a=n(368),o=n(82),i=n(16);e.exports=function(e){return o(e)?r(i(e)):a(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,n){var r=n(32);e.exports=function(e){return function(t){return r(t,e)}}},function(e,t,n){var r=n(115),a=n(14);e.exports=function(e,t){var n=-1,o=a(e)?Array(e.length):[];return r(e,(function(e,r,a){o[++n]=t(e,r,a)})),o}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(2)),a=n(371),o=l(n(381)),i=l(n(383)),s=n(35);function l(e){return e&&e.__esModule?e:{default:e}}function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(){return(u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){b(e,t,n[t])}))}return e}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e,t){return(f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var g=(0,s.canUseDOM)()&&n(384),_=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==c(t)&&"function"!=typeof t?h(e):t}(this,m(t).call(this,e)),b(h(h(n)),"innerSliderRefHandler",(function(e){return n.innerSlider=e})),b(h(h(n)),"slickPrev",(function(){return n.innerSlider.slickPrev()})),b(h(h(n)),"slickNext",(function(){return n.innerSlider.slickNext()})),b(h(h(n)),"slickGoTo",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return n.innerSlider.slickGoTo(e,t)})),b(h(h(n)),"slickPause",(function(){return n.innerSlider.pause("paused")})),b(h(h(n)),"slickPlay",(function(){return n.innerSlider.autoPlay("play")})),n.state={breakpoint:null},n._responsiveMediaHandlers=[],n}var n,l,_;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(t,e),n=t,(l=[{key:"media",value:function(e,t){g.register(e,t),this._responsiveMediaHandlers.push({query:e,handler:t})}},{key:"componentWillMount",value:function(){var e=this;if(this.props.responsive){var t=this.props.responsive.map((function(e){return e.breakpoint}));t.sort((function(e,t){return e-t})),t.forEach((function(n,r){var a;a=0===r?(0,o.default)({minWidth:0,maxWidth:n}):(0,o.default)({minWidth:t[r-1]+1,maxWidth:n}),(0,s.canUseDOM)()&&e.media(a,(function(){e.setState({breakpoint:n})}))}));var n=(0,o.default)({minWidth:t.slice(-1)[0]});(0,s.canUseDOM)()&&this.media(n,(function(){e.setState({breakpoint:null})}))}}},{key:"componentWillUnmount",value:function(){this._responsiveMediaHandlers.forEach((function(e){g.unregister(e.query,e.handler)}))}},{key:"render",value:function(){var e,t,n=this;(e=this.state.breakpoint?"unslick"===(t=this.props.responsive.filter((function(e){return e.breakpoint===n.state.breakpoint})))[0].settings?"unslick":d({},i.default,this.props,t[0].settings):d({},i.default,this.props)).centerMode&&(e.slidesToScroll,e.slidesToScroll=1),e.fade&&(e.slidesToShow,e.slidesToScroll,e.slidesToShow=1,e.slidesToScroll=1);var o=r.default.Children.toArray(this.props.children);o=o.filter((function(e){return"string"==typeof e?!!e.trim():!!e})),e.variableWidth&&(e.rows>1||e.slidesPerRow>1)&&(console.warn("variableWidth is not supported in case of rows > 1 or slidesPerRow > 1"),e.variableWidth=!1);for(var s=[],l=null,c=0;c<o.length;c+=e.rows*e.slidesPerRow){for(var p=[],m=c;m<c+e.rows*e.slidesPerRow;m+=e.slidesPerRow){for(var f=[],h=m;h<m+e.slidesPerRow&&(e.variableWidth&&o[h].props.style&&(l=o[h].props.style.width),!(h>=o.length));h+=1)f.push(r.default.cloneElement(o[h],{key:100*c+10*m+h,tabIndex:-1,style:{width:"".concat(100/e.slidesPerRow,"%"),display:"inline-block"}}));p.push(r.default.createElement("div",{key:10*c+m},f))}e.variableWidth?s.push(r.default.createElement("div",{key:c,style:{width:l}},p)):s.push(r.default.createElement("div",{key:c},p))}if("unslick"===e){var b="regular slider "+(this.props.className||"");return r.default.createElement("div",{className:b},s)}return s.length<=e.slidesToShow&&(e.unslick=!0),r.default.createElement(a.InnerSlider,u({ref:this.innerSliderRefHandler},e),s)}}])&&p(n.prototype,l),_&&p(n,_),t}(r.default.Component);t.default=_},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InnerSlider=void 0;var r=m(n(2)),a=m(n(121)),o=m(n(375)),i=m(n(376)),s=m(n(0)),l=n(35),c=n(377),u=n(378),d=n(379),p=m(n(380));function m(e){return e&&e.__esModule?e:{default:e}}function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function h(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function b(e){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){w(e,t,n[t])}))}return e}function _(e){return(_=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function y(e,t){return(y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function k(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==b(t)&&"function"!=typeof t?k(e):t}(this,_(t).call(this,e)),w(k(k(n)),"listRefHandler",(function(e){return n.list=e})),w(k(k(n)),"trackRefHandler",(function(e){return n.track=e})),w(k(k(n)),"adaptHeight",(function(){if(n.props.adaptiveHeight&&n.list){var e=n.list.querySelector('[data-index="'.concat(n.state.currentSlide,'"]'));n.list.style.height=(0,l.getHeight)(e)+"px"}})),w(k(k(n)),"componentWillMount",(function(){if(n.ssrInit(),n.props.onInit&&n.props.onInit(),n.props.lazyLoad){var e=(0,l.getOnDemandLazySlides)(g({},n.props,n.state));e.length>0&&(n.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),n.props.onLazyLoad&&n.props.onLazyLoad(e))}})),w(k(k(n)),"componentDidMount",(function(){var e=g({listRef:n.list,trackRef:n.track},n.props);n.updateState(e,!0,(function(){n.adaptHeight(),n.props.autoplay&&n.autoPlay("update")})),"progressive"===n.props.lazyLoad&&(n.lazyLoadTimer=setInterval(n.progressiveLazyLoad,1e3)),n.ro=new p.default((function(){n.state.animating?(n.onWindowResized(!1),n.callbackTimers.push(setTimeout((function(){return n.onWindowResized()}),n.props.speed))):n.onWindowResized()})),n.ro.observe(n.list),Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"),(function(e){e.onfocus=n.props.pauseOnFocus?n.onSlideFocus:null,e.onblur=n.props.pauseOnFocus?n.onSlideBlur:null})),window&&(window.addEventListener?window.addEventListener("resize",n.onWindowResized):window.attachEvent("onresize",n.onWindowResized))})),w(k(k(n)),"componentWillUnmount",(function(){n.animationEndCallback&&clearTimeout(n.animationEndCallback),n.lazyLoadTimer&&clearInterval(n.lazyLoadTimer),n.callbackTimers.length&&(n.callbackTimers.forEach((function(e){return clearTimeout(e)})),n.callbackTimers=[]),window.addEventListener?window.removeEventListener("resize",n.onWindowResized):window.detachEvent("onresize",n.onWindowResized),n.autoplayTimer&&clearInterval(n.autoplayTimer)})),w(k(k(n)),"componentWillReceiveProps",(function(e){for(var t=g({listRef:n.list,trackRef:n.track},e,n.state),a=!1,o=Object.keys(n.props),i=0;i<o.length;i++){var s=o[i];if(!e.hasOwnProperty(s)){a=!0;break}if("object"!==b(e[s])&&"function"!=typeof e[s]&&e[s]!==n.props[s]){a=!0;break}}n.updateState(t,a,(function(){n.state.currentSlide>=r.default.Children.count(e.children)&&n.changeSlide({message:"index",index:r.default.Children.count(e.children)-e.slidesToShow,currentSlide:n.state.currentSlide}),e.autoplay?n.autoPlay("update"):n.pause("paused")}))})),w(k(k(n)),"componentDidUpdate",(function(){if(n.checkImagesLoad(),n.props.onReInit&&n.props.onReInit(),n.props.lazyLoad){var e=(0,l.getOnDemandLazySlides)(g({},n.props,n.state));e.length>0&&(n.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),n.props.onLazyLoad&&n.props.onLazyLoad(e))}n.adaptHeight()})),w(k(k(n)),"onWindowResized",(function(e){n.debouncedResize&&n.debouncedResize.cancel(),n.debouncedResize=(0,i.default)((function(){return n.resizeWindow(e)}),50),n.debouncedResize()})),w(k(k(n)),"resizeWindow",(function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(a.default.findDOMNode(n.track)){var t=g({listRef:n.list,trackRef:n.track},n.props,n.state);n.updateState(t,e,(function(){n.props.autoplay?n.autoPlay("update"):n.pause("paused")})),n.setState({animating:!1}),clearTimeout(n.animationEndCallback),delete n.animationEndCallback}})),w(k(k(n)),"updateState",(function(e,t,a){var o=(0,l.initializedState)(e);e=g({},e,o,{slideIndex:o.currentSlide}),e=g({},e,{left:(0,l.getTrackLeft)(e)});var i=(0,l.getTrackCSS)(e);(t||r.default.Children.count(n.props.children)!==r.default.Children.count(e.children))&&(o.trackStyle=i),n.setState(o,a)})),w(k(k(n)),"ssrInit",(function(){if(n.props.variableWidth){var e=0,t=0,a=[],o=(0,l.getPreClones)(g({},n.props,n.state,{slideCount:n.props.children.length})),i=(0,l.getPostClones)(g({},n.props,n.state,{slideCount:n.props.children.length}));n.props.children.forEach((function(t){a.push(t.props.style.width),e+=t.props.style.width}));for(var s=0;s<o;s++)t+=a[a.length-1-s],e+=a[a.length-1-s];for(var c=0;c<i;c++)e+=a[c];for(var u=0;u<n.state.currentSlide;u++)t+=a[u];var d={width:e+"px",left:-t+"px"};if(n.props.centerMode){var p="".concat(a[n.state.currentSlide],"px");d.left="calc(".concat(d.left," + (100% - ").concat(p,") / 2 ) ")}n.setState({trackStyle:d})}else{var m=r.default.Children.count(n.props.children),f=g({},n.props,n.state,{slideCount:m}),h=(0,l.getPreClones)(f)+(0,l.getPostClones)(f)+m,b=100/n.props.slidesToShow*h,_=100/h,y=-_*((0,l.getPreClones)(f)+n.state.currentSlide)*b/100;n.props.centerMode&&(y+=(100-_*b/100)/2);var k={width:b+"%",left:y+"%"};n.setState({slideWidth:_+"%",trackStyle:k})}})),w(k(k(n)),"checkImagesLoad",(function(){var e=document.querySelectorAll(".slick-slide img"),t=e.length,r=0;Array.prototype.forEach.call(e,(function(e){var a=function(){return++r&&r>=t&&n.onWindowResized()};if(e.onclick){var o=e.onclick;e.onclick=function(){o(),e.parentNode.focus()}}else e.onclick=function(){return e.parentNode.focus()};e.onload||(n.props.lazyLoad?e.onload=function(){n.adaptHeight(),n.callbackTimers.push(setTimeout(n.onWindowResized,n.props.speed))}:(e.onload=a,e.onerror=function(){a(),n.props.onLazyLoadError&&n.props.onLazyLoadError()}))}))})),w(k(k(n)),"progressiveLazyLoad",(function(){for(var e=[],t=g({},n.props,n.state),r=n.state.currentSlide;r<n.state.slideCount+(0,l.getPostClones)(t);r++)if(n.state.lazyLoadedList.indexOf(r)<0){e.push(r);break}for(var a=n.state.currentSlide-1;a>=-(0,l.getPreClones)(t);a--)if(n.state.lazyLoadedList.indexOf(a)<0){e.push(a);break}e.length>0?(n.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),n.props.onLazyLoad&&n.props.onLazyLoad(e)):n.lazyLoadTimer&&(clearInterval(n.lazyLoadTimer),delete n.lazyLoadTimer)})),w(k(k(n)),"slideHandler",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=n.props,a=r.asNavFor,o=r.beforeChange,i=r.onLazyLoad,s=r.speed,c=r.afterChange,u=n.state.currentSlide,d=(0,l.slideHandler)(g({index:e},n.props,n.state,{trackRef:n.track,useCSS:n.props.useCSS&&!t})),p=d.state,m=d.nextState;if(p){o&&o(u,p.currentSlide);var f=p.lazyLoadedList.filter((function(e){return n.state.lazyLoadedList.indexOf(e)<0}));i&&f.length>0&&i(f),n.setState(p,(function(){a&&a.innerSlider.state.currentSlide!==n.state.currentSlide&&a.innerSlider.slideHandler(e),m&&(n.animationEndCallback=setTimeout((function(){var e=m.animating,t=h(m,["animating"]);n.setState(t,(function(){n.callbackTimers.push(setTimeout((function(){return n.setState({animating:e})}),10)),c&&c(p.currentSlide),delete n.animationEndCallback}))}),s))}))}})),w(k(k(n)),"changeSlide",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=g({},n.props,n.state),a=(0,l.changeSlide)(r,e);(0===a||a)&&(!0===t?n.slideHandler(a,t):n.slideHandler(a))})),w(k(k(n)),"clickHandler",(function(e){!1===n.clickable&&(e.stopPropagation(),e.preventDefault()),n.clickable=!0})),w(k(k(n)),"keyHandler",(function(e){var t=(0,l.keyHandler)(e,n.props.accessibility,n.props.rtl);""!==t&&n.changeSlide({message:t})})),w(k(k(n)),"selectHandler",(function(e){n.changeSlide(e)})),w(k(k(n)),"disableBodyScroll",(function(){window.ontouchmove=function(e){(e=e||window.event).preventDefault&&e.preventDefault(),e.returnValue=!1}})),w(k(k(n)),"enableBodyScroll",(function(){window.ontouchmove=null})),w(k(k(n)),"swipeStart",(function(e){n.props.verticalSwiping&&n.disableBodyScroll();var t=(0,l.swipeStart)(e,n.props.swipe,n.props.draggable);""!==t&&n.setState(t)})),w(k(k(n)),"swipeMove",(function(e){var t=(0,l.swipeMove)(e,g({},n.props,n.state,{trackRef:n.track,listRef:n.list,slideIndex:n.state.currentSlide}));t&&(t.swiping&&(n.clickable=!1),n.setState(t))})),w(k(k(n)),"swipeEnd",(function(e){var t=(0,l.swipeEnd)(e,g({},n.props,n.state,{trackRef:n.track,listRef:n.list,slideIndex:n.state.currentSlide}));if(t){var r=t.triggerSlideHandler;delete t.triggerSlideHandler,n.setState(t),void 0!==r&&(n.slideHandler(r),n.props.verticalSwiping&&n.enableBodyScroll())}})),w(k(k(n)),"slickPrev",(function(){n.callbackTimers.push(setTimeout((function(){return n.changeSlide({message:"previous"})}),0))})),w(k(k(n)),"slickNext",(function(){n.callbackTimers.push(setTimeout((function(){return n.changeSlide({message:"next"})}),0))})),w(k(k(n)),"slickGoTo",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e=Number(e),isNaN(e))return"";n.callbackTimers.push(setTimeout((function(){return n.changeSlide({message:"index",index:e,currentSlide:n.state.currentSlide},t)}),0))})),w(k(k(n)),"play",(function(){var e;if(n.props.rtl)e=n.state.currentSlide-n.props.slidesToScroll;else{if(!(0,l.canGoNext)(g({},n.props,n.state)))return!1;e=n.state.currentSlide+n.props.slidesToScroll}n.slideHandler(e)})),w(k(k(n)),"autoPlay",(function(e){n.autoplayTimer&&clearInterval(n.autoplayTimer);var t=n.state.autoplaying;if("update"===e){if("hovered"===t||"focused"===t||"paused"===t)return}else if("leave"===e){if("paused"===t||"focused"===t)return}else if("blur"===e&&("paused"===t||"hovered"===t))return;n.autoplayTimer=setInterval(n.play,n.props.autoplaySpeed+50),n.setState({autoplaying:"playing"})})),w(k(k(n)),"pause",(function(e){n.autoplayTimer&&(clearInterval(n.autoplayTimer),n.autoplayTimer=null);var t=n.state.autoplaying;"paused"===e?n.setState({autoplaying:"paused"}):"focused"===e?"hovered"!==t&&"playing"!==t||n.setState({autoplaying:"focused"}):"playing"===t&&n.setState({autoplaying:"hovered"})})),w(k(k(n)),"onDotsOver",(function(){return n.props.autoplay&&n.pause("hovered")})),w(k(k(n)),"onDotsLeave",(function(){return n.props.autoplay&&"hovered"===n.state.autoplaying&&n.autoPlay("leave")})),w(k(k(n)),"onTrackOver",(function(){return n.props.autoplay&&n.pause("hovered")})),w(k(k(n)),"onTrackLeave",(function(){return n.props.autoplay&&"hovered"===n.state.autoplaying&&n.autoPlay("leave")})),w(k(k(n)),"onSlideFocus",(function(){return n.props.autoplay&&n.pause("focused")})),w(k(k(n)),"onSlideBlur",(function(){return n.props.autoplay&&"focused"===n.state.autoplaying&&n.autoPlay("blur")})),w(k(k(n)),"render",(function(){var e,t,a,o=(0,s.default)("slick-slider",n.props.className,{"slick-vertical":n.props.vertical,"slick-initialized":!0}),i=g({},n.props,n.state),p=(0,l.extractObject)(i,["fade","cssEase","speed","infinite","centerMode","focusOnSelect","currentSlide","lazyLoad","lazyLoadedList","rtl","slideWidth","slideHeight","listHeight","vertical","slidesToShow","slidesToScroll","slideCount","trackStyle","variableWidth","unslick","centerPadding"]),m=n.props.pauseOnHover;if(p=g({},p,{onMouseEnter:m?n.onTrackOver:null,onMouseLeave:m?n.onTrackLeave:null,onMouseOver:m?n.onTrackOver:null,focusOnSelect:n.props.focusOnSelect?n.selectHandler:null}),!0===n.props.dots&&n.state.slideCount>=n.props.slidesToShow){var h=(0,l.extractObject)(i,["dotsClass","slideCount","slidesToShow","currentSlide","slidesToScroll","clickHandler","children","customPaging","infinite","appendDots"]),b=n.props.pauseOnDotsHover;h=g({},h,{clickHandler:n.changeSlide,onMouseEnter:b?n.onDotsLeave:null,onMouseOver:b?n.onDotsOver:null,onMouseLeave:b?n.onDotsLeave:null}),e=r.default.createElement(u.Dots,h)}var _=(0,l.extractObject)(i,["infinite","centerMode","currentSlide","slideCount","slidesToShow","prevArrow","nextArrow"]);_.clickHandler=n.changeSlide,n.props.arrows&&(t=r.default.createElement(d.PrevArrow,_),a=r.default.createElement(d.NextArrow,_));var y=null;n.props.vertical&&(y={height:n.state.listHeight});var k=null;!1===n.props.vertical?!0===n.props.centerMode&&(k={padding:"0px "+n.props.centerPadding}):!0===n.props.centerMode&&(k={padding:n.props.centerPadding+" 0px"});var w=g({},y,k),v=n.props.touchMove,M={className:"slick-list",style:w,onClick:n.clickHandler,onMouseDown:v?n.swipeStart:null,onMouseMove:n.state.dragging&&v?n.swipeMove:null,onMouseUp:v?n.swipeEnd:null,onMouseLeave:n.state.dragging&&v?n.swipeEnd:null,onTouchStart:v?n.swipeStart:null,onTouchMove:n.state.dragging&&v?n.swipeMove:null,onTouchEnd:v?n.swipeEnd:null,onTouchCancel:n.state.dragging&&v?n.swipeEnd:null,onKeyDown:n.props.accessibility?n.keyHandler:null},L={className:o,dir:"ltr"};return n.props.unslick&&(M={className:"slick-list"},L={className:o}),r.default.createElement("div",L,n.props.unslick?"":t,r.default.createElement("div",f({ref:n.listRefHandler},M),r.default.createElement(c.Track,f({ref:n.trackRefHandler},p),n.props.children)),n.props.unslick?"":a,n.props.unslick?"":e)})),n.list=null,n.track=null,n.state=g({},o.default,{currentSlide:n.props.initialSlide,slideCount:r.default.Children.count(n.props.children)}),n.callbackTimers=[],n.clickable=!0,n.debouncedResize=null,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&y(e,t)}(t,e),t}(r.default.Component);t.InnerSlider=v},function(e,t,n){"use strict"; |
| 49 |
/** @license React v16.13.1 |
| 50 |
* react-dom.production.min.js |
| 51 |
* |
| 52 |
* Copyright (c) Facebook, Inc. and its affiliates. |
| 53 |
* |
| 54 |
* This source code is licensed under the MIT license found in the |
| 55 |
* LICENSE file in the root directory of this source tree. |
| 56 |
*/var r=n(2),a=n(83),o=n(373);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));function s(e,t,n,r,a,o,i,s,l){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(e){this.onError(e)}}var l=!1,c=null,u=!1,d=null,p={onError:function(e){l=!0,c=e}};function m(e,t,n,r,a,o,i,u,d){l=!1,c=null,s.apply(p,arguments)}var f=null,h=null,b=null;function g(e,t,n){var r=e.type||"unknown-event";e.currentTarget=b(n),function(e,t,n,r,a,o,s,p,f){if(m.apply(this,arguments),l){if(!l)throw Error(i(198));var h=c;l=!1,c=null,u||(u=!0,d=h)}}(r,t,void 0,e),e.currentTarget=null}var _=null,y={};function k(){if(_)for(var e in y){var t=y[e],n=_.indexOf(e);if(!(-1<n))throw Error(i(96,e));if(!v[n]){if(!t.extractEvents)throw Error(i(97,e));for(var r in v[n]=t,n=t.eventTypes){var a=void 0,o=n[r],s=t,l=r;if(M.hasOwnProperty(l))throw Error(i(99,l));M[l]=o;var c=o.phasedRegistrationNames;if(c){for(a in c)c.hasOwnProperty(a)&&w(c[a],s,l);a=!0}else o.registrationName?(w(o.registrationName,s,l),a=!0):a=!1;if(!a)throw Error(i(98,r,e))}}}}function w(e,t,n){if(L[e])throw Error(i(100,e));L[e]=t,T[e]=t.eventTypes[n].dependencies}var v=[],M={},L={},T={};function E(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!y.hasOwnProperty(t)||y[t]!==r){if(y[t])throw Error(i(102,t));y[t]=r,n=!0}}n&&k()}var S=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),x=null,C=null,D=null;function O(e){if(e=h(e)){if("function"!=typeof x)throw Error(i(280));var t=e.stateNode;t&&(t=f(t),x(e.stateNode,e.type,t))}}function Y(e){C?D?D.push(e):D=[e]:C=e}function j(){if(C){var e=C,t=D;if(D=C=null,O(e),t)for(e=0;e<t.length;e++)O(t[e])}}function P(e,t){return e(t)}function N(e,t,n,r,a){return e(t,n,r,a)}function B(){}var A=P,H=!1,z=!1;function I(){null===C&&null===D||(B(),j())}function F(e,t,n){if(z)return e(t,n);z=!0;try{return A(e,t,n)}finally{z=!1,I()}}var R=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,W=Object.prototype.hasOwnProperty,U={},q={};function G(e,t,n,r,a,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o}var V={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){V[e]=new G(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];V[t]=new G(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){V[e]=new G(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){V[e]=new G(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){V[e]=new G(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){V[e]=new G(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){V[e]=new G(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){V[e]=new G(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){V[e]=new G(e,5,!1,e.toLowerCase(),null,!1)}));var $=/[\-:]([a-z])/g;function J(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace($,J);V[t]=new G(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace($,J);V[t]=new G(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace($,J);V[t]=new G(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){V[e]=new G(e,1,!1,e.toLowerCase(),null,!1)})),V.xlinkHref=new G("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){V[e]=new G(e,1,!1,e.toLowerCase(),null,!0)}));var X=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function Q(e,t,n,r){var a=V.hasOwnProperty(t)?V[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!W.call(q,e)||!W.call(U,e)&&(R.test(e)?q[e]=!0:(U[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}X.hasOwnProperty("ReactCurrentDispatcher")||(X.ReactCurrentDispatcher={current:null}),X.hasOwnProperty("ReactCurrentBatchConfig")||(X.ReactCurrentBatchConfig={suspense:null});var K=/^(.*)[\\\/]/,Z="function"==typeof Symbol&&Symbol.for,ee=Z?Symbol.for("react.element"):60103,te=Z?Symbol.for("react.portal"):60106,ne=Z?Symbol.for("react.fragment"):60107,re=Z?Symbol.for("react.strict_mode"):60108,ae=Z?Symbol.for("react.profiler"):60114,oe=Z?Symbol.for("react.provider"):60109,ie=Z?Symbol.for("react.context"):60110,se=Z?Symbol.for("react.concurrent_mode"):60111,le=Z?Symbol.for("react.forward_ref"):60112,ce=Z?Symbol.for("react.suspense"):60113,ue=Z?Symbol.for("react.suspense_list"):60120,de=Z?Symbol.for("react.memo"):60115,pe=Z?Symbol.for("react.lazy"):60116,me=Z?Symbol.for("react.block"):60121,fe="function"==typeof Symbol&&Symbol.iterator;function he(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=fe&&e[fe]||e["@@iterator"])?e:null}function be(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case ne:return"Fragment";case te:return"Portal";case ae:return"Profiler";case re:return"StrictMode";case ce:return"Suspense";case ue:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case ie:return"Context.Consumer";case oe:return"Context.Provider";case le:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case de:return be(e.type);case me:return be(e.render);case pe:if(e=1===e._status?e._result:null)return be(e)}return null}function ge(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,a=e._debugSource,o=be(e.type);n=null,r&&(n=be(r.type)),r=o,o="",a?o=" (at "+a.fileName.replace(K,"")+":"+a.lineNumber+")":n&&(o=" (created by "+n+")"),n="\n in "+(r||"Unknown")+o}t+=n,e=e.return}while(e);return t}function _e(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function ye(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function ke(e){e._valueTracker||(e._valueTracker=function(e){var t=ye(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function we(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ye(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function ve(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Me(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=_e(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Le(e,t){null!=(t=t.checked)&&Q(e,"checked",t,!1)}function Te(e,t){Le(e,t);var n=_e(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?Se(e,t.type,n):t.hasOwnProperty("defaultValue")&&Se(e,t.type,_e(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Ee(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Se(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function xe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function Ce(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+_e(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function De(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:_e(n)}}function Ye(e,t){var n=_e(t.value),r=_e(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function je(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var Pe="http://www.w3.org/1999/xhtml",Ne="http://www.w3.org/2000/svg";function Be(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Ae(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Be(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var He,ze=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,a){MSApp.execUnsafeLocalFunction((function(){return e(t,n)}))}:e}((function(e,t){if(e.namespaceURI!==Ne||"innerHTML"in e)e.innerHTML=t;else{for((He=He||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=He.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}}));function Ie(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function Fe(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Re={animationend:Fe("Animation","AnimationEnd"),animationiteration:Fe("Animation","AnimationIteration"),animationstart:Fe("Animation","AnimationStart"),transitionend:Fe("Transition","TransitionEnd")},We={},Ue={};function qe(e){if(We[e])return We[e];if(!Re[e])return e;var t,n=Re[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ue)return We[e]=n[t];return e}S&&(Ue=document.createElement("div").style,"AnimationEvent"in window||(delete Re.animationend.animation,delete Re.animationiteration.animation,delete Re.animationstart.animation),"TransitionEvent"in window||delete Re.transitionend.transition);var Ge=qe("animationend"),Ve=qe("animationiteration"),$e=qe("animationstart"),Je=qe("transitionend"),Xe="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Qe=new("function"==typeof WeakMap?WeakMap:Map);function Ke(e){var t=Qe.get(e);return void 0===t&&(t=new Map,Qe.set(e,t)),t}function Ze(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function et(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function tt(e){if(Ze(e)!==e)throw Error(i(188))}function nt(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ze(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return tt(a),e;if(o===r)return tt(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var s=!1,l=a.child;l;){if(l===n){s=!0,n=a,r=o;break}if(l===r){s=!0,r=a,n=o;break}l=l.sibling}if(!s){for(l=o.child;l;){if(l===n){s=!0,n=o,r=a;break}if(l===r){s=!0,r=o,n=a;break}l=l.sibling}if(!s)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function rt(e,t){if(null==t)throw Error(i(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function at(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var ot=null;function it(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)g(e,t[r],n[r]);else t&&g(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function st(e){if(null!==e&&(ot=rt(ot,e)),e=ot,ot=null,e){if(at(e,it),ot)throw Error(i(95));if(u)throw e=d,u=!1,d=null,e}}function lt(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function ct(e){if(!S)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}var ut=[];function dt(e){e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>ut.length&&ut.push(e)}function pt(e,t,n,r){if(ut.length){var a=ut.pop();return a.topLevelType=e,a.eventSystemFlags=r,a.nativeEvent=t,a.targetInst=n,a}return{topLevelType:e,eventSystemFlags:r,nativeEvent:t,targetInst:n,ancestors:[]}}function mt(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(3===r.tag)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=3!==r.tag?null:r.stateNode.containerInfo}if(!r)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=Sn(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var a=lt(e.nativeEvent);r=e.topLevelType;var o=e.nativeEvent,i=e.eventSystemFlags;0===n&&(i|=64);for(var s=null,l=0;l<v.length;l++){var c=v[l];c&&(c=c.extractEvents(r,t,o,a,i))&&(s=rt(s,c))}st(s)}}function ft(e,t,n){if(!n.has(e)){switch(e){case"scroll":$t(t,"scroll",!0);break;case"focus":case"blur":$t(t,"focus",!0),$t(t,"blur",!0),n.set("blur",null),n.set("focus",null);break;case"cancel":case"close":ct(e)&&$t(t,e,!0);break;case"invalid":case"submit":case"reset":break;default:-1===Xe.indexOf(e)&&Vt(e,t)}n.set(e,null)}}var ht,bt,gt,_t=!1,yt=[],kt=null,wt=null,vt=null,Mt=new Map,Lt=new Map,Tt=[],Et="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),St="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" ");function xt(e,t,n,r,a){return{blockedOn:e,topLevelType:t,eventSystemFlags:32|n,nativeEvent:a,container:r}}function Ct(e,t){switch(e){case"focus":case"blur":kt=null;break;case"dragenter":case"dragleave":wt=null;break;case"mouseover":case"mouseout":vt=null;break;case"pointerover":case"pointerout":Mt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Lt.delete(t.pointerId)}}function Dt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=xt(t,n,r,a,o),null!==t&&(null!==(t=xn(t))&&bt(t)),e):(e.eventSystemFlags|=r,e)}function Ot(e){var t=Sn(e.target);if(null!==t){var n=Ze(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=et(n)))return e.blockedOn=t,void o.unstable_runWithPriority(e.priority,(function(){gt(n)}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Yt(e){if(null!==e.blockedOn)return!1;var t=Kt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);if(null!==t){var n=xn(t);return null!==n&&bt(n),e.blockedOn=t,!1}return!0}function jt(e,t,n){Yt(e)&&n.delete(t)}function Pt(){for(_t=!1;0<yt.length;){var e=yt[0];if(null!==e.blockedOn){null!==(e=xn(e.blockedOn))&&ht(e);break}var t=Kt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);null!==t?e.blockedOn=t:yt.shift()}null!==kt&&Yt(kt)&&(kt=null),null!==wt&&Yt(wt)&&(wt=null),null!==vt&&Yt(vt)&&(vt=null),Mt.forEach(jt),Lt.forEach(jt)}function Nt(e,t){e.blockedOn===t&&(e.blockedOn=null,_t||(_t=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,Pt)))}function Bt(e){function t(t){return Nt(t,e)}if(0<yt.length){Nt(yt[0],e);for(var n=1;n<yt.length;n++){var r=yt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==kt&&Nt(kt,e),null!==wt&&Nt(wt,e),null!==vt&&Nt(vt,e),Mt.forEach(t),Lt.forEach(t),n=0;n<Tt.length;n++)(r=Tt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Tt.length&&null===(n=Tt[0]).blockedOn;)Ot(n),null===n.blockedOn&&Tt.shift()}var At={},Ht=new Map,zt=new Map,It=["abort","abort",Ge,"animationEnd",Ve,"animationIteration",$e,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Je,"transitionEnd","waiting","waiting"];function Ft(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1],o="on"+(a[0].toUpperCase()+a.slice(1));o={phasedRegistrationNames:{bubbled:o,captured:o+"Capture"},dependencies:[r],eventPriority:t},zt.set(r,t),Ht.set(r,o),At[a]=o}}Ft("blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Ft("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Ft(It,2);for(var Rt="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Wt=0;Wt<Rt.length;Wt++)zt.set(Rt[Wt],0);var Ut=o.unstable_UserBlockingPriority,qt=o.unstable_runWithPriority,Gt=!0;function Vt(e,t){$t(t,e,!1)}function $t(e,t,n){var r=zt.get(t);switch(void 0===r?2:r){case 0:r=Jt.bind(null,t,1,e);break;case 1:r=Xt.bind(null,t,1,e);break;default:r=Qt.bind(null,t,1,e)}n?e.addEventListener(t,r,!0):e.addEventListener(t,r,!1)}function Jt(e,t,n,r){H||B();var a=Qt,o=H;H=!0;try{N(a,e,t,n,r)}finally{(H=o)||I()}}function Xt(e,t,n,r){qt(Ut,Qt.bind(null,e,t,n,r))}function Qt(e,t,n,r){if(Gt)if(0<yt.length&&-1<Et.indexOf(e))e=xt(null,e,t,n,r),yt.push(e);else{var a=Kt(e,t,n,r);if(null===a)Ct(e,r);else if(-1<Et.indexOf(e))e=xt(a,e,t,n,r),yt.push(e);else if(!function(e,t,n,r,a){switch(t){case"focus":return kt=Dt(kt,e,t,n,r,a),!0;case"dragenter":return wt=Dt(wt,e,t,n,r,a),!0;case"mouseover":return vt=Dt(vt,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return Mt.set(o,Dt(Mt.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,Lt.set(o,Dt(Lt.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r)){Ct(e,r),e=pt(e,r,null,t);try{F(mt,e)}finally{dt(e)}}}}function Kt(e,t,n,r){if(null!==(n=Sn(n=lt(r)))){var a=Ze(n);if(null===a)n=null;else{var o=a.tag;if(13===o){if(null!==(n=et(a)))return n;n=null}else if(3===o){if(a.stateNode.hydrate)return 3===a.tag?a.stateNode.containerInfo:null;n=null}else a!==n&&(n=null)}}e=pt(e,r,n,t);try{F(mt,e)}finally{dt(e)}return null}var Zt={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},en=["Webkit","ms","Moz","O"];function tn(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||Zt.hasOwnProperty(e)&&Zt[e]?(""+t).trim():t+"px"}function nn(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=tn(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(Zt).forEach((function(e){en.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Zt[t]=Zt[e]}))}));var rn=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function an(e,t){if(t){if(rn[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e,""));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62,""))}}function on(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var sn=Pe;function ln(e,t){var n=Ke(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=T[t];for(var r=0;r<t.length;r++)ft(t[r],e,n)}function cn(){}function un(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function dn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pn(e,t){var n,r=dn(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=dn(r)}}function mn(){for(var e=window,t=un();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=un((e=t.contentWindow).document)}return t}function fn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var hn=null,bn=null;function gn(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function _n(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var yn="function"==typeof setTimeout?setTimeout:void 0,kn="function"==typeof clearTimeout?clearTimeout:void 0;function wn(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function vn(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Mn=Math.random().toString(36).slice(2),Ln="__reactInternalInstance$"+Mn,Tn="__reactEventHandlers$"+Mn,En="__reactContainere$"+Mn;function Sn(e){var t=e[Ln];if(t)return t;for(var n=e.parentNode;n;){if(t=n[En]||n[Ln]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=vn(e);null!==e;){if(n=e[Ln])return n;e=vn(e)}return t}n=(e=n).parentNode}return null}function xn(e){return!(e=e[Ln]||e[En])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function Cn(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function Dn(e){return e[Tn]||null}function On(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function Yn(e,t){var n=e.stateNode;if(!n)return null;var r=f(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}function jn(e,t,n){(t=Yn(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=rt(n._dispatchListeners,t),n._dispatchInstances=rt(n._dispatchInstances,e))}function Pn(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=On(t);for(t=n.length;0<t--;)jn(n[t],"captured",e);for(t=0;t<n.length;t++)jn(n[t],"bubbled",e)}}function Nn(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=Yn(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=rt(n._dispatchListeners,t),n._dispatchInstances=rt(n._dispatchInstances,e))}function Bn(e){e&&e.dispatchConfig.registrationName&&Nn(e._targetInst,null,e)}function An(e){at(e,Pn)}var Hn=null,zn=null,In=null;function Fn(){if(In)return In;var e,t,n=zn,r=n.length,a="value"in Hn?Hn.value:Hn.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return In=a.slice(e,1<t?1-t:void 0)}function Rn(){return!0}function Wn(){return!1}function Un(e,t,n,r){for(var a in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(a)&&((t=e[a])?this[a]=t(n):"target"===a?this.target=r:this[a]=n[a]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?Rn:Wn,this.isPropagationStopped=Wn,this}function qn(e,t,n,r){if(this.eventPool.length){var a=this.eventPool.pop();return this.call(a,e,t,n,r),a}return new this(e,t,n,r)}function Gn(e){if(!(e instanceof this))throw Error(i(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function Vn(e){e.eventPool=[],e.getPooled=qn,e.release=Gn}a(Un.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=Rn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=Rn)},persist:function(){this.isPersistent=Rn},isPersistent:Wn,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=Wn,this._dispatchInstances=this._dispatchListeners=null}}),Un.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Un.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var o=new t;return a(o,n.prototype),n.prototype=o,n.prototype.constructor=n,n.Interface=a({},r.Interface,e),n.extend=r.extend,Vn(n),n},Vn(Un);var $n=Un.extend({data:null}),Jn=Un.extend({data:null}),Xn=[9,13,27,32],Qn=S&&"CompositionEvent"in window,Kn=null;S&&"documentMode"in document&&(Kn=document.documentMode);var Zn=S&&"TextEvent"in window&&!Kn,er=S&&(!Qn||Kn&&8<Kn&&11>=Kn),tr=String.fromCharCode(32),nr={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},rr=!1;function ar(e,t){switch(e){case"keyup":return-1!==Xn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function or(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ir=!1;var sr={eventTypes:nr,extractEvents:function(e,t,n,r){var a;if(Qn)e:{switch(e){case"compositionstart":var o=nr.compositionStart;break e;case"compositionend":o=nr.compositionEnd;break e;case"compositionupdate":o=nr.compositionUpdate;break e}o=void 0}else ir?ar(e,n)&&(o=nr.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=nr.compositionStart);return o?(er&&"ko"!==n.locale&&(ir||o!==nr.compositionStart?o===nr.compositionEnd&&ir&&(a=Fn()):(zn="value"in(Hn=r)?Hn.value:Hn.textContent,ir=!0)),o=$n.getPooled(o,t,n,r),a?o.data=a:null!==(a=or(n))&&(o.data=a),An(o),a=o):a=null,(e=Zn?function(e,t){switch(e){case"compositionend":return or(t);case"keypress":return 32!==t.which?null:(rr=!0,tr);case"textInput":return(e=t.data)===tr&&rr?null:e;default:return null}}(e,n):function(e,t){if(ir)return"compositionend"===e||!Qn&&ar(e,t)?(e=Fn(),In=zn=Hn=null,ir=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return er&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=Jn.getPooled(nr.beforeInput,t,n,r)).data=e,An(t)):t=null,null===a?t:null===t?a:[a,t]}},lr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function cr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!lr[e.type]:"textarea"===t}var ur={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function dr(e,t,n){return(e=Un.getPooled(ur.change,e,t,n)).type="change",Y(n),An(e),e}var pr=null,mr=null;function fr(e){st(e)}function hr(e){if(we(Cn(e)))return e}function br(e,t){if("change"===e)return t}var gr=!1;function _r(){pr&&(pr.detachEvent("onpropertychange",yr),mr=pr=null)}function yr(e){if("value"===e.propertyName&&hr(mr))if(e=dr(mr,e,lt(e)),H)st(e);else{H=!0;try{P(fr,e)}finally{H=!1,I()}}}function kr(e,t,n){"focus"===e?(_r(),mr=n,(pr=t).attachEvent("onpropertychange",yr)):"blur"===e&&_r()}function wr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return hr(mr)}function vr(e,t){if("click"===e)return hr(t)}function Mr(e,t){if("input"===e||"change"===e)return hr(t)}S&&(gr=ct("input")&&(!document.documentMode||9<document.documentMode));var Lr={eventTypes:ur,_isInputEventSupported:gr,extractEvents:function(e,t,n,r){var a=t?Cn(t):window,o=a.nodeName&&a.nodeName.toLowerCase();if("select"===o||"input"===o&&"file"===a.type)var i=br;else if(cr(a))if(gr)i=Mr;else{i=wr;var s=kr}else(o=a.nodeName)&&"input"===o.toLowerCase()&&("checkbox"===a.type||"radio"===a.type)&&(i=vr);if(i&&(i=i(e,t)))return dr(i,n,r);s&&s(e,a,t),"blur"===e&&(e=a._wrapperState)&&e.controlled&&"number"===a.type&&Se(a,"number",a.value)}},Tr=Un.extend({view:null,detail:null}),Er={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Sr(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Er[e])&&!!t[e]}function xr(){return Sr}var Cr=0,Dr=0,Or=!1,Yr=!1,jr=Tr.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:xr,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=Cr;return Cr=e.screenX,Or?"mousemove"===e.type?e.screenX-t:0:(Or=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Dr;return Dr=e.screenY,Yr?"mousemove"===e.type?e.screenY-t:0:(Yr=!0,0)}}),Pr=jr.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Nr={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Br={eventTypes:Nr,extractEvents:function(e,t,n,r,a){var o="mouseover"===e||"pointerover"===e,i="mouseout"===e||"pointerout"===e;if(o&&0==(32&a)&&(n.relatedTarget||n.fromElement)||!i&&!o)return null;(o=r.window===r?r:(o=r.ownerDocument)?o.defaultView||o.parentWindow:window,i)?(i=t,null!==(t=(t=n.relatedTarget||n.toElement)?Sn(t):null)&&(t!==Ze(t)||5!==t.tag&&6!==t.tag)&&(t=null)):i=null;if(i===t)return null;if("mouseout"===e||"mouseover"===e)var s=jr,l=Nr.mouseLeave,c=Nr.mouseEnter,u="mouse";else"pointerout"!==e&&"pointerover"!==e||(s=Pr,l=Nr.pointerLeave,c=Nr.pointerEnter,u="pointer");if(e=null==i?o:Cn(i),o=null==t?o:Cn(t),(l=s.getPooled(l,i,n,r)).type=u+"leave",l.target=e,l.relatedTarget=o,(n=s.getPooled(c,t,n,r)).type=u+"enter",n.target=o,n.relatedTarget=e,u=t,(r=i)&&u)e:{for(c=u,i=0,e=s=r;e;e=On(e))i++;for(e=0,t=c;t;t=On(t))e++;for(;0<i-e;)s=On(s),i--;for(;0<e-i;)c=On(c),e--;for(;i--;){if(s===c||s===c.alternate)break e;s=On(s),c=On(c)}s=null}else s=null;for(c=s,s=[];r&&r!==c&&(null===(i=r.alternate)||i!==c);)s.push(r),r=On(r);for(r=[];u&&u!==c&&(null===(i=u.alternate)||i!==c);)r.push(u),u=On(u);for(u=0;u<s.length;u++)Nn(s[u],"bubbled",l);for(u=r.length;0<u--;)Nn(r[u],"captured",n);return 0==(64&a)?[l]:[l,n]}};var Ar="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},Hr=Object.prototype.hasOwnProperty;function zr(e,t){if(Ar(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!Hr.call(t,n[r])||!Ar(e[n[r]],t[n[r]]))return!1;return!0}var Ir=S&&"documentMode"in document&&11>=document.documentMode,Fr={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Rr=null,Wr=null,Ur=null,qr=!1;function Gr(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return qr||null==Rr||Rr!==un(n)?null:("selectionStart"in(n=Rr)&&fn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Ur&&zr(Ur,n)?null:(Ur=n,(e=Un.getPooled(Fr.select,Wr,e,t)).type="select",e.target=Rr,An(e),e))}var Vr={eventTypes:Fr,extractEvents:function(e,t,n,r,a,o){if(!(o=!(a=o||(r.window===r?r.document:9===r.nodeType?r:r.ownerDocument)))){e:{a=Ke(a),o=T.onSelect;for(var i=0;i<o.length;i++)if(!a.has(o[i])){a=!1;break e}a=!0}o=!a}if(o)return null;switch(a=t?Cn(t):window,e){case"focus":(cr(a)||"true"===a.contentEditable)&&(Rr=a,Wr=t,Ur=null);break;case"blur":Ur=Wr=Rr=null;break;case"mousedown":qr=!0;break;case"contextmenu":case"mouseup":case"dragend":return qr=!1,Gr(n,r);case"selectionchange":if(Ir)break;case"keydown":case"keyup":return Gr(n,r)}return null}},$r=Un.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Jr=Un.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Xr=Tr.extend({relatedTarget:null});function Qr(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var Kr={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Zr={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},ea=Tr.extend({key:function(e){if(e.key){var t=Kr[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=Qr(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Zr[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:xr,charCode:function(e){return"keypress"===e.type?Qr(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?Qr(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),ta=jr.extend({dataTransfer:null}),na=Tr.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:xr}),ra=Un.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),aa=jr.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),oa={eventTypes:At,extractEvents:function(e,t,n,r){var a=Ht.get(e);if(!a)return null;switch(e){case"keypress":if(0===Qr(n))return null;case"keydown":case"keyup":e=ea;break;case"blur":case"focus":e=Xr;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=jr;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=ta;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=na;break;case Ge:case Ve:case $e:e=$r;break;case Je:e=ra;break;case"scroll":e=Tr;break;case"wheel":e=aa;break;case"copy":case"cut":case"paste":e=Jr;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Pr;break;default:e=Un}return An(t=e.getPooled(a,t,n,r)),t}};if(_)throw Error(i(101));_=Array.prototype.slice.call("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),k(),f=Dn,h=xn,b=Cn,E({SimpleEventPlugin:oa,EnterLeaveEventPlugin:Br,ChangeEventPlugin:Lr,SelectEventPlugin:Vr,BeforeInputEventPlugin:sr});var ia=[],sa=-1;function la(e){0>sa||(e.current=ia[sa],ia[sa]=null,sa--)}function ca(e,t){sa++,ia[sa]=e.current,e.current=t}var ua={},da={current:ua},pa={current:!1},ma=ua;function fa(e,t){var n=e.type.contextTypes;if(!n)return ua;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ha(e){return null!=(e=e.childContextTypes)}function ba(){la(pa),la(da)}function ga(e,t,n){if(da.current!==ua)throw Error(i(168));ca(da,t),ca(pa,n)}function _a(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,be(t)||"Unknown",o));return a({},n,{},r)}function ya(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ua,ma=da.current,ca(da,e),ca(pa,pa.current),!0}function ka(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=_a(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,la(pa),la(da),ca(da,e)):la(pa),ca(pa,n)}var wa=o.unstable_runWithPriority,va=o.unstable_scheduleCallback,Ma=o.unstable_cancelCallback,La=o.unstable_requestPaint,Ta=o.unstable_now,Ea=o.unstable_getCurrentPriorityLevel,Sa=o.unstable_ImmediatePriority,xa=o.unstable_UserBlockingPriority,Ca=o.unstable_NormalPriority,Da=o.unstable_LowPriority,Oa=o.unstable_IdlePriority,Ya={},ja=o.unstable_shouldYield,Pa=void 0!==La?La:function(){},Na=null,Ba=null,Aa=!1,Ha=Ta(),za=1e4>Ha?Ta:function(){return Ta()-Ha};function Ia(){switch(Ea()){case Sa:return 99;case xa:return 98;case Ca:return 97;case Da:return 96;case Oa:return 95;default:throw Error(i(332))}}function Fa(e){switch(e){case 99:return Sa;case 98:return xa;case 97:return Ca;case 96:return Da;case 95:return Oa;default:throw Error(i(332))}}function Ra(e,t){return e=Fa(e),wa(e,t)}function Wa(e,t,n){return e=Fa(e),va(e,t,n)}function Ua(e){return null===Na?(Na=[e],Ba=va(Sa,Ga)):Na.push(e),Ya}function qa(){if(null!==Ba){var e=Ba;Ba=null,Ma(e)}Ga()}function Ga(){if(!Aa&&null!==Na){Aa=!0;var e=0;try{var t=Na;Ra(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Na=null}catch(t){throw null!==Na&&(Na=Na.slice(e+1)),va(Sa,qa),t}finally{Aa=!1}}}function Va(e,t,n){return 1073741821-(1+((1073741821-e+t/10)/(n/=10)|0))*n}function $a(e,t){if(e&&e.defaultProps)for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var Ja={current:null},Xa=null,Qa=null,Ka=null;function Za(){Ka=Qa=Xa=null}function eo(e){var t=Ja.current;la(Ja),e.type._context._currentValue=t}function to(e,t){for(;null!==e;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t);else{if(!(null!==n&&n.childExpirationTime<t))break;n.childExpirationTime=t}e=e.return}}function no(e,t){Xa=e,Ka=Qa=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(e.expirationTime>=t&&(Di=!0),e.firstContext=null)}function ro(e,t){if(Ka!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(Ka=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Qa){if(null===Xa)throw Error(i(308));Qa=t,Xa.dependencies={expirationTime:0,firstContext:t,responders:null}}else Qa=Qa.next=t;return e._currentValue}var ao=!1;function oo(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}function io(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,baseQueue:e.baseQueue,shared:e.shared,effects:e.effects})}function so(e,t){return(e={expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null}).next=e}function lo(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function co(e,t){var n=e.alternate;null!==n&&io(n,e),null===(n=(e=e.updateQueue).baseQueue)?(e.baseQueue=t.next=t,t.next=t):(t.next=n.next,n.next=t)}function uo(e,t,n,r){var o=e.updateQueue;ao=!1;var i=o.baseQueue,s=o.shared.pending;if(null!==s){if(null!==i){var l=i.next;i.next=s.next,s.next=l}i=s,o.shared.pending=null,null!==(l=e.alternate)&&(null!==(l=l.updateQueue)&&(l.baseQueue=s))}if(null!==i){l=i.next;var c=o.baseState,u=0,d=null,p=null,m=null;if(null!==l)for(var f=l;;){if((s=f.expirationTime)<r){var h={expirationTime:f.expirationTime,suspenseConfig:f.suspenseConfig,tag:f.tag,payload:f.payload,callback:f.callback,next:null};null===m?(p=m=h,d=c):m=m.next=h,s>u&&(u=s)}else{null!==m&&(m=m.next={expirationTime:1073741823,suspenseConfig:f.suspenseConfig,tag:f.tag,payload:f.payload,callback:f.callback,next:null}),ol(s,f.suspenseConfig);e:{var b=e,g=f;switch(s=t,h=n,g.tag){case 1:if("function"==typeof(b=g.payload)){c=b.call(h,c,s);break e}c=b;break e;case 3:b.effectTag=-4097&b.effectTag|64;case 0:if(null==(s="function"==typeof(b=g.payload)?b.call(h,c,s):b))break e;c=a({},c,s);break e;case 2:ao=!0}}null!==f.callback&&(e.effectTag|=32,null===(s=o.effects)?o.effects=[f]:s.push(f))}if(null===(f=f.next)||f===l){if(null===(s=o.shared.pending))break;f=i.next=s.next,s.next=l,o.baseQueue=i=s,o.shared.pending=null}}null===m?d=c:m.next=p,o.baseState=d,o.baseQueue=m,il(u),e.expirationTime=u,e.memoizedState=c}}function po(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=a,a=n,"function"!=typeof r)throw Error(i(191,r));r.call(a)}}}var mo=X.ReactCurrentBatchConfig,fo=(new r.Component).refs;function ho(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.expirationTime&&(e.updateQueue.baseState=n)}var bo={isMounted:function(e){return!!(e=e._reactInternalFiber)&&Ze(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=Gs(),a=mo.suspense;(a=so(r=Vs(r,e,a),a)).payload=t,null!=n&&(a.callback=n),lo(e,a),$s(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=Gs(),a=mo.suspense;(a=so(r=Vs(r,e,a),a)).tag=1,a.payload=t,null!=n&&(a.callback=n),lo(e,a),$s(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=Gs(),r=mo.suspense;(r=so(n=Vs(n,e,r),r)).tag=2,null!=t&&(r.callback=t),lo(e,r),$s(e,n)}};function go(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!zr(n,r)||!zr(a,o))}function _o(e,t,n){var r=!1,a=ua,o=t.contextType;return"object"==typeof o&&null!==o?o=ro(o):(a=ha(t)?ma:da.current,o=(r=null!=(r=t.contextTypes))?fa(e,a):ua),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=bo,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function yo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&bo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=fo,oo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=ro(o):(o=ha(t)?ma:da.current,a.context=fa(e,o)),uo(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(ho(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&bo.enqueueReplaceState(a,a.state,null),uo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.effectTag|=4)}var wo=Array.isArray;function vo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:((t=function(e){var t=r.refs;t===fo&&(t=r.refs={}),null===e?delete t[a]:t[a]=e})._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Mo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,""))}function Lo(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=El(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function s(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Cl(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=vo(e,t,n),r.return=e,r):((r=Sl(n.type,n.key,n.props,null,e.mode,r)).ref=vo(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Dl(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=xl(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Cl(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case ee:return(n=Sl(t.type,t.key,t.props,null,e.mode,n)).ref=vo(e,null,t),n.return=e,n;case te:return(t=Dl(t,e.mode,n)).return=e,t}if(wo(t)||he(t))return(t=xl(t,e.mode,n,null)).return=e,t;Mo(e,t)}return null}function m(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case ee:return n.key===a?n.type===ne?d(e,t,n.props.children,r,a):c(e,t,n,r):null;case te:return n.key===a?u(e,t,n,r):null}if(wo(n)||he(n))return null!==a?null:d(e,t,n,r,null);Mo(e,n)}return null}function f(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case ee:return e=e.get(null===r.key?n:r.key)||null,r.type===ne?d(t,e,r.props.children,a,r.key):c(t,e,r,a);case te:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(wo(r)||he(r))return d(t,e=e.get(n)||null,r,a,null);Mo(t,r)}return null}function h(a,i,s,l){for(var c=null,u=null,d=i,h=i=0,b=null;null!==d&&h<s.length;h++){d.index>h?(b=d,d=null):b=d.sibling;var g=m(a,d,s[h],l);if(null===g){null===d&&(d=b);break}e&&d&&null===g.alternate&&t(a,d),i=o(g,i,h),null===u?c=g:u.sibling=g,u=g,d=b}if(h===s.length)return n(a,d),c;if(null===d){for(;h<s.length;h++)null!==(d=p(a,s[h],l))&&(i=o(d,i,h),null===u?c=d:u.sibling=d,u=d);return c}for(d=r(a,d);h<s.length;h++)null!==(b=f(d,a,h,s[h],l))&&(e&&null!==b.alternate&&d.delete(null===b.key?h:b.key),i=o(b,i,h),null===u?c=b:u.sibling=b,u=b);return e&&d.forEach((function(e){return t(a,e)})),c}function b(a,s,l,c){var u=he(l);if("function"!=typeof u)throw Error(i(150));if(null==(l=u.call(l)))throw Error(i(151));for(var d=u=null,h=s,b=s=0,g=null,_=l.next();null!==h&&!_.done;b++,_=l.next()){h.index>b?(g=h,h=null):g=h.sibling;var y=m(a,h,_.value,c);if(null===y){null===h&&(h=g);break}e&&h&&null===y.alternate&&t(a,h),s=o(y,s,b),null===d?u=y:d.sibling=y,d=y,h=g}if(_.done)return n(a,h),u;if(null===h){for(;!_.done;b++,_=l.next())null!==(_=p(a,_.value,c))&&(s=o(_,s,b),null===d?u=_:d.sibling=_,d=_);return u}for(h=r(a,h);!_.done;b++,_=l.next())null!==(_=f(h,a,b,_.value,c))&&(e&&null!==_.alternate&&h.delete(null===_.key?b:_.key),s=o(_,s,b),null===d?u=_:d.sibling=_,d=_);return e&&h.forEach((function(e){return t(a,e)})),u}return function(e,r,o,l){var c="object"==typeof o&&null!==o&&o.type===ne&&null===o.key;c&&(o=o.props.children);var u="object"==typeof o&&null!==o;if(u)switch(o.$$typeof){case ee:e:{for(u=o.key,c=r;null!==c;){if(c.key===u){switch(c.tag){case 7:if(o.type===ne){n(e,c.sibling),(r=a(c,o.props.children)).return=e,e=r;break e}break;default:if(c.elementType===o.type){n(e,c.sibling),(r=a(c,o.props)).ref=vo(e,c,o),r.return=e,e=r;break e}}n(e,c);break}t(e,c),c=c.sibling}o.type===ne?((r=xl(o.props.children,e.mode,l,o.key)).return=e,e=r):((l=Sl(o.type,o.key,o.props,null,e.mode,l)).ref=vo(e,r,o),l.return=e,e=l)}return s(e);case te:e:{for(c=o.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Dl(o,e.mode,l)).return=e,e=r}return s(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Cl(o,e.mode,l)).return=e,e=r),s(e);if(wo(o))return h(e,r,o,l);if(he(o))return b(e,r,o,l);if(u&&Mo(e,o),void 0===o&&!c)switch(e.tag){case 1:case 0:throw e=e.type,Error(i(152,e.displayName||e.name||"Component"))}return n(e,r)}}var To=Lo(!0),Eo=Lo(!1),So={},xo={current:So},Co={current:So},Do={current:So};function Oo(e){if(e===So)throw Error(i(174));return e}function Yo(e,t){switch(ca(Do,t),ca(Co,e),ca(xo,So),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ae(null,"");break;default:t=Ae(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}la(xo),ca(xo,t)}function jo(){la(xo),la(Co),la(Do)}function Po(e){Oo(Do.current);var t=Oo(xo.current),n=Ae(t,e.type);t!==n&&(ca(Co,e),ca(xo,n))}function No(e){Co.current===e&&(la(xo),la(Co))}var Bo={current:0};function Ao(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Ho(e,t){return{responder:e,props:t}}var zo=X.ReactCurrentDispatcher,Io=X.ReactCurrentBatchConfig,Fo=0,Ro=null,Wo=null,Uo=null,qo=!1;function Go(){throw Error(i(321))}function Vo(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Ar(e[n],t[n]))return!1;return!0}function $o(e,t,n,r,a,o){if(Fo=o,Ro=t,t.memoizedState=null,t.updateQueue=null,t.expirationTime=0,zo.current=null===e||null===e.memoizedState?gi:_i,e=n(r,a),t.expirationTime===Fo){o=0;do{if(t.expirationTime=0,!(25>o))throw Error(i(301));o+=1,Uo=Wo=null,t.updateQueue=null,zo.current=yi,e=n(r,a)}while(t.expirationTime===Fo)}if(zo.current=bi,t=null!==Wo&&null!==Wo.next,Fo=0,Uo=Wo=Ro=null,qo=!1,t)throw Error(i(300));return e}function Jo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Uo?Ro.memoizedState=Uo=e:Uo=Uo.next=e,Uo}function Xo(){if(null===Wo){var e=Ro.alternate;e=null!==e?e.memoizedState:null}else e=Wo.next;var t=null===Uo?Ro.memoizedState:Uo.next;if(null!==t)Uo=t,Wo=e;else{if(null===e)throw Error(i(310));e={memoizedState:(Wo=e).memoizedState,baseState:Wo.baseState,baseQueue:Wo.baseQueue,queue:Wo.queue,next:null},null===Uo?Ro.memoizedState=Uo=e:Uo=Uo.next=e}return Uo}function Qo(e,t){return"function"==typeof t?t(e):t}function Ko(e){var t=Xo(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=Wo,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var s=a.next;a.next=o.next,o.next=s}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var l=s=o=null,c=a;do{var u=c.expirationTime;if(u<Fo){var d={expirationTime:c.expirationTime,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===l?(s=l=d,o=r):l=l.next=d,u>Ro.expirationTime&&(Ro.expirationTime=u,il(u))}else null!==l&&(l=l.next={expirationTime:1073741823,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),ol(u,c.suspenseConfig),r=c.eagerReducer===e?c.eagerState:e(r,c.action);c=c.next}while(null!==c&&c!==a);null===l?o=r:l.next=s,Ar(r,t.memoizedState)||(Di=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=l,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function Zo(e){var t=Xo(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var s=a=a.next;do{o=e(o,s.action),s=s.next}while(s!==a);Ar(o,t.memoizedState)||(Di=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function ei(e){var t=Jo();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:Qo,lastRenderedState:e}).dispatch=hi.bind(null,Ro,e),[t.memoizedState,e]}function ti(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Ro.updateQueue)?(t={lastEffect:null},Ro.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function ni(){return Xo().memoizedState}function ri(e,t,n,r){var a=Jo();Ro.effectTag|=e,a.memoizedState=ti(1|t,n,void 0,void 0===r?null:r)}function ai(e,t,n,r){var a=Xo();r=void 0===r?null:r;var o=void 0;if(null!==Wo){var i=Wo.memoizedState;if(o=i.destroy,null!==r&&Vo(r,i.deps))return void ti(t,n,o,r)}Ro.effectTag|=e,a.memoizedState=ti(1|t,n,o,r)}function oi(e,t){return ri(516,4,e,t)}function ii(e,t){return ai(516,4,e,t)}function si(e,t){return ai(4,2,e,t)}function li(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function ci(e,t,n){return n=null!=n?n.concat([e]):null,ai(4,2,li.bind(null,t,e),n)}function ui(){}function di(e,t){return Jo().memoizedState=[e,void 0===t?null:t],e}function pi(e,t){var n=Xo();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Vo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function mi(e,t){var n=Xo();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Vo(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function fi(e,t,n){var r=Ia();Ra(98>r?98:r,(function(){e(!0)})),Ra(97<r?97:r,(function(){var r=Io.suspense;Io.suspense=void 0===t?null:t;try{e(!1),n()}finally{Io.suspense=r}}))}function hi(e,t,n){var r=Gs(),a=mo.suspense;a={expirationTime:r=Vs(r,e,a),suspenseConfig:a,action:n,eagerReducer:null,eagerState:null,next:null};var o=t.pending;if(null===o?a.next=a:(a.next=o.next,o.next=a),t.pending=a,o=e.alternate,e===Ro||null!==o&&o===Ro)qo=!0,a.expirationTime=Fo,Ro.expirationTime=Fo;else{if(0===e.expirationTime&&(null===o||0===o.expirationTime)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,s=o(i,n);if(a.eagerReducer=o,a.eagerState=s,Ar(s,i))return}catch(e){}$s(e,r)}}var bi={readContext:ro,useCallback:Go,useContext:Go,useEffect:Go,useImperativeHandle:Go,useLayoutEffect:Go,useMemo:Go,useReducer:Go,useRef:Go,useState:Go,useDebugValue:Go,useResponder:Go,useDeferredValue:Go,useTransition:Go},gi={readContext:ro,useCallback:di,useContext:ro,useEffect:oi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ri(4,2,li.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ri(4,2,e,t)},useMemo:function(e,t){var n=Jo();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Jo();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=hi.bind(null,Ro,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Jo().memoizedState=e},useState:ei,useDebugValue:ui,useResponder:Ho,useDeferredValue:function(e,t){var n=ei(e),r=n[0],a=n[1];return oi((function(){var n=Io.suspense;Io.suspense=void 0===t?null:t;try{a(e)}finally{Io.suspense=n}}),[e,t]),r},useTransition:function(e){var t=ei(!1),n=t[0];return t=t[1],[di(fi.bind(null,t,e),[t,e]),n]}},_i={readContext:ro,useCallback:pi,useContext:ro,useEffect:ii,useImperativeHandle:ci,useLayoutEffect:si,useMemo:mi,useReducer:Ko,useRef:ni,useState:function(){return Ko(Qo)},useDebugValue:ui,useResponder:Ho,useDeferredValue:function(e,t){var n=Ko(Qo),r=n[0],a=n[1];return ii((function(){var n=Io.suspense;Io.suspense=void 0===t?null:t;try{a(e)}finally{Io.suspense=n}}),[e,t]),r},useTransition:function(e){var t=Ko(Qo),n=t[0];return t=t[1],[pi(fi.bind(null,t,e),[t,e]),n]}},yi={readContext:ro,useCallback:pi,useContext:ro,useEffect:ii,useImperativeHandle:ci,useLayoutEffect:si,useMemo:mi,useReducer:Zo,useRef:ni,useState:function(){return Zo(Qo)},useDebugValue:ui,useResponder:Ho,useDeferredValue:function(e,t){var n=Zo(Qo),r=n[0],a=n[1];return ii((function(){var n=Io.suspense;Io.suspense=void 0===t?null:t;try{a(e)}finally{Io.suspense=n}}),[e,t]),r},useTransition:function(e){var t=Zo(Qo),n=t[0];return t=t[1],[pi(fi.bind(null,t,e),[t,e]),n]}},ki=null,wi=null,vi=!1;function Mi(e,t){var n=Ll(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Li(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function Ti(e){if(vi){var t=wi;if(t){var n=t;if(!Li(e,t)){if(!(t=wn(n.nextSibling))||!Li(e,t))return e.effectTag=-1025&e.effectTag|2,vi=!1,void(ki=e);Mi(ki,n)}ki=e,wi=wn(t.firstChild)}else e.effectTag=-1025&e.effectTag|2,vi=!1,ki=e}}function Ei(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ki=e}function Si(e){if(e!==ki)return!1;if(!vi)return Ei(e),vi=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!_n(t,e.memoizedProps))for(t=wi;t;)Mi(e,t),t=wn(t.nextSibling);if(Ei(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){wi=wn(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}wi=null}}else wi=ki?wn(e.stateNode.nextSibling):null;return!0}function xi(){wi=ki=null,vi=!1}var Ci=X.ReactCurrentOwner,Di=!1;function Oi(e,t,n,r){t.child=null===e?Eo(t,null,n,r):To(t,e.child,n,r)}function Yi(e,t,n,r,a){n=n.render;var o=t.ref;return no(t,a),r=$o(e,t,n,r,o,a),null===e||Di?(t.effectTag|=1,Oi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=a&&(e.expirationTime=0),$i(e,t,a))}function ji(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Tl(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Sl(n.type,null,r,null,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Pi(e,t,i,r,a,o))}return i=e.child,a<o&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:zr)(a,r)&&e.ref===t.ref)?$i(e,t,o):(t.effectTag|=1,(e=El(i,r)).ref=t.ref,e.return=t,t.child=e)}function Pi(e,t,n,r,a,o){return null!==e&&zr(e.memoizedProps,r)&&e.ref===t.ref&&(Di=!1,a<o)?(t.expirationTime=e.expirationTime,$i(e,t,o)):Bi(e,t,n,r,o)}function Ni(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Bi(e,t,n,r,a){var o=ha(n)?ma:da.current;return o=fa(t,o),no(t,a),n=$o(e,t,n,r,o,a),null===e||Di?(t.effectTag|=1,Oi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=a&&(e.expirationTime=0),$i(e,t,a))}function Ai(e,t,n,r,a){if(ha(n)){var o=!0;ya(t)}else o=!1;if(no(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),_o(t,n,r),ko(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,s=t.memoizedProps;i.props=s;var l=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=ro(c):c=fa(t,c=ha(n)?ma:da.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==r||l!==c)&&yo(t,i,r,c),ao=!1;var p=t.memoizedState;i.state=p,uo(t,r,i,a),l=t.memoizedState,s!==r||p!==l||pa.current||ao?("function"==typeof u&&(ho(t,n,u,r),l=t.memoizedState),(s=ao||go(t,n,s,r,p,l,c))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.effectTag|=4)):("function"==typeof i.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=l),i.props=r,i.state=l,i.context=c,r=s):("function"==typeof i.componentDidMount&&(t.effectTag|=4),r=!1)}else i=t.stateNode,io(e,t),s=t.memoizedProps,i.props=t.type===t.elementType?s:$a(t.type,s),l=i.context,"object"==typeof(c=n.contextType)&&null!==c?c=ro(c):c=fa(t,c=ha(n)?ma:da.current),(d="function"==typeof(u=n.getDerivedStateFromProps)||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==r||l!==c)&&yo(t,i,r,c),ao=!1,l=t.memoizedState,i.state=l,uo(t,r,i,a),p=t.memoizedState,s!==r||l!==p||pa.current||ao?("function"==typeof u&&(ho(t,n,u,r),p=t.memoizedState),(u=ao||go(t,n,s,r,l,p,c))?(d||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,p,c),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,p,c)),"function"==typeof i.componentDidUpdate&&(t.effectTag|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=p),i.props=r,i.state=p,i.context=c,r=u):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),r=!1);return Hi(e,t,n,r,o,a)}function Hi(e,t,n,r,a,o){Ni(e,t);var i=0!=(64&t.effectTag);if(!r&&!i)return a&&ka(t,n,!1),$i(e,t,o);r=t.stateNode,Ci.current=t;var s=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.effectTag|=1,null!==e&&i?(t.child=To(t,e.child,null,o),t.child=To(t,null,s,o)):Oi(e,t,s,o),t.memoizedState=r.state,a&&ka(t,n,!0),t.child}function zi(e){var t=e.stateNode;t.pendingContext?ga(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ga(0,t.context,!1),Yo(e,t.containerInfo)}var Ii,Fi,Ri,Wi={dehydrated:null,retryTime:0};function Ui(e,t,n){var r,a=t.mode,o=t.pendingProps,i=Bo.current,s=!1;if((r=0!=(64&t.effectTag))||(r=0!=(2&i)&&(null===e||null!==e.memoizedState)),r?(s=!0,t.effectTag&=-65):null!==e&&null===e.memoizedState||void 0===o.fallback||!0===o.unstable_avoidThisFallback||(i|=1),ca(Bo,1&i),null===e){if(void 0!==o.fallback&&Ti(t),s){if(s=o.fallback,(o=xl(null,a,0,null)).return=t,0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,o.child=e;null!==e;)e.return=o,e=e.sibling;return(n=xl(s,a,n,null)).return=t,o.sibling=n,t.memoizedState=Wi,t.child=o,n}return a=o.children,t.memoizedState=null,t.child=Eo(t,null,a,n)}if(null!==e.memoizedState){if(a=(e=e.child).sibling,s){if(o=o.fallback,(n=El(e,e.pendingProps)).return=t,0==(2&t.mode)&&(s=null!==t.memoizedState?t.child.child:t.child)!==e.child)for(n.child=s;null!==s;)s.return=n,s=s.sibling;return(a=El(a,o)).return=t,n.sibling=a,n.childExpirationTime=0,t.memoizedState=Wi,t.child=n,a}return n=To(t,e.child,o.children,n),t.memoizedState=null,t.child=n}if(e=e.child,s){if(s=o.fallback,(o=xl(null,a,0,null)).return=t,o.child=e,null!==e&&(e.return=o),0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,o.child=e;null!==e;)e.return=o,e=e.sibling;return(n=xl(s,a,n,null)).return=t,o.sibling=n,n.effectTag|=2,o.childExpirationTime=0,t.memoizedState=Wi,t.child=o,n}return t.memoizedState=null,t.child=To(t,e,o.children,n)}function qi(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t),to(e.return,t)}function Gi(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailExpiration:0,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailExpiration=0,i.tailMode=a,i.lastEffect=o)}function Vi(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Oi(e,t,r.children,n),0!=(2&(r=Bo.current)))r=1&r|2,t.effectTag|=64;else{if(null!==e&&0!=(64&e.effectTag))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&qi(e,n);else if(19===e.tag)qi(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(Bo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Ao(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),Gi(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Ao(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}Gi(t,!0,n,null,o,t.lastEffect);break;case"together":Gi(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function $i(e,t,n){null!==e&&(t.dependencies=e.dependencies);var r=t.expirationTime;if(0!==r&&il(r),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=El(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=El(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Ji(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Xi(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return ha(t.type)&&ba(),null;case 3:return jo(),la(pa),la(da),(n=t.stateNode).pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),null!==e&&null!==e.child||!Si(t)||(t.effectTag|=4),null;case 5:No(t),n=Oo(Do.current);var o=t.type;if(null!==e&&null!=t.stateNode)Fi(e,t,o,r,n),e.ref!==t.ref&&(t.effectTag|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Oo(xo.current),Si(t)){r=t.stateNode,o=t.type;var s=t.memoizedProps;switch(r[Ln]=t,r[Tn]=s,o){case"iframe":case"object":case"embed":Vt("load",r);break;case"video":case"audio":for(e=0;e<Xe.length;e++)Vt(Xe[e],r);break;case"source":Vt("error",r);break;case"img":case"image":case"link":Vt("error",r),Vt("load",r);break;case"form":Vt("reset",r),Vt("submit",r);break;case"details":Vt("toggle",r);break;case"input":Me(r,s),Vt("invalid",r),ln(n,"onChange");break;case"select":r._wrapperState={wasMultiple:!!s.multiple},Vt("invalid",r),ln(n,"onChange");break;case"textarea":Oe(r,s),Vt("invalid",r),ln(n,"onChange")}for(var l in an(o,s),e=null,s)if(s.hasOwnProperty(l)){var c=s[l];"children"===l?"string"==typeof c?r.textContent!==c&&(e=["children",c]):"number"==typeof c&&r.textContent!==""+c&&(e=["children",""+c]):L.hasOwnProperty(l)&&null!=c&&ln(n,l)}switch(o){case"input":ke(r),Ee(r,s,!0);break;case"textarea":ke(r),je(r);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(r.onclick=cn)}n=e,t.updateQueue=n,null!==n&&(t.effectTag|=4)}else{switch(l=9===n.nodeType?n:n.ownerDocument,e===sn&&(e=Be(o)),e===sn?"script"===o?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=l.createElement(o,{is:r.is}):(e=l.createElement(o),"select"===o&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,o),e[Ln]=t,e[Tn]=r,Ii(e,t),t.stateNode=e,l=on(o,r),o){case"iframe":case"object":case"embed":Vt("load",e),c=r;break;case"video":case"audio":for(c=0;c<Xe.length;c++)Vt(Xe[c],e);c=r;break;case"source":Vt("error",e),c=r;break;case"img":case"image":case"link":Vt("error",e),Vt("load",e),c=r;break;case"form":Vt("reset",e),Vt("submit",e),c=r;break;case"details":Vt("toggle",e),c=r;break;case"input":Me(e,r),c=ve(e,r),Vt("invalid",e),ln(n,"onChange");break;case"option":c=xe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},c=a({},r,{value:void 0}),Vt("invalid",e),ln(n,"onChange");break;case"textarea":Oe(e,r),c=De(e,r),Vt("invalid",e),ln(n,"onChange");break;default:c=r}an(o,c);var u=c;for(s in u)if(u.hasOwnProperty(s)){var d=u[s];"style"===s?nn(e,d):"dangerouslySetInnerHTML"===s?null!=(d=d?d.__html:void 0)&&ze(e,d):"children"===s?"string"==typeof d?("textarea"!==o||""!==d)&&Ie(e,d):"number"==typeof d&&Ie(e,""+d):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(L.hasOwnProperty(s)?null!=d&&ln(n,s):null!=d&&Q(e,s,d,l))}switch(o){case"input":ke(e),Ee(e,r,!1);break;case"textarea":ke(e),je(e);break;case"option":null!=r.value&&e.setAttribute("value",""+_e(r.value));break;case"select":e.multiple=!!r.multiple,null!=(n=r.value)?Ce(e,!!r.multiple,n,!1):null!=r.defaultValue&&Ce(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof c.onClick&&(e.onclick=cn)}gn(o,r)&&(t.effectTag|=4)}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)Ri(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Oo(Do.current),Oo(xo.current),Si(t)?(n=t.stateNode,r=t.memoizedProps,n[Ln]=t,n.nodeValue!==r&&(t.effectTag|=4)):((n=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Ln]=t,t.stateNode=n)}return null;case 13:return la(Bo),r=t.memoizedState,0!=(64&t.effectTag)?(t.expirationTime=n,t):(n=null!==r,r=!1,null===e?void 0!==t.memoizedProps.fallback&&Si(t):(r=null!==(o=e.memoizedState),n||null===o||null!==(o=e.child.sibling)&&(null!==(s=t.firstEffect)?(t.firstEffect=o,o.nextEffect=s):(t.firstEffect=t.lastEffect=o,o.nextEffect=null),o.effectTag=8)),n&&!r&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Bo.current)?Ss===ks&&(Ss=ws):(Ss!==ks&&Ss!==ws||(Ss=vs),0!==Ys&&null!==Ls&&(jl(Ls,Es),Pl(Ls,Ys)))),(n||r)&&(t.effectTag|=4),null);case 4:return jo(),null;case 10:return eo(t),null;case 17:return ha(t.type)&&ba(),null;case 19:if(la(Bo),null===(r=t.memoizedState))return null;if(o=0!=(64&t.effectTag),null===(s=r.rendering)){if(o)Ji(r,!1);else if(Ss!==ks||null!==e&&0!=(64&e.effectTag))for(s=t.child;null!==s;){if(null!==(e=Ao(s))){for(t.effectTag|=64,Ji(r,!1),null!==(o=e.updateQueue)&&(t.updateQueue=o,t.effectTag|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=t.child;null!==r;)s=n,(o=r).effectTag&=2,o.nextEffect=null,o.firstEffect=null,o.lastEffect=null,null===(e=o.alternate)?(o.childExpirationTime=0,o.expirationTime=s,o.child=null,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null):(o.childExpirationTime=e.childExpirationTime,o.expirationTime=e.expirationTime,o.child=e.child,o.memoizedProps=e.memoizedProps,o.memoizedState=e.memoizedState,o.updateQueue=e.updateQueue,s=e.dependencies,o.dependencies=null===s?null:{expirationTime:s.expirationTime,firstContext:s.firstContext,responders:s.responders}),r=r.sibling;return ca(Bo,1&Bo.current|2),t.child}s=s.sibling}}else{if(!o)if(null!==(e=Ao(s))){if(t.effectTag|=64,o=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),Ji(r,!0),null===r.tail&&"hidden"===r.tailMode&&!s.alternate)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*za()-r.renderingStartTime>r.tailExpiration&&1<n&&(t.effectTag|=64,o=!0,Ji(r,!1),t.expirationTime=t.childExpirationTime=n-1);r.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=r.last)?n.sibling=s:t.child=s,r.last=s)}return null!==r.tail?(0===r.tailExpiration&&(r.tailExpiration=za()+500),n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=za(),n.sibling=null,t=Bo.current,ca(Bo,o?1&t|2:1&t),n):null}throw Error(i(156,t.tag))}function Qi(e){switch(e.tag){case 1:ha(e.type)&&ba();var t=e.effectTag;return 4096&t?(e.effectTag=-4097&t|64,e):null;case 3:if(jo(),la(pa),la(da),0!=(64&(t=e.effectTag)))throw Error(i(285));return e.effectTag=-4097&t|64,e;case 5:return No(e),null;case 13:return la(Bo),4096&(t=e.effectTag)?(e.effectTag=-4097&t|64,e):null;case 19:return la(Bo),null;case 4:return jo(),null;case 10:return eo(e),null;default:return null}}function Ki(e,t){return{value:e,source:t,stack:ge(t)}}Ii=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Fi=function(e,t,n,r,o){var i=e.memoizedProps;if(i!==r){var s,l,c=t.stateNode;switch(Oo(xo.current),e=null,n){case"input":i=ve(c,i),r=ve(c,r),e=[];break;case"option":i=xe(c,i),r=xe(c,r),e=[];break;case"select":i=a({},i,{value:void 0}),r=a({},r,{value:void 0}),e=[];break;case"textarea":i=De(c,i),r=De(c,r),e=[];break;default:"function"!=typeof i.onClick&&"function"==typeof r.onClick&&(c.onclick=cn)}for(s in an(n,r),n=null,i)if(!r.hasOwnProperty(s)&&i.hasOwnProperty(s)&&null!=i[s])if("style"===s)for(l in c=i[s])c.hasOwnProperty(l)&&(n||(n={}),n[l]="");else"dangerouslySetInnerHTML"!==s&&"children"!==s&&"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(L.hasOwnProperty(s)?e||(e=[]):(e=e||[]).push(s,null));for(s in r){var u=r[s];if(c=null!=i?i[s]:void 0,r.hasOwnProperty(s)&&u!==c&&(null!=u||null!=c))if("style"===s)if(c){for(l in c)!c.hasOwnProperty(l)||u&&u.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in u)u.hasOwnProperty(l)&&c[l]!==u[l]&&(n||(n={}),n[l]=u[l])}else n||(e||(e=[]),e.push(s,n)),n=u;else"dangerouslySetInnerHTML"===s?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(e=e||[]).push(s,u)):"children"===s?c===u||"string"!=typeof u&&"number"!=typeof u||(e=e||[]).push(s,""+u):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&(L.hasOwnProperty(s)?(null!=u&&ln(o,s),e||c===u||(e=[])):(e=e||[]).push(s,u))}n&&(e=e||[]).push("style",n),o=e,(t.updateQueue=o)&&(t.effectTag|=4)}},Ri=function(e,t,n,r){n!==r&&(t.effectTag|=4)};var Zi="function"==typeof WeakSet?WeakSet:Set;function es(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=ge(n)),null!==n&&be(n.type),t=t.value,null!==e&&1===e.tag&&be(e.type);try{console.error(t)}catch(e){setTimeout((function(){throw e}))}}function ts(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){_l(e,t)}else t.current=null}function ns(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:$a(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(i(163))}function rs(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.destroy;n.destroy=void 0,void 0!==r&&r()}n=n.next}while(n!==t)}}function as(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function os(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:return void as(3,n);case 1:if(e=n.stateNode,4&n.effectTag)if(null===t)e.componentDidMount();else{var r=n.elementType===n.type?t.memoizedProps:$a(n.type,t.memoizedProps);e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate)}return void(null!==(t=n.updateQueue)&&po(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}po(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.effectTag&&gn(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&Bt(n)))));case 19:case 17:case 20:case 21:return}throw Error(i(163))}function is(e,t,n){switch("function"==typeof vl&&vl(t),t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var r=e.next;Ra(97<n?97:n,(function(){var e=r;do{var n=e.destroy;if(void 0!==n){var a=t;try{n()}catch(e){_l(a,e)}}e=e.next}while(e!==r)}))}break;case 1:ts(t),"function"==typeof(n=t.stateNode).componentWillUnmount&&function(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(t){_l(e,t)}}(t,n);break;case 5:ts(t);break;case 4:us(e,t,n)}}function ss(e){var t=e.alternate;e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.alternate=null,e.firstEffect=null,e.lastEffect=null,e.pendingProps=null,e.memoizedProps=null,e.stateNode=null,null!==t&&ss(t)}function ls(e){return 5===e.tag||3===e.tag||4===e.tag}function cs(e){e:{for(var t=e.return;null!==t;){if(ls(t)){var n=t;break e}t=t.return}throw Error(i(160))}switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.effectTag&&(Ie(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ls(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}r?function e(t,n,r){var a=t.tag,o=5===a||6===a;if(o)t=o?t.stateNode:t.stateNode.instance,n?8===r.nodeType?r.parentNode.insertBefore(t,n):r.insertBefore(t,n):(8===r.nodeType?(n=r.parentNode).insertBefore(t,r):(n=r).appendChild(t),null!==(r=r._reactRootContainer)&&void 0!==r||null!==n.onclick||(n.onclick=cn));else if(4!==a&&null!==(t=t.child))for(e(t,n,r),t=t.sibling;null!==t;)e(t,n,r),t=t.sibling}(e,n,t):function e(t,n,r){var a=t.tag,o=5===a||6===a;if(o)t=o?t.stateNode:t.stateNode.instance,n?r.insertBefore(t,n):r.appendChild(t);else if(4!==a&&null!==(t=t.child))for(e(t,n,r),t=t.sibling;null!==t;)e(t,n,r),t=t.sibling}(e,n,t)}function us(e,t,n){for(var r,a,o=t,s=!1;;){if(!s){s=o.return;e:for(;;){if(null===s)throw Error(i(160));switch(r=s.stateNode,s.tag){case 5:a=!1;break e;case 3:case 4:r=r.containerInfo,a=!0;break e}s=s.return}s=!0}if(5===o.tag||6===o.tag){e:for(var l=e,c=o,u=n,d=c;;)if(is(l,d,u),null!==d.child&&4!==d.tag)d.child.return=d,d=d.child;else{if(d===c)break e;for(;null===d.sibling;){if(null===d.return||d.return===c)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}a?(l=r,c=o.stateNode,8===l.nodeType?l.parentNode.removeChild(c):l.removeChild(c)):r.removeChild(o.stateNode)}else if(4===o.tag){if(null!==o.child){r=o.stateNode.containerInfo,a=!0,o.child.return=o,o=o.child;continue}}else if(is(e,o,n),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(s=!1)}o.sibling.return=o.return,o=o.sibling}}function ds(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:return void rs(3,t);case 1:return;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Tn]=r,"input"===e&&"radio"===r.type&&null!=r.name&&Le(n,r),on(e,a),t=on(e,r),a=0;a<o.length;a+=2){var s=o[a],l=o[a+1];"style"===s?nn(n,l):"dangerouslySetInnerHTML"===s?ze(n,l):"children"===s?Ie(n,l):Q(n,s,l,t)}switch(e){case"input":Te(n,r);break;case"textarea":Ye(n,r);break;case"select":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(e=r.value)?Ce(n,!!r.multiple,e,!1):t!==!!r.multiple&&(null!=r.defaultValue?Ce(n,!!r.multiple,r.defaultValue,!0):Ce(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((t=t.stateNode).hydrate&&(t.hydrate=!1,Bt(t.containerInfo)));case 12:return;case 13:if(n=t,null===t.memoizedState?r=!1:(r=!0,n=t.child,Ps=za()),null!==n)e:for(e=n;;){if(5===e.tag)o=e.stateNode,r?"function"==typeof(o=o.style).setProperty?o.setProperty("display","none","important"):o.display="none":(o=e.stateNode,a=null!=(a=e.memoizedProps.style)&&a.hasOwnProperty("display")?a.display:null,o.style.display=tn("display",a));else if(6===e.tag)e.stateNode.nodeValue=r?"":e.memoizedProps;else{if(13===e.tag&&null!==e.memoizedState&&null===e.memoizedState.dehydrated){(o=e.child.sibling).return=e,e=o;continue}if(null!==e.child){e.child.return=e,e=e.child;continue}}if(e===n)break;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}return void ps(t);case 19:return void ps(t);case 17:return}throw Error(i(163))}function ps(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Zi),t.forEach((function(t){var r=kl.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}var ms="function"==typeof WeakMap?WeakMap:Map;function fs(e,t,n){(n=so(n,null)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Bs||(Bs=!0,As=r),es(e,t)},n}function hs(e,t,n){(n=so(n,null)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return es(e,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Hs?Hs=new Set([this]):Hs.add(this),es(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var bs,gs=Math.ceil,_s=X.ReactCurrentDispatcher,ys=X.ReactCurrentOwner,ks=0,ws=3,vs=4,Ms=0,Ls=null,Ts=null,Es=0,Ss=ks,xs=null,Cs=1073741823,Ds=1073741823,Os=null,Ys=0,js=!1,Ps=0,Ns=null,Bs=!1,As=null,Hs=null,zs=!1,Is=null,Fs=90,Rs=null,Ws=0,Us=null,qs=0;function Gs(){return 0!=(48&Ms)?1073741821-(za()/10|0):0!==qs?qs:qs=1073741821-(za()/10|0)}function Vs(e,t,n){if(0==(2&(t=t.mode)))return 1073741823;var r=Ia();if(0==(4&t))return 99===r?1073741823:1073741822;if(0!=(16&Ms))return Es;if(null!==n)e=Va(e,0|n.timeoutMs||5e3,250);else switch(r){case 99:e=1073741823;break;case 98:e=Va(e,150,100);break;case 97:case 96:e=Va(e,5e3,250);break;case 95:e=2;break;default:throw Error(i(326))}return null!==Ls&&e===Es&&--e,e}function $s(e,t){if(50<Ws)throw Ws=0,Us=null,Error(i(185));if(null!==(e=Js(e,t))){var n=Ia();1073741823===t?0!=(8&Ms)&&0==(48&Ms)?Zs(e):(Qs(e),0===Ms&&qa()):Qs(e),0==(4&Ms)||98!==n&&99!==n||(null===Rs?Rs=new Map([[e,t]]):(void 0===(n=Rs.get(e))||n>t)&&Rs.set(e,t))}}function Js(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,a=null;if(null===r&&3===e.tag)a=e.stateNode;else for(;null!==r;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===r.return&&3===r.tag){a=r.stateNode;break}r=r.return}return null!==a&&(Ls===a&&(il(t),Ss===vs&&jl(a,Es)),Pl(a,t)),a}function Xs(e){var t=e.lastExpiredTime;if(0!==t)return t;if(!Yl(e,t=e.firstPendingTime))return t;var n=e.lastPingedTime;return 2>=(e=n>(e=e.nextKnownPendingLevel)?n:e)&&t!==e?0:e}function Qs(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Ua(Zs.bind(null,e));else{var t=Xs(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=Gs();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var a=e.callbackPriority;if(e.callbackExpirationTime===t&&a>=r)return;n!==Ya&&Ma(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?Ua(Zs.bind(null,e)):Wa(r,Ks.bind(null,e),{timeout:10*(1073741821-t)-za()}),e.callbackNode=t}}}function Ks(e,t){if(qs=0,t)return Nl(e,t=Gs()),Qs(e),null;var n=Xs(e);if(0!==n){if(t=e.callbackNode,0!=(48&Ms))throw Error(i(327));if(hl(),e===Ls&&n===Es||nl(e,n),null!==Ts){var r=Ms;Ms|=16;for(var a=al();;)try{ll();break}catch(t){rl(e,t)}if(Za(),Ms=r,_s.current=a,1===Ss)throw t=xs,nl(e,n),jl(e,n),Qs(e),t;if(null===Ts)switch(a=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=Ss,Ls=null,r){case ks:case 1:throw Error(i(345));case 2:Nl(e,2<n?2:n);break;case ws:if(jl(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=dl(a)),1073741823===Cs&&10<(a=Ps+500-za())){if(js){var o=e.lastPingedTime;if(0===o||o>=n){e.lastPingedTime=n,nl(e,n);break}}if(0!==(o=Xs(e))&&o!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=yn(pl.bind(null,e),a);break}pl(e);break;case vs:if(jl(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=dl(a)),js&&(0===(a=e.lastPingedTime)||a>=n)){e.lastPingedTime=n,nl(e,n);break}if(0!==(a=Xs(e))&&a!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==Ds?r=10*(1073741821-Ds)-za():1073741823===Cs?r=0:(r=10*(1073741821-Cs)-5e3,0>(r=(a=za())-r)&&(r=0),(n=10*(1073741821-n)-a)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*gs(r/1960))-r)&&(r=n)),10<r){e.timeoutHandle=yn(pl.bind(null,e),r);break}pl(e);break;case 5:if(1073741823!==Cs&&null!==Os){o=Cs;var s=Os;if(0>=(r=0|s.busyMinDurationMs)?r=0:(a=0|s.busyDelayMs,r=(o=za()-(10*(1073741821-o)-(0|s.timeoutMs||5e3)))<=a?0:a+r-o),10<r){jl(e,n),e.timeoutHandle=yn(pl.bind(null,e),r);break}}pl(e);break;default:throw Error(i(329))}if(Qs(e),e.callbackNode===t)return Ks.bind(null,e)}}return null}function Zs(e){var t=e.lastExpiredTime;if(t=0!==t?t:1073741823,0!=(48&Ms))throw Error(i(327));if(hl(),e===Ls&&t===Es||nl(e,t),null!==Ts){var n=Ms;Ms|=16;for(var r=al();;)try{sl();break}catch(t){rl(e,t)}if(Za(),Ms=n,_s.current=r,1===Ss)throw n=xs,nl(e,t),jl(e,t),Qs(e),n;if(null!==Ts)throw Error(i(261));e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,Ls=null,pl(e),Qs(e)}return null}function el(e,t){var n=Ms;Ms|=1;try{return e(t)}finally{0===(Ms=n)&&qa()}}function tl(e,t){var n=Ms;Ms&=-2,Ms|=8;try{return e(t)}finally{0===(Ms=n)&&qa()}}function nl(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,kn(n)),null!==Ts)for(n=Ts.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ba();break;case 3:jo(),la(pa),la(da);break;case 5:No(r);break;case 4:jo();break;case 13:case 19:la(Bo);break;case 10:eo(r)}n=n.return}Ls=e,Ts=El(e.current,null),Es=t,Ss=ks,xs=null,Ds=Cs=1073741823,Os=null,Ys=0,js=!1}function rl(e,t){for(;;){try{if(Za(),zo.current=bi,qo)for(var n=Ro.memoizedState;null!==n;){var r=n.queue;null!==r&&(r.pending=null),n=n.next}if(Fo=0,Uo=Wo=Ro=null,qo=!1,null===Ts||null===Ts.return)return Ss=1,xs=t,Ts=null;e:{var a=e,o=Ts.return,i=Ts,s=t;if(t=Es,i.effectTag|=2048,i.firstEffect=i.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var l=s;if(0==(2&i.mode)){var c=i.alternate;c?(i.updateQueue=c.updateQueue,i.memoizedState=c.memoizedState,i.expirationTime=c.expirationTime):(i.updateQueue=null,i.memoizedState=null)}var u=0!=(1&Bo.current),d=o;do{var p;if(p=13===d.tag){var m=d.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var f=d.memoizedProps;p=void 0!==f.fallback&&(!0!==f.unstable_avoidThisFallback||!u)}}if(p){var h=d.updateQueue;if(null===h){var b=new Set;b.add(l),d.updateQueue=b}else h.add(l);if(0==(2&d.mode)){if(d.effectTag|=64,i.effectTag&=-2981,1===i.tag)if(null===i.alternate)i.tag=17;else{var g=so(1073741823,null);g.tag=2,lo(i,g)}i.expirationTime=1073741823;break e}s=void 0,i=t;var _=a.pingCache;if(null===_?(_=a.pingCache=new ms,s=new Set,_.set(l,s)):void 0===(s=_.get(l))&&(s=new Set,_.set(l,s)),!s.has(i)){s.add(i);var y=yl.bind(null,a,l,i);l.then(y,y)}d.effectTag|=4096,d.expirationTime=t;break e}d=d.return}while(null!==d);s=Error((be(i.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+ge(i))}5!==Ss&&(Ss=2),s=Ki(s,i),d=o;do{switch(d.tag){case 3:l=s,d.effectTag|=4096,d.expirationTime=t,co(d,fs(d,l,t));break e;case 1:l=s;var k=d.type,w=d.stateNode;if(0==(64&d.effectTag)&&("function"==typeof k.getDerivedStateFromError||null!==w&&"function"==typeof w.componentDidCatch&&(null===Hs||!Hs.has(w)))){d.effectTag|=4096,d.expirationTime=t,co(d,hs(d,l,t));break e}}d=d.return}while(null!==d)}Ts=ul(Ts)}catch(e){t=e;continue}break}}function al(){var e=_s.current;return _s.current=bi,null===e?bi:e}function ol(e,t){e<Cs&&2<e&&(Cs=e),null!==t&&e<Ds&&2<e&&(Ds=e,Os=t)}function il(e){e>Ys&&(Ys=e)}function sl(){for(;null!==Ts;)Ts=cl(Ts)}function ll(){for(;null!==Ts&&!ja();)Ts=cl(Ts)}function cl(e){var t=bs(e.alternate,e,Es);return e.memoizedProps=e.pendingProps,null===t&&(t=ul(e)),ys.current=null,t}function ul(e){Ts=e;do{var t=Ts.alternate;if(e=Ts.return,0==(2048&Ts.effectTag)){if(t=Xi(t,Ts,Es),1===Es||1!==Ts.childExpirationTime){for(var n=0,r=Ts.child;null!==r;){var a=r.expirationTime,o=r.childExpirationTime;a>n&&(n=a),o>n&&(n=o),r=r.sibling}Ts.childExpirationTime=n}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=Ts.firstEffect),null!==Ts.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=Ts.firstEffect),e.lastEffect=Ts.lastEffect),1<Ts.effectTag&&(null!==e.lastEffect?e.lastEffect.nextEffect=Ts:e.firstEffect=Ts,e.lastEffect=Ts))}else{if(null!==(t=Qi(Ts)))return t.effectTag&=2047,t;null!==e&&(e.firstEffect=e.lastEffect=null,e.effectTag|=2048)}if(null!==(t=Ts.sibling))return t;Ts=e}while(null!==Ts);return Ss===ks&&(Ss=5),null}function dl(e){var t=e.expirationTime;return t>(e=e.childExpirationTime)?t:e}function pl(e){var t=Ia();return Ra(99,ml.bind(null,e,t)),null}function ml(e,t){do{hl()}while(null!==Is);if(0!=(48&Ms))throw Error(i(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(i(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var a=dl(n);if(e.firstPendingTime=a,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===Ls&&(Ts=Ls=null,Es=0),1<n.effectTag?null!==n.lastEffect?(n.lastEffect.nextEffect=n,a=n.firstEffect):a=n:a=n.firstEffect,null!==a){var o=Ms;Ms|=32,ys.current=null,hn=Gt;var s=mn();if(fn(s)){if("selectionStart"in s)var l={start:s.selectionStart,end:s.selectionEnd};else e:{var c=(l=(l=s.ownerDocument)&&l.defaultView||window).getSelection&&l.getSelection();if(c&&0!==c.rangeCount){l=c.anchorNode;var u=c.anchorOffset,d=c.focusNode;c=c.focusOffset;try{l.nodeType,d.nodeType}catch(e){l=null;break e}var p=0,m=-1,f=-1,h=0,b=0,g=s,_=null;t:for(;;){for(var y;g!==l||0!==u&&3!==g.nodeType||(m=p+u),g!==d||0!==c&&3!==g.nodeType||(f=p+c),3===g.nodeType&&(p+=g.nodeValue.length),null!==(y=g.firstChild);)_=g,g=y;for(;;){if(g===s)break t;if(_===l&&++h===u&&(m=p),_===d&&++b===c&&(f=p),null!==(y=g.nextSibling))break;_=(g=_).parentNode}g=y}l=-1===m||-1===f?null:{start:m,end:f}}else l=null}l=l||{start:0,end:0}}else l=null;bn={activeElementDetached:null,focusedElem:s,selectionRange:l},Gt=!1,Ns=a;do{try{fl()}catch(e){if(null===Ns)throw Error(i(330));_l(Ns,e),Ns=Ns.nextEffect}}while(null!==Ns);Ns=a;do{try{for(s=e,l=t;null!==Ns;){var k=Ns.effectTag;if(16&k&&Ie(Ns.stateNode,""),128&k){var w=Ns.alternate;if(null!==w){var v=w.ref;null!==v&&("function"==typeof v?v(null):v.current=null)}}switch(1038&k){case 2:cs(Ns),Ns.effectTag&=-3;break;case 6:cs(Ns),Ns.effectTag&=-3,ds(Ns.alternate,Ns);break;case 1024:Ns.effectTag&=-1025;break;case 1028:Ns.effectTag&=-1025,ds(Ns.alternate,Ns);break;case 4:ds(Ns.alternate,Ns);break;case 8:us(s,u=Ns,l),ss(u)}Ns=Ns.nextEffect}}catch(e){if(null===Ns)throw Error(i(330));_l(Ns,e),Ns=Ns.nextEffect}}while(null!==Ns);if(v=bn,w=mn(),k=v.focusedElem,l=v.selectionRange,w!==k&&k&&k.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(k.ownerDocument.documentElement,k)){null!==l&&fn(k)&&(w=l.start,void 0===(v=l.end)&&(v=w),"selectionStart"in k?(k.selectionStart=w,k.selectionEnd=Math.min(v,k.value.length)):(v=(w=k.ownerDocument||document)&&w.defaultView||window).getSelection&&(v=v.getSelection(),u=k.textContent.length,s=Math.min(l.start,u),l=void 0===l.end?s:Math.min(l.end,u),!v.extend&&s>l&&(u=l,l=s,s=u),u=pn(k,s),d=pn(k,l),u&&d&&(1!==v.rangeCount||v.anchorNode!==u.node||v.anchorOffset!==u.offset||v.focusNode!==d.node||v.focusOffset!==d.offset)&&((w=w.createRange()).setStart(u.node,u.offset),v.removeAllRanges(),s>l?(v.addRange(w),v.extend(d.node,d.offset)):(w.setEnd(d.node,d.offset),v.addRange(w))))),w=[];for(v=k;v=v.parentNode;)1===v.nodeType&&w.push({element:v,left:v.scrollLeft,top:v.scrollTop});for("function"==typeof k.focus&&k.focus(),k=0;k<w.length;k++)(v=w[k]).element.scrollLeft=v.left,v.element.scrollTop=v.top}Gt=!!hn,bn=hn=null,e.current=n,Ns=a;do{try{for(k=e;null!==Ns;){var M=Ns.effectTag;if(36&M&&os(k,Ns.alternate,Ns),128&M){w=void 0;var L=Ns.ref;if(null!==L){var T=Ns.stateNode;switch(Ns.tag){case 5:w=T;break;default:w=T}"function"==typeof L?L(w):L.current=w}}Ns=Ns.nextEffect}}catch(e){if(null===Ns)throw Error(i(330));_l(Ns,e),Ns=Ns.nextEffect}}while(null!==Ns);Ns=null,Pa(),Ms=o}else e.current=n;if(zs)zs=!1,Is=e,Fs=t;else for(Ns=a;null!==Ns;)t=Ns.nextEffect,Ns.nextEffect=null,Ns=t;if(0===(t=e.firstPendingTime)&&(Hs=null),1073741823===t?e===Us?Ws++:(Ws=0,Us=e):Ws=0,"function"==typeof wl&&wl(n.stateNode,r),Qs(e),Bs)throw Bs=!1,e=As,As=null,e;return 0!=(8&Ms)||qa(),null}function fl(){for(;null!==Ns;){var e=Ns.effectTag;0!=(256&e)&&ns(Ns.alternate,Ns),0==(512&e)||zs||(zs=!0,Wa(97,(function(){return hl(),null}))),Ns=Ns.nextEffect}}function hl(){if(90!==Fs){var e=97<Fs?97:Fs;return Fs=90,Ra(e,bl)}}function bl(){if(null===Is)return!1;var e=Is;if(Is=null,0!=(48&Ms))throw Error(i(331));var t=Ms;for(Ms|=32,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!=(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:case 22:rs(5,n),as(5,n)}}catch(t){if(null===e)throw Error(i(330));_l(e,t)}n=e.nextEffect,e.nextEffect=null,e=n}return Ms=t,qa(),!0}function gl(e,t,n){lo(e,t=fs(e,t=Ki(n,t),1073741823)),null!==(e=Js(e,1073741823))&&Qs(e)}function _l(e,t){if(3===e.tag)gl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){gl(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Hs||!Hs.has(r))){lo(n,e=hs(n,e=Ki(t,e),1073741823)),null!==(n=Js(n,1073741823))&&Qs(n);break}}n=n.return}}function yl(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),Ls===e&&Es===n?Ss===vs||Ss===ws&&1073741823===Cs&&za()-Ps<500?nl(e,Es):js=!0:Yl(e,n)&&(0!==(t=e.lastPingedTime)&&t<n||(e.lastPingedTime=n,Qs(e)))}function kl(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(t=Vs(t=Gs(),e,null)),null!==(e=Js(e,t))&&Qs(e)}bs=function(e,t,n){var r=t.expirationTime;if(null!==e){var a=t.pendingProps;if(e.memoizedProps!==a||pa.current)Di=!0;else{if(r<n){switch(Di=!1,t.tag){case 3:zi(t),xi();break;case 5:if(Po(t),4&t.mode&&1!==n&&a.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:ha(t.type)&&ya(t);break;case 4:Yo(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value,a=t.type._context,ca(Ja,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!==(r=t.child.childExpirationTime)&&r>=n?Ui(e,t,n):(ca(Bo,1&Bo.current),null!==(t=$i(e,t,n))?t.sibling:null);ca(Bo,1&Bo.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return Vi(e,t,n);t.effectTag|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null),ca(Bo,Bo.current),!r)return null}return $i(e,t,n)}Di=!1}}else Di=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,a=fa(t,da.current),no(t,n),a=$o(null,t,r,e,a,n),t.effectTag|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ha(r)){var o=!0;ya(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,oo(t);var s=r.getDerivedStateFromProps;"function"==typeof s&&ho(t,r,s,e),a.updater=bo,t.stateNode=a,a._reactInternalFiber=t,ko(t,r,e,n),t=Hi(null,t,r,!0,o,n)}else t.tag=0,Oi(null,t,a,n),t=t.child;return t;case 16:e:{if(a=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(a),1!==a._status)throw a._result;switch(a=a._result,t.type=a,o=t.tag=function(e){if("function"==typeof e)return Tl(e)?1:0;if(null!=e){if((e=e.$$typeof)===le)return 11;if(e===de)return 14}return 2}(a),e=$a(a,e),o){case 0:t=Bi(null,t,a,e,n);break e;case 1:t=Ai(null,t,a,e,n);break e;case 11:t=Yi(null,t,a,e,n);break e;case 14:t=ji(null,t,a,$a(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Bi(e,t,r,a=t.elementType===r?a:$a(r,a),n);case 1:return r=t.type,a=t.pendingProps,Ai(e,t,r,a=t.elementType===r?a:$a(r,a),n);case 3:if(zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,io(e,t),uo(t,r,null,n),(r=t.memoizedState.element)===a)xi(),t=$i(e,t,n);else{if((a=t.stateNode.hydrate)&&(wi=wn(t.stateNode.containerInfo.firstChild),ki=t,a=vi=!0),a)for(n=Eo(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else Oi(e,t,r,n),xi();t=t.child}return t;case 5:return Po(t),null===e&&Ti(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,s=a.children,_n(r,a)?s=null:null!==o&&_n(r,o)&&(t.effectTag|=16),Ni(e,t),4&t.mode&&1!==n&&a.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Oi(e,t,s,n),t=t.child),t;case 6:return null===e&&Ti(t),null;case 13:return Ui(e,t,n);case 4:return Yo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=To(t,null,r,n):Oi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Yi(e,t,r,a=t.elementType===r?a:$a(r,a),n);case 7:return Oi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Oi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,s=t.memoizedProps,o=a.value;var l=t.type._context;if(ca(Ja,l._currentValue),l._currentValue=o,null!==s)if(l=s.value,0===(o=Ar(l,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,o):1073741823))){if(s.children===a.children&&!pa.current){t=$i(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var c=l.dependencies;if(null!==c){s=l.child;for(var u=c.firstContext;null!==u;){if(u.context===r&&0!=(u.observedBits&o)){1===l.tag&&((u=so(n,null)).tag=2,lo(l,u)),l.expirationTime<n&&(l.expirationTime=n),null!==(u=l.alternate)&&u.expirationTime<n&&(u.expirationTime=n),to(l.return,n),c.expirationTime<n&&(c.expirationTime=n);break}u=u.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}Oi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,no(t,n),r=r(a=ro(a,o.unstable_observedBits)),t.effectTag|=1,Oi(e,t,r,n),t.child;case 14:return o=$a(a=t.type,t.pendingProps),ji(e,t,a,o=$a(a.type,o),r,n);case 15:return Pi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:$a(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,ha(r)?(e=!0,ya(t)):e=!1,no(t,n),_o(t,r,a),ko(t,r,a,n),Hi(null,t,r,!0,e,n);case 19:return Vi(e,t,n)}throw Error(i(156,t.tag))};var wl=null,vl=null;function Ml(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Ll(e,t,n,r){return new Ml(e,t,n,r)}function Tl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function El(e,t){var n=e.alternate;return null===n?((n=Ll(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Sl(e,t,n,r,a,o){var s=2;if(r=e,"function"==typeof e)Tl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case ne:return xl(n.children,a,o,t);case se:s=8,a|=7;break;case re:s=8,a|=1;break;case ae:return(e=Ll(12,n,t,8|a)).elementType=ae,e.type=ae,e.expirationTime=o,e;case ce:return(e=Ll(13,n,t,a)).type=ce,e.elementType=ce,e.expirationTime=o,e;case ue:return(e=Ll(19,n,t,a)).elementType=ue,e.expirationTime=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case oe:s=10;break e;case ie:s=9;break e;case le:s=11;break e;case de:s=14;break e;case pe:s=16,r=null;break e;case me:s=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Ll(s,n,t,a)).elementType=e,t.type=r,t.expirationTime=o,t}function xl(e,t,n,r){return(e=Ll(7,e,r,t)).expirationTime=n,e}function Cl(e,t,n){return(e=Ll(6,e,null,t)).expirationTime=n,e}function Dl(e,t,n){return(t=Ll(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ol(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Yl(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,0!==n&&n>=t&&e<=t}function jl(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;n<t&&(e.firstSuspendedTime=t),(r>t||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function Pl(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function Nl(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Bl(e,t,n,r){var a=t.current,o=Gs(),s=mo.suspense;o=Vs(o,a,s);e:if(n){t:{if(Ze(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(i(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(ha(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(i(171))}if(1===n.tag){var c=n.type;if(ha(c)){n=_a(n,c,l);break e}}n=l}else n=ua;return null===t.context?t.context=n:t.pendingContext=n,(t=so(o,s)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),lo(a,t),$s(a,o),o}function Al(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Hl(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime<t&&(e.retryTime=t)}function zl(e,t){Hl(e,t),(e=e.alternate)&&Hl(e,t)}function Il(e,t,n){var r=new Ol(e,t,n=null!=n&&!0===n.hydrate),a=Ll(3,null,null,2===t?7:1===t?3:0);r.current=a,a.stateNode=r,oo(a),e[En]=r.current,n&&0!==t&&function(e,t){var n=Ke(t);Et.forEach((function(e){ft(e,t,n)})),St.forEach((function(e){ft(e,t,n)}))}(0,9===e.nodeType?e:e.ownerDocument),this._internalRoot=r}function Fl(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Rl(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var s=a;a=function(){var e=Al(i);s.call(e)}}Bl(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Il(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var l=a;a=function(){var e=Al(i);l.call(e)}}tl((function(){Bl(t,i,e,a)}))}return Al(i)}function Wl(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:te,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Ul(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Fl(t))throw Error(i(200));return Wl(e,t,null,n)}Il.prototype.render=function(e){Bl(e,this._internalRoot,null,null)},Il.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Bl(null,e,null,(function(){t[En]=null}))},ht=function(e){if(13===e.tag){var t=Va(Gs(),150,100);$s(e,t),zl(e,t)}},bt=function(e){13===e.tag&&($s(e,3),zl(e,3))},gt=function(e){if(13===e.tag){var t=Gs();$s(e,t=Vs(t,e,null)),zl(e,t)}},x=function(e,t,n){switch(t){case"input":if(Te(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=Dn(r);if(!a)throw Error(i(90));we(r),Te(r,a)}}}break;case"textarea":Ye(e,n);break;case"select":null!=(t=n.value)&&Ce(e,!!n.multiple,t,!1)}},P=el,N=function(e,t,n,r,a){var o=Ms;Ms|=4;try{return Ra(98,e.bind(null,t,n,r,a))}finally{0===(Ms=o)&&qa()}},B=function(){0==(49&Ms)&&(function(){if(null!==Rs){var e=Rs;Rs=null,e.forEach((function(e,t){Nl(t,e),Qs(t)})),qa()}}(),hl())},A=function(e,t){var n=Ms;Ms|=2;try{return e(t)}finally{0===(Ms=n)&&qa()}};var ql,Gl,Vl={Events:[xn,Cn,Dn,E,M,An,function(e){at(e,Bn)},Y,j,Qt,st,hl,{current:!1}]};Gl=(ql={findFiberByHostInstance:Sn,bundleType:0,version:"16.13.1",rendererPackageName:"react-dom"}).findFiberByHostInstance,function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);wl=function(e){try{t.onCommitFiberRoot(n,e,void 0,64==(64&e.current.effectTag))}catch(e){}},vl=function(e){try{t.onCommitFiberUnmount(n,e)}catch(e){}}}catch(e){}}(a({},ql,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:X.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=nt(e))?null:e.stateNode},findFiberByHostInstance:function(e){return Gl?Gl(e):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null})),t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Vl,t.createPortal=Ul,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw Error(i(268,Object.keys(e)))}return e=null===(e=nt(t))?null:e.stateNode},t.flushSync=function(e,t){if(0!=(48&Ms))throw Error(i(187));var n=Ms;Ms|=1;try{return Ra(99,e.bind(null,t))}finally{Ms=n,qa()}},t.hydrate=function(e,t,n){if(!Fl(t))throw Error(i(200));return Rl(null,e,t,!0,n)},t.render=function(e,t,n){if(!Fl(t))throw Error(i(200));return Rl(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Fl(e))throw Error(i(40));return!!e._reactRootContainer&&(tl((function(){Rl(null,null,e,!1,(function(){e._reactRootContainer=null,e[En]=null}))})),!0)},t.unstable_batchedUpdates=el,t.unstable_createPortal=function(e,t){return Ul(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Fl(n))throw Error(i(200));if(null==e||void 0===e._reactInternalFiber)throw Error(i(38));return Rl(e,t,n,!1,r)},t.version="16.13.1"},function(e,t,n){"use strict";e.exports=n(374)},function(e,t,n){"use strict"; |
| 57 |
/** @license React v0.19.1 |
| 58 |
* scheduler.production.min.js |
| 59 |
* |
| 60 |
* Copyright (c) Facebook, Inc. and its affiliates. |
| 61 |
* |
| 62 |
* This source code is licensed under the MIT license found in the |
| 63 |
* LICENSE file in the root directory of this source tree. |
| 64 |
*/var r,a,o,i,s;if("undefined"==typeof window||"function"!=typeof MessageChannel){var l=null,c=null,u=function(){if(null!==l)try{var e=t.unstable_now();l(!0,e),l=null}catch(e){throw setTimeout(u,0),e}},d=Date.now();t.unstable_now=function(){return Date.now()-d},r=function(e){null!==l?setTimeout(r,0,e):(l=e,setTimeout(u,0))},a=function(e,t){c=setTimeout(e,t)},o=function(){clearTimeout(c)},i=function(){return!1},s=t.unstable_forceFrameRate=function(){}}else{var p=window.performance,m=window.Date,f=window.setTimeout,h=window.clearTimeout;if("undefined"!=typeof console){var b=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof b&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof p&&"function"==typeof p.now)t.unstable_now=function(){return p.now()};else{var g=m.now();t.unstable_now=function(){return m.now()-g}}var _=!1,y=null,k=-1,w=5,v=0;i=function(){return t.unstable_now()>=v},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):w=0<e?Math.floor(1e3/e):5};var M=new MessageChannel,L=M.port2;M.port1.onmessage=function(){if(null!==y){var e=t.unstable_now();v=e+w;try{y(!0,e)?L.postMessage(null):(_=!1,y=null)}catch(e){throw L.postMessage(null),e}}else _=!1},r=function(e){y=e,_||(_=!0,L.postMessage(null))},a=function(e,n){k=f((function(){e(t.unstable_now())}),n)},o=function(){h(k),k=-1}}function T(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<x(a,t)))break e;e[r]=t,e[n]=a,n=r}}function E(e){return void 0===(e=e[0])?null:e}function S(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],s=o+1,l=e[s];if(void 0!==i&&0>x(i,n))void 0!==l&&0>x(l,i)?(e[r]=l,e[s]=n,r=s):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==l&&0>x(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],D=[],O=1,Y=null,j=3,P=!1,N=!1,B=!1;function A(e){for(var t=E(D);null!==t;){if(null===t.callback)S(D);else{if(!(t.startTime<=e))break;S(D),t.sortIndex=t.expirationTime,T(C,t)}t=E(D)}}function H(e){if(B=!1,A(e),!N)if(null!==E(C))N=!0,r(z);else{var t=E(D);null!==t&&a(H,t.startTime-e)}}function z(e,n){N=!1,B&&(B=!1,o()),P=!0;var r=j;try{for(A(n),Y=E(C);null!==Y&&(!(Y.expirationTime>n)||e&&!i());){var s=Y.callback;if(null!==s){Y.callback=null,j=Y.priorityLevel;var l=s(Y.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?Y.callback=l:Y===E(C)&&S(C),A(n)}else S(C);Y=E(C)}if(null!==Y)var c=!0;else{var u=E(D);null!==u&&a(H,u.startTime-n),c=!1}return c}finally{Y=null,j=r,P=!1}}function I(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var F=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){N||P||(N=!0,r(z))},t.unstable_getCurrentPriorityLevel=function(){return j},t.unstable_getFirstCallbackNode=function(){return E(C)},t.unstable_next=function(e){switch(j){case 1:case 2:case 3:var t=3;break;default:t=j}var n=j;j=t;try{return e()}finally{j=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=j;j=e;try{return t()}finally{j=n}},t.unstable_scheduleCallback=function(e,n,i){var s=t.unstable_now();if("object"==typeof i&&null!==i){var l=i.delay;l="number"==typeof l&&0<l?s+l:s,i="number"==typeof i.timeout?i.timeout:I(e)}else i=I(e),l=s;return e={id:O++,callback:n,priorityLevel:e,startTime:l,expirationTime:i=l+i,sortIndex:-1},l>s?(e.sortIndex=l,T(D,e),null===E(C)&&e===E(D)&&(B?o():B=!0,a(H,l-s))):(e.sortIndex=i,T(C,e),N||P||(N=!0,r(z))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();A(e);var n=E(C);return n!==Y&&null!==Y&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<Y.expirationTime||i()},t.unstable_wrapCallback=function(e){var t=j;return function(){var n=j;j=t;try{return e.apply(this,arguments)}finally{j=n}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={animating:!1,autoplaying:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,dragging:!1,edgeDragged:!1,initialized:!1,lazyLoadedList:[],listHeight:null,listWidth:null,scrolling:!1,slideCount:null,slideHeight:null,slideWidth:null,swipeLeft:null,swiped:!1,swiping:!1,touchObject:{startX:0,startY:0,curX:0,curY:0},trackStyle:{},trackWidth:0};t.default=r},function(e,t,n){(function(t){var n=/^\s+|\s+$/g,r=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,o=/^0o[0-7]+$/i,i=parseInt,s="object"==typeof t&&t&&t.Object===Object&&t,l="object"==typeof self&&self&&self.Object===Object&&self,c=s||l||Function("return this")(),u=Object.prototype.toString,d=Math.max,p=Math.min,m=function(){return c.Date.now()};function f(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function h(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==u.call(e)}(e))return NaN;if(f(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=f(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(n,"");var s=a.test(e);return s||o.test(e)?i(e.slice(2),s?2:8):r.test(e)?NaN:+e}e.exports=function(e,t,n){var r,a,o,i,s,l,c=0,u=!1,b=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function _(t){var n=r,o=a;return r=a=void 0,c=t,i=e.apply(o,n)}function y(e){return c=e,s=setTimeout(w,t),u?_(e):i}function k(e){var n=e-l;return void 0===l||n>=t||n<0||b&&e-c>=o}function w(){var e=m();if(k(e))return v(e);s=setTimeout(w,function(e){var n=t-(e-l);return b?p(n,o-(e-c)):n}(e))}function v(e){return s=void 0,g&&r?_(e):(r=a=void 0,i)}function M(){var e=m(),n=k(e);if(r=arguments,a=this,l=e,n){if(void 0===s)return y(l);if(b)return s=setTimeout(w,t),_(l)}return void 0===s&&(s=setTimeout(w,t)),i}return t=h(t)||0,f(n)&&(u=!!n.leading,o=(b="maxWait"in n)?d(h(n.maxWait)||0,t):o,g="trailing"in n?!!n.trailing:g),M.cancel=function(){void 0!==s&&clearTimeout(s),c=0,r=l=a=s=void 0},M.flush=function(){return void 0===s?i:v(m())},M}}).call(this,n(70))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Track=void 0;var r=i(n(2)),a=i(n(0)),o=n(35);function i(e){return e&&e.__esModule?e:{default:e}}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(){return(l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){h(e,t,n[t])}))}return e}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var b=function(e){var t,n,r,a,o;return r=(o=e.rtl?e.slideCount-1-e.index:e.index)<0||o>=e.slideCount,e.centerMode?(a=Math.floor(e.slidesToShow/2),n=(o-e.currentSlide)%e.slideCount==0,o>e.currentSlide-a-1&&o<=e.currentSlide+a&&(t=!0)):t=e.currentSlide<=o&&o<e.currentSlide+e.slidesToShow,{"slick-slide":!0,"slick-active":t,"slick-center":n,"slick-cloned":r,"slick-current":o===e.currentSlide}},g=function(e,t){return e.key||t},_=function(e){var t,n=[],i=[],s=[],l=r.default.Children.count(e.children),c=(0,o.lazyStartIndex)(e),u=(0,o.lazyEndIndex)(e);return r.default.Children.forEach(e.children,(function(d,p){var m,h={message:"children",index:p,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};m=!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(p)>=0?d:r.default.createElement("div",null);var _=function(e){var t={};return void 0!==e.variableWidth&&!1!==e.variableWidth||(t.width=e.slideWidth),e.fade&&(t.position="relative",e.vertical?t.top=-e.index*parseInt(e.slideHeight):t.left=-e.index*parseInt(e.slideWidth),t.opacity=e.currentSlide===e.index?1:0,t.transition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase,t.WebkitTransition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase),t}(f({},e,{index:p})),y=m.props.className||"",k=b(f({},e,{index:p}));if(n.push(r.default.cloneElement(m,{key:"original"+g(m,p),"data-index":p,className:(0,a.default)(k,y),tabIndex:"-1","aria-hidden":!k["slick-active"],style:f({outline:"none"},m.props.style||{},_),onClick:function(t){m.props&&m.props.onClick&&m.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}})),e.infinite&&!1===e.fade){var w=l-p;w<=(0,o.getPreClones)(e)&&l!==e.slidesToShow&&((t=-w)>=c&&(m=d),k=b(f({},e,{index:t})),i.push(r.default.cloneElement(m,{key:"precloned"+g(m,t),"data-index":t,tabIndex:"-1",className:(0,a.default)(k,y),"aria-hidden":!k["slick-active"],style:f({},m.props.style||{},_),onClick:function(t){m.props&&m.props.onClick&&m.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}}))),l!==e.slidesToShow&&((t=l+p)<u&&(m=d),k=b(f({},e,{index:t})),s.push(r.default.cloneElement(m,{key:"postcloned"+g(m,t),"data-index":t,tabIndex:"-1",className:(0,a.default)(k,y),"aria-hidden":!k["slick-active"],style:f({},m.props.style||{},_),onClick:function(t){m.props&&m.props.onClick&&m.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}})))}})),e.rtl?i.concat(n,s).reverse():i.concat(n,s)},y=function(e){function t(){return c(this,t),d(this,p(t).apply(this,arguments))}var n,a,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}(t,e),n=t,(a=[{key:"render",value:function(){var e=_(this.props),t=this.props,n={onMouseEnter:t.onMouseEnter,onMouseOver:t.onMouseOver,onMouseLeave:t.onMouseLeave};return r.default.createElement("div",l({className:"slick-track",style:this.props.trackStyle},n),e)}}])&&u(n.prototype,a),o&&u(n,o),t}(r.default.PureComponent);t.Track=y},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Dots=void 0;var r=o(n(2)),a=o(n(0));function o(e){return e&&e.__esModule?e:{default:e}}function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function u(e,t){return!t||"object"!==i(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var m=function(e){function t(){return l(this,t),u(this,d(t).apply(this,arguments))}var n,o,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&p(e,t)}(t,e),n=t,(o=[{key:"clickHandler",value:function(e,t){t.preventDefault(),this.props.clickHandler(e)}},{key:"render",value:function(){var e,t=this,n=(e={slideCount:this.props.slideCount,slidesToScroll:this.props.slidesToScroll,slidesToShow:this.props.slidesToShow,infinite:this.props.infinite}).infinite?Math.ceil(e.slideCount/e.slidesToScroll):Math.ceil((e.slideCount-e.slidesToShow)/e.slidesToScroll)+1,o=this.props,i={onMouseEnter:o.onMouseEnter,onMouseOver:o.onMouseOver,onMouseLeave:o.onMouseLeave},l=Array.apply(null,Array(n+1).join("0").split("")).map((function(e,n){var o=n*t.props.slidesToScroll,i=n*t.props.slidesToScroll+(t.props.slidesToScroll-1),s=(0,a.default)({"slick-active":t.props.currentSlide>=o&&t.props.currentSlide<=i}),l={message:"dots",index:n,slidesToScroll:t.props.slidesToScroll,currentSlide:t.props.currentSlide},c=t.clickHandler.bind(t,l);return r.default.createElement("li",{key:n,className:s},r.default.cloneElement(t.props.customPaging(n),{onClick:c}))}));return r.default.cloneElement(this.props.appendDots(l),function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){s(e,t,n[t])}))}return e}({className:this.props.dotsClass},i))}}])&&c(n.prototype,o),i&&c(n,i),t}(r.default.PureComponent);t.Dots=m},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NextArrow=t.PrevArrow=void 0;var r=i(n(2)),a=i(n(0)),o=n(35);function i(e){return e&&e.__esModule?e:{default:e}}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(){return(l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){u(e,t,n[t])}))}return e}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function m(e,t,n){return t&&p(e.prototype,t),n&&p(e,n),e}function f(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function b(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&g(e,t)}function g(e,t){return(g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _=function(e){function t(){return d(this,t),f(this,h(t).apply(this,arguments))}return b(t,e),m(t,[{key:"clickHandler",value:function(e,t){t&&t.preventDefault(),this.props.clickHandler(e,t)}},{key:"render",value:function(){var e={"slick-arrow":!0,"slick-prev":!0},t=this.clickHandler.bind(this,{message:"previous"});!this.props.infinite&&(0===this.props.currentSlide||this.props.slideCount<=this.props.slidesToShow)&&(e["slick-disabled"]=!0,t=null);var n={key:"0","data-role":"none",className:(0,a.default)(e),style:{display:"block"},onClick:t},o={currentSlide:this.props.currentSlide,slideCount:this.props.slideCount};return this.props.prevArrow?r.default.cloneElement(this.props.prevArrow,c({},n,o)):r.default.createElement("button",l({key:"0",type:"button"},n)," ","Previous")}}]),t}(r.default.PureComponent);t.PrevArrow=_;var y=function(e){function t(){return d(this,t),f(this,h(t).apply(this,arguments))}return b(t,e),m(t,[{key:"clickHandler",value:function(e,t){t&&t.preventDefault(),this.props.clickHandler(e,t)}},{key:"render",value:function(){var e={"slick-arrow":!0,"slick-next":!0},t=this.clickHandler.bind(this,{message:"next"});(0,o.canGoNext)(this.props)||(e["slick-disabled"]=!0,t=null);var n={key:"1","data-role":"none",className:(0,a.default)(e),style:{display:"block"},onClick:t},i={currentSlide:this.props.currentSlide,slideCount:this.props.slideCount};return this.props.nextArrow?r.default.cloneElement(this.props.nextArrow,c({},n,i)):r.default.createElement("button",l({key:"1",type:"button"},n)," ","Next")}}]),t}(r.default.PureComponent);t.NextArrow=y},function(e,t,n){"use strict";n.r(t),function(e){var n=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,r){return e[0]===t&&(n=r,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n<r.length;n++){var a=r[n];e.call(t,a[1],a[0])}},t}()}(),r="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,a=void 0!==e&&e.Math===Math?e:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),o="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(a):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)};var i=["top","right","bottom","left","width","height","size","weight"],s="undefined"!=typeof MutationObserver,l=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,r=!1,a=0;function i(){n&&(n=!1,e()),r&&l()}function s(){o(i)}function l(){var e=Date.now();if(n){if(e-a<2)return;r=!0}else n=!0,r=!1,setTimeout(s,t);a=e}return l}(this.refresh.bind(this),20)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),s?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;i.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),c=function(e,t){for(var n=0,r=Object.keys(t);n<r.length;n++){var a=r[n];Object.defineProperty(e,a,{value:t[a],enumerable:!1,writable:!1,configurable:!0})}return e},u=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||a},d=g(0,0,0,0);function p(e){return parseFloat(e)||0}function m(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+p(e["border-"+n+"-width"])}),0)}function f(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return d;var r=u(e).getComputedStyle(e),a=function(e){for(var t={},n=0,r=["top","right","bottom","left"];n<r.length;n++){var a=r[n],o=e["padding-"+a];t[a]=p(o)}return t}(r),o=a.left+a.right,i=a.top+a.bottom,s=p(r.width),l=p(r.height);if("border-box"===r.boxSizing&&(Math.round(s+o)!==t&&(s-=m(r,"left","right")+o),Math.round(l+i)!==n&&(l-=m(r,"top","bottom")+i)),!function(e){return e===u(e).document.documentElement}(e)){var c=Math.round(s+o)-t,f=Math.round(l+i)-n;1!==Math.abs(c)&&(s-=c),1!==Math.abs(f)&&(l-=f)}return g(a.left,a.top,s,l)}var h="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof u(e).SVGGraphicsElement}:function(e){return e instanceof u(e).SVGElement&&"function"==typeof e.getBBox};function b(e){return r?h(e)?function(e){var t=e.getBBox();return g(0,0,t.width,t.height)}(e):f(e):d}function g(e,t,n,r){return{x:e,y:t,width:n,height:r}}var _=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=g(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=b(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),y=function(e,t){var n,r,a,o,i,s,l,u=(r=(n=t).x,a=n.y,o=n.width,i=n.height,s="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(s.prototype),c(l,{x:r,y:a,width:o,height:i,top:a,right:r+o,bottom:i+a,left:r}),l);c(this,{target:e,contentRect:u})},k=function(){function e(e,t,r){if(this.activeObservations_=[],this.observations_=new n,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=r}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof u(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new _(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof u(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new y(e.target,e.broadcastRect())}));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),w="undefined"!=typeof WeakMap?new WeakMap:new n,v=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=l.getInstance(),r=new k(t,n,this);w.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){v.prototype[e]=function(){var t;return(t=w.get(this))[e].apply(t,arguments)}}));var M=void 0!==a.ResizeObserver?a.ResizeObserver:v;t.default=M}.call(this,n(70))},function(e,t,n){var r=n(382),a=function(e){var t="",n=Object.keys(e);return n.forEach((function(a,o){var i=e[a];(function(e){return/[height|width]$/.test(e)})(a=r(a))&&"number"==typeof i&&(i+="px"),t+=!0===i?a:!1===i?"not "+a:"("+a+": "+i+")",o<n.length-1&&(t+=" and ")})),t};e.exports=function(e){var t="";return"string"==typeof e?e:e instanceof Array?(e.forEach((function(n,r){t+=a(n),r<e.length-1&&(t+=", ")})),t):a(e)}},function(e,t){e.exports=function(e){return e.replace(/[A-Z]/g,(function(e){return"-"+e.toLowerCase()})).toLowerCase()}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,a=(r=n(2))&&r.__esModule?r:{default:r};var o={accessibility:!0,adaptiveHeight:!1,afterChange:null,appendDots:function(e){return a.default.createElement("ul",{style:{display:"block"}},e)},arrows:!0,autoplay:!1,autoplaySpeed:3e3,beforeChange:null,centerMode:!1,centerPadding:"50px",className:"",cssEase:"ease",customPaging:function(e){return a.default.createElement("button",null,e+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:null,nextArrow:null,onEdge:null,onInit:null,onLazyLoadError:null,onReInit:null,pauseOnDotsHover:!1,pauseOnFocus:!1,pauseOnHover:!0,prevArrow:null,responsive:null,rows:1,rtl:!1,slide:"div",slidesPerRow:1,slidesToScroll:1,slidesToShow:1,speed:500,swipe:!0,swipeEvent:null,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,waitForAnimate:!0};t.default=o},function(e,t,n){var r=n(385);e.exports=new r},function(e,t,n){var r=n(386),a=n(122),o=a.each,i=a.isFunction,s=a.isArray;function l(){if(!window.matchMedia)throw new Error("matchMedia not present, legacy browsers require a polyfill");this.queries={},this.browserIsIncapable=!window.matchMedia("only all").matches}l.prototype={constructor:l,register:function(e,t,n){var a=this.queries,l=n&&this.browserIsIncapable;return a[e]||(a[e]=new r(e,l)),i(t)&&(t={match:t}),s(t)||(t=[t]),o(t,(function(t){i(t)&&(t={match:t}),a[e].addHandler(t)})),this},unregister:function(e,t){var n=this.queries[e];return n&&(t?n.removeHandler(t):(n.clear(),delete this.queries[e])),this}},e.exports=l},function(e,t,n){var r=n(387),a=n(122).each;function o(e,t){this.query=e,this.isUnconditional=t,this.handlers=[],this.mql=window.matchMedia(e);var n=this;this.listener=function(e){n.mql=e.currentTarget||e,n.assess()},this.mql.addListener(this.listener)}o.prototype={constuctor:o,addHandler:function(e){var t=new r(e);this.handlers.push(t),this.matches()&&t.on()},removeHandler:function(e){var t=this.handlers;a(t,(function(n,r){if(n.equals(e))return n.destroy(),!t.splice(r,1)}))},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){a(this.handlers,(function(e){e.destroy()})),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var e=this.matches()?"on":"off";a(this.handlers,(function(t){t[e]()}))}},e.exports=o},function(e,t){function n(e){this.options=e,!e.deferSetup&&this.setup()}n.prototype={constructor:n,setup:function(){this.options.setup&&this.options.setup(),this.initialised=!0},on:function(){!this.initialised&&this.setup(),this.options.match&&this.options.match()},off:function(){this.options.unmatch&&this.options.unmatch()},destroy:function(){this.options.destroy?this.options.destroy():this.off()},equals:function(e){return this.options===e||this.options.match===e}},e.exports=n},function(e,t,n){var r=n(123),a=n(120);e.exports=function(e,t){return r(e,t,(function(t,n){return a(e,n)}))}},function(e,t,n){var r=n(26),a=n(15),o=n(28),i=n(5),s=n(16);e.exports=function(e,t,n,l){if(!i(e))return e;for(var c=-1,u=(t=a(t,e)).length,d=u-1,p=e;null!=p&&++c<u;){var m=s(t[c]),f=n;if(c!=d){var h=p[m];void 0===(f=l?l(h,m,p):void 0)&&(f=i(h)?h:o(t[c+1])?[]:{})}r(p,m,f),p=p[m]}return e}},function(e,t){e.exports=function(e,t,n,r){for(var a=e.length,o=n+(r?1:-1);r?o--:++o<a;)if(t(e[o],o,e))return o;return-1}},function(e,t,n){var r=n(125);e.exports=function(e){return e?(e=r(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},function(e,t,n){var r={"./af":126,"./af.js":126,"./ar":127,"./ar-dz":128,"./ar-dz.js":128,"./ar-kw":129,"./ar-kw.js":129,"./ar-ly":130,"./ar-ly.js":130,"./ar-ma":131,"./ar-ma.js":131,"./ar-sa":132,"./ar-sa.js":132,"./ar-tn":133,"./ar-tn.js":133,"./ar.js":127,"./az":134,"./az.js":134,"./be":135,"./be.js":135,"./bg":136,"./bg.js":136,"./bm":137,"./bm.js":137,"./bn":138,"./bn.js":138,"./bo":139,"./bo.js":139,"./br":140,"./br.js":140,"./bs":141,"./bs.js":141,"./ca":142,"./ca.js":142,"./cs":143,"./cs.js":143,"./cv":144,"./cv.js":144,"./cy":145,"./cy.js":145,"./da":146,"./da.js":146,"./de":147,"./de-at":148,"./de-at.js":148,"./de-ch":149,"./de-ch.js":149,"./de.js":147,"./dv":150,"./dv.js":150,"./el":151,"./el.js":151,"./en-SG":152,"./en-SG.js":152,"./en-au":153,"./en-au.js":153,"./en-ca":154,"./en-ca.js":154,"./en-gb":155,"./en-gb.js":155,"./en-ie":156,"./en-ie.js":156,"./en-il":157,"./en-il.js":157,"./en-nz":158,"./en-nz.js":158,"./eo":159,"./eo.js":159,"./es":160,"./es-do":161,"./es-do.js":161,"./es-us":162,"./es-us.js":162,"./es.js":160,"./et":163,"./et.js":163,"./eu":164,"./eu.js":164,"./fa":165,"./fa.js":165,"./fi":166,"./fi.js":166,"./fo":167,"./fo.js":167,"./fr":168,"./fr-ca":169,"./fr-ca.js":169,"./fr-ch":170,"./fr-ch.js":170,"./fr.js":168,"./fy":171,"./fy.js":171,"./ga":172,"./ga.js":172,"./gd":173,"./gd.js":173,"./gl":174,"./gl.js":174,"./gom-latn":175,"./gom-latn.js":175,"./gu":176,"./gu.js":176,"./he":177,"./he.js":177,"./hi":178,"./hi.js":178,"./hr":179,"./hr.js":179,"./hu":180,"./hu.js":180,"./hy-am":181,"./hy-am.js":181,"./id":182,"./id.js":182,"./is":183,"./is.js":183,"./it":184,"./it-ch":185,"./it-ch.js":185,"./it.js":184,"./ja":186,"./ja.js":186,"./jv":187,"./jv.js":187,"./ka":188,"./ka.js":188,"./kk":189,"./kk.js":189,"./km":190,"./km.js":190,"./kn":191,"./kn.js":191,"./ko":192,"./ko.js":192,"./ku":193,"./ku.js":193,"./ky":194,"./ky.js":194,"./lb":195,"./lb.js":195,"./lo":196,"./lo.js":196,"./lt":197,"./lt.js":197,"./lv":198,"./lv.js":198,"./me":199,"./me.js":199,"./mi":200,"./mi.js":200,"./mk":201,"./mk.js":201,"./ml":202,"./ml.js":202,"./mn":203,"./mn.js":203,"./mr":204,"./mr.js":204,"./ms":205,"./ms-my":206,"./ms-my.js":206,"./ms.js":205,"./mt":207,"./mt.js":207,"./my":208,"./my.js":208,"./nb":209,"./nb.js":209,"./ne":210,"./ne.js":210,"./nl":211,"./nl-be":212,"./nl-be.js":212,"./nl.js":211,"./nn":213,"./nn.js":213,"./pa-in":214,"./pa-in.js":214,"./pl":215,"./pl.js":215,"./pt":216,"./pt-br":217,"./pt-br.js":217,"./pt.js":216,"./ro":218,"./ro.js":218,"./ru":219,"./ru.js":219,"./sd":220,"./sd.js":220,"./se":221,"./se.js":221,"./si":222,"./si.js":222,"./sk":223,"./sk.js":223,"./sl":224,"./sl.js":224,"./sq":225,"./sq.js":225,"./sr":226,"./sr-cyrl":227,"./sr-cyrl.js":227,"./sr.js":226,"./ss":228,"./ss.js":228,"./sv":229,"./sv.js":229,"./sw":230,"./sw.js":230,"./ta":231,"./ta.js":231,"./te":232,"./te.js":232,"./tet":233,"./tet.js":233,"./tg":234,"./tg.js":234,"./th":235,"./th.js":235,"./tl-ph":236,"./tl-ph.js":236,"./tlh":237,"./tlh.js":237,"./tr":238,"./tr.js":238,"./tzl":239,"./tzl.js":239,"./tzm":240,"./tzm-latn":241,"./tzm-latn.js":241,"./tzm.js":240,"./ug-cn":242,"./ug-cn.js":242,"./uk":243,"./uk.js":243,"./ur":244,"./ur.js":244,"./uz":245,"./uz-latn":246,"./uz-latn.js":246,"./uz.js":245,"./vi":247,"./vi.js":247,"./x-pseudo":248,"./x-pseudo.js":248,"./yo":249,"./yo.js":249,"./zh-cn":250,"./zh-cn.js":250,"./zh-hk":251,"./zh-hk.js":251,"./zh-tw":252,"./zh-tw.js":252};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=392},function(e,t,n){var r,a,o; |
| 65 |
/*! |
| 66 |
* Masonry v4.2.2 |
| 67 |
* Cascading grid layout library |
| 68 |
* https://masonry.desandro.com |
| 69 |
* MIT License |
| 70 |
* by David DeSandro |
| 71 |
*/window,a=[n(394),n(85)],void 0===(o="function"==typeof(r=function(e,t){"use strict";var n=e.create("masonry");n.compatOptions.fitWidth="isFitWidth";var r=n.prototype;return r._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var e=0;e<this.cols;e++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},r.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var e=this.items[0],n=e&&e.element;this.columnWidth=n&&t(n).outerWidth||this.containerWidth}var r=this.columnWidth+=this.gutter,a=this.containerWidth+this.gutter,o=a/r,i=r-a%r;o=Math[i&&i<1?"round":"floor"](o),this.cols=Math.max(o,1)},r.getContainerWidth=function(){var e=this._getOption("fitWidth")?this.element.parentNode:this.element,n=t(e);this.containerWidth=n&&n.innerWidth},r._getItemLayoutPosition=function(e){e.getSize();var t=e.size.outerWidth%this.columnWidth,n=Math[t&&t<1?"round":"ceil"](e.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var r=this[this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition"](n,e),a={x:this.columnWidth*r.col,y:r.y},o=r.y+e.size.outerHeight,i=n+r.col,s=r.col;s<i;s++)this.colYs[s]=o;return a},r._getTopColPosition=function(e){var t=this._getTopColGroup(e),n=Math.min.apply(Math,t);return{col:t.indexOf(n),y:n}},r._getTopColGroup=function(e){if(e<2)return this.colYs;for(var t=[],n=this.cols+1-e,r=0;r<n;r++)t[r]=this._getColGroupY(r,e);return t},r._getColGroupY=function(e,t){if(t<2)return this.colYs[e];var n=this.colYs.slice(e,e+t);return Math.max.apply(Math,n)},r._getHorizontalColPosition=function(e,t){var n=this.horizontalColIndex%this.cols;n=e>1&&n+e>this.cols?0:n;var r=t.size.outerWidth&&t.size.outerHeight;return this.horizontalColIndex=r?n+e:this.horizontalColIndex,{col:n,y:this._getColGroupY(n,e)}},r._manageStamp=function(e){var n=t(e),r=this._getElementOffset(e),a=this._getOption("originLeft")?r.left:r.right,o=a+n.outerWidth,i=Math.floor(a/this.columnWidth);i=Math.max(0,i);var s=Math.floor(o/this.columnWidth);s-=o%this.columnWidth?0:1,s=Math.min(this.cols-1,s);for(var l=(this._getOption("originTop")?r.top:r.bottom)+n.outerHeight,c=i;c<=s;c++)this.colYs[c]=Math.max(l,this.colYs[c])},r._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var e={height:this.maxY};return this._getOption("fitWidth")&&(e.width=this._getContainerFitWidth()),e},r._getContainerFitWidth=function(){for(var e=0,t=this.cols;--t&&0===this.colYs[t];)e++;return(this.cols-e)*this.columnWidth-this.gutter},r.needsResizeLayout=function(){var e=this.containerWidth;return this.getContainerWidth(),e!=this.containerWidth},n})?r.apply(t,a):r)||(e.exports=o)},function(e,t,n){var r,a; |
| 72 |
/*! |
| 73 |
* Outlayer v2.1.1 |
| 74 |
* the brains and guts of a layout library |
| 75 |
* MIT license |
| 76 |
*/!function(o,i){"use strict";r=[n(84),n(85),n(395),n(397)],void 0===(a=function(e,t,n,r){return function(e,t,n,r,a){var o=e.console,i=e.jQuery,s=function(){},l=0,c={};function u(e,t){var n=r.getQueryElement(e);if(n){this.element=n,i&&(this.$element=i(this.element)),this.options=r.extend({},this.constructor.defaults),this.option(t);var a=++l;this.element.outlayerGUID=a,c[a]=this,this._create(),this._getOption("initLayout")&&this.layout()}else o&&o.error("Bad element for "+this.constructor.namespace+": "+(n||e))}u.namespace="outlayer",u.Item=a,u.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var d=u.prototype;function p(e){function t(){e.apply(this,arguments)}return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t}r.extend(d,t.prototype),d.option=function(e){r.extend(this.options,e)},d._getOption=function(e){var t=this.constructor.compatOptions[e];return t&&void 0!==this.options[t]?this.options[t]:this.options[e]},u.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},d._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),r.extend(this.element.style,this.options.containerStyle),this._getOption("resize")&&this.bindResize()},d.reloadItems=function(){this.items=this._itemize(this.element.children)},d._itemize=function(e){for(var t=this._filterFindItemElements(e),n=this.constructor.Item,r=[],a=0;a<t.length;a++){var o=new n(t[a],this);r.push(o)}return r},d._filterFindItemElements=function(e){return r.filterFindElements(e,this.options.itemSelector)},d.getItemElements=function(){return this.items.map((function(e){return e.element}))},d.layout=function(){this._resetLayout(),this._manageStamps();var e=this._getOption("layoutInstant"),t=void 0!==e?e:!this._isLayoutInited;this.layoutItems(this.items,t),this._isLayoutInited=!0},d._init=d.layout,d._resetLayout=function(){this.getSize()},d.getSize=function(){this.size=n(this.element)},d._getMeasurement=function(e,t){var r,a=this.options[e];a?("string"==typeof a?r=this.element.querySelector(a):a instanceof HTMLElement&&(r=a),this[e]=r?n(r)[t]:a):this[e]=0},d.layoutItems=function(e,t){e=this._getItemsForLayout(e),this._layoutItems(e,t),this._postLayout()},d._getItemsForLayout=function(e){return e.filter((function(e){return!e.isIgnored}))},d._layoutItems=function(e,t){if(this._emitCompleteOnItems("layout",e),e&&e.length){var n=[];e.forEach((function(e){var r=this._getItemLayoutPosition(e);r.item=e,r.isInstant=t||e.isLayoutInstant,n.push(r)}),this),this._processLayoutQueue(n)}},d._getItemLayoutPosition=function(){return{x:0,y:0}},d._processLayoutQueue=function(e){this.updateStagger(),e.forEach((function(e,t){this._positionItem(e.item,e.x,e.y,e.isInstant,t)}),this)},d.updateStagger=function(){var e=this.options.stagger;if(null!=e)return this.stagger=function(e){if("number"==typeof e)return e;var t=e.match(/(^\d*\.?\d*)(\w*)/),n=t&&t[1],r=t&&t[2];if(!n.length)return 0;return(n=parseFloat(n))*(m[r]||1)}(e),this.stagger;this.stagger=0},d._positionItem=function(e,t,n,r,a){r?e.goTo(t,n):(e.stagger(a*this.stagger),e.moveTo(t,n))},d._postLayout=function(){this.resizeContainer()},d.resizeContainer=function(){if(this._getOption("resizeContainer")){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},d._getContainerSize=s,d._setContainerMeasure=function(e,t){if(void 0!==e){var n=this.size;n.isBorderBox&&(e+=t?n.paddingLeft+n.paddingRight+n.borderLeftWidth+n.borderRightWidth:n.paddingBottom+n.paddingTop+n.borderTopWidth+n.borderBottomWidth),e=Math.max(e,0),this.element.style[t?"width":"height"]=e+"px"}},d._emitCompleteOnItems=function(e,t){var n=this;function r(){n.dispatchEvent(e+"Complete",null,[t])}var a=t.length;if(t&&a){var o=0;t.forEach((function(t){t.once(e,i)}))}else r();function i(){++o==a&&r()}},d.dispatchEvent=function(e,t,n){var r=t?[t].concat(n):n;if(this.emitEvent(e,r),i)if(this.$element=this.$element||i(this.element),t){var a=i.Event(t);a.type=e,this.$element.trigger(a,n)}else this.$element.trigger(e,n)},d.ignore=function(e){var t=this.getItem(e);t&&(t.isIgnored=!0)},d.unignore=function(e){var t=this.getItem(e);t&&delete t.isIgnored},d.stamp=function(e){(e=this._find(e))&&(this.stamps=this.stamps.concat(e),e.forEach(this.ignore,this))},d.unstamp=function(e){(e=this._find(e))&&e.forEach((function(e){r.removeFrom(this.stamps,e),this.unignore(e)}),this)},d._find=function(e){if(e)return"string"==typeof e&&(e=this.element.querySelectorAll(e)),e=r.makeArray(e)},d._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},d._getBoundingRect=function(){var e=this.element.getBoundingClientRect(),t=this.size;this._boundingRect={left:e.left+t.paddingLeft+t.borderLeftWidth,top:e.top+t.paddingTop+t.borderTopWidth,right:e.right-(t.paddingRight+t.borderRightWidth),bottom:e.bottom-(t.paddingBottom+t.borderBottomWidth)}},d._manageStamp=s,d._getElementOffset=function(e){var t=e.getBoundingClientRect(),r=this._boundingRect,a=n(e);return{left:t.left-r.left-a.marginLeft,top:t.top-r.top-a.marginTop,right:r.right-t.right-a.marginRight,bottom:r.bottom-t.bottom-a.marginBottom}},d.handleEvent=r.handleEvent,d.bindResize=function(){e.addEventListener("resize",this),this.isResizeBound=!0},d.unbindResize=function(){e.removeEventListener("resize",this),this.isResizeBound=!1},d.onresize=function(){this.resize()},r.debounceMethod(u,"onresize",100),d.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},d.needsResizeLayout=function(){var e=n(this.element);return this.size&&e&&e.innerWidth!==this.size.innerWidth},d.addItems=function(e){var t=this._itemize(e);return t.length&&(this.items=this.items.concat(t)),t},d.appended=function(e){var t=this.addItems(e);t.length&&(this.layoutItems(t,!0),this.reveal(t))},d.prepended=function(e){var t=this._itemize(e);if(t.length){var n=this.items.slice(0);this.items=t.concat(n),this._resetLayout(),this._manageStamps(),this.layoutItems(t,!0),this.reveal(t),this.layoutItems(n)}},d.reveal=function(e){if(this._emitCompleteOnItems("reveal",e),e&&e.length){var t=this.updateStagger();e.forEach((function(e,n){e.stagger(n*t),e.reveal()}))}},d.hide=function(e){if(this._emitCompleteOnItems("hide",e),e&&e.length){var t=this.updateStagger();e.forEach((function(e,n){e.stagger(n*t),e.hide()}))}},d.revealItemElements=function(e){var t=this.getItems(e);this.reveal(t)},d.hideItemElements=function(e){var t=this.getItems(e);this.hide(t)},d.getItem=function(e){for(var t=0;t<this.items.length;t++){var n=this.items[t];if(n.element==e)return n}},d.getItems=function(e){e=r.makeArray(e);var t=[];return e.forEach((function(e){var n=this.getItem(e);n&&t.push(n)}),this),t},d.remove=function(e){var t=this.getItems(e);this._emitCompleteOnItems("remove",t),t&&t.length&&t.forEach((function(e){e.remove(),r.removeFrom(this.items,e)}),this)},d.destroy=function(){var e=this.element.style;e.height="",e.position="",e.width="",this.items.forEach((function(e){e.destroy()})),this.unbindResize();var t=this.element.outlayerGUID;delete c[t],delete this.element.outlayerGUID,i&&i.removeData(this.element,this.constructor.namespace)},u.data=function(e){var t=(e=r.getQueryElement(e))&&e.outlayerGUID;return t&&c[t]},u.create=function(e,t){var n=p(u);return n.defaults=r.extend({},u.defaults),r.extend(n.defaults,t),n.compatOptions=r.extend({},u.compatOptions),n.namespace=e,n.data=u.data,n.Item=p(a),r.htmlInit(n,e),i&&i.bridget&&i.bridget(e,n),n};var m={ms:1,s:1e3};return u.Item=a,u}(o,e,t,n,r)}.apply(t,r))||(e.exports=a)}(window)},function(e,t,n){var r,a;!function(o,i){r=[n(396)],void 0===(a=function(e){return function(e,t){"use strict";var n={extend:function(e,t){for(var n in t)e[n]=t[n];return e},modulo:function(e,t){return(e%t+t)%t}},r=Array.prototype.slice;n.makeArray=function(e){return Array.isArray(e)?e:null==e?[]:"object"==typeof e&&"number"==typeof e.length?r.call(e):[e]},n.removeFrom=function(e,t){var n=e.indexOf(t);-1!=n&&e.splice(n,1)},n.getParent=function(e,n){for(;e.parentNode&&e!=document.body;)if(e=e.parentNode,t(e,n))return e},n.getQueryElement=function(e){return"string"==typeof e?document.querySelector(e):e},n.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},n.filterFindElements=function(e,r){e=n.makeArray(e);var a=[];return e.forEach((function(e){if(e instanceof HTMLElement)if(r){t(e,r)&&a.push(e);for(var n=e.querySelectorAll(r),o=0;o<n.length;o++)a.push(n[o])}else a.push(e)})),a},n.debounceMethod=function(e,t,n){n=n||100;var r=e.prototype[t],a=t+"Timeout";e.prototype[t]=function(){var e=this[a];clearTimeout(e);var t=arguments,o=this;this[a]=setTimeout((function(){r.apply(o,t),delete o[a]}),n)}},n.docReady=function(e){var t=document.readyState;"complete"==t||"interactive"==t?setTimeout(e):document.addEventListener("DOMContentLoaded",e)},n.toDashed=function(e){return e.replace(/(.)([A-Z])/g,(function(e,t,n){return t+"-"+n})).toLowerCase()};var a=e.console;return n.htmlInit=function(t,r){n.docReady((function(){var o=n.toDashed(r),i="data-"+o,s=document.querySelectorAll("["+i+"]"),l=document.querySelectorAll(".js-"+o),c=n.makeArray(s).concat(n.makeArray(l)),u=i+"-options",d=e.jQuery;c.forEach((function(e){var n,o=e.getAttribute(i)||e.getAttribute(u);try{n=o&&JSON.parse(o)}catch(t){return void(a&&a.error("Error parsing "+i+" on "+e.className+": "+t))}var s=new t(e,n);d&&d.data(e,r,s)}))}))},n}(o,e)}.apply(t,r))||(e.exports=a)}(window)},function(e,t,n){var r,a;!function(o,i){"use strict";void 0===(a="function"==typeof(r=i)?r.call(t,n,t,e):r)||(e.exports=a)}(window,(function(){"use strict";var e=function(){var e=window.Element.prototype;if(e.matches)return"matches";if(e.matchesSelector)return"matchesSelector";for(var t=["webkit","moz","ms","o"],n=0;n<t.length;n++){var r=t[n]+"MatchesSelector";if(e[r])return r}}();return function(t,n){return t[e](n)}}))},function(e,t,n){var r,a,o;window,a=[n(84),n(85)],void 0===(o="function"==typeof(r=function(e,t){"use strict";var n=document.documentElement.style,r="string"==typeof n.transition?"transition":"WebkitTransition",a="string"==typeof n.transform?"transform":"WebkitTransform",o={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[r],i={transform:a,transition:r,transitionDuration:r+"Duration",transitionProperty:r+"Property",transitionDelay:r+"Delay"};function s(e,t){e&&(this.element=e,this.layout=t,this.position={x:0,y:0},this._create())}var l=s.prototype=Object.create(e.prototype);l.constructor=s,l._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},l.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},l.getSize=function(){this.size=t(this.element)},l.css=function(e){var t=this.element.style;for(var n in e)t[i[n]||n]=e[n]},l.getPosition=function(){var e=getComputedStyle(this.element),t=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),r=e[t?"left":"right"],a=e[n?"top":"bottom"],o=parseFloat(r),i=parseFloat(a),s=this.layout.size;-1!=r.indexOf("%")&&(o=o/100*s.width),-1!=a.indexOf("%")&&(i=i/100*s.height),o=isNaN(o)?0:o,i=isNaN(i)?0:i,o-=t?s.paddingLeft:s.paddingRight,i-=n?s.paddingTop:s.paddingBottom,this.position.x=o,this.position.y=i},l.layoutPosition=function(){var e=this.layout.size,t={},n=this.layout._getOption("originLeft"),r=this.layout._getOption("originTop"),a=n?"paddingLeft":"paddingRight",o=n?"left":"right",i=n?"right":"left",s=this.position.x+e[a];t[o]=this.getXValue(s),t[i]="";var l=r?"paddingTop":"paddingBottom",c=r?"top":"bottom",u=r?"bottom":"top",d=this.position.y+e[l];t[c]=this.getYValue(d),t[u]="",this.css(t),this.emitEvent("layout",[this])},l.getXValue=function(e){var t=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!t?e/this.layout.size.width*100+"%":e+"px"},l.getYValue=function(e){var t=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&t?e/this.layout.size.height*100+"%":e+"px"},l._transitionTo=function(e,t){this.getPosition();var n=this.position.x,r=this.position.y,a=e==this.position.x&&t==this.position.y;if(this.setPosition(e,t),!a||this.isTransitioning){var o=e-n,i=t-r,s={};s.transform=this.getTranslate(o,i),this.transition({to:s,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})}else this.layoutPosition()},l.getTranslate=function(e,t){return"translate3d("+(e=this.layout._getOption("originLeft")?e:-e)+"px, "+(t=this.layout._getOption("originTop")?t:-t)+"px, 0)"},l.goTo=function(e,t){this.setPosition(e,t),this.layoutPosition()},l.moveTo=l._transitionTo,l.setPosition=function(e,t){this.position.x=parseFloat(e),this.position.y=parseFloat(t)},l._nonTransition=function(e){for(var t in this.css(e.to),e.isCleaning&&this._removeStyles(e.to),e.onTransitionEnd)e.onTransitionEnd[t].call(this)},l.transition=function(e){if(parseFloat(this.layout.options.transitionDuration)){var t=this._transn;for(var n in e.onTransitionEnd)t.onEnd[n]=e.onTransitionEnd[n];for(n in e.to)t.ingProperties[n]=!0,e.isCleaning&&(t.clean[n]=!0);e.from&&(this.css(e.from),this.element.offsetHeight),this.enableTransition(e.to),this.css(e.to),this.isTransitioning=!0}else this._nonTransition(e)};var c="opacity,"+a.replace(/([A-Z])/g,(function(e){return"-"+e.toLowerCase()}));l.enableTransition=function(){if(!this.isTransitioning){var e=this.layout.options.transitionDuration;e="number"==typeof e?e+"ms":e,this.css({transitionProperty:c,transitionDuration:e,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(o,this,!1)}},l.onwebkitTransitionEnd=function(e){this.ontransitionend(e)},l.onotransitionend=function(e){this.ontransitionend(e)};var u={"-webkit-transform":"transform"};l.ontransitionend=function(e){if(e.target===this.element){var t=this._transn,n=u[e.propertyName]||e.propertyName;delete t.ingProperties[n],function(e){for(var t in e)return!1;return!0}(t.ingProperties)&&this.disableTransition(),n in t.clean&&(this.element.style[e.propertyName]="",delete t.clean[n]),n in t.onEnd&&(t.onEnd[n].call(this),delete t.onEnd[n]),this.emitEvent("transitionEnd",[this])}},l.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(o,this,!1),this.isTransitioning=!1},l._removeStyles=function(e){var t={};for(var n in e)t[n]="";this.css(t)};var d={transitionProperty:"",transitionDuration:"",transitionDelay:""};return l.removeTransitionStyles=function(){this.css(d)},l.stagger=function(e){e=isNaN(e)?0:e,this.staggerDelay=e+"ms"},l.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},l.remove=function(){r&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",(function(){this.removeElem()})),this.hide()):this.removeElem()},l.reveal=function(){delete this.isHidden,this.css({display:""});var e=this.layout.options,t={};t[this.getHideRevealTransitionEndProperty("visibleStyle")]=this.onRevealTransitionEnd,this.transition({from:e.hiddenStyle,to:e.visibleStyle,isCleaning:!0,onTransitionEnd:t})},l.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},l.getHideRevealTransitionEndProperty=function(e){var t=this.layout.options[e];if(t.opacity)return"opacity";for(var n in t)return n},l.hide=function(){this.isHidden=!0,this.css({display:""});var e=this.layout.options,t={};t[this.getHideRevealTransitionEndProperty("hiddenStyle")]=this.onHideTransitionEnd,this.transition({from:e.visibleStyle,to:e.hiddenStyle,isCleaning:!0,onTransitionEnd:t})},l.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},l.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},s})?r.apply(t,a):r)||(e.exports=o)},function(e,t,n){var r,a; |
| 77 |
/*! |
| 78 |
* imagesLoaded v4.1.4 |
| 79 |
* JavaScript is all like "You images are done yet or what?" |
| 80 |
* MIT License |
| 81 |
*/!function(o,i){"use strict";r=[n(84)],void 0===(a=function(e){return function(e,t){var n=e.jQuery,r=e.console;function a(e,t){for(var n in t)e[n]=t[n];return e}var o=Array.prototype.slice;function i(e,t,s){if(!(this instanceof i))return new i(e,t,s);var l,c=e;("string"==typeof e&&(c=document.querySelectorAll(e)),c)?(this.elements=(l=c,Array.isArray(l)?l:"object"==typeof l&&"number"==typeof l.length?o.call(l):[l]),this.options=a({},this.options),"function"==typeof t?s=t:a(this.options,t),s&&this.on("always",s),this.getImages(),n&&(this.jqDeferred=new n.Deferred),setTimeout(this.check.bind(this))):r.error("Bad element for imagesLoaded "+(c||e))}i.prototype=Object.create(t.prototype),i.prototype.options={},i.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},i.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),!0===this.options.background&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&s[t]){for(var n=e.querySelectorAll("img"),r=0;r<n.length;r++){var a=n[r];this.addImage(a)}if("string"==typeof this.options.background){var o=e.querySelectorAll(this.options.background);for(r=0;r<o.length;r++){var i=o[r];this.addElementBackgroundImages(i)}}}};var s={1:!0,9:!0,11:!0};function l(e){this.img=e}function c(e,t){this.url=e,this.element=t,this.img=new Image}return i.prototype.addElementBackgroundImages=function(e){var t=getComputedStyle(e);if(t)for(var n=/url\((['"])?(.*?)\1\)/gi,r=n.exec(t.backgroundImage);null!==r;){var a=r&&r[2];a&&this.addBackground(a,e),r=n.exec(t.backgroundImage)}},i.prototype.addImage=function(e){var t=new l(e);this.images.push(t)},i.prototype.addBackground=function(e,t){var n=new c(e,t);this.images.push(n)},i.prototype.check=function(){var e=this;function t(t,n,r){setTimeout((function(){e.progress(t,n,r)}))}this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?this.images.forEach((function(e){e.once("progress",t),e.check()})):this.complete()},i.prototype.progress=function(e,t,n){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded,this.emitEvent("progress",[this,e,t]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,e),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&r&&r.log("progress: "+n,e,t)},i.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(e,[this]),this.emitEvent("always",[this]),this.jqDeferred){var t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},l.prototype=Object.create(t.prototype),l.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.src)},l.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},l.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.img,t])},l.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},l.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},l.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},l.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},c.prototype=Object.create(l.prototype),c.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},c.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},c.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.element,t])},i.makeJQueryPlugin=function(t){(t=t||e.jQuery)&&((n=t).fn.imagesLoaded=function(e,t){return new i(this,e,t).jqDeferred.promise(n(this))})},i.makeJQueryPlugin(),i}(o,e)}.apply(t,r))||(e.exports=a)}("undefined"!=typeof window?window:this)},function(e,t,n){var r=n(26),a=n(12),o=n(400),i=n(14),s=n(29),l=n(13),c=Object.prototype.hasOwnProperty,u=o((function(e,t){if(s(t)||i(t))a(t,l(t),e);else for(var n in t)c.call(t,n)&&r(e,n,t[n])}));e.exports=u},function(e,t,n){var r=n(401),a=n(402);e.exports=function(e){return r((function(t,n){var r=-1,o=n.length,i=o>1?n[o-1]:void 0,s=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,s&&a(n[0],n[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var l=n[r];l&&e(t,l,r,i)}return t}))}},function(e,t,n){var r=n(33),a=n(112),o=n(113);e.exports=function(e,t){return o(a(e,t,r),e+"")}},function(e,t,n){var r=n(23),a=n(14),o=n(28),i=n(5);e.exports=function(e,t,n){if(!i(n))return!1;var s=typeof t;return!!("number"==s?a(n)&&o(t,n.length):"string"==s&&t in n)&&r(n[t],e)}},function(e,t,n){"use strict";var r=n(253).forEach,a=n(404),o=n(405),i=n(406),s=n(407),l=n(408),c=n(254),u=n(409),d=n(411),p=n(412),m=n(413);function f(e){return Array.isArray(e)||void 0!==e.length}function h(e){if(Array.isArray(e))return e;var t=[];return r(e,(function(e){t.push(e)})),t}function b(e){return e&&1===e.nodeType}function g(e,t,n){var r=e[t];return null==r&&void 0!==n?n:r}e.exports=function(e){var t;if((e=e||{}).idHandler)t={get:function(t){return e.idHandler.get(t,!0)},set:e.idHandler.set};else{var n=i(),_=s({idGenerator:n,stateHandler:d});t=_}var y=e.reporter;y||(y=l(!1===y));var k=g(e,"batchProcessor",u({reporter:y})),w={};w.callOnAdd=!!g(e,"callOnAdd",!0),w.debug=!!g(e,"debug",!1);var v,M=o(t),L=a({stateHandler:d}),T=g(e,"strategy","object"),E=g(e,"important",!1),S={reporter:y,batchProcessor:k,stateHandler:d,idHandler:t,important:E};if("scroll"===T&&(c.isLegacyOpera()?(y.warn("Scroll strategy is not supported on legacy Opera. Changing to object strategy."),T="object"):c.isIE(9)&&(y.warn("Scroll strategy is not supported on IE9. Changing to object strategy."),T="object")),"scroll"===T)v=m(S);else{if("object"!==T)throw new Error("Invalid strategy name: "+T);v=p(S)}var x={};return{listenTo:function(e,n,a){function o(e){var t=M.get(e);r(t,(function(t){t(e)}))}function i(e,t,n){M.add(t,n),e&&n(t)}if(a||(a=n,n=e,e={}),!n)throw new Error("At least one element required.");if(!a)throw new Error("Listener required.");if(b(n))n=[n];else{if(!f(n))return y.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");n=h(n)}var s=0,l=g(e,"callOnAdd",w.callOnAdd),c=g(e,"onReady",(function(){})),u=g(e,"debug",w.debug);r(n,(function(e){d.getState(e)||(d.initState(e),t.set(e));var p=t.get(e);if(u&&y.log("Attaching listener to element",p,e),!L.isDetectable(e))return u&&y.log(p,"Not detectable."),L.isBusy(e)?(u&&y.log(p,"System busy making it detectable"),i(l,e,a),x[p]=x[p]||[],void x[p].push((function(){++s===n.length&&c()}))):(u&&y.log(p,"Making detectable..."),L.markBusy(e,!0),v.makeDetectable({debug:u,important:E},e,(function(e){if(u&&y.log(p,"onElementDetectable"),d.getState(e)){L.markAsDetectable(e),L.markBusy(e,!1),v.addListener(e,o),i(l,e,a);var t=d.getState(e);if(t&&t.startSize){var m=e.offsetWidth,f=e.offsetHeight;t.startSize.width===m&&t.startSize.height===f||o(e)}x[p]&&r(x[p],(function(e){e()}))}else u&&y.log(p,"Element uninstalled before being detectable.");delete x[p],++s===n.length&&c()})));u&&y.log(p,"Already detecable, adding listener."),i(l,e,a),s++})),s===n.length&&c()},removeListener:M.removeListener,removeAllListeners:M.removeAllListeners,uninstall:function(e){if(!e)return y.error("At least one element is required.");if(b(e))e=[e];else{if(!f(e))return y.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");e=h(e)}r(e,(function(e){M.removeAllListeners(e),v.uninstall(e),d.cleanState(e)}))},initDocument:function(e){v.initDocument&&v.initDocument(e)}}}},function(e,t,n){"use strict";e.exports=function(e){var t=e.stateHandler.getState;return{isDetectable:function(e){var n=t(e);return n&&!!n.isDetectable},markAsDetectable:function(e){t(e).isDetectable=!0},isBusy:function(e){return!!t(e).busy},markBusy:function(e,n){t(e).busy=!!n}}}},function(e,t,n){"use strict";e.exports=function(e){var t={};function n(n){var r=e.get(n);return void 0===r?[]:t[r]||[]}return{get:n,add:function(n,r){var a=e.get(n);t[a]||(t[a]=[]),t[a].push(r)},removeListener:function(e,t){for(var r=n(e),a=0,o=r.length;a<o;++a)if(r[a]===t){r.splice(a,1);break}},removeAllListeners:function(e){var t=n(e);t&&(t.length=0)}}}},function(e,t,n){"use strict";e.exports=function(){var e=1;return{generate:function(){return e++}}}},function(e,t,n){"use strict";e.exports=function(e){var t=e.idGenerator,n=e.stateHandler.getState;return{get:function(e){var t=n(e);return t&&void 0!==t.id?t.id:null},set:function(e){var r=n(e);if(!r)throw new Error("setId required the element to have a resize detection state.");var a=t.generate();return r.id=a,a}}}},function(e,t,n){"use strict";e.exports=function(e){function t(){}var n={log:t,warn:t,error:t};if(!e&&window.console){var r=function(e,t){e[t]=function(){var e=console[t];if(e.apply)e.apply(console,arguments);else for(var n=0;n<arguments.length;n++)e(arguments[n])}};r(n,"log"),r(n,"warn"),r(n,"error")}return n}},function(e,t,n){"use strict";var r=n(410);function a(){var e={},t=0,n=0,r=0;return{add:function(a,o){o||(o=a,a=0),a>n?n=a:a<r&&(r=a),e[a]||(e[a]=[]),e[a].push(o),t++},process:function(){for(var t=r;t<=n;t++)for(var a=e[t],o=0;o<a.length;o++){(0,a[o])()}},size:function(){return t}}}e.exports=function(e){var t=(e=e||{}).reporter,n=r.getOption(e,"async",!0),o=r.getOption(e,"auto",!0);o&&!n&&(t&&t.warn("Invalid options combination. auto=true and async=false is invalid. Setting async=true."),n=!0);var i,s=a(),l=!1;function c(){for(l=!0;s.size();){var e=s;s=a(),e.process()}l=!1}function u(){var e;e=c,i=setTimeout(e,0)}return{add:function(e,t){!l&&o&&n&&0===s.size()&&u(),s.add(e,t)},force:function(e){l||(void 0===e&&(e=n),i&&(clearTimeout(i),i=null),e?u():c())}}}},function(e,t,n){"use strict";(e.exports={}).getOption=function(e,t,n){var r=e[t];if(null==r&&void 0!==n)return n;return r}},function(e,t,n){"use strict";function r(e){return e._erd}e.exports={initState:function(e){return e._erd={},r(e)},getState:r,cleanState:function(e){delete e._erd}}},function(e,t,n){"use strict";var r=n(254);e.exports=function(e){var t=(e=e||{}).reporter,n=e.batchProcessor,a=e.stateHandler.getState;if(!t)throw new Error("Missing required dependency: reporter.");function o(t){var n=e.important?" !important; ":"; ";return(t.join(n)+n).trim()}function i(e){return a(e).object}return{makeDetectable:function(e,i,s){s||(s=i,i=e,e=null),(e=e||{}).debug,r.isIE(8)?s(i):function(i,s){var l=o(["display: block","position: absolute","top: 0","left: 0","width: 100%","height: 100%","border: none","padding: 0","margin: 0","opacity: 0","z-index: -1000","pointer-events: none"]),c=!1,u=window.getComputedStyle(i),d=i.offsetWidth,p=i.offsetHeight;function m(){function n(){if("static"===u.position){i.style.setProperty("position","relative",e.important?"important":"");var n=function(t,n,r,a){var o=r[a];"auto"!==o&&"0"!==function(e){return e.replace(/[^-\d\.]/g,"")}(o)&&(t.warn("An element that is positioned static has style."+a+"="+o+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+a+" will be set to 0. Element: ",n),n.style.setProperty(a,"0",e.important?"important":""))};n(t,i,u,"top"),n(t,i,u,"right"),n(t,i,u,"bottom"),n(t,i,u,"left")}}""!==u.position&&(n(),c=!0);var o=document.createElement("object");o.style.cssText=l,o.tabIndex=-1,o.type="text/html",o.setAttribute("aria-hidden","true"),o.onload=function(){c||n(),function e(t,n){if(!t.contentDocument){var r=a(t);return r.checkForObjectDocumentTimeoutId&&window.clearTimeout(r.checkForObjectDocumentTimeoutId),void(r.checkForObjectDocumentTimeoutId=setTimeout((function(){r.checkForObjectDocumentTimeoutId=0,e(t,n)}),100))}n(t.contentDocument)}(this,(function(e){s(i)}))},r.isIE()||(o.data="about:blank"),a(i)&&(i.appendChild(o),a(i).object=o,r.isIE()&&(o.data="about:blank"))}a(i).startSize={width:d,height:p},n?n.add(m):m()}(i,s)},addListener:function(e,t){function n(){t(e)}if(r.isIE(8))a(e).object={proxy:n},e.attachEvent("onresize",n);else{var o=i(e);if(!o)throw new Error("Element is not detectable by this strategy.");o.contentDocument.defaultView.addEventListener("resize",n)}},uninstall:function(e){if(a(e)){var t=i(e);t&&(r.isIE(8)?e.detachEvent("onresize",t.proxy):e.removeChild(t),a(e).checkForObjectDocumentTimeoutId&&window.clearTimeout(a(e).checkForObjectDocumentTimeoutId),delete a(e).object)}}}}},function(e,t,n){"use strict";var r=n(253).forEach;e.exports=function(e){var t=(e=e||{}).reporter,n=e.batchProcessor,a=e.stateHandler.getState,o=(e.stateHandler.hasState,e.idHandler);if(!n)throw new Error("Missing required dependency: batchProcessor");if(!t)throw new Error("Missing required dependency: reporter.");var i=function(){var e=document.createElement("div");e.style.cssText=l(["position: absolute","width: 1000px","height: 1000px","visibility: hidden","margin: 0","padding: 0"]);var t=document.createElement("div");t.style.cssText=l(["position: absolute","width: 500px","height: 500px","overflow: scroll","visibility: none","top: -1500px","left: -1500px","visibility: hidden","margin: 0","padding: 0"]),t.appendChild(e),document.body.insertBefore(t,document.body.firstChild);var n=500-t.clientWidth,r=500-t.clientHeight;return document.body.removeChild(t),{width:n,height:r}}();function s(e){!function(e,t,n){if(!e.getElementById(t)){var r=n+"_animation",a=n+"_animation_active",o="/* Created by the element-resize-detector library. */\n";o+="."+n+" > div::-webkit-scrollbar { "+l(["display: none"])+" }\n\n",o+="."+a+" { "+l(["-webkit-animation-duration: 0.1s","animation-duration: 0.1s","-webkit-animation-name: "+r,"animation-name: "+r])+" }\n",o+="@-webkit-keyframes "+r+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n",function(n,r){r=r||function(t){e.head.appendChild(t)};var a=e.createElement("style");a.innerHTML=n,a.id=t,r(a)}(o+="@keyframes "+r+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }")}}(e,"erd_scroll_detection_scrollbar_style","erd_scroll_detection_container")}function l(t){var n=e.important?" !important; ":"; ";return(t.join(n)+n).trim()}function c(e,n,r){if(e.addEventListener)e.addEventListener(n,r);else{if(!e.attachEvent)return t.error("[scroll] Don't know how to add event listeners.");e.attachEvent("on"+n,r)}}function u(e,n,r){if(e.removeEventListener)e.removeEventListener(n,r);else{if(!e.detachEvent)return t.error("[scroll] Don't know how to remove event listeners.");e.detachEvent("on"+n,r)}}function d(e){return a(e).container.childNodes[0].childNodes[0].childNodes[0]}function p(e){return a(e).container.childNodes[0].childNodes[0].childNodes[1]}return s(window.document),{makeDetectable:function(e,s,u){function m(){if(e.debug){var n=Array.prototype.slice.call(arguments);if(n.unshift(o.get(s),"Scroll: "),t.log.apply)t.log.apply(null,n);else for(var r=0;r<n.length;r++)t.log(n[r])}}function f(e){var t=a(e).container.childNodes[0],n=window.getComputedStyle(t);return!n.width||-1===n.width.indexOf("px")}function h(){var e=window.getComputedStyle(s),t={};return t.position=e.position,t.width=s.offsetWidth,t.height=s.offsetHeight,t.top=e.top,t.right=e.right,t.bottom=e.bottom,t.left=e.left,t.widthCSS=e.width,t.heightCSS=e.height,t}function b(){if(m("storeStyle invoked."),a(s)){var e=h();a(s).style=e}else m("Aborting because element has been uninstalled")}function g(e,t,n){a(e).lastWidth=t,a(e).lastHeight=n}function _(){return 2*i.width+1}function y(){return 2*i.height+1}function k(e){return e+10+_()}function w(e){return e+10+y()}function v(e,t,n){var r=d(e),a=p(e),o=k(t),i=w(n),s=function(e){return 2*e+_()}(t),l=function(e){return 2*e+y()}(n);r.scrollLeft=o,r.scrollTop=i,a.scrollLeft=s,a.scrollTop=l}function M(){var e=a(s).container;if(!e){(e=document.createElement("div")).className="erd_scroll_detection_container",e.style.cssText=l(["visibility: hidden","display: inline","width: 0px","height: 0px","z-index: -1","overflow: hidden","margin: 0","padding: 0"]),a(s).container=e,function(e){e.className+=" erd_scroll_detection_container_animation_active"}(e),s.appendChild(e);var t=function(){a(s).onRendered&&a(s).onRendered()};c(e,"animationstart",t),a(s).onAnimationStart=t}return e}function L(){if(m("Injecting elements"),a(s)){!function(){var n=a(s).style;if("static"===n.position){s.style.setProperty("position","relative",e.important?"important":"");var r=function(e,t,n,r){var a=n[r];"auto"!==a&&"0"!==function(e){return e.replace(/[^-\d\.]/g,"")}(a)&&(e.warn("An element that is positioned static has style."+r+"="+a+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+r+" will be set to 0. Element: ",t),t.style[r]=0)};r(t,s,n,"top"),r(t,s,n,"right"),r(t,s,n,"bottom"),r(t,s,n,"left")}}();var n=a(s).container;n||(n=M());var r,o,u,d,p=i.width,f=i.height,h=l(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden","width: 100%","height: 100%","left: 0px","top: 0px"]),b=l(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden"].concat(["left: "+(r=(r=-(1+p))?r+"px":"0"),"top: "+(o=(o=-(1+f))?o+"px":"0"),"right: "+(d=(d=-p)?d+"px":"0"),"bottom: "+(u=(u=-f)?u+"px":"0")])),g=l(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),_=l(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),y=l(["position: absolute","left: 0","top: 0"]),k=l(["position: absolute","width: 200%","height: 200%"]),w=document.createElement("div"),v=document.createElement("div"),L=document.createElement("div"),T=document.createElement("div"),E=document.createElement("div"),S=document.createElement("div");w.dir="ltr",w.style.cssText=h,w.className="erd_scroll_detection_container",v.className="erd_scroll_detection_container",v.style.cssText=b,L.style.cssText=g,T.style.cssText=y,E.style.cssText=_,S.style.cssText=k,L.appendChild(T),E.appendChild(S),v.appendChild(L),v.appendChild(E),w.appendChild(v),n.appendChild(w),c(L,"scroll",x),c(E,"scroll",C),a(s).onExpandScroll=x,a(s).onShrinkScroll=C}else m("Aborting because element has been uninstalled");function x(){a(s).onExpand&&a(s).onExpand()}function C(){a(s).onShrink&&a(s).onShrink()}}function T(){function i(t,n,r){var a=function(e){return d(e).childNodes[0]}(t),o=k(n),i=w(r);a.style.setProperty("width",o+"px",e.important?"important":""),a.style.setProperty("height",i+"px",e.important?"important":"")}function l(r){var l=s.offsetWidth,u=s.offsetHeight,d=l!==a(s).lastWidth||u!==a(s).lastHeight;m("Storing current size",l,u),g(s,l,u),n.add(0,(function(){if(d)if(a(s))if(c()){if(e.debug){var n=s.offsetWidth,r=s.offsetHeight;n===l&&r===u||t.warn(o.get(s),"Scroll: Size changed before updating detector elements.")}i(s,l,u)}else m("Aborting because element container has not been initialized");else m("Aborting because element has been uninstalled")})),n.add(1,(function(){a(s)?c()?v(s,l,u):m("Aborting because element container has not been initialized"):m("Aborting because element has been uninstalled")})),d&&r&&n.add(2,(function(){a(s)?c()?r():m("Aborting because element container has not been initialized"):m("Aborting because element has been uninstalled")}))}function c(){return!!a(s).container}function u(){m("notifyListenersIfNeeded invoked");var e=a(s);return void 0===a(s).lastNotifiedWidth&&e.lastWidth===e.startSize.width&&e.lastHeight===e.startSize.height?m("Not notifying: Size is the same as the start size, and there has been no notification yet."):e.lastWidth===e.lastNotifiedWidth&&e.lastHeight===e.lastNotifiedHeight?m("Not notifying: Size already notified"):(m("Current size not notified, notifying..."),e.lastNotifiedWidth=e.lastWidth,e.lastNotifiedHeight=e.lastHeight,void r(a(s).listeners,(function(e){e(s)})))}function h(){m("Scroll detected."),f(s)?m("Scroll event fired while unrendered. Ignoring..."):l(u)}if(m("registerListenersAndPositionElements invoked."),a(s)){a(s).onRendered=function(){if(m("startanimation triggered."),f(s))m("Ignoring since element is still unrendered...");else{m("Element rendered.");var e=d(s),t=p(s);0!==e.scrollLeft&&0!==e.scrollTop&&0!==t.scrollLeft&&0!==t.scrollTop||(m("Scrollbars out of sync. Updating detector elements..."),l(u))}},a(s).onExpand=h,a(s).onShrink=h;var b=a(s).style;i(s,b.width,b.height)}else m("Aborting because element has been uninstalled")}function E(){if(m("finalizeDomMutation invoked."),a(s)){var e=a(s).style;g(s,e.width,e.height),v(s,e.width,e.height)}else m("Aborting because element has been uninstalled")}function S(){u(s)}function x(){var e;m("Installing..."),a(s).listeners=[],e=h(),a(s).startSize={width:e.width,height:e.height},m("Element start size",a(s).startSize),n.add(0,b),n.add(1,L),n.add(2,T),n.add(3,E),n.add(4,S)}u||(u=s,s=e,e=null),e=e||{},m("Making detectable..."),!function(e){return!function(e){return e===e.ownerDocument.body||e.ownerDocument.body.contains(e)}(e)||null===window.getComputedStyle(e)}(s)?x():(m("Element is detached"),M(),m("Waiting until element is attached..."),a(s).onRendered=function(){m("Element is now attached"),x()})},addListener:function(e,t){if(!a(e).listeners.push)throw new Error("Cannot add listener to an element that is not detectable.");a(e).listeners.push(t)},uninstall:function(e){var t=a(e);t&&(t.onExpandScroll&&u(d(e),"scroll",t.onExpandScroll),t.onShrinkScroll&&u(p(e),"scroll",t.onShrinkScroll),t.onAnimationStart&&u(t.container,"animationstart",t.onAnimationStart),t.container&&e.removeChild(t.container))},initDocument:s}}},function(e,t,n){var r=n(5),a=n(415),o=n(125),i=Math.max,s=Math.min;e.exports=function(e,t,n){var l,c,u,d,p,m,f=0,h=!1,b=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function _(t){var n=l,r=c;return l=c=void 0,f=t,d=e.apply(r,n)}function y(e){return f=e,p=setTimeout(w,t),h?_(e):d}function k(e){var n=e-m;return void 0===m||n>=t||n<0||b&&e-f>=u}function w(){var e=a();if(k(e))return v(e);p=setTimeout(w,function(e){var n=t-(e-m);return b?s(n,u-(e-f)):n}(e))}function v(e){return p=void 0,g&&l?_(e):(l=c=void 0,d)}function M(){var e=a(),n=k(e);if(l=arguments,c=this,m=e,n){if(void 0===p)return y(m);if(b)return clearTimeout(p),p=setTimeout(w,t),_(m)}return void 0===p&&(p=setTimeout(w,t)),d}return t=o(t)||0,r(n)&&(h=!!n.leading,u=(b="maxWait"in n)?i(o(n.maxWait)||0,t):u,g="trailing"in n?!!n.trailing:g),M.cancel=function(){void 0!==p&&clearTimeout(p),f=0,l=m=c=p=void 0},M.flush=function(){return void 0===p?d:v(a())},M}},function(e,t,n){var r=n(4);e.exports=function(){return r.Date.now()}},function(e,t,n){"use strict";var r=n(2),a=n(417);if(void 0===r)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var o=(new r.Component).updater;e.exports=a(r.Component,r.isValidElement,o)},function(e,t,n){"use strict";var r=n(83),a=n(418),o=n(419);e.exports=function(e,t,n){var i=[],s={mixins:"DEFINE_MANY",statics:"DEFINE_MANY",propTypes:"DEFINE_MANY",contextTypes:"DEFINE_MANY",childContextTypes:"DEFINE_MANY",getDefaultProps:"DEFINE_MANY_MERGED",getInitialState:"DEFINE_MANY_MERGED",getChildContext:"DEFINE_MANY_MERGED",render:"DEFINE_ONCE",componentWillMount:"DEFINE_MANY",componentDidMount:"DEFINE_MANY",componentWillReceiveProps:"DEFINE_MANY",shouldComponentUpdate:"DEFINE_ONCE",componentWillUpdate:"DEFINE_MANY",componentDidUpdate:"DEFINE_MANY",componentWillUnmount:"DEFINE_MANY",UNSAFE_componentWillMount:"DEFINE_MANY",UNSAFE_componentWillReceiveProps:"DEFINE_MANY",UNSAFE_componentWillUpdate:"DEFINE_MANY",updateComponent:"OVERRIDE_BASE"},l={getDerivedStateFromProps:"DEFINE_MANY_MERGED"},c={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n<t.length;n++)d(e,t[n])},childContextTypes:function(e,t){e.childContextTypes=r({},e.childContextTypes,t)},contextTypes:function(e,t){e.contextTypes=r({},e.contextTypes,t)},getDefaultProps:function(e,t){e.getDefaultProps?e.getDefaultProps=m(e.getDefaultProps,t):e.getDefaultProps=t},propTypes:function(e,t){e.propTypes=r({},e.propTypes,t)},statics:function(e,t){!function(e,t){if(!t)return;for(var n in t){var r=t[n];if(t.hasOwnProperty(n)){if(o(!(n in c),'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n),n in e){var a=l.hasOwnProperty(n)?l[n]:null;return o("DEFINE_MANY_MERGED"===a,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),void(e[n]=m(e[n],r))}e[n]=r}}}(e,t)},autobind:function(){}};function u(e,t){var n=s.hasOwnProperty(t)?s[t]:null;_.hasOwnProperty(t)&&o("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",t),e&&o("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",t)}function d(e,n){if(n){o("function"!=typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),o(!t(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var r=e.prototype,a=r.__reactAutoBindPairs;for(var i in n.hasOwnProperty("mixins")&&c.mixins(e,n.mixins),n)if(n.hasOwnProperty(i)&&"mixins"!==i){var l=n[i],d=r.hasOwnProperty(i);if(u(d,i),c.hasOwnProperty(i))c[i](e,l);else{var p=s.hasOwnProperty(i);if("function"==typeof l&&!p&&!d&&!1!==n.autobind)a.push(i,l),r[i]=l;else if(d){var h=s[i];o(p&&("DEFINE_MANY_MERGED"===h||"DEFINE_MANY"===h),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",h,i),"DEFINE_MANY_MERGED"===h?r[i]=m(r[i],l):"DEFINE_MANY"===h&&(r[i]=f(r[i],l))}else r[i]=l}}}else;}function p(e,t){for(var n in o(e&&t&&"object"==typeof e&&"object"==typeof t,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."),t)t.hasOwnProperty(n)&&(o(void 0===e[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),e[n]=t[n]);return e}function m(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var a={};return p(a,n),p(a,r),a}}function f(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function h(e,t){return t.bind(e)}var b={componentDidMount:function(){this.__isMounted=!0}},g={componentWillUnmount:function(){this.__isMounted=!1}},_={replaceState:function(e,t){this.updater.enqueueReplaceState(this,e,t)},isMounted:function(){return!!this.__isMounted}},y=function(){};return r(y.prototype,e.prototype,_),function(e){var t=function(e,r,i){this.__reactAutoBindPairs.length&&function(e){for(var t=e.__reactAutoBindPairs,n=0;n<t.length;n+=2){var r=t[n],a=t[n+1];e[r]=h(e,a)}}(this),this.props=e,this.context=r,this.refs=a,this.updater=i||n,this.state=null;var s=this.getInitialState?this.getInitialState():null;o("object"==typeof s&&!Array.isArray(s),"%s.getInitialState(): must return an object or null",t.displayName||"ReactCompositeComponent"),this.state=s};for(var r in t.prototype=new y,t.prototype.constructor=t,t.prototype.__reactAutoBindPairs=[],i.forEach(d.bind(null,t)),d(t,b),d(t,e),d(t,g),t.getDefaultProps&&(t.defaultProps=t.getDefaultProps()),o(t.prototype.render,"createClass(...): Class specification must implement a `render` method."),s)t.prototype[r]||(t.prototype[r]=null);return t}}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){var r=n(33);e.exports=function(e){return"function"==typeof e?e:r}},function(e,t,n){"use strict";n.r(t);n(422),n(426),n(262),n(427);const r={};r.category=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-blockspare",fill:"url(#blockspare-gradient)",width:"52px",height:"20px",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 52 20"},wp.element.createElement("defs",null,wp.element.createElement("linearGradient",{id:"blockspare-gradient",x2:"0%",y2:"100%",gradientUnits:"userSpaceOnUse"},wp.element.createElement("stop",{offset:"20%","stop-color":"#863091"}),wp.element.createElement("stop",{offset:"40%","stop-color":"#802F8D"}),wp.element.createElement("stop",{offset:"60%","stop-color":"#6F2B80"}),wp.element.createElement("stop",{offset:"80%","stop-color":"#53266C"}),wp.element.createElement("stop",{offset:"100%","stop-color":"#3F225E"}))),wp.element.createElement("g",null,wp.element.createElement("path",{id:"XMLID_14_",d:"M5.8,13.3C6.5,10.4,7.2,7.5,8,4.6c1.1,0,2.3,0,3.5,0c0.7,2.9,1.4,5.7,2.1,8.6c0,0,0.1,0,0.1,0 c0.3-1.5,0.6-3,0.9-4.5c0.3-1.2,0.5-2.5,0.8-3.7c0-0.1,0.2-0.4,0.3-0.4c1,0,2,0,3,0c-0.2,0.8-0.4,1.5-0.6,2.2 c-0.9,3.3-1.8,6.5-2.7,9.8c-0.1,0.4-0.2,0.5-0.7,0.5c-1,0-2,0-3,0c-0.7-2.6-1.4-5.1-2.1-7.7c0,0-0.1,0-0.1,0 c-0.7,2.6-1.4,5.1-2.1,7.7c-1.1,0-2.2,0-3.2,0c-0.1,0-0.3-0.3-0.4-0.4C2.7,13,1.7,9.4,0.6,5.8C0.5,5.4,0.4,5,0.3,4.6 c1.1,0,2.1,0,3.2,0c0.7,2.9,1.4,5.8,2.1,8.7C5.7,13.3,5.8,13.3,5.8,13.3z"}),wp.element.createElement("path",{d:"M22.4,17c-1,0-1.9,0-2.9,0c0-0.2,0-0.4,0-0.6c0-3.7,0-7.4,0-11.1c0-0.5,0.1-0.7,0.7-0.7c1.7,0,3.4,0,5.1,0.1 c2.2,0.1,3.7,1.8,3.7,3.9c0,1.7-1.3,3.1-3,3.4C25,12.2,24,12.1,23,12.1c-0.4,0-0.6,0.1-0.6,0.6C22.5,14.1,22.4,15.5,22.4,17z M22.4,8.4c0,0.4,0,0.7,0,1.1c0,0.3,0.1,0.5,0.5,0.5c0.5,0,1.1,0,1.6,0c0.8,0,1.4-0.6,1.4-1.4c0-0.9-0.5-1.5-1.3-1.6 c-0.5-0.1-1.1,0-1.6-0.1c-0.5,0-0.6,0.2-0.6,0.6C22.5,7.7,22.4,8.1,22.4,8.4z"}),wp.element.createElement("path",{id:"XMLID_11_",d:"M46.6,14.6c0-0.8,0-1.6,0-2.4c0-0.4-0.1-0.5-0.5-0.5c-0.8,0-1.7,0-2.5,0c0-1.8,0-3.5,0-5.2c0.6,0,1.3,0,2,0 c0-0.7,0-1.4,0-2.2c1.2,0,2.4,0,3.5,0c0.1,0,0.3,0.2,0.3,0.3c0.7,3.3,1.4,6.5,2.2,9.8c0,0,0,0.1,0,0.1 C49.9,14.6,48.3,14.6,46.6,14.6z"}),wp.element.createElement("path",{id:"XMLID_10_",d:"M37.2,11.6c0,0.5,0,1,0,1.5c-0.1,0.8-0.5,1.4-1.1,1.5c-0.8,0.2-1.6,0.2-2.2-0.5c-0.3-0.3-0.5-0.4-0.9-0.4 c-0.5,0-1.2,0.1-1.5-0.1c-0.3-0.2-0.3-0.9-0.4-1.4c-0.5-2.4-1.1-4.9-1.6-7.3c0-0.2,0-0.3-0.1-0.6c3.4-0.8,6.8-1.5,10.2-2.3 c0,0.7,0,1.3,0,1.9c-0.8,0-1.5,0-2.3,0c0,0.4,0,0.6-0.1,1c-2.1-1.5-4-1.3-5.5,0.4c-0.7,0.9-1,1.9-1,3c0,1.2,0.3,2.2,1,3.1 C32.7,12.8,35.2,13.7,37.2,11.6z"}),wp.element.createElement("path",{id:"XMLID_9_",d:"M40,12.9c0.8,0,1.5,0,2.3,0c0,0.7,0,1.4,0,2.1c0,0.5,0.1,0.7,0.7,0.7c0.8,0,1.5,0,2.4,0c0,0.4,0,0.8,0,1.2 c0,0.1-0.2,0.3-0.3,0.3c-1.5,0.3-2.9,0.7-4.4,1c-0.6,0.1-0.7,0-0.7-0.6c0-1.4,0-2.8,0-4.2C40,13.3,40,13.1,40,12.9z"}),wp.element.createElement("path",{id:"XMLID_8_",d:"M38.9,15.9c0,0.8,0,1.6,0,2.5c0,0.1-0.1,0.3-0.2,0.3c-2,0.4-3.9,0.9-5.9,1.3c-0.3-1.4-0.6-2.7-0.9-4 C34.2,17.4,36.5,17.5,38.9,15.9z"}),wp.element.createElement("path",{id:"XMLID_7_",d:"M33.4,8.3c0-0.8,0.3-1.6,1.1-1.9c0.7-0.3,1.4-0.2,2,0.3c0.8,0.7,0.9,2.1,0.3,3c-0.5,0.8-1.6,1-2.4,0.5 C33.7,9.8,33.4,9.3,33.4,8.3z"}),wp.element.createElement("path",{id:"XMLID_6_",d:"M40,6.5c0.8,0,1.6,0,2.4,0c0,0.9,0,1.7,0,2.5c0,0.8,0,1.5,0,2.3c0,0.1-0.2,0.4-0.3,0.4c-0.7,0-1.4,0-2.1,0 C40,9.9,40,8.2,40,6.5z"}),wp.element.createElement("path",{id:"XMLID_5_",d:"M45.6,0.6c0.9-0.2,1.8-0.4,2.7-0.6c0.2,1.1,0.5,2.1,0.7,3.2c-1.2,0-2.3,0-3.5,0C45.6,2.3,45.6,1.5,45.6,0.6z "}),wp.element.createElement("path",{id:"XMLID_4_",d:"M40.8,1.7c1.2,0,2.4,0,3.6,0c0,0.5,0,1,0,1.6c-0.7,0-1.3,0-2,0c0,0.7,0,1.3,0,2c-0.6,0-1,0-1.6,0 C40.8,4.1,40.8,2.9,40.8,1.7z"}),wp.element.createElement("path",{id:"XMLID_3_",d:"M51.7,15.8c-1.7,0.4-3.4,0.7-5.1,1.1c0-0.4,0-0.8,0-1.2C48.3,15.8,50,15.8,51.7,15.8 C51.7,15.8,51.7,15.8,51.7,15.8z"}),wp.element.createElement("path",{id:"XMLID_2_",d:"M43.5,12.9c0.7,0,1.3,0,1.9,0c0,0.6,0,1.1,0,1.7c-0.6,0-1.2,0-1.9,0C43.5,14,43.5,13.5,43.5,12.9z"}),wp.element.createElement("path",{id:"XMLID_1_",d:"M44.4,5.3c-0.3,0-0.5,0-0.9,0c0-0.3,0-0.6,0-0.9C44.4,4.2,44.6,4.3,44.4,5.3z"}))),r.accordion=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-accordion",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("rect",{id:"XMLID_1_",x:"1.2",y:"6.8",width:"17.6",height:"12.6"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"1.2",y:"3.6",width:"17.6",height:"2"}),wp.element.createElement("rect",{id:"XMLID_3_",x:"1.2",y:"0.6",width:"17.6",height:"2"}))),r.container=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-container",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("circle",{id:"XMLID_3_",cx:"10",cy:"9.9",r:"5.5"}),wp.element.createElement("g",{id:"XMLID_4_"},wp.element.createElement("rect",{id:"XMLID_5_",x:"8.9",y:"6.1",class:"st0",width:"2.2",height:"7.9"}),wp.element.createElement("rect",{id:"XMLID_6_",x:"6",y:"9",class:"st0",width:"7.9",height:"2.2"}))),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_8_",d:"M20,20H0V0H20V20z M1,19H19V1H1V19z"}))),r.contentbox=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-contentbox",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("circle",{id:"XMLID_1_",cx:"5.7",cy:"10",r:"3.8"}),wp.element.createElement("g",{id:"XMLID_3_"},wp.element.createElement("rect",{id:"XMLID_5_",x:"10.7",y:"10.6",width:"7.3",height:"2"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"10.7",y:"7.4",width:"7.3",height:"2"}))),wp.element.createElement("g",{id:"XMLID_7_"},wp.element.createElement("path",{id:"XMLID_4_",d:"M19.8,16.8H0.2V3.2h19.7V16.8z M0.9,16h18.2V4H0.9V16z"}))),r.userprofile=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-userprofile",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_3_",d:"M13.1,2.5c1.7,1.7,1.7,4.5,0,6.3s-4.5,1.7-6.3,0s-1.7-4.5,0-6.3C8.6,0.7,11.4,0.7,13.1,2.5"}),wp.element.createElement("path",{id:"XMLID_2_",d:"M16.8,13.2c-4-2.7-9.5-2.7-13.6,0c-0.6,0.4-1,1.1-1,1.8v3.8h15.5V15C17.7,14.3,17.4,13.6,16.8,13.2 L16.8,13.2z"}))),r.starrating=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-starrating",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("polygon",{id:"XMLID_6_",points:"17.4,8.2 12.3,7.5 10,2.8 7.7,7.5 2.6,8.2 6.3,11.8 5.4,16.9 10,14.5 14.6,16.9 13.7,11.8 "}),wp.element.createElement("polygon",{id:"XMLID_8_",class:"st0",points:"13.7,15.8 10,13.8 10,4.2 11.9,8 16,8.6 13,11.6 "}))),r.imagecarousel=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-imagecarousel",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_9_",d:"M16.4,16.4H3.6V3.6h12.7V16.4z M4.6,15.4h10.7V4.6H4.6V15.4z"})),wp.element.createElement("rect",{id:"XMLID_3_",x:"17.5",y:"4.1",width:"2.5",height:"11.7"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"0",y:"4.1",width:"2.5",height:"11.7"}),wp.element.createElement("g",{id:"XMLID_7_"},wp.element.createElement("polygon",{id:"XMLID_2_",points:"5.1,14 8.6,7.9 12.1,14 "}),wp.element.createElement("polygon",{id:"XMLID_6_",points:"10.4,14 12.6,10.1 14.9,14 "}),wp.element.createElement("circle",{id:"XMLID_5_",cx:"12.4",cy:"7.1",r:"1.4"}))),r.imageslider=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-imageslider",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("path",{id:"XMLID_9_",d:"M16.4,16.4H3.6V3.6h12.7V16.4z M4.6,15.4h10.7V4.6H4.6V15.4z"}),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("polygon",{id:"XMLID_5_",points:"5.1,14 8.6,7.9 12.1,14 "}),wp.element.createElement("polygon",{id:"XMLID_6_",points:"10.4,14 12.6,10.1 14.9,14 "}),wp.element.createElement("circle",{id:"XMLID_7_",cx:"12.4",cy:"7.1",r:"1.4"})),wp.element.createElement("path",{id:"XMLID_20_",d:"M1.1,10l1.5-0.9C2.7,9,2.7,8.9,2.7,8.7c0-0.1-0.1-0.3-0.2-0.4C2.4,8.2,2.2,8.2,2,8.3L0.1,9.5 C0,9.6,0,9.7,0,9.9v0.2c0,0.2,0,0.4,0.1,0.5L2,11.7c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.4 c0-0.2-0.1-0.3-0.2-0.4L1.1,10z"}),wp.element.createElement("path",{id:"XMLID_17_",d:"M19.9,9.5L18,8.3c-0.2-0.1-0.4-0.1-0.6,0.1c-0.1,0.1-0.1,0.2-0.1,0.4c0,0.2,0.1,0.3,0.2,0.4l1.5,0.9 l-1.5,0.9c-0.1,0.1-0.2,0.2-0.2,0.4c0,0.1,0.1,0.3,0.2,0.4c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1l1.8-1.1 c0.2-0.1,0.2-0.3,0.2-0.5V9.9C20,9.7,20,9.6,19.9,9.5z"})),r.postlist=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-postlist",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_5_",d:"M6.8,8.3H0.9V2h5.9V8.3z"})),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("rect",{id:"XMLID_3_",x:"8.7",y:"3.1",width:"8.5",height:"1.4"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"8.7",y:"5.8",width:"10.2",height:"1.4"})),wp.element.createElement("g",{id:"XMLID_14_"},wp.element.createElement("path",{id:"XMLID_15_",d:"M6.9,18.2H0.8v-6.6h6.1V18.2z"})),wp.element.createElement("g",{id:"XMLID_11_"},wp.element.createElement("rect",{id:"XMLID_13_",x:"8.7",y:"12.8",width:"8.5",height:"1.4"}),wp.element.createElement("rect",{id:"XMLID_12_",x:"8.7",y:"15.5",width:"10.2",height:"1.4"}))),r.postgrid=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-postgrid",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_5_"},wp.element.createElement("g",{id:"XMLID_14_"},wp.element.createElement("path",{id:"XMLID_15_",d:"M9,11.2H1V2.9h8V11.2z"})),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_3_",d:"M19,11.2h-8V2.9h8V11.2z"})),wp.element.createElement("rect",{id:"XMLID_1_",x:"1",y:"12.4",width:"7.2",height:"1.8"}),wp.element.createElement("rect",{id:"XMLID_6_",x:"1",y:"15.3",width:"8",height:"1.8"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"11",y:"12.4",width:"7.2",height:"1.8"}),wp.element.createElement("rect",{id:"XMLID_7_",x:"11",y:"15.3",width:"8",height:"1.8"}))),r.postcarousel=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-postcarousel",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("g",{id:"XMLID_14_"},wp.element.createElement("path",{id:"XMLID_15_",d:"M16,11.4H4V1.7H16V11.4z"})),wp.element.createElement("rect",{id:"XMLID_5_",x:"4",y:"12.8",width:"10.8",height:"2.1"}),wp.element.createElement("rect",{id:"XMLID_6_",x:"4",y:"16.2",width:"12.1",height:"2.1"})),wp.element.createElement("path",{id:"XMLID_20_",d:"M1.1,10l1.5-0.9C2.7,9,2.7,8.9,2.7,8.7c0-0.1-0.1-0.3-0.2-0.4C2.4,8.2,2.2,8.2,2,8.3L0.1,9.5 C0,9.6,0,9.7,0,9.9v0.2c0,0.2,0,0.4,0.1,0.5L2,11.7c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.4 c0-0.2-0.1-0.3-0.2-0.4L1.1,10z"}),wp.element.createElement("path",{id:"XMLID_2_",d:"M19.9,9.5L18,8.3c-0.2-0.1-0.4-0.1-0.6,0.1c-0.1,0.1-0.1,0.2-0.1,0.4c0,0.2,0.1,0.3,0.2,0.4l1.5,0.9l-1.5,0.9 c-0.1,0.1-0.2,0.2-0.2,0.4c0,0.1,0.1,0.3,0.2,0.4c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1l1.8-1.1c0.2-0.1,0.2-0.3,0.2-0.5V9.9 C20,9.7,20,9.6,19.9,9.5z"})),r.iconblockspare=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-iconblockspare",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_23_",d:"M17.4,2c0.2,0,0.5,0,0.7,0c0.4,0,0.5,0.1,0.5,0.5c0,2.7-0.9,5-2.8,6.9c-0.8,0.8-1.7,1.5-2.5,2.3 c-0.1,0.1-0.2,0.3-0.2,0.4c-0.1,1.1-0.1,2.2-0.2,3.3c0,0.3-0.1,0.4-0.3,0.6c-1.2,0.7-2.5,1.4-3.7,2c-0.3,0.2-0.5,0.1-0.7-0.1 c-0.6-0.4-0.7-0.9-0.4-1.5c0.3-0.6,0.4-1.2,0.6-1.8c0.1-0.2,0-0.3-0.1-0.5c-0.8-0.8-1.7-1.6-2.5-2.4c-0.2-0.2-0.3-0.2-0.5-0.1 c-0.8,0.3-1.7,0.5-2.5,0.7c-0.3,0.1-0.4,0-0.6-0.2c-0.9-0.9-0.8-0.6-0.2-1.5c0.6-1,1.2-2,1.8-2.9C3.8,7.4,4,7.3,4.3,7.3 c1.2,0,2.3-0.1,3.5-0.2C8,7.1,8.2,7,8.3,6.9c1-1,2-2,3.1-2.9C13,2.7,14.9,2.1,17,2C17.1,2,17.3,2,17.4,2C17.4,2,17.4,2,17.4,2z M15.2,6.1c0.6,0,1-0.4,1-0.9c0-0.5-0.5-1-1-1c-0.5,0-1,0.4-1,1C14.2,5.6,14.7,6.1,15.2,6.1z"}))),r.iconlist=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-iconlist",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_16_",d:"M2.4,3.3c0.7-0.7,1.3-1.3,2-2c0.1-0.1,0.1-0.1,0.2-0.2C4.8,1,5.1,1,5.3,1.1c0.2,0.2,0.2,0.4,0,0.6 c0,0-0.1,0.1-0.1,0.1C4.4,2.7,3.6,3.5,2.8,4.3C2.5,4.6,2.3,4.6,2,4.3C1.6,3.9,1.2,3.5,0.8,3.1C0.5,2.8,0.6,2.3,1,2.2 c0.2-0.1,0.4,0,0.5,0.2C1.8,2.7,2.1,3,2.4,3.3z"}),wp.element.createElement("rect",{id:"XMLID_1_",x:"6.4",y:"2.2",width:"13",height:"1.7"})),wp.element.createElement("g",{id:"XMLID_4_"},wp.element.createElement("path",{id:"XMLID_6_",d:"M2.4,10.6c0.7-0.7,1.3-1.3,2-2c0.1-0.1,0.1-0.1,0.2-0.2c0.2-0.2,0.5-0.2,0.7,0c0.2,0.2,0.2,0.4,0,0.6 c0,0-0.1,0.1-0.1,0.1c-0.8,0.8-1.6,1.6-2.4,2.4c-0.3,0.3-0.5,0.3-0.8,0c-0.4-0.4-0.8-0.8-1.2-1.2C0.5,10,0.6,9.6,1,9.5 c0.2-0.1,0.4,0,0.5,0.2C1.8,10,2.1,10.3,2.4,10.6z"}),wp.element.createElement("rect",{id:"XMLID_5_",x:"6.4",y:"9.5",width:"13",height:"1.7"})),wp.element.createElement("g",{id:"XMLID_7_"},wp.element.createElement("path",{id:"XMLID_9_",d:"M2.4,17.8c0.7-0.7,1.3-1.3,2-2c0.1-0.1,0.1-0.1,0.2-0.2c0.2-0.2,0.5-0.2,0.7,0c0.2,0.2,0.2,0.4,0,0.6 c0,0-0.1,0.1-0.1,0.1c-0.8,0.8-1.6,1.6-2.4,2.4c-0.3,0.3-0.5,0.3-0.8,0c-0.4-0.4-0.8-0.8-1.2-1.2c-0.3-0.3-0.2-0.7,0.2-0.8 c0.2-0.1,0.4,0,0.5,0.2C1.8,17.2,2.1,17.5,2.4,17.8z"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"6.4",y:"16.7",width:"13",height:"1.7"}))),r.button=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-button",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("path",{id:"XMLID_2_",class:"st0",d:"M18,9.5H2c-1.1,0-2-0.9-2-2v-2c0-1.1,0.9-2,2-2H18c1.1,0,2,0.9,2,2v2C20,8.6,19.1,9.5,18,9.5z"}),wp.element.createElement("g",{id:"XMLID_5_"},wp.element.createElement("path",{id:"XMLID_6_",class:"st1",d:"M12.8,20H9.7c-1,0-1.9-0.6-2.4-1.5L4.4,13l0.4-0.3c0.3-0.3,0.7-0.4,1.1-0.4 c0.4,0,0.8,0.2,1.1,0.6l0.5,0.6l0-6.2c0-0.6,0.5-1.2,1.1-1.2c0.6,0,1.1,0.5,1.1,1.2v3.2c0.2-0.2,0.5-0.4,0.8-0.4 c0.5,0,0.9,0.3,1.1,0.8c0.2-0.3,0.5-0.5,0.9-0.5c0.5,0,1,0.4,1.1,1c0.2-0.3,0.5-0.4,0.9-0.4h0c0.6,0,1.1,0.5,1.1,1.2l0,4.8 C15.6,18.7,14.4,20,12.8,20z M5.3,13.2l2.6,5c0.4,0.7,1.1,1.1,1.8,1.1h3.1c1.1,0,2.1-1,2.1-2.2l0-4.8c0-0.2-0.2-0.4-0.4-0.4h0 c-0.2,0-0.4,0.2-0.4,0.4v0.6c0,0.3-0.3,0.6-0.6,0.6s-0.6-0.3-0.6-0.6v-1.1c0-0.2-0.2-0.4-0.4-0.4c-0.2,0-0.4,0.2-0.4,0.4v1.2 c0,0.3-0.3,0.6-0.6,0.6c-0.3,0-0.6-0.3-0.6-0.6v-1.5c0-0.2-0.2-0.4-0.4-0.4c-0.2,0-0.4,0.2-0.4,0.4V13c0,0.3-0.3,0.6-0.6,0.6 C9.3,13.6,9,13.4,9,13V7.3c0-0.2-0.2-0.4-0.4-0.4S8.3,7.1,8.3,7.3l0,6.6c0,0.3-0.2,0.5-0.4,0.6c-0.2,0.1-0.5,0-0.7-0.2l-0.8-1 C6.3,13.1,6.1,13,5.9,13C5.7,13,5.5,13,5.3,13.2z"})),wp.element.createElement("g",{id:"XMLID_4_"},wp.element.createElement("path",{id:"XMLID_3_",class:"st0",d:"M14.5,11.4L14.5,11.4c-0.4,0-0.8,0.3-0.8,0.8v0.6c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2 v-1.1c0-0.4-0.3-0.8-0.7-0.8c-0.4,0-0.7,0.4-0.7,0.8v1.2c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2v-1.5c0-0.4-0.3-0.8-0.7-0.8 h0c-0.4,0-0.7,0.3-0.7,0.8V13c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2v-1.7c0,0,0,0,0,0c0,0,0,0,0,0v-4 c0-0.4-0.3-0.8-0.7-0.8c-0.4,0-0.7,0.4-0.7,0.8l0,6.6c0,0.1-0.1,0.2-0.1,0.2c-0.1,0-0.2,0-0.2-0.1l-0.8-1c-0.2-0.3-0.5-0.4-0.8-0.4 c-0.3,0-0.6,0.1-0.9,0.3c0,0,0,0,0,0l-0.2,0.1l2.7,5.2c0.4,0.8,1.2,1.3,2.1,1.3h3.1c1.3,0,2.4-1.2,2.4-2.6c0-0.8,0-1.3,0-1.8 c0-1.2,0-1.7,0-3C15.2,11.7,14.9,11.4,14.5,11.4z"}))),r.cta=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-cta",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_17_"},wp.element.createElement("rect",{id:"XMLID_15_",x:"14.6",y:"4.1",transform:"matrix(0.7071 -0.7071 0.7071 0.7071 1.7696 13.5544)",class:"st0",width:"5.3",height:"1.2"}),wp.element.createElement("rect",{id:"XMLID_14_",x:"16.4",y:"8.1",class:"st0",width:"3.5",height:"1.2"}),wp.element.createElement("rect",{id:"XMLID_13_",x:"14.6",y:"12.6",transform:"matrix(0.7071 0.7071 -0.7071 0.7071 14.3689 -8.3364)",class:"st0",width:"5.3",height:"1.2"}),wp.element.createElement("g",{id:"XMLID_16_"},wp.element.createElement("path",{id:"XMLID_1_",class:"st0",d:"M2.6,11.8H0.8c-0.4,0-0.7-0.3-0.7-0.7V7c0-0.4,0.3-0.7,0.7-0.7h1.8C3,6.3,3.3,6.6,3.3,7v4.2 C3.3,11.5,3,11.8,2.6,11.8z"}),wp.element.createElement("polygon",{id:"XMLID_24_",class:"st0",points:"7.3,12.8 4,12.2 4,6 7.3,5.4 "}),wp.element.createElement("polygon",{id:"XMLID_28_",class:"st0",points:"3.9,12.8 7.2,13.5 7.2,17.6 3.9,17.6 "}),wp.element.createElement("polygon",{id:"XMLID_26_",class:"st0",points:"13.3,14.2 8.1,12.8 8.1,5.2 13.3,3.8 "}),wp.element.createElement("circle",{id:"XMLID_25_",class:"st0",cx:"13.9",cy:"8.7",r:"1.8"})))),r.masonry=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-masonry",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("rect",{id:"XMLID_1_",x:"1.2",y:"11.2",class:"st0",width:"8.2",height:"7.6"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"1.2",y:"1.2",class:"st0",width:"8.2",height:"8.7"}),wp.element.createElement("rect",{id:"XMLID_3_",x:"10.6",y:"1.2",class:"st0",width:"8.2",height:"5"}),wp.element.createElement("rect",{id:"XMLID_5_",x:"10.6",y:"7.7",class:"st0",width:"8.2",height:"11.1"})),r.logobadge=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-logobadge",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("path",{id:"XMLID_16_",d:"M3.1,2.8c0.3-0.1,0.5-0.2,0.8-0.3c0.8-0.3,1.6-0.6,2.5-0.8c0,0,0.1,0,0.2,0C7,1.9,7.5,2.1,8,2.3 c0.1,0,0.1,0,0.2,0C8.8,2,9.4,1.7,9.9,1.5c0.1,0,0.1,0,0.2,0c0.6,0.3,1.1,0.5,1.7,0.8c0.1,0,0.1,0,0.2,0c0.5-0.2,1-0.4,1.6-0.6 c0,0,0.1,0,0.1,0c1.1,0.4,2.1,0.7,3.2,1.1c0,0,0.1,0,0.1,0c-0.1,0.4-0.3,0.7-0.4,1.1c-0.2,0.8-0.4,1.6-0.3,2.4c0,0.5,0.1,1,0.2,1.5 c0.2,1,0.4,2.1,0.6,3.1c0.1,0.7,0.2,1.3,0.2,2c0,0.3,0,0.5-0.1,0.8c0,0.4-0.2,0.7-0.5,1c-0.4,0.5-1,0.9-1.5,1.3 c-0.8,0.5-1.7,0.9-2.6,1.3c-0.9,0.4-1.7,0.8-2.5,1.4c0,0-0.1,0.1-0.1,0C9,17.9,8.1,17.4,7,17c-0.8-0.4-1.7-0.8-2.4-1.2 c-0.5-0.3-0.9-0.7-1.3-1.1c-0.4-0.4-0.5-0.9-0.6-1.4c0-0.7,0-1.3,0.1-2C3,10,3.3,8.8,3.6,7.6C3.7,7,3.8,6.4,3.8,5.8 C3.8,4.8,3.5,3.8,3.1,2.8C3.1,2.8,3.1,2.8,3.1,2.8z"})),r.notice=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg",fill:"#8B249C",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_4_"}),wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_3_",className:"st0",d:"M10,20C4.5,20,0,15.5,0,10C0,4.5,4.5,0,10,0c5.5,0,10,4.5,10,10C20,15.5,15.5,20,10,20z M10,1 C5,1,1,5,1,10s4.1,9,9,9s9-4.1,9-9S15,1,10,1z"})),wp.element.createElement("path",{id:"XMLID_10_",className:"st0",d:"M11.7,4.4C11.7,5.3,11,6,10,6C9,6,8.3,5.3,8.3,4.4C8.3,3.5,9,2.7,10,2.7 C11,2.7,11.7,3.5,11.7,4.4z"}),wp.element.createElement("rect",{id:"XMLID_9_",x:"8.8",y:"7.1",className:"st0",width:"2.5",height:"9.6"})),r.progressBar=wp.element.createElement("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#8B249C",className:"blockspare-svg"},wp.element.createElement("g",{id:"XMLID_4_"}),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_5_",className:"st0",d:"M20,3.9H0V0h20V3.9z M0.5,3.4h19V0.5h-19V3.4z"})),wp.element.createElement("rect",{id:"XMLID_3_",x:"0.9",y:"0.9",className:"st0",width:"16.6",height:"2.1"})),wp.element.createElement("g",{id:"XMLID_9_"},wp.element.createElement("g",{id:"XMLID_11_"},wp.element.createElement("path",{id:"XMLID_12_",className:"st0",d:"M20,9.3H0V5.4h20V9.3z M0.5,8.8h19V5.9h-19V8.8z"})),wp.element.createElement("rect",{id:"XMLID_10_",x:"0.9",y:"6.3",className:"st0",width:"10.2",height:"2.1"})),wp.element.createElement("g",{id:"XMLID_15_"},wp.element.createElement("g",{id:"XMLID_17_"},wp.element.createElement("path",{id:"XMLID_18_",className:"st0",d:"M20,14.6H0v-3.9h20V14.6z M0.5,14.1h19v-2.9h-19V14.1z"})),wp.element.createElement("rect",{id:"XMLID_16_",x:"0.9",y:"11.6",className:"st0",width:"14.4",height:"2.1"})),wp.element.createElement("g",{id:"XMLID_21_"},wp.element.createElement("g",{id:"XMLID_23_"},wp.element.createElement("path",{id:"XMLID_24_",className:"st0",d:"M20,20H0v-3.9h20V20z M0.5,19.5h19v-2.9h-19V19.5z"})),wp.element.createElement("rect",{id:"XMLID_22_",x:"0.9",y:"17",className:"st0",width:"16.6",height:"2.1"}))),r.pricingTable=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-pricing-table",xmlns:"http://www.w3.org/2000/svg",viewBox:"-469 271 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_34_",class:"st0",d:"M-455.6,291h-6.8v-20h6.8V291z"})),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_31_",class:"st0",d:"M-462.8,289h-5.9V273h5.9V289z"})),wp.element.createElement("g",{id:"XMLID_3_"},wp.element.createElement("path",{id:"XMLID_28_",class:"st0",d:"M-449.3,289h-5.9V273h5.9V289z"})),wp.element.createElement("path",{id:"XMLID_25_",class:"st1",d:"M-464.4,287.5h-2.7c-0.3,0-0.5-0.2-0.5-0.5l0,0c0-0.3,0.2-0.5,0.5-0.5h2.7 c0.3,0,0.5,0.2,0.5,0.5l0,0C-463.9,287.3-464.1,287.5-464.4,287.5z"}),wp.element.createElement("path",{id:"XMLID_26_",class:"st1",d:"M-457.7,287.5h-2.6c-0.3,0-0.5-0.2-0.5-0.5l0,0c0-0.3,0.2-0.5,0.5-0.5h2.7 c0.3,0,0.5,0.2,0.5,0.5l0,0C-457.1,287.3-457.4,287.5-457.7,287.5z"}),wp.element.createElement("path",{id:"XMLID_27_",class:"st1",d:"M-451,287.5h-2.7c-0.3,0-0.5-0.2-0.5-0.5l0,0c0-0.3,0.2-0.5,0.5-0.5h2.7c0.3,0,0.5,0.2,0.5,0.5 l0,0C-450.4,287.3-450.7,287.5-451,287.5z"}),wp.element.createElement("g",null,wp.element.createElement("path",{class:"st1",d:"M-466.1,283.3v-1c-0.6,0-1.2-0.2-1.5-0.4l0.2-0.7c0.4,0.2,0.9,0.4,1.4,0.4c0.7,0,1.2-0.4,1.2-1 c0-0.5-0.4-0.9-1.1-1.2c-1-0.4-1.6-0.9-1.6-1.7c0-0.8,0.6-1.4,1.5-1.6v-1h0.6v1c0.6,0,1,0.2,1.3,0.3l-0.2,0.7 c-0.2-0.1-0.6-0.3-1.2-0.3c-0.8,0-1,0.5-1,0.9c0,0.5,0.4,0.8,1.2,1.1c1,0.4,1.5,0.9,1.5,1.8c0,0.8-0.5,1.5-1.6,1.7v1H-466.1z"})),wp.element.createElement("g",null,wp.element.createElement("path",{class:"st1",d:"M-459.3,282.3v-1c-0.6,0-1.2-0.2-1.5-0.4l0.2-0.7c0.4,0.2,0.9,0.4,1.4,0.4c0.7,0,1.2-0.4,1.2-1 c0-0.5-0.4-0.9-1.1-1.2c-1-0.4-1.6-0.9-1.6-1.7c0-0.8,0.6-1.4,1.5-1.6v-1h0.6v1c0.6,0,1,0.2,1.3,0.3l-0.2,0.7 c-0.2-0.1-0.6-0.3-1.2-0.3c-0.8,0-1,0.5-1,0.9c0,0.5,0.4,0.8,1.2,1.1c1,0.4,1.5,0.9,1.5,1.8c0,0.8-0.5,1.5-1.6,1.7v1H-459.3z"})),wp.element.createElement("g",null,wp.element.createElement("path",{class:"st1",d:"M-452.6,283.3v-1c-0.6,0-1.2-0.2-1.5-0.4l0.2-0.7c0.4,0.2,0.9,0.4,1.4,0.4c0.7,0,1.2-0.4,1.2-1 c0-0.5-0.4-0.9-1.1-1.2c-1-0.4-1.6-0.9-1.6-1.7c0-0.8,0.6-1.4,1.5-1.6v-1h0.6v1c0.6,0,1,0.2,1.3,0.3l-0.2,0.7 c-0.2-0.1-0.6-0.3-1.2-0.3c-0.8,0-1,0.5-1,0.9c0,0.5,0.4,0.8,1.2,1.1c1,0.4,1.5,0.9,1.5,1.8c0,0.8-0.5,1.5-1.6,1.7v1H-452.6z"}))),r.pricingList=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("circle",{cx:"3.3",cy:"2.6",r:"2.6"}),wp.element.createElement("rect",{x:"7.1",y:"1.4",className:"st0",width:"9.8",height:"0.8"}),wp.element.createElement("rect",{x:"17.7",y:"1.4",className:"st0",width:"2.3",height:"0.8"}),wp.element.createElement("rect",{x:"7.1",y:"3.1",className:"st0",width:"12.9",height:"0.8"}),wp.element.createElement("circle",{className:"st0",cx:"3.3",cy:"9.7",r:"2.6"}),wp.element.createElement("rect",{x:"7.1",y:"8.9",className:"st0",width:"9.8",height:"0.8"}),wp.element.createElement("rect",{x:"17.7",y:"8.9",className:"st0",width:"2.3",height:"0.8"}),wp.element.createElement("rect",{x:"7.1",y:"10.5",className:"st0",width:"12.9",height:"0.8"}),wp.element.createElement("circle",{className:"st0",cx:"3.3",cy:"17.4",r:"2.6"}),wp.element.createElement("rect",{x:"7.1",y:"16.3",className:"st0",width:"9.8",height:"0.8"}),wp.element.createElement("rect",{x:"17.7",y:"16.3",className:"st0",width:"2.3",height:"0.8"}),wp.element.createElement("rect",{x:"7.1",y:"17.9",className:"st0",width:"12.9",height:"0.8"})),r.socialShare=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("path",{id:"XMLID_7_",class:"st0",d:"M16,12.8c-0.9,0-1.8,0.4-2.3,1l-6.4-3.7c0-0.1,0-0.1,0-0.2c0-0.1,0-0.2,0-0.3l6.3-3.6 C14.1,6.8,15,7.3,16,7.3c1.7,0,3.2-1.4,3.2-3.2C19.1,2.4,17.7,1,16,1s-3.2,1.4-3.2,3.2c0,0.3,0,0.5,0.1,0.8L6.7,8.4 C6.2,7.5,5.2,6.8,4.1,6.8c-1.7,0-3.2,1.4-3.2,3.2c0,1.7,1.4,3.2,3.2,3.2c1.2,0,2.2-0.7,2.7-1.6L13,15c-0.1,0.3-0.2,0.6-0.2,0.9 c0,1.7,1.4,3.2,3.2,3.2s3.2-1.4,3.2-3.2C19.1,14.2,17.7,12.8,16,12.8z"})),r.sociallinks=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-sociallinks",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("rect",{id:"XMLID_1_",x:"0.5",y:"0.5",width:"9",height:"9"}),wp.element.createElement("rect",{id:"XMLID_10_",x:"10.5",y:"0.5",width:"9",height:"9"}),wp.element.createElement("rect",{id:"XMLID_12_",x:"0.5",y:"10.5",width:"9",height:"9"}),wp.element.createElement("rect",{id:"XMLID_11_",x:"10.5",y:"10.5",width:"9",height:"9"}),wp.element.createElement("g",{id:"XMLID_7_"},wp.element.createElement("path",{id:"XMLID_70_",class:"st0",d:"M11.2,15.1c0-0.6,0-1.1,0-1.5c0-0.4,0-0.7,0.2-1c0.2-0.6,0.7-1,1.3-1.2 c0.2-0.1,0.5-0.1,0.8-0.1c1,0,2,0,2.9,0c0.3,0,0.7,0,1,0.1c0.6,0.2,1,0.6,1.2,1.2c0.1,0.3,0.2,0.5,0.2,0.8c0,0.4,0,0.8,0,1.3 c0,0.6,0,1.1,0,1.7c0,0.3,0,0.6-0.1,1c-0.2,0.7-0.7,1.2-1.4,1.4c-0.2,0.1-0.5,0.1-0.7,0.1c-1,0-1.9,0-2.9,0c-0.3,0-0.7,0-1-0.1 c-0.7-0.2-1.1-0.7-1.3-1.4c-0.1-0.2-0.1-0.5-0.1-0.7C11.2,16,11.2,15.5,11.2,15.1z M18.1,15C18.1,15,18.1,15,18.1,15 c0-0.3,0-0.7,0-1c0-0.3,0-0.7-0.1-1c-0.1-0.3-0.2-0.5-0.4-0.7c-0.2-0.2-0.4-0.3-0.7-0.3c-0.4-0.1-0.8-0.1-1.1-0.1 c-0.6,0-1.1,0-1.7,0c-0.3,0-0.7,0-1,0.1c-0.3,0.1-0.5,0.2-0.7,0.4C12.1,12.5,12,12.8,12,13c-0.1,0.4-0.1,0.7-0.1,1.1 c0,0.6,0,1.2,0,1.8c0,0.4,0,0.7,0.1,1.1c0.1,0.3,0.2,0.5,0.4,0.7c0.2,0.2,0.5,0.3,0.7,0.3c0.4,0.1,0.7,0.1,1.1,0.1 c0.6,0,1.2,0,1.7,0c0.3,0,0.7,0,1-0.1c0.3-0.1,0.5-0.2,0.7-0.4c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3,0.1-0.6,0.1-0.9 C18.1,15.7,18.1,15.4,18.1,15z"}),wp.element.createElement("path",{id:"XMLID_63_",class:"st0",d:"M16.9,15c0,1-0.8,2-2,2c-1,0-2-0.8-2-2c0-1,0.8-1.9,2-2C16.1,13,17,14,16.9,15z M15,13.7 c-0.7,0-1.3,0.6-1.3,1.3c0,0.7,0.6,1.3,1.3,1.3c0.7,0,1.3-0.6,1.3-1.3C16.3,14.3,15.7,13.7,15,13.7z"}),wp.element.createElement("path",{id:"XMLID_62_",class:"st0",d:"M17.5,13c0,0.2-0.2,0.5-0.5,0.5c-0.2,0-0.5-0.2-0.5-0.5c0-0.2,0.2-0.5,0.5-0.4 C17.3,12.5,17.5,12.7,17.5,13z"})),wp.element.createElement("g",{id:"XMLID_4_"},wp.element.createElement("path",{id:"XMLID_35_",class:"st0",d:"M13.5,6.7c-0.8,0-1.3-0.6-1.5-1.1c0.2,0,0.5,0,0.7,0c-0.4-0.1-0.7-0.3-0.9-0.6 c-0.2-0.3-0.3-0.6-0.3-1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.4,0.1C11.8,4,11.5,3.6,11.5,3c0-0.3,0.1-0.6,0.2-0.9 c0.8,1,1.9,1.5,3.2,1.6c0-0.1,0-0.1,0-0.2c0-0.6,0.2-1,0.6-1.4c0.6-0.5,1.5-0.4,2.1,0.1c0,0,0,0,0.1,0C18,2.3,18.3,2.2,18.6,2 c0,0,0,0,0,0c-0.1,0.2-0.1,0.3-0.3,0.5c-0.1,0.1-0.3,0.3-0.4,0.4c0.3,0,0.6-0.1,0.9-0.2c0,0,0,0,0,0c-0.2,0.3-0.4,0.5-0.7,0.7 c0,0,0,0,0,0.1c0,0.7-0.1,1.4-0.4,2c-0.3,0.7-0.8,1.3-1.4,1.8c-0.5,0.3-1,0.6-1.6,0.7c-0.6,0.1-1.3,0.2-1.9,0 c-0.5-0.1-1-0.3-1.5-0.6c0,0,0,0,0,0c0.6,0.1,1.2,0,1.8-0.3C13.2,7,13.3,6.9,13.5,6.7z"})),wp.element.createElement("g",{id:"XMLID_3_"},wp.element.createElement("path",{id:"XMLID_37_",class:"st0",d:"M4.2,5.3c-0.4,0-0.8,0-1.2,0C3,4.9,3,4.4,3,4c0.4,0,0.8,0,1.2,0c0,0,0,0,0-0.1 c0-0.4,0-0.7,0-1.1c0-0.4,0.1-0.7,0.3-1C4.7,1.4,5,1.3,5.4,1.2c0.2-0.1,0.5-0.1,0.7-0.1c0.3,0,0.6,0,0.9,0c0,0,0,0,0,0 C7,1.6,7,2,7,2.4c0,0,0,0,0,0c0,0,0,0-0.1,0c-0.3,0-0.5,0-0.8,0c-0.1,0-0.1,0-0.2,0C5.8,2.5,5.6,2.6,5.6,2.9c0,0.1,0,0.2,0,0.3 c0,0.2,0,0.5,0,0.7c0,0,0,0,0,0.1c0.5,0,0.9,0,1.4,0C6.9,4.4,6.8,4.9,6.8,5.3c-0.4,0-0.8,0-1.2,0c0,1.2,0,2.4,0,3.6 c-0.5,0-1,0-1.4,0C4.2,7.7,4.2,6.5,4.2,5.3z"})),wp.element.createElement("g",{id:"XMLID_5_"},wp.element.createElement("path",{id:"XMLID_33_",class:"st0",d:"M8.6,18.6C8.6,18.6,8.6,18.6,8.6,18.6c-0.5,0-1,0-1.4,0c0,0,0,0,0,0c0,0,0,0,0,0 c0-0.8,0-1.6,0-2.4c0-0.2,0-0.4,0-0.6c0-0.1-0.1-0.2-0.1-0.3C6.8,15.1,6.7,15,6.5,15c-0.2,0-0.3,0-0.5,0c-0.2,0.1-0.4,0.2-0.5,0.4 c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.1,0,0.3,0,0.4c0,0.8,0,1.5,0,2.3c0,0,0,0,0,0c-0.5,0-1,0-1.5,0c0-1.6,0-3.2,0-4.8c0.5,0,0.9,0,1.4,0 c0,0.2,0,0.4,0,0.6c0,0,0,0,0,0c0,0,0,0,0,0C5.6,14.2,5.8,14,6,13.8c0.2-0.1,0.5-0.2,0.8-0.2c0.3,0,0.5,0,0.7,0.1 c0.4,0.1,0.7,0.4,0.8,0.8c0.1,0.2,0.1,0.5,0.1,0.7c0,0.1,0,0.3,0,0.4c0,0,0,0,0,0C8.6,16.7,8.6,17.6,8.6,18.6z"}),wp.element.createElement("path",{id:"XMLID_32_",class:"st0",d:"M2.3,11.4c0,0,0.1,0,0.1,0c0.4,0.1,0.7,0.4,0.7,0.8c0,0.4-0.3,0.8-0.7,0.8 c-0.5,0.1-0.9-0.2-1-0.7c0,0,0,0,0-0.1c0,0,0-0.1,0-0.1c0,0,0,0,0,0c0-0.3,0.3-0.6,0.6-0.7c0.1,0,0.1,0,0.2,0 C2.2,11.4,2.3,11.4,2.3,11.4z"}),wp.element.createElement("path",{id:"XMLID_30_",class:"st0",d:"M3,18.6c-0.5,0-1,0-1.5,0c0-1.6,0-3.2,0-4.8c0.5,0,1,0,1.5,0C3,15.4,3,17,3,18.6z"}))),r.tabs=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-tabs",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("rect",{id:"XMLID_1_",x:"1.2",y:"4.9",width:"17.6",height:"14"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"1.2",y:"1.3",width:"8.2",height:"3.6"}),wp.element.createElement("rect",{id:"XMLID_3_",x:"10.6",y:"1.3",width:"8.2",height:"2.5"}))),r.shapediviver=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-shape-diviver",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("path",{id:"XMLID_6_",d:"M20,20H0V0h20V20z M1,19h18V1H1V19z"}),wp.element.createElement("path",{id:"XMLID_10_",d:"M0,10.8c0,0,6.3-3.3,10.6,1.1c5.3,5.5,9.4-2,9.4-2V20L0,20V10.8z"})),r.counter=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-shape-counter",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("rect",{id:"XMLID_4_",x:"1.3",y:"1",width:"8",height:"18"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"10.7",y:"1",width:"8",height:"18"}),wp.element.createElement("g",{id:"XMLID_23_"},wp.element.createElement("path",{id:"XMLID_25_",class:"st0",d:"M8.4,10c0,0.7-0.1,1.3-0.2,1.8c-0.1,0.5-0.3,1-0.5,1.3c-0.2,0.3-0.6,0.6-1,0.8 c-0.4,0.2-0.9,0.3-1.4,0.3c-0.6,0-1-0.1-1.4-0.3c-0.4-0.2-0.7-0.4-1-0.8c-0.2-0.4-0.4-0.8-0.5-1.3c-0.1-0.5-0.2-1.1-0.2-1.8 c0-0.7,0.1-1.3,0.2-1.8c0.1-0.5,0.3-0.9,0.5-1.3c0.3-0.4,0.6-0.6,1-0.8c0.4-0.2,0.9-0.3,1.4-0.3c0.6,0,1.1,0.1,1.5,0.3 s0.7,0.5,1,0.8C8,7.2,8.2,7.7,8.3,8.2C8.4,8.7,8.4,9.3,8.4,10z M6.4,10c0-1-0.1-1.7-0.2-2.1C6,7.5,5.7,7.3,5.3,7.3 c-0.4,0-0.7,0.2-0.8,0.6C4.3,8.3,4.3,9,4.3,10c0,1,0.1,1.7,0.2,2.1c0.2,0.4,0.4,0.6,0.8,0.6s0.7-0.2,0.8-0.6 C6.3,11.7,6.4,11,6.4,10z"})),wp.element.createElement("g",{id:"XMLID_3_"},wp.element.createElement("path",{id:"XMLID_9_",class:"st0",d:"M17.6,7.6L14.2,14H12l3.6-6.5h-3.8V6h5.9V7.6z"})),wp.element.createElement("path",{id:"XMLID_26_",class:"st0",d:"M15.1,2.1c-0.2,0.4-0.4,0.5-0.8,0.5c-0.4,0-0.6-0.1-0.8-0.5C13.4,1.9,13.3,1,13.3,1h-1.9 c0,0,0.1,0.6,0.1,0.9c0.1,0.5,0.3,0.8,0.5,1.2c0.2,0.3,0.5,0.6,0.9,0.7C13.3,3.9,13.8,4,14.3,4c0.5,0,1-0.1,1.4-0.3 C16,3.6,16.3,3.3,16.5,3c0.2-0.3,0.4-0.6,0.5-1.1C17.1,1.6,17.1,1,17.2,1h-1.9C15.2,1,15.2,1.9,15.1,2.1z"})),r.testimonial=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-testimonial",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_2_",class:"st0",d:"M17.5,14.1H2.5c-1.3,0-2.3-1-2.3-2.3V6.3C0.2,5,1.3,4,2.5,4h14.9c1.3,0,2.3,1,2.3,2.3v5.6 C19.8,13.1,18.7,14.1,17.5,14.1z"}),wp.element.createElement("polygon",{id:"XMLID_3_",class:"st0",points:"1.8,13 4.1,17 6.4,13 "}))),r.upload=wp.element.createElement("svg",{width:"50px",height:"50px",viewBox:"0 0 20 20",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{d:"M17.9,4c-1,0-2,0-3,0c-0.2,0-0.3,0-0.3-0.3c-0.1-0.9-1-1.5-1.8-1.5c-1.9,0-3.8,0-5.7,0 c-0.8,0-1.6,0.6-1.7,1.5C5.4,3.9,5.3,4,5,4c-1,0-1.9,0-2.9,0C1.1,4,0.1,5,0.1,6c0,3.2,0,6.5,0,9.7c0,0.2,0.1,0.5,0.2,0.7 c0.4,0.9,1.2,1.4,2.2,1.4c2.5,0,5.1,0,7.6,0c2.5,0,4.9,0,7.4,0c0.3,0,0.5,0,0.8-0.1c0.9-0.2,1.7-1.1,1.8-2c0-3.3,0-6.5,0-9.8 C19.9,5,18.9,4,17.9,4z M19,15.3c0,0.4-0.1,0.9-0.5,1.2c-0.3,0.3-0.7,0.3-1.1,0.3c-2.5,0-4.9,0-7.4,0c-2.5,0-4.9,0-7.4,0 c-0.4,0-0.9,0-1.2-0.4c-0.2-0.2-0.4-0.5-0.4-0.9c0-3.1,0-6.3,0-9.4C1.1,5.5,1.6,5,2.3,5c1.1,0,2.3,0,3.4,0c0.6,0,0.8-0.2,0.8-0.8 c0,0,0-0.1,0-0.1C6.4,3.3,6.8,3.1,7.3,3.1c1.8,0,3.8,0,5.6,0c0.6,0,1.1,0.3,1.1,1c0,0.1,0,0.1,0,0.2C14,4.8,14,5,14.5,5 c1.1,0,2.1,0,3.2,0c0.9,0,1.4,0.5,1.4,1.5C19.1,9.4,19,12.3,19,15.3z"}),wp.element.createElement("path",{d:"M10,6.2c-2.6,0-4.7,2.1-4.7,4.6c0,2.6,2.1,4.7,4.6,4.7c2.6,0,4.7-2.1,4.7-4.6C14.7,8.3,12.6,6.2,10,6.2z M10,14.5c-1.9,0-3.6-1.4-3.6-3.6c0-2,1.6-3.6,3.6-3.6c2,0,3.6,1.5,3.6,3.7C13.6,13,12,14.5,10,14.5z"}),wp.element.createElement("path",{d:"M16.7,6.2c-0.5,0-0.9,0.4-0.9,0.9c0,0.5,0.4,0.9,0.9,0.9c0.5,0,0.9-0.5,0.9-0.9C17.7,6.6,17.2,6.2,16.7,6.2 z"})),r.sectionHeader=wp.element.createElement("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B",className:"blockspare-svg"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_3_",d:"M17,2.2v15.6h-4.3v-6.3H7.4v6.3H3V2.2h4.3V8h5.3V2.2H17z"}))),r.services=wp.element.createElement("svg",{width:"20px",height:"20px",className:"blockspare-svg blockspare-svg-services",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("circle",{id:"XMLID_1_",cx:"4.5",cy:"5",r:"3.4"}),wp.element.createElement("circle",{id:"XMLID_9_",cx:"15.5",cy:"5",r:"3.4"}),wp.element.createElement("rect",{id:"XMLID_2_",y:"10",width:"9",height:"1.7"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"11",y:"9.8",width:"9",height:"1.7"}),wp.element.createElement("rect",{id:"XMLID_4_",y:"13.3",width:"9",height:"6.7"}),wp.element.createElement("rect",{id:"XMLID_7_",x:"11",y:"13.1",width:"9",height:"6.9"})),r.emptySpaces=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("rect",{className:"cls-1",x:"1.5",y:"1.5",width:"13",height:"13"})),r.layouts=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{fill:"#333333",d:"M0.4,15.1V0.7c0-0.2,0.1-0.3,0.3-0.3h8.8c0.2,0,0.3,0.1,0.3,0.3v14.4c0,0.2-0.1,0.3-0.3,0.3H0.7 C0.6,15.4,0.4,15.3,0.4,15.1z"}),wp.element.createElement("path",{fill:"#333333",d:"M10.2,7.2V0.7c0-0.2,0.1-0.3,0.3-0.3h8.8c0.2,0,0.3,0.1,0.3,0.3v6.5c0,0.2-0.1,0.3-0.3,0.3h-8.8 C10.3,7.5,10.2,7.3,10.2,7.2z"}),wp.element.createElement("path",{fill:"#333333",d:"M10.3,15.1V8.2c0-0.2,0.1-0.3,0.3-0.3h3.8c0.2,0,0.3,0.1,0.3,0.3v6.9c0,0.2-0.1,0.3-0.3,0.3h-3.8 C10.4,15.4,10.3,15.3,10.3,15.1z"}),wp.element.createElement("path",{fill:"#333333",d:"M0.8,15.8h18.4c0.2,0,0.3,0.1,0.3,0.3v3.3c0,0.2-0.1,0.3-0.3,0.3H0.8c-0.2,0-0.3-0.1-0.3-0.3 v-3.3C0.5,15.9,0.7,15.8,0.8,15.8z"}),wp.element.createElement("path",{fill:"#333333",d:"M15.2,15.1V8.2c0-0.2,0.1-0.3,0.3-0.3h3.7c0.2,0,0.3,0.1,0.3,0.3v6.9c0,0.2-0.1,0.3-0.3,0.3h-3.7 C15.3,15.4,15.2,15.3,15.2,15.1z"})),r.flipX=wp.element.createElement("svg",{viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{d:"m11 18h3v-2h-3zm3-12h2v-2h-2zm-14-2v12c0 1.1.9 2 2 2h3v-2h-3v-12h3v-2h-3c-1.1 0-2 .9-2 2zm14-2v2h2c0-1.1-.9-2-2-2zm-7 18h2v-20h-2zm7-4h2v-2h-2zm-3-12h3v-2h-3zm3 8h2v-4h-2zm0 6c1.1 0 2-.9 2-2h-2z",transform:"translate(2)"})),r.flipY=wp.element.createElement("svg",{viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{d:"m13 16h3v-2h-3zm3-12h2v-2h-2zm-14-2v12c0 1.1.9 2 2 2h3v-2h-3v-12h3v-2h-3c-1.1 0-2 .9-2 2zm14-2v2h2c0-1.1-.9-2-2-2zm-7 18h2v-20h-2zm7-4h2v-2h-2zm-3-12h3v-2h-3zm3 8h2v-4h-2zm0 6c1.1 0 2-.9 2-2h-2z",transform:"matrix(0 1 -1 0 18 0)"})),r.edit='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><Path d="m11 5.9125c-2.784375 0-5.01875 2.26875-5.01875 5.01875 0 2.784375 2.26875 5.01875 5.01875 5.01875 2.784375 0 5.01875-2.26875 5.01875-5.01875s-2.234375-5.01875-5.01875-5.01875zm.378125 6.325-1.134375 1.134375-1.134375-1.134375-1.1-1.1 1.134375-1.134375 1.1 1.1 2.6125-2.6125 1.134375 1.134375zm9.659375-2.715625c-.446875-.4125-.61875-1.065625-.378125-1.615625l.20625-.515625c.34375-.790625-.103125-1.684375-.928125-1.925l-.55-.1375c-.584375-.171875-.996875-.6875-1.03125-1.30625v-.584375c-.034375-.859375-.825-1.478125-1.65-1.340625l-.55.103125c-.61875.103125-1.203125-.171875-1.478125-.721875l-.275-.48125c-.4125-.75625-1.375-.9625-2.0625-.48125l-.446875.309375c-.48125.34375-1.16875.34375-1.65 0l-.446875-.34375c-.6875-.515625-1.684375-.275-2.096875.48125l-.275.48125c-.309375.55-.89375.825-1.5125.721875l-.55-.103125c-.859375-.1375-1.615625.48125-1.684375 1.340625l-.034375.55c-.034375.61875-.446875 1.134375-1.03125 1.30625l-.55.171875c-.825.240625-1.271875 1.134375-.928125 1.925l.20625.515625c.240625.55.06875 1.203125-.378125 1.615625l-.4125.378125c-.653125.55-.653125 1.58125 0 2.13125l.4125.378125c.446875.4125.61875 1.065625.378125 1.615625l-.20625.515625c-.34375.790625.103125 1.684375.928125 1.925l.55.1375c.584375.171875.996875.6875 1.03125 1.30625l.034375.55c.034375.859375.825 1.478125 1.65 1.340625l.55-.103125c.61875-.103125 1.203125.171875 1.478125.721875l.275.48125c.4125.75625 1.375.9625 2.0625.48125l.446875-.309375c.48125-.34375 1.16875-.34375 1.65 0l.446875.34375c.6875.515625 1.684375.275 2.096875-.48125l.275-.48125c.309375-.55.89375-.825 1.5125-.721875l.55.103125c.859375.1375 1.615625-.48125 1.684375-1.340625l.034375-.55c.034375-.61875.446875-1.134375 1.03125-1.30625l.55-.1375c.825-.240625 1.271875-1.134375.928125-1.925l-.20625-.515625c-.240625-.55-.06875-1.203125.378125-1.615625l.4125-.378125c.653125-.55.653125-1.58125 0-2.13125zm-10.0375 8.3875c-3.85 0-6.94375-3.128125-6.94375-6.94375 0-3.85 3.128125-6.94375 6.94375-6.94375 3.85 0 6.94375 3.128125 6.94375 6.94375s-3.09375 6.94375-6.94375 6.94375z" transform="translate(1 1)" /></svg>;',r.blockspare_placeholder=wp.element.createElement("svg",{viewBox:"0 0 384 384",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{d:"M203.3,384c-7.5,0-15,0-22.5,0c-7.9-1.1-15.8-1.9-23.7-3.3C78.7,366.6,16.4,303.8,3,225.4c-1.2-7.1-2-14.3-3-21.4 c0-8,0-16,0-24c0.2-1,0.6-1.9,0.6-2.9c1.4-18.8,5.7-36.9,12.4-54.5c0.6-1.5,0.6-3.3,0.9-4.7c1-1.5,2.3-2.9,3-4.5 C26,93.3,38,75.2,53.4,59.3C82.7,29,118.1,10.1,159.6,2.9c7.2-1.2,14.6-2,21.9-2.9c7.3,0,14.5,0,21.8,0c1,0.2,1.9,0.4,2.9,0.6 c12.3,2.1,25,2.8,36.8,6.5c75.8,23.3,122,74.1,138.1,151.9c1.4,6.9,2,14,3,21.1c0,8,0,16,0,24c-0.2,1-0.5,1.9-0.6,2.9 c-1.3,8.8-2.1,17.6-3.9,26.3c-15.7,75.1-78.8,135.5-154.4,147.9C217.8,382.3,210.5,383,203.3,384z M20.8,140.3 c-22.5,68.7,1.5,162.7,85.2,208.8c80.6,44.3,178.3,19.1,229.2-49.9c-3.4-3.2-6.6-6.7-10.2-9.8c-3.9-3.3-5.5-7-5.1-12.1 c0.4-5.5,0.2-11,0-16.5c-0.1-2-0.5-4.2-1.4-6.1c-5-10.2-9.6-20.6-15.4-30.4c-7-11.8-10.4-24.1-8.9-37.8c0.2-1.6-0.5-4.2-1.6-4.8 c-4.9-2.6-8.3-8.1-14.7-7.8c-0.5,0-1,0.2-1.5,0.3c-6.1,1.5-12.1,3.1-18.2,4.4c-1.7,0.4-3.8,0.4-5.4-0.3 c-14.6-6.1-29.2-12.3-43.7-18.8c-1.9-0.9-4.1-3.4-4.4-5.4c-2.4-14.4-4.2-28.9-6.3-43.4c-0.4-3,0.4-5.3,2.5-7.4 c5.9-5.8,11.6-11.8,17.6-17.4c1.6-1.5,4.1-2.6,6.2-2.6c12.1-0.2,24.2-0.1,36.4-0.1c3,0,5.2,1.2,6.9,3.7c3,4.6,6,9.2,9.2,13.7 c0.9,1.3,2.6,2.4,4.1,2.7c6,1.2,12,2.1,18.1,3.1c4.7,0.7,9.7,2.8,14,1.7c10.4-2.5,20.4-6.5,31.4-10.2c-6.7-8.9-13-17.3-19.3-25.8 c-5,3.4-9.3,6.4-13.8,9.1c-1.8,1.1-4.3,2-6.2,1.6c-15.8-3.2-31.8-5.3-46.9-11.2c-1.7-0.7-3.9-0.7-5.8-0.3 c-6.3,1.4-12.6,3.2-18.9,4.6c-2.1,0.5-4.5,0.6-6.6,0c-5.9-1.7-11.7-3.7-17.4-5.7c-5-1.7-6.4-5.3-4.1-10c3.9-8,7.9-15.8,11.8-23.8 c1.6-3.2,3.9-4.5,7.5-4.4c5.9,0.1,11.8-0.3,17.6,0.1c6.4,0.4,10.9-3.3,16.4-5.8c-27.7-15.5-93.9-17.9-122.5-4.2 c3.5,1.6,6.2,3.4,9.2,4c11,2.1,22.1,3.8,33.2,5.8c5.7,1,7.5,4.2,5.7,9.8c-1.8,5.6-3.7,11.1-5.5,16.7c-0.9,2.9-2.6,4.7-5.5,5.6 c-4.2,1.3-8.4,2.5-12.4,4.3c-2,0.9-4.1,2.3-5.3,4.1c-5.2,8.2-10,16.7-15.2,25c-1.3,2-3.1,3.9-5.2,5.2c-9.3,5.8-18.8,11.4-28.3,17 c-1.8,1-3.9,1.8-5.9,2.1c-11.5,1.8-23,3.5-34.5,5c-2.6,0.3-3.1,1.4-3.3,3.8c-0.5,5.4,0.8,9.7,5.3,13c1.7,1.2,3.4,2.8,4.5,4.5 c1.4,2.2,2.5,4.7,3,7.3c0.5,2.4,0.1,5,0.1,7.6c0.3,0.1,0.7,0.2,1,0.3c2.1-2.2,4.2-4.6,6.4-6.7c4.4-4.3,8.9-3.6,11.7,2 c3.1,6,6.1,12,9,18.1c1,2.1,2.2,2.8,4.6,2.8c11.9-0.1,23.7,0.1,35.6-0.1c4.1-0.1,6.7,1.5,8.8,5.1c4.6,8,9.6,15.8,14.1,23.8 c1.4,2.5,3.1,3.4,6,3.3c5.4-0.2,10.7-0.1,16.1-0.1c6.7,0,9,2.8,7.8,9.5c-0.8,4.4-2.3,8.8-2.6,13.2c-0.8,13.7-6.8,24.4-17.6,32.6 c-0.3,0.2-0.5,0.6-0.8,0.8c-8.7,6.2-12.3,14.4-10.5,25c0.6,3.6-1.1,6.2-4,8.3c-6.5,4.7-12.9,9.5-19.2,14.4c-1.2,1-2.2,3-2.2,4.6 c-0.2,8.2,0,16.5-0.1,24.7c-0.1,6-3.8,8.7-9.5,6.8c-5.6-1.8-11.1-3.7-16.7-5.5c-3-0.9-4.8-2.7-6-5.7c-3.7-9.5-7.6-19-11.3-28.5 c-0.8-2.2-1.3-4.6-1.3-6.9C96,287.3,96,269.9,96,252.6c0-1.3,0-2.7,0-4.1c-8.2-1.6-16-3.3-23.8-4.7c-4.2-0.7-7-2.5-8.8-6.5 c-2-4.7-4.2-9.4-6.9-13.7c-4.4-7.2-5.6-14.8-5.6-23.2c0-7.5,1.2-13.8,7.6-18.3c0.6-0.4,1-1.1,1.7-1.9c-1.3-0.9-2.4-1.7-3.5-2.4 c-8.8-5.9-17.8-11.6-26.4-17.8c-2.1-1.5-3.8-3.9-4.8-6.3C23.6,149.5,22.4,145.1,20.8,140.3z M342.3,288.8 c36.6-54.1,37.1-128,8.3-179.1c-10.8,3.6-21.7,7.3-32.6,10.8c-2.2,0.7-4.7,1.1-6.9,0.8c-10.5-1.5-20.9-3.7-31.4-5 c-5.8-0.8-9.9-3-12.8-8.3c-2.2-4.1-4.5-9.3-8.2-11.3c-3.7-2-9.3-0.6-14-0.6c-6,0-12.6-1.5-17.8,0.7c-5.1,2.1-8.7,8-13,12.2 c-0.2,0.2-0.4,0.3-0.5,0.5c-0.5,1.4-1.4,2.9-1.2,4.2c1.4,10.9,3.1,21.8,4.5,32.7c0.3,2.2,1.2,3.2,3.1,4c11.5,4.8,22.9,9.9,34.4,14.7 c1.5,0.6,3.4,0.7,5,0.4c6.5-1.4,12.9-3.1,19.2-4.8c3-0.8,5.6-0.4,8.1,1.4c5.4,3.8,10.9,7.5,16.5,11c2.9,1.9,4.2,4.4,4.2,7.8 c-0.1,6.2-0.2,12.5,0.1,18.7c0.1,2.4,0.6,5,1.7,7.1c4.6,9.7,9,19.6,14.5,28.8c7.5,12.6,11.2,25.7,9.4,40.3c-0.1,0.5-0.1,1,0,1.5 c0.4,1.1,0.7,2.4,1.4,3.2C336.8,283.2,339.4,285.8,342.3,288.8z M87.8,170.8c-7.8,7.8-15.2,15.1-22.4,22.6c-0.9,0.9-1.3,2.6-1.4,4 c-0.9,8,0.5,15.6,5,22.5c1.8,2.7,2.7,5.9,4.5,8.6c1,1.4,2.7,2.9,4.4,3.2c8,1.8,16.1,3.3,24.2,5c5.2,1.1,6.7,2.9,6.7,8.2 c0,12,0.7,24-0.2,36c-1.2,17.1,2,33,9.3,48.5c2.3,4.8,5.4,6.2,10.2,7c0-6.3,0.4-12.5-0.1-18.5c-0.4-5.5,1.5-9.3,6.2-12.1 c2.9-1.7,5.4-4,8.1-6c3.7-2.8,8.8-4.9,10.6-8.6c1.9-3.8,0.8-9.3,0.7-14c-0.1-3.3,1-5.7,3.3-7.9c7-6.8,13.8-13.7,20.7-20.6 c0.7-0.7,1.8-1.4,1.9-2.2c1.6-7.2,3-14.5,4.6-22.2c-5.8,0-10.9-0.1-16,0c-3.8,0.1-6.3-1.4-8.2-4.7c-4.8-8.3-9.9-16.5-14.7-24.8 c-1.1-2-2.4-2.7-4.7-2.7c-12.1,0.1-24.2,0-36.4,0.1c-4,0-6.6-1.5-8.3-5.1C93.4,181.7,90.7,176.5,87.8,170.8z M170.7,43.7 c-1.7-0.3-3.1-0.7-4.6-0.9c-14.6-2.6-30-2.8-41.8-14c-1.5-1.5-3.1-1.4-5.1-0.5c-41.2,18.9-71.3,48.9-90.4,90 c-0.6,1.3-0.7,3.2-0.3,4.5c2.6,8.2,5.3,16.4,8.2,24.5c0.5,1.4,1.6,2.8,2.9,3.6c7.1,4.9,14.3,9.6,21.5,14.4c0.8,0.5,1.6,0.9,2.6,1.3 c1.1-9.7,1.1-9.7-5.1-15.9c-1.5-1.5-3.3-2.8-4.4-4.6c-1.3-2.1-2.6-4.6-2.8-7c-0.4-5.1-0.1-10.2-0.1-15.4c0-6.1,1.6-8,7.7-8.9 c7.8-1.1,15.6-2.2,23.4-3.3c10-1.4,19.4-3.3,28.6-8.5c13.2-7.6,24.1-16.5,30.1-30.7c4.5-10.6,12.1-17,23.5-18.8 c0.6-0.1,1.3-0.2,1.8-0.6c0.7-0.6,1.6-1.2,1.9-2C169.1,48.7,169.8,46.3,170.7,43.7z M220.4,60c7.9,3.8,9.6,4,17.3,2.1 c5.1-1.3,10.1-2.7,15.2-3.7c2-0.4,4.3-0.5,6.2,0.2c14.2,5.4,29,8.1,43.8,11c1.3,0.2,2.9,0.3,3.9-0.2c3.1-1.8,6-3.9,9.5-6.2 c-1.2-1.1-2.2-1.9-3.1-2.7c-10.8-9.9-22.6-18.4-35.4-25.5c-2.3-1.3-4.2-1.5-6.5-0.1c-12.4,7.9-25.7,12.3-40.7,10.2 c-0.4-0.1-0.8-0.1-1.1,0c-0.8,0.4-1.9,0.8-2.3,1.4C224.9,50.9,222.7,55.4,220.4,60z"}));var a=r,o=n(0),i=n.n(o);const s=wp.blocks,l=s.getCategories;(0,s.setCategories)([{slug:"blockspare",title:(0,wp.i18n.__)("Blockspare","blockspare")},...l().filter(({slug:e})=>"blockspare"!==e)]);const c=wp.hooks.addFilter,u=wp.compose.createHigherOrderComponent,d=["blockspare/blockspare-shape-divider"];const p=u(e=>t=>{const n=t.name;if(d.includes(n)&&(t.attributes.blockspare=t.attributes.blockspare||{},void 0===t.attributes.blockspare.id)){const e=new Date;t.attributes.blockspare=Object.assign({},t.attributes.blockspare,{id:""+e.getMonth()+e.getDate()+e.getHours()+e.getMinutes()+e.getSeconds()+e.getMilliseconds()})}return wp.element.createElement(e,t)},"withAttributes");c("blocks.registerBlockType","blockspare/custom/attributes",(function(e){return d.includes(e.name)&&void 0!==e.attributes&&(e.attributes=Object.assign(e.attributes,{blockspare:{type:"object"}})),e})),c("editor.BlockEdit","blockspare/attributes",p);n(428),n(429);var m=n(86),f=["fa fa-plus","fa fa-plus-circle","fas fa-arrow-up"];const h=wp.i18n.__,b=wp.element,g=b.Component,_=b.Fragment;var y=class extends g{constructor(e){super(e),this.state={isOpen:!1,filterText:"",showIcons:!1}}render(){const e=this.props,t=e.value,n=e.disableToggle,r=e.colorSettings,a=e.iconColor,o=e.onColorChange,i=this.state.filterText;var s=[];return i.length>2?f.forEach(e=>{e.includes(i)&&s.push(e)}):s=f,wp.element.createElement("div",{className:`blockspare-field blockspare-field-icon-list ${n?"":"blockspare-toggle-enabled"}`},this.props.label&&wp.element.createElement(_,null,n?wp.element.createElement("label",null,this.props.label):wp.element.createElement(Toggle,{label:this.props.label,className:"blockspare-icon-list-toggle",value:!!this.props.value,onChange:()=>this.props.onChange(this.props.value?"":" ")})),r&&wp.element.createElement(Color,{label:h(" Color"),value:a||"#ccc",onChange:e=>o(e)}),(n||""!=this.props.value)&&wp.element.createElement("div",{className:"blockspare-icon-list-wrapper"},wp.element.createElement("input",{type:"text",value:this.state.filterText,placeholder:"Search...",onChange:e=>this.setState({filterText:e.target.value}),autoComplete:"off"}),wp.element.createElement("div",{className:"blockspare-icon-list-icons"},s.map(e=>wp.element.createElement("span",{className:t==e?"blockspare-active":"",onClick:t=>{this.props.onChange(e)}},wp.element.createElement("span",{className:e}))))))}};const k=wp.i18n.__,w=wp.compose.compose,v=wp.data,M=v.withSelect,L=v.withDispatch,T=wp.element,E=T.Component,S=T.Fragment,x=wp.components,C=x.Button,D=x.PanelBody,O=(x.SelectControl,x.RangeControl,wp.blockEditor),Y=O.InnerBlocks,j=O.RichText,P=O.InspectorControls,N=O.PanelColorSettings;var B=w([M((e,t)=>{const n=t.clientId,r=e("core/block-editor"),a=r.getBlockHierarchyRootClientId,o=r.getBlock,i=r.isBlockSelected,s=r.hasSelectedInnerBlock;return{block:o(n),isSelectedBlockInRoot:i(n)||s(n,!0),rootBlock:n?o(a(n)):null}}),L(e=>{const t=e("core/block-editor");return{removeBlock:t.removeBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends E{constructor(){super(...arguments),this.findParentAccordion=this.findParentAccordion.bind(this),this.state={device:"md"}}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,r=e.attributes.uniqueId,a=n.substr(0,6);r?r&&r!=a&&t({uniqueId:a}):t({uniqueId:a})}findParentAccordion(e){const t=this.props.block;let n=!1;return e.innerBlocks&&e.innerBlocks.length&&e.innerBlocks.forEach(r=>{n||r.clientId!==t.clientId?n||(n=this.findParentAccordion(r)):n=e}),n}setGlobalSettings(e,t){const n=this.props.updateBlockAttributes,r=this.findParentAccordion(this.props.rootBlock);r.innerBlocks&&r.innerBlocks.length&&r.innerBlocks.forEach(r=>{n(r.clientId,{[e]:t})})}updateRootBlock(e,t){(0,this.props.updateBlockAttributes)(this.findParentAccordion(this.props.rootBlock).clientId,{[e]:t})}updateItemNumber(e){const t=this.props.updateBlockAttributes,n=this.findParentAccordion(this.props.rootBlock);for(;e<n.innerBlocks.length;)t(n.innerBlocks[e].clientId,{itemNumber:n.innerBlocks[e].attributes.itemNumber-1}),e++}_onClickLabel(){const e=this.props,t=e.clientId,n=e.rootBlock,r=e.attributes,a=e.setAttributes,o=e.updateBlockAttributes,i=this.findParentAccordion(this.props.rootBlock);n.attributes.itemToggle?i.innerBlocks.forEach(e=>{const n=e.clientId==t&&!r.active;o(e.clientId,{active:n})}):a({active:!r.active})}render(){const e=this.props,t=(e.rootBlock,e.attributes),n=t.active,r=t.uniqueId,a=t.itemNumber,o=t.defaultText,i=t.fillType,s=t.heading,l=t.name,c=t.iconPosition,u=t.panelColor,d=t.panelActiveColor,p=t.textColor,m=t.marginBottom,f=t.activeTextColor,h=t.panelBackGroundColor,b=e.setAttributes,g=e.isSelected,_=e.isSelectedBlockInRoot;let w="";w=d||"#8b249c";let v="#3c1a5b";u&&(v=u);let M="#fff";f&&(M=f);let L="#fff";p&&(L=p);let T="#fff";h&&(T=h);const E=`blockspare-accordion-item blockspare-type-${i} ${n?"blockspare-accordion-active":""}`,x={backgroundColor:1==n?w:v},O=(k("Left","blockspare"),k("Right","blockspare"),{marginBottom:m+"px"});return wp.element.createElement(S,null,wp.element.createElement(P,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(D,{title:k("Color settings","blockspare"),initialOpen:!0},wp.element.createElement(N,{title:k("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:p,onChange:e=>this.setGlobalSettings("textColor",e),label:k("Text Color","blockspare")},{value:f,onChange:e=>this.setGlobalSettings("activeTextColor",e),label:k("Active Text Color","blockspare")},{value:d,onChange:e=>this.setGlobalSettings("panelActiveColor",e),label:k("Active Panel Color","blockspare")},{value:u,onChange:e=>this.setGlobalSettings("panelColor",e),label:k("Panel Color","blockspare")}]})),wp.element.createElement(D,{title:k("Icon settings","blockspare"),initialOpen:!1},wp.element.createElement(y,{value:l,onChange:e=>this.setGlobalSettings("name",e)})))),wp.element.createElement("div",{className:`blockspare-block-${r}`},wp.element.createElement("div",{className:E,style:O},wp.element.createElement("div",{className:`blockspare-accordion-panel ${c}`,style:x},wp.element.createElement("span",{className:"blockspare-accordion-panel-handler",onClick:()=>this._onClickLabel(),role:"button",style:{color:n?M:L}},l&&wp.element.createElement("span",{className:`blockspare-accordion-icon ${l}`}),wp.element.createElement(j,{tagName:"span",placeholder:k("Add Accordion Item.."),className:"blockspare-accordion-panel-handler-label",value:s,onChange:e=>b({heading:e}),allowedFormats:["bold","italic","strikethrough"],isSelected:g,keepPlaceholderOnFocus:!0,onClick:()=>this.updateLabel()})),_&&wp.element.createElement(C,{onClick:()=>{const e=this.findParentAccordion(this.props.rootBlock);e&&e.clientId&&(this.updateItemNumber(a),this.props.removeBlock(this.props.clientId),e.innerBlocks.length<=1&&this.props.removeBlock(e.clientId))},className:"blockspare-accordion-item-remove-button"},wp.element.createElement("i",{className:"fa fa-times"}))),wp.element.createElement("div",{className:"blockspare-accordion-body",style:{backgroundColor:T},"data-bg":T},wp.element.createElement(Y,{template:o?[["core/paragraph",{content:o,customFontSize:18}]]:"",templateLock:!1})))))}});const A=wp.element.Component,H=wp.blockEditor,z=H.InnerBlocks,I=H.RichText;var F=class extends A{render(){const e=this.props.attributes,t=e.uniqueId,n=(e.itemNumber,e.heading),r=e.name,a=e.iconPosition,o=e.fillType,i=(e.active,e.openFirstItem,e.panelColor),s=e.panelActiveColor,l=e.textColor,c=e.marginBottom,u=e.activeTextColor,d=e.panelBackGroundColor;e.defaultTextSize;let p="";p=s||"#8b249c";let m="#3c1a5b";i&&(m=i);let f="#fff";u&&(f=u);let h="#fff";l&&(h=l);const b=`blockspare-accordion-item blockspare-type-${o} `,g={backgroundColor:m},_={marginBottom:c+"px"};let y="#fff";return d&&(y=d),wp.element.createElement("div",{className:`blockspare-block-${t}`},wp.element.createElement("div",{className:b,"data-act-color":f,"data-txt-color":h,"data-active":p,"data-pan":m,style:_},wp.element.createElement("div",{className:`blockspare-accordion-panel ${a}`,style:g},wp.element.createElement("span",{className:"blockspare-accordion-panel-handler",role:"button",style:{color:h}},r&&wp.element.createElement("span",{className:`blockspare-accordion-icon ${r}`}),wp.element.createElement(I.Content,{tagName:"span",className:"blockspare-accordion-panel-handler-label",value:n}))),wp.element.createElement("div",{className:"blockspare-accordion-body",style:{backgroundColor:y},"data-bg":y},wp.element.createElement(z.Content,null))))}};const R=wp.i18n.__,W=wp.blocks.registerBlockType,U=m.category,q=m.attributes,G={title:R("Accordion","blockspare"),description:R("Display creative collapsible texts Accordion.","blockspare"),parent:["blockspare/blockspare-accordion"],icon:"link",category:U,supports:{html:!1,inserter:!1,reusable:!1},attributes:q,edit:B,save:F};W("blockspare/accordion-item",G);const V=wp.i18n.__,$=wp.element,J=$.Component,X=$.Fragment,Q=wp.components.IconButton,K=wp.blockEditor.InnerBlocks,Z=wp.blocks.createBlock,ee=wp.compose.compose,te=wp.data,ne=te.withSelect,re=te.withDispatch;var ae=ee([ne((e,t)=>{const n=t.clientId,r=e("core/block-editor"),a=r.getBlock,o=r.isBlockSelected,i=r.hasSelectedInnerBlock;return{block:a(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),re(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends J{constructor(...e){var t,n,r;super(...e),r=e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++){const n="Ipsam per dolores minus natoque? Rutrum dolorem voluptates euismod pharetra! Rhoncus distinctio cupiditate accusantium. Cillum aliquid.";t.push(["blockspare/accordion-item",{itemNumber:e,defaultText:n,customFontSize:18}])}return t},(n="getAccordionTemplate")in(t=this)?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,r=e.attributes.uniqueId,a=n.substr(0,6);r?r&&r!=a&&t({uniqueId:a}):t({uniqueId:a})}insertAccordionItem(){let e;const t=this.props,n=t.clientId,r=t.insertBlock,a=t.block;if(a.innerBlocks&&a.innerBlocks.length){const t=a.innerBlocks[a.innerBlocks.length-1].attributes,n=t.itemNumber+1,r=G.heading;e=Object.assign({},t,{itemNumber:n,heading:r,active:!1,defaultText:""})}else e=G;r(Z("blockspare/accordion-item",e),void 0,n)}render(){const e=this.props,t=(e.name,e.attributes),n=e.isSelectedBlockInRoot,r=(e.setAttributes,e.attributes.uniqueId);return wp.element.createElement(X,null,wp.element.createElement("div",{className:`blockspare-block-accordion blockspare-block-${r}`},wp.element.createElement(K,{template:this.getAccordionTemplate(t),allowedBlocks:["blockspare/accordion-item"]})),n&&wp.element.createElement("div",{className:"blockspare-accordion-add-item blockspare-add-more-item"},wp.element.createElement(Q,{icon:"insert",onClick:()=>{this.insertAccordionItem()}},V("Add Accordion Item"))))}});const oe=wp.element.Component,ie=wp.blockEditor.InnerBlocks;var se=class extends oe{render(){const e=this.props.attributes,t=e.uniqueId,n=e.itemToggle,r=`blockspare-block-accordion blockspare-block blockspare-block-${t}`;return wp.element.createElement("div",{className:r,"data-item-toggle":n},wp.element.createElement(ie.Content,null))}},le=n(39);const ce=wp.i18n.__,ue=wp.blocks.registerBlockType,de=le.name,pe=le.category,me=le.attributes;ue(de,{title:ce("BS Accordion","blockspare"),description:ce("Display creative collapsible Accordion.","blockspare"),category:pe,icon:a.accordion,keywords:[ce("accordion","blockspare"),ce("block","blockspare"),ce("collapsible","blockspare"),ce("collapse","blockspare")],supports:{html:!1,className:!1,align:["center","wide","full"]},example:{attributes:{}},attributes:me,edit:ae,save:se});n(430),n(431);var fe=n(87);const he=wp.element.Component;class be extends he{constructor(e){super(...arguments)}render(){return wp.element.createElement("div",{style:{textAlign:this.props.attributes.sectionAlignment},className:i()(this.props.className,"blockspare-block-button")},this.props.children)}}const ge=wp.i18n.__,_e=wp.element.Fragment,ye=wp.components,ke=ye.SelectControl,we=ye.ToggleControl,ve=ye.RangeControl,Me=wp.blockEditor.PanelColorSettings;function Le(e){const t=e.enableButtonBackgroundColor,n=e.buttonBackgroundColor,r=e.onChangeButtonColor,a=void 0===r?()=>{}:r,o=e.buttonTextColor,i=e.onChangeButtonTextColor,s=void 0===i?()=>{}:i,l=e.enableButtonSize,c=e.buttonSize,u=e.onChangeButtonSize,d=void 0===u?()=>{}:u,p=e.enableButtonShape,m=e.buttonShape,f=e.onChangeButtonShape,h=void 0===f?()=>{}:f,b=e.enableButtonStyle,g=e.buttonStyle,_=e.onChangeBorderStyle,y=void 0===_?()=>{}:_,k=e.enableButtonTarget,w=e.buttonTarget,v=e.onChangeButtonTarget,M=void 0===v?()=>{}:v,L=e.borderColor,T=e.onchangeBorderColor,E=void 0===T?()=>{}:T,S=e.borderBtnTextColor,x=e.onChangeBorderBtnTextColor,C=void 0===x?()=>{}:x,D=e.enableBtnBorderWidth,O=e.btnBorderWidth,Y=e.onchangebtnBorderWidth,j=void 0===Y?()=>{}:Y,P=e.enableBtnFontWeight,N=e.btnFontWeight,B=e.onchangeBtnFontWeight,A=void 0===B?()=>{}:B,H=[{value:"blockspare-button-size-small",label:ge("Small","blockspare")},{value:"blockspare-button-size-medium",label:ge("Medium","blockspare")},{value:"blockspare-button-size-large",label:ge("Large","blockspare")},{value:"blockspare-button-size-extralarge",label:ge("Extra Large","blockspare")}],z=[{value:"blockspare-button-shape-square",label:ge("Square","blockspare")},{value:"blockspare-button-shape-rounded",label:ge("Rounded Square","blockspare")},{value:"blockspare-button-shape-circular",label:ge("Circular","blockspare")}],I=[{value:"none",label:ge("Fill","blockspare")},{value:"solid",label:ge("Border","blockspare")}],F=[{value:"normal",label:ge("Normal","blockspare")},{value:"bold",label:ge("Bold","blockspare")}];return wp.element.createElement(_e,null,0!=k&&wp.element.createElement(we,{label:ge("Open link in new window","blockspare"),checked:w,onChange:M}),0!=l&&wp.element.createElement(ke,{selected:c,label:ge("Button Size","blockspare"),value:c,options:H.map(({value:e,label:t})=>({value:e,label:t})),onChange:d}),0!=p&&wp.element.createElement(ke,{label:ge("Button Shape","blockspare"),value:m,options:z.map(({value:e,label:t})=>({value:e,label:t})),onChange:h}),0!=b&&wp.element.createElement(ke,{label:ge("Border Style","blockspare"),value:g,options:I.map(({value:e,label:t})=>({value:e,label:t})),onChange:y}),0!=D&&"solid"===g&&wp.element.createElement(ve,{label:ge("Border Width","blockspare"),value:O,min:1,step:1,max:5,onChange:j}),0!=P&&wp.element.createElement(ke,{label:ge("Font Weight","blockspare"),value:N,options:F.map(({value:e,label:t})=>({value:e,label:t})),onChange:A}),0!=t&&"none"===g&&wp.element.createElement(Me,{title:ge("Button Color Options","blockspare"),initialOpen:!1,colorSettings:[{value:n,onChange:a,label:ge("Button Color","blockspare")},{value:o,onChange:s,label:ge("Button Text Color","blockspare")}]}),"solid"===g&&wp.element.createElement(Me,{title:ge("Border Color","blockspare"),initialOpen:!0,colorSettings:[{value:L,onChange:E,label:ge("Border Color","blockspare")},{value:S,onChange:C,label:ge("Texts Color","blockspare")}]}))}const Te=wp.i18n.__,Ee=wp.element.Fragment,Se=wp.components.RangeControl,xe=wp.blockEditor.PanelColorSettings;function Ce(e){const t=e.backgroundColor1,n=e.backgroundColor2,r=e.gradientAngle,a=e.colorLocation1,o=e.colorLocation2,i=e.onChangeBackgroundColor1,s=void 0===i?()=>{}:i,l=e.onChangeBackgroundColor2,c=void 0===l?()=>{}:l,u=e.onChangeGradientAngle,d=void 0===u?()=>{}:u,p=e.onChangeColorLocation1,m=void 0===p?()=>{}:p,f=e.onChangeColorLocation2,h=void 0===f?()=>{}:f;return wp.element.createElement(Ee,null,wp.element.createElement(xe,{title:Te("Gradient Color Option ","blockspare"),initialOpen:!0,colorSettings:[{value:t,onChange:s,label:Te("Background Color #1","blockspare")},{value:n,onChange:c,label:Te("Background Color #2","blockspare")}]}),wp.element.createElement(Se,{label:Te("Gradient Angle","blockspare"),value:r,onChange:d,min:-180,step:1,max:180}),wp.element.createElement(Se,{label:Te("Location #1","blockspare"),value:a,onChange:m,min:0,step:1,max:100}),wp.element.createElement(Se,{label:Te("Location #2","blockspare"),value:o,onChange:h,min:0,step:1,max:100}))}const De=wp.i18n.__,Oe=wp.element.Component,Ye=wp.blockEditor.InspectorControls,je=wp.components,Pe=je.PanelBody,Ne=je.ToggleControl;class Be extends Oe{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.buttonBackgroundColor,n=e.buttonTextColor,r=e.buttonSize,a=e.buttonShape,o=e.buttonStyle,i=e.buttonTarget,s=e.borderColor,l=e.borderBtnTextColor,c=e.enableGradient,u=e.backgroundColor1,d=e.backgroundColor2,p=e.gradientAngle,m=e.colorLocation1,f=e.colorLocation2,h=e.btnFontWeight,b=e.btnBorderWidth,g=this.props.setAttributes;return wp.element.createElement(Ye,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Pe,{title:De("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Le,{enableButtonTarget:!1,buttonTarget:i,onChangeButtonTarget:e=>g({buttonTarget:!i}),enableGradient:c,onChangeGradient:e=>g({enableGradient:e}),enableButtonSize:!0,buttonSize:r,onChangeButtonSize:e=>g({buttonSize:e}),enableButtonShape:!0,buttonShape:a,onChangeButtonShape:e=>g({buttonShape:e}),buttonBackgroundColor:t,onChangeButtonColor:e=>g({buttonBackgroundColor:e}),buttonTextColor:n,onChangeButtonTextColor:e=>g({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:o,onChangeBorderStyle:e=>g({buttonStyle:e}),borderColor:s,onchangeBorderColor:e=>g({borderColor:e}),borderBtnTextColor:l,onChangeBorderBtnTextColor:e=>g({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:b,onchangebtnBorderWidth:e=>g({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:h,onchangeBtnFontWeight:e=>g({btnFontWeight:e})}),"none"===o&&wp.element.createElement(Ne,{label:De("Enable Gradient","blockspare"),checked:c,onChange:()=>this.props.setAttributes({enableGradient:!c})}),c&&"none"===o&&wp.element.createElement(Ce,{backgroundColor1:u,onChangeBackgroundColor1:e=>g({backgroundColor1:e}),backgroundColor2:d,onChangeBackgroundColor2:e=>g({backgroundColor2:e}),gradientAngle:p,onChangeGradientAngle:e=>g({gradientAngle:e}),colorLocation1:m,onChangeColorLocation1:e=>g({colorLocation1:e}),colorLocation2:f,onChangeColorLocation2:e=>g({colorLocation2:e})}))))}}var Ae=e=>{let t="";if("none"===e.buttonStyle)if(1==e.enableGradient){const n=e.gradientAngle+"deg",r=e.colorLocation1+"%",a=e.colorLocation2+"%";t={backgroundImage:`linear-gradient(${n},${e.backgroundColor1?e.backgroundColor1:"#3B1A5B"} ${r},${e.backgroundColor2?e.backgroundColor2:"#8B249C"} ${a})`,color:e.buttonTextColor?e.buttonTextColor:"#fff",fontWeight:e.btnFontWeight,borderWidth:e.btnBorderWidth+"px"}}else t={color:e.buttonTextColor?e.buttonTextColor:"#fff",backgroundColor:e.buttonBackgroundColor?e.buttonBackgroundColor:"#3c1a5b",fontWeight:e.btnFontWeight,borderWidth:e.btnBorderWidth+"px"};else t={color:e.borderBtnTextColor?e.borderBtnTextColor:"#404040",backgroundColor:"transparent",borderColor:e.borderColor?e.borderColor:"#3c1a5b",borderStyle:e.buttonStyle,fontWeight:e.btnFontWeight,borderWidth:e.btnBorderWidth+"px"};return t};var He={sectionAlignment:{type:"string",default:"center"},buttonText:{type:"string",default:"Get Started"},buttonUrl:{type:"string",source:"attribute",selector:"a",attribute:"href"},buttonBackgroundColor:{type:"string",default:"#3c1a5b"},buttonTextColor:{type:"string",default:"#fff"},buttonSize:{type:"string",default:"blockspare-button-size-small"},buttonShape:{type:"string",default:"blockspare-button-shape-rounded"},buttonTarget:{type:"boolean",default:!1},buttonStyle:{type:"string",default:"none"},borderColor:{type:"string",default:"#3c1a5b"},borderBtnTextColor:{type:"string",default:"#404040"},enableGradient:{type:"boolean",default:!1},backgroundColor1:{type:"string",default:"#3B1A5B"},backgroundColor2:{type:"string",default:"#8B249C"},gradientAngle:{type:"number",default:-90},colorLocation1:{type:"number",default:30},colorLocation2:{type:"number",default:70},btnBorderWidth:{type:"number",default:1},btnFontWeight:{type:"string",default:"normal"}};function ze(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ze(Object(n),!0).forEach((function(t){Fe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ze(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Fe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Re=fe.name,We=fe.category,Ue=wp.i18n.__,qe=wp.element.Component,Ge=wp.blockEditor,Ve=Ge.RichText,$e=Ge.AlignmentToolbar,Je=Ge.BlockControls,Xe=Ge.URLInput,Qe=wp.components,Ke=Qe.IconButton,Ze=Qe.Dashicon,et=wp.blocks.registerBlockType;et(Re,{title:Ue("BS Button","blockspare"),description:Ue("Prompt visitors to take action with multiple buttons, side by side.","blockspare"),category:We,icon:a.button,attributes:Ie({},He),keywords:[Ue("block","blockspare"),Ue("button","blockspare"),Ue("cta","blockspare"),Ue("call to action","blockspare")],example:{attributes:{sectionAlignment:"center",buttonText:Ue("Get Started","blockspare"),buttonBackgroundColor:"#3c1a5b",buttonTextColor:"#fff",buttonSize:"blockspare-button-size-small",buttonShape:"blockspare-button-shape-rounded"}},edit:class extends qe{render(){const e=this.props,t=e.attributes,n=t.buttonText,r=t.buttonUrl,a=t.sectionAlignment,o=t.buttonSize,s=t.buttonShape,l=e.isSelected,c=e.setAttributes,u=e.attributes,d=Ie({},Ae(u));return[wp.element.createElement(Je,{key:"controls"},wp.element.createElement($e,{value:a,onChange:e=>{c({sectionAlignment:e})}})),wp.element.createElement(Be,this.props),wp.element.createElement(be,this.props,wp.element.createElement(Ve,{tagName:"span",placeholder:Ue("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:n,allowedFormats:[],className:i()("blockspare-button",s,o),style:d,onChange:e=>c({buttonText:e})})),l&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${a}`,onSubmit:e=>e.preventDefault(),style:{textAlign:a}},wp.element.createElement(Ze,{icon:"admin-links"}),wp.element.createElement(Xe,{className:"button-url",value:r,onChange:e=>c({buttonUrl:e})}),wp.element.createElement(Ke,{icon:"editor-break",label:Ue("Buy","blockspare"),type:"submit"}))]}},save:function(e){const t=e.attributes,n=t.buttonText,r=t.buttonUrl,a=t.buttonShape,o=t.buttonSize,s=t.buttonTarget,l=Ie({},Ae(e.attributes));return wp.element.createElement(be,e,n&&wp.element.createElement("a",{href:r,target:s?"_blank":null,rel:s?"noopener noreferrer":null,className:i()("blockspare-button",a,o),style:l},wp.element.createElement(Ve.Content,{value:n})))}});n(432);const tt=wp.i18n.__,nt=wp.element.Fragment,rt=wp.components.RangeControl;function at(e){const t=e.padding,n=e.paddingTitle,r=e.paddingHelp,a=e.paddingMin,o=e.paddingMax,i=e.paddingEnable,s=e.onChangePadding,l=void 0===s?()=>{}:s,c=e.paddingTop,u=e.paddingTopMin,d=e.paddingTopMax,p=e.paddingEnableTop,m=e.onChangePaddingTop,f=void 0===m?()=>{}:m,h=e.paddingRight,b=e.paddingRightMin,g=e.paddingRightMax,_=e.paddingEnableRight,y=e.onChangePaddingRight,k=void 0===y?()=>{}:y,w=e.paddingBottom,v=e.paddingBottomMin,M=e.paddingBottomMax,L=e.paddingEnableBottom,T=e.onChangePaddingBottom,E=void 0===T?()=>{}:T,S=e.paddingLeft,x=e.paddingLeftMin,C=e.paddingLeftMax,D=e.paddingEnableLeft,O=e.onChangePaddingLeft,Y=void 0===O?()=>{}:O,j=e.paddingVertical,P=e.paddingEnableVertical,N=e.paddingVerticalMin,B=e.paddingVerticalMax,A=e.onChangePaddingVertical,H=void 0===A?()=>{}:A,z=e.paddingHorizontal,I=e.paddingEnableHorizontal,F=e.paddingHorizontalMin,R=e.paddingHorizontalMax,W=e.onChangePaddingHorizontal,U=void 0===W?()=>{}:W;return wp.element.createElement(nt,null,i&&wp.element.createElement(rt,{label:n||tt("Padding","blockspare"),help:r||null,value:t,min:a,max:o,onChange:l}),p&&wp.element.createElement(rt,{label:tt("Padding Top","blockspare"),value:c,min:u,max:d,onChange:f}),_&&wp.element.createElement(rt,{label:tt("Padding Right","blockspare"),value:h,min:b,max:g,onChange:k}),L&&wp.element.createElement(rt,{label:tt("Padding Bottom","blockspare"),value:w,min:v,max:M,onChange:E}),D&&wp.element.createElement(rt,{label:tt("Padding Left","blockspare"),value:S,min:x,max:C,onChange:Y}),P&&wp.element.createElement(rt,{label:tt("Padding Vertical","blockspare"),value:j,min:N,max:B,onChange:H}),I&&wp.element.createElement(rt,{label:tt("Padding Horizontal","blockspare"),value:z,min:F,max:R,onChange:U}))}const ot=wp.i18n.__,it=wp.element.Fragment,st=wp.components.RangeControl;function lt(e){const t=e.margin,n=e.marginTitle,r=e.marginHelp,a=e.marginMin,o=e.marginMax,i=e.marginEnable,s=e.onChangeMargin,l=void 0===s?()=>{}:s,c=e.marginTop,u=e.marginTopMin,d=e.marginTopMax,p=e.marginEnableTop,m=e.onChangeMarginTop,f=void 0===m?()=>{}:m,h=e.marginBottom,b=e.marginBottomMin,g=e.marginBottomMax,_=e.marginEnableBottom,y=e.onChangeMarginBottom,k=void 0===y?()=>{}:y;return wp.element.createElement(it,null,i&&wp.element.createElement(st,{label:n||ot("Margin","blockspare"),help:r||null,value:t,min:a,max:o,onChange:l}),p&&wp.element.createElement(st,{label:ot("Margin Top","blockspare"),value:c,min:u,max:d,onChange:f}),_&&wp.element.createElement(st,{label:ot("Margin Bottom","blockspare"),value:h,min:b,max:g,onChange:k}))}const ct=wp.i18n.__,ut=wp.element.Fragment,dt=wp.components,pt=(dt.ToggleControl,dt.PanelBody),mt=dt.SelectControl,ft=dt.RangeControl,ht=wp.blockEditor.PanelColorSettings;function bt(e){const t=e.enableBlockGaps,n=e.enableheaderlayoutOption,r=e.headerlayoutOption,a=e.onChangeHeaderStyle,o=void 0===a?()=>{}:a,i=e.titleFontSize,s=e.onChangetitleFontSize,l=void 0===s?()=>{}:s,c=(e.subtitleFontSize,e.onChangesubtitleFontSize,e.headerTagOption),u=e.onChangeHeaderTag,d=void 0===u?()=>{}:u,p=(e.enableheaderboxColor,e.headerboxColor,e.onChangeboxcolor,e.dashColor),m=e.onChangeDashColor,f=void 0===m?()=>{}:m,h=e.headertitleColor,b=e.onChangetitlecolor,g=void 0===b?()=>{}:b,_=e.titlePaddingTop,y=e.onChangetitlePaddingTop,k=void 0===y?()=>{}:y,w=e.titlePaddingBottom,v=e.onChangetitlePaddingBottom,M=void 0===v?()=>{}:v,L=(e.headersubtitleColor,e.onChangesubtitlecolor,e.subtitlePaddingTop),T=e.onChangesubtitlePaddingTop,E=void 0===T?()=>{}:T,S=e.subtitlePaddingBottom,x=e.onChangesubtitlePaddingBottom,C=void 0===x?()=>{}:x,D=e.headerpaddingTop,O=e.onChangeheaderpaddingTop,Y=void 0===O?()=>{}:O,j=e.headerpaddingRight,P=e.onChangeheaderpaddingRight,N=void 0===P?()=>{}:P,B=e.headerpaddingBottom,A=e.onChangeheaderpaddingBottom,H=void 0===A?()=>{}:A,z=e.headerpaddingLeft,I=e.onChangeheaderpaddingLeft,F=void 0===I?()=>{}:I,R=e.headermarginTop,W=e.onChangeheadermarginTop,U=void 0===W?()=>{}:W,q=e.headermarginBottom,G=e.onChangeheadermarginBottom,V=void 0===G?()=>{}:G,$=[{value:"blockspare-style1",label:ct("Layout 1","blockspare")},{value:"blockspare-style2",label:ct("Layout 2","blockspare")},{value:"blockspare-style3",label:ct("Layout 3","blockspare")}],J=[{value:"h1",label:ct("h1","blockspare")},{value:"h2",label:ct("h2","blockspare")},{value:"h3",label:ct("h3","blockspare")},{value:"h4",label:ct("h4","blockspare")},{value:"h5",label:ct("h5","blockspare")},{value:"h6",label:ct("h6","blockspare")}];return wp.element.createElement(ut,null,0!=n&&wp.element.createElement(pt,{title:ct("Layouts","blockspare"),initialOpen:!1},wp.element.createElement(mt,{label:ct("Header Style","blockspare"),value:r,options:$.map(({value:e,label:t})=>({value:e,label:t})),onChange:o})),wp.element.createElement(pt,{title:ct("Text Settings","blockspare"),initialOpen:!1},wp.element.createElement(mt,{label:ct("Title Tag","blockspare"),value:c,options:J.map(({value:e,label:t})=>({value:e,label:t})),onChange:d}),wp.element.createElement(ft,{label:ct("Title Font Size","blockspare"),value:i,onChange:l,min:14,step:2,max:60}),wp.element.createElement(ht,{title:ct("Color Settings","blockspare"),initialOpen:!0,colorSettings:[{value:h,onChange:g,label:ct("Title Color","blockspare")},{value:p,onChange:f,label:ct("Dash Color","blockspare")}]})),wp.element.createElement(pt,{title:ct("Content Gap Settings","blockspare"),initialOpen:!1},wp.element.createElement(pt,{title:ct("Title Gaps","blockspare"),initialOpen:!1},wp.element.createElement(ft,{label:ct("Padding Top","blockspare"),value:_,onChange:k,min:0,max:100}),wp.element.createElement(ft,{label:ct("Padding Bottom","blockspare"),value:w,onChange:M,min:0,max:100})),wp.element.createElement(pt,{title:ct("Subtitle Gaps","blockspare"),initialOpen:!1},wp.element.createElement(ft,{label:ct("Padding Top","blockspare"),value:L,onChange:E,min:0,max:100}),wp.element.createElement(ft,{label:ct("Padding Bottom","blockspare"),value:S,onChange:C,min:0,max:100}))),1==t&&wp.element.createElement(pt,{title:ct("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(pt,{title:ct("Padding Settings","blockspare"),initialOpen:!1},wp.element.createElement(ft,{label:ct("Header Padding Top","blockspare"),value:D,onChange:Y,min:0,max:100}),wp.element.createElement(ft,{label:ct("Header Padding Left","blockspare"),value:z,onChange:F,min:0,max:100}),wp.element.createElement(ft,{label:ct("Header Padding Bottom","blockspare"),value:B,onChange:H,min:0,max:100}),wp.element.createElement(ft,{label:ct("Header Padding Right","blockspare"),value:j,onChange:N,min:0,max:100})),wp.element.createElement(pt,{title:ct("Margin Settings","blockspare"),initialOpen:!1},wp.element.createElement(ft,{label:ct("Margin Top","blockspare"),value:R,onChange:U,min:0,max:100}),wp.element.createElement(ft,{label:ct("Margin Bottom","blockspare"),value:q,onChange:V,min:0,max:100}))))}wp.i18n.__,wp.element.Fragment,wp.components.RangeControl,wp.blockEditor.PanelColorSettings;const gt=wp.i18n.__,_t=wp.element,yt=_t.Component,kt=(_t.Fragment,wp.blockEditor),wt=kt.InspectorControls,vt=kt.MediaUpload,Mt=kt.PanelColorSettings,Lt=wp.components,Tt=Lt.RangeControl,Et=Lt.PanelBody,St=Lt.IconButton,xt=Lt.ToggleControl;class Ct extends yt{render(){const e=this.props.attributes,t=e.opacityRatio,n=e.ctaBackGroundColor,r=e.showImage,a=e.imgURL,o=e.imgID,i=e.imgAlt,s=e.buttonBackgroundColor,l=e.buttonTextColor,c=e.buttonSize,u=e.buttonStyle,d=e.buttonShape,p=e.buttonTarget,m=e.paddingTop,f=e.paddingRight,h=e.paddingBottom,b=e.paddingLeft,g=e.marginTop,_=e.marginBottom,y=e.titleFontSize,k=e.subtitleFontSize,w=e.headerTagOption,v=e.headertitleColor,M=e.headersubtitleColor,L=e.headerlayoutOption,T=e.titlePaddingTop,E=e.titlePaddingBottom,S=e.subtitlePaddingTop,x=e.subtitlePaddingBottom,C=e.headerboxColor,D=e.dashColor,O=e.borderColor,Y=e.borderBtnTextColor,j=(e.backgroundFix,e.enableGradient),P=e.backgroundColor1,N=e.backgroundColor2,B=e.gradientAngle,A=e.colorLocation1,H=e.colorLocation2,z=(e.borderRadius,e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.btnFontWeight),I=e.btnBorderWidth,F=this.props.setAttributes,R=()=>{F({imgID:null,imgURL:null,imgAlt:null})};return wp.element.createElement(wt,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Et,{title:gt("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(bt,{enableBlockGaps:!1,titleFontSize:y,onChangetitleFontSize:e=>F({titleFontSize:e}),subtitleFontSize:k,onChangesubtitleFontSize:e=>F({subtitleFontSize:e}),headerlayoutOption:L,onChangeHeaderStyle:e=>F({headerlayoutOption:e}),headerTagOption:w,onChangeHeaderTag:e=>F({headerTagOption:e}),headerboxColor:C,onChangeboxcolor:e=>F({headerboxColor:e}),dashColor:D,onChangeDashColor:e=>F({dashColor:e}),headertitleColor:v,onChangetitlecolor:e=>F({headertitleColor:e}),titlePaddingTop:T,onChangetitlePaddingTop:e=>F({titlePaddingTop:e}),titlePaddingBottom:E,onChangetitlePaddingBottom:e=>F({titlePaddingBottom:e}),headersubtitleColor:M,onChangesubtitlecolor:e=>F({headersubtitleColor:e}),subtitlePaddingTop:S,onChangesubtitlePaddingTop:e=>F({subtitlePaddingTop:e}),subtitlePaddingBottom:x,onChangesubtitlePaddingBottom:e=>F({subtitlePaddingBottom:e})})),wp.element.createElement(Et,{title:gt("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Le,{enableButtonTarget:!1,buttonTarget:p,onChangeButtonTarget:e=>F({buttonTarget:!p}),enableGradient:j,onChangeGradient:e=>F({enableGradient:e}),enableButtonSize:!0,buttonSize:c,onChangeButtonSize:e=>F({buttonSize:e}),enableButtonShape:!0,buttonShape:d,onChangeButtonShape:e=>F({buttonShape:e}),buttonBackgroundColor:s,onChangeButtonColor:e=>F({buttonBackgroundColor:e}),buttonTextColor:l,onChangeButtonTextColor:e=>F({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:u,onChangeBorderStyle:e=>F({buttonStyle:e}),borderColor:O,onchangeBorderColor:e=>F({borderColor:e}),borderBtnTextColor:Y,onChangeBorderBtnTextColor:e=>F({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:I,onchangebtnBorderWidth:e=>F({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:z,onchangeBtnFontWeight:e=>F({btnFontWeight:e})}),"none"===u&&wp.element.createElement(xt,{label:gt("Enable Gradient","blockspare"),checked:j,onChange:()=>this.props.setAttributes({enableGradient:!j})}),j&&"none"===u&&wp.element.createElement(Et,{title:gt("Gradient Option","blockspare"),initialOpen:!0},wp.element.createElement(Ce,{backgroundColor1:P,onChangeBackgroundColor1:e=>F({backgroundColor1:e}),backgroundColor2:N,onChangeBackgroundColor2:e=>F({backgroundColor2:e}),gradientAngle:B,onChangeGradientAngle:e=>F({gradientAngle:e}),colorLocation1:A,onChangeColorLocation1:e=>F({colorLocation1:e}),colorLocation2:H,onChangeColorLocation2:e=>F({colorLocation2:e})}))),wp.element.createElement(Et,{title:gt("Background Settings","blockspare"),initialOpen:!1},wp.element.createElement(xt,{label:gt("Display Image","blockspare"),checked:r,onChange:()=>this.props.setAttributes({showImage:!r})}),wp.element.createElement(vt,{onSelect:e=>{F({imgID:e.id,imgURL:e.url,imgAlt:e.alt})},type:"image",value:o,render:({open:e})=>wp.element.createElement("div",null,wp.element.createElement(St,{className:"aft-cta-inspector-media",label:gt("Edit image","blockspare"),icon:"format-image",onClick:e},gt("Select Image","blockspare")),a&&!!a.length&&wp.element.createElement(St,{className:"blockspare-cta-inspector-media",label:gt("Remove Image","blockspare"),icon:"dismiss",onClick:R},gt("Remove","blockspare")))}),wp.element.createElement("div",null,a&&!!a.length&&wp.element.createElement("img",{src:a,width:"100px",height:"100px",alt:i})),a&&!!a.length&&wp.element.createElement(Tt,{label:gt("Image Opacity","blockspare"),value:t,onChange:e=>this.props.setAttributes({opacityRatio:e}),min:0,max:100,step:10}),wp.element.createElement(Mt,{title:gt("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:n,onChange:e=>F({ctaBackGroundColor:e}),label:gt("Background Color","blockspare")}]})),wp.element.createElement(Et,{title:gt("Block Gap Settings","blockspare"),initialOpen:!1},wp.element.createElement(Et,{title:gt("Padding Settings","blockspare"),initialOpen:!0},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:m,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>F({paddingTop:e}),paddingEnableRight:!0,paddingRight:f,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>F({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:h,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>F({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:b,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>F({paddingLeft:e})})),wp.element.createElement(Et,{title:gt("Margin Settings","blockspare"),initialOpen:!0},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:g,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>F({marginTop:e}),marginEnableBottom:!0,marginBottom:_,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>F({marginBottom:e})})))))}}var Dt=e=>{let t="";return e.enableBoxShadow&&(t={boxShadow:e.xOffset+"px "+e.yOffset+"px "+e.blur+"px "+e.spread+"px "+e.shadowColor}),t};var Ot=e=>{let t="";return t={textAlign:e.sectionAlignment,paddingTop:e.paddingTop?e.paddingTop+"px":"0px",paddingRight:e.paddingRight?e.paddingRight+"px":"0px",paddingBottom:e.paddingBottom?e.paddingBottom+"px":"0px",paddingLeft:e.paddingLeft?e.paddingLeft+"px":"0px",marginTop:e.marginTop?e.marginTop+"px":"0px",marginBottom:e.marginBottom?e.marginBottom+"px":"0px"},t};function Yt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function jt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Pt=wp.element.Component;class Nt extends Pt{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yt(Object(n),!0).forEach((function(t){jt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({backgroundColor:e.ctaBackGroundColor?e.ctaBackGroundColor:"#0e0e0e"},Dt(e),{},Ot(e),{borderRadius:e.borderRadius?e.borderRadius:null});return wp.element.createElement("div",{className:i()("blockspare-cta-wrapper blockspare-blocks","align"+e.align,e.imgURL&&e.imgURL.length&&e.backgroundFix?"blockspare-background-fix":""),style:t},this.props.children)}}var Bt=e=>{let t="";return t={textAlign:e.sectionAlignment,paddingTop:e.headerpaddingTop?e.headerpaddingTop+"px":"0px",paddingRight:e.headerpaddingRight?e.headerpaddingRight+"px":"0px",paddingBottom:e.headerpaddingBottom?e.headerpaddingBottom+"px":"0px",marginTop:e.headermarginTop?e.headermarginTop+"px":"0px",marginBottom:e.headermarginBottom?e.headermarginBottom+"px":"0px",paddingLeft:e.headerpaddingLeft?e.headerpaddingLeft+"px":"0px",backgroundColor:e.headerboxColor?e.headerboxColor:"transparent"},t};function At(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ht(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const zt=wp.element.Component;class It extends zt{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.align,r=t.sectionAlignment,a=t.headerlayoutOption,o=e.attributes,s=(e.setAttributes,e.isSelected,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?At(Object(n),!0).forEach((function(t){Ht(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):At(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Bt(o)));return wp.element.createElement("div",{className:i()("blockspare-section-header-wrapper blockspare-blocks","align"+n),style:s},wp.element.createElement("div",{className:i()("blockspare-section-head-wrap",a,"blockspare-"+r)},this.props.children))}}var Ft={className:{type:"string"},align:{type:"string",default:"center"},sectionAlignment:{type:"string",default:"center"},headerTitle:{type:"string",default:"Enter Title"},titleFontSize:{type:"number",default:32},subtitleFontSize:{type:"number",default:18},headerSubTitle:{type:"string",default:"Enter Subtitle"},headerboxColor:{type:"string",default:"transparent"},headertitleColor:{type:"string",default:"#404040"},headersubtitleColor:{type:"string",default:"#6d6d6d"},headertitleDashColor:{type:"string",default:"#6d6d6d"},headerpaddingTop:{type:"number",default:10},headerpaddingRight:{type:"number",default:20},headerpaddingBottom:{type:"number",default:10},headerpaddingLeft:{type:"number",default:20},headermarginTop:{type:"number",default:30},headermarginBottom:{type:"number",default:30},headerlayoutOption:{type:"string",default:"blockspare-style1"},headerTagOption:{type:"string",default:"h2"},titlePaddingTop:{type:"number",default:5},titlePaddingBottom:{type:"number",default:5},subtitlePaddingTop:{type:"number",default:5},subtitlePaddingBottom:{type:"number",default:5},dashColor:{type:"string",default:"#8b249c"}};var Rt={paddingTop:{type:"number",default:20},paddingRight:{type:"number",default:20},paddingBottom:{type:"number",default:20},paddingLeft:{type:"number",default:20},marginTop:{type:"number",default:30},marginBottom:{type:"number",default:30}},Wt=n(40);var Ut=e=>{let t="";return t={borderColor:e.dashColor?e.dashColor:"#8b249c"},t};var qt=e=>{let t="";return t={color:e.headertitleColor?e.headertitleColor:"#404040",fontSize:e.titleFontSize+"px",paddingTop:e.titlePaddingTop?e.titlePaddingTop+"px":"0px",paddingBottom:e.titlePaddingBottom?e.titlePaddingBottom+"px":"0px"},t};var Gt=e=>{let t="";return t={fontSize:e.subtitleFontSize+"px",color:e.headersubtitleColor?e.headersubtitleColor:"#6d6d6d",paddingTop:e.subtitlePaddingTop?e.subtitlePaddingTop+"px":void 0,paddingBottom:e.subtitlePaddingBottom?e.subtitlePaddingBottom+"px":void 0},t};var Vt={enableBoxShadow:{type:"boolean",default:!1},xOffset:{type:"number",default:0},yOffset:{type:"number",default:6},blur:{type:"number",default:12},spread:{type:"number",default:-10},shadowColor:{type:"string",default:"#000"}};function $t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Jt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$t(Object(n),!0).forEach((function(t){Xt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Xt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Qt=blockspare_globals,Kt=wp.element,Zt=Kt.Component,en=Kt.Fragment,tn=wp.blockEditor,nn=tn.AlignmentToolbar,rn=tn.URLInput,an=tn.BlockControls,on=tn.BlockAlignmentToolbar,sn=tn.RichText,ln=wp.components,cn=ln.IconButton,un=ln.Dashicon,dn=wp.blocks.registerBlockType,pn=wp.i18n.__,mn=["center","wide","full"],fn=Wt.name,hn=Wt.category;const bn=Jt({},Ft,{},Wt.attributes,{},He,{},Rt,{},Vt);function gn(e){return 0===e?null:"has-background-opacity-"+10*Math.round(e/10)}dn(fn,{title:pn("BS Call to Action","blockspare"),description:pn("BS call to action allow you to add title,subtitle,text button and background image/color","blockspare"),category:hn,icon:a.cta,attributes:bn,keywords:[pn("call to action","blockspare"),pn("block","blockspare"),pn("cta","blockspare"),pn("link","blockspare")],example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},getEditWrapperProps(e){const t=e.align;if(-1!==mn.indexOf(t))return{"data-align":t}},edit:class extends Zt{render(){const e=this.props,t=e.attributes,n=t.align,r=t.buttonText,a=t.buttonUrl,o=t.buttonAlignment,s=t.buttonSize,l=t.buttonShape,c=t.showImage,u=t.imgURL,d=t.sectionAlignment,p=(t.imgAlt,t.opacityRatio),m=t.headerTagOption,f=t.headerTitle,h=t.headerSubTitle,b=e.isSelected,g=e.attributes,_=e.setAttributes,y=Jt({},Ut(g)),k=Jt({},qt(g)),w=Jt({},Gt(g)),v=Jt({},Ae(g));let M="url("+Qt.img+")";return u&&u.length&&(M="url("+u+")"),wp.element.createElement(en,null,wp.element.createElement(an,null,wp.element.createElement(on,{value:n,onChange:e=>{_({align:e})},controls:["center","wide","full"]}),wp.element.createElement(nn,{value:d,onChange:e=>{_({sectionAlignment:e})}})),wp.element.createElement(Ct,Jt({setAttributes:_},this.props)),wp.element.createElement(Nt,this.props,c&&u&&wp.element.createElement("div",{className:i()("blockspare-image-wrap","blockspare-cta-background",gn(p),{"has-background-opacity":0!==p}),style:{backgroundImage:M}}),!u&&wp.element.createElement("div",{className:"empty-plcaeholder-div"}),wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:y}),wp.element.createElement(sn,{tagName:m,placeholder:pn("Title","blockspare"),keepPlaceholderOnFocus:!0,value:f,className:"blockspare-title",style:k,onChange:e=>_({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:y})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:y}),wp.element.createElement(sn,{tagName:"p",placeholder:pn("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:h,className:"blockspare-subtitle",style:w,onChange:e=>_({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:y}))),wp.element.createElement(be,this.props,wp.element.createElement(sn,{tagName:"span",placeholder:pn("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:r,allowedFormats:[],className:i()("blockspare-button",l,s),style:v,onChange:e=>_({buttonText:e})})),b&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${o}`,onSubmit:e=>e.preventDefault()},wp.element.createElement(un,{icon:"admin-links"}),wp.element.createElement(rn,{className:"button-url",value:a,onChange:e=>_({buttonUrl:e})}),wp.element.createElement(cn,{icon:"editor-break",label:pn("Apply","blockspare"),type:"submit"}))))}},save:function(e){const t=e.attributes,n=(t.align,t.buttonText),r=t.buttonUrl,a=t.buttonTarget,o=t.buttonSize,s=t.buttonShape,l=t.opacityRatio,c=t.sectionAlignment,u=t.showImage,d=t.imgURL,p=(t.imgAlt,t.headerTagOption),m=t.headerTitle,f=t.headerSubTitle,h=Jt({},Ut(e.attributes)),b=Jt({},qt(e.attributes)),g=Jt({},Gt(e.attributes)),_=Jt({},Ae(e.attributes));let y="url("+Qt.img+")";return d&&d.length&&(y="url("+d+")"),wp.element.createElement(Nt,e,u&&d&&wp.element.createElement("div",{className:i()("blockspare-image-wrap","blockspare-cta-background",gn(l),{"has-background-opacity":0!==l}),style:{backgroundImage:y}}),!d&&wp.element.createElement("div",{className:"empty-plcaeholder-div"}),wp.element.createElement("div",{className:"blockspare-section-head-wrap",style:{textAlign:c}},wp.element.createElement(It,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:h}),m&&wp.element.createElement(sn.Content,{tagName:p,className:"blockspare-title",style:b,value:m}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:h})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:h}),f&&wp.element.createElement(sn.Content,{tagName:"p",className:"blockspare-subtitle",style:g,value:f}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:h})))),wp.element.createElement(be,e,n&&wp.element.createElement("a",{href:r,target:a?"_blank":null,rel:a?"noopener noreferrer":null,className:i()("blockspare-button",s,o),style:_},wp.element.createElement(sn.Content,{value:n}))))}});var _n=e=>{let t="";return"style-3"!=e.design&&(t={boxShadow:e.enableBoxShadow?e.xOffset+"px "+e.yOffset+"px "+e.blur+"px "+e.spread+"px "+e.shadowColor:"",borderRadius:e.borderRadius?e.borderRadius:null,backgroundColor:e.enableBackgroundColor?e.backGroundColor:void 0}),t},yn=(n(434),n(436),n(8)),kn=n.n(yn);let wn=blockspare_globals.srcUrl+"/blocks/utils/component/design-separator-control";var vn=function({imageFile:e,imageHoverFile:t,imageWidth:n="",imageHeight:r="",label:a}){const o=e?e.match(/https?:/i)?e:wn?`${wn}/${e}`:e:"",i=t?t.match(/https?:/i)?t:wn?`${wn}/${t}`:t:null;return wp.element.createElement("span",{className:"blockspare-design-panel-item"},i&&wp.element.createElement("img",{className:"blockspare-design-panel-item__hover-image",src:i,alt:a,width:n,height:r}),o&&wp.element.createElement("img",{className:"blockspare-design-panel-item__image",src:o,alt:a,width:n,height:r}),wp.element.createElement("span",{className:"design-label"},a))};function Mn(){return(Mn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function Ln(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const En=wp.components.RadioControl;var Sn=function(e){const t=e.selected,n=e.options,r=e.onChange,a=e.className,o=void 0===a?"":a,s=n.map(e=>function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ln(Object(n),!0).forEach((function(t){Tn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ln(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},e,{label:wp.element.createElement(vn,{imageFile:e.image,imageHoverFile:e.hoverImage,imageWidth:e.imageWidth,imageHeight:e.imageHeight,isPro:e.isPro,label:e.label}),title:e.label,value:e.value}));return wp.element.createElement("div",{className:i()(o,"blockspare-design-control-wrapper components-base-control")},wp.element.createElement("div",{className:"components-base-control__label"},e.label),wp.element.createElement(En,Mn({},kn()(e,["label"]),{className:"blockspare-design-control",selected:t,options:s,onChange:r})))};function xn(){return(xn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}const Cn=wp.i18n.__,Dn=wp.components.BaseControl,On=wp.hooks.applyFilters,Yn={"double-wave":{image:"images/double-wave.png",label:Cn("Double Wave","blockspare"),value:"double-wave"},wavy:{image:"images/wavy.png",label:Cn("Wavy","blockspare"),value:"wavy"},sloped:{image:"images/sloped.png",label:Cn("Sloped","blockspare"),value:"sloped"},grow:{image:"images/grow.png",label:Cn("Grow","blockspare"),value:"grow"},angled:{image:"images/angled.png",label:Cn("Angled","blockspare"),value:"angled"}},jn=e=>{const t=Object.keys(Yn).filter(t=>!e.excludeDesigns.includes(t)).map(e=>Yn[e]);return wp.element.createElement(Dn,{className:"blockspare-design-separator-control",id:"blockspare-design-separator-control",label:e.label,help:e.help},wp.element.createElement(Sn,xn({options:On("blockspare.separator.edit.layouts",t,e)},kn()(e,["label","help"]))))};jn.defaultProps={label:"",help:"",excludeDesigns:[]};var Pn=jn;function Nn(){return(Nn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}const Bn=wp.i18n.__,An="blockspare".i18n,Hn=wp.components.PanelBody;var zn=function(e){const t=e.options,n=e.selected,r=e.title,a=void 0===r?Bn("Layout",An):r,o=e.selectedOptionInTitle,s=void 0===o||o,l=e.help,c=void 0===l?"":l,u=e.className,d=void 0===u?"":u,p=e.initialOpen,m=void 0===p||p,f=t?t.find(e=>e.value===n):null,h=f?`${a} – ${f.label}`:a,b=i()(["blockspare-design-panel-body",d]);return wp.element.createElement(Hn,Nn({title:s?wp.element.createElement("span",null,h):a,className:b,initialOpen:m},kn()(e,["help"])),c&&wp.element.createElement("p",{className:"components-base-control__help"},c),t&&wp.element.createElement(Sn,kn()(e,["help","title"])),e.children)};const In=wp.i18n.__,Fn=wp.element.Component,Rn=wp.hooks.applyFilters,Wn=wp.blockEditor,Un=Wn.InspectorControls,qn=Wn.MediaUpload,Gn=Wn.PanelColorSettings,Vn=wp.components,$n=Vn.ToggleControl,Jn=Vn.PanelBody,Xn=Vn.SelectControl,Qn=Vn.IconButton;Vn.RangeControl;class Kn extends Fn{render(){const e=[{value:"",label:In("Default","blockspare")},{value:"blockspare-style1",label:In("Style 1","blockspare")},{value:"blockspare-style2",label:In("Style 2","blockspare")}],t=this.props,n=t.attributes,r=n.backGroundColor,a=n.imageShape,o=n.descriptionColor,i=n.imgID,s=n.imgURL,l=n.imgAlt,c=n.showContentImg,u=n.buttonBackgroundColor,d=n.buttonTextColor,p=n.buttonSize,m=n.buttonShape,f=n.buttonTarget,h=n.buttonStyle,b=n.borderColor,g=n.borderBtnTextColor,_=n.showButton,y=n.marginTop,k=n.marginBottom,w=n.layoutOption,v=n.titleFontSize,M=n.subtitleFontSize,L=n.headerboxColor,T=n.headertitleColor,E=n.headersubtitleColor,S=n.headerlayoutOption,x=n.titlePaddingTop,C=n.titlePaddingBottom,D=n.subtitlePaddingTop,O=n.subtitlePaddingBottom,Y=n.dashColor,j=n.design,P=void 0===j?"style-1":j,N=n.enableGradient,B=n.backgroundColor1,A=n.backgroundColor2,H=n.gradientAngle,z=n.colorLocation1,I=n.colorLocation2,F=(n.enableBoxShadow,n.xOffset,n.yOffset,n.blur,n.spread,n.shadowColor,n.borderRadius,n.btnFontWeight),R=n.btnBorderWidth,W=t.setAttributes,U=()=>{W({imgID:null,imgURL:null,imgAlt:null})};return wp.element.createElement(Un,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(zn,{initialOpen:!1,selected:P,options:Rn("blockspare.cta.edit.layouts",[{label:In("Layout 1","blockspare"),value:"style-1",image:"images/style-1.png"},{label:In("Layout 2","blockspare"),value:"style-2",image:"images/style-2.png"},{label:In("Layout 3","blockspare"),value:"style-3",image:"images/style-3.png"}]),onChange:e=>W({design:e})}),wp.element.createElement(Jn,{title:In("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement($n,{label:In("Display Button","blockspare"),checked:_,onChange:()=>this.props.setAttributes({showButton:!_})}),wp.element.createElement($n,{label:In("Reverse","blockspare"),checked:w,onChange:()=>this.props.setAttributes({layoutOption:!w})}),c&&wp.element.createElement(qn,{onSelect:e=>{W({imgID:e.id,imgURL:e.url,imgAlt:e.alt})},type:"image",value:i,render:({open:e})=>wp.element.createElement("div",null,wp.element.createElement(Qn,{className:"aft-cta-inspector-media",label:In("Edit image","blockspare"),icon:"format-image",onClick:e},In("Select Image","blockspare")),s&&!!s.length&&wp.element.createElement(Qn,{className:"blockspare-cta-inspector-media",label:In("Remove Image","blockspare"),icon:"dismiss",onClick:U},In("Remove","blockspare")))}),s&&!!s.length&&wp.element.createElement("div",null,wp.element.createElement("img",{src:s,width:"100px",height:"100px",alt:l})),s&&!!s.length&&wp.element.createElement(Xn,{label:In("Choose Image Shape","blockspare"),options:e,value:a,onChange:e=>this.props.setAttributes({imageShape:e})}),"style-3"!=P&&wp.element.createElement(Gn,{title:In("Background Color","blockspare"),initialOpen:!1,colorSettings:[{value:r,onChange:e=>W({backGroundColor:e}),label:In("Background Color","blockspare")}]})),wp.element.createElement(Jn,{title:In("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(bt,{enableBlockGaps:!1,titleFontSize:v,onChangetitleFontSize:e=>W({titleFontSize:e}),subtitleFontSize:M,onChangesubtitleFontSize:e=>W({subtitleFontSize:e}),headerlayoutOption:S,onChangeHeaderStyle:e=>W({headerlayoutOption:e}),headerboxColor:L,onChangeboxcolor:e=>W({headerboxColor:e}),dashColor:Y,onChangeDashColor:e=>W({dashColor:e}),headertitleColor:T,onChangetitlecolor:e=>W({headertitleColor:e}),titlePaddingTop:x,onChangetitlePaddingTop:e=>W({titlePaddingTop:e}),titlePaddingBottom:C,onChangetitlePaddingBottom:e=>W({titlePaddingBottom:e}),headersubtitleColor:E,onChangesubtitlecolor:e=>W({headersubtitleColor:e}),subtitlePaddingTop:D,onChangesubtitlePaddingTop:e=>W({subtitlePaddingTop:e}),subtitlePaddingBottom:O,onChangesubtitlePaddingBottom:e=>W({subtitlePaddingBottom:e})})),wp.element.createElement(Jn,{title:In("Color Settings","blockspare"),initialOpen:!1},wp.element.createElement(Gn,{title:In("Description Color","blockspare"),initialOpen:!1,colorSettings:[{value:o,onChange:e=>W({descriptionColor:e}),label:In("Description Color","blockspare")}]})),_&&wp.element.createElement(Jn,{title:In("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Le,{enableButtonTarget:!1,buttonTarget:f,onChangeButtonTarget:e=>W({buttonTarget:!f}),enableGradient:N,onChangeGradient:e=>W({enableGradient:e}),enableButtonSize:!0,buttonSize:p,onChangeButtonSize:e=>W({buttonSize:e}),enableButtonShape:!0,buttonShape:m,onChangeButtonShape:e=>W({buttonShape:e}),buttonBackgroundColor:u,onChangeButtonColor:e=>W({buttonBackgroundColor:e}),buttonTextColor:d,onChangeButtonTextColor:e=>W({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:h,onChangeBorderStyle:e=>W({buttonStyle:e}),borderColor:b,onchangeBorderColor:e=>W({borderColor:e}),borderBtnTextColor:g,onChangeBorderBtnTextColor:e=>W({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:R,onchangebtnBorderWidth:e=>W({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:F,onchangeBtnFontWeight:e=>W({btnFontWeight:e})}),"none"===h&&wp.element.createElement($n,{label:In("Enable Gradient","blockspare"),checked:N,onChange:()=>this.props.setAttributes({enableGradient:!N})}),N&&"none"===h&&_&&wp.element.createElement(Jn,{title:In("Gradient Option","blockspare"),initialOpen:!0},wp.element.createElement(Ce,{backgroundColor1:B,onChangeBackgroundColor1:e=>W({backgroundColor1:e}),backgroundColor2:A,onChangeBackgroundColor2:e=>W({backgroundColor2:e}),gradientAngle:H,onChangeGradientAngle:e=>W({gradientAngle:e}),colorLocation1:z,onChangeColorLocation1:e=>W({colorLocation1:e}),colorLocation2:I,onChangeColorLocation2:e=>W({colorLocation2:e})}))),wp.element.createElement(Jn,{title:In("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:y,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>W({marginTop:e}),marginEnableBottom:!0,marginBottom:k,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>W({marginBottom:e})}))))}}function Zn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function er(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zn(Object(n),!0).forEach((function(t){tr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function tr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const nr=blockspare_globals,rr=wp.element,ar=rr.Component,or=rr.Fragment,ir=wp.i18n.__,sr=wp.blockEditor,lr=sr.BlockControls,cr=sr.RichText,ur=sr.URLInput,dr=sr.AlignmentToolbar,pr=wp.components,mr=pr.IconButton,fr=pr.Dashicon;var hr=n(41);function br(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function gr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?br(Object(n),!0).forEach((function(t){_r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):br(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function _r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const yr=wp.blocks.registerBlockType,kr=wp.i18n.__,wr=wp.blockEditor.RichText,vr=blockspare_globals,Mr=hr.name,Lr=hr.category,Tr=gr({},Rt,{},Ft,{},hr.attributes,{},Vt,{},He);yr(Mr,{title:kr("BS Content Box","blockspare"),description:kr("You can create a variety of layouts using this block.","blockspare"),category:Lr,icon:a.contentbox,attributes:Tr,keywords:[kr("block","blockspare"),kr("container","blockspare"),kr("content","blockspare"),kr("box","blockspare")],supports:{html:!1,className:!1,align:["center","wide","full"]},example:{attributes:{design:"style-1"}},edit:class extends ar{render(){const e=this.props,t=e.attributes,n=t.align,r=t.sectionAlignment,a=(t.backGroundColor,t.descriptionColor),o=t.sectionDescription,s=t.buttonText,l=t.buttonUrl,c=t.showButton,u=t.buttonSize,d=t.buttonShape,p=t.buttonAlignment,m=t.showContentImg,f=t.imgURL,h=t.imgAlt,b=t.imageShape,g=t.layoutOption,_=t.headerTagOption,y=t.headerTitle,k=t.headerSubTitle,w=t.design,v=(t.borderRadius,t.enableBackgroundColor,e.className,e.attributes),M=e.setAttributes,L=e.isSelected,T=er({},Ot(v)),E=er({},Ae(v)),S=er({},Ut(v)),x=er({},qt(v)),C=er({},Gt(v));let D=nr.img;return f&&f.length&&(D=f),wp.element.createElement(or,null,wp.element.createElement(Kn,er({setAttributes:M},this.props)),wp.element.createElement(lr,null,wp.element.createElement(dr,{value:r,onChange:e=>{M({sectionAlignment:e})}})),wp.element.createElement("div",{className:i()("blockspare-content-wrapper blockspare-blocks","align"+n,1==g?"reverse-img":"","style-3"!=w?"has-background":"",w),style:T},m&&f&&wp.element.createElement("div",{className:"content-img-wrap"},wp.element.createElement("img",{src:D,alt:h,className:b})),!f&&wp.element.createElement("div",{className:"empty-plcaeholder-div"}),wp.element.createElement("div",{className:"blockspare-section-wrapper",style:er({},_n(v))},wp.element.createElement("div",{className:"blockspare-section-head-wrap"},wp.element.createElement("div",{className:"blockspare-title-subtitle-wrap"},wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:S}),wp.element.createElement(cr,{tagName:_,placeholder:ir("Title","blockspare"),keepPlaceholderOnFocus:!0,value:y,className:"blockspare-title",style:x,onChange:e=>M({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:S})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:S}),wp.element.createElement(cr,{tagName:"p",placeholder:ir("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:k,className:"blockspare-subtitle",style:C,onChange:e=>M({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:S}))))),wp.element.createElement("div",{className:"blockspare-desc-btn-wrap"},wp.element.createElement(cr,{tagName:"p",placeholder:ir("Description","blockspare"),keepPlaceholderOnFocus:!0,value:o,className:"blockspare-description",style:{color:a},onChange:e=>M({sectionDescription:e})}),c&&wp.element.createElement(be,this.props,wp.element.createElement(cr,{tagName:"span",placeholder:ir("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:s,allowedFormats:[],className:i()("blockspare-button",d,u),style:E,onChange:e=>M({buttonText:e})})),L&&c&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${p}`,onSubmit:e=>e.preventDefault()},wp.element.createElement(fr,{icon:"admin-links"}),wp.element.createElement(ur,{className:"button-url",value:l,onChange:e=>M({buttonUrl:e})}),wp.element.createElement(mr,{icon:"editor-break",label:ir("Apply","blockspare"),type:"submit"}))))))}},save:function(e){const t=e.attributes,n=t.align,r=t.sectionAlignment,a=t.descriptionColor,o=t.sectionDescription,s=t.buttonText,l=t.buttonUrl,c=t.showButton,u=t.buttonSize,d=t.buttonShape,p=t.buttonTarget,m=t.showContentImg,f=t.imgURL,h=t.imgAlt,b=t.imageShape,g=t.layoutOption,_=t.headerTitle,y=t.headerSubTitle,k=t.dashColor,w=t.headerlayoutOption,v=t.headerTagOption,M=(t.backGroundColor,t.design),L=(t.borderRadius,t.enableBackgroundColor,gr({},Ot(e.attributes))),T={borderColor:k},E=gr({},Ae(e.attributes)),S=gr({},Ut(e.attributes)),x=gr({},qt(e.attributes)),C=gr({},Gt(e.attributes));let D=vr.img;return f&&f.length&&(D=f),wp.element.createElement("div",{className:i()("blockspare-content-wrapper blockspare-blocks","align"+n,1==g?"reverse-img":"","style-3"!=M?"has-background":"",M),style:L},m&&f&&wp.element.createElement("div",{className:"content-img-wrap"},wp.element.createElement("img",{src:D,alt:h,className:b})),!f&&wp.element.createElement("div",{className:"empty-plcaeholder-div"}),wp.element.createElement("div",{className:"blockspare-section-wrapper",style:gr({},_n(e.attributes))},wp.element.createElement("div",{className:i()("blockspare-section-header-wrapper"),style:T},wp.element.createElement("div",{className:i()("blockspare-section-head-wrap",w,"blockspare-"+r)},wp.element.createElement("div",{className:"blockspare-title-subtitle-wrap"},wp.element.createElement(It,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:S}),_&&wp.element.createElement(wr.Content,{tagName:v,className:"blockspare-title",style:x,value:_}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:S})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:S}),y&&wp.element.createElement(wr.Content,{tagName:"p",className:"blockspare-subtitle",style:C,value:y}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:S}))))),wp.element.createElement("div",{className:"blockspare-desc-btn-wrap"},wp.element.createElement(wr.Content,{tagName:"p",style:{color:a},value:o}),c&&wp.element.createElement(be,e,s&&wp.element.createElement("a",{href:l,target:p?"_blank":null,rel:p?"noopener noreferrer":null,className:i()("blockspare-button",d,u),style:E},wp.element.createElement(wr.Content,{value:s})))))))}});n(437),n(438);var Er=n(42);var Sr={align:{type:"string",default:"full"},design:{type:"string",default:"double-wave"},layer1Shadow:{type:"boolean",default:!1},width:{type:"number",default:1},height:{type:"number",default:150},color:{type:"string",default:"#3c1a5b"}};var xr=e=>{let t="";if(1==e.enableGradient){const n=e.gradientAngle+"deg",r=e.colorLocation1+"%",a=e.colorLocation2+"%";t={backgroundImage:`linear-gradient(${n},${e.backgroundColor1?e.backgroundColor1:"#3B1A5B"} ${r},${e.backgroundColor2?e.backgroundColor2:"#8B249C"} ${a})`}}else t={backgroundColor:e.backGroundColor?e.backGroundColor:"#fff"};return t};var Cr={enableGradient:{type:"boolean",default:!1},backgroundColor1:{type:"string",default:"#3B1A5B"},backgroundColor2:{type:"string",default:"#8B249C"},gradientAngle:{type:"number",default:-90},colorLocation1:{type:"number",default:30},colorLocation2:{type:"number",default:70}};const Dr=wp.i18n.__,Or=wp.element.Component,Yr=wp.blockEditor,jr=Yr.InspectorControls,Pr=(Yr.MediaUpload,Yr.PanelColorSettings),Nr=wp.components,Br=(Nr.RangeControl,Nr.PanelBody);Nr.IconButton,Nr.ToggleControl,Nr.SelectControl;class Ar extends Or{render(){const e=this.props.attributes,t=(e.opacityRatio,e.backGroundColor),n=(e.imgURL,e.imgID,e.imgAlt,e.paddingTop),r=e.paddingRight,a=e.paddingBottom,o=e.paddingLeft,i=e.marginTop,s=e.marginBottom,l=(e.backgroundFix,e.separatorEnable,e.design,e.width,e.height,e.color,e.showFront,e.zindexDivider,e.dividerPosition,e.topDividerMargin,e.bottomDividerMargin,e.enableGradient,e.backgroundColor1,e.backgroundColor2,e.gradientAngle,e.colorLocation1,e.colorLocation2,e.borderRadius,e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.enableGap,this.props.setAttributes);Dr("Top","blockspare"),Dr("Bottom","blockspare");return wp.element.createElement(jr,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Br,{title:Dr("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(Pr,{title:Dr("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:t,onChange:e=>l({backGroundColor:e}),label:Dr("Background Color","blockspare")}]})),wp.element.createElement(Br,{title:Dr("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(Br,{title:Dr("Padding Settings","blockspare"),initialOpen:!0},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:n,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>l({paddingTop:e}),paddingEnableRight:!0,paddingRight:r,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>l({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:a,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>l({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:o,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>l({paddingLeft:e})})),wp.element.createElement(Br,{title:Dr("Margin Settings","blockspare"),initialOpen:!0},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:i,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>l({marginTop:e}),marginEnableBottom:!0,marginBottom:s,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>l({marginBottom:e})})))))}}n(439);var Hr=n(2),zr=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{className:"st0",d:"M-.5 27.7v146.8h1946V10.7s-170.6 20.4-265 57.2c0 0-374.1 116.7-794.2 24.7 0 0-414.1-100.9-673.1-92-.1 0-102.9 5.2-213.7 27.1z"}),wp.element.createElement("path",{className:"st1",d:"M1945.5 69.9s-425.5-100-888 20.5c0 0-342.6 63.3-611.4 43.8 0 0-224.9-40.3-446.6-84.4V174h1946V69.9z"}),wp.element.createElement("path",{d:"M-.5 88s425.5-100 888 20.5c0 0 342.6 63.3 611.4 43.8 0 0 224.9-20.2 446.6-64.3v87H-.5V88z"}))};zr.defaultProps={className:"divider--doublewave",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1946 175",preserveAspectRatio:"none"};var Ir=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{className:"st1",d:"M-.5 0l958.8 69.3L1917 0v77H-.5z"}),wp.element.createElement("path",{className:"st2",d:"M-.5 24.5l958.8 46.3L1917 24.5V77H-.5z"}),wp.element.createElement("path",{className:"st3",d:"M-.5 49.1l958.8 23.1L1917 49.1V77H-.5z"}),wp.element.createElement("path",{d:"M-.5 77H1917v28H-.5z"}))};Ir.defaultProps={className:"divider--fan",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1917 105",preserveAspectRatio:"none"};var Fr=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M42.19 9.35c2.26.25 5.15-.04 7.55-.53 2.36-.49 7.09-2.35 10.05-3.57C67.37 2.03 73.16.8 79.05.28c2.36-.21 4.87-.35 10.34.25s10.62 2.56 10.62 2.56V10H0V6.97s7.2-3.26 15.84-3.05c3.92.07 9.28.67 13.4 2.24 2.12.81 5.22 1.82 7.97 2.42 2.72.63 3.95.67 4.98.77z"}))};Fr.defaultProps={className:"divider--wavy",viewBox:"0 0 100 10",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"none"};var Rr=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M1000 299l2-279C847-16 692 155 587 184c-102.64 28.35-149-32-232-31-80 1-142 53-229 80-65.54 20.34-101 15-126 11.61V299z"}),wp.element.createElement("path",{d:"M1000 286l2-252C845-9 700 178 597 212c-101.11 33.38-159-47-242-46-80 1-145.09 54.07-229 87-65.21 25.59-104.07 16.72-126 10.61V286z"}),wp.element.createElement("path",{d:"M1000 300l1-230.29C784 57 700.53 198.86 597 226c-103 27-174-30-257-29-80 1-130.09 37.07-214 70-61.23 24-108 15.61-126 10.61V300z"}))};Rr.defaultProps={className:"divider--waves",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1000 300",preserveAspectRatio:"none"};var Wr=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M0 100C20 0 50 0 100 100z"}))};Wr.defaultProps={className:"divider--sloped",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",preserveAspectRatio:"none"};var Ur=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{className:"st1",d:"M0 108.1h630V0S475 104.6 314 104.6 0 0 0 0z"}),wp.element.createElement("path",{className:"st2",d:"M0 106.9h630V17.8s-155 87.9-316 87.9S0 19 0 19z"}),wp.element.createElement("path",{d:"M0 120h630V45.1s-155 61.8-316 61.8S0 45.1 0 45.1z"}))};Ur.defaultProps={className:"divider--curve",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 630 120",preserveAspectRatio:"none"};var qr=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M-53.5 413H-337v-10.8s6.5 1.6 16.8.5c4.8-.6 10.1-2.5 15.8-3.7 5.7-1.2 10.5-1.5 12-1.6 5.9-.2 11 .5 14.2.9 7.6.9 13.2 3.5 17 4.7 3.9 1.2 9.1 1.9 10.5 2 13.2.8 45.3-15.5 63-15.8 16.6-.3 30 6.1 36.6 9.3 5.9 2.8 6.4 3 18 7.4s33.4-3.7 44.7-5.7c8.3-1.5 14.1-1.8 20.9-1.5 6.7.3 14 4.6 14 4.6v9.7zm-26.8-11.7c-2.9.4-5.7 1.8-6 1.9s3.5-1.1 5.8-1.1 3.6.6 4.3-.4c.6-1-1.1-.9-4.1-.4zm-20.1 3.6c-3.1.5-9.1 2-12.4 2.7-8 1.7-16.8 1-17.6 1.1-.7.1 6.9 1.2 15.1.1 4.8-.7 11.9-2.7 15.1-3.5 3.2-.7 5.6-.9 5.6-.9s-2.5-.1-5.8.5zm-69.9-7.4c-2.4-.5-2.2-.8-7.6-1.6-5.4-.8-11.2-.2-11.2 0-.1.1 4.9.1 8.8.5 3.8.4 7.9 1.4 10 2 5.2 1.4 20.2 6.8 18.5 6.1-1.7-.7-14.7-6.2-18.5-7zm27.3 6.8c-3.1-1.2-6.8-3.1-6.6-3 .2.2 2.9 2.2 6.9 3.7s5 1.1 4.8 1.1c-.1 0-2.1-.6-5.1-1.8zm84.9 0c-3.9-1.9-7.2-2.5-7.4-2.5-.2-.1 3.8 1.3 6.7 2.7 2.9 1.4 4.7 2.4 4.8 2.5.1.1-.2-.8-4.1-2.7zm-253-2.2c-3.3 1.1-3.5 1.1-5.7 1.6-4.3 1-12.2.6-12.5.7-.4.1 7.3 1 11.3.2 2.4-.4 5.2-1 7.8-2 2.6-1 4.6-1 4.5-1.2-.1-.3-2.1-.4-5.4.7zm58.2 5.4c5.2.6 6.2 0 6.2-.3s-4 .3-8.9-.8c-4.9-1-8-2.5-8.4-2.6s5.9 3.1 11.1 3.7zm-7.6.9c1.6.4 2.7.3 2.7.2s.4-.3-1.9-.6c-2.3-.4-5.5-1.8-5.7-1.7-.2.1 3.2 1.6 4.9 2.1zm22.2-.8c1.6-.5 2.5-1.2 2.4-1.3-.1-.1.2-.5-1.9.5s-5.5 1.6-5.6 1.8c-.1.2 3.5-.4 5.1-1zm-31.7-5.1c1.6.4 2.1.7 2.5.8s-.6-.5-2.2-1.2-2-.5-1.9-.2c.1.3-.1.2 1.6.6zm-28.8-2.2c1.5.1 1.6-.1 1.6-.4 0-.3-.8-.3-2-.2-1.2.1-3.5.9-3.3.9s2.1-.4 3.7-.3zm105.8-8.7c-6.5.2-20.1 5.2-16.5 4.1 3.6-1.1 12.2-3.5 17.2-3.5 5.1 0 7.4-.4 7.5-.3.1.1-1.7-.5-8.2-.3z"}),wp.element.createElement("path",{d:"M-74.2 394.6c-3.3.2-16.6 3-17 3.3-.4.3 9.3-2.2 16.6-2.9 2.6-.3 7.1.1 7.2 0 .1 0-1.9-.8-6.8-.4zM-118.1 405.1c-7.4.6-13-1.1-13.3-1.2-.4-.1 7.3.7 12.3.5 5-.2 9.3-1.1 9.5-1.2.2-.1-1.1 1.3-8.5 1.9zM-128.9 400c1.5-.1 1.6.1 1.6.4 0 .3-.8.4-2 .3s-3.3-1-3.2-1.1 1.9.5 3.6.4zM-142.1 399.7c-2.1-1-6.2-2.7-6.3-2.6-.1 0 4.2 2.2 6.1 3.1 1.9 1 6.3 2.3 6.3 2.2 0-.1-4-1.7-6.1-2.7zM-189.3 385.9c-3.3.2-16.6 3-17 3.3s9.3-2.2 16.6-2.9c2.6-.3 7.1.1 7.2 0s-1.9-.8-6.8-.4zM-292.3 394.2c1.6.1 4.9-.3 6.7-.4 4.3-.3 8.2 1.9 8.6 1.9.4.1-2.8-2.2-7-2.6-2.4-.2-6.5.5-8.2.7-1.7.2-2.9-.1-2.9-.1s1.2.4 2.8.5zM-258.5 402c1.6.4 3.4.1 3.4 0 0-.2.2-.3-2.1-.5-2.3-.3-4.1-1.2-4.3-1.1-.2.1 1.4 1.1 3 1.6zM-314.8 398.7c2.4-.6 5.1-1.5 5.1-1.4s-2.6 1.5-5 2-6.7.6-6.7.5c.1-.1 4.3-.5 6.6-1.1z"}))};qr.defaultProps={className:"divider--shapeocean",xmlns:"http://www.w3.org/2000/svg",viewBox:"-337 385.2 283.5 27.8",preserveAspectRatio:"none"};var Gr=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{className:"st1",d:"M261.2 64.9C367.6 54.7 499.6 39.7 630 18.5V0C497.8 31.4 363.7 52 261.2 64.9z"}),wp.element.createElement("path",{className:"st2",d:"M261.2 64.9c-41 3.9-78.2 7.1-110 9.6 13.2-.4 27-.9 41.5-1.6C315 67.7 478.4 59.4 630 34.8V18.5C499.1 39.8 367.3 54.8 261.2 64.9z"}),wp.element.createElement("path",{d:"M192.7 72.9c-14.5.7-28.3 1.2-41.5 1.6C59.9 77.7 0 77.4 0 77.4V80h630V33.8C478.4 58.4 315 67.7 192.7 72.9z"}))};Gr.defaultProps={className:"divider--grow",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 630 80",preserveAspectRatio:"none"};var Vr=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M630 36.9a34.6 34.6 0 0 0-16.5-4.2c-17.2 0-31.8 12.7-36.7 30.3a21.2 21.2 0 0 0-9.3-2.2 21.8 21.8 0 0 0-13.9 5.1 38.7 38.7 0 0 0-40.4-4.8c-5.2-7.7-13.4-12.6-22.7-12.6a25.7 25.7 0 0 0-8.7 1.5C472.9 27.8 453 12.4 430 12.4s-42.7 15.3-51.7 37.2c-7.2-10.9-18.8-18.1-31.8-18.1a37 37 0 0 0-24 9.2c-6-10.3-16.3-17-28-17-13.8 0-25.6 9.3-30.7 22.7a26.5 26.5 0 0 0-19.8-9.2 22 22 0 0 0-5.8.7c-4-11.6-14-19.9-25.7-19.9a24.7 24.7 0 0 0-9.4 1.9C189.2 7.4 171.6 0 152.5 0 124.6 0 100 15.8 85.3 39.9A27.6 27.6 0 0 0 63 28.2a23.9 23.9 0 0 0-7.1 1C47.2 13 31.5 2.3 13.5 2.3A43.3 43.3 0 0 0 0 4.4V80h630z"}))};Vr.defaultProps={className:"divider--clouds",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 630 80",preserveAspectRatio:"none"};var $r=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M0 100L100 0v100z"}))};$r.defaultProps={className:"divider--angled",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",preserveAspectRatio:"none"};const Jr={wavy:Fr,waves:Rr,"double-wave":zr,fan:Ir,sloped:Wr,curve:Ur,shapeocean:qr,grow:Gr,clouds:Vr,angled:$r},Xr=e=>{const t=Jr[e.design],n=i()([e.className,"blockspare-separator-wrapper"]);return wp.element.createElement("div",{className:n},wp.element.createElement(t,{className:e.design,preserveAspectRatio:"none","aria-hidden":"true"}),e.children)};Xr.defaultProps={className:"",design:"double-wave",shadow:!1},Xr.Save=e=>wp.element.createElement(Xr,e);var Qr=Xr;const Kr=wp.i18n.__,Zr=wp.element,ea=Zr.Component,ta=Zr.Fragment,na=wp.blockEditor,ra=na.BlockControls,aa=(na.BlockAlignmentToolbar,wp.components.Toolbar);var oa=class extends ea{render(){const e=this.props,t=e.attributes,n=e.setAttributes,r=(t.horizontalFlip,t.verticalFlip),o=[{icon:a.flipY,title:Kr("Flip horiztonally","blockspare"),isActive:!!r,onClick:()=>n({verticalFlip:!r})}];return wp.element.createElement(ta,null,wp.element.createElement(ra,null,wp.element.createElement(aa,{controls:o})))}};function ia(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function sa(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ia(Object(n),!0).forEach((function(t){la(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ia(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function la(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ca=wp.element,ua=ca.Component,da=ca.Fragment,pa=wp.blockEditor.InnerBlocks;function ma(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function fa(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ma(Object(n),!0).forEach((function(t){ha(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ma(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ha(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ba=wp.blockEditor.InnerBlocks,ga=wp.i18n.__,_a=wp.blocks,ya=_a.registerBlockType,ka=_a.createBlock,wa=Er.name,va=Er.category,Ma=fa({},Er.attributes,{},Cr,{},Rt,{},Sr,{},Vt);ya(wa,{title:ga("BS Container","blockspare"),description:ga("BS add container","blockspare"),category:va,icon:a.container,attributes:Ma,keywords:[ga("block","blockspare"),ga("container","blockspare"),ga("group","blockspare")],supports:{align:["center","wide","full"]},example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},edit:class extends ua{render(){const e=this.props,t=e.className,n=e.attributes,r=n.align,a=n.opacityRatio,o=n.imgURL,s=n.backgroundFix,l=n.verticalFlip,c=n.horizontalFlip,u=n.separatorEnable,d=n.design,p=n.height,m=n.color,f=n.width,h=n.showFront,b=n.zindexDivider,g=n.dividerPosition,_=n.topDividerMargin,y=n.bottomDividerMargin,k=n.borderRadius,w=n.enableGap,v=e.attributes,M=e.setAttributes,L=e.isSelected,T=sa({},Dt(v),{},xr(v),{},Ot(v),{borderRadius:k||null});let E="";o&&(E="url("+o+")");let S=i()("blockspare-blocks blockspare-svg-wrapper",function(e){return"has-width-"+e.toString().replace(".","-")}(f),t,{"is-vertically-flipped":l,"is-horizontally-flipped":c}),x="";return u&&(x="has-separator-top"===g?{top:_+"px",zIndex:h?b:""}:"has-separator-bottom"===g?{bottom:y+"px",zIndex:h?b:""}:""),wp.element.createElement(da,null,wp.element.createElement(Ar,sa({setAttributes:M},this.props)),L&&u&&wp.element.createElement(oa,this.props),wp.element.createElement("div",{className:i()("blockspare-block-container-wrapper","align"+r,w?"has-gap-enable":"",o&&o.length&&s?"blockspare-background-fix":"",u?g:""),style:T},wp.element.createElement("div",{className:i()("blockspare-container-background","blockspare-image-wrap",(C=a,0===C?null:"has-background-opacity-"+10*Math.round(C/10)),{"has-background-opacity":0!==a}),style:{backgroundImage:E}}),u&&wp.element.createElement("div",{className:i()("blockspare-top-separator",h?"blockspare-svg-show-front":""),style:x},wp.element.createElement("div",{className:S,style:{color:m||"#3c1a5b",height:p}},wp.element.createElement(Qr,{design:d,shadow:!1,className:"blockspare-svg-svg-inner"}))),wp.element.createElement("div",{className:"blockspare-container"},wp.element.createElement("div",{className:"blockspare-inner-blocks"},wp.element.createElement(pa,{templateLock:!1,renderAppender:()=>this.props.hasInnerBlocks?wp.element.createElement(pa.DefaultBlockAppender,null):wp.element.createElement(pa.ButtonBlockAppender,null)})))));var C}},save:function(e){const t=e.attributes,n=t.className,r=t.align,a=t.opacityRatio,o=t.imgURL,s=t.backgroundFix,l=t.verticalFlip,c=t.horizontalFlip,u=t.separatorEnable,d=t.design,p=t.height,m=t.color,f=t.width,h=t.showFront,b=t.zindexDivider,g=t.dividerPosition,_=t.topDividerMargin,y=t.bottomDividerMargin,k=t.borderRadius,w=t.enableGap,v=fa({},xr(e.attributes),{},Dt(e.attributes),{minHeight:"100px"},Ot(e.attributes),{borderRadius:k||null});let M="";u&&(M="has-separator-top"===g?{top:_+"px",zIndex:h?b:""}:"has-separator-bottom"===g?{bottom:y+"px",zIndex:h?b:""}:"");let L="";o&&(L="url("+o+")");let T=i()("blockspare-blocks blockspare-svg-wrapper",function(e){return"has-width-"+e.toString().replace(".","-")}(f),n,{"is-vertically-flipped":l,"is-horizontally-flipped":c});return wp.element.createElement("div",{className:i()("blockspare-block-container-wrapper",w?"has-gap-enable":"","align"+r,o&&o.length&&s?"blockspare-background-fix":"",u?g:""),style:v},wp.element.createElement("div",{className:i()("blockspare-container-background","blockspare-image-wrap",(E=a,0===E?null:"has-background-opacity-"+10*Math.round(E/10)),{"has-background-opacity":0!==a}),style:{backgroundImage:L}}),u&&wp.element.createElement("div",{className:i()("blockspare-top-separator",w?"has-gap-enable":"",h?"blockspare-svg-show-front":""),style:M},wp.element.createElement("div",{className:T,style:{color:m||"#3c1a5b",height:p}},wp.element.createElement(Qr,{design:d,shadow:!1,className:"blockspare-svg-svg-inner"}))),wp.element.createElement("div",{className:"blockspare-container"},wp.element.createElement("div",{className:"blockspare-inner-blocks blockspare-inner-wrapper-blocks"},wp.element.createElement(ba.Content,null))));var E},transforms:{from:[{type:"block",isMultiBlock:!0,blocks:["*"],__experimentalConvert(e){if(1===e.length&&"blockspare/blockspare-container"===e[0].name)return;const t=["wide","full"],n=e.reduce((e,n)=>{const r=n.attributes.align;return t.indexOf(r)>t.indexOf(e)?r:e},void 0),r=e.map(e=>ka(e.name,e.attributes,e.innerBlocks));return ka("blockspare/blockspare-container",{align:n},r)}}]}});var La=n(43),Ta=(n(440),n(441),n(442),["fas fa-ad","fas fa-address-book","fas fa-address-card","fas fa-adjust","fas fa-air-freshener","fas fa-align-center","fas fa-align-justify","fas fa-align-left","fas fa-align-right","fas fa-allergies","fas fa-ambulance","fas fa-american-sign-language-interpreting","fas fa-anchor","fas fa-angle-double-down","fas fa-angle-double-left","fas fa-angle-double-right","fas fa-angle-double-up","fas fa-angle-down","fas fa-angle-left","fas fa-angle-right","fas fa-angle-up","fas fa-angry","fas fa-ankh","fas fa-apple-alt","fas fa-archive","fas fa-archway","fas fa-arrow-alt-circle-down","fas fa-arrow-alt-circle-left","fas fa-arrow-alt-circle-right","fas fa-arrow-alt-circle-up","fas fa-arrow-circle-down","fas fa-arrow-circle-left","fas fa-arrow-circle-right","fas fa-arrow-circle-up","fas fa-arrow-down","fas fa-arrow-left","fas fa-arrow-right","fas fa-arrow-up","fas fa-arrows-alt","fas fa-arrows-alt-h","fas fa-arrows-alt-v","fas fa-assistive-listening-systems","fas fa-asterisk","fas fa-at","fas fa-atlas","fas fa-atom","fas fa-audio-description","fas fa-award","fas fa-baby","fas fa-baby-carriage","fas fa-backspace","fas fa-backward","fas fa-balance-scale","fas fa-ban","fas fa-band-aid","fas fa-barcode","fas fa-bars","fas fa-baseball-ball","fas fa-basketball-ball","fas fa-bath","fas fa-battery-empty","fas fa-battery-full","fas fa-battery-half","fas fa-battery-quarter","fas fa-battery-three-quarters","fas fa-bed","fas fa-beer","fas fa-bell","fas fa-bell-slash","fas fa-bezier-curve","fas fa-bible","fas fa-bicycle","fas fa-binoculars","fas fa-biohazard","fas fa-birthday-cake","fas fa-blender","fas fa-blender-phone","fas fa-blind","fas fa-blog","fas fa-bold","fas fa-bolt","fas fa-bomb","fas fa-bone","fas fa-bong","fas fa-book","fas fa-book-dead","fas fa-book-open","fas fa-book-reader","fas fa-bookmark","fas fa-bowling-ball","fas fa-box","fas fa-box-open","fas fa-boxes","fas fa-braille","fas fa-brain","fas fa-briefcase","fas fa-briefcase-medical","fas fa-broadcast-tower","fas fa-broom","fas fa-brush","fas fa-bug","fas fa-building","fas fa-bullhorn","fas fa-bullseye","fas fa-burn","fas fa-bus","fas fa-bus-alt","fas fa-business-time","fas fa-calculator","fas fa-calendar","fas fa-calendar-alt","fas fa-calendar-check","fas fa-calendar-day","fas fa-calendar-minus","fas fa-calendar-plus","fas fa-calendar-times","fas fa-calendar-week","fas fa-camera","fas fa-camera-retro","fas fa-campground","fas fa-candy-cane","fas fa-cannabis","fas fa-capsules","fas fa-car","fas fa-car-alt","fas fa-car-battery","fas fa-car-crash","fas fa-car-side","fas fa-caret-down","fas fa-caret-left","fas fa-caret-right","fas fa-caret-square-down","fas fa-caret-square-left","fas fa-caret-square-right","fas fa-caret-square-up","fas fa-caret-up","fas fa-carrot","fas fa-cart-arrow-down","fas fa-cart-plus","fas fa-cash-register","fas fa-cat","fas fa-certificate","fas fa-chair","fas fa-chalkboard","fas fa-chalkboard-teacher","fas fa-charging-station","fas fa-chart-area","fas fa-chart-bar","fas fa-chart-line","fas fa-chart-pie","fas fa-check","fas fa-check-circle","fas fa-check-double","fas fa-check-square","fas fa-chess","fas fa-chess-bishop","fas fa-chess-board","fas fa-chess-king","fas fa-chess-knight","fas fa-chess-pawn","fas fa-chess-queen","fas fa-chess-rook","fas fa-chevron-circle-down","fas fa-chevron-circle-left","fas fa-chevron-circle-right","fas fa-chevron-circle-up","fas fa-chevron-down","fas fa-chevron-left","fas fa-chevron-right","fas fa-chevron-up","fas fa-child","fas fa-church","fas fa-circle","fas fa-circle-notch","fas fa-city","fas fa-clipboard","fas fa-clipboard-check","fas fa-clipboard-list","fas fa-clock","fas fa-clone","fas fa-closed-captioning","fas fa-cloud","fas fa-cloud-download-alt","fas fa-cloud-meatball","fas fa-cloud-moon","fas fa-cloud-moon-rain","fas fa-cloud-rain","fas fa-cloud-showers-heavy","fas fa-cloud-sun","fas fa-cloud-sun-rain","fas fa-cloud-upload-alt","fas fa-cocktail","fas fa-code","fas fa-code-branch","fas fa-coffee","fas fa-cog","fas fa-cogs","fas fa-coins","fas fa-columns","fas fa-comment","fas fa-comment-alt","fas fa-comment-dollar","fas fa-comment-dots","fas fa-comment-slash","fas fa-comments","fas fa-comments-dollar","fas fa-compact-disc","fas fa-compass","fas fa-compress","fas fa-compress-arrows-alt","fas fa-concierge-bell","fas fa-cookie","fas fa-cookie-bite","fas fa-copy","fas fa-copyright","fas fa-couch","fas fa-credit-card","fas fa-crop","fas fa-crop-alt","fas fa-cross","fas fa-crosshairs","fas fa-crow","fas fa-crown","fas fa-cube","fas fa-cubes","fas fa-cut","fas fa-database","fas fa-deaf","fas fa-democrat","fas fa-desktop","fas fa-dharmachakra","fas fa-diagnoses","fas fa-dice","fas fa-dice-d20","fas fa-dice-d6","fas fa-dice-five","fas fa-dice-four","fas fa-dice-one","fas fa-dice-six","fas fa-dice-three","fas fa-dice-two","fas fa-digital-tachograph","fas fa-directions","fas fa-divide","fas fa-dizzy","fas fa-dna","fas fa-dog","fas fa-dollar-sign","fas fa-dolly","fas fa-dolly-flatbed","fas fa-donate","fas fa-door-closed","fas fa-door-open","fas fa-dot-circle","fas fa-dove","fas fa-download","fas fa-drafting-compass","fas fa-dragon","fas fa-draw-polygon","fas fa-drum","fas fa-drum-steelpan","fas fa-drumstick-bite","fas fa-dumbbell","fas fa-dumpster","fas fa-dumpster-fire","fas fa-dungeon","fas fa-edit","fas fa-eject","fas fa-ellipsis-h","fas fa-ellipsis-v","fas fa-envelope","fas fa-envelope-open","fas fa-envelope-open-text","fas fa-envelope-square","fas fa-equals","fas fa-eraser","fas fa-ethernet","fas fa-euro-sign","fas fa-exchange-alt","fas fa-exclamation","fas fa-exclamation-circle","fas fa-exclamation-triangle","fas fa-expand","fas fa-expand-arrows-alt","fas fa-external-link-alt","fas fa-external-link-square-alt","fas fa-eye","fas fa-eye-dropper","fas fa-eye-slash","fas fa-fast-backward","fas fa-fast-forward","fas fa-fax","fas fa-feather","fas fa-feather-alt","fas fa-female","fas fa-fighter-jet","fas fa-file","fas fa-file-alt","fas fa-file-archive","fas fa-file-audio","fas fa-file-code","fas fa-file-contract","fas fa-file-csv","fas fa-file-download","fas fa-file-excel","fas fa-file-export","fas fa-file-image","fas fa-file-import","fas fa-file-invoice","fas fa-file-invoice-dollar","fas fa-file-medical","fas fa-file-medical-alt","fas fa-file-pdf","fas fa-file-powerpoint","fas fa-file-prescription","fas fa-file-signature","fas fa-file-upload","fas fa-file-video","fas fa-file-word","fas fa-fill","fas fa-fill-drip","fas fa-film","fas fa-filter","fas fa-fingerprint","fas fa-fire","fas fa-fire-alt","fas fa-fire-extinguisher","fas fa-first-aid","fas fa-fish","fas fa-fist-raised","fas fa-flag","fas fa-flag-checkered","fas fa-flag-usa","fas fa-flask","fas fa-flushed","fas fa-folder","fas fa-folder-minus","fas fa-folder-open","fas fa-folder-plus","fas fa-font","fas fa-football-ball","fas fa-forward","fas fa-frog","fas fa-frown","fas fa-frown-open","fas fa-funnel-dollar","fas fa-futbol","fas fa-gamepad","fas fa-gas-pump","fas fa-gavel","fas fa-gem","fas fa-genderless","fas fa-ghost","fas fa-gift","fas fa-gifts","fas fa-glass-cheers","fas fa-glass-martini","fas fa-glass-martini-alt","fas fa-glass-whiskey","fas fa-glasses","fas fa-globe","fas fa-globe-africa","fas fa-globe-americas","fas fa-globe-asia","fas fa-globe-europe","fas fa-golf-ball","fas fa-gopuram","fas fa-graduation-cap","fas fa-greater-than","fas fa-greater-than-equal","fas fa-grimace","fas fa-grin","fas fa-grin-alt","fas fa-grin-beam","fas fa-grin-beam-sweat","fas fa-grin-hearts","fas fa-grin-squint","fas fa-grin-squint-tears","fas fa-grin-stars","fas fa-grin-tears","fas fa-grin-tongue","fas fa-grin-tongue-squint","fas fa-grin-tongue-wink","fas fa-grin-wink","fas fa-grip-horizontal","fas fa-grip-lines","fas fa-grip-lines-vertical","fas fa-grip-vertical","fas fa-guitar","fas fa-h-square","fas fa-hammer","fas fa-hamsa","fas fa-hand-holding","fas fa-hand-holding-heart","fas fa-hand-holding-usd","fas fa-hand-lizard","fas fa-hand-paper","fas fa-hand-peace","fas fa-hand-point-down","fas fa-hand-point-left","fas fa-hand-point-right","fas fa-hand-point-up","fas fa-hand-pointer","fas fa-hand-rock","fas fa-hand-scissors","fas fa-hand-spock","fas fa-hands","fas fa-hands-helping","fas fa-handshake","fas fa-hanukiah","fas fa-hashtag","fas fa-hat-wizard","fas fa-haykal","fas fa-hdd","fas fa-heading","fas fa-headphones","fas fa-headphones-alt","fas fa-headset","fas fa-heart","fas fa-heart-broken","fas fa-heartbeat","fas fa-helicopter","fas fa-highlighter","fas fa-hiking","fas fa-hippo","fas fa-history","fas fa-hockey-puck","fas fa-holly-berry","fas fa-home","fas fa-horse","fas fa-horse-head","fas fa-hospital","fas fa-hospital-alt","fas fa-hospital-symbol","fas fa-hot-tub","fas fa-hotel","fas fa-hourglass","fas fa-hourglass-end","fas fa-hourglass-half","fas fa-hourglass-start","fas fa-house-damage","fas fa-hryvnia","fas fa-i-cursor","fas fa-icicles","fas fa-id-badge","fas fa-id-card","fas fa-id-card-alt","fas fa-igloo","fas fa-image","fas fa-images","fas fa-inbox","fas fa-indent","fas fa-industry","fas fa-infinity","fas fa-info","fas fa-info-circle","fas fa-italic","fas fa-jedi","fas fa-joint","fas fa-journal-whills","fas fa-kaaba","fas fa-key","fas fa-keyboard","fas fa-khanda","fas fa-kiss","fas fa-kiss-beam","fas fa-kiss-wink-heart","fas fa-kiwi-bird","fas fa-landmark","fas fa-language","fas fa-laptop","fas fa-laptop-code","fas fa-laugh","fas fa-laugh-beam","fas fa-laugh-squint","fas fa-laugh-wink","fas fa-layer-group","fas fa-leaf","fas fa-lemon","fas fa-less-than","fas fa-less-than-equal","fas fa-level-down-alt","fas fa-level-up-alt","fas fa-life-ring","fas fa-lightbulb","fas fa-link","fas fa-lira-sign","fas fa-list","fas fa-list-alt","fas fa-list-ol","fas fa-list-ul","fas fa-location-arrow","fas fa-lock","fas fa-lock-open","fas fa-long-arrow-alt-down","fas fa-long-arrow-alt-left","fas fa-long-arrow-alt-right","fas fa-long-arrow-alt-up","fas fa-low-vision","fas fa-luggage-cart","fas fa-magic","fas fa-magnet","fas fa-mail-bulk","fas fa-male","fas fa-map","fas fa-map-marked","fas fa-map-marked-alt","fas fa-map-marker","fas fa-map-marker-alt","fas fa-map-pin","fas fa-map-signs","fas fa-marker","fas fa-mars","fas fa-mars-double","fas fa-mars-stroke","fas fa-mars-stroke-h","fas fa-mars-stroke-v","fas fa-mask","fas fa-medal","fas fa-medkit","fas fa-meh","fas fa-meh-blank","fas fa-meh-rolling-eyes","fas fa-memory","fas fa-menorah","fas fa-mercury","fas fa-meteor","fas fa-microchip","fas fa-microphone","fas fa-microphone-alt","fas fa-microphone-alt-slash","fas fa-microphone-slash","fas fa-microscope","fas fa-minus","fas fa-minus-circle","fas fa-minus-square","fas fa-mitten","fas fa-mobile","fas fa-mobile-alt","fas fa-money-bill","fas fa-money-bill-alt","fas fa-money-bill-wave","fas fa-money-bill-wave-alt","fas fa-money-check","fas fa-money-check-alt","fas fa-monument","fas fa-moon","fas fa-mortar-pestle","fas fa-mosque","fas fa-motorcycle","fas fa-mountain","fas fa-mouse-pointer","fas fa-mug-hot","fas fa-music","fas fa-network-wired","fas fa-neuter","fas fa-newspaper","fas fa-not-equal","fas fa-notes-medical","fas fa-object-group","fas fa-object-ungroup","fas fa-oil-can","fas fa-om","fas fa-otter","fas fa-outdent","fas fa-paint-brush","fas fa-paint-roller","fas fa-palette","fas fa-pallet","fas fa-paper-plane","fas fa-paperclip","fas fa-parachute-box","fas fa-paragraph","fas fa-parking","fas fa-passport","fas fa-pastafarianism","fas fa-paste","fas fa-pause","fas fa-pause-circle","fas fa-paw","fas fa-peace","fas fa-pen","fas fa-pen-alt","fas fa-pen-fancy","fas fa-pen-nib","fas fa-pen-square","fas fa-pencil-alt","fas fa-pencil-ruler","fas fa-people-carry","fas fa-percent","fas fa-percentage","fas fa-person-booth","fas fa-phone","fas fa-phone-slash","fas fa-phone-square","fas fa-phone-volume","fas fa-piggy-bank","fas fa-pills","fas fa-place-of-worship","fas fa-plane","fas fa-plane-arrival","fas fa-plane-departure","fas fa-play","fas fa-play-circle","fas fa-plug","fas fa-plus","fas fa-plus-circle","fas fa-plus-square","fas fa-podcast","fas fa-poll","fas fa-poll-h","fas fa-poo","fas fa-poo-storm","fas fa-poop","fas fa-portrait","fas fa-pound-sign","fas fa-power-off","fas fa-pray","fas fa-praying-hands","fas fa-prescription","fas fa-prescription-bottle","fas fa-prescription-bottle-alt","fas fa-print","fas fa-procedures","fas fa-project-diagram","fas fa-puzzle-piece","fas fa-qrcode","fas fa-question","fas fa-question-circle","fas fa-quidditch","fas fa-quote-left","fas fa-quote-right","fas fa-quran","fas fa-radiation","fas fa-radiation-alt","fas fa-rainbow","fas fa-random","fas fa-receipt","fas fa-recycle","fas fa-redo","fas fa-redo-alt","fas fa-registered","fas fa-reply","fas fa-reply-all","fas fa-republican","fas fa-restroom","fas fa-retweet","fas fa-ribbon","fas fa-ring","fas fa-road","fas fa-robot","fas fa-rocket","fas fa-route","fas fa-rss","fas fa-rss-square","fas fa-ruble-sign","fas fa-ruler","fas fa-ruler-combined","fas fa-ruler-horizontal","fas fa-ruler-vertical","fas fa-running","fas fa-rupee-sign","fas fa-sad-cry","fas fa-sad-tear","fas fa-satellite","fas fa-satellite-dish","fas fa-save","fas fa-school","fas fa-screwdriver","fas fa-scroll","fas fa-sd-card","fas fa-search","fas fa-search-dollar","fas fa-search-location","fas fa-search-minus","fas fa-search-plus","fas fa-seedling","fas fa-server","fas fa-shapes","fas fa-share","fas fa-share-alt","fas fa-share-alt-square","fas fa-share-square","fas fa-shekel-sign","fas fa-shield-alt","fas fa-ship","fas fa-shipping-fast","fas fa-shoe-prints","fas fa-shopping-bag","fas fa-shopping-basket","fas fa-shopping-cart","fas fa-shower","fas fa-shuttle-van","fas fa-sign","fas fa-sign-in-alt","fas fa-sign-language","fas fa-sign-out-alt","fas fa-signal","fas fa-signature","fas fa-sim-card","fas fa-sitemap","fas fa-skating","fas fa-skiing","fas fa-skiing-nordic","fas fa-skull","fas fa-skull-crossbones","fas fa-slash","fas fa-sleigh","fas fa-sliders-h","fas fa-smile","fas fa-smile-beam","fas fa-smile-wink","fas fa-smog","fas fa-smoking","fas fa-smoking-ban","fas fa-sms","fas fa-snowboarding","fas fa-snowflake","fas fa-snowman","fas fa-snowplow","fas fa-socks","fas fa-solar-panel","fas fa-sort","fas fa-sort-alpha-down","fas fa-sort-alpha-up","fas fa-sort-amount-down","fas fa-sort-amount-up","fas fa-sort-down","fas fa-sort-numeric-down","fas fa-sort-numeric-up","fas fa-sort-up","fas fa-spa","fas fa-space-shuttle","fas fa-spider","fas fa-spinner","fas fa-splotch","fas fa-spray-can","fas fa-square","fas fa-square-full","fas fa-square-root-alt","fas fa-stamp","fas fa-star","fas fa-star-and-crescent","fas fa-star-half","fas fa-star-half-alt","fas fa-star-of-david","fas fa-star-of-life","fas fa-step-backward","fas fa-step-forward","fas fa-stethoscope","fas fa-sticky-note","fas fa-stop","fas fa-stop-circle","fas fa-stopwatch","fas fa-store","fas fa-store-alt","fas fa-stream","fas fa-street-view","fas fa-strikethrough","fas fa-stroopwafel","fas fa-subscript","fas fa-subway","fas fa-suitcase","fas fa-suitcase-rolling","fas fa-sun","fas fa-superscript","fas fa-surprise","fas fa-swatchbook","fas fa-swimmer","fas fa-swimming-pool","fas fa-synagogue","fas fa-sync","fas fa-sync-alt","fas fa-syringe","fas fa-table","fas fa-table-tennis","fas fa-tablet","fas fa-tablet-alt","fas fa-tablets","fas fa-tachometer-alt","fas fa-tag","fas fa-tags","fas fa-tape","fas fa-tasks","fas fa-taxi","fas fa-teeth","fas fa-teeth-open","fas fa-temperature-high","fas fa-temperature-low","fas fa-tenge","fas fa-terminal","fas fa-text-height","fas fa-text-width","fas fa-th","fas fa-th-large","fas fa-th-list","fas fa-theater-masks","fas fa-thermometer","fas fa-thermometer-empty","fas fa-thermometer-full","fas fa-thermometer-half","fas fa-thermometer-quarter","fas fa-thermometer-three-quarters","fas fa-thumbs-down","fas fa-thumbs-up","fas fa-thumbtack","fas fa-ticket-alt","fas fa-times","fas fa-times-circle","fas fa-tint","fas fa-tint-slash","fas fa-tired","fas fa-toggle-off","fas fa-toggle-on","fas fa-toilet","fas fa-toilet-paper","fas fa-toolbox","fas fa-tools","fas fa-tooth","fas fa-torah","fas fa-torii-gate","fas fa-tractor","fas fa-trademark","fas fa-traffic-light","fas fa-train","fas fa-tram","fas fa-transgender","fas fa-transgender-alt","fas fa-trash","fas fa-trash-alt","fas fa-tree","fas fa-trophy","fas fa-truck","fas fa-truck-loading","fas fa-truck-monster","fas fa-truck-moving","fas fa-truck-pickup","fas fa-tshirt","fas fa-tty","fas fa-tv","fas fa-umbrella","fas fa-umbrella-beach","fas fa-underline","fas fa-undo","fas fa-undo-alt","fas fa-universal-access","fas fa-university","fas fa-unlink","fas fa-unlock","fas fa-unlock-alt","fas fa-upload","fas fa-user","fas fa-user-alt","fas fa-user-alt-slash","fas fa-user-astronaut","fas fa-user-check","fas fa-user-circle","fas fa-user-clock","fas fa-user-cog","fas fa-user-edit","fas fa-user-friends","fas fa-user-graduate","fas fa-user-injured","fas fa-user-lock","fas fa-user-md","fas fa-user-minus","fas fa-user-ninja","fas fa-user-plus","fas fa-user-secret","fas fa-user-shield","fas fa-user-slash","fas fa-user-tag","fas fa-user-tie","fas fa-user-times","fas fa-users","fas fa-users-cog","fas fa-utensil-spoon","fas fa-utensils","fas fa-vector-square","fas fa-venus","fas fa-venus-double","fas fa-venus-mars","fas fa-vial","fas fa-vials","fas fa-video","fas fa-video-slash","fas fa-vihara","fas fa-volleyball-ball","fas fa-volume-down","fas fa-volume-mute","fas fa-volume-off","fas fa-volume-up","fas fa-vote-yea","fas fa-vr-cardboard","fas fa-walking","fas fa-wallet","fas fa-warehouse","fas fa-water","fas fa-weight","fas fa-weight-hanging","fas fa-wheelchair","fas fa-wifi","fas fa-wind","fas fa-window-close","fas fa-window-maximize","fas fa-window-minimize","fas fa-window-restore","fas fa-wine-bottle","fas fa-wine-glass","fas fa-wine-glass-alt","fas fa-won-sign","fas fa-wrench","fas fa-x-ray","fas fa-yen-sign","fas fa-yin-yang","far fa-address-book","far fa-address-card","far fa-angry","far fa-arrow-alt-circle-down","far fa-arrow-alt-circle-left","far fa-arrow-alt-circle-right","far fa-arrow-alt-circle-up","far fa-bell","far fa-bell-slash","far fa-bookmark","far fa-building","far fa-calendar","far fa-calendar-alt","far fa-calendar-check","far fa-calendar-minus","far fa-calendar-plus","far fa-calendar-times","far fa-caret-square-down","far fa-caret-square-left","far fa-caret-square-right","far fa-caret-square-up","far fa-chart-bar","far fa-check-circle","far fa-check-square","far fa-circle","far fa-clipboard","far fa-clock","far fa-clone","far fa-closed-captioning","far fa-comment","far fa-comment-alt","far fa-comment-dots","far fa-comments","far fa-compass","far fa-copy","far fa-copyright","far fa-credit-card","far fa-dizzy","far fa-dot-circle","far fa-edit","far fa-envelope","far fa-envelope-open","far fa-eye","far fa-eye-slash","far fa-file","far fa-file-alt","far fa-file-archive","far fa-file-audio","far fa-file-code","far fa-file-excel","far fa-file-image","far fa-file-pdf","far fa-file-powerpoint","far fa-file-video","far fa-file-word","far fa-flag","far fa-flushed","far fa-folder","far fa-folder-open","far fa-frown","far fa-frown-open","far fa-futbol","far fa-gem","far fa-grimace","far fa-grin","far fa-grin-alt","far fa-grin-beam","far fa-grin-beam-sweat","far fa-grin-hearts","far fa-grin-squint","far fa-grin-squint-tears","far fa-grin-stars","far fa-grin-tears","far fa-grin-tongue","far fa-grin-tongue-squint","far fa-grin-tongue-wink","far fa-grin-wink","far fa-hand-lizard","far fa-hand-paper","far fa-hand-peace","far fa-hand-point-down","far fa-hand-point-left","far fa-hand-point-right","far fa-hand-point-up","far fa-hand-pointer","far fa-hand-rock","far fa-hand-scissors","far fa-hand-spock","far fa-handshake","far fa-hdd","far fa-heart","far fa-hospital","far fa-hourglass","far fa-id-badge","far fa-id-card","far fa-image","far fa-images","far fa-keyboard","far fa-kiss","far fa-kiss-beam","far fa-kiss-wink-heart","far fa-laugh","far fa-laugh-beam","far fa-laugh-squint","far fa-laugh-wink","far fa-lemon","far fa-life-ring","far fa-lightbulb","far fa-list-alt","far fa-map","far fa-meh","far fa-meh-blank","far fa-meh-rolling-eyes","far fa-minus-square","far fa-money-bill-alt","far fa-moon","far fa-newspaper","far fa-object-group","far fa-object-ungroup","far fa-paper-plane","far fa-pause-circle","far fa-play-circle","far fa-plus-square","far fa-question-circle","far fa-registered","far fa-sad-cry","far fa-sad-tear","far fa-save","far fa-share-square","far fa-smile","far fa-smile-beam","far fa-smile-wink","far fa-snowflake","far fa-square","far fa-star","far fa-star-half","far fa-sticky-note","far fa-stop-circle","far fa-sun","far fa-surprise","far fa-thumbs-down","far fa-thumbs-up","far fa-times-circle","far fa-tired","far fa-trash-alt","far fa-user","far fa-user-circle","far fa-window-close","far fa-window-maximize","far fa-window-minimize","far fa-window-restore","fab fa-500px","fab fa-accessible-icon","fab fa-accusoft","fab fa-acquisitions-incorporated","fab fa-adn","fab fa-adobe","fab fa-adversal","fab fa-affiliatetheme","fab fa-algolia","fab fa-alipay","fab fa-amazon","fab fa-amazon-pay","fab fa-amilia","fab fa-android","fab fa-angellist","fab fa-angrycreative","fab fa-angular","fab fa-app-store","fab fa-app-store-ios","fab fa-apper","fab fa-apple","fab fa-apple-pay","fab fa-artstation","fab fa-asymmetrik","fab fa-atlassian","fab fa-audible","fab fa-autoprefixer","fab fa-avianex","fab fa-aviato","fab fa-aws","fab fa-bandcamp","fab fa-behance","fab fa-behance-square","fab fa-bimobject","fab fa-bitbucket","fab fa-bitcoin","fab fa-bity","fab fa-black-tie","fab fa-blackberry","fab fa-blogger","fab fa-blogger-b","fab fa-bluetooth","fab fa-bluetooth-b","fab fa-btc","fab fa-buromobelexperte","fab fa-buysellads","fab fa-canadian-maple-leaf","fab fa-cc-amazon-pay","fab fa-cc-amex","fab fa-cc-apple-pay","fab fa-cc-diners-club","fab fa-cc-discover","fab fa-cc-jcb","fab fa-cc-mastercard","fab fa-cc-paypal","fab fa-cc-stripe","fab fa-cc-visa","fab fa-centercode","fab fa-centos","fab fa-chrome","fab fa-cloudscale","fab fa-cloudsmith","fab fa-cloudversify","fab fa-codepen","fab fa-codiepie","fab fa-confluence","fab fa-connectdevelop","fab fa-contao","fab fa-cpanel","fab fa-creative-commons","fab fa-creative-commons-by","fab fa-creative-commons-nc","fab fa-creative-commons-nc-eu","fab fa-creative-commons-nc-jp","fab fa-creative-commons-nd","fab fa-creative-commons-pd","fab fa-creative-commons-pd-alt","fab fa-creative-commons-remix","fab fa-creative-commons-sa","fab fa-creative-commons-sampling","fab fa-creative-commons-sampling-plus","fab fa-creative-commons-share","fab fa-creative-commons-zero","fab fa-critical-role","fab fa-css3","fab fa-css3-alt","fab fa-cuttlefish","fab fa-d-and-d","fab fa-d-and-d-beyond","fab fa-dashcube","fab fa-delicious","fab fa-deploydog","fab fa-deskpro","fab fa-dev","fab fa-deviantart","fab fa-dhl","fab fa-diaspora","fab fa-digg","fab fa-digital-ocean","fab fa-discord","fab fa-discourse","fab fa-dochub","fab fa-docker","fab fa-draft2digital","fab fa-dribbble","fab fa-dribbble-square","fab fa-dropbox","fab fa-drupal","fab fa-dyalog","fab fa-earlybirds","fab fa-ebay","fab fa-edge","fab fa-elementor","fab fa-ello","fab fa-ember","fab fa-empire","fab fa-envira","fab fa-erlang","fab fa-ethereum","fab fa-etsy","fab fa-expeditedssl","fab fa-facebook","fab fa-facebook-f","fab fa-facebook-messenger","fab fa-facebook-square","fab fa-fantasy-flight-games","fab fa-fedex","fab fa-fedora","fab fa-figma","fab fa-firefox","fab fa-first-order","fab fa-first-order-alt","fab fa-firstdraft","fab fa-flickr","fab fa-flipboard","fab fa-fly","fab fa-font-awesome","fab fa-font-awesome-alt","fab fa-font-awesome-flag","fab fa-fonticons","fab fa-fonticons-fi","fab fa-fort-awesome","fab fa-fort-awesome-alt","fab fa-forumbee","fab fa-foursquare","fab fa-free-code-camp","fab fa-freebsd","fab fa-fulcrum","fab fa-galactic-republic","fab fa-galactic-senate","fab fa-get-pocket","fab fa-gg","fab fa-gg-circle","fab fa-git","fab fa-git-square","fab fa-github","fab fa-github-alt","fab fa-github-square","fab fa-gitkraken","fab fa-gitlab","fab fa-gitter","fab fa-glide","fab fa-glide-g","fab fa-gofore","fab fa-goodreads","fab fa-goodreads-g","fab fa-google","fab fa-google-drive","fab fa-google-play","fab fa-google-plus","fab fa-google-plus-g","fab fa-google-plus-square","fab fa-google-wallet","fab fa-gratipay","fab fa-grav","fab fa-gripfire","fab fa-grunt","fab fa-gulp","fab fa-hacker-news","fab fa-hacker-news-square","fab fa-hackerrank","fab fa-hips","fab fa-hire-a-helper","fab fa-hooli","fab fa-hornbill","fab fa-hotjar","fab fa-houzz","fab fa-html5","fab fa-hubspot","fab fa-imdb","fab fa-instagram","fab fa-intercom","fab fa-internet-explorer","fab fa-invision","fab fa-ioxhost","fab fa-itunes","fab fa-itunes-note","fab fa-java","fab fa-jedi-order","fab fa-jenkins","fab fa-jira","fab fa-joget","fab fa-joomla","fab fa-js","fab fa-js-square","fab fa-jsfiddle","fab fa-kaggle","fab fa-keybase","fab fa-keycdn","fab fa-kickstarter","fab fa-kickstarter-k","fab fa-korvue","fab fa-laravel","fab fa-lastfm","fab fa-lastfm-square","fab fa-leanpub","fab fa-less","fab fa-line","fab fa-linkedin","fab fa-linkedin-in","fab fa-linode","fab fa-linux","fab fa-lyft","fab fa-magento","fab fa-mailchimp","fab fa-mandalorian","fab fa-markdown","fab fa-mastodon","fab fa-maxcdn","fab fa-medapps","fab fa-medium","fab fa-medium-m","fab fa-medrt","fab fa-meetup","fab fa-megaport","fab fa-mendeley","fab fa-microsoft","fab fa-mix","fab fa-mixcloud","fab fa-mizuni","fab fa-modx","fab fa-monero","fab fa-napster","fab fa-neos","fab fa-nimblr","fab fa-nintendo-switch","fab fa-node","fab fa-node-js","fab fa-npm","fab fa-ns8","fab fa-nutritionix","fab fa-odnoklassniki","fab fa-odnoklassniki-square","fab fa-old-republic","fab fa-opencart","fab fa-openid","fab fa-opera","fab fa-optin-monster","fab fa-osi","fab fa-page4","fab fa-pagelines","fab fa-palfed","fab fa-patreon","fab fa-paypal","fab fa-penny-arcade","fab fa-periscope","fab fa-phabricator","fab fa-phoenix-framework","fab fa-phoenix-squadron","fab fa-php","fab fa-pied-piper","fab fa-pied-piper-alt","fab fa-pied-piper-hat","fab fa-pied-piper-pp","fab fa-pinterest","fab fa-pinterest-p","fab fa-pinterest-square","fab fa-playstation","fab fa-product-hunt","fab fa-pushed","fab fa-python","fab fa-qq","fab fa-quinscape","fab fa-quora","fab fa-r-project","fab fa-raspberry-pi","fab fa-ravelry","fab fa-react","fab fa-reacteurope","fab fa-readme","fab fa-rebel","fab fa-red-river","fab fa-reddit","fab fa-reddit-alien","fab fa-reddit-square","fab fa-redhat","fab fa-renren","fab fa-replyd","fab fa-researchgate","fab fa-resolving","fab fa-rev","fab fa-rocketchat","fab fa-rockrms","fab fa-safari","fab fa-sass","fab fa-schlix","fab fa-scribd","fab fa-searchengin","fab fa-sellcast","fab fa-sellsy","fab fa-servicestack","fab fa-shirtsinbulk","fab fa-shopware","fab fa-simplybuilt","fab fa-sistrix","fab fa-sith","fab fa-sketch","fab fa-skyatlas","fab fa-skype","fab fa-slack","fab fa-slack-hash","fab fa-slideshare","fab fa-snapchat","fab fa-snapchat-ghost","fab fa-snapchat-square","fab fa-soundcloud","fab fa-sourcetree","fab fa-speakap","fab fa-spotify","fab fa-squarespace","fab fa-stack-exchange","fab fa-stack-overflow","fab fa-staylinked","fab fa-steam","fab fa-steam-square","fab fa-steam-symbol","fab fa-sticker-mule","fab fa-strava","fab fa-stripe","fab fa-stripe-s","fab fa-studiovinari","fab fa-stumbleupon","fab fa-stumbleupon-circle","fab fa-superpowers","fab fa-supple","fab fa-suse","fab fa-teamspeak","fab fa-telegram","fab fa-telegram-plane","fab fa-tencent-weibo","fab fa-the-red-yeti","fab fa-themeco","fab fa-themeisle","fab fa-think-peaks","fab fa-trade-federation","fab fa-trello","fab fa-tripadvisor","fab fa-tumblr","fab fa-tumblr-square","fab fa-twitch","fab fa-twitter","fab fa-twitter-square","fab fa-typo3","fab fa-uber","fab fa-ubuntu","fab fa-uikit","fab fa-uniregistry","fab fa-untappd","fab fa-ups","fab fa-usb","fab fa-usps","fab fa-ussunnah","fab fa-vaadin","fab fa-viacoin","fab fa-viadeo","fab fa-viadeo-square","fab fa-viber","fab fa-vimeo","fab fa-vimeo-square","fab fa-vimeo-v","fab fa-vine","fab fa-vk","fab fa-vnv","fab fa-vuejs","fab fa-weebly","fab fa-weibo","fab fa-weixin","fab fa-whatsapp","fab fa-whatsapp-square","fab fa-whmcs","fab fa-wikipedia-w","fab fa-windows","fab fa-wix","fab fa-wizards-of-the-coast","fab fa-wolf-pack-battalion","fab fa-wordpress","fab fa-wordpress-simple","fab fa-wpbeginner","fab fa-wpexplorer","fab fa-wpforms","fab fa-wpressr","fab fa-xbox","fab fa-xing","fab fa-xing-square","fab fa-y-combinator","fab fa-yahoo","fab fa-yandex","fab fa-yandex-international","fab fa-yarn","fab fa-yelp","fab fa-yoast","fab fa-youtube","fab fa-youtube-square","fab fa-zhihu"]);const Ea=wp.i18n.__,Sa=wp.element,xa=Sa.Component,Ca=Sa.Fragment;var Da=class extends xa{constructor(e){super(e),this.state={isOpen:!1,filterText:"",showIcons:!1}}render(){const e=this.props,t=e.value,n=e.disableToggle,r=e.colorSettings,a=e.iconColor,o=e.onColorChange,i=this.state.filterText;var s=[];return i.length>2?Ta.forEach(e=>{e.includes(i)&&s.push(e)}):s=Ta,wp.element.createElement("div",{className:`blockspare-field blockspare-field-icon-list ${n?"":"blockspare-toggle-enabled"}`},this.props.label&&wp.element.createElement(Ca,null,n?wp.element.createElement("label",null,this.props.label):wp.element.createElement(Toggle,{label:this.props.label,className:"blockspare-icon-list-toggle",value:!!this.props.value,onChange:()=>this.props.onChange(this.props.value?"":" ")})),r&&wp.element.createElement(Color,{label:Ea(" Color"),value:a||"#ccc",onChange:e=>o(e)}),(n||""!=this.props.value)&&wp.element.createElement("div",{className:"blockspare-icon-list-wrapper"},wp.element.createElement("input",{type:"text",value:this.state.filterText,placeholder:"Search...",onChange:e=>this.setState({filterText:e.target.value}),autoComplete:"off"}),wp.element.createElement("div",{className:"blockspare-icon-list-icons"},s.map(e=>wp.element.createElement("span",{className:t==e?"blockspare-active":"",onClick:t=>{this.props.onChange(e)}},wp.element.createElement("span",{className:e}))))))}};const Oa=wp.i18n.__,Ya=wp.element.Fragment,ja=wp.blockEditor,Pa=(ja.InspectorControls,ja.PanelColorSettings),Na=wp.components,Ba=(Na.PanelBody,Na.SelectControl);Na.RangeControl;function Aa(e){const t=e.name,n=e.onChangeName,r=void 0===n?()=>{}:n,a=e.enableiconSize,o=e.iconSize,i=e.onChangeIconSizeOptions,s=void 0===i?()=>{}:i,l=e.enableiconStyles,c=e.iconStyles,u=e.onChangeIconStyles,d=void 0===u?()=>{}:u,p=e.iconBackgroundColor,m=e.onChangeIconBackgroundColor,f=void 0===m?()=>{}:m,h=(e.iconBorderColor,e.onChangeIconBorderColor,e.iconColor),b=e.OnChangeIconColor,g=void 0===b?()=>{}:b,_=(e.borderRadius,e.onChangeBorderRadius,[{value:"blockspare-icon-size-small",label:Oa("Small","blockspare")},{value:"blockspare-icon-size-medium",label:Oa("Medium","blockspare")},{value:"blockspare-icon-size-large",label:Oa("Large","blockspare")},{value:"blockspare-icon-size-extralarge",label:Oa("Extra Large","blockspare")}]),y=[{value:"blockspare-icon-style1",label:Oa("None","blockspare")},{value:"blockspare-icon-style2",label:Oa("Background","blockspare")},{value:"blockspare-icon-style3",label:Oa("Border","blockspare")}];return wp.element.createElement(Ya,null,wp.element.createElement(Da,{value:t,onChange:r}),0!=a&&wp.element.createElement(Ba,{label:Oa("Icon Size","blockspare"),value:o,options:_.map(({value:e,label:t})=>({value:e,label:t})),onChange:s}),0!=l&&wp.element.createElement(Ba,{label:Oa("Icon Style","blockspare"),value:c,options:y.map(({value:e,label:t})=>({value:e,label:t})),onChange:d}),wp.element.createElement(Pa,{title:Oa("Icon Color","blockspare"),initialOpen:!1,colorSettings:[{value:h,onChange:g,label:Oa("Icon Color","blockspare")}]}),"blockspare-icon-style2"===c&&wp.element.createElement(Pa,{title:Oa("Background Color","blockspare"),initialOpen:!1,colorSettings:[{value:p,onChange:f,label:Oa("Background Color","blockspare")}]}))}const Ha=wp.i18n.__,za=wp.element.Component,Ia=wp.blockEditor,Fa=Ia.InspectorControls,Ra=(Ia.PanelColorSettings,wp.components),Wa=(Ra.RangeControl,Ra.PanelBody),Ua=Ra.ToggleControl;Ra.SelectControl;class qa extends za{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(t.backGroundColor,t.showImage),r=(t.counterFontColor,t.paddingTop),a=t.paddingRight,o=t.paddingBottom,i=t.paddingLeft,s=t.marginTop,l=t.marginBottom,c=t.imgIconOption,u=t.name,d=t.iconSize,p=t.iconStyles,m=t.iconBackgroundColor,f=t.iconBorderColor,h=t.iconColor,b=t.borderRadius,g=(t.design,t.titleFontSize),_=t.subtitleFontSize,y=t.headerTagOption,k=t.headertitleColor,w=t.headersubtitleColor,v=t.headerlayoutOption,M=t.titlePaddingTop,L=t.titlePaddingBottom,T=t.subtitlePaddingTop,E=t.subtitlePaddingBottom,S=t.headerboxColor,x=t.dashColor,C=(t.blockBorderRadius,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,e.setAttributes);Ha("Icon","blockspare"),Ha("Image","blockspare"),Ha("Layout 1","blockspare"),Ha("Layout 2","blockspare");return wp.element.createElement(Fa,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Wa,{title:Ha("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(Ua,{label:Ha("Display Icon ","blockspare"),checked:n,onChange:()=>this.props.setAttributes({showImage:!n})})),"icon"==c&&n&&wp.element.createElement(Wa,{title:Ha("Icon Settings"),initialOpen:!1},wp.element.createElement(Aa,{name:u,onChangeName:e=>C({name:e}),enableiconSize:!1,iconSize:d,onChangeIconSizeOptions:e=>C({iconSize:e}),enableiconStyles:!1,iconStyles:p,onChangeIconStyles:e=>C({iconStyles:e}),iconBackgroundColor:m,onChangeIconBackgroundColor:e=>C({iconBackgroundColor:e}),iconBorderColor:f,onChangeIconBorderColor:e=>C({iconBorderColor:e}),iconColor:h,OnChangeIconColor:e=>C({iconColor:e}),borderRadius:b,onChangeBorderRadius:e=>C({borderRadius:e})})),wp.element.createElement(Wa,{title:Ha("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(bt,{enableBlockGaps:!1,titleFontSize:g,onChangetitleFontSize:e=>C({titleFontSize:e}),subtitleFontSize:_,onChangesubtitleFontSize:e=>C({subtitleFontSize:e}),headerlayoutOption:v,onChangeHeaderStyle:e=>C({headerlayoutOption:e}),headerTagOption:y,onChangeHeaderTag:e=>C({headerTagOption:e}),headerboxColor:S,onChangeboxcolor:e=>C({headerboxColor:e}),dashColor:x,onChangeDashColor:e=>C({dashColor:e}),headertitleColor:k,onChangetitlecolor:e=>C({headertitleColor:e}),titlePaddingTop:M,onChangetitlePaddingTop:e=>C({titlePaddingTop:e}),titlePaddingBottom:L,onChangetitlePaddingBottom:e=>C({titlePaddingBottom:e}),headersubtitleColor:w,onChangesubtitlecolor:e=>C({headersubtitleColor:e}),subtitlePaddingTop:T,onChangesubtitlePaddingTop:e=>C({subtitlePaddingTop:e}),subtitlePaddingBottom:E,onChangesubtitlePaddingBottom:e=>C({subtitlePaddingBottom:e})})),wp.element.createElement(Wa,{title:Ha("Block Gap Settings","blockspare"),initialOpen:!1},wp.element.createElement(Wa,{title:Ha("Padding Settings","blockspare"),initialOpen:!1},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:r,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>C({paddingTop:e}),paddingEnableRight:!0,paddingRight:a,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>C({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:o,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>C({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:i,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>C({paddingLeft:e})})),wp.element.createElement(Wa,{title:Ha("Margin Settings","blockspare"),initialOpen:!1},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:s,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>C({marginTop:e}),marginEnableBottom:!0,marginBottom:l,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>C({marginBottom:e})})))))}}var Ga=n(255),Va=n.n(Ga);var $a=e=>{let t="";return t="blockspare-icon-style2"===e.iconStyles?{backgroundColor:e.iconBackgroundColor?e.iconBackgroundColor:"#8b249c",borderColor:e.iconBorderColor?e.iconBorderColor:"#8b249c",color:e.iconColor?e.iconColor:"#fff",borderRadius:e.borderRadius+"%"}:"blockspare-icon-style3"===e.iconStyles?{backgroundColor:"transparent",borderColor:e.iconBorderColor?e.iconBorderColor:"#8b249c",color:e.iconColor?e.iconColor:"#fff",borderRadius:e.borderRadius+"%"}:{color:e.iconColor?e.iconColor:"#fff"},t};function Ja(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Xa(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ja(Object(n),!0).forEach((function(t){Qa(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ja(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Qa(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ka=wp.element,Za=Ka.Component,eo=Ka.Fragment,to=wp.i18n.__,no=wp.components,ro=no.Toolbar,ao=no.RangeControl,oo=wp.blockEditor,io=oo.BlockControls,so=oo.RichText,lo=oo.InnerBlocks,co=["core/image"],uo=[["core/image",{}]];function po(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function mo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?po(Object(n),!0).forEach((function(t){fo(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):po(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function fo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ho=wp.element.Component,bo=wp.blockEditor,go=bo.RichText,_o=bo.InnerBlocks;function yo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ko(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const wo=wp.i18n.__,vo=wp.blocks.registerBlockType,Mo=La.name,Lo=La.category,To=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?yo(Object(n),!0).forEach((function(t){ko(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):yo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Ft,{},Rt,{},La.attributes,{},Vt);vo(Mo,{title:wo("BS Counter","blockspare"),description:wo("Add counter in you page and post","blockspare`"),Description:"Displays Counter",category:Lo,icon:a.counter,attributes:To,keywords:[wo("block","blockspare"),wo("counter","blockspare"),wo("number","blockspare"),wo("box","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{counter:100,counterFontColor:"#000",headertitleColor:"#000",backGroundColor:"#fff",headersubtitleColor:"#000",name:"fas fa-chart-line",headerTitle:"Enter Title"}},edit:class extends Za{render(){const e=this.props,t=e.attributes,n=t.backGroundColor,r=t.showImage,a=t.counter,o=t.counterFontColor,s=t.imgIconOption,l=t.name,c=t.iconSize,u=t.iconStyles,d=t.design,p=t.headerTagOption,m=t.headerTitle,f=t.headerSubTitle,h=t.blockBorderRadius,b=(e.isSelected,e.attributes),g=e.setAttributes,_=Xa({backgroundColor:n||"#fff"},Dt(b),{},Ot(b),{borderRadius:h||null}),y=Xa({},$a(b)),k=Xa({},Ut(b)),w=Xa({},qt(b)),v=Xa({},Gt(b));return wp.element.createElement(eo,null,wp.element.createElement(qa,Xa({setAttributes:g},this.props)),wp.element.createElement(io,null,wp.element.createElement(ro,null,wp.element.createElement(ao,{className:"blockspare_progress_bar_value",value:a,onChange:e=>g({counter:e}),min:0,max:1e6}))),wp.element.createElement("div",{className:"blockspare-counter-wrapper blockspare-blocks",style:_},wp.element.createElement("div",{className:i()("blockspare-counter-section")},wp.element.createElement("div",{className:i()("blockspare-counters-item",d)},r&&"image"==s&&wp.element.createElement(lo,{template:uo,allowedBlocks:co,templateLock:!0,templateInsertUpdatesSelection:!0}),r&&"icon"==s&&wp.element.createElement("div",{className:"blockspare-block-icon-wrapper"},wp.element.createElement("div",{className:i()("blockspare-block-icon",c,u),style:y},wp.element.createElement("i",{className:l}))),wp.element.createElement("div",{className:"blockspare-counters"},wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:k}),wp.element.createElement(so,{tagName:p,placeholder:to("Title","blockspare"),keepPlaceholderOnFocus:!0,value:m,className:"blockspare-title",style:w,onChange:e=>g({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:k})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:k}),wp.element.createElement(so,{tagName:"p",placeholder:to("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:f,className:"blockspare-subtitle",style:v,onChange:e=>g({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:k})))),wp.element.createElement("p",{className:"blockspare-counter",style:{color:o||"#000"}},wp.element.createElement(Va.a,{className:"account-balance",start:0,end:a,duration:4.75}))))))}},save:class extends ho{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.showImage,r=t.counter,a=t.counterFontColor,o=t.imgIconOption,s=t.name,l=t.iconSize,c=t.iconStyles,u=t.design,d=t.headerTagOption,p=t.headerTitle,m=t.headerSubTitle,f=t.backGroundColor,h=t.blockBorderRadius,b=e.attributes,g=mo({backgroundColor:f||"#fff"},Dt(b),{},Ot(b),{borderRadius:h||null}),_=mo({},$a(b)),y=mo({},Ut(b)),k=mo({},qt(b)),w=mo({},Gt(b));return wp.element.createElement("div",{className:"blockspare-counter-wrapper blockspare-blocks blockspare-section-counter-bar",style:g},wp.element.createElement("div",{className:i()("blockspare-counter-section")},wp.element.createElement("div",{className:i()("blockspare-counters-item",u)},n&&"image"==o&&wp.element.createElement(_o.Content,null),n&&"icon"==o&&wp.element.createElement("div",{className:"blockspare-block-icon-wrapper"},wp.element.createElement("div",{className:i()("blockspare-block-icon",l,c),style:_},wp.element.createElement("i",{className:s}))),wp.element.createElement("div",{className:"blockspare-counters"},wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:y}),p&&wp.element.createElement(go.Content,{tagName:d,className:"blockspare-title",style:k,value:p}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:y})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:y}),m&&wp.element.createElement(go.Content,{tagName:"p",className:"blockspare-subtitle",style:w,value:m}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:y})))),wp.element.createElement("p",{className:"blockspare-counter",style:{color:a||"#000"}},r))))}}});n(443);const Eo=wp.i18n.__,So=wp.element,xo=So.Component,Co=(So.Fragment,wp.blockEditor.InspectorControls),Do=wp.components.PanelBody;class Oo extends xo{render(){const e=this.props.attributes,t=e.name,n=e.iconSize,r=e.iconStyles,a=e.iconBackgroundColor,o=e.iconBorderColor,i=e.iconColor,s=e.borderRadius,l=this.props.setAttributes;return wp.element.createElement(Co,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Do,{title:Eo("Icon Settings"),initialOpen:!1},wp.element.createElement(Aa,{name:t,onChangeName:e=>l({name:e}),enableiconSize:!1,iconSize:n,onChangeIconSizeOptions:e=>l({iconSize:e}),enableiconStyles:!1,iconStyles:r,onChangeIconStyles:e=>l({iconStyles:e}),iconBackgroundColor:a,onChangeIconBackgroundColor:e=>l({iconBackgroundColor:e}),iconBorderColor:o,onChangeIconBorderColor:e=>l({iconBorderColor:e}),iconColor:i,OnChangeIconColor:e=>l({iconColor:e}),borderRadius:s,onChangeBorderRadius:e=>l({borderRadius:e})}))))}}function Yo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function jo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yo(Object(n),!0).forEach((function(t){Po(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Po(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}wp.i18n.__;const No=wp.element,Bo=No.Component,Ao=No.Fragment,Ho=wp.blockEditor,zo=Ho.AlignmentToolbar,Io=Ho.BlockControls;var Fo=class extends Bo{constructor(){super(...arguments),this.state={device:"md",spacer:!0}}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,r=e.attributes.uniqueId,a=n.substr(0,6);r?r&&r!=a&&t({uniqueId:a}):t({uniqueId:a})}render(){const e=this.props,t=e.attributes,n=t.name,r=t.iconSize,a=t.iconStyles,o=t.sectionAlignment,s=e.attributes,l=e.setAttributes,c=jo({},$a(s));return wp.element.createElement(Ao,null,wp.element.createElement(Io,{key:"controls"},wp.element.createElement(zo,{value:o,onChange:e=>{l({sectionAlignment:e})}})),wp.element.createElement(Oo,jo({setAttributes:l},this.props)),wp.element.createElement("div",{className:"blockspare-blocks"},wp.element.createElement("div",{className:"blockspare-block-icon-wrapper",style:{textAlign:o}},wp.element.createElement("div",{className:i()("blockspare-block-icon",r,a),style:c},wp.element.createElement("i",{className:n})))))}};function Ro(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Wo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Uo=wp.element.Component;var qo=class extends Uo{render(){const e=this.props.attributes,t=e.name,n=e.iconSize,r=e.iconStyles,a=e.sectionAlignment,o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ro(Object(n),!0).forEach((function(t){Wo(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ro(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},$a(this.props.attributes));return wp.element.createElement("div",{className:"blockspare-block"},wp.element.createElement("div",{className:"blockspare-block-icon-wrapper",style:{textAlign:a}},wp.element.createElement("div",{className:i()("blockspare-block-icon",n,r),style:o},wp.element.createElement("i",{className:t}))))}},Go=n(44);const Vo=Go.name,$o=Go.category,Jo=Go.attributes,Xo=wp.blocks.registerBlockType,Qo=wp.i18n.__;Xo(Vo,{title:Qo("BS Icon","blockspare"),description:Qo("Our Icon block allows you to choose and place various type of icons","blockspare"),category:$o,icon:a.iconblockspare,keywords:[Qo("block","blockspare"),Qo("icon","blockspare"),Qo("set","blockspare"),Qo("box","blockspare")],example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},attributes:Jo,edit:Fo,save:qo});n(444),n(445);var Ko=n(45),Zo=n(17),ei=n.n(Zo),ti=n(18),ni=n.n(ti),ri=n(19),ai=n.n(ri);const oi=wp.i18n.__,ii=wp.element.Component,si=wp.blockEditor,li=si.InspectorControls,ci=si.PanelColorSettings,ui=wp.components,di=ui.PanelBody,pi=ui.SelectControl,mi=ui.ToggleControl,fi=(ui.TextControl,ui.RangeControl);class hi extends ii{imageSizeSelect(){const e=wp.data.select("core/editor").getEditorSettings();return ni()(ai()(e.imageSizes,({name:e,slug:t})=>({value:t,label:e})))}render(){const e=this.props,t=e.attributes,n=t.numberofSlide,r=(t.carouselSpeed,t.showsliderNextPrev),a=(t.carouselNextIcon,t.showDots),o=t.navigationColor,i=t.gutterSpace,s=(t.colorFilter,t.showOriginalOnHover,t.navigationSize),l=t.enableAutoPlay,c=(e.attributes,e.setAttributes),u={value:"selectimage",label:oi("Select image size")};this.imageSizeSelect().unshift(u);oi("Chevron","blockspare"),oi("Angle","blockspare"),oi("Chevron Circle","blockspare"),oi("Caret","blockspare"),oi("Circle","blockspare"),oi("Original","blockspare"),oi("Grayscale","blockspare"),oi("Sepia","blockspare"),oi("Saturation","blockspare"),oi("Dim","blockspare"),oi("Vintage","blockspare");const d=[{value:"blockspare-navigation-small",label:oi("Small","blockspare")},{value:"blockspare-navigation-medium",label:oi("Medium","blockspare")},{value:"blockspare-navigation-large",label:oi("Large","blockspare")}];return wp.element.createElement(li,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(di,{title:oi("Carousel Settings","blockspare"),initialOpen:!1},wp.element.createElement(fi,{label:oi("Number of slide to show","blockspare"),value:n,onChange:e=>c({numberofSlide:e}),min:2,max:3}),wp.element.createElement(fi,{label:oi("Gutter Sapce","blockspare"),value:i,onChange:e=>c({gutterSpace:e}),min:0,max:5}),wp.element.createElement(mi,{label:oi("Enable Autoplay","blockspare"),checked:l,onChange:()=>this.props.setAttributes({enableAutoPlay:!l}),help:oi("The effect will applicable on frontend only.","blockspare")}),wp.element.createElement(mi,{label:oi("Display Navigation","blockspare"),checked:r,onChange:()=>this.props.setAttributes({showsliderNextPrev:!r})}),r&&wp.element.createElement(pi,{label:oi(" Navigation Size","blockspare"),value:s,options:d.map(({value:e,label:t})=>({value:e,label:t})),onChange:e=>c({navigationSize:e})}),wp.element.createElement(mi,{label:oi("Display Dots","blockspare"),checked:a,onChange:()=>this.props.setAttributes({showDots:!a})}),r&&wp.element.createElement(ci,{title:oi("Navigation/Dots Color","blockspare"),initialOpen:!1,colorSettings:[{value:o,onChange:e=>c({navigationColor:e}),label:oi("Navigation/Dots Color","blockspare")}]}))))}}var bi=n(256),gi=n.n(bi);const _i=wp.i18n.__,yi=wp.element,ki=yi.Component,wi=yi.Fragment,vi=wp.compose.compose,Mi=wp.components,Li=Mi.IconButton,Ti=Mi.Spinner,Ei=Mi.Dashicon,Si=wp.blockEditor,xi=Si.RichText,Ci=Si.URLInput,Di=wp.data.withSelect,Oi=wp.keycodes,Yi=(Oi.BACKSPACE,Oi.DELETE,wp.blob.isBlobURL);var ji=vi([Di((e,t)=>{const n=e("core").getMedia,r=t.id;return{image:r?n(r):null}})])(class extends ki{constructor(){super(...arguments),this.onImageClick=this.onImageClick.bind(this),this.onSelectCaption=this.onSelectCaption.bind(this),this.bindContainer=this.bindContainer.bind(this),this.saveCustomLink=this.saveCustomLink.bind(this),this.state={captionSelected:!1,captionFocused:!1,isSaved:!1}}bindContainer(e){this.container=e}onSelectCaption(){this.state.captionSelected||this.setState({captionSelected:!0}),this.props.isSelected||this.props.onSelect()}onImageClick(){this.props.isSelected||this.props.onSelect(),this.state.captionSelected&&this.setState({captionSelected:!1,captionFocused:!1})}saveCustomLink(){this.setState({isSaved:!0})}componentDidUpdate(e){const t=this.props,n=t.isSelected,r=t.image,a=t.url,o=t.imgLink;r&&!a&&this.props.setAttributes({url:r.source_url,alt:r.alt_text}),this.state.captionSelected&&!n&&e.isSelected&&this.setState({captionSelected:!1,captionFocused:!1}),o&&!n&&e.isSelected&&this.setState({isSaved:!1})}render(){const e=this.props,t=e.alt,n=e.caption,r=e.captions,a=e.fontSize,o=e.gutter,s=e.gutterMobile,l=e.id,c=e.isFirstItem,u=e.isLastItem,d=e.isSelected,p=e.linkTo,m=e.marginBottom,f=e.marginLeft,h=e.marginRight,b=e.marginTop,g=e.onMoveBackward,_=e.onMoveForward,y=e.onRemove,k=e.setAttributes,w=e.shadow,v=e.supportsCaption,M=e.supportsMoving,L=void 0===M||M,T=e.verticalMoving,E=void 0!==T&&T,S=e.url,x=e.sizes,C=e.inspectorSize,D=e["aria-label"],O=e.imgLink;let Y="";Y=x?"medium"===C?void 0===x.medium?S:void 0===x.medium?x.medium.url:S:"full"===C?void 0===x.large?S:void 0===x.full.url?x.full.url:S:S:S;const j=i()({[`has-shadow-${w}`]:"none"!==w||void 0!==w}),P=wp.element.createElement(wi,null,wp.element.createElement("img",{src:Y,className:j,alt:t,"data-id":l,"data-imglink":O,onClick:this.onImageClick,tabIndex:"0","aria-label":D}),Yi(S)&&wp.element.createElement(Ti,null)),N=i()({"is-selected":d,"is-transient":S&&0===S.indexOf("blob:"),[`has-margin-top-${o}`]:b&&o>0,[`has-margin-top-mobile-${s}`]:b&&s>0,[`has-margin-right-${o}`]:h&&o>0,[`has-margin-right-mobile-${s}`]:h&&s>0,[`has-margin-bottom-${o}`]:m&&o>0,[`has-margin-bottom-mobile-${s}`]:m&&s>0,[`has-margin-left-${o}`]:f&&o>0,[`has-margin-left-mobile-${s}`]:f&&s>0}),B={fontSize:a?a+"px":void 0};return wp.element.createElement("figure",{className:"blockspare-gallery-figure "+N,tabIndex:"-1",onKeyDown:this.onKeyDown,ref:this.bindContainer},d&&wp.element.createElement(wi,null,L&&wp.element.createElement("div",{className:"components-blockspare-gallery-item__move-menu"},wp.element.createElement(Li,{icon:E?"arrow-up":"arrow-left",onClick:!c&&g,className:"blockspare-gallery-item-button",label:_i("Move Image Backward","blockspare"),"aria-disabled":c,disabled:!d}),wp.element.createElement(Li,{icon:E?"arrow-down":"arrow-right",onClick:!u&&_,className:"blockspare-gallery-item-button",label:_i("Move Image Forward","blockspare"),"aria-disabled":u,disabled:!d})),wp.element.createElement("div",{className:"components-blockspare-gallery-item__remove-menu"},wp.element.createElement(Li,{icon:"no-alt",onClick:y,className:"blockspare-gallery-item-button",label:_i("Remove Image","blockspare"),disabled:!d})),"custom"===p&&wp.element.createElement("form",{className:"components-blockspare-gallery-item-image-link",onSubmit:e=>e.preventDefault()},wp.element.createElement(Ei,{icon:"admin-links"}),wp.element.createElement(Ci,{value:O,onChange:e=>k({imgLink:e})}),wp.element.createElement(Li,{icon:this.state.isSaved?"saved":"editor-break",label:this.state.isSaved?_i("Saving","blockspare"):_i("Apply","blockspare"),onClick:this.saveCustomLink,type:"submit"}))),P,!0!==v||xi.isEmpty(n)&&!d||!r?null:wp.element.createElement(xi,{tagName:"figcaption",placeholder:_i("Write caption…","blockspare"),className:"blockspare-gallery-caption",style:B,value:n,isSelected:this.state.captionSelected,onChange:e=>k({caption:e}),unstableOnFocus:this.onSelectCaption,inlineToolbar:!0}))}}),Pi=n(257),Ni=n.n(Pi),Bi=n(36),Ai=n.n(Bi),Hi=n(258),zi=n.n(Hi);const Ii=(e,t)=>{const n=Ni()(e,["alt","id","link","caption","imgLink","sizes"]);n.url=Ai()(e,["sizes","large","url"])||Ai()(e,["media_details","sizes","large","source_url"])||e.url;const r=zi()(t,(function(e){return e.url===n.url}));return n.imgLink=r>=0?t[r].imgLink:"",n},Fi=["image"],Ri=wp.i18n,Wi=Ri.__,Ui=Ri.sprintf,qi=wp.element.Component,Gi=wp.blockEditor,Vi=Gi.MediaPlaceholder,$i=Gi.BlockIcon;var Ji=class extends qi{constructor(){super(...arguments),this.onSelectImages=this.onSelectImages.bind(this)}onSelectImages(e){this.props.setAttributes({images:e.map(e=>Ii(e))})}render(){const e=this.props,t=e.attributes,n=(e.gutter,e.gutterMobile,e.isSelected),r=(e.marginBottom,e.marginLeft,e.marginRight,e.marginTop,e.noticeOperations),a=e.noticeUI,o=t.images,s=!!o.length,l=i()("blockspare-gallery--figure");return wp.element.createElement("div",{className:l},wp.element.createElement(Vi,{addToGallery:s,isAppender:s,dropZoneUIOnly:s&&!n,icon:!s&&wp.element.createElement($i,{icon:this.props.icon}),labels:{title:!s&&Ui(Wi("%s Gallery","blockspare"),this.props.label),instructions:!s&&Wi("Upload an image file, pick one from your media library, or add one with a URL.","blockspare")},onSelect:this.onSelectImages,accept:"image/*",allowedTypes:Fi,multiple:!0,value:s?o:void 0,onError:r.createErrorNotice,notices:s?void 0:a}))}};const Xi=wp.element,Qi=Xi.Component,Ki=Xi.Fragment,Zi=wp.blockEditor.mediaUpload,es=wp.components.DropZone;var ts=class extends Qi{constructor(){super(...arguments),this.addMediaFiles=this.addMediaFiles.bind(this)}addMediaFiles(e){const t=this.props.attributes.images||[],n=this.props,r=n.noticeOperations,a=n.setAttributes;Zi({allowedTypes:Fi,filesList:e,onFileChange:e=>{const n=e.map(e=>Ii(e));a({images:t.concat(n)})},onError:r.createErrorNotice})}render(){return wp.element.createElement(Ki,null,wp.element.createElement(es,{onFilesDrop:this.addMediaFiles,label:this.props.label}))}};function ns(){return(ns=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function rs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function as(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?rs(Object(n),!0).forEach((function(t){os(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):rs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function os(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const is=wp.i18n,ss=is.__,ls=is.sprintf,cs=wp.element,us=cs.Component,ds=cs.Fragment,ps=wp.compose.compose,ms=wp.components,fs=ms.withNotices,hs=(ms.ResizableBox,ms.Toolbar),bs=ms.IconButton,gs=wp.blockEditor,_s=gs.BlockControls,ys=gs.MediaUpload,ks=gs.MediaUploadCheck;var ws=ps([fs])(class extends us{constructor(){super(...arguments),this.onSelectImage=this.onSelectImage.bind(this),this.onRemoveImage=this.onRemoveImage.bind(this),this.onMoveForward=this.onMoveForward.bind(this),this.onMoveBackward=this.onMoveBackward.bind(this),this.setImageAttributes=this.setImageAttributes.bind(this),this.onItemClick=this.onItemClick.bind(this),this.onEditSelectImages=this.onEditSelectImages.bind(this),this.state={selectedImage:null,captionFocused:!1}}componentDidMount(){this.props.setAttributes({lightbox:void 0,lightboxStyle:void 0,shadow:void 0})}componentDidUpdate(e){!this.props.isSelected&&e.isSelected&&this.setState({selectedImage:null,captionSelected:!1,captionFocused:!1}),!this.props.isSelected&&e.isSelected&&this.state.captionFocused&&this.setState({captionFocused:!1}),this.props.attributes.gutter<=0&&this.props.setAttributes({radius:0}),"xlrg"===this.props.attributes.gridSize&&void 0===e.attributes.align&&this.props.setAttributes({gutter:0,gutterMobile:0})}onSelectImage(e){return()=>{this.state.selectedImage!==e&&this.setState({selectedImage:e,captionFocused:!1})}}onMove(e,t){const n=[...this.props.attributes.images];n.splice(t,1,this.props.attributes.images[e]),n.splice(e,1,this.props.attributes.images[t]),this.setState({selectedImage:t}),this.props.setAttributes({images:n})}onMoveForward(e){return()=>{e!==this.props.attributes.images.length-1&&this.onMove(e,e+1)}}onMoveBackward(e){return()=>{0!==e&&this.onMove(e,e-1)}}onRemoveImage(e){return()=>{const t=ei()(this.props.attributes.images,(t,n)=>e!==n);this.setState({selectedImage:null}),this.props.setAttributes({images:t})}}setImageAttributes(e,t){const n=this.props,r=n.attributes.images,a=n.setAttributes;r[e]&&a({images:[...r.slice(0,e),as({},r[e],{},t),...r.slice(e+1)]})}onItemClick(){this.props.isSelected||this.props.onSelect(),this.state.captionFocused&&this.setState({captionFocused:!1})}onEditSelectImages(e){this.props.setAttributes({images:e.map(e=>Ii(e,this.props.attributes.images))})}render(){const e=this.props,t=e.attributes,n=t.images,r=t.numberofSlide,a=t.carouselSpeed,o=t.showsliderNextPrev,s=t.carouselNextIcon,l=t.showDots,c=t.navigationColor,u=t.gutterSpace,d=t.colorFilter,p=t.showOriginalOnHover,m=t.navigationSize,f=(t.enableAutoPlay,e.className,e.isSelected),h=(e.noticeUI,e.setAttributes),b=!!n.length,g=wp.element.createElement(ts,this.props);if(!b)return wp.element.createElement(Ji,ns({},this.props,{label:ss("Carousel","blockspare")}));var _="fas fa-angle-right",y="fas fa-angle-left";"fas fa-angle-right"===s?(_=wp.element.createElement(Ms,null),y=wp.element.createElement(vs,null)):"fas fa-chevron-circle-right"===s?(_=wp.element.createElement(Ts,null),y=wp.element.createElement(Ls,null)):"fas fa-caret-right"===s?(_=wp.element.createElement(Ss,null),y=wp.element.createElement(Es,null)):"fas fa-chevron-right"===s?(_=wp.element.createElement(Cs,null),y=wp.element.createElement(xs,null)):"fas fa-arrow-circle-right"===s?(_=wp.element.createElement(Os,null),y=wp.element.createElement(Ds,null)):(_="fas fa-angle-right",y="fas fa-angle-left");const k={dots:l,loop:!0,speed:a,arrows:o,slidesToShow:r,nextArrow:_,prevArrow:y};return wp.element.createElement(ds,null,wp.element.createElement(_s,null,b&&wp.element.createElement(ds,null,wp.element.createElement(hi,as({setAttributes:h},this.props)),wp.element.createElement(hs,null,wp.element.createElement(ks,null,wp.element.createElement(ys,{onSelect:this.onEditSelectImages,allowedTypes:Fi,multiple:!0,gallery:!0,value:n.map(e=>e.id),render:({open:e})=>wp.element.createElement(bs,{className:"components-toolbar__control",label:ss("Edit gallery","blockspare"),icon:"edit",onClick:e})}))))),g,wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-carousel-wrap","has-gutter-space-"+u,d,"blockspare-original"!==d&&p?"has-hover-effect":"",m)},wp.element.createElement("div",{className:"blockspare-carousel-items",style:{color:c}},wp.element.createElement(gi.a,k,n.map((e,t)=>{const r=ls(ss("image %1$d of %2$d in gallery","blockspare"),t+1,n.length);return wp.element.createElement("div",{className:"blockspare-gallery-item",key:e.id||e.url,onClick:this.onItemClick},wp.element.createElement(ji,{url:e.url,alt:e.alt,id:e.id,marginRight:!0,marginLeft:!0,isSelected:f&&this.state.selectedImage===t,onRemove:this.onRemoveImage(t),onSelect:this.onSelectImage(t),setAttributes:e=>this.setImageAttributes(t,e),caption:e.caption,"aria-label":r,supportsCaption:!1,onMoveBackward:this.onMoveBackward(t),onMoveForward:this.onMoveForward(t),supportsMoving:!0,sizes:e.sizes,inspectorSize:"medium"}))}),f&&wp.element.createElement("div",{className:"blockspare-add-more-slide blockspare-add-more-item"},wp.element.createElement(ks,null,wp.element.createElement(ys,{onSelect:this.onEditSelectImages,allowedTypes:Fi,multiple:!0,gallery:!0,value:n.map(e=>e.id),render:({open:e})=>wp.element.createElement(bs,{className:"aft-cta-inspector-media",label:ss("Edit image","blockspare"),icon:"plus-alt",onClick:e},ss("Add Image","blockspare"))})))))))}});function vs(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-angle-left"),onClick:t})}function Ms(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-angle-right"),onClick:t})}function Ls(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-chevron-circle-left"),onClick:t})}function Ts(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-chevron-circle-right"),onClick:t})}function Es(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-caret-left"),onClick:t})}function Ss(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-caret-right"),onClick:t})}function xs(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-chevron-left"),onClick:t})}function Cs(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-chevron-right"),onClick:t})}function Ds(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-arrow-circle-left"),onClick:t})}function Os(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-arrow-circle-right"),onClick:t})}const Ys=wp.element,js=Ys.Component;Ys.Fragment;const Ps=blockspare_globals,Ns=wp.i18n.__,Bs=wp.blocks.registerBlockType,As=Ko.name,Hs=Ko.category,zs=Ko.attributes;Bs(As,{title:Ns("BS Image Carousel","blockspare"),description:Ns("Add logos, badges and images to build carousel.","blockspare"),category:Hs,icon:a.imagecarousel,attributes:zs,keywords:[Ns("block","blockspare"),Ns("image","blockspare"),Ns("carousel","blockspare"),Ns("slider","blockspare"),Ns("gallery","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{align:"full",images:[{url:Ps.img},{url:Ps.img},{url:Ps.img}],showsliderNextPrev:!0,showDots:!0}},edit:ws,save:class extends js{render(){const e=this.props.attributes,t=e.images,n=e.numberofSlide,r=e.carouselSpeed,a=e.showsliderNextPrev,o=e.carouselNextIcon,s=e.showDots,l=e.navigationColor,c=e.gutterSpace,u=e.colorFilter,d=e.showOriginalOnHover,p=e.navigationSize,m=e.enableAutoPlay;let f=o,h=o.replace("-right","-left"),b={loop:!0,autoplay:m,slidesToShow:n,speed:r,arrows:a,dots:s};var g=JSON.stringify(b);return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-carousel-wrap","has-gutter-space-"+c,u,p,"blockspare-original"!==u&&d?"has-hover-effect":"")},wp.element.createElement("div",{className:"blockspare-carousel-items","data-next":f,"data-prev":h,"data-slick":g,style:{color:l}},t.map((e,t)=>{let n="";return n=void 0===e.sizes.medium?e.url:e.sizes.medium.url,wp.element.createElement("div",{className:"blockspare-gallery-figure "}," ",wp.element.createElement("img",{src:n}))})))}}});var Is=n(46);n(446),n(447);class Fs extends Hr.Component{constructor(e){super(e),this.state={indicator:0,isActive:!1}}componentDidMount(){setTimeout(()=>this.setState({indicator:this.props.percent,isActive:!0}),1e3)}componentWillReceiveProps(e){this.state.isActive&&this.props.percent!==e.percent&&this.setState({indicator:e.percent})}render(){const e=this.state,t=e.indicator,n=e.isActive,r=this.props,a=r.barColor,o=r.barThickness,i=r.percent,s=r.backgroundColor,l=r.percentageTextColor,c=`M ${o/2},${o/2} L ${100-o/2},${o/2}`;return wp.element.createElement("div",{className:"blockspare_progress-bar-container"},wp.element.createElement("div",{className:"blockspare_progress-bar-label",style:{visibility:n?"visible":"hidden",color:l||"#8b249c"}},i,"%"),wp.element.createElement("svg",{className:"blockspare_progress-bar-line",viewBox:`0 0 100 ${o}`,preserveAspectRatio:"none"},wp.element.createElement("path",{className:"blockspare_progress-bar-line-trail",d:c,strokeWidth:o,style:{stroke:s||"#8b249c"}}),wp.element.createElement("path",{className:"blockspare_progress-bar-line-path",d:c,stroke:a||"#2DB7F5",strokeWidth:o,style:{strokeDashoffset:`${100-t}px`}})))}}const Rs=wp.i18n.__,Ws=wp.element,Us=Ws.Component,qs=(Ws.Fragment,wp.blockEditor),Gs=qs.InspectorControls,Vs=qs.PanelColorSettings,$s=wp.components,Js=$s.PanelBody,Xs=($s.SelectControl,$s.RangeControl);class Qs extends Us{render(){const e=this.props.attributes,t=(e.textColor,e.percentageTextColor),n=e.textSize,r=e.barColor,a=(e.backgroundColor,e.barThickness,this.props.setAttributes);return wp.element.createElement(Gs,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Js,{title:Rs("Block Settings"),initialOpen:!1},wp.element.createElement(Xs,{label:Rs("Title Size","blockspare"),value:n,onChange:e=>this.props.setAttributes({textSize:e}),min:14,max:32,step:2}),wp.element.createElement(Vs,{title:Rs("Background Color","blockspare"),initialOpen:!1,colorSettings:[{value:r,onChange:e=>a({barColor:e}),label:Rs("Bar Color","blockspare")},{value:t,onChange:e=>a({percentageTextColor:e}),label:Rs("Percentage Texts Color","blockspare")}]}))))}}function Ks(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Zs(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const el=wp.element,tl=el.Component,nl=el.Fragment,rl=wp.blockEditor,al=rl.BlockControls,ol=rl.RichText,il=rl.AlignmentToolbar,sl=wp.components,ll=sl.Toolbar,cl=sl.RangeControl,ul=wp.i18n.__;var dl=n(47);const pl=wp.element.Component,ml=wp.blockEditor.RichText;const fl=wp.i18n.__,hl=dl.name,bl=dl.attributes,gl=dl.category,_l=wp.blocks.registerBlockType,yl={title:fl("progress","blockspare"),description:fl("Display creative collapsible texts Accordion.","blockspare"),parent:["blockspare/linearprogressbar"],icon:"link",category:gl,supports:{html:!1,inserter:!1,reusable:!1},attributes:bl,edit:class extends tl{render(){const e=this.props,t=e.attributes,n=t.title,r=t.textSize,a=t.textColor,o=(t.percentageTextColor,t.percentage),i=t.barColor,s=t.barThickness,l=t.backgroundColor,c=t.sectionAlignment,u=e.setAttributes;return wp.element.createElement(nl,null,wp.element.createElement(Qs,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ks(Object(n),!0).forEach((function(t){Zs(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ks(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({setAttributes:u},this.props)),wp.element.createElement(al,null,wp.element.createElement(il,{value:c,onChange:e=>{u({sectionAlignment:e})}}),wp.element.createElement(ll,null,wp.element.createElement(cl,{className:"blockspare_progress_bar_value",value:o,onChange:e=>u({percentage:e}),min:0,max:100}))),wp.element.createElement(ol,{tagName:"div",placeholder:ul("Title","blockspare"),keepPlaceholderOnFocus:!0,value:n,className:"blockspare-title",onChange:e=>u({title:e}),style:{textAlign:c,color:a||"#404040",fontSize:r+"px"}}),wp.element.createElement(Fs,{percent:o,barColor:i,barThickness:s,backgroundColor:l}))}},save:class extends pl{constructor(){super(...arguments)}render(){const e=this.props.attributes,t=(e.blockID,e.title),n=e.textSize,r=e.textColor,a=e.percentageTextColor,o=e.percentage,s=e.barColor,l=e.backgroundColor,c=e.barThickness,u=e.sectionAlignment,d={backgroundColor:s||"#2DB7F5"};return wp.element.createElement("div",{className:"blockspare_progress-bar-container"},wp.element.createElement(ml.Content,{tagName:"div",value:t,style:{textAlign:u,color:r||"#404040",fontSize:n+"px"}}),wp.element.createElement("div",{className:"blockspare-skillbar-item","data-percent":o},wp.element.createElement("div",{className:"blockspare_progress-bar-label",style:{color:a||"#8b249c"}},o,"%"),wp.element.createElement("div",{className:i()("blockspare-skillbar","barthickness-"+c),style:{backgroundColor:l||"#8b249c"}},wp.element.createElement("div",{className:"blockspare-skillbar-bar",style:d}))))}}};_l(hl,yl);wp.i18n.__;const kl=wp.element,wl=kl.Component,vl=kl.Fragment,Ml=(wp.components.IconButton,wp.blockEditor.InnerBlocks),Ll=wp.blocks.createBlock,Tl=wp.compose.compose,El=wp.data,Sl=El.withSelect,xl=El.withDispatch;var Cl=Tl([Sl((e,t)=>{const n=t.clientId,r=e("core/block-editor"),a=r.getBlock,o=r.isBlockSelected,i=r.hasSelectedInnerBlock;return{block:a(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),xl(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends wl{constructor(...e){var t,n,r;super(...e),r=e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++){const n="Create stylish Linear progressbar.";t.push(["blockspare/blockspare-skillbar",{itemNumber:e,defaultText:n}])}return t},(n="getProgressbarTemplate")in(t=this)?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,r=e.attributes.uniqueId,a=n.substr(0,6);r?r&&r!=a&&t({uniqueId:a}):t({uniqueId:a})}insertProgressbarItem(){let e;const t=this.props,n=t.clientId,r=t.insertBlock,a=t.block;if(a.innerBlocks&&a.innerBlocks.length){const t=a.innerBlocks[a.innerBlocks.length-1].attributes.itemNumber+1,n=yl.title;e=Object.assign({},{},{itemNumber:t,title1:n,active:!1,defaultText:""})}else e=yl;r(Ll("blockspare/blockspare-skillbar",e),void 0,n)}render(){const e=this.props,t=(e.name,e.attributes),n=(e.isSelectedBlockInRoot,e.setAttributes,e.attributes.uniqueId);return wp.element.createElement(vl,null,wp.element.createElement("div",{className:`blockspare-block-progress-bar blockspare-block-${n}`},wp.element.createElement(Ml,{template:this.getProgressbarTemplate(t),allowedBlocks:["blockspare/blockspare-skillbar"]})))}});const Dl=wp.element.Component,Ol=wp.blockEditor.InnerBlocks;var Yl=class extends Dl{render(){const e=this.props.attributes,t=(e.animation,e.uniqueId),n=(e.itemToggle,e.interaction,`blockspare-block-progress-bar blockspare-block-interaction blockspare-block-${t}`);return wp.element.createElement("div",{className:n},wp.element.createElement(Ol.Content,null))}};const jl=wp.i18n.__,Pl=wp.blocks.registerBlockType,Nl=Is.name,Bl=Is.category,Al=Is.attributes;Pl(Nl,{title:jl("BS Progressbar","blockspare"),description:jl("Display creative Linear Progressbar.","blockspare"),category:Bl,icon:a.progressBar,attributes:Al,keywords:[jl("block","blockspare"),jl("progress","blockspare"),jl("bar","blockspare"),jl("number","blockspare"),jl("counter","blockspare")],supports:{html:!1,className:!1,align:["center","wide","full"]},example:{attributes:{}},edit:Cl,save:Yl});n(448),n(449);var Hl=["blockspare-list-check","blockspare-list-check-square","blockspare-list-check-square-outline","blockspare-list-check-double","blockspare-list-check-circle","blockspare-list-check-circle-outline","blockspare-list-square","blockspare-list-square-outline"];const zl=wp.i18n.__,Il=wp.element,Fl=Il.Component,Rl=Il.Fragment;var Wl=class extends Fl{constructor(e){super(e),this.state={isOpen:!1,filterText:"",showIcons:!1}}render(){const e=this.props,t=e.value,n=e.disableToggle,r=e.colorSettings,a=e.iconColor,o=e.onColorChange,i=this.state.filterText;var s=[];return i.length>2?Hl.forEach(e=>{e.includes(i)&&s.push(e)}):s=Hl,wp.element.createElement("div",{className:`blockspare-field blockspare-field-icon-list ${n?"":"blockspare-toggle-enabled"}`},this.props.label&&wp.element.createElement(Rl,null,n?wp.element.createElement("label",null,this.props.label):wp.element.createElement(Toggle,{label:this.props.label,className:"blockspare-icon-list-toggle",value:!!this.props.value,onChange:()=>this.props.onChange(this.props.value?"":" ")})),r&&wp.element.createElement(Color,{label:zl(" Color"),value:a||"#ccc",onChange:e=>o(e)}),(n||""!=this.props.value)&&wp.element.createElement("div",{className:"blockspare-icon-list-wrapper"},wp.element.createElement("input",{type:"text",value:this.state.filterText,placeholder:"Search...",onChange:e=>this.setState({filterText:e.target.value}),autoComplete:"off"}),wp.element.createElement("div",{className:"blockspare-icon-list-icons"},s.map(e=>wp.element.createElement("span",{className:t==e?"blockspare-active":"",onClick:t=>{this.props.onChange(e)}},wp.element.createElement("span",{className:e}))))))}};const Ul=wp.i18n.__,ql=wp.element.Fragment,Gl=wp.blockEditor,Vl=(Gl.InspectorControls,Gl.PanelColorSettings),$l=wp.components;$l.PanelBody,$l.SelectControl,$l.RangeControl;function Jl(e){const t=e.name,n=e.onChangeName,r=void 0===n?()=>{}:n,a=e.listType,o=(e.onChangeListStyle,e.orderListStyle,e.onChangeOrderListStyle,e.color),i=e.onchangeColor,s=void 0===i?()=>{}:i;Ul("List With icon","blockspare"),Ul("Ordered List","blockspare"),Ul("None","blockspare"),Ul("Style1","blockspare"),Ul("Style2","blockspare"),Ul("Style3","blockspare");return wp.element.createElement(ql,null,"ul"==a&&wp.element.createElement(Wl,{value:t,onChange:r}),wp.element.createElement(Vl,{title:Ul("Color","blockspare"),initialOpen:!1,colorSettings:[{value:o,onChange:s,label:Ul("Icon Color","blockspare")}]}))}const Xl=wp.i18n.__,Ql=wp.element,Kl=Ql.Component,Zl=(Ql.Fragment,wp.blockEditor),ec=Zl.InspectorControls,tc=(Zl.PanelColorSettings,wp.components),nc=tc.PanelBody;tc.ToggleControl,tc.RangeControl;class rc extends Kl{render(){const e=this.props.attributes,t=e.name,n=e.listType,r=e.orderListStyle,a=e.color,o=(e.listBackGroundColor,e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.borderRadius,this.props.setAttributes);return wp.element.createElement(ec,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(nc,{title:Xl("Icon Settings"),initialOpen:!1},wp.element.createElement(Jl,{name:t,onChangeName:e=>o({name:e}),listType:n,onChangeListStyle:e=>o({listType:e}),orderListStyle:r,onChangeOrderListStyle:e=>o({orderListStyle:e}),color:a,onchangeColor:e=>o({color:e})}))))}}function ac(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function oc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ac(Object(n),!0).forEach((function(t){ic(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ac(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ic(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}wp.i18n.__;const sc=wp.blockEditor.RichText,lc=wp.element,cc=lc.Component,uc=lc.Fragment,dc=wp.blockEditor,pc=dc.AlignmentToolbar,mc=dc.BlockControls;function fc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function hc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?fc(Object(n),!0).forEach((function(t){bc(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):fc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function bc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const gc=wp.element.Component,_c=wp.blockEditor.RichText;var yc=class extends gc{render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,r=t.listData,a=t.name,o=t.listType,s=t.orderListStyle,l=t.color,c=t.listBackGroundColor,u=t.borderRadius,d=e.attributes;let p="";return p="ul"==o?a:"ol"==o?s:"",wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-list-wrap"),style:hc({backgroundColor:c,borderRadius:u+"px",paddingTop:c?"20px":"",paddingBottom:c?"20px":"",paddingLeft:c?"20px":"",paddingRight:c?"20px":""},Dt(d))},wp.element.createElement(_c.Content,{tagName:"none"==o?"ul":o,multiline:"li",value:r,className:p,style:{color:l,textAlign:n}}))}},kc=n(48);function wc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Mc=kc.name,Lc=kc.category,Tc=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wc(Object(n),!0).forEach((function(t){vc(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},kc.attributes,{},Vt),Ec=wp.blocks.registerBlockType,Sc=wp.i18n.__;Ec(Mc,{title:Sc("BS Icon List","blockspare"),description:Sc("Icon List allow you to add list with various type of icons","blockspare"),category:Lc,icon:a.iconlist,attributes:Tc,keywords:[Sc("block","blockspare"),Sc("list","blockspare"),Sc("icon","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},edit:class extends cc{render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,r=t.listData,a=t.name,o=t.listType,s=t.orderListStyle,l=t.color,c=t.listBackGroundColor,u=t.borderRadius,d=e.attributes,p=e.setAttributes;let m="";return m="ul"==o?a:"ol"==o?s:"",wp.element.createElement(uc,null,wp.element.createElement(rc,oc({setAttributes:p},this.props)),wp.element.createElement(mc,null,wp.element.createElement(pc,{value:n,onChange:e=>{p({sectionAlignment:e})}})),wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-list-wrap"),style:oc({backgroundColor:c,paddingTop:c?"20px":"",paddingBottom:c?"20px":"",paddingLeft:c?"20px":"",paddingRight:c?"20px":"",borderRadius:u+"px"},Dt(d))},wp.element.createElement(sc,{tagName:"none"==o?"ul":o,multiline:"li",itemProp:"description",keepPlaceholderOnFocus:!0,value:r,onChange:e=>p({listData:e}),className:m,style:{color:l,textAlign:n}})))}},save:yc});n(450),n(451);var xc=n(49);function Cc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Dc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Cc(Object(n),!0).forEach((function(t){Oc(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Cc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Oc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Yc=wp.i18n.__,jc=wp.element,Pc=jc.Component,Nc=jc.Fragment;wp.components.ResizableBox,wp.keycodes.BACKSPACE;var Bc=class extends Pc{constructor(){super(...arguments),this.onRemoveImage=this.onRemoveImage.bind(this),this.onSelectImage=this.onSelectImage.bind(this),this.onMoveForward=this.onMoveForward.bind(this),this.onMoveBackward=this.onMoveBackward.bind(this),this.setImageAttributes=this.setImageAttributes.bind(this),this.onEditSelectImages=this.onEditSelectImages.bind(this),this.state={selectedImage:null}}componentDidMount(){"xlrg"===this.props.attributes.gridSize&&this.props.setAttributes({align:"wide",gridSize:"lrg"})}componentDidUpdate(e){!this.props.isSelected&&e.isSelected&&this.setState({selectedImage:null,captionSelected:!1})}onSelectImage(e){return()=>{this.state.selectedImage!==e&&this.setState({selectedImage:e})}}onMove(e,t){const n=[...this.props.attributes.images];n.splice(t,1,this.props.attributes.images[e]),n.splice(e,1,this.props.attributes.images[t]),this.setState({selectedImage:t}),this.props.setAttributes({images:n})}onMoveForward(e){return()=>{e!==this.props.attributes.images.length-1&&this.onMove(e,e+1)}}onMoveBackward(e){return()=>{0!==e&&this.onMove(e,e-1)}}onRemoveImage(e){return()=>{const t=ei()(this.props.attributes.images,(t,n)=>e!==n);this.setState({selectedImage:null}),this.props.setAttributes({images:t})}}setImageAttributes(e,t){const n=this.props,r=n.attributes.images,a=n.setAttributes;r[e]&&a({images:[...r.slice(0,e),Dc({},r[e],{},t),...r.slice(e+1)]})}onEditSelectImages(e){this.props.setAttributes({images:e.map(e=>Ii(e,this.props.attributes.images))})}render(){let e;switch(this.props.attributes.align){case"wide":e=4;break;case"full":e=5;break;default:e=3}this.props.attributes;const t=this.props,n=t.isSelected,r=t.captions,a=t.images,o=t.linkTo;return wp.element.createElement(Nc,null,wp.element.createElement("ul",{className:"blockspare-logo-wrap"},a.map((e,t)=>{const i=sprintf(Yc("image %1$d of %2$d in gallery","blockspare"),t+1,a.length);return wp.element.createElement("li",{className:"blockspare-gallery-item",key:e.id||e.url},wp.element.createElement(ji,{url:e.url,alt:e.alt,id:e.id,imgLink:e.imgLink,linkTo:o,isFirstItem:0===t,isLastItem:t+1===a.length,isSelected:n&&this.state.selectedImage===t,onSelect:this.onSelectImage(t),onMoveBackward:this.onMoveBackward(t),onMoveForward:this.onMoveForward(t),onRemove:this.onRemoveImage(t),setAttributes:e=>this.setImageAttributes(t,e),caption:e.caption,"aria-label":i,captions:r,supportsCaption:!0}))})))}};function Ac(){return(Ac=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}const Hc=wp.i18n.__,zc=wp.element,Ic=zc.Component,Fc=zc.Fragment,Rc=wp.compose.compose,Wc=wp.components.withNotices,Uc=wp.blockEditor,qc=Uc.MediaPlaceholder,Gc=Uc.BlockIcon;var Vc=Rc([Wc])(class extends Ic{constructor(){super(...arguments),this.onSelectImages=this.onSelectImages.bind(this)}onSelectImages(e){this.props.setAttributes({images:e.map(e=>Ii(e))})}render(){const e=this.props,t=e.className,n=e.noticeOperations,r=e.attributes,o=e.noticeUI,s=e.isSelected,l=r.images,c=r.grayscale,u=!!l.length;i()(t,{"has-filter-grayscale":c});return wp.element.createElement(Fc,null,wp.element.createElement(ts,this.props),wp.element.createElement("div",{className:"blockspare-blocks blockspare-logos-wrapper"},wp.element.createElement(Bc,Ac({},this.props,{images:l})),(!u||s)&&wp.element.createElement(qc,{addToGallery:u,isAppender:u,icon:wp.element.createElement(Gc,{icon:a.edit}),labels:{title:Hc("Logos Grid","blockspare"),instructions:Hc("Upload an image file, pick one from your media library, or add one with a URL","blockspare")},multiple:!0,accept:"image/*",allowedTypes:["image"],value:u?l:void 0,onError:n.createErrorNotice,notices:o,onSelect:this.onSelectImages,className:i()({"is-appender":u})})))}});const $c=wp.blockEditor.RichText;var Jc=({attributes:e,className:t})=>{const n=e.captions,r=e.images,a=e.linkTo,o=e.rel,i=e.target;return wp.element.createElement("div",{className:"blockspare-blocks blockspare-logos-wrapper"},wp.element.createElement("ul",{className:"blockspare-logo-wrap"},r.map(e=>{let t;switch(a){case"media":t=e.url;break;case"attachment":t=e.link}e.imgLink&&(t=e.imgLink);const r=wp.element.createElement("img",{src:e.url,alt:e.alt,"data-id":e.id,"data-imglink":e.imgLink,"data-link":e.link,className:e.id?`wp-image-${e.id}`:null});return wp.element.createElement("li",{key:e.id||e.url,className:"blockspare-gallery-item"},wp.element.createElement("figure",{className:"blockspare-gallery-figure"},t?wp.element.createElement("a",{href:t,target:i,rel:o},r):r,n&&e.caption&&e.caption.length>0&&wp.element.createElement($c.Content,{tagName:"figcaption",className:"blockspare-gallery-caption",value:e.caption})))})))};const Xc=blockspare_globals,Qc=wp.i18n.__,Kc=wp.blocks.registerBlockType,Zc=xc.name,eu=xc.category,tu=xc.attributes;Kc(Zc,{title:Qc("BS Logo Grid","blockspare"),description:Qc("Add logos, badges, or certifications to build credibility.","blockspare"),category:eu,icon:a.logobadge,attributes:tu,keywords:[Qc("block","blockspare"),Qc("logo","blockspare"),Qc("brand","blockspare"),Qc("clients","blockspare"),Qc("grid","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{align:"full",images:[{url:Xc.img,width:420},{url:Xc.img,width:420},{url:Xc.img,width:420},{url:Xc.img,width:420}]}},edit:Vc,save:Jc});n(452);var nu=n(37),ru=n.n(nu),au=n(38),ou=n.n(au),iu=n(1),su=n.n(iu);function lu(){return(lu=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}const cu=wp.hooks,uu=(cu.addFilter,cu.applyFilters),du=wp.i18n.__,pu=wp.element,mu=pu.Component,fu=(pu.Fragment,wp.blockEditor),hu=fu.InspectorControls,bu=fu.PanelColorSettings,gu=wp.components,_u=gu.PanelBody,yu=gu.QueryControls,ku=gu.RangeControl,wu=(gu.SelectControl,gu.TextControl,gu.ToggleControl),vu=wp.url.addQueryArgs,Mu=wp.apiFetch;class Lu extends mu{constructor(){super(...arguments),this.state={categoriesList:[]}}componentDidMount(){this.stillMounted=!0,this.fetchRequest=Mu({path:vu("/wp/v2/categories",{per_page:-1})}).then(e=>{this.stillMounted&&this.setState({categoriesList:e})}).catch(()=>{this.stillMounted&&this.setState({categoriesList:[]})})}componentWillUnmount(){this.stillMounted=!1}imageSizeSelect(){const e=wp.data.select("core/editor").getEditorSettings();return ni()(ai()(e.imageSizes,({name:e,slug:t})=>({value:t,label:e})))}render(){const e=this.props,t=e.attributes,n=t.columns,r=t.postType,a=t.backGroundColor,o=t.design,i=void 0===o?"blockspare-grid-layout-1":o,s=(t.displayPostTitle,t.displayPostCategory),l=t.displayPostAuthor,c=t.displayPostDate,u=(t.displayPostExcerpt,t.displayPostLink,t.excerptLength,t.readMoreText,t.postsToShow,t.enableBackgroundColor,t.marginTop),d=t.marginBottom,p=(t.imageSize,t.order),m=t.orderBy,f=t.categories,h=(t.offset,t.contentOrder,t.equalImageHeight,t.postTitleColor),b=t.postTitleFontSize,g=t.linkColor,_=t.generalColor,y=(t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,t.borderRadius,e.setAttributes),k=e.latestPosts,w=this.state.categoriesList,v=(du("Default","blockspare"),du("Meta → Title → Category → Content","blockspare"),du("Title → Meta → Category → Content","blockspare"),du("Title → Category → Meta → Content","blockspare"),Array.isArray(k)&&k.length),M="post"===r;this.imageSizeSelect();return wp.element.createElement(hu,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(zn,{initialOpen:!1,selected:i,options:uu("blockspare.cta.edit.layouts",[{label:du("Style 1","blockspare"),value:"blockspare-grid-layout-1",image:"images/blockspare-grid-layout-1.png"},{label:du("Style 2","blockspare"),value:"blockspare-grid-layout-2",image:"images/blockspare-grid-layout-2.png"},{label:du("Style 3","blockspare"),value:"blockspare-grid-layout-3",image:"images/blockspare-grid-layout-3.png"}]),onChange:e=>y({design:e})}),wp.element.createElement(_u,{title:du("Block Settings","blockspare"),className:M?null:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(ku,{label:du("Columns","blockspare"),value:n,onChange:e=>y({columns:e}),min:1,max:v?Math.min(3,k.length):3}),wp.element.createElement(bu,{title:du("Title Color","blockspare"),initialOpen:!0,colorSettings:[{value:h,onChange:e=>y({postTitleColor:e}),label:du("Title Color","blockspare")}]}),wp.element.createElement(ku,{label:du("Title Font Size","blockspare"),value:b,onChange:e=>this.props.setAttributes({postTitleFontSize:e}),min:16,max:60,step:1}),M&&wp.element.createElement(wu,{label:du("Display Category","blockspare"),checked:s,onChange:()=>this.props.setAttributes({displayPostCategory:!s})}),M&&wp.element.createElement(wu,{label:du("Display Author","blockspare"),checked:l,onChange:()=>this.props.setAttributes({displayPostAuthor:!l})}),M&&wp.element.createElement(wu,{label:du("Display Date","blockspare"),checked:c,onChange:()=>this.props.setAttributes({displayPostDate:!c})}),"blockspare-grid-layout-4"!=i&&"blockspare-grid-layout-5"!=i&&"blockspare-grid-layout-6"!=i&&wp.element.createElement(bu,{title:du("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:a,onChange:e=>y({backGroundColor:e}),label:du("Background Color","blockspare")}]}),wp.element.createElement(bu,{title:du(" Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:g,onChange:e=>y({linkColor:e}),label:du("Link Color","blockspare")},{value:_,onChange:e=>y({generalColor:e}),label:du("General Color","blockspare")}]})),wp.element.createElement(_u,{title:du("Post Settings","blockspare"),className:M?null:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(yu,lu({order:p,orderBy:m},{categoriesList:w,selectedCategoryId:f,onCategoryChange:e=>y({categories:""!==e?e:void 0}),onOrderChange:e=>y({order:e}),onOrderByChange:e=>y({orderBy:e})}))),wp.element.createElement(_u,{title:du("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:u,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>y({marginTop:e}),marginEnableBottom:!0,marginBottom:d,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>y({marginBottom:e})}))))}}var Tu=e=>{let t="";return t={border:e.borderColor,backgroundColor:e.backGroundColor?e.backGroundColor:void 0,boxShadow:e.enableBoxShadow?e.xOffset+"px "+e.yOffset+"px "+e.blur+"px "+e.spread+"px "+e.shadowColor:"",borderRadius:e.borderRadius?e.borderRadius:null},t};function Eu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Su(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Eu(Object(n),!0).forEach((function(t){xu(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Eu(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function xu(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Cu=wp.compose.compose,Du=wp.element,Ou=Du.Component,Yu=Du.Fragment,ju=wp.i18n.__,Pu=wp.htmlEntities.decodeEntities,Nu=wp.data.withSelect,Bu=wp.components,Au=Bu.Placeholder,Hu=Bu.Spinner;var zu=Cu([Nu((e,t)=>{const n=t.attributes,r=n.order,a=n.categories,o=e("core").getEntityRecords,i=ou()({categories:a,order:r,orderby:t.attributes.orderBy,per_page:t.attributes.postsToShow,offset:t.attributes.offset},e=>!ru()(e));return{latestPosts:o("postType",t.attributes.postType,i)}})])(class extends Ou{render(){const e=this.props,t=e.attributes,n=(t.align,t.columns),r=t.postType,a=t.backGroundColor,o=t.design,s=t.displayPostTitle,l=t.displayPostCategory,c=t.displayPostAuthor,u=t.displayPostDate,d=t.displayPostExcerpt,p=t.displayPostLink,m=t.excerptLength,f=t.readMoreText,h=t.postsToShow,b=t.enableBackgroundColor,g=t.marginTop,_=t.marginBottom,y=t.imageSize,k=void 0===y?"medium":y,w=t.contentOrder,v=(t.borderColor,t.sectionTag),M=t.equalImageHeight,L=t.postTitleColor,T=t.postTitleFontSize,E=t.linkColor,S=t.generalColor,x=(t.borderRadius,e.attributes),C=e.setAttributes,D=e.latestPosts,O=Array.isArray(D)&&D.length,Y="post"===r;if(!O)return wp.element.createElement(Yu,null,wp.element.createElement(Lu,Su({setAttributes:C},this.props)),wp.element.createElement(Au,{icon:"admin-post",label:ju("BS Blocks Posts Grid","blockspare")},Array.isArray(D)?ju("No posts found.","blockspare"):wp.element.createElement(Hu,null)));const j=D.length>h?D.slice(0,h):D,P=v||"section";let N={};"blockspare-grid-layout-4"!==o&&"blockspare-grid-layout-5"!==o&&"blockspare-grid-layout-6"!==o&&(N=Su({},Tu(x)));const B={color:E||"#1977ac"},A={color:S||"#000"},H={marginTop:g?g+"px":void 0,marginBottom:_?_+"px":void 0};return wp.element.createElement(Yu,null,wp.element.createElement(Lu,Su({setAttributes:C},this.props)),wp.element.createElement(P,{className:i()(this.props.className,"blockspare-post-wrap"),style:H},wp.element.createElement("div",{className:i()("blockspare-latest-post-wrap",o,"blockspare-is-grid","column-"+n)},j.map((e,t)=>{const n=(e.featured_image_urls&&e.featured_image_urls[k||"large"]||[])[0];return wp.element.createElement("article",{className:i()("blockspare-post-single",M?"has-img-equal-height":"","blockspare-grid-layout-4"!=o&&"blockspare-grid-layout-5"!=o&&"blockspare-grid-layout-6"!=o?"has-background":""),style:N},n&&wp.element.createElement("figure",{className:"blockspare-post-img"},wp.element.createElement("a",null,wp.element.createElement("img",{src:n,alt:ju("featured","blockspare")}))),wp.element.createElement("div",{className:i()("blockspare-post-content",w)},wp.element.createElement("div",{className:"blockspare-bg-overlay",style:{backgroundColor:b?a:""}}),wp.element.createElement("div",{className:"blockspare-block-post-grid-header"},l&&wp.element.createElement("div",{className:"blockspare-post-category",dangerouslySetInnerHTML:{__html:e.category_info.replace(/href=['"].*?['"]/g,"")},style:B}),s&&wp.element.createElement("h4",{className:"blockspare-block-post-grid-title",style:{fontSize:T+"px"}},wp.element.createElement("a",{style:{color:L||"#404040"},target:"_blank",rel:"bookmark"},Pu(e.title.rendered.trim())||ju("(Untitled)","blockspare"))),Y&&(c||u)&&wp.element.createElement("div",{className:"blockspare-block-post-grid-byline"},c&&e.author_info.display_name&&wp.element.createElement("div",{className:"blockspare-block-post-grid-author"},wp.element.createElement("a",{style:B,className:"blockspare-text-link",target:"_blank",href:e.author_info.author_link},e.author_info.display_name)),u&&e.date_gmt&&wp.element.createElement("time",{dateTime:su()(e.date_gmt).utc().format(),className:"blockspare-block-post-grid-date",style:A},su()(e.date_gmt).local().format("MMMM DD, Y","blockspare")))),(d||p)&&wp.element.createElement("div",{className:"blockspare-block-post-grid-excerpt"},d&&e.excerpt&&wp.element.createElement("div",{style:A,dangerouslySetInnerHTML:{__html:(r=e.excerpt.rendered,h=m,r.split(" ").splice(0,h).join(" "))}}),p&&wp.element.createElement("p",null,wp.element.createElement("a",{style:B,className:"blockspare-block-post-grid-more-link blockspare-text-link",href:e.link,target:"_blank",rel:"bookmark"},f)))));var r,h}))))}});const Iu=wp.i18n.__;(0,wp.blocks.registerBlockType)("blockspare/blockspare-latest-posts-grid",{title:Iu("BS Posts Grid","blockspare"),description:Iu("Add posts grid from selected categories.","blockspare"),category:"blockspare",icon:a.postgrid,keywords:[Iu("block","blockspare"),Iu("post","blockspare"),Iu("blog","blockspare"),Iu("archive","blockspare"),Iu("article","blockspare"),Iu("list","blockspare"),Iu("grid","blockspare"),Iu("latest","blockspare"),Iu("category","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{design:"blockspare-grid-layout-1",postsToShow:2,displayPostCategory:!1,displayPostAuthor:!1,displayPostDate:!1,imageSize:"medium",postTitleFontSize:16}},edit:zu,save:()=>null});n(453);function Fu(){return(Fu=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}const Ru=wp.i18n.__,Wu=wp.element,Uu=Wu.Component,qu=(Wu.Fragment,wp.hooks),Gu=(qu.addFilter,qu.applyFilters),Vu=wp.blockEditor,$u=Vu.InspectorControls,Ju=Vu.PanelColorSettings,Xu=wp.components,Qu=Xu.PanelBody,Ku=Xu.QueryControls,Zu=Xu.RangeControl,ed=(Xu.SelectControl,Xu.TextControl,Xu.ToggleControl),td=wp.url.addQueryArgs,nd=wp.apiFetch;class rd extends Uu{constructor(){super(...arguments),this.state={categoriesList:[]}}componentDidMount(){this.stillMounted=!0,this.fetchRequest=nd({path:td("/wp/v2/categories",{per_page:-1})}).then(e=>{this.stillMounted&&this.setState({categoriesList:e})}).catch(()=>{this.stillMounted&&this.setState({categoriesList:[]})})}componentWillUnmount(){this.stillMounted=!1}imageSizeSelect(){const e=wp.data.select("core/editor").getEditorSettings();return ni()(ai()(e.imageSizes,({name:e,slug:t})=>({value:t,label:e})))}render(){const e=this.props,t=e.attributes,n=t.postType,r=(t.displayPostTitle,t.displayPostCategory),a=t.displayPostAuthor,o=t.displayPostDate,i=(t.displayPostExcerpt,t.displayPostLink,t.excerptLength,t.readMoreText,t.design),s=void 0===i?"blockspare-list-layout-1":i,l=(t.postsToShow,t.backGroundColor),c=(t.enableBackgroundColor,t.marginTop),u=t.marginBottom,d=(t.imageSize,t.order),p=t.orderBy,m=t.categories,f=(t.offset,t.contentOrder,t.postTitleColor),h=t.postTitleFontSize,b=t.linkColor,g=t.generalColor,_=(t.borderRadius,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,e.setAttributes),y=(e.latestPosts,this.state.categoriesList),k=(this.imageSizeSelect(),"post"===n);Ru("Default","blockspare"),Ru("Meta → Title → Category → Content","blockspare"),Ru("Title → Meta → Category → Content","blockspare"),Ru("Title → Category → Meta → Content","blockspare");return wp.element.createElement($u,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(zn,{initialOpen:!1,selected:s,options:Gu("blockspare.cta.edit.layouts",[{label:Ru("Style 1","blockspare"),value:"blockspare-list-layout-1",image:"images/blockspare-list-layout-1.png"},{label:Ru("Style 2","blockspare"),value:"blockspare-list-layout-2",image:"images/blockspare-list-layout-2.png"},{label:Ru("Style 3","blockspare"),value:"blockspare-list-layout-3",image:"images/blockspare-list-layout-3.png"}]),onChange:e=>_({design:e})}),wp.element.createElement(Qu,{title:Ru("Block Settings","blockspare"),className:k?null:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(Ju,{title:Ru("Title Color","blockspare"),initialOpen:!0,colorSettings:[{value:f,onChange:e=>_({postTitleColor:e}),label:Ru("Title Color","blockspare")}]},wp.element.createElement(Zu,{label:Ru("Title Font Size","blockspare"),value:h,onChange:e=>this.props.setAttributes({postTitleFontSize:e}),min:16,max:60,step:1})),k&&wp.element.createElement(ed,{label:Ru("Display Category","blockspare"),checked:r,onChange:()=>this.props.setAttributes({displayPostCategory:!r})}),k&&wp.element.createElement(ed,{label:Ru("Display Author","blockspare"),checked:a,onChange:()=>this.props.setAttributes({displayPostAuthor:!a})}),k&&wp.element.createElement(ed,{label:Ru("Display Date","blockspare"),checked:o,onChange:()=>this.props.setAttributes({displayPostDate:!o})}),"blockspare-list-layout-6"!=s&&"blockspare-list-layout-5"!=s&&"blockspare-list-layout-4"!=s&&wp.element.createElement(Ju,{title:Ru("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:l,onChange:e=>_({backGroundColor:e}),label:Ru("Background Color","blockspare")}]}),wp.element.createElement(Ju,{title:Ru("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:b,onChange:e=>_({linkColor:e}),label:Ru("Link Color","blockspare")},{value:g,onChange:e=>_({generalColor:e}),label:Ru("General Color","blockspare")}]})),wp.element.createElement(Qu,{title:Ru("Post Settings","blockspare"),className:k?null:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(Ku,Fu({order:d,orderBy:p},{categoriesList:y,selectedCategoryId:m,onCategoryChange:e=>_({categories:""!==e?e:void 0}),onOrderChange:e=>_({order:e}),onOrderByChange:e=>_({orderBy:e})}))),wp.element.createElement(Qu,{title:Ru("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:c,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>_({marginTop:e}),marginEnableBottom:!0,marginBottom:u,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>_({marginBottom:e})}))))}}function ad(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function od(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ad(Object(n),!0).forEach((function(t){id(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ad(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function id(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const sd=wp.compose.compose,ld=wp.element,cd=ld.Component,ud=ld.Fragment,dd=wp.i18n.__,pd=wp.htmlEntities.decodeEntities,md=wp.data.withSelect,fd=wp.components,hd=fd.Placeholder,bd=fd.Spinner;var gd=sd([md((e,t)=>{const n=t.attributes,r=n.order,a=n.categories,o=e("core").getEntityRecords,i=ou()({categories:a,order:r,orderby:t.attributes.orderBy,per_page:t.attributes.postsToShow,offset:t.attributes.offset},e=>!ru()(e));return{latestPosts:o("postType",t.attributes.postType,i)}})])(class extends cd{render(){const e=this.props,t=e.attributes,n=t.postType,r=(t.align,t.displayPostTitle),a=t.displayPostCategory,o=t.displayPostAuthor,s=t.displayPostDate,l=t.displayPostExcerpt,c=t.displayPostLink,u=t.excerptLength,d=t.readMoreText,p=t.design,m=t.postsToShow,f=t.sectionTag,h=t.marginTop,b=t.marginBottom,g=t.imageSize,_=void 0===g?"medium":g,y=t.contentOrder,k=t.postTitleColor,w=t.postTitleFontSize,v=t.linkColor,M=t.generalColor,L=e.attributes,T=e.setAttributes,E=e.latestPosts,S=Array.isArray(E)&&E.length,x="post"===n;if(!S)return wp.element.createElement(ud,null,wp.element.createElement(rd,od({setAttributes:T},this.props)),wp.element.createElement(hd,{icon:"admin-post",label:dd("BS Blocks Posts List","blockspare")},Array.isArray(E)?dd("No posts found.","blockspare"):wp.element.createElement(bd,null)));const C=E.length>m?E.slice(0,m):E,D=f||"section";let O={};"blockspare-list-layout-6"!=p&&"blockspare-list-layout-5"!=p&&"blockspare-list-layout-4"!=p&&(O=od({},Tu(L)));const Y={marginTop:h?h+"px":void 0,marginBottom:b?b+"px":void 0},j={color:v||"#1977ac"},P={color:M||"#000"};return wp.element.createElement(ud,null,wp.element.createElement(rd,od({setAttributes:T},this.props)),wp.element.createElement(D,{className:i()(this.props.className,"blockspare-post-wrap"),style:Y},wp.element.createElement("div",{className:i()("blockspare-latest-post-wrap",p,"blockspare-is-list")},C.map((e,t)=>{const n=(e.featured_image_urls&&e.featured_image_urls[_||"large"]||[])[0];return wp.element.createElement("article",{className:i()("blockspare-post-single","blockspare-list-layout-6"!=p&&"blockspare-list-layout-5"!=p&&"blockspare-list-layout-4"!=p?"has-background":""),style:O},n&&wp.element.createElement("figure",{className:"blockspare-post-img"},wp.element.createElement("a",null,wp.element.createElement("img",{src:n,alt:dd("featured","blockspare")}))),wp.element.createElement("div",{className:i()("blockspare-post-content",y)},wp.element.createElement("div",{className:"blockspare-block-post-grid-header"},a&&wp.element.createElement("div",{className:"blockspare-post-category",dangerouslySetInnerHTML:{__html:e.category_info.replace(/href=['"].*?['"]/g,"")},style:j}),r&&wp.element.createElement("h4",{className:"blockspare-block-post-grid-title",style:{fontSize:w+"px"}},wp.element.createElement("a",{style:{color:k||"#404040"},target:"_blank",rel:"bookmark"},pd(e.title.rendered.trim())||dd("(Untitled)","blockspare"))),x&&(o||s)&&wp.element.createElement("div",{className:"blockspare-block-post-grid-byline"},o&&e.author_info.display_name&&wp.element.createElement("div",{className:"blockspare-block-post-grid-author"},wp.element.createElement("a",{style:j,className:"blockspare-text-link",target:"_blank",href:e.author_info.author_link},e.author_info.display_name)),s&&e.date_gmt&&wp.element.createElement("time",{dateTime:su()(e.date_gmt).utc().format(),className:"blockspare-block-post-grid-date",style:P},su()(e.date_gmt).local().format("MMMM DD, Y","blockspare")))),(l||c)&&wp.element.createElement("div",{className:"blockspare-block-post-grid-excerpt"},l&&e.excerpt&&wp.element.createElement("div",{style:P,dangerouslySetInnerHTML:{__html:(m=e.excerpt.rendered,f=u,m.split(" ").splice(0,f).join(" "))}}),c&&wp.element.createElement("p",null,wp.element.createElement("a",{style:j,className:"blockspare-block-post-grid-more-link blockspare-text-link",href:e.link,target:"_blank",rel:"bookmark"},d)))));var m,f}))))}});const _d=wp.i18n.__;(0,wp.blocks.registerBlockType)("blockspare/blockspare-latest-posts-list",{title:_d("BS Posts List","blockspare"),description:_d("Add posts list from selected categories.","blockspare"),category:"blockspare",icon:a.postlist,keywords:[_d("block","blockspare"),_d("post","blockspare"),_d("list","blockspare"),_d("blog","blockspare"),_d("archive","blockspare"),_d("article","blockspare"),_d("latest","blockspare"),_d("category","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{design:"blockspare-list-layout-1",postsToShow:3,displayPostCategory:!1,displayPostAuthor:!1,displayPostDate:!1,imageSize:"medium",postTitleFontSize:16}},edit:gd,save:()=>null});n(454),n(455);var yd=n(50),kd=n(259),wd=n.n(kd);const vd=wp.i18n.__;vd("Dark","blockspare"),vd("Light","blockspare"),vd("None","blockspare");wp.i18n.__;const Md=wp.element,Ld=(Md.Component,Md.Fragment,wp.components);Ld.SelectControl,Ld.ToggleControl,Ld.PanelBody,Ld.TextControl;const Td=wp.i18n.__,Ed=wp.element.Component,Sd=wp.blockEditor.InspectorControls,xd=wp.components,Cd=xd.PanelBody,Dd=xd.RangeControl;xd.ToggleControl,xd.SelectControl;var Od=class extends Ed{constructor(){super(...arguments),this.setCaptionStyleTo=this.setCaptionStyleTo.bind(this)}componentDidUpdate(){this.props.attributes.gutter<=0&&this.props.setAttributes({radius:0})}setCaptionStyleTo(e){this.props.setAttributes({captionStyle:e})}getCaptionsHelp(e){return Td(e?"Showing captions for each media item.":"Toggle to show media captions.","blockspare")}render(){const e=this.props,t=e.attributes,n=(e.setAttributes,t.captions,t.captionStyle,t.gutter);t.gridSize,Td("Small","blockspare"),Td("Medium","blockspare"),Td("Large","blockspare");return wp.element.createElement(Sd,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Cd,{title:Td("Masonry Settings","blockspare")},wp.element.createElement(Dd,{label:Td("Gutter","blockspare"),value:n,onChange:e=>this.props.setAttributes({gutter:e}),min:0,max:50,step:5}))))}};function Yd(){return(Yd=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function jd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?jd(Object(n),!0).forEach((function(t){Nd(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Nd(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Bd=wp.i18n.__,Ad=wp.element,Hd=Ad.Component,zd=Ad.Fragment,Id=wp.compose.compose,Fd=wp.data.withSelect,Rd=wp.components,Wd=Rd.withNotices,Ud=Rd.Toolbar,qd=Rd.IconButton,Gd=wp.blockEditor,Vd=Gd.BlockControls,$d=Gd.MediaUpload,Jd=Gd.MediaUploadCheck,Xd={transitionDuration:0,percentPosition:!0};var Qd=Id([Fd(e=>({editorSidebarOpened:e("core/edit-post").isEditorSidebarOpened(),pluginSidebarOpened:e("core/edit-post").isPluginSidebarOpened(),publishSidebarOpened:e("core/edit-post").isPublishSidebarOpened(),wideControlsEnabled:e("core/editor").getEditorSettings().alignWide})),Wd])(class extends Hd{constructor(){super(...arguments),this.onRemoveImage=this.onRemoveImage.bind(this),this.onSelectImage=this.onSelectImage.bind(this),this.onMoveForward=this.onMoveForward.bind(this),this.onMoveBackward=this.onMoveBackward.bind(this),this.setImageAttributes=this.setImageAttributes.bind(this),this.onEditSelectImages=this.onEditSelectImages.bind(this),this.state={selectedImage:null}}componentDidMount(){"xlrg"===this.props.attributes.gridSize&&this.props.setAttributes({align:"center",gridSize:"lrg"})}componentDidUpdate(e){!this.props.isSelected&&e.isSelected&&this.setState({selectedImage:null,captionSelected:!1})}onSelectImage(e){return()=>{this.state.selectedImage!==e&&this.setState({selectedImage:e})}}onMove(e,t){const n=[...this.props.attributes.images];n.splice(t,1,this.props.attributes.images[e]),n.splice(e,1,this.props.attributes.images[t]),this.setState({selectedImage:t}),this.props.setAttributes({images:n})}onMoveForward(e){return()=>{e!==this.props.attributes.images.length-1&&this.onMove(e,e+1)}}onMoveBackward(e){return()=>{0!==e&&this.onMove(e,e-1)}}onRemoveImage(e){return()=>{const t=ei()(this.props.attributes.images,(t,n)=>e!==n);this.setState({selectedImage:null}),this.props.setAttributes({images:t})}}setImageAttributes(e,t){const n=this.props,r=n.attributes.images,a=n.setAttributes;r[e]&&a({images:[...r.slice(0,e),Pd({},r[e],{},t),...r.slice(e+1)]})}onEditSelectImages(e){this.props.setAttributes({images:e.map(e=>Ii(e,this.props.attributes.images))})}render(){const e=this.props,t=e.attributes,n=(e.className,e.isSelected),r=(e.noticeUI,t.align,t.captions),a=t.gridSize,o=t.gutter,s=t.images,l=t.linkTo,c=!!s.length,u=wp.element.createElement(ts,this.props),d=i()(`has-grid-${a}`,{[`has-gutter-${o}`]:o>0});return c?wp.element.createElement(zd,null,n&&wp.element.createElement(Od,this.props),wp.element.createElement(Vd,null,c&&wp.element.createElement(zd,null,wp.element.createElement(Ud,null,wp.element.createElement(Jd,null,wp.element.createElement($d,{onSelect:this.onEditSelectImages,allowedTypes:Fi,multiple:!0,gallery:!0,value:s.map(e=>e.id),render:({open:e})=>wp.element.createElement(qd,{className:"components-toolbar__control",label:Bd("Edit gallery","blockspare"),icon:"edit",onClick:e})}))))),wp.element.createElement("div",{className:"blockspare-blocks blockspare-masonry-wrapper"},u,wp.element.createElement(wd.a,{elementType:"ul",className:d,options:Xd,disableImagesLoaded:!1,updateOnEachImageLoad:!1},s.map((e,t)=>{const a=sprintf(Bd("image %1$d of %2$d in gallery","blockspare"),t+1,s.length);return wp.element.createElement("li",{className:"blockspare-gallery-item",key:e.id||e.url},wp.element.createElement(ji,{url:e.url,alt:e.alt,id:e.id,imgLink:e.imgLink,linkTo:l,isFirstItem:0===t,isLastItem:t+1===s.length,isSelected:n&&this.state.selectedImage===t,onSelect:this.onSelectImage(t),onMoveBackward:this.onMoveBackward(t),onMoveForward:this.onMoveForward(t),onRemove:this.onRemoveImage(t),setAttributes:e=>this.setImageAttributes(t,e),caption:e.caption,"aria-label":a,captions:r,supportsCaption:!0}))}),wp.element.createElement("li",{className:"blockspare-gallery-item blockspare-gallery-upload"},n&&wp.element.createElement("div",{className:"blockspare-add-more-slide"},wp.element.createElement(Jd,null,wp.element.createElement($d,{onSelect:this.onEditSelectImages,allowedTypes:Fi,multiple:!0,gallery:!0,value:s.map(e=>e.id),render:({open:e})=>wp.element.createElement(qd,{className:"aft-cta-inspector-media",label:Bd("Edit image","blockspare"),icon:"plus-alt",onClick:e},Bd("Add Image","blockspare"))}))))))):wp.element.createElement(Ji,Yd({},this.props,{label:Bd("Masonry","blockspare"),icon:"lionk"}))}});const Kd=wp.blockEditor.RichText;var Zd=({attributes:e,className:t})=>{const n=e.captions,r=e.gridSize,a=e.gutter,o=e.images,s=e.linkTo,l=(e.lightbox,e.rel),c=e.target,u=i()({"has-gutter":a>0}),d=i()(`has-grid-${r}`,{[`has-gutter-${a}`]:a>0});return wp.element.createElement("div",{className:"blockspare-blocks blockspare-masonry-wrapper"},wp.element.createElement("div",{className:u},wp.element.createElement("ul",{className:d},o.map(e=>{let t;switch(s){case"media":t=e.url;break;case"attachment":t=e.link}e.imgLink&&(t=e.imgLink);const r=wp.element.createElement("img",{src:e.url,alt:e.alt,"data-id":e.id,"data-imglink":e.imgLink,"data-link":e.link,className:e.id?`wp-image-${e.id}`:null});return wp.element.createElement("li",{key:e.id||e.url,className:"blockspare-gallery-item"},wp.element.createElement("figure",{className:"blockspare-gallery-figure"},t?wp.element.createElement("a",{href:t,target:c,rel:l},r):r,n&&e.caption&&e.caption.length>0&&wp.element.createElement(Kd.Content,{tagName:"figcaption",className:"blockspare-gallery-caption",value:e.caption})))}))))};var ep={images:{type:"array",default:[],source:"query",selector:".blockspare-gallery-item",query:{url:{source:"attribute",selector:"img",attribute:"src"},link:{source:"attribute",selector:"img",attribute:"data-link"},imgLink:{source:"attribute",selector:"img",attribute:"data-imglink"},alt:{source:"attribute",selector:"img",attribute:"alt",default:""},id:{source:"attribute",selector:"img",attribute:"data-id"},caption:{type:"array",source:"children",selector:"figcaption"}}},linkTo:{type:"string",default:"none"},target:{type:"string"},rel:{type:"string",default:""},align:{type:"string"},gutter:{type:"number",default:15},captions:{type:"boolean",default:!1},captionStyle:{type:"string",default:"dark"},captionColor:{type:"string"}};function tp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function np(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const rp=blockspare_globals,ap=wp.i18n.__,op=wp.blocks.registerBlockType,ip=yd.name,sp=yd.category,lp=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tp(Object(n),!0).forEach((function(t){np(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},ep,{},yd.attributes);op(ip,{title:ap("BS Image Masonry","blockspare"),description:ap("Add Masonry Items","blockspare"),category:sp,icon:a.masonry,attributes:lp,keywords:[ap("block","blockspare"),ap("image","blockspare"),ap("masonry","blockspare"),ap("gallery","blockspare"),ap("column","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{gridSize:"lrg",gutter:5,images:[{url:rp.menu_img_url},{url:rp.img},{url:rp.menu_img_url},{url:rp.img},{url:rp.menu_img_url},{url:rp.menu_img_url},{url:rp.img},{url:rp.menu_img_url},{url:rp.img}]}},edit:Qd,save:Zd});n(456),n(457);var cp=n(51);const up=wp.i18n.__,dp=wp.element,pp=dp.Component,mp=(dp.Fragment,wp.blockEditor),fp=mp.InspectorControls,hp=mp.PanelColorSettings,bp=wp.components,gp=bp.PanelBody,_p=(bp.ToggleControl,bp.RangeControl);class yp extends pp{render(){const e=this.props.attributes,t=e.textsColor,n=e.backGroundColor,r=e.boxBorderColor,a=(e.buttonBackgroundColor,e.buttonTextColor,e.buttonSize,e.buttonShape,e.buttonTarget,e.paddingTop),o=e.paddingRight,i=e.paddingBottom,s=e.paddingLeft,l=e.marginTop,c=e.marginBottom,u=(e.enableButton,e.buttonStyle,e.borderColor,e.borderBtnTextColor,e.fontSize),d=(e.enableGradient,e.backgroundColor1,e.backgroundColor2,e.gradientAngle,e.colorLocation1,e.colorLocation2,e.borderRadius,e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.btnFontWeight,e.btnBorderWidth,this.props.setAttributes);return wp.element.createElement(fp,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(gp,{title:up("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(_p,{label:up("Font Size","blockspare"),value:u,onChange:e=>d({fontSize:e}),min:14,step:2,max:36}),wp.element.createElement(hp,{title:up("Texts Color","blockspare"),initialOpen:!0,colorSettings:[{value:t,onChange:e=>d({textsColor:e}),label:up("Texts Color","blockspare")},{value:n,onChange:e=>d({backGroundColor:e}),label:up("Background Color","blockspare")},{value:r,onChange:e=>d({boxBorderColor:e}),label:up("Dash Color","blockspare")}]})),wp.element.createElement(gp,{title:up("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(gp,{title:up("Padding Settings","blockspare"),initialOpen:!1},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:a,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>d({paddingTop:e}),paddingEnableRight:!0,paddingRight:o,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>d({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:i,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>d({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:s,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>d({paddingLeft:e})})),wp.element.createElement(gp,{title:up("Margin Settings","blockspare"),initialOpen:!1},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:l,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>d({marginTop:e}),marginEnableBottom:!0,marginBottom:c,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>d({marginBottom:e})})))))}}function kp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vp(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Mp=wp.element.Component;class Lp extends Mp{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.backGroundColor,r=t.boxBorderColor,a=t.sectionAlignment,o=t.paddingTop,i=t.paddingRight,s=t.paddingBottom,l=t.paddingLeft,c=t.marginTop,u=t.marginBottom,d=t.borderRadius,p=e.attributes,m=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kp(Object(n),!0).forEach((function(t){vp(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Dt(p),{backgroundColor:n||"#fff",borderColor:r||"#cc0000",textAlign:a,paddingTop:o?o+"px":void 0,paddingRight:i?i+"px":void 0,paddingBottom:s?s+"px":void 0,paddingLeft:l?l+"px":void 0,marginTop:c?c+"px":void 0,marginBottom:u?u+"px":void 0,borderRadius:d+"px"});return wp.element.createElement("div",{className:"blockspare-noticebar-wrapper blockspare-blocks",style:m},this.props.children)}}function Tp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ep(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Tp(Object(n),!0).forEach((function(t){Sp(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Sp(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const xp=wp.element.Component,Cp=wp.blockEditor,Dp=Cp.AlignmentToolbar,Op=Cp.URLInput,Yp=Cp.BlockControls,jp=Cp.RichText,Pp=wp.components,Np=Pp.IconButton,Bp=Pp.Dashicon,Ap=wp.blocks.registerBlockType,Hp=wp.i18n.__,zp=cp.name,Ip=cp.category;const Fp=Ep({},cp.attributes,{},He,{},Vt);Ap(zp,{title:Hp("BS Notice Bar","blockspare"),description:Hp("BS Notice Bar allow you to add various type of notices","blockspare"),category:Ip,icon:a.notice,attributes:Fp,keywords:[Hp("block","blockspare"),Hp("notice","blockspare"),Hp("bar","blockspare"),Hp("announcement","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},edit:class extends xp{render(){const e=this.props,t=e.attributes,n=(t.align,t.buttonText),r=t.buttonUrl,a=t.buttonAlignment,o=t.buttonSize,s=t.buttonShape,l=t.noticeContent,c=t.sectionAlignment,u=t.textsColor,d=t.enableButton,p=t.fontSize,m=e.attributes,f=e.isSelected,h=e.setAttributes,b=Ep({},Ae(m));return[wp.element.createElement(Yp,null,wp.element.createElement(Dp,{value:c,onChange:e=>{h({sectionAlignment:e})}})),wp.element.createElement(yp,Ep({setAttributes:h},this.props)),wp.element.createElement(Lp,this.props,wp.element.createElement("div",{className:"blockspare-section-notice-wrap",style:{textAlign:c,color:u}},wp.element.createElement(jp,{tagName:"div",placeholder:Hp("Add your notice here..","blockspare"),keepPlaceholderOnFocus:!0,value:l,className:"blockspare-title",style:{fontSize:p+"px"},onChange:e=>h({noticeContent:e})})),d&&wp.element.createElement(be,this.props,wp.element.createElement(jp,{tagName:"span",placeholder:Hp("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:n,allowedFormats:[],className:i()("blockspare-button",s,o),style:b,onChange:e=>h({buttonText:e})}),f&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${a}`,onSubmit:e=>e.preventDefault()},wp.element.createElement(Bp,{icon:"admin-links"}),wp.element.createElement(Op,{className:"button-url",value:r,onChange:e=>h({buttonUrl:e})}),wp.element.createElement(Np,{icon:"editor-break",label:Hp("Apply","blockspare"),type:"submit"}))))]}},save:function(e){const t=e.attributes,n=t.align,r=t.buttonText,a=t.buttonUrl,o=t.buttonTarget,s=t.buttonSize,l=t.buttonShape,c=t.sectionAlignment,u=t.noticeContent,d=t.textsColor,p=t.backGroundColor,m=t.boxBorderColor,f=t.paddingTop,h=t.paddingRight,b=t.paddingBottom,g=t.paddingLeft,_=t.marginTop,y=t.marginBottom,k=t.enableButton,w=t.fontSize,v=t.borderRadius,M=Ep({},Dt(e.attributes),{textAlign:c,backgroundColor:p||"#fff",borderColor:m||"#cc0000",paddingTop:f?f+"px":void 0,paddingRight:h?h+"px":void 0,paddingBottom:b?b+"px":void 0,paddingLeft:g?g+"px":void 0,marginTop:_?_+"px":void 0,marginBottom:y?y+"px":void 0,borderRadius:v+"px"}),L=Ep({},Ae(e.attributes));return wp.element.createElement("div",{className:i()("blockspare-noticebar-wrapper","blockspare-blocks","align"+n),style:M},wp.element.createElement("div",{className:"blockspare-section-notice-wrap",style:{textAlign:c,color:d||"#4c4c4c"}},wp.element.createElement("div",{className:"blockspare-title-wrap"},wp.element.createElement("div",e,u&&wp.element.createElement(jp.Content,{tagName:"div",className:"blockspare-notice-content",value:u,style:{fontSize:w+"px"}})))),k&&wp.element.createElement(be,e,r&&wp.element.createElement("a",{href:a,target:o?"_blank":null,rel:o?"noopener noreferrer":null,className:i()("blockspare-button",l,s),style:L},wp.element.createElement(jp.Content,{value:r}))))}});var Rp=n(52);const Wp=wp.element.Component;class Up extends Wp{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=(e.backgroundColor,e.align),n=i()(["blockspare-price-list-section-admin blockspare-price-list"],{["align"+t]:t});return wp.element.createElement("div",{className:n||void 0},this.props.children)}}n(458),n(459);var qp=n(88);const Gp=wp.i18n.__,Vp=wp.element.Component,$p=wp.blockEditor,Jp=$p.InspectorControls,Xp=$p.PanelColorSettings,Qp=wp.components,Kp=Qp.PanelBody,Zp=Qp.ToggleControl;Qp.SelectControl,Qp.RangeControl;class em extends Vp{render(){const e=this.props,t=e.attributes,n=(t.layoutOptions,t.priceUnitPosition,t.showDots),r=(t.priceTitleColor,t.priceColor),a=t.priceUnitColor,o=(t.backgroundColor,t.priceDescriptionColor,t.showImage),i=(t.imgIconOption,t.name,t.iconSize,t.iconStyles,t.iconBackgroundColor,t.iconBorderColor,t.iconColor,t.borderRadius,t.paddingTop),s=t.paddingRight,l=t.paddingBottom,c=t.paddingLeft,u=t.marginTop,d=t.marginBottom,p=(t.blockBorderRadius,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,e.setAttributes);Gp("Layout 1","blockspare"),Gp("Layout 2","blockspare"),Gp("Layout 3","blockspare"),Gp("Before Price","blockspare"),Gp("After Price","blockspare"),Gp("Icon","blockspare"),Gp("Image","blockspare");return wp.element.createElement(Jp,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Kp,{title:Gp("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(Zp,{label:Gp("Display Image ","blockspare"),checked:o,onChange:()=>this.props.setAttributes({showImage:!o})}),wp.element.createElement(Zp,{label:Gp("Display Dots","blockspare"),checked:n,onChange:()=>this.props.setAttributes({showDots:!n})})),wp.element.createElement(Kp,{title:Gp("Color Settings","blockspare"),initialOpen:!1},wp.element.createElement(Xp,{title:Gp("Colors","blockspare"),initialOpen:!0,colorSettings:[{value:r,onChange:e=>p({priceColor:e}),label:Gp("Price Color","blockspare")},{value:a,onChange:e=>p({priceUnitColor:e}),label:Gp("Unit Color","blockspare")}]})),wp.element.createElement(Kp,{title:Gp("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(Kp,{title:Gp("Padding Settings","blockspare"),initialOpen:!0},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:i,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>p({paddingTop:e}),paddingEnableRight:!0,paddingRight:s,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>p({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:l,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>p({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:c,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>p({paddingLeft:e})})),wp.element.createElement(Kp,{title:Gp("Margin Settings","blockspare"),initialOpen:!0},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:u,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>p({marginTop:e}),marginEnableBottom:!0,marginBottom:d,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>p({marginBottom:e})})))))}}function tm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function nm(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tm(Object(n),!0).forEach((function(t){rm(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tm(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function rm(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const am=blockspare_globals,om=["core/image"],im=[["core/image",{url:am.menu_img_url,className:"is-style-circle-mask",width:120,height:120,align:"center"}]],sm=wp.i18n.__,lm=wp.element,cm=lm.Component,um=lm.Fragment,dm=wp.blockEditor,pm=dm.RichText,mm=dm.InnerBlocks;function fm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function hm(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?fm(Object(n),!0).forEach((function(t){bm(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):fm(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function bm(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const gm=wp.blockEditor,_m=gm.InnerBlocks,ym=gm.RichText,km=wp.element.Component;function wm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vm(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Mm=wp.i18n.__,Lm=wp.blocks.registerBlockType,Tm=qp.category,Em=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wm(Object(n),!0).forEach((function(t){vm(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wm(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},qp.attributes,{},Rt,{},Vt),Sm={title:Mm("Price List Item","blockspare"),description:Mm("Display creative Price List, Menu .","blockspare"),parent:["blockspare/blockspare-price-list"],icon:"link",category:Tm,supports:{html:!1,inserter:!1,reusable:!1},attributes:Em,edit:class extends cm{render(){const e=this.props,t=e.attributes,n=t.price,r=t.priceTitle,a=t.priceDescription,o=t.priceUnit,s=t.layoutOptions,l=t.priceUnitPosition,c=t.showDots,u=t.priceTitleColor,d=t.priceColor,p=t.priceUnitColor,m=t.priceDescriptionColor,f=t.backgroundColor,h=t.showImage,b=t.imgIconOption,g=t.name,_=t.iconSize,y=t.iconStyles,k=t.blockBorderRadius,w=e.attributes,v=e.setAttributes,M=nm({},$a(w));return wp.element.createElement(um,null,wp.element.createElement(em,this.props),wp.element.createElement("div",{className:i()("blockspare-price-list-wrap",s,l),style:nm({},Ot(w),{},Dt(w),{backgroundColor:f||"#fff",borderRadius:k||null})},wp.element.createElement("div",{className:"blockspare-img-wrapper"},h&&"image"==b&&wp.element.createElement(mm,{template:im,allowedBlocks:om,templateLock:!0,templateInsertUpdatesSelection:!0})),h&&"icon"==b&&wp.element.createElement("div",{className:"blockspare-block-icon-wrapper"},wp.element.createElement("div",{className:i()("blockspare-block-icon",_,y),style:M},wp.element.createElement("i",{className:g}))),wp.element.createElement("div",{className:"blockspare-price-content"},wp.element.createElement("div",{className:"blockspare-price-header"},wp.element.createElement(pm,{tagName:"h4",className:"blockspare-title",onChange:e=>v({priceTitle:e}),value:r,style:{color:u||"#404040"},placeholder:sm("Title","blockspare"),keepPlaceholderOnFocus:!0}),c&&wp.element.createElement("span",{className:"blockspare-price-divider",style:{color:m||"#6d6d6d"}}),wp.element.createElement("div",{className:"blockspare-price-unit-wrap"},wp.element.createElement(pm,{tagName:"span",className:"blockspare-price",onChange:e=>v({price:e}),value:n,style:{color:d||"#af0000"},placeholder:sm("Price","blockspare"),keepPlaceholderOnFocus:!0}),wp.element.createElement(pm,{tagName:"span",className:"blockspare-unit",onChange:e=>v({priceUnit:e}),value:o,style:{color:p||"#af0000"},placeholder:sm("$","blockspare"),keepPlaceholderOnFocus:!0}))),wp.element.createElement(pm,{tagName:"p",className:"blockspare-description",onChange:e=>v({priceDescription:e}),value:a,placeholder:sm("Description","blockspare"),style:{color:m||"#6d6d6d"},keepPlaceholderOnFocus:!0}))))}},save:class extends km{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.priceTitle,r=t.priceDescription,a=t.priceUnit,o=t.price,s=t.layoutOptions,l=t.priceUnitPosition,c=t.showDots,u=t.priceTitleColor,d=t.priceColor,p=t.priceUnitColor,m=t.priceDescriptionColor,f=t.backgroundColor,h=t.showImage,b=t.imgIconOption,g=t.name,_=t.iconSize,y=t.iconStyles,k=t.blockBorderRadius,w=e.attributes,v=hm({},$a(w));return wp.element.createElement("div",{className:i()("blockspare-price-list-wrap",s,l),style:hm({},Ot(w),{},Dt(w),{backgroundColor:f||"#fff",borderRadius:k||null})},wp.element.createElement("div",{className:"blockspare-imge-wrapper"},h&&"image"==b&&wp.element.createElement(_m.Content,null)),h&&"icon"==b&&wp.element.createElement("div",{className:"blockspare-block-icon-wrapper"},wp.element.createElement("div",{className:i()("blockspare-block-icon",_,y),style:v},wp.element.createElement("i",{className:g}))),wp.element.createElement("div",{className:"blockspare-price-content"},wp.element.createElement("div",{className:"blockspare-price-header"},wp.element.createElement(ym.Content,{tagName:"h4",className:"blockspare-title",value:n,style:{color:u||"#404040"}}),c&&wp.element.createElement("span",{className:"blockspare-price-divider",style:{color:m||"#6d6d6d"}}),wp.element.createElement("div",{className:"blockspare-price-unit-wrap"},wp.element.createElement(ym.Content,{tagName:"span",className:"blockspare-price",value:o,style:{color:d||"#af0000"}}),wp.element.createElement(ym.Content,{tagName:"span",className:"blockspare-unit",value:a,style:{color:p||"#af0000"}}))),wp.element.createElement(ym.Content,{tagName:"p",className:"blockspare-description",value:r,style:{color:m||"#6d6d6d"}})))}}};Lm("blockspare/list-item",Sm);const xm=wp.i18n.__,Cm=wp.element,Dm=Cm.Component,Om=Cm.Fragment,Ym=wp.components,jm=(Ym.IconButton,Ym.PanelBody),Pm=wp.blocks.createBlock,Nm=wp.data,Bm=Nm.withSelect,Am=Nm.withDispatch,Hm=wp.blockEditor,zm=Hm.InnerBlocks,Im=Hm.InspectorControls,Fm=Hm.PanelColorSettings,Rm=wp.compose.compose;var Wm=Rm([Bm((e,t)=>{const n=t.clientId,r=e("core/block-editor"),a=r.getBlock,o=r.isBlockSelected,i=r.hasSelectedInnerBlock;return{block:a(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),Am(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends Dm{constructor(...e){var t,n,r;super(...e),r=e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++)t.push(["blockspare/list-item",{}]);return t},(n="getPriceTemplate")in(t=this)?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,r=e.attributes.uniqueId,a=n.substr(0,6);r?r&&r!=a&&t({uniqueId:a}):t({uniqueId:a})}insertPriceItem(){let e;const t=this.props,n=t.clientId,r=t.insertBlock,a=t.block;if(a.innerBlocks&&a.innerBlocks.length){const t=a.innerBlocks[a.innerBlocks.length-1].attributes.itemNumber+1,n=Sm.heading;e=Object.assign({},{},{itemNumber:t,heading:n,active:!1,defaultText:""})}else e=Sm;r(Pm("blockspare/list-item",e),void 0,n)}render(){const e=this.props,t=(e.align,e.attributes),n=e.backgroundColor,r=(e.isSelectedBlockInRoot,e.setAttributes);e.attributes.uniqueId;return[wp.element.createElement(Om,null,wp.element.createElement(Im,null,wp.element.createElement(jm,{title:xm("Block Settings","blockspare")},wp.element.createElement(Fm,{title:xm("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:n,onChange:e=>r({backgroundColor:e}),label:xm("Background Color","blockspare")}]}))),wp.element.createElement(Up,this.props,wp.element.createElement(zm,{template:this.getPriceTemplate(t),allowedBlocks:["blockspare/list-item"]})))]}});const Um=wp.element.Component,qm=wp.blockEditor.InnerBlocks;var Gm=class extends Um{render(){const e=this.props.attributes,t=e.uniqueId,n=(e.itemToggle,e.align),r=(e.backgroundColor,`blockspare-block-pricelist blockspare-blocks blockspare-block-${t} align${n}`);return wp.element.createElement("div",{className:r},wp.element.createElement(qm.Content,null))}};const Vm=wp.i18n.__,$m=(wp.element.Component,wp.blocks.registerBlockType);!function(e){if(null==e)throw new TypeError("Cannot destructure undefined")}(wp.blockEditor);const Jm=Rp.name,Xm=Rp.category,Qm=Rp.attributes;$m(Jm,{title:Vm("BS Price List","blockspare"),description:Vm("Add a price list.","blockspare"),category:Xm,icon:a.pricingList,attributes:Qm,keywords:[Vm("block","blockspare"),Vm("price","blockspare"),Vm("list","blockspare"),Vm("table","blockspare"),Vm("pricing","blockspare"),Vm("shop","blockspare"),Vm("purchase","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},edit:Wm,save:Gm});var Km=n(53);const Zm=wp.element.Component;class ef extends Zm{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.columns,r=(t.columnsGap,t.align),a=(e.attributes,i()([this.props.className,"blockspare-pricing-columns-"+n],{["align"+r]:r}));return wp.element.createElement("div",{className:a||void 0},this.props.children)}}const tf=wp.i18n.__,nf=wp.element.Component,rf=wp.blockEditor.InspectorControls,af=wp.components,of=(af.Toolbar,af.Button,af.PanelBody),sf=(af.PanelRow,af.RangeControl);class lf extends nf{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.columns,r=t.columnsGap,a=t.marginTop,o=t.marginBottom,i=(e.isSelected,e.className,e.setAttributes);return wp.element.createElement(rf,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper pricing-table-blockspare"},wp.element.createElement(of,{title:tf("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(sf,{label:tf("Pricing Columns","blockspare"),value:n,onChange:e=>this.props.setAttributes({columns:e}),min:1,max:3,withInputField:!1}),wp.element.createElement(sf,{label:tf("Pricing Columns Gap","blockspare"),value:r,withInputField:!1,onChange:e=>this.props.setAttributes({columnsGap:e}),min:0,max:4,step:1})),wp.element.createElement(of,{title:tf("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:a,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>i({marginTop:e}),marginEnableBottom:!0,marginBottom:o,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>i({marginBottom:e})}))))}}var cf=n(54);const uf=wp.i18n.__,df=wp.element,pf=df.Component,mf=(df.Fragment,wp.blockEditor),ff=mf.InspectorControls,hf=(mf.BlockDescription,mf.MediaUpload,mf.PanelColorSettings),bf=wp.components,gf=(bf.Dashicon,bf.Button,bf.PanelBody),_f=(bf.SelectControl,bf.FormToggle,bf.RangeControl);bf.TextControl,bf.ToggleControl;class yf extends pf{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.borderWidth,r=t.borderColor,a=(t.borderRadius,t.backgroundColor),o=t.padding,i=t.sectionScale,s=(t.enableBadge,t.badgeText,t.badgeStyle,t.badgeOption,t.imgID1,t.imgURL1,t.imgAlt1,t.badgeTextColor,t.badgeBackGroundColor,t.badgeImgSize,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,e.isSelected,e.className,e.setAttributes);uf("Style 1","blockspare"),uf("Style 2","blockspare"),uf("Style 3","blockspare"),uf("Text","blockspare"),uf("Image","blockspare");return wp.element.createElement(ff,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(gf,{title:uf("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(_f,{label:uf("Pricing Column Padding","blockspare"),value:o,onChange:e=>this.props.setAttributes({padding:e}),min:0,max:20,step:1}),wp.element.createElement(_f,{label:uf("Pricing Column Border","blockspare"),value:n,onChange:e=>this.props.setAttributes({borderWidth:e}),min:0,max:10,step:1}),wp.element.createElement(_f,{label:uf("Scale Ratio","blockspare"),value:i,onChange:e=>this.props.setAttributes({sectionScale:e}),min:0,max:2,step:1})),wp.element.createElement(gf,{title:uf("Color Settings","blockspare"),initialOpen:!1},0<n&&wp.element.createElement(hf,{title:uf("Border Color","blockspare"),initialOpen:!1,colorSettings:[{value:r,onChange:e=>s({borderColor:e}),label:uf("Border Color","blockspare")}]}),wp.element.createElement(hf,{title:uf("Background Color","blockspare"),initialOpen:!1,colorSettings:[{value:a,onChange:e=>s({backgroundColor:e}),label:uf("Background Color","blockspare")}]}))))}}n(460),n(461);function kf(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function wf(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kf(Object(n),!0).forEach((function(t){vf(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kf(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function vf(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Mf=wp.i18n.__,Lf=(wp.element.Component,wp.blocks.registerBlockType),Tf=wp.blockEditor.InnerBlocks,Ef=wp.element.Fragment,Sf=["blockspare/blockspare-pricing-inner-title","blockspare/blockspare-pricing-inner-price","blockspare/blockspare-pricing-inner-description","blockspare/blockspare-pricing-inner-button","blockspare/blockspare-iconset"],xf=(cf.name,cf.category),Cf=wf({},cf.attributes,{},Vt),Df={title:Mf("BS Pricing Column","blockspare"),description:Mf("Add a pricing column.","blockspare"),icon:"cart",category:xf,parent:["blockspare/blockspare-pricing"],keywords:[Mf("pricing","blockspare"),Mf("shop","blockspare"),Mf("buy","blockspare")],attributes:Cf,edit:function(e){const t=e.attributes,n=t.borderWidth,r=t.borderColor,a=t.borderRadius,o=t.backgroundColor,s=t.padding,l=t.alignment,c=t.sectionScale,u=t.enableBadge,d=t.badgeText,p=t.badgeStyle,m=t.badgeOption,f=(t.imgID1,t.imgURL1),h=t.imgAlt1,b=t.badgeTextColor,g=t.badgeBackGroundColor,_=t.badgeImgSize,y=(t.attributes,t.isSelected,t.className,t.setAttributes,wf({},Dt(e.attributes),{borderWidth:n||null,borderStyle:0<n?"solid":null,borderColor:r||"#ececec",borderRadius:a||null,backgroundColor:o||"#fff",padding:s?s+"%":null})),k={color:b||"#fff",backgroundColor:g},w={width:_+"px"};let v="";return v=u&&d&&"badge-text"===m?p:u&&"badge-image"===m?p+" has-image":"",wp.element.createElement(Ef,null,wp.element.createElement(yf,e),wp.element.createElement("div",{className:i()(l?"blockspare-block-pricing-table-"+l:"blockspare-block-pricing-table-center","blockspare-block-pricing-table")},wp.element.createElement("div",{className:i()("blockspare-block-pricing-table-inside",v,Of(c),{"has-scale-ratio":0!==c}),style:y},u&&d&&"badge-text"===m&&wp.element.createElement("div",{className:"blockspare-badge-wrapper"},wp.element.createElement("div",{className:"blockspare-badge"},wp.element.createElement("span",{className:i()(p),style:k},d))),u&&"badge-image"===m&&wp.element.createElement("div",{className:i()(p),style:w},wp.element.createElement("img",{src:f,alt:h})),wp.element.createElement(Tf,{template:[["blockspare/blockspare-iconset",{}],["blockspare/blockspare-pricing-inner-title",{headerTitle:"<strong> Price Title </strong>",headerSubTitle:"Enter Subtitle",titlePaddingTop:5,titlePaddingBottom:5,subtitlePaddingTop:10,subtitlePaddingBottom:10}],["blockspare/blockspare-pricing-inner-price",{price:"59",currency:"$",customFontSize:32,term:"/mo",paddingTop:10,paddingRight:20,paddingBottom:10,paddingLeft:20}],["blockspare/blockspare-pricing-inner-description",{features:"<li>40 Team Members</li><li>40 Personal Contacts</li><li>4000 Message</li>",multilineTag:"li",ordered:!1,customFontSize:16,FontSize:"small",paddingTop:15,paddingRight:20,paddingBottom:15,paddingLeft:20}],["blockspare/blockspare-pricing-inner-button",{buttonText:"Get Started",paddingTop:15,paddingRight:20,paddingBottom:35,paddingLeft:20}]],allowedBlocks:Sf,renderAppender:!1}))))},save:function(e){const t=e.attributes,n=t.borderWidth,r=t.borderColor,a=t.borderRadius,o=t.backgroundColor,s=t.alignment,l=t.padding,c=t.sectionScale,u=t.enableBadge,d=t.badgeText,p=t.badgeStyle,m=t.badgeOption,f=(t.imgID1,t.imgURL1),h=t.imgAlt1,b=t.badgeTextColor,g=t.badgeBackGroundColor,_=t.badgeImgSize,y=wf({},Dt(e.attributes),{borderWidth:n||null,borderStyle:0<n?"solid":null,borderColor:r||null,borderRadius:a||null,backgroundColor:o||"#fff",padding:l?l+"%":null}),k={color:b||"#fff",backgroundColor:g},w={width:_+"px"};let v="";return v=u&&d&&"badge-text"===m?p:u&&"badge-image"===m?p+" has-image":"",wp.element.createElement("div",{className:i()(s?"blockspare-block-pricing-table-"+s:"blockspare-block-pricing-table-center","blockspare-block-pricing-table"),itemScope:!0,itemType:"http://schema.org/Product"},wp.element.createElement("div",{className:i()("blockspare-block-pricing-table-inside",v,Of(c),{"has-scale-ratio":0!==c}),style:y},u&&d&&"badge-text"===m&&wp.element.createElement("div",{className:"blockspare-badge-wrapper"},wp.element.createElement("div",{className:"blockspare-badge"},wp.element.createElement("span",{className:i()(p),style:k},d))),u&&"badge-image"===m&&wp.element.createElement("div",{className:i()(p),style:w},wp.element.createElement("img",{src:f,alt:h})),wp.element.createElement(Tf.Content,null)))}};function Of(e){return"has-scale-ratio-"+1*Math.round(e)}function Yf(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function jf(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Lf("blockspare/blockspare-pricing-inner",Df);wp.i18n.__;const Pf=wp.element,Nf=Pf.Component,Bf=Pf.Fragment,Af=wp.components,Hf=(Af.IconButton,Af.PanelBody,Af.RangeControl,Af.ToggleControl,wp.blocks.createBlock),zf=wp.data,If=zf.withSelect,Ff=zf.withDispatch,Rf=wp.blockEditor,Wf=Rf.InnerBlocks,Uf=(Rf.InspectorControls,wp.compose.compose);var qf=Uf([If((e,t)=>{const n=t.clientId,r=e("core/block-editor"),a=r.getBlock,o=r.isBlockSelected,i=r.hasSelectedInnerBlock;return{block:a(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),Ff(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends Nf{constructor(...e){super(...e),jf(this,"getServiceTemplate",e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++)t.push(["blockspare/blockspare-pricing-inner",{}]);return t})}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,r=e.attributes.uniqueId,a=n.substr(0,6);r?r&&r!=a&&t({uniqueId:a}):t({uniqueId:a})}insertServiceItem(){let e;const t=this.props,n=t.clientId,r=t.insertBlock,a=t.block;if(a.innerBlocks&&a.innerBlocks.length){const t=a.innerBlocks[a.innerBlocks.length-1].attributes.itemNumber+1,n=Df.heading;e=Object.assign({},{},{itemNumber:t,heading:n,active:!1,defaultText:""})}else e=Df;r(Hf("blockspare/blockspare-pricing-inner",e),void 0,n)}render(){const e=this.props,t=e.attributes,n=(e.isSelectedBlockInRoot,e.attributes),r=n.marginTop,a=n.marginBottom,o=n.columnsGap,s=(e.isSelected,e.setAttributes);return wp.element.createElement(Bf,null,wp.element.createElement(lf,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yf(Object(n),!0).forEach((function(t){jf(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yf(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({setAttributes:s},this.props)),wp.element.createElement("div",{className:"blockspare-blocks blockspare-pricing-block-wrapper",style:{marginTop:r?r+"px":void 0,marginBottom:a?a+"px":void 0}},wp.element.createElement(ef,this.props,wp.element.createElement("div",{className:i()("blockspare-pricing-table-wrap-admin","blockspare-block-pricing-table-gap-"+o)},wp.element.createElement(Wf,{template:this.getServiceTemplate(t),allowedBlocks:["blockspare/blockspare-pricing-inner"],renderAppender:!1})))))}}),Gf=n(260),Vf=n.n(Gf),$f=n(261),Jf=n.n($f);const Xf=wp.i18n.__,Qf=(wp.element.Component,wp.blocks.registerBlockType),Kf=wp.blockEditor.InnerBlocks,Zf=(Vf()(e=>Jf()(e,()=>["blockspare/blockspare-pricing-inner"])),Km.name),eh=Km.category,th=Km.attributes;Qf(Zf,{title:Xf("BS Pricing Table","blockspare"),description:Xf("Add a pricing table.","blockspare"),category:eh,icon:a.pricingTable,attributes:th,keywords:[Xf("block","blockspare"),Xf("price","blockspare"),Xf("list","blockspare"),Xf("table","blockspare"),Xf("pricing","blockspare"),Xf("shop","blockspare"),Xf("purchase","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},edit:qf,save:function(e){const t=e.attributes,n=t.align,r=(t.columns,t.columnsGap),a=t.marginTop,o=t.marginBottom,s=i()(["blockspare-pricing-table-wrap","blockspare-block-pricing-table-gap-"+r]);return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-pricing-block-wrapper","align"+n),style:{marginTop:a?a+"px":void 0,marginBottom:o?o+"px":void 0}},wp.element.createElement(ef,e,wp.element.createElement("div",{className:s||void 0},wp.element.createElement(Kf.Content,null))))}});var nh=n(89);const rh=wp.i18n.__,ah=wp.element.Component,oh=(wp.compose.compose,wp.blockEditor.InspectorControls),ih=wp.components,sh=(ih.withFallbackStyles,ih.PanelBody);class lh extends ah{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.titleFontSize,n=e.subtitleFontSize,r=e.headerTagOption,a=e.headertitleColor,o=e.headersubtitleColor,i=e.headerlayoutOption,s=e.titlePaddingTop,l=e.titlePaddingBottom,c=e.subtitlePaddingTop,u=e.subtitlePaddingBottom,d=e.dashColor,p=e.headerboxColor,m=this.props.setAttributes;return wp.element.createElement(oh,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(sh,{title:rh("Header Settings","blockspare"),initialOpen:!0},wp.element.createElement(bt,{enableBlockGaps:!1,titleFontSize:t,onChangetitleFontSize:e=>m({titleFontSize:e}),subtitleFontSize:n,onChangesubtitleFontSize:e=>m({subtitleFontSize:e}),headerlayoutOption:i,onChangeHeaderStyle:e=>m({headerlayoutOption:e}),headerTagOption:r,onChangeHeaderTag:e=>m({headerTagOption:e}),headerboxColor:p,onChangeboxcolor:e=>m({headerboxColor:e}),dashColor:d,onChangeDashColor:e=>m({dashColor:e}),headertitleColor:a,onChangetitlecolor:e=>m({headertitleColor:e}),titlePaddingTop:s,onChangetitlePaddingTop:e=>m({titlePaddingTop:e}),titlePaddingBottom:l,onChangetitlePaddingBottom:e=>m({titlePaddingBottom:e}),headersubtitleColor:o,onChangesubtitlecolor:e=>m({headersubtitleColor:e}),subtitlePaddingTop:c,onChangesubtitlePaddingTop:e=>m({subtitlePaddingTop:e}),subtitlePaddingBottom:u,onChangesubtitlePaddingBottom:e=>m({subtitlePaddingBottom:e})}))))}}function ch(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function uh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ch(Object(n),!0).forEach((function(t){dh(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ch(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function dh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ph=wp.i18n.__,mh=(wp.compose.compose,wp.element),fh=mh.Component,hh=mh.Fragment,bh=wp.blockEditor,gh=bh.RichText,_h=bh.AlignmentToolbar,yh=bh.BlockControls;function kh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function wh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kh(Object(n),!0).forEach((function(t){vh(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function vh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Mh=wp.i18n.__,Lh=wp.blocks.registerBlockType,Th=wp.blockEditor,Eh=Th.RichText,Sh=(Th.getFontSizeClass,Th.getColorClassName,nh.name),xh=nh.category,Ch=wh({},Ft);Lh(Sh,{title:Mh("Price Title","blockspare"),description:Mh("Adds a product title component with schema markup.","blockspare"),category:xh,icon:a.sectionHeader,attributes:Ch,parent:["blockspare/blockspare-pricing-inner"],keywords:[Mh("pricing table","blockspare"),Mh("title","blockspare"),Mh("shop","blockspare")],edit:class extends fh{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,r=t.headerTagOption,a=t.headerTitle,o=t.headerSubTitle,i=e.attributes,s=e.setAttributes,l=uh({},Ut(i)),c=uh({},qt(i)),u=uh({},Gt(i));return[wp.element.createElement(hh,null,wp.element.createElement(yh,{key:"controls"},wp.element.createElement(_h,{value:n,onChange:e=>{s({sectionAlignment:e})}})),wp.element.createElement(lh,this.props),wp.element.createElement("div",{className:"blockspare-section-head-wrap"},wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:l}),wp.element.createElement(gh,{tagName:r,placeholder:ph("Title","blockspare"),keepPlaceholderOnFocus:!0,value:a,className:"blockspare-title",style:c,onChange:e=>s({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:l})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:l}),wp.element.createElement(gh,{tagName:"p",placeholder:ph("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:o,className:"blockspare-subtitle",style:u,onChange:e=>s({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:l})))))]}},save:function(e){const t=e.attributes,n=t.headerTagOption,r=t.headerTitle,a=t.headerSubTitle,o=wh({},Ut(e.attributes)),i=wh({},qt(e.attributes)),s=wh({},Gt(e.attributes));return wp.element.createElement("div",{className:"blockspare-title-wrap"},wp.element.createElement(It,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),r&&wp.element.createElement(Eh.Content,{tagName:n,className:"blockspare-title",style:i,value:r}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),a&&wp.element.createElement(Eh.Content,{tagName:"p",className:"blockspare-subtitle",style:s,value:a}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o}))))}});var Dh=n(55);function Oh(){return(Oh=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}const Yh=wp.i18n.__,jh=wp.element.Component,Ph=wp.compose.compose,Nh=wp.blockEditor,Bh=Nh.InspectorControls,Ah=(Nh.FontSizePicker,Nh.withFontSizes),Hh=Nh.withColors,zh=Nh.ContrastChecker,Ih=Nh.PanelColorSettings,Fh=wp.components,Rh=Fh.withFallbackStyles,Wh=Fh.PanelBody,Uh=Fh.ToggleControl,qh=Fh.TextControl,Gh=(Fh.RangeControl,Rh((e,t)=>{const n=t.attributes,r=n.textColor,a=n.backgroundColor,o=n.fontSize,i=n.customFontSize,s=e.querySelector('[contenteditable="true"]'),l=s?getComputedStyle(s):null;return{fallbackBackgroundColor:a||!l?void 0:l.backgroundColor,fallbackTextColor:r||!l?void 0:l.color,fallbackFontSize:o||i||!l?void 0:parseInt(l.fontSize)||void 0}}));var Vh=Ph([Gh,Ah("fontSize"),Hh("backgroundColor",{textColor:"color"})])(class extends jh{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.showTerm,r=t.showCurrency,a=t.term,o=t.currency,i=t.paddingTop,s=t.paddingRight,l=t.paddingBottom,c=t.paddingLeft,u=(e.isSelected,e.setAttributes),d=(e.fallbackFontSize,e.fontSize),p=(e.setFontSize,e.backgroundColor),m=e.textColor,f=(e.setBackgroundColor,e.setTextColor),h=e.fallbackBackgroundColor,b=e.fallbackTextColor;return wp.element.createElement(Bh,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Wh,{title:Yh("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(Uh,{label:Yh("Show currency symbol","blockspare"),checked:r,onChange:()=>this.props.setAttributes({showCurrency:!r})}),r&&wp.element.createElement(qh,{label:Yh("Currency Symbol","blockspare"),type:"text",value:o,onChange:e=>this.props.setAttributes({currency:e})}),wp.element.createElement(Uh,{label:Yh("Show pricing duration","blockspare"),checked:n,onChange:()=>this.props.setAttributes({showTerm:!n})}),n&&wp.element.createElement(qh,{label:Yh("Pricing Duration","blockspare"),type:"text",value:a,onChange:e=>this.props.setAttributes({term:e})})),wp.element.createElement(Ih,{title:Yh("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:m.color,onChange:f,label:Yh("Text Color","blockspare")}]},wp.element.createElement(zh,Oh({textColor:m.color,backgroundColor:p.color,fallbackTextColor:b,fallbackBackgroundColor:h},{fontSize:d.size}))),wp.element.createElement(Wh,{title:Yh("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:i,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>u({paddingTop:e}),paddingEnableRight:!0,paddingRight:s,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>u({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:l,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>u({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:c,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>u({paddingLeft:e})}))))}});const $h=wp.i18n.__,Jh=(wp.blocks.registerBlockType,wp.compose.compose),Xh=wp.element,Qh=Xh.Component,Kh=Xh.Fragment,Zh=wp.blockEditor,eb=Zh.RichText,tb=Zh.withFontSizes,nb=Zh.withColors,rb=Zh.AlignmentToolbar,ab=Zh.BlockControls;var ob=Jh([tb("fontSize"),nb("backgroundColor",{textColor:"color"})])(class extends Qh{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,r=t.price,a=t.currency,o=t.term,s=t.showTerm,l=t.showCurrency,c=t.paddingTop,u=t.paddingRight,d=t.paddingBottom,p=t.paddingLeft,m=(e.isSelected,e.className,e.setAttributes),f=(e.fallbackFontSize,e.fontSize),h=e.backgroundColor,b=e.textColor,g=i()({"blockspare-pricing-table-price-wrap":!0,"has-background":h.color,[h.class]:h.class,"blockspare-pricing-has-currency":l}),_=i()({"blockspare-pricing-table-price":!0,[f.class]:f.class}),y={textAlign:n,backgroundColor:h.color,color:b.color?b.color:"#af0000",paddingTop:c?c+"px":void 0,paddingRight:u?u+"px":void 0,paddingBottom:d?d+"px":void 0,paddingLeft:p?p+"px":void 0},k={fontSize:f.size?f.size+"px":void 0};var w=Math.floor(f.size/2.5);const v={fontSize:f.size?w+"px":void 0};var M=Math.floor(f.size/2.5);const L={fontSize:f.size?M+"px":void 0};return[wp.element.createElement(Kh,null,wp.element.createElement(ab,{key:"controls"},wp.element.createElement(rb,{value:n,onChange:e=>{m({sectionAlignment:e})}})),wp.element.createElement(Vh,this.props),wp.element.createElement("div",{className:g||void 0,style:y},wp.element.createElement("div",{itemProp:"offers",itemScope:!0,itemType:"http://schema.org/Offer"},l&&wp.element.createElement(eb,{tagName:"span",itemProp:"priceCurrency",placeholder:$h("$","blockspare"),keepPlaceholderOnFocus:!0,value:a,onChange:e=>m({currency:e}),className:"blockspare-pricing-table-currency",style:v}),wp.element.createElement(eb,{tagName:"div",itemProp:"price",placeholder:$h("49","blockspare"),keepPlaceholderOnFocus:!0,value:r,onChange:e=>m({price:e}),style:k,className:_||void 0}),s&&wp.element.createElement(eb,{tagName:"span",value:o,placeholder:$h("/mo","blockspare"),keepPlaceholderOnFocus:!0,onChange:e=>m({term:e}),className:"blockspare-pricing-table-term",style:L}))))]}});const ib=wp.i18n.__,sb=wp.blocks.registerBlockType,lb=wp.blockEditor,cb=lb.RichText,ub=lb.getFontSizeClass,db=lb.getColorClassName,pb=Dh.name,mb=Dh.category,fb=Dh.attributes;sb(pb,{title:ib("Price","blockspare"),description:ib("Adds a product price component with schema markup.","blockspare"),icon:"cart",category:mb,parent:["blockspare/blockspare-pricing-inner"],keywords:[ib("pricing table","blockspare"),ib("title","blockspare"),ib("shop","blockspare")],attributes:fb,edit:ob,save:function(e){const t=e.attributes,n=t.sectionAlignment,r=t.price,a=t.currency,o=t.fontSize,s=t.customFontSize,l=t.backgroundColor,c=t.textColor,u=t.customBackgroundColor,d=(t.customTextColor,t.term),p=t.showTerm,m=t.showCurrency,f=t.paddingTop,h=t.paddingRight,b=t.paddingBottom,g=t.paddingLeft,_=ub(o),y=(db("color",c),db("background-color",l)),k=i()({"has-background":l||u,"blockspare-pricing-table-price-wrap":!0,[y]:y,"blockspare-pricing-has-currency":m&&a}),w=i()({"blockspare-pricing-table-price":!0,[_]:_}),v={textAlign:n,backgroundColor:y?void 0:u,color:c||"#af0000",paddingTop:f?f+"px":void 0,paddingRight:h?h+"px":void 0,paddingBottom:b?b+"px":void 0,paddingLeft:g?g+"px":void 0},M={fontSize:_?void 0:s};var L=_?void 0:s,T=Math.floor(L/2.5);const E={fontSize:L?T+"px":void 0};var S=Math.floor(L/2.5);const x={fontSize:L?S+"px":void 0};return wp.element.createElement("div",{className:k||void 0,style:v},wp.element.createElement("div",{itemProp:"offers",itemScope:!0,itemType:"http://schema.org/Offer"},a&&m&&wp.element.createElement(cb.Content,{tagName:"span",itemProp:"priceCurrency",value:a,className:"blockspare-pricing-table-currency",style:E}),wp.element.createElement(cb.Content,{tagName:"div",itemProp:"price",value:r,className:w||void 0,style:M}),d&&p&&wp.element.createElement(cb.Content,{tagName:"span",value:d,className:"blockspare-pricing-table-term",style:x})))}});var hb=n(56);function bb(){return(bb=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}const gb=wp.i18n.__,_b=wp.element.Component,yb=wp.compose.compose,kb=wp.blockEditor,wb=kb.InspectorControls,vb=(kb.FontSizePicker,kb.withFontSizes),Mb=kb.withColors,Lb=kb.ContrastChecker,Tb=kb.PanelColorSettings,Eb=(kb.ColorPalette,wp.components),Sb=Eb.withFallbackStyles,xb=Eb.PanelBody,Cb=(Eb.PanelRow,Eb.SelectControl,Eb.BaseControl,Eb.RangeControl,Sb((e,t)=>{const n=t.attributes,r=n.textColor,a=n.backgroundColor,o=n.fontSize,i=n.customFontSize,s=e.querySelector('[contenteditable="true"]'),l=s?getComputedStyle(s):null;return{fallbackBackgroundColor:a||!l?void 0:l.backgroundColor,fallbackTextColor:r||!l?void 0:l.color,fallbackFontSize:o||i||!l?void 0:parseInt(l.fontSize)||void 0}}));var Db=yb([Cb,vb("fontSize"),Mb("backgroundColor",{textColor:"color"})])(class extends _b{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(t.borderStyle,t.borderColor,t.borderWidth,t.paddingTop),r=t.paddingRight,a=t.paddingBottom,o=t.paddingLeft,i=t.name,s=t.listType,l=t.orderListStyle,c=t.color,u=(e.isSelected,e.setAttributes),d=(e.fallbackFontSize,e.fontSize),p=(e.setFontSize,e.backgroundColor),m=e.textColor,f=e.setBackgroundColor,h=(e.setTextColor,e.fallbackBackgroundColor),b=e.fallbackTextColor;gb("None"),gb("Solid"),gb("Dotted"),gb("Dashed");return wp.element.createElement(wb,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(xb,{title:gb("Custom List Settings"),initialOpen:!1},wp.element.createElement(Jl,{name:i,onChangeName:e=>u({name:e}),listType:s,onChangeListStyle:e=>u({listType:e}),orderListStyle:l,onChangeOrderListStyle:e=>u({orderListStyle:e}),color:c,onchangeColor:e=>u({color:e})})),wp.element.createElement(Tb,{title:gb("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:p.color,onChange:f,label:gb("Background Color","blockspare")}]},wp.element.createElement(Lb,bb({textColor:m.color,backgroundColor:p.color,fallbackTextColor:b,fallbackBackgroundColor:h},{fontSize:d.size}))),wp.element.createElement(xb,{title:gb("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:n,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>u({paddingTop:e}),paddingEnableRight:!0,paddingRight:r,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>u({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:a,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>u({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:o,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>u({paddingLeft:e})}))))}});const Ob=wp.i18n.__,Yb=(wp.blocks.registerBlockType,wp.compose.compose),jb=wp.element,Pb=jb.Component,Nb=jb.Fragment,Bb=wp.blockEditor,Ab=Bb.RichText,Hb=Bb.withFontSizes,zb=Bb.withColors,Ib=Bb.AlignmentToolbar,Fb=Bb.BlockControls;Bb.BlockAlignmentToolbar;var Rb=Yb([Hb("fontSize"),zb("backgroundColor",{textColor:"color"})])(class extends Pb{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.features,r=t.borderStyle,a=t.borderColor,o=t.borderWidth,s=t.paddingTop,l=t.paddingRight,c=t.paddingBottom,u=t.paddingLeft,d=t.sectionAlignment,p=t.name,m=t.listType,f=t.orderListStyle,h=t.color,b=(e.isSelected,e.className,e.setAttributes),g=(e.fallbackFontSize,e.fontSize),_=e.backgroundColor,y=e.textColor;let k="";k="ul"==m?p:"ol"==m?f:"";const w=i()({"blockspare-pricing-table-features":!0,[g.class]:g.class,"has-text-color":y.color,"has-background":_.color,[_.class]:_.class,[y.class]:y.class,[r]:r,["blockspare-list-border-width-"+o]:o,[k]:k}),v={textAlign:d,fontSize:g.size?g.size+"px":void 0,backgroundColor:_.color,color:h||"#6d6d6d",borderColor:a||void 0,paddingTop:s?s+"px":void 0,paddingRight:l?l+"px":void 0,paddingBottom:c?c+"px":void 0,paddingLeft:u?u+"px":void 0};return[wp.element.createElement(Fb,null,wp.element.createElement(Ib,{value:d,onChange:e=>{b({sectionAlignment:e})}})),wp.element.createElement(Nb,null,wp.element.createElement(Db,this.props),wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-list-wrap")},wp.element.createElement(Ab,{tagName:"none"==m?"ul":m,multiline:"li",itemProp:"description",placeholder:Ob("Add a product feature","blockspare"),keepPlaceholderOnFocus:!0,value:n,onChange:e=>b({features:e}),style:v,className:w||void 0})))]}});const Wb=wp.i18n.__,Ub=wp.blocks.registerBlockType,qb=wp.blockEditor,Gb=qb.RichText,Vb=qb.getFontSizeClass,$b=qb.getColorClassName,Jb=hb.name,Xb=hb.category,Qb=hb.attributes;Ub(Jb,{title:Wb("Price Features","blockspare"),description:Wb("Adds a product feature component with schema markup.","blockspare"),category:Xb,icon:a.iconlist,attributes:Qb,parent:["blockspare/blockspare-pricing-inner"],keywords:[Wb("pricing table","blockspare"),Wb("features","blockspare"),Wb("shop","blockspare")],edit:Rb,save:function(e){const t=e.attributes,n=t.features,r=t.fontSize,a=t.sectionAlignment,o=t.customFontSize,s=t.backgroundColor,l=t.textColor,c=t.customBackgroundColor,u=(t.customTextColor,t.borderStyle),d=t.borderColor,p=t.borderWidth,m=t.paddingTop,f=t.paddingRight,h=t.paddingBottom,b=t.paddingLeft,g=t.name,_=t.listType,y=t.orderListStyle,k=t.color;let w="";w="ul"==_?g:"ol"==_?y:"";const v=Vb(r),M=$b("color",l),L=$b("background-color",s),T=i()({"has-background":s||c,"blockspare-pricing-table-features":!0,[v]:v,[M]:M,[L]:L,[u]:u,["blockspare-list-border-width-"+p]:p,[w]:w}),E={textAlign:a,fontSize:v?void 0:o,backgroundColor:L?void 0:c,color:k||"#6d6d6d",borderColor:d||void 0,paddingTop:m?m+"px":void 0,paddingRight:f?f+"px":void 0,paddingBottom:h?h+"px":void 0,paddingLeft:b?b+"px":void 0};return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-list-wrap")},wp.element.createElement(Gb.Content,{tagName:"none"==_?"ul":_,itemProp:"description",value:n,className:T||void 0,style:E}))}});var Kb=n(57);const Zb=wp.i18n.__,eg=wp.element.Component,tg=wp.compose.compose,ng=wp.blockEditor,rg=ng.InspectorControls,ag=ng.withFontSizes,og=ng.withColors,ig=(ng.PanelColorSettings,wp.components),sg=ig.withFallbackStyles,lg=ig.PanelBody,cg=ig.ToggleControl,ug=sg((e,t)=>{const n=t.attributes.backgroundColor,r=e.querySelector('[contenteditable="true"]'),a=r?getComputedStyle(r):null;return{fallbackBackgroundColor:n||!a?void 0:a.backgroundColor}});var dg=tg([ug,ag("fontSize"),og("backgroundColor")])(class extends eg{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.buttonStyle,r=t.borderColor,a=t.borderBtnTextColor,o=t.buttonBackgroundColor,i=t.buttonTextColor,s=t.buttonSize,l=t.buttonShape,c=t.buttonTarget,u=t.paddingTop,d=t.paddingBottom,p=t.enableGradient,m=t.backgroundColor1,f=t.backgroundColor2,h=t.gradientAngle,b=t.colorLocation1,g=t.colorLocation2,_=t.btnFontWeight,y=t.btnBorderWidth,k=e.setAttributes;e.backgroundColor,e.setBackgroundColor;return wp.element.createElement(rg,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(lg,{title:Zb("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Le,{enableButtonTarget:!1,buttonTarget:c,onChangeButtonTarget:e=>k({buttonTarget:!c}),enableGradient:p,onChangeGradient:e=>k({enableGradient:e}),enableButtonSize:!0,buttonSize:s,onChangeButtonSize:e=>k({buttonSize:e}),enableButtonShape:!0,buttonShape:l,onChangeButtonShape:e=>k({buttonShape:e}),buttonBackgroundColor:o,onChangeButtonColor:e=>k({buttonBackgroundColor:e}),buttonTextColor:i,onChangeButtonTextColor:e=>k({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:n,onChangeBorderStyle:e=>k({buttonStyle:e}),borderColor:r,onchangeBorderColor:e=>k({borderColor:e}),borderBtnTextColor:a,onChangeBorderBtnTextColor:e=>k({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:y,onchangebtnBorderWidth:e=>k({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:_,onchangeBtnFontWeight:e=>k({btnFontWeight:e})}),"none"===n&&wp.element.createElement(cg,{label:Zb("Enable Gradient","blockspare"),checked:p,onChange:()=>this.props.setAttributes({enableGradient:!p})}),p&&"none"===n&&wp.element.createElement(lg,{title:Zb("Gradient Option","blockspare"),initialOpen:!0},wp.element.createElement(Ce,{backgroundColor1:m,onChangeBackgroundColor1:e=>k({backgroundColor1:e}),backgroundColor2:f,onChangeBackgroundColor2:e=>k({backgroundColor2:e}),gradientAngle:h,onChangeGradientAngle:e=>k({gradientAngle:e}),colorLocation1:b,onChangeColorLocation1:e=>k({colorLocation1:e}),colorLocation2:g,onChangeColorLocation2:e=>k({colorLocation2:e})}))),wp.element.createElement(lg,{title:Zb("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:u,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>k({paddingTop:e}),paddingEnableBottom:!0,paddingBottom:d,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>k({paddingBottom:e})}))))}});function pg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function mg(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const fg=wp.i18n.__,hg=wp.compose.compose,bg=wp.element,gg=bg.Component,_g=bg.Fragment,yg=wp.blockEditor,kg=yg.RichText,wg=yg.withFontSizes,vg=yg.withColors,Mg=yg.AlignmentToolbar,Lg=yg.BlockControls,Tg=yg.URLInput,Eg=wp.components,Sg=Eg.IconButton,xg=Eg.Dashicon;var Cg=hg([wg("fontSize"),vg("backgroundColor",{textColor:"color"})])(class extends gg{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.paddingTop,r=t.paddingRight,a=t.paddingBottom,o=t.paddingLeft,s=t.buttonText,l=t.buttonUrl,c=t.sectionAlignment,u=t.buttonSize,d=t.buttonShape,p=e.isSelected,m=e.attributes,f=e.setAttributes,h=e.backgroundColor,b=i()({"blockspare-pricing-table-button":!0}),g={backgroundColor:h.color,paddingTop:n?n+"px":void 0,paddingRight:r?r+"px":void 0,paddingBottom:a?a+"px":void 0,paddingLeft:o?o+"px":void 0},_=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?pg(Object(n),!0).forEach((function(t){mg(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):pg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Ae(m));return[wp.element.createElement(_g,null,wp.element.createElement(Lg,{key:"controls"},wp.element.createElement(Mg,{value:c,onChange:e=>{f({sectionAlignment:e})}})),wp.element.createElement(dg,this.props),wp.element.createElement("div",{className:b||void 0,style:g},wp.element.createElement(be,this.props,wp.element.createElement(kg,{tagName:"span",placeholder:fg("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:s,allowedFormats:[],className:i()("blockspare-button",d,u),style:_,onChange:e=>f({buttonText:e})})),p&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${c}`,onSubmit:e=>e.preventDefault(),style:{textAlign:c}},wp.element.createElement(xg,{icon:"admin-links"}),wp.element.createElement(Tg,{className:"button-url",value:l,onChange:e=>f({buttonUrl:e})}),wp.element.createElement(Sg,{icon:"editor-break",label:fg("Apply","blockspare"),type:"submit"}))))]}});function Dg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Og(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dg(Object(n),!0).forEach((function(t){Yg(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Yg(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const jg=wp.i18n.__,Pg=wp.blocks.registerBlockType,Ng=wp.blockEditor,Bg=Ng.RichText,Ag=Ng.getColorClassName,Hg=Kb.name,zg=Kb.category,Ig=Og({},Kb.attributes,{},He);Pg(Hg,{title:jg("Button","blockspare"),description:jg("Add button with schema markup.","blockspare"),category:zg,icon:a.button,attributes:Ig,parent:["blockspare/blockspare-pricing-inner"],keywords:[jg("pricing button","blockspare"),jg("button","blockspare"),jg("link","blockspare")],edit:Cg,save:function(e){const t=e.attributes,n=t.backgroundColor,r=t.customBackgroundColor,a=t.paddingTop,o=t.paddingRight,s=t.paddingBottom,l=t.paddingLeft,c=t.buttonText,u=t.buttonUrl,d=t.buttonSize,p=t.buttonShape,m=t.buttonTarget,f=Ag("background-color",n),h=i()({"has-background":n||r,"blockspare-pricing-table-button":!0,[f]:f}),b=Og({},Ae(e.attributes)),g={backgroundColor:f?void 0:r,paddingTop:a?a+"px":void 0,paddingRight:o?o+"px":void 0,paddingBottom:s?s+"px":void 0,paddingLeft:l?l+"px":void 0};return wp.element.createElement("div",{className:h||void 0,style:g},wp.element.createElement(be,e,c&&wp.element.createElement("a",{href:u,target:m?"_blank":null,rel:m?"noopener noreferrer":null,className:i()("blockspare-button",p,d),style:b},wp.element.createElement(Bg.Content,{value:c}))))}});n(462),n(463);var Fg=n(58);const Rg=wp.i18n.__,Wg=wp.element,Ug=Wg.Component,qg=(Wg.Fragment,wp.blockEditor),Gg=qg.InspectorControls,Vg=(qg.PanelColorSettings,wp.components),$g=Vg.PanelBody,Jg=Vg.TextControl,Xg=Vg.SelectControl;class Qg extends Ug{render(){const e=this.props,t=e.attributes,n=(e.setAttributes,e.clients,Rg(" Icon only","blockspare"),Rg("Texts only","blockspare"),Rg("Icon with Texts","blockspare"),Rg(" Official","blockspare"),Rg("Custom","blockspare"),[{value:"blockspare-social-icon-square",label:Rg("Square","blockspare")},{value:"blockspare-social-icon-circle",label:Rg("Circle","blockspare")},{value:"blockspare-social-icon-rounded",label:Rg("Rounded Square","blockspare")}]),r=[{value:"blockspare-social-icon-small",label:Rg("Small","blockspare")},{value:"blockspare-social-icon-medium",label:Rg("Medium","blockspare")},{value:"blockspare-social-icon-large",label:Rg("Large","blockspare")}];Rg("Solid","blockspare"),Rg("Border","blockspare"),Rg("None","blockspare");return wp.element.createElement(Gg,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement($g,{title:Rg("Social Icon Option","blockspare"),initialOpen:!1},wp.element.createElement(Xg,{label:Rg("Shape","blockspare"),options:n,value:t.buttonShapes,onChange:e=>this.props.setAttributes({buttonShapes:e})}),wp.element.createElement(Xg,{label:Rg("Size","blockspare"),options:r,value:t.buttonSizes,onChange:e=>this.props.setAttributes({buttonSizes:e})})),wp.element.createElement($g,{title:Rg("Social Settings","blockspare"),className:"blockspare-hide-query",initialOpen:!1},wp.element.createElement($g,{title:Rg("Facebook","blockspare"),initialOpen:!1},wp.element.createElement(Jg,{label:Rg("Title","blockspare"),type:"text",value:t.facebookTitle,onChange:e=>this.props.setAttributes({facebookTitle:e})}),wp.element.createElement(Jg,{label:Rg("URL","blockspare"),type:"url",value:t.facebookUrl,onChange:e=>this.props.setAttributes({facebookUrl:e})})),wp.element.createElement($g,{title:Rg("Twitter","blockspare"),initialOpen:!1},wp.element.createElement(Jg,{label:Rg("Title","blockspare"),type:"text",value:t.twitterTitle,onChange:e=>this.props.setAttributes({twitterTitle:e})}),wp.element.createElement(Jg,{label:Rg("URL","blockspare"),type:"url",value:t.twitterUrl,onChange:e=>this.props.setAttributes({twitterUrl:e})})),wp.element.createElement($g,{title:Rg("Instagram","blockspare"),initialOpen:!1},wp.element.createElement(Jg,{label:Rg("Title","blockspare"),type:"text",value:t.instagramTitle,onChange:e=>this.props.setAttributes({instagramTitle:e})}),wp.element.createElement(Jg,{label:Rg("URL","blockspare"),type:"url",value:t.instagramUrl,onChange:e=>this.props.setAttributes({instagramUrl:e})})),wp.element.createElement($g,{title:Rg("YouTube","blockspare"),initialOpen:!1},wp.element.createElement(Jg,{label:Rg("Title","blockspare"),type:"text",value:t.youtubeTitle,onChange:e=>this.props.setAttributes({youtubeTitle:e})}),wp.element.createElement(Jg,{label:Rg("URL","blockspare"),type:"url",value:t.youtubeUrl,onChange:e=>this.props.setAttributes({youtubeUrl:e})})),wp.element.createElement($g,{title:Rg("LinkedIn","blockspare"),initialOpen:!1},wp.element.createElement(Jg,{label:Rg("Title","blockspare"),type:"text",value:t.linkedinTitle,onChange:e=>this.props.setAttributes({linkedinTitle:e})}),wp.element.createElement(Jg,{label:Rg("URL","blockspare"),type:"url",value:t.linkedinUrl,onChange:e=>this.props.setAttributes({linkedinUrl:e})})),wp.element.createElement($g,{title:Rg("Pinterest","blockspare"),initialOpen:!1},wp.element.createElement(Jg,{label:Rg("Title","blockspare"),type:"text",value:t.pinterestTitle,onChange:e=>this.props.setAttributes({pinterestTitle:e})}),wp.element.createElement(Jg,{label:Rg("URL","blockspare"),type:"url",value:t.pinterestUrl,onChange:e=>this.props.setAttributes({pinterestUrl:e})})))))}}const Kg=wp.element,Zg=Kg.Component,e_=(Kg.Fragment,wp.i18n.__,wp.blockEditor);e_.BlockAlignmentToolbar,e_.BlockControls;class t_ extends Zg{constructor(e){super(...arguments)}render(){let e="";return e="blockspare-default-official-color"!=this.props.attributes.iconColorOption?{color:this.props.attributes.customfontColorOption,backgroundColor:this.props.attributes.custombackgroundColorOption}:{},wp.element.createElement("ul",{className:i()("blockspare-social-links",this.props.attributes.iconColorOption,this.props.attributes.buttonShapes,this.props.attributes.buttonSizes,this.props.attributes.buttonOptions,this.props.attributes.buttonFills)},this.props.attributes.facebookUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.facebookUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-facebook-f"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.facebookTitle))),this.props.attributes.linkedinUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.linkedinUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-linkedin"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.linkedinTitle))),this.props.attributes.twitterUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.twitterUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-twitter"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.twitterTitle))),this.props.attributes.instagramUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.instagramUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-instagram"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.instagramTitle))),this.props.attributes.youtubeUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.youtubeUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-youtube"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.youtubeTitle))),this.props.attributes.pinterestUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.pinterestUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-pinterest"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.pinterestTitle))),this.props.attributes.tumblrUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.tumblrUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-tumblr"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.tumblrTitle))),this.props.attributes.telegramUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.telegramUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-telegram"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.telegramTitle))),this.props.attributes.redditUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.redditUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-reddit"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.redditTitle))),this.props.attributes.flickrUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.flickrUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-flickr"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.flickrTitle))),this.props.attributes.dribbbleUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.dribbbleUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-dribbble"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.dribbbleTitle))),this.props.attributes.vkUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.vkUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-vk"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.vkTitle))),this.props.attributes.yelpUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.yelpUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-yelp"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.yelpTitle))),this.props.attributes.quoraUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.quoraUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-quora"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.quoraTitle))),this.props.attributes.meetupUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.meetupUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-meetup"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.meetupTitle))),this.props.attributes.githubUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.githubUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-github"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.githubTitle))))}}function n_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function r_(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?n_(Object(n),!0).forEach((function(t){a_(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):n_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a_(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const o_=wp.element,i_=o_.Component,s_=o_.Fragment,l_=(wp.i18n.__,wp.blockEditor),c_=l_.BlockControls,u_=l_.AlignmentToolbar;const d_=wp.element.Component;class p_ extends d_{constructor(){super(...arguments)}render(){return wp.element.createElement("div",{style:{textAlign:this.props.attributes.sectionAlignment},className:"blockspare-blocks blockspare-social-wrapper"},wp.element.createElement(t_,this.props))}}const m_=wp.blocks.registerBlockType,f_=Fg.name,h_=Fg.category,b_=Fg.attributes,g_=wp.i18n.__;m_(f_,{title:g_("BS Social Links","blockspare"),category:h_,icon:a.sociallinks,attributes:b_,keywords:[g_("block","blockspare"),g_("social","blockspare"),g_("links","blockspare"),g_("share","blockspare")],example:{attributes:{facebookUrl:"https://facebook.com",twitterUrl:"https://twitter.com",linkedinUrl:"https://www.linkedin.com/",instagramUrl:"https://instagram.com"}},edit:class extends i_{render(){const e=this.props,t=e.attributes.sectionAlignment,n=(e.attributes,e.setAttributes);return[wp.element.createElement(s_,null,wp.element.createElement(Qg,r_({setAttributes:n},this.props)),wp.element.createElement(c_,null,wp.element.createElement(u_,{value:t,onChange:e=>{n({sectionAlignment:e})}})),wp.element.createElement("div",{className:i()("blockspare-blocks","blockspare-social-wrapper"),style:{textAlign:this.props.attributes.sectionAlignment}},wp.element.createElement("div",{className:"blockspare-section-head-wrap"},wp.element.createElement(t_,this.props))))]}},save:e=>wp.element.createElement(p_,e)});const __=wp.i18n.__,y_=wp.element.Component,k_=wp.blockEditor,w_=k_.InspectorControls,v_=(k_.PanelColorSettings,wp.components),M_=v_.PanelBody,L_=v_.SelectControl,T_=v_.ToggleControl,E_=v_.TextControl;class S_ extends y_{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(e.setAttributes,e.clients,__(" Icon only","blockspare"),__("Texts only","blockspare"),__("Icon with Texts","blockspare"),__(" Official","blockspare"),__("Custom","blockspare"),[{value:"blockspare-social-icon-square",label:__("Square","blockspare")},{value:"blockspare-social-icon-circle",label:__("Circle","blockspare")},{value:"blockspare-social-icon-rounded",label:__("Rounded Square","blockspare")}]),r=[{value:"blockspare-social-icon-small",label:__("Small","blockspare")},{value:"blockspare-social-icon-medium",label:__("Medium","blockspare")},{value:"blockspare-social-icon-large",label:__("Large","blockspare")}];__("Solid","blockspare"),__("Border","blockspare"),__("None","blockspare");return wp.element.createElement(w_,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(M_,{title:__("Social Icon Option","blockspare"),initialOpen:!1},wp.element.createElement(L_,{label:__("Shape","blockspare"),options:n,value:t.buttonShapes,onChange:e=>this.props.setAttributes({buttonShapes:e})}),wp.element.createElement(L_,{label:__("Size","blockspare"),options:r,value:t.buttonSizes,onChange:e=>this.props.setAttributes({buttonSizes:e})})),wp.element.createElement(M_,{title:__("Social Sharing Settings","blockspare"),initialOpen:!1},wp.element.createElement(M_,{title:__("Facebook","blockspare"),initialOpen:!1},wp.element.createElement(T_,{label:__("Enable","blockspare"),checked:!!this.props.attributes.facebook,onChange:()=>this.props.setAttributes({facebook:!this.props.attributes.facebook})}),this.props.attributes.facebook&&wp.element.createElement(E_,{label:__("Title","blockspare"),type:"text",value:t.facebookTitle,onChange:e=>this.props.setAttributes({facebookTitle:e})})),wp.element.createElement(M_,{title:__("Twitter","blockspare"),initialOpen:!1},wp.element.createElement(T_,{label:__("Enable","blockspare"),checked:!!this.props.attributes.twitter,onChange:()=>this.props.setAttributes({twitter:!this.props.attributes.twitter})}),this.props.attributes.twitter&&wp.element.createElement(E_,{label:__("Title","blockspare"),type:"text",value:t.twitterTitle,onChange:e=>this.props.setAttributes({twitterTitle:e})})),wp.element.createElement(M_,{title:__("Pinterest","blockspare"),initialOpen:!1},wp.element.createElement(T_,{label:__("Enable","blockspare"),checked:!!this.props.attributes.pinterest,onChange:()=>this.props.setAttributes({pinterest:!this.props.attributes.pinterest})}),this.props.attributes.pinterest&&wp.element.createElement(E_,{label:__("Title","blockspare"),type:"text",value:t.pinterestTitle,onChange:e=>this.props.setAttributes({pinterestTitle:e})})),wp.element.createElement(M_,{title:__("LinkedIn","blockspare"),initialOpen:!1},wp.element.createElement(T_,{label:__("Enable","blockspare"),checked:!!this.props.attributes.linkedin,onChange:()=>this.props.setAttributes({linkedin:!this.props.attributes.linkedin})}),this.props.attributes.linkedin&&wp.element.createElement(E_,{label:__("Title","blockspare"),type:"text",value:t.linkedinTitle,onChange:e=>this.props.setAttributes({linkedinTitle:e})})))))}}wp.i18n.__;const x_=wp.element.Component,C_=wp.blockEditor,D_=C_.AlignmentToolbar,O_=C_.BlockControls;class Y_ extends x_{constructor(){super(...arguments)}render(){let e="";return e="blockspare-default-official-color"!=this.props.attributes.iconColorOption?{color:this.props.attributes.customfontColorOption,backgroundColor:this.props.attributes.custombackgroundColorOption}:{},[wp.element.createElement(O_,{key:"controls"},wp.element.createElement(D_,{value:this.props.attributes.sectionAlignment,onChange:e=>this.props.setAttributes({sectionAlignment:e})})),wp.element.createElement(S_,this.props),wp.element.createElement("div",{style:{textAlign:this.props.attributes.sectionAlignment},className:"blockspare-blocks blockspare-social-wrapper"},wp.element.createElement("ul",{className:i()("blockspare-social-sharing",this.props.attributes.iconColorOption,this.props.attributes.buttonShapes,this.props.attributes.buttonSizes,this.props.attributes.buttonOptions,this.props.attributes.buttonFills)},this.props.attributes.facebook&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-facebook",style:e},wp.element.createElement("i",{className:"fab fa-facebook-f"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.facebookTitle))),this.props.attributes.twitter&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-twitter",style:e},wp.element.createElement("i",{className:"fab fa-twitter"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.twitterTitle))),this.props.attributes.pinterest&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-pinterest",style:e},wp.element.createElement("i",{className:"fab fa-pinterest-p"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.pinterestTitle))),this.props.attributes.linkedin&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-linkedin",style:e},wp.element.createElement("i",{className:"fab fa-linkedin"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.linkedinTitle))),this.props.attributes.reddit&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-reddit",style:e},wp.element.createElement("i",{className:"fab fa-reddit-alien"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.redditTitle))),this.props.attributes.email&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-email",style:e},wp.element.createElement("i",{className:"fas fa-envelope"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.emailTitle)))))]}}n(464),n(465);const j_=wp.i18n.__;(0,wp.blocks.registerBlockType)("blockspare/blockspare-social-sharing",{title:j_("BS Social Sharing","blockspare"),description:j_("Add sharing buttons to your posts and pages.","blockspare"),icon:a.socialShare,category:"blockspare",keywords:[j_("block","blockspare"),j_("social","blockspare"),j_("links","blockspare"),j_("share","blockspare")],example:{attributes:{facebook:!0,twitter:!0,linkedin:!0}},edit:e=>wp.element.createElement(Y_,e),save:()=>null});n(466),n(467);var P_=n(90);wp.i18n.__;const N_=wp.element,B_=N_.Component,A_=(N_.Fragment,wp.blockEditor.InspectorControls),H_=wp.components;H_.PanelBody,H_.ToggleControl;class z_ extends B_{render(){const e=this.props,t=e.attributes,n=t.titleFontSize,r=t.subtitleFontSize,a=t.headerboxColor,o=t.headertitleColor,i=t.headersubtitleColor,s=t.headerpaddingTop,l=t.headerpaddingRight,c=t.headerpaddingBottom,u=t.headerpaddingLeft,d=t.headermarginTop,p=t.headermarginBottom,m=t.headerlayoutOption,f=t.headerTagOption,h=t.titlePaddingTop,b=t.titlePaddingBottom,g=t.subtitlePaddingTop,_=t.subtitlePaddingBottom,y=t.dashColor,k=e.setAttributes;return wp.element.createElement(A_,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(bt,{enableBlockGaps:!0,titleFontSize:n,onChangetitleFontSize:e=>k({titleFontSize:e}),subtitleFontSize:r,onChangesubtitleFontSize:e=>k({subtitleFontSize:e}),headerlayoutOption:m,onChangeHeaderStyle:e=>k({headerlayoutOption:e}),headerboxColor:a,onChangeboxcolor:e=>k({headerboxColor:e}),dashColor:y,onChangeDashColor:e=>k({dashColor:e}),headerpaddingTop:s,onChangeheaderpaddingTop:e=>k({headerpaddingTop:e}),headerpaddingRight:l,onChangeheaderpaddingRight:e=>k({headerpaddingRight:e}),headerpaddingBottom:c,onChangeheaderpaddingBottom:e=>k({headerpaddingBottom:e}),headerpaddingLeft:u,onChangeheaderpaddingLeft:e=>k({headerpaddingLeft:e}),headermarginTop:d,onChangeheadermarginTop:e=>k({headermarginTop:e}),headermarginBottom:p,onChangeheadermarginBottom:e=>k({headermarginBottom:e}),headertitleColor:o,onChangetitlecolor:e=>k({headertitleColor:e}),headerTagOption:f,onChangeHeaderTag:e=>k({headerTagOption:e}),titlePaddingTop:h,onChangetitlePaddingTop:e=>k({titlePaddingTop:e}),titlePaddingBottom:b,onChangetitlePaddingBottom:e=>k({titlePaddingBottom:e}),headersubtitleColor:i,onChangesubtitlecolor:e=>k({headersubtitleColor:e}),subtitlePaddingTop:g,onChangesubtitlePaddingTop:e=>k({subtitlePaddingTop:e}),subtitlePaddingBottom:_,onChangesubtitlePaddingBottom:e=>k({subtitlePaddingBottom:e})})))}}function I_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function F_(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?I_(Object(n),!0).forEach((function(t){R_(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):I_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function R_(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const W_=wp.element,U_=W_.Component,q_=W_.Fragment,G_=wp.i18n.__,V_=wp.blockEditor,$_=V_.BlockControls,J_=V_.RichText,X_=(V_.BlockAlignmentToolbar,V_.AlignmentToolbar),Q_=wp.components;Q_.IconButton,Q_.Dashicon;function K_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Z_(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?K_(Object(n),!0).forEach((function(t){ey(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):K_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ey(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ty=wp.blocks.registerBlockType,ny=wp.i18n.__,ry=wp.blockEditor.RichText,ay=P_.name,oy=P_.category,iy=Z_({},Ft,{},Vt);ty(ay,{title:ny("Section Header","blockspare"),description:ny("Add your Your Header ","blockspare"),category:oy,icon:a.sectionHeader,attributes:iy,keywords:[ny("block","blockspare"),ny("section","blockspare"),ny("header","blockspare"),ny("title","blockspare"),ny("subtitle","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},edit:class extends U_{render(){const e=this.props,t=e.attributes,n=(t.align,t.sectionAlignment),r=t.headerTitle,a=t.headerTagOption,o=t.headerSubTitle,i=e.attributes,s=e.setAttributes,l=(e.isSelected,F_({},Ut(i))),c=F_({},qt(i)),u=F_({},Gt(i));return[wp.element.createElement(q_,null,wp.element.createElement($_,null,wp.element.createElement(X_,{value:n,onChange:e=>{s({sectionAlignment:e})}})),wp.element.createElement(z_,F_({setAttributes:s},this.props)),wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:l}),wp.element.createElement(J_,{tagName:a,placeholder:G_("Title","blockspare"),keepPlaceholderOnFocus:!0,value:r,className:"blockspare-title",style:c,onChange:e=>s({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:l})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:l}),wp.element.createElement(J_,{tagName:"p",placeholder:G_("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:o,className:"blockspare-subtitle",style:u,onChange:e=>s({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:l}))))]}},save:function(e){const t=e.attributes,n=(t.align,t.headerTitle),r=t.headerTagOption,a=t.headerSubTitle,o=Z_({},Ut(e.attributes)),i=Z_({},qt(e.attributes)),s=Z_({},Gt(e.attributes));return wp.element.createElement(It,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),n&&wp.element.createElement(ry.Content,{tagName:r,className:"blockspare-title",style:i,value:n}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),a&&wp.element.createElement(ry.Content,{tagName:"p",className:"blockspare-subtitle",style:s,value:a}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o})))}});var sy=n(59);const ly=wp.element.Component;class cy extends ly{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.columns,n=(e.columnsGap,e.align),r=i()([this.props.className,"blockspare-service-columns-"+t],{["align"+n]:n});return wp.element.createElement("div",{className:r||void 0},this.props.children)}}const uy=wp.i18n.__,dy=wp.element.Component,py=wp.blockEditor.InspectorControls,my=wp.components,fy=(my.Toolbar,my.Button,my.PanelBody),hy=(my.PanelRow,my.RangeControl);class by extends dy{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(t.serviceItems,t.columns),r=t.columnsGap,a=t.marginTop,o=t.marginBottom,i=(e.isSelected,e.className,e.setAttributes);return wp.element.createElement(py,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(fy,{title:uy("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(hy,{label:uy("Number of Columns","blockspare"),value:n,onChange:e=>this.props.setAttributes({columns:e}),min:1,max:3}),wp.element.createElement(hy,{label:uy("Column Gaps","blockspare"),value:r,onChange:e=>this.props.setAttributes({columnsGap:e}),min:0,max:4,step:1})),wp.element.createElement(fy,{title:uy("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:a,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>i({marginTop:e}),marginEnableBottom:!0,marginBottom:o,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>i({marginBottom:e})}))))}}n(468),n(469);var gy=n(91);const _y=wp.i18n.__,yy=wp.element.Component,ky=wp.blockEditor,wy=ky.InspectorControls,vy=(ky.BlockDescription,ky.PanelColorSettings),My=wp.components,Ly=(My.ToggleControl,My.PanelBody),Ty=(My.FormToggle,My.RangeControl);class Ey extends yy{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.borderWidth,r=(t.borderColor,t.borderRadius,t.backgroundColor),a=t.padding,o=(t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,t.marginTop),i=t.marginBottom,s=(e.isSelected,e.className,e.setAttributes);return wp.element.createElement(wy,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Ly,{title:_y("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(Ty,{label:_y("Service Column Padding","blockspare"),value:a,onChange:e=>this.props.setAttributes({padding:e}),min:0,max:20,step:1})),wp.element.createElement(Ly,{title:_y("Color Settings","blockspare"),initialOpen:!1},0<n&&wp.element.createElement(vy,{title:_y("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:r,onChange:e=>s({backgroundColor:e}),label:_y("Background Color","blockspare")}]})),wp.element.createElement(Ly,{title:_y("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:o,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>s({marginTop:e}),marginEnableBottom:!0,marginBottom:i,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>s({marginBottom:e})}))))}}function Sy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function xy(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Sy(Object(n),!0).forEach((function(t){Cy(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Sy(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Cy(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Dy=wp.i18n.__,Oy=(wp.element.Component,wp.blocks.registerBlockType),Yy=wp.blockEditor,jy=Yy.InnerBlocks,Py=(Yy.AlignmentToolbar,Yy.BlockControls,wp.element.Fragment),Ny=["blockspare/blockspare-iconset","blockspare/blockspare-services-inner-title","blockspare/blockspare-services-inner-description","blockspare/blockspare-service-inner-button"],By=gy.category,Ay=xy({},gy.attributes,{},Vt),Hy={title:Dy("Service Inner Section","blockspare"),description:Dy("Add a service column.","blockspare"),icon:"cart",category:By,parent:["blockspare/blockspare-services"],keywords:[Dy("service","blockspare"),Dy("shop","blockspare"),Dy("buy","blockspare")],attributes:Ay,edit:function(e){const t=e.attributes,n=t.borderWidth,r=t.borderColor,a=t.borderRadius,o=t.backgroundColor,s=t.padding,l=t.alignment,c=(t.className,t.setAttributes,xy({},Dt(e.attributes),{borderWidth:n||null,borderStyle:0<n?"solid":null,borderColor:r||null,borderRadius:a||null,backgroundColor:o||null,padding:s?s+"%":null}));return wp.element.createElement(Py,null,wp.element.createElement(Ey,e),wp.element.createElement("div",{className:i()(l?"blockspare-block-service-table-"+l:"blockspare-block-service-table-center","blockspare-block-service-table"),itemScope:!0,itemType:"http://schema.org/Product"},wp.element.createElement("div",{className:i()("blockspare-block-service-table-inside"),style:c},wp.element.createElement(jy,{template:[["blockspare/blockspare-iconset",{}],["blockspare/blockspare-services-inner-title",{headerTitle:"Service Title",headerSubTitle:"Add your services text",titlePaddingTop:5,titlePaddingBottom:5,subtitlePaddingTop:10,subtitlePaddingBottom:10}],["blockspare/blockspare-services-inner-description",{features:"Aspernatur morbi sit cursus mauris aspernatur! Quos tortor. Ea montes anim.",tagName:"p",ordered:!1,customFontSize:18,paddingTop:15,paddingRight:20,paddingBottom:15,paddingLeft:20}],["blockspare/blockspare-service-inner-button",{buttonText:"Get Started",paddingTop:15,paddingRight:20,paddingBottom:35,paddingLeft:20}]],renderAppender:!1,allowedBlocks:Ny}))))},save:function(e){const t=e.attributes,n=t.borderWidth,r=t.borderColor,a=t.borderRadius,o=t.backgroundColor,s=t.alignment,l=t.padding,c=(t.marginTop,t.marginBottom,xy({},Dt(e.attributes),{borderWidth:n||null,borderStyle:0<n?"solid":null,borderColor:r||null,borderRadius:a||null,backgroundColor:o||null,padding:l?l+"%":null}));return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-service-block-wrapper",s?"blockspare-block-service-table-"+s:"blockspare-block-service-table-center","blockspare-block-service-table")},wp.element.createElement("div",{className:i()("blockspare-block-service-table-inside"),style:c},wp.element.createElement(jy.Content,null)))}};function zy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Iy(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Oy("blockspare/blockspare-services-inner",Hy);wp.i18n.__;const Fy=wp.element,Ry=Fy.Component,Wy=Fy.Fragment,Uy=(wp.components.IconButton,wp.blocks.createBlock),qy=wp.data,Gy=qy.withSelect,Vy=qy.withDispatch,$y=wp.blockEditor,Jy=$y.InnerBlocks,Xy=($y.InspectorControls,wp.compose.compose);var Qy=Xy([Gy((e,t)=>{const n=t.clientId,r=e("core/block-editor"),a=r.getBlock,o=r.isBlockSelected,i=r.hasSelectedInnerBlock;return{block:a(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),Vy(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends Ry{constructor(...e){super(...e),Iy(this,"getServiceTemplate",e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++)t.push(["blockspare/blockspare-services-inner",{}]);return t})}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,r=e.attributes.uniqueId,a=n.substr(0,6);r?r&&r!=a&&t({uniqueId:a}):t({uniqueId:a})}insertServiceItem(){let e;const t=this.props,n=t.clientId,r=t.insertBlock,a=t.block;if(a.innerBlocks&&a.innerBlocks.length){const t=a.innerBlocks[a.innerBlocks.length-1].attributes.itemNumber+1,n=Hy.heading;e=Object.assign({},{},{itemNumber:t,heading:n,active:!1,defaultText:""})}else e=Hy;r(Uy("blockspare/blockspare-services-inner",e),void 0,n)}render(){const e=this.props,t=e.attributes,n=(e.isSelectedBlockInRoot,e.attributes),r=(n.uniqueId,n.columns,n.columnsGap),a=n.marginTop,o=n.marginBottom,s=(e.isSelected,e.setAttributes);return wp.element.createElement(Wy,null,wp.element.createElement(by,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zy(Object(n),!0).forEach((function(t){Iy(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zy(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({setAttributes:s},this.props)),wp.element.createElement("div",{className:"blockspare-blocks blockspare-service-block-wrapper",style:{marginTop:a?a+"px":void 0,marginBottom:o?o+"px":void 0}},wp.element.createElement(cy,this.props,wp.element.createElement("div",{className:i()("blockspare-service-section-admin","blockspare-service-section-gap-"+r)},wp.element.createElement(Jy,{template:this.getServiceTemplate(t),allowedBlocks:["blockspare/blockspare-services-inner"],renderAppender:!1})))))}});const Ky=wp.i18n.__,Zy=(wp.element.Component,wp.blocks.registerBlockType),ek=wp.blockEditor.InnerBlocks,tk=sy.name,nk=sy.category,rk=sy.attributes;Zy(tk,{title:Ky("BS Services","blockspare"),description:Ky("Add a service section.","blockspare"),icon:a.services,category:nk,keywords:["blockspare",Ky("block","blockspare"),Ky("services","blockspare"),Ky("box","blockspare"),Ky("portfolio","blockspare")],example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},attributes:rk,supports:{align:["wide","full","center"],html:!0},edit:Qy,save:function(e){const t=e.attributes,n=t.columnsGap,r=t.align,a=t.marginTop,o=t.marginBottom,s=i()(["blockspare-service-table-wrap","blockspare-block-service-table-gap-"+n]);return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-service-block-wrapper","blockspare-section-header-wrapper","align"+r),style:{marginTop:a?a+"px":void 0,marginBottom:o?o+"px":void 0}},wp.element.createElement(cy,e,wp.element.createElement("div",{className:s||void 0},wp.element.createElement(ek.Content,null))))}});var ak=n(92);const ok=wp.i18n.__,ik=wp.element.Component,sk=(wp.compose.compose,wp.blockEditor.InspectorControls),lk=wp.components,ck=(lk.withFallbackStyles,lk.PanelBody);class uk extends ik{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.titleFontSize,n=e.subtitleFontSize,r=e.headerTagOption,a=e.headertitleColor,o=e.headersubtitleColor,i=e.headerlayoutOption,s=e.titlePaddingTop,l=e.titlePaddingBottom,c=e.subtitlePaddingTop,u=e.subtitlePaddingBottom,d=e.dashColor,p=e.headerboxColor,m=this.props.setAttributes;return wp.element.createElement(sk,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(ck,{title:ok("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(bt,{enableBlockGaps:!1,titleFontSize:t,onChangetitleFontSize:e=>m({titleFontSize:e}),subtitleFontSize:n,onChangesubtitleFontSize:e=>m({subtitleFontSize:e}),headerlayoutOption:i,onChangeHeaderStyle:e=>m({headerlayoutOption:e}),headerTagOption:r,onChangeHeaderTag:e=>m({headerTagOption:e}),headerboxColor:p,onChangeboxcolor:e=>m({headerboxColor:e}),dashColor:d,onChangeDashColor:e=>m({dashColor:e}),headertitleColor:a,onChangetitlecolor:e=>m({headertitleColor:e}),titlePaddingTop:s,onChangetitlePaddingTop:e=>m({titlePaddingTop:e}),titlePaddingBottom:l,onChangetitlePaddingBottom:e=>m({titlePaddingBottom:e}),headersubtitleColor:o,onChangesubtitlecolor:e=>m({headersubtitleColor:e}),subtitlePaddingTop:c,onChangesubtitlePaddingTop:e=>m({subtitlePaddingTop:e}),subtitlePaddingBottom:u,onChangesubtitlePaddingBottom:e=>m({subtitlePaddingBottom:e})}))))}}function dk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pk(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dk(Object(n),!0).forEach((function(t){mk(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dk(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function mk(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const fk=wp.i18n.__,hk=(wp.compose.compose,wp.element),bk=hk.Component,gk=hk.Fragment,_k=wp.blockEditor,yk=_k.RichText;_k.withFontSizes,_k.withColors;function kk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function wk(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kk(Object(n),!0).forEach((function(t){vk(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kk(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function vk(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Mk=wp.i18n.__,Lk=wp.blocks.registerBlockType,Tk=wp.blockEditor,Ek=Tk.RichText,Sk=(Tk.getFontSizeClass,Tk.getColorClassName,ak.name),xk=ak.category,Ck=wk({},Ft);Lk(Sk,{title:Mk("Service Title","blockspare"),description:Mk("Adds a product title component with schema markup.","blockspare"),icon:a.sectionHeader,category:xk,parent:["blockspare/blockspare-services-inner"],keywords:[Mk("Service","blockspare"),Mk("title","blockspare")],attributes:Ck,edit:class extends bk{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.headerTagOption,r=t.headerTitle,a=t.headerSubTitle,o=e.attributes,i=e.setAttributes,s=pk({},Ut(o)),l=pk({},qt(o)),c=pk({},Gt(o));return[wp.element.createElement(gk,null,wp.element.createElement(uk,this.props),wp.element.createElement("div",{className:"blockspare-section-head-wrap"},wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:s}),wp.element.createElement(yk,{tagName:n,placeholder:fk("Title","blockspare"),keepPlaceholderOnFocus:!0,value:r,className:"blockspare-title",style:l,onChange:e=>i({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:s})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:s}),wp.element.createElement(yk,{tagName:"p",placeholder:fk("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:a,className:"blockspare-subtitle",style:c,onChange:e=>i({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:s})))))]}},save:function(e){const t=e.attributes,n=t.headerTagOption,r=t.headerTitle,a=t.headerSubTitle,o=wk({},Ut(e.attributes)),i=wk({},qt(e.attributes)),s=wk({},Gt(e.attributes));return wp.element.createElement("div",{className:"blockspare-title-wrap"},wp.element.createElement(It,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),r&&wp.element.createElement(Ek.Content,{tagName:n,className:"blockspare-title",style:i,value:r}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),a&&wp.element.createElement(Ek.Content,{tagName:"p",className:"blockspare-subtitle",style:s,value:a}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o}))))}});var Dk=n(60);function Ok(){return(Ok=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}const Yk=wp.i18n.__,jk=wp.element.Component,Pk=wp.compose.compose,Nk=wp.blockEditor,Bk=Nk.InspectorControls,Ak=(Nk.FontSizePicker,Nk.withFontSizes),Hk=Nk.withColors,zk=Nk.ContrastChecker,Ik=Nk.PanelColorSettings,Fk=(Nk.ColorPalette,wp.components),Rk=Fk.withFallbackStyles,Wk=Fk.PanelBody,Uk=(Fk.PanelRow,Fk.SelectControl,Fk.BaseControl,Fk.RangeControl,Rk((e,t)=>{const n=t.attributes,r=n.textColor,a=n.backgroundColor,o=n.fontSize,i=n.customFontSize,s=e.querySelector('[contenteditable="true"]'),l=s?getComputedStyle(s):null;return{fallbackBackgroundColor:a||!l?void 0:l.backgroundColor,fallbackTextColor:r||!l?void 0:l.color,fallbackFontSize:o||i||!l?void 0:parseInt(l.fontSize)||void 0}}));var qk=Pk([Uk,Ak("fontSize"),Hk("backgroundColor",{textColor:"color"})])(class extends jk{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(t.borderStyle,t.borderColor,t.borderWidth,t.paddingTop),r=t.paddingRight,a=t.paddingBottom,o=t.paddingLeft,i=(e.isSelected,e.setAttributes),s=(e.fallbackFontSize,e.fontSize),l=(e.setFontSize,e.backgroundColor),c=e.textColor,u=(e.setBackgroundColor,e.setTextColor),d=e.fallbackBackgroundColor,p=e.fallbackTextColor;Yk("None"),Yk("Solid"),Yk("Dotted"),Yk("Dashed");return wp.element.createElement(Bk,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Ik,{title:Yk("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:c.color,onChange:u,label:Yk("Text Color","blockspare")}]},wp.element.createElement(zk,Ok({textColor:c.color,backgroundColor:l.color,fallbackTextColor:p,fallbackBackgroundColor:d},{fontSize:s.size}))),wp.element.createElement(Wk,{title:Yk("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:n,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>i({paddingTop:e}),paddingEnableRight:!0,paddingRight:r,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>i({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:a,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>i({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:o,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>i({paddingLeft:e})}))))}});const Gk=wp.i18n.__,Vk=wp.compose.compose,$k=wp.element,Jk=$k.Component,Xk=$k.Fragment,Qk=wp.blockEditor,Kk=Qk.RichText,Zk=Qk.withFontSizes,ew=Qk.withColors;var tw=Vk([Zk("fontSize"),ew("backgroundColor",{textColor:"color"})])(class extends Jk{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.features,r=t.paddingTop,a=t.paddingRight,o=t.paddingBottom,s=t.paddingLeft,l=t.sectionAlignment,c=(e.isSelected,e.className,e.setAttributes),u=(e.fallbackFontSize,e.fontSize),d=e.backgroundColor,p=e.textColor,m=i()({"blockspare-services-inner-description":!0,[u.class]:u.class,"has-background":d.color,[d.class]:d.class}),f={fontSize:u.size?u.size+"px":void 0,backgroundColor:d.color,color:p.color?p.color:"#6d6d6d",paddingTop:r?r+"px":void 0,paddingRight:a?a+"px":void 0,paddingBottom:o?o+"px":void 0,paddingLeft:s?s+"px":void 0,textAlign:l};return[wp.element.createElement(Xk,null,wp.element.createElement(qk,this.props),wp.element.createElement(Kk,{tagName:"p",itemProp:"description",placeholder:Gk("Add a service feature","blockspare"),keepPlaceholderOnFocus:!0,value:n,onChange:e=>c({features:e}),style:f,className:m||void 0}))]}});const nw=wp.i18n.__,rw=wp.blocks.registerBlockType,aw=wp.blockEditor,ow=aw.RichText,iw=aw.getFontSizeClass,sw=aw.getColorClassName,lw=Dk.name,cw=Dk.category,uw=Dk.attributes;rw(lw,{title:nw("Service Features","blockspare"),description:nw("Adds a feature component with schema markup.","blockspare"),icon:a.iconlist,category:cw,parent:["blockspare/blockspare-services-inner"],keywords:[nw("Service table","blockspare"),nw("features","blockspare"),nw("shop","blockspare")],attributes:uw,edit:tw,save:function(e){const t=e.attributes,n=t.features,r=t.fontSize,a=t.customFontSize,o=t.backgroundColor,s=t.textColor,l=t.customBackgroundColor,c=(t.customTextColor,t.paddingTop),u=t.paddingRight,d=t.paddingBottom,p=t.paddingLeft,m=iw(r),f=sw("background-color",o),h=i()({"has-background":o||l,"blockspare-service-table-features":!0,[m]:m,[f]:f}),b={fontSize:m?void 0:a,backgroundColor:f?void 0:l,color:s||"#6d6d6d",paddingTop:c?c+"px":void 0,paddingRight:u?u+"px":void 0,paddingBottom:d?d+"px":void 0,paddingLeft:p?p+"px":void 0};return wp.element.createElement(ow.Content,{tagName:"p",itemProp:"description",value:n,className:h||void 0,style:b})}});var dw=n(61);const pw=wp.i18n.__,mw=wp.element.Component,fw=wp.compose.compose,hw=wp.blockEditor,bw=hw.InspectorControls,gw=hw.withFontSizes,_w=hw.withColors,yw=hw.PanelColorSettings,kw=wp.components,ww=kw.withFallbackStyles,vw=kw.PanelBody,Mw=kw.ToggleControl,Lw=ww((e,t)=>{const n=t.attributes.backgroundColor,r=e.querySelector('[contenteditable="true"]'),a=r?getComputedStyle(r):null;return{fallbackBackgroundColor:n||!a?void 0:a.backgroundColor}});var Tw=fw([Lw,gw("fontSize"),_w("backgroundColor")])(class extends mw{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.paddingTop,r=t.paddingBottom,a=t.buttonBackgroundColor,o=t.buttonTextColor,i=t.buttonSize,s=t.buttonShape,l=t.buttonStyle,c=t.buttonTarget,u=t.borderColor,d=t.borderBtnTextColor,p=t.enableGradient,m=t.backgroundColor1,f=t.backgroundColor2,h=t.gradientAngle,b=t.colorLocation1,g=t.colorLocation2,_=t.btnFontWeight,y=t.btnBorderWidth,k=(e.isSelected,e.setAttributes),w=e.backgroundColor,v=e.setBackgroundColor;e.fallbackBackgroundColor;return wp.element.createElement(bw,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(vw,{title:pw("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Le,{enableButtonTarget:!1,buttonTarget:c,onChangeButtonTarget:e=>k({buttonTarget:!c}),enableGradient:p,onChangeGradient:e=>k({enableGradient:e}),enableButtonSize:!0,buttonSize:i,onChangeButtonSize:e=>k({buttonSize:e}),enableButtonShape:!0,buttonShape:s,onChangeButtonShape:e=>k({buttonShape:e}),buttonBackgroundColor:a,onChangeButtonColor:e=>k({buttonBackgroundColor:e}),buttonTextColor:o,onChangeButtonTextColor:e=>k({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:l,onChangeBorderStyle:e=>k({buttonStyle:e}),borderColor:u,onchangeBorderColor:e=>k({borderColor:e}),borderBtnTextColor:d,onChangeBorderBtnTextColor:e=>k({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:y,onchangebtnBorderWidth:e=>k({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:_,onchangeBtnFontWeight:e=>k({btnFontWeight:e})}),"none"===l&&wp.element.createElement(Mw,{label:pw("Enable Gradient","blockspare"),checked:p,onChange:()=>this.props.setAttributes({enableGradient:!p})}),p&&"none"===l&&wp.element.createElement(vw,{title:pw("Gradient Option","blockspare"),initialOpen:!0},wp.element.createElement(Ce,{backgroundColor1:m,onChangeBackgroundColor1:e=>k({backgroundColor1:e}),backgroundColor2:f,onChangeBackgroundColor2:e=>k({backgroundColor2:e}),gradientAngle:h,onChangeGradientAngle:e=>k({gradientAngle:e}),colorLocation1:b,onChangeColorLocation1:e=>k({colorLocation1:e}),colorLocation2:g,onChangeColorLocation2:e=>k({colorLocation2:e})}))),wp.element.createElement(yw,{title:pw("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:w.color,onChange:v,label:pw("Background Color","blockspare")}]}),wp.element.createElement(vw,{title:pw("Gap Settings","blockspare"),initialOpen:!1},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:n,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>k({paddingTop:e}),paddingEnableBottom:!0,paddingBottom:r,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>k({paddingBottom:e})}))))}});function Ew(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Sw(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const xw=wp.i18n.__,Cw=(wp.blocks.registerBlockType,wp.compose.compose),Dw=wp.element,Ow=Dw.Component,Yw=Dw.Fragment,jw=wp.blockEditor,Pw=jw.RichText,Nw=jw.withFontSizes,Bw=jw.withColors,Aw=jw.URLInput,Hw=wp.components,zw=Hw.IconButton,Iw=Hw.Dashicon;var Fw=Cw([Nw("fontSize"),Bw("backgroundColor",{textColor:"color"})])(class extends Ow{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.paddingTop,r=t.paddingBottom,a=t.buttonText,o=t.buttonUrl,s=t.buttonAlignment,l=(t.buttonBackgroundColor,t.buttonTextColor,t.buttonSize),c=t.buttonShape,u=(t.buttonTarget,t.buttonStyle,t.borderColor,t.borderBtnTextColor,e.isSelected),d=e.attributes,p=e.setAttributes,m=e.backgroundColor,f=i()({"blockspare-service-button":!0}),h={backgroundColor:m.color,paddingTop:n?n+"px":void 0,paddingBottom:r?r+"px":void 0},b=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ew(Object(n),!0).forEach((function(t){Sw(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ew(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Ae(d));return[wp.element.createElement(Yw,null,wp.element.createElement(Tw,this.props),wp.element.createElement("div",{className:f||void 0,style:h},wp.element.createElement(be,this.props,wp.element.createElement(Pw,{tagName:"span",placeholder:xw("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:a,allowedFormats:[],className:i()("blockspare-button",c,l),style:b,onChange:e=>p({buttonText:e})})),u&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${s}`,onSubmit:e=>e.preventDefault(),style:{textAlign:s}},wp.element.createElement(Iw,{icon:"admin-links"}),wp.element.createElement(Aw,{className:"button-url",value:o,onChange:e=>p({buttonUrl:e})}),wp.element.createElement(zw,{icon:"editor-break",label:xw("Apply","blockspare"),type:"submit"}))))]}});function Rw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ww(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rw(Object(n),!0).forEach((function(t){Uw(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rw(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Uw(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const qw=wp.i18n.__,Gw=wp.blocks.registerBlockType,Vw=wp.blockEditor,$w=Vw.RichText,Jw=Vw.getColorClassName,Xw=dw.name,Qw=dw.category,Kw=Ww({},dw.attributes,{},He);Gw(Xw,{title:qw("Button","blockspare"),description:qw("Adds a product title component with schema markup.","blockspare"),icon:a.button,category:Qw,parent:["blockspare/blockspare-services-inner"],keywords:[qw("Services","blockspare"),qw("title","blockspare"),qw("shop","blockspare")],attributes:Kw,edit:Fw,save:function(e){const t=e.attributes,n=t.backgroundColor,r=t.customBackgroundColor,a=t.paddingTop,o=t.paddingBottom,s=t.buttonText,l=t.buttonUrl,c=(t.buttonStyle,t.borderColor,t.borderBtnTextColor,t.buttonBackgroundColor,t.buttonTextColor,t.buttonSize),u=t.buttonShape,d=t.buttonTarget,p=Jw("background-color",n),m=i()({"has-background":n||r,"blockspare-service-button":!0,[p]:p}),f=Ww({},Ae(e.attributes)),h={backgroundColor:p?void 0:r,paddingTop:a?a+"px":void 0,paddingBottom:o?o+"px":void 0};return wp.element.createElement("div",{className:m||void 0,style:h},wp.element.createElement(be,e,s&&wp.element.createElement("a",{href:l,target:d?"_blank":null,rel:d?"noopener noreferrer":null,className:i()("blockspare-button",u,c),style:f},wp.element.createElement($w.Content,{value:s}))))}});n(470);var Zw=n(62);const ev=e=>wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{fill:e.fillColor},fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l139.103,120.539L97.41,497.25L255,402.186 l157.59,95.064l-41.692-179.239L510,197.472z M255,354.348l-95.957,57.886l25.398-109.166l-84.736-73.389l111.69-9.588 L255,117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166L255,354.348z"})),tv=e=>wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{fill:e.fillColor},fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l0,0l0,0l139.103,120.539L97.41,497.25L255,402.186l0,0 l157.59,95.039l-41.692-179.239L510,197.472z M255,354.348V117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166 L255,354.348z"})),nv=e=>wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{fill:e.fillColor},fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 510 510"},wp.element.createElement("polygon",{points:"255,402.212 412.59,497.25 370.897,318.011 510,197.472 326.63,181.738 255,12.75 183.371,181.738 0,197.472 139.103,318.011 97.41,497.25",id:"star"})),rv=wp.i18n.__,av=wp.element.Component,ov=wp.blockEditor,iv=ov.InspectorControls,sv=(ov.PanelColorSettings,wp.components),lv=sv.PanelBody,cv=sv.RangeControl;class uv extends av{render(){const e=this.props,t=e.attributes,n=t.starCount,r=(t.starSize,t.starColor,t.backgroundColor,e.setAttributes);return wp.element.createElement(iv,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(lv,{title:rv("Star Settings","blockspare"),initialOpen:!1},wp.element.createElement(cv,{label:rv("Number Of Stars","blockspare"),value:n,onChange:e=>r({starCount:e}),min:1,max:5,step:1}))))}}wp.i18n.__;const dv=wp.element,pv=dv.Fragment,mv=dv.Component,fv=wp.blockEditor,hv=fv.BlockControls,bv=fv.AlignmentToolbar;wp.blockEditor.RichText;const gv=wp.element.Component;const _v=wp.i18n.__,yv=wp.blocks.registerBlockType,kv=Zw.name,wv=Zw.category,vv=Zw.attributes;yv(kv,{title:_v("BS Star Ratings","blockspare"),description:_v("Display creative star ratings.","blockspare"),category:wv,icon:a.starrating,attributes:vv,example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},keywords:[_v("block","blockspare"),_v("star","blockspare"),_v("review","blockspare"),_v("rating","blockspare")],edit:class extends mv{render(){const e=this.props,t=e.attributes,n=t.starAlign,r=t.starCount,a=t.starSize,o=t.starColor,s=t.selectedStars,l=t.emptyStarColor,c=t.backgroundColor,u=e.highlightedStars,d=e.setAttributes;return wp.element.createElement(pv,null,wp.element.createElement(hv,null,wp.element.createElement(bv,{value:n,onChange:e=>{d({starAlign:e})}})),wp.element.createElement(uv,this.props),wp.element.createElement("div",{className:i()("blockspare-block-star-ratings-wrap"),style:{backgroundColor:c||"transparent"}},wp.element.createElement("div",{className:i()("blockspare-star-inner-container","star-align-"+n),onMouseLeave:()=>this.setState({highlightedStars:0})},[...Array(r)].map((e,t)=>wp.element.createElement("div",{className:"blockspare-ratings",key:t,onMouseEnter:()=>{this.setState({highlightedStars:t+1})},onClick:()=>{d(s%1==0?{selectedStars:t+(s-1===t?.5:1)}:{selectedStars:t+(s-.5===t?1:.5)})}},t<(u||s)?u?u-1===t?s%1>0?u-s-.5!=0?wp.element.createElement(tv,{size:a,fillColor:o||"#fbd012"}):wp.element.createElement(nv,{size:a,fillColor:o||"#fbd012"}):u-s!=0?wp.element.createElement(nv,{size:a,fillColor:o||"#fbd012"}):wp.element.createElement(tv,{size:a,fillColor:o||"#fbd012"}):wp.element.createElement(nv,{size:a,fillColor:o||"#fbd012"}):s-t>=1?wp.element.createElement(nv,{size:a,fillColor:o||"#fbd012"}):wp.element.createElement(tv,{size:a,fillColor:o||"#fbd012"}):wp.element.createElement(ev,{size:a,fillColor:l||"#d5d3d3"}))))))}},save:class extends gv{constructor(){super(...arguments)}render(){const e=this.props.attributes,t=e.starAlign,n=e.starCount,r=e.starSize,a=e.starColor,o=e.selectedStars,s=e.emptyStarColor,l=e.backgroundColor,c=(e,t)=>wp.element.createElement("div",{className:"blockspare-ratings"}," ",wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:t||"#fbd012",width:e,height:e,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l0,0l0,0l139.103,120.539L97.41,497.25L255,402.186l0,0 l157.59,95.039l-41.692-179.239L510,197.472z M255,354.348V117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166 L255,354.348z"}))),u=(e,t)=>wp.element.createElement("div",{className:"blockspare-ratings"},wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:t||"#d5d3d3",width:e,height:e,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l139.103,120.539L97.41,497.25L255,402.186 l157.59,95.064l-41.692-179.239L510,197.472z M255,354.348l-95.957,57.886l25.398-109.166l-84.736-73.389l111.69-9.588 L255,117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166L255,354.348z"})));let d=[];for(let e=0;e<n;e++)d.push(e<o?o-e>=1?(p=r,m=a,wp.element.createElement("div",{className:"blockspare-ratings"},wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:m||"#fbd012",width:p,height:p,viewBox:"0 0 510 510"},wp.element.createElement("polygon",{points:"255,402.212 412.59,497.25 370.897,318.011 510,197.472 326.63,181.738 255,12.75 183.371,181.738 0,197.472 139.103,318.011 97.41,497.25"})))):c(r,a):u(r,s));var p,m;return wp.element.createElement("div",{className:"blockspare-block-star-ratings-wrap",style:{backgroundColor:l||"transparent"}},wp.element.createElement("div",{className:i()("blockspare-star-inner-container","star-align-"+t)},d))}}});n(471);var Mv=n(63),Lv=n(6),Tv=n.n(Lv);const Ev=wp.i18n.__,Sv=wp.element,xv=Sv.Component,Cv=(Sv.Fragment,wp.blockEditor),Dv=Cv.InspectorControls,Ov=Cv.PanelColorSettings,Yv=wp.components,jv=Yv.PanelBody,Pv=Yv.SelectControl;Yv.RangeControl;class Nv extends xv{render(){const e=this.props,t=e.attributes,n=(t.tabStyle,t.tabLayout),r=t.tabBackGroundColor,a=t.activeTabBackgroundColor,o=t.tabTextColor,i=t.activetabTextColor,s=(t.tabAlignment,e.setAttributes),l=(Ev("Default","blockspare"),Ev("Vertical","blockspare"),[{value:"blockspare-layout1",label:Ev("Layout 1","blockspare")},{value:"blockspare-layout2",label:Ev("Layout 2","blockspare")}]);Ev("Left","blockspare"),Ev("Right","blockspare"),Ev("center","blockspare");return wp.element.createElement(Dv,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(jv,{title:Ev("Tab Settings"),initialOpen:!1},wp.element.createElement(Pv,{label:Ev("Tab Layout","blockspare"),options:l,value:n,onChange:e=>this.props.setAttributes({tabLayout:e})})),wp.element.createElement(Ov,{title:Ev("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:o,onChange:e=>s({tabTextColor:e}),label:Ev("Text Color","blockspare")},{value:i,onChange:e=>s({activetabTextColor:e}),label:Ev("Active Text Color","blockspare")},{value:r,onChange:e=>s({tabBackGroundColor:e}),label:Ev("Tab Background Color","blockspare")},{value:a,onChange:e=>s({activeTabBackgroundColor:e}),label:Ev("Active Tab Background Color","blockspare")}]})))}}function Bv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Av(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Bv(Object(n),!0).forEach((function(t){Hv(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Bv(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Hv(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const zv=wp.i18n.__,Iv=wp.components,Fv=Iv.Tooltip,Rv=(Iv.PanelBody,Iv.Toolbar,wp.compose.compose),Wv=wp.data,Uv=Wv.withSelect,qv=Wv.withDispatch,Gv=wp.element,Vv=Gv.Component,$v=Gv.Fragment,Jv=wp.blockEditor,Xv=Jv.InnerBlocks,Qv=Jv.RichText;var Kv=Rv([Uv((e,t)=>{const n=t.clientId;return{block:(0,e("core/block-editor").getBlock)(n)}}),qv(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,removeBlock:t.removeBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends Vv{constructor(e){super(e),Hv(this,"updateTitles",(e,t)=>{const n=this.props,r=n.attributes.tabTitles;(0,n.setAttributes)({tabTitles:r.map((n,r)=>(t===r&&(n=Av({},n,{},e)),n))})}),Hv(this,"renderTabTitles",()=>{const e=this.props,t=e.attributes,n=t.tabTitles,r=t.tabBackGroundColor,a=t.activeTabBackgroundColor,o=t.tabTextColor,i=t.activetabTextColor,s=e.block,l=e.clientId;let c="#8b249c";a&&(c=a);let u="#3c1a5b";r&&(u=r);let d="#fff";i&&(d=i);let p="#fff";o&&(p=o);let m=Tv()(`#block-${l}`);const f=this.state.showIconPicker;return n.map((e,t)=>wp.element.createElement("span",{className:`blockspare-tab-item ${this.state.activeTab==t+1?"blockspare-active":""}`},wp.element.createElement("span",{className:`blockspare-tab-title ${e.iconName?"blockspare-has-icon-"+iconPosition:""}`,onClick:()=>{let e=Tv()(`#block-${s.innerBlocks[t].clientId}`,m);Tv()(".blockspare-tab-content.blockspare-active",m).removeClass("blockspare-active"),e.addClass("blockspare-active"),this.setState({activeTab:t+1,initialRender:!1,showIconPicker:!f})},role:"button",style:{backgroundColor:this.state.activeTab==t+1?c:u,color:this.state.activeTab==t+1?d:p}},wp.element.createElement(Qv,{key:"editable",keepPlaceholderOnFocus:!0,placeholder:zv("Add Tab Title"),value:e.title,onChange:e=>this.updateTitles({title:e},t)})),wp.element.createElement(Fv,{text:zv("Delete this tab")},wp.element.createElement("span",{className:"blockspare-action-tab-remove",onClick:()=>this.deleteTab(t),role:"button"},wp.element.createElement("i",{className:"fas fa-times"})))))}),Hv(this,"deleteTab",e=>{const t=this.state.activeTab,n=this.props,r=n.attributes,a=r.tabTitles,o=r.tabs,i=n.setAttributes,s=n.block,l=n.removeBlock,c=n.updateBlockAttributes,u=n.clientId;i({tabTitles:a.filter((t,n)=>n!=e),tabs:o-1});let d=e+1;for(;d<o;)c(s.innerBlocks[d].clientId,Object.assign(s.innerBlocks[d].attributes,{id:s.innerBlocks[d].attributes.id-1})),d++;if(l(s.innerBlocks[e].clientId),e+1===t){let t=Tv()(`#block-${u}`),n=Tv()(`#block-${s.innerBlocks[e+1<o?e+1:o>=2?e-1:e].clientId}`,t);Tv()(".blockspare-active",t).removeClass("blockspare-active"),n.addClass("blockspare-active"),this.setState({activeTab:0==e?1:e+1<o?e+1:e,initialRender:!1})}e+1<t&&this.setState({activeTab:t-1,initialRender:!1})}),Hv(this,"newTitles",()=>{const e=this.props.attributes,t=e.tabs,n=e.tabTitles;let r=JSON.parse(JSON.stringify(n));return r[t]={title:zv(`Tab ${t+1}`),icon:{}},r}),this.state={device:"md",initialRender:!0,activeTab:1,spacer:!0,showIconPicker:!1}}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,r=e.attributes.uniqueId,a=n.substr(0,6);r?r&&r!=a&&t({uniqueId:a}):t({uniqueId:a})}componentDidUpdate(e,t){const n=this.props,r=n.attributes.tabs,a=n.clientId,o=n.block;if(!this.state.initialRender&&e.block.innerBlocks.length<o.innerBlocks.length){let e=Tv()(`#block-${a}`),t=Tv()(`#block-${o.innerBlocks[r-1].clientId}`,e);Tv()(".blockspare-active",e).removeClass("blockspare-active"),t.addClass("blockspare-active")}}render(){const e=this.props.attributes,t=e.uniqueId,n=e.tabs,r=(e.tabTitles,e.tabStyle),a=e.tabLayout,o=e.tabAlignment,s=this.props,l=(s.name,s.setAttributes);s.isSelected;let c=[],u=0;for(;u<n;)c.push(u),u++;return wp.element.createElement($v,null,wp.element.createElement(Nv,Av({setAttributes:l},this.props)),wp.element.createElement("div",{className:`blockspare-block-${t}`},wp.element.createElement("div",{className:i()("blockspare-block-tab blockspare-tab-style",r,a)},wp.element.createElement("div",{className:i()("blockspare-tab-nav","blockspare-horizontal"==r?o:"")},this.renderTabTitles(),wp.element.createElement(Fv,{text:zv("Add new tab")},wp.element.createElement("strong",{className:"blockspare-add-new-tab",onClick:()=>{this.setState({activeTab:n+1,initialRender:!1}),l({tabs:n+1,tabTitles:this.newTitles()})},role:"button",areaLabel:zv("Add new tab")},wp.element.createElement("i",{className:"fas fa-plus-circle"})))),wp.element.createElement("div",{className:"blockspare-tab-body"},wp.element.createElement(Xv,{tagName:"div",template:c.map(e=>["blockspare/blockspare-tab",{id:e+1,customClassName:0==e?"blockspare-tab-content blockspare-active wp-block-blockspare-blockspare-tab":"blockspare-tab-content wp-block-blockspare-blockspare-tab"}]),templateLock:"all",allowedBlocks:["blockspare/blockspare-tab"]})))))}});const Zv=wp.element.Component,eM=wp.blockEditor.InnerBlocks;var tM=class extends Zv{constructor(...e){var t,n,r;super(...e),r=()=>{const e=this.props.attributes,t=e.tabTitles,n=e.tabBackGroundColor,r=e.activeTabBackgroundColor,a=e.tabTextColor,o=e.activetabTextColor,i=e.iconPosition;e.tabAlignment;let s="#8b249c";r&&(s=r);let l="#3c1a5b";n&&(l=n);let c="#fff";o&&(c=o);let u="#fff";return a&&(u=a),t.map((e,t)=>wp.element.createElement("span",{className:`blockspare-tab-item ${0==t?"blockspare-active":""}`},wp.element.createElement("span",{class:`blockspare-tab-title ${e.iconName?"blockspare-has-icon-"+i:""}`,role:"button",style:{backgroundColor:0==t?s:l,color:0==t?c:u},"tab-bg":l,"atab-bg":s,"tab-text":u,"atab-text":c},e.title)))},(n="renderTabTitles")in(t=this)?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r}render(){const e=this.props.attributes,t=(e.uniqueId,e.tabs),n=e.tabStyle,r=e.tabLayout,a=e.tabAlignment;let o=[],s=0;for(;s<t;)o.push(s),s++;return wp.element.createElement("div",{className:"blockspare-block"},wp.element.createElement("div",{className:i()("blockspare-block-tab",n,r)},wp.element.createElement("div",{className:i()("blockspare-tab-nav","blockspare-horizontal"==n?a:"")},this.renderTabTitles(o)),wp.element.createElement("div",{className:"blockspare-tab-body"},wp.element.createElement(eM.Content,null))))}};const nM=wp.i18n.__,rM=wp.blocks.registerBlockType,aM=Mv.name,oM=Mv.category,iM=Mv.attributes;rM(aM,{title:nM("BS Tabs","blockspare"),description:nM("Add tabs","blockspare"),category:oM,icon:a.tabs,attributes:iM,supports:{html:!1,className:!1,align:["center","wide","full"]},keywords:[nM("block","blockspare"),nM("tab","blockspare"),nM("tabs","blockspare"),nM("tabbed","blockspare"),nM("content","blockspare")],example:{attributes:{tabTitles:[{title:"Tab 1"},{title:"Tab 2"},{title:"Tab 3"}]},innerBlocks:[{name:"blockspare/blockspare-tab",innerBlocks:[{name:"blockspare/blockspare-tab",attributes:{tabTitles:[{title:"Tab 1"},{title:"Tab 2"},{title:"Tab 3"}]}}]}]},edit:Kv,save:tM});var sM=n(93);const lM=wp.element.Component,cM=wp.blockEditor.InnerBlocks;var uM=class extends lM{render(){const e=this.props.attributes.id;return wp.element.createElement("div",{className:`blockspare-tab-content ${1==e?"blockspare-active":""}`},wp.element.createElement(cM.Content,null))}};const dM=wp.element.Component,pM=wp.blockEditor.InnerBlocks;var mM=class extends dM{render(){return wp.element.createElement("div",null,wp.element.createElement(pM,{templateLock:!1}))}};const fM=wp.i18n.__,hM=wp.blocks.registerBlockType,bM=sM.name,gM=sM.category;hM(bM,{title:fM("Tab","blockspare"),category:gM,parent:["blockspare/blockspare-tabs"],supports:{html:!1,inserter:!1,reusable:!1},icon:"cart",attributes:{uniqueId:{type:"string",default:""},id:{type:"number",default:1},customClassName:{type:"string",default:""}},getEditWrapperProps:e=>({"data-tab":e.id,className:`wp-block editor-block-list__block block-editor-block-list__block ${e.customClassName}`}),edit:mM,save:uM});const _M=wp.element.Component;class yM extends _M{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.columns,r=t.columnsGap,a=t.align,o=(e.attributes,i()([this.props.className,"blockspare-testimonial-columns-"+n,"blockspare-testimonial-gap-"+r],{["align"+a]:a}));return wp.element.createElement("div",{className:o||void 0},this.props.children)}}n(472),n(473);var kM=n(94);const wM=wp.i18n.__,vM=wp.element.Component,MM=wp.blockEditor,LM=MM.InspectorControls,TM=MM.PanelColorSettings,EM=wp.components,SM=EM.PanelBody;EM.RangeControl,EM.ToggleControl;class xM extends vM{render(){const e=this.props,t=e.attributes,n=(t.starColor,t.starSize,t.enableRatings,t.titleFontSize),r=t.subtitleFontSize,a=t.headerTagOption,o=t.headertitleColor,i=t.headersubtitleColor,s=t.headerlayoutOption,l=t.titlePaddingTop,c=t.titlePaddingBottom,u=t.subtitlePaddingTop,d=t.subtitlePaddingBottom,p=t.headerboxColor,m=t.dashColor,f=(t.testimonialDescriptionTextSize,t.testimonialDescriptionTextColor),h=(t.backGroundColor,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,t.borderRadius,e.setAttributes);return wp.element.createElement(LM,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(SM,{title:wM("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(bt,{enableBlockGaps:!1,titleFontSize:n,onChangetitleFontSize:e=>h({titleFontSize:e}),subtitleFontSize:r,onChangesubtitleFontSize:e=>h({subtitleFontSize:e}),headerlayoutOption:s,onChangeHeaderStyle:e=>h({headerlayoutOption:e}),headerTagOption:a,onChangeHeaderTag:e=>h({headerTagOption:e}),headerboxColor:p,onChangeboxcolor:e=>h({headerboxColor:e}),dashColor:m,onChangeDashColor:e=>h({dashColor:e}),headertitleColor:o,onChangetitlecolor:e=>h({headertitleColor:e}),titlePaddingTop:l,onChangetitlePaddingTop:e=>h({titlePaddingTop:e}),titlePaddingBottom:c,onChangetitlePaddingBottom:e=>h({titlePaddingBottom:e}),headersubtitleColor:i,onChangesubtitlecolor:e=>h({headersubtitleColor:e}),subtitlePaddingTop:u,onChangesubtitlePaddingTop:e=>h({subtitlePaddingTop:e}),subtitlePaddingBottom:d,onChangesubtitlePaddingBottom:e=>h({subtitlePaddingBottom:e})})),wp.element.createElement(SM,{title:wM("Description Settings","blockspare"),initialOpen:!1},wp.element.createElement(TM,{title:wM("Description Color","blockspare"),initialOpen:!1,colorSettings:[{value:f,onChange:e=>h({testimonialDescriptionTextColor:e}),label:wM("Description Color","blockspare")}]}))))}}function CM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function DM(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?CM(Object(n),!0).forEach((function(t){OM(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):CM(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function OM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const YM=blockspare_globals,jM=["core/image"],PM=[["core/image",{url:YM.menu_img_url,className:"is-style-circle-mask",width:120,height:120,align:"center"}]],NM=wp.i18n.__,BM=wp.element,AM=BM.Component,HM=BM.Fragment,zM=wp.blockEditor,IM=zM.RichText,FM=zM.InnerBlocks;function RM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function WM(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?RM(Object(n),!0).forEach((function(t){UM(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):RM(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function UM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const qM=wp.blockEditor,GM=qM.InnerBlocks,VM=qM.RichText,$M=wp.element.Component;function JM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function XM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const QM=wp.i18n.__,KM=wp.blocks.registerBlockType,ZM=kM.category,eL=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?JM(Object(n),!0).forEach((function(t){XM(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):JM(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Ft,{},kM.attributes,{},Vt),tL={title:QM("Testimonial Item","blockspare"),description:QM("Display creative testimonial.","blockspare"),parent:["blockspare/blockspare-testimonial"],icon:"link",category:ZM,supports:{html:!1,inserter:!1,reusable:!1},attributes:eL,edit:class extends AM{render(){const e=this.props,t=e.attributes,n=t.testimonialDescription,r=t.enableRatings,a=t.starCount,o=t.starSize,s=t.starColor,l=t.selectedStars,c=t.emptyStarColor,u=t.headerTagOption,d=t.headerTitle,p=t.headerSubTitle,m=t.testimonialDescriptionTextSize,f=t.testimonialDescriptionTextColor,h=t.backGroundColor,b=t.borderRadius,g=e.highlightedStars,_=e.attributes,y=e.setAttributes,k=DM({},Ut(_)),w=DM({},qt(_)),v=DM({},Gt(_));return wp.element.createElement(HM,null,wp.element.createElement(xM,this.props),wp.element.createElement("div",{className:i()("blockspare-block-testimonial-wrap"),style:DM({},Dt(_),{backgroundColor:h||"#fff",borderRadius:b||null})},wp.element.createElement("div",{className:"blockspare-author-wrap"},wp.element.createElement("div",{className:"blockspare-img-wrapper"},wp.element.createElement(FM,{template:PM,allowedBlocks:jM,templateLock:!0,templateInsertUpdatesSelection:!0})),wp.element.createElement("div",{className:"blockspare-author-designation"},wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:k}),wp.element.createElement(IM,{tagName:u,placeholder:NM("Title","blockspare"),keepPlaceholderOnFocus:!0,value:d,className:"blockspare-title",style:w,onChange:e=>y({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:k})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:k}),wp.element.createElement(IM,{tagName:"p",placeholder:NM("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:p,className:"blockspare-subtitle",style:v,onChange:e=>y({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:k}))))),r&&wp.element.createElement("div",{className:"blockspare-star-rating"},wp.element.createElement("div",{className:"blockspare-star-outer-container"},wp.element.createElement("div",{className:"blockspare-star-inner-container",onMouseLeave:()=>this.setState({highlightedStars:0})},[...Array(a)].map((e,t)=>wp.element.createElement("div",{className:"blockspare-ratings",key:t,onMouseEnter:()=>{this.setState({highlightedStars:t+1})},onClick:()=>{y(l%1==0?{selectedStars:t+(l-1===t?.5:1)}:{selectedStars:t+(l-.5===t?1:.5)})}},t<(g||l)?g?g-1===t?l%1>0?g-l-.5!=0?wp.element.createElement(tv,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(nv,{size:o,fillColor:s||"#fbd012"}):g-l!=0?wp.element.createElement(nv,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(tv,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(nv,{size:o,fillColor:s||"#fbd012"}):l-t>=1?wp.element.createElement(nv,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(tv,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(ev,{size:o,fillColor:c||"#d5d3d3"})))))),wp.element.createElement("div",{className:"blockspare-testimonial-content"},wp.element.createElement(IM,{tagName:"p",className:"blockspare-description",onChange:e=>y({testimonialDescription:e}),value:n,placeholder:NM("Description","blockspare"),style:{fontSize:m+"px",color:f||"#6d6d6d"},keepPlaceholderOnFocus:!0}))))}},save:class extends $M{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.testimonialDescription,r=t.sectionAlignment,a=t.enableRatings,o=t.starCount,s=t.starSize,l=t.starColor,c=t.selectedStars,u=t.emptyStarColor,d=t.headerTagOption,p=t.headerTitle,m=t.headerSubTitle,f=t.testimonialDescriptionTextSize,h=t.testimonialDescriptionTextColor,b=t.backGroundColor,g=t.borderRadius,_=e.attributes,y=WM({},Ut(_)),k=WM({},qt(_)),w=WM({},Gt(_)),v=(e,t)=>wp.element.createElement("div",{className:"blockspare-ratings"}," ",wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:t||"#fbd012",width:e,height:e,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l0,0l0,0l139.103,120.539L97.41,497.25L255,402.186l0,0 l157.59,95.039l-41.692-179.239L510,197.472z M255,354.348V117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166 L255,354.348z"}))),M=(e,t)=>wp.element.createElement("div",{className:"blockspare-ratings"},wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:t||"#d5d3d3",width:e,height:e,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l139.103,120.539L97.41,497.25L255,402.186 l157.59,95.064l-41.692-179.239L510,197.472z M255,354.348l-95.957,57.886l25.398-109.166l-84.736-73.389l111.69-9.588 L255,117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166L255,354.348z"})));let L=[];for(let e=0;e<o;e++)L.push(e<c?c-e>=1?(T=s,E=l,wp.element.createElement("div",{className:"blockspare-ratings"},wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:E||"#fbd012",width:T,height:T,viewBox:"0 0 510 510"},wp.element.createElement("polygon",{points:"255,402.212 412.59,497.25 370.897,318.011 510,197.472 326.63,181.738 255,12.75 183.371,181.738 0,197.472 139.103,318.011 97.41,497.25"})))):v(s,l):M(s,u));var T,E;return wp.element.createElement("div",{className:i()("blockspare-block-testimonial-wrap"),style:WM({},Dt(_),{borderRadius:g||null,backgroundColor:b||"#fff"})},wp.element.createElement("div",{className:"blockspare-author-wrap"},wp.element.createElement("div",{className:"blockspare-img-wrapper"},wp.element.createElement(GM.Content,null)),wp.element.createElement("div",{className:"blockspare-section-head-wrap",style:{textAlign:r}},wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:y}),p&&wp.element.createElement(VM.Content,{tagName:d,className:"blockspare-title",style:k,value:p}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:y})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:y}),m&&wp.element.createElement(VM.Content,{tagName:"p",className:"blockspare-subtitle",style:w,value:m}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:y}))))),a&&wp.element.createElement("div",{className:"blockspare-star-rating"},wp.element.createElement("div",{className:"blockspare-star-outer-container"},wp.element.createElement("div",{className:"blockspare-star-inner-container"},L))),wp.element.createElement("div",{className:"blockspare-testimonial-content"},wp.element.createElement(VM.Content,{tagName:"p",className:"blockspare-description",value:n,style:{fontSize:f+"px",color:h||"#6d6d6d"}})))}}};KM("blockspare/testimonial-item",tL);const nL=wp.i18n.__,rL=wp.element,aL=rL.Component,oL=rL.Fragment,iL=wp.components,sL=(iL.IconButton,iL.PanelBody),lL=iL.RangeControl,cL=(iL.ToggleControl,wp.blocks.createBlock),uL=wp.data,dL=uL.withSelect,pL=uL.withDispatch,mL=wp.blockEditor,fL=mL.InnerBlocks,hL=mL.InspectorControls,bL=wp.compose.compose;var gL=bL([dL((e,t)=>{const n=t.clientId,r=e("core/block-editor"),a=r.getBlock,o=r.isBlockSelected,i=r.hasSelectedInnerBlock;return{block:a(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),pL(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends aL{constructor(...e){var t,n,r;super(...e),r=e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++)t.push(["blockspare/testimonial-item",{}]);return t},(n="getTestimonialTemplate")in(t=this)?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,r=e.attributes.uniqueId,a=n.substr(0,6);r?r&&r!=a&&t({uniqueId:a}):t({uniqueId:a})}insertTestimonialItem(){let e;const t=this.props,n=t.clientId,r=t.insertBlock,a=t.block;if(a.innerBlocks&&a.innerBlocks.length){const t=a.innerBlocks[a.innerBlocks.length-1].attributes.itemNumber+1,n=tL.heading;e=Object.assign({},{},{itemNumber:t,heading:n,active:!1,defaultText:""})}else e=tL;r(cL("blockspare/testimonial-item",e),void 0,n)}render(){const e=this.props,t=e.attributes,n=(e.isSelectedBlockInRoot,e.attributes),r=(n.uniqueId,n.columns),a=n.columnsGap;return[wp.element.createElement(oL,null,wp.element.createElement(hL,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(sL,{title:nL("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(lL,{label:nL("Columns","blockspare"),value:r,onChange:e=>this.props.setAttributes({columns:e}),min:1,max:3}),wp.element.createElement(lL,{label:nL("Columns Gap","blockspare"),value:a,onChange:e=>this.props.setAttributes({columnsGap:e}),min:0,max:4,step:1})))),wp.element.createElement(yM,this.props,wp.element.createElement(fL,{template:this.getTestimonialTemplate(t),allowedBlocks:["blockspare/testimonial-item"]})))]}});const _L=wp.element.Component,yL=wp.blockEditor.InnerBlocks;var kL=class extends _L{render(){const e=this.props.attributes,t=e.columns,n=e.columnsGap,r=e.align,a=e.backgroundColor,o=i()([this.props.className,"blockspare-testimonial-wrapper","blockspare-testimonial-columns-"+t,"blockspare-testimonial-gap-"+n],{["align"+r]:r});return wp.element.createElement("div",{className:o||void 0,style:{backgroundColor:a||"transparent"}},wp.element.createElement(yL.Content,null))}},wL=n(64);const vL=wp.i18n.__,ML=wp.blocks.registerBlockType,LL=wL.name,TL=wL.category,EL=wL.attributes;ML(LL,{title:vL("BS Testimonial","blockspare"),description:vL("Add a testimonial","blockspare"),category:TL,icon:a.testimonial,attributes:EL,keywords:[vL("block","blockspare"),vL("testimonial","blockspare"),vL("team","blockspare"),vL("rating","blockspare")],example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},supports:{align:["wide","full","center"],html:!0},edit:gL,save:kL});n(474),n(475);var SL=n(65);const xL=wp.i18n.__,CL=wp.element.Component,DL=wp.blockEditor,OL=DL.InspectorControls,YL=DL.PanelColorSettings,jL=wp.components,PL=jL.PanelBody,NL=(jL.ToggleControl,jL.SelectControl),BL=jL.TextControl;jL.RangeControl;class AL extends CL{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.profileTextColor,n=(e.profileBackgroundColor,e.twitter),r=e.facebook,a=(e.instagram,e.youtube,e.linkedin),o=(e.buttonFill,e.paddingTop),i=e.paddingRight,s=e.paddingBottom,l=e.paddingLeft,c=e.marginTop,u=e.marginBottom,d=(e.iconColorOption,e.customfontColorOption,e.custombackgroundColorOption,e.buttonShapes),p=e.buttonSizes,m=e.titleFontSize,f=e.subtitleFontSize,h=e.headerTagOption,b=e.headertitleColor,g=e.headersubtitleColor,_=e.headerlayoutOption,y=e.titlePaddingTop,k=e.titlePaddingBottom,w=e.subtitlePaddingTop,v=e.subtitlePaddingBottom,M=e.headerboxColor,L=e.dashColor,T=(e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.borderRadius,this.props.setAttributes),E=(xL(" Official","blockspare"),xL("Custom","blockspare"),[{value:"blockspare-social-icon-square",label:xL("Square","blockspare")},{value:"blockspare-social-icon-circle",label:xL("Circle","blockspare")},{value:"blockspare-social-icon-rounded",label:xL("Rounded Square","blockspare")}]),S=[{value:"blockspare-social-icon-small",label:xL("Small","blockspare")},{value:"blockspare-social-icon-medium",label:xL("Medium","blockspare")},{value:"blockspare-social-icon-large",label:xL("Large","blockspare")}];xL("Solid","blockspare"),xL("Border","blockspare"),xL("None","blockspare");return wp.element.createElement(OL,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(PL,{title:xL("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(bt,{enableBlockGaps:!1,titleFontSize:m,onChangetitleFontSize:e=>T({titleFontSize:e}),subtitleFontSize:f,onChangesubtitleFontSize:e=>T({subtitleFontSize:e}),headerlayoutOption:_,onChangeHeaderStyle:e=>T({headerlayoutOption:e}),headerTagOption:h,onChangeHeaderTag:e=>T({headerTagOption:e}),headerboxColor:M,onChangeboxcolor:e=>T({headerboxColor:e}),dashColor:L,onChangeDashColor:e=>T({dashColor:e}),headertitleColor:b,onChangetitlecolor:e=>T({headertitleColor:e}),titlePaddingTop:y,onChangetitlePaddingTop:e=>T({titlePaddingTop:e}),titlePaddingBottom:k,onChangetitlePaddingBottom:e=>T({titlePaddingBottom:e}),headersubtitleColor:g,onChangesubtitlecolor:e=>T({headersubtitleColor:e}),subtitlePaddingTop:w,onChangesubtitlePaddingTop:e=>T({subtitlePaddingTop:e}),subtitlePaddingBottom:v,onChangesubtitlePaddingBottom:e=>T({subtitlePaddingBottom:e})})),wp.element.createElement(PL,{title:xL("Color Settings","blockspare"),initialOpen:!1},wp.element.createElement(YL,{title:xL("Colors","blockspare"),initialOpen:!1,colorSettings:[{value:t,onChange:e=>T({profileTextColor:e}),label:xL("Description Color","blockspare")}]})),wp.element.createElement(PL,{title:xL("Social link Urls","blockspare"),className:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(BL,{label:xL("Facebook Url","blockspare"),type:"text",value:r,onChange:e=>this.props.setAttributes({facebook:e})}),wp.element.createElement(BL,{label:xL("LinkedIn Url","blockspare"),type:"text",value:a,onChange:e=>this.props.setAttributes({linkedin:e})}),wp.element.createElement(BL,{label:xL("Twitter Url","blockspare"),type:"text",value:n,onChange:e=>this.props.setAttributes({twitter:e})})),wp.element.createElement(PL,{title:xL("Social Icon Option","blockspare"),initialOpen:!1},wp.element.createElement(NL,{label:xL("Size","blockspare"),options:S,value:p,onChange:e=>this.props.setAttributes({buttonSizes:e})}),wp.element.createElement(NL,{label:xL("Shape","blockspare"),options:E,value:d,onChange:e=>this.props.setAttributes({buttonShapes:e})})),wp.element.createElement(PL,{title:xL("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(PL,{title:xL("Padding Settings","blockspare"),initialOpen:!1},wp.element.createElement(at,{paddingEnableTop:!0,paddingTop:o,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>T({paddingTop:e}),paddingEnableRight:!0,paddingRight:i,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>T({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:s,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>T({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:l,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>T({paddingLeft:e})}),wp.element.createElement(lt,{marginEnableTop:!0,marginTop:c,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>T({marginTop:e}),marginEnableBottom:!0,marginBottom:u,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>T({marginBottom:e})})))))}}function HL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zL(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?HL(Object(n),!0).forEach((function(t){IL(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):HL(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function IL(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const FL=wp.element.Component;class RL extends FL{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,r=t.profileImgURL,a=t.profileFontSize,o=t.profileBackgroundColor,s=t.profileTextColor,l=t.profileAvatarShape,c=t.borderRadius,u=e.attributes;let d="";return d="left"==n?"blockspare-layout-left":"right"==n?"blockspare-layout-right":"blockspare-layout-center",wp.element.createElement("div",{style:zL({},Dt(u),{backgroundColor:o||"#f2f2f2",color:s||"#6d6d6d",borderRadius:c||null}),className:i()(this.props.className,l,d,{"blockspare-has-avatar":r},"blockspare-font-size-"+a,"blockspare-block-profile","blockspare-profile-columns")},this.props.children)}}const WL=wp.i18n.__,UL=wp.element.Component;class qL extends UL{constructor(e){super(...arguments)}render(){let e="";return e="blockspare-default-official-color"!=this.props.attributes.iconColorOption?{color:this.props.attributes.customfontColorOption,backgroundColor:this.props.attributes.custombackgroundColorOption}:{},wp.element.createElement("ul",{className:i()("blockspare-social-links",this.props.attributes.iconColorOption,this.props.attributes.buttonShapes,this.props.attributes.buttonSizes,this.props.attributes.buttonOptions,this.props.attributes.buttonFills)},this.props.attributes.facebook&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.facebook,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-facebook-f"}),wp.element.createElement("span",{className:"screen-reader-text"},WL("Facebook","blockspare")))),this.props.attributes.linkedin&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.linkedin,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-linkedin"}),wp.element.createElement("span",{className:"screen-reader-text"},WL("Linkedin","blockspare")))),this.props.attributes.instagram&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.instagram,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-instagram"}),wp.element.createElement("span",{className:"screen-reader-text"},WL("Instagram","blockspare")))),this.props.attributes.twitter&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.twitter,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-twitter"}),wp.element.createElement("span",{className:"screen-reader-text"},WL("Twitter","blockspare")))),this.props.attributes.youtube&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.youtube,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-youtube"}),wp.element.createElement("span",{className:"screen-reader-text"},WL("Youtube","blockspare")))))}}const GL=wp.element.Component;class VL extends GL{constructor(e){super(...arguments)}render(){return wp.element.createElement("div",{className:"blockspare-profile-column blockspare-profile-avatar-wrap"},wp.element.createElement("div",{className:"blockspare-profile-image-wrap"},this.props.children))}}function $L(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function JL(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$L(Object(n),!0).forEach((function(t){XL(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$L(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function XL(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const QL=blockspare_globals,KL=["core/image"],ZL=[["core/image",{url:QL.menu_img_url,className:"is-style-circle-mask",width:120,height:120,align:"center"}]],eT=wp.i18n.__,tT=wp.element,nT=tT.Component,rT=(tT.Fragment,wp.blockEditor),aT=rT.RichText,oT=rT.AlignmentToolbar,iT=rT.BlockControls,sT=rT.InnerBlocks;class lT extends nT{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,r=t.headerTagOption,a=t.headerTitle,o=t.headerSubTitle,s=t.profileContent,l=t.paddingTop,c=t.paddingRight,u=t.paddingBottom,d=t.paddingLeft,p=t.marginTop,m=t.marginBottom,f=t.profileContentFontSize,h=e.attributes,b=e.setAttributes,g={paddingTop:l?l+"px":"0px",paddingRight:c?c+"px":"0px",paddingBottom:u?u+"px":"0px",paddingLeft:d?d+"px":"0px",marginTop:p?p+"px":"0px",marginBottom:m?m+"px":"0px"},_=JL({},Ut(h)),y=JL({},qt(h)),k=JL({},Gt(h));return[wp.element.createElement("div",{className:"blockspare-author-wrapper blockspare-blocks",style:g},wp.element.createElement(iT,{key:"controls"},wp.element.createElement(oT,{value:n,onChange:e=>b({sectionAlignment:e})})),wp.element.createElement(AL,JL({setAttributes:b},this.props)),wp.element.createElement(RL,this.props,wp.element.createElement(VL,this.props,wp.element.createElement(sT,{template:ZL,allowedBlocks:KL,templateLock:!0,templateInsertUpdatesSelection:!0})),wp.element.createElement("div",{className:i()("blockspare-profile-column blockspare-profile-content-wrap")},wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:_}),wp.element.createElement(aT,{tagName:r,placeholder:eT("Title","blockspare"),keepPlaceholderOnFocus:!0,value:a,className:"blockspare-title",style:y,onChange:e=>b({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:_})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:_}),wp.element.createElement(aT,{tagName:"p",placeholder:eT("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:o,className:"blockspare-subtitle",style:k,onChange:e=>b({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:_}))),wp.element.createElement(aT,{tagName:"div",className:"blockspare-profile-text",multiline:"p",placeholder:eT("Add your content...","blockspare"),keepPlaceholderOnFocus:!0,value:s,style:{fontSize:f+"px"},allowedFormats:["bold","italic","strikethrough","link"],onChange:e=>b({profileContent:e})}),wp.element.createElement(qL,this.props))))]}}function cT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function uT(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?cT(Object(n),!0).forEach((function(t){dT(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):cT(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function dT(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const pT=wp.element.Component,mT=wp.blockEditor,fT=mT.RichText,hT=mT.InnerBlocks;class bT extends pT{constructor(){super(...arguments)}render(){const e=this.props.attributes,t=(e.sectionAlignment,e.profileContent),n=e.paddingTop,r=e.paddingRight,a=e.paddingBottom,o=e.paddingLeft,s=e.marginTop,l=e.marginBottom,c=e.headerTagOption,u=e.headerTitle,d=e.headerSubTitle,p=e.profileContentFontSize,m={paddingTop:n?n+"px":"0px",paddingRight:r?r+"px":"0px",paddingBottom:a?a+"px":"0px",paddingLeft:o?o+"px":"0px",marginTop:s?s+"px":"0px",marginBottom:l?l+"px":"0px"},f=uT({},Ut(this.props.attributes)),h=uT({},qt(this.props.attributes)),b=uT({},Gt(this.props.attributes));return wp.element.createElement("div",{className:"blockspare-author-wrapper blockspare-blocks",style:m},wp.element.createElement(RL,this.props,wp.element.createElement(VL,this.props,wp.element.createElement(hT.Content,null)),wp.element.createElement("div",{className:i()("blockspare-profile-column blockspare-profile-content-wrap")},wp.element.createElement(It,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:f}),u&&wp.element.createElement(fT.Content,{tagName:c,className:"blockspare-title",style:h,value:u}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:f})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:f}),d&&wp.element.createElement(fT.Content,{tagName:"p",className:"blockspare-subtitle",style:b,value:d}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:f}))),t&&wp.element.createElement(fT.Content,{tagName:"div",className:"blockspare-profile-text",value:t,style:{fontSize:p+"px"}}),wp.element.createElement(qL,this.props))))}}function gT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _T(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const yT=wp.i18n.__,kT=wp.blocks.registerBlockType,wT=SL.name,vT=SL.category,MT=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gT(Object(n),!0).forEach((function(t){_T(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gT(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Ft,{},SL.attributes,{},Vt);kT(wT,{title:yT("BS User Profile","blockspare"),description:yT("Add User profile","blockspare"),category:vT,icon:a.userprofile,attributes:MT,keywords:[yT("block","blockspare"),yT("user","blockspare"),yT("profile","blockspare"),yT("team","blockspare")],example:{attributes:{profileBackgroundColor:"#f2f2f2"}},edit:e=>wp.element.createElement(lT,e),save:e=>wp.element.createElement(bT,e)});n(476),n(477);const LT=wp.i18n.__,TT=wp.element,ET=TT.Component,ST=(TT.Fragment,wp.blockEditor),xT=ST.InspectorControls,CT=ST.PanelColorSettings,DT=wp.components,OT=DT.PanelBody,YT=DT.RangeControl;class jT extends ET{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.design,n=void 0===t?"double-wave":t,r=(e.width,e.height),a=e.color,o=e.marginTop,i=e.marginBottom,s=this.props.setAttributes;return wp.element.createElement(xT,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(zn,null,wp.element.createElement(Pn,{onChange:e=>s({design:e}),selected:n,excludeDesigns:["straight-1"]})),wp.element.createElement(OT,{title:LT("Divider Settings","blockspare"),initialOpen:!1},wp.element.createElement(CT,{title:LT("Shape Color","blockspare"),initialOpen:!0,colorSettings:[{value:a,onChange:e=>s({color:e}),label:LT("Shape Color","blockspare")}]}),wp.element.createElement(YT,{label:LT("Height","blockspare"),value:r,onChange:e=>s({height:e}),min:30,step:2,max:300})),wp.element.createElement(OT,{title:LT("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(OT,{title:LT("Margin Settings","blockspare"),initialOpen:!0},wp.element.createElement(lt,{marginEnableTop:!0,marginTop:o,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>s({marginTop:e}),marginEnableBottom:!0,marginBottom:i,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>s({marginBottom:e})})))))}}function PT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function NT(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?PT(Object(n),!0).forEach((function(t){BT(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):PT(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function BT(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}wp.i18n.__;const AT=wp.element,HT=AT.Component,zT=AT.Fragment;function IT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function FT(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?IT(Object(n),!0).forEach((function(t){RT(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):IT(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function RT(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const WT=wp.element,UT=WT.Component,qT=WT.Fragment;var GT=n(66);const VT=wp.i18n.__,$T=wp.blocks.registerBlockType,JT=GT.name,XT=GT.category,QT=GT.attributes;$T(JT,{title:VT("BS Shape Divider","blockspare"),description:VT("Decorations for section shapes.","blockspare"),category:XT,icon:a.shapediviver,attributes:QT,keywords:[VT("block","blockspare"),VT("shape","blockspare"),VT("divider","blockspare"),VT("space","blockspare")],supports:{align:["wide","full","center"]},example:{design:"double-wave",color:"#3c1a5b"},edit:class extends HT{constructor(e){super(...arguments)}render(){const e=this.props,t=e.className,n=e.attributes,r=n.design,a=void 0===r?"double-wave":r,o=n.layer1Shadow,s=void 0!==o&&o,l=n.width,c=n.height,u=n.verticalFlip,d=n.horizontalFlip,p=n.color,m=e.attributes,f=e.isSelected,h=e.setAttributes;let b=i()("blockspare-blocks blockspare-svg-wrapper",function(e){return"has-width-"+e.toString().replace(".","-")}(l),t,{"is-vertically-flipped":u,"is-horizontally-flipped":d});return wp.element.createElement(zT,null,wp.element.createElement(jT,NT({setAttributes:h},this.props)),f&&wp.element.createElement(oa,this.props),wp.element.createElement("div",{className:b,style:NT({color:p||"#3c1a5b",height:c},Ot(m))},wp.element.createElement(Qr,{design:a,shadow:s,className:"blockspare-svg-svg-inner"})))}},save:class extends UT{render(){const e=this.props.className,t=this.props,n=t.attributes,r=n.design,a=void 0===r?"double-wave":r,o=n.align,s=n.width,l=n.height,c=n.verticalFlip,u=n.horizontalFlip,d=n.color,p=t.attributes;let m=i()(e,{"is-vertically-flipped":c,"is-horizontally-flipped":u},"align"+o,"blockspare-blocks blockspare-svg-wrapper",function(e){return"has-width-"+e.toString().replace(".","-")}(s));return wp.element.createElement(qT,null,wp.element.createElement("div",{className:m,style:FT({color:d||"#3c1a5b",height:l},Ot(p))},wp.element.createElement(Qr,{design:a,className:"blockspare-svg-svg-inner"})))}}});var KT=n(67);const ZT=wp.i18n.__,eE=wp.element.Component,tE=wp.blockEditor,nE=tE.PanelColorSettings,rE=tE.InspectorControls,aE=wp.components,oE=aE.RangeControl,iE=aE.PanelBody;class sE extends eE{render(){const e=this.props.attributes,t=e.height,n=e.backGroundColor,r=this.props.setAttributes;return wp.element.createElement(rE,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(iE,{title:ZT("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(oE,{label:ZT("Height","blockspare"),value:t,onChange:e=>r({height:e}),min:0,step:5,max:150}),wp.element.createElement(nE,{title:ZT("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:n,onChange:e=>r({backGroundColor:e}),label:ZT("Background Color","blockspare")}]}))))}}function lE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function cE(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const uE=wp.element.Fragment,dE=KT.name,pE=KT.category,mE=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?lE(Object(n),!0).forEach((function(t){cE(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lE(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},KT.attributes),fE=wp.blocks.registerBlockType,hE=wp.i18n.__;fE(dE,{title:hE("BS Empty Section","blockspare"),description:hE("Empty Section","blockspare"),category:pE,icon:a.emptySpaces,attributes:mE,keywords:[hE("empty","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},edit:function(e){const t=e.attributes,n=t.height,r=t.backGroundColor;return wp.element.createElement(uE,null,wp.element.createElement(sE,e),wp.element.createElement("div",{className:"blockspare-blocks blockspare-empty-section-wrapper"},wp.element.createElement("div",{className:"blockspare-section",style:{height:n+"px",width:"100%",backgroundColor:r||"#fff"}})))},save:function(e){const t=e.attributes,n=t.height,r=t.backGroundColor;return wp.element.createElement("div",{className:"blockspare-blocks blockspare-empty-section-wrapper"},wp.element.createElement("div",{className:"blockspare-section",style:{height:n+"px",width:"100%",backgroundColor:r||"#fff"}}))}})},function(e,t){},,,,function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},,function(e,t){},,function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){}]); |
| 82 |
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9tb21lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL29taXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9LZXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb21wYWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0xpc3RDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9lcS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lkZW50aXR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJdGVyYXRlZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2xpY2svbGliL3V0aWxzL2lubmVyU2xpZGVyVXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9nZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1VuZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3BpY2tCeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TdGFjay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbm9kZVV0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UHJvdG90eXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldEFsbEtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzS2V5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9ldi1lbWl0dGVyL2V2LWVtaXR0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2dldC1zaXplL2dldC1zaXplLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mcmVlR2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gva2V5c0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRBbGxLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1VpbnQ4QXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZmxhdFJlc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlclJlc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxBcnJheXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNTdHJpY3RDb21wYXJhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaGFzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZW5xdWlyZS5qcy9zcmMvVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9JbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYWYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItZHouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbWEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZHYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tU0cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tYXUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtZG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQtY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvamEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva28uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbGIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMtbXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwtYmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbm4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcnUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGxoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS95by5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC1yZXNpemUtZGV0ZWN0b3Ivc3JjL2NvbGxlY3Rpb24tdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9icm93c2VyLWRldGVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb3VudHVwL2J1aWxkL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1zbGljay9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9waWNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmluZEluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1tYXNvbnJ5LWNvbXBvbmVudC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21lbWl6ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RpbWVzLmpzIiwid2VicGFjazovLy8uL3NyYy9hc3NldHMvaWNvbnMvaWNvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZURlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weUFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fRGF0YVZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVCeVRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lUmVnRXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1NldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21lbW9pemVDYXBwZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tZW1vaXplLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbGFzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19wYXJlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNsaWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2N1c3RvbU9taXRDbG9uZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9mbGF0dGVuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzRmxhdHRlbmFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXBwbHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldFRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2hvcnRPdXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93YXJuaW5nL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvdW50dXAuanMvZGlzdC9jb3VudFVwLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmlsdGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUJhc2VFYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNYXRjaGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hdGNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0VxdWFsRGVlcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXRDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxCeVRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxPYmplY3RzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlc1Byb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNQYXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eURlZXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2xpY2svbGliL3NsaWRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2xpY2svbGliL2lubmVyLXNsaWRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXNsaWNrL2xpYi9pbml0aWFsLXN0YXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2guZGVib3VuY2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXNsaWNrL2xpYi90cmFjay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2xpY2svbGliL2RvdHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXNsaWNrL2xpYi9hcnJvd3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Jlc2l6ZS1vYnNlcnZlci1wb2x5ZmlsbC9kaXN0L1Jlc2l6ZU9ic2VydmVyLmVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9qc29uMm1xL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHJpbmctY29udmVydC9jYW1lbDJoeXBoZW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXNsaWNrL2xpYi9kZWZhdWx0LXByb3BzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZW5xdWlyZS5qcy9zcmMvTWVkaWFRdWVyeURpc3BhdGNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9NZWRpYVF1ZXJ5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9RdWVyeUhhbmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmluZEluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUgc3luYyBeXFwuXFwvLiokIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tYXNvbnJ5LWxheW91dC9tYXNvbnJ5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9vdXRsYXllci9vdXRsYXllci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZml6enktdWktdXRpbHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Rlc2FuZHJvLW1hdGNoZXMtc2VsZWN0b3IvbWF0Y2hlcy1zZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvb3V0bGF5ZXIvaXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW1hZ2VzbG9hZGVkL2ltYWdlc2xvYWRlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0l0ZXJhdGVlQ2FsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC1yZXNpemUtZGV0ZWN0b3Ivc3JjL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvZWxlbWVudC11dGlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC1yZXNpemUtZGV0ZWN0b3Ivc3JjL2xpc3RlbmVyLWhhbmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9pZC1nZW5lcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9pZC1oYW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvcmVwb3J0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhdGNoLXByb2Nlc3Nvci9zcmMvYmF0Y2gtcHJvY2Vzc29yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYXRjaC1wcm9jZXNzb3Ivc3JjL3V0aWxzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvc3RhdGUtaGFuZGxlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC1yZXNpemUtZGV0ZWN0b3Ivc3JjL2RldGVjdGlvbi1zdHJhdGVneS9vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9kZXRlY3Rpb24tc3RyYXRlZ3kvc2Nyb2xsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9ub3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1yZWFjdC1jbGFzcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLXJlYWN0LWNsYXNzL2ZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ZianMvbGliL2VtcHR5T2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9pbnZhcmlhbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdEZ1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy9hc3NldHMvaWNvbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9ibG9jay1jYXRlZ29yeS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2F0dHJpYnV0ZXMtZmlsdGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9pbmMvaWNvbi1saWIvYWNjb3JkaW9uLWljb24tbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2FjY29yZGlvbi9pbm5lci1pdGVtL0ljb25MaXN0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvYWNjb3JkaW9uL2lubmVyLWl0ZW0vRWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2FjY29yZGlvbi9pbm5lci1pdGVtL1NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9hY2NvcmRpb24vaW5uZXItaXRlbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2FjY29yZGlvbi9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvYWNjb3JkaW9uL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9hY2NvcmRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9idXR0b24vZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2J1dHRvbi9idXR0b24tc2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZ3JhZGllbnQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9idXR0b24vaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc3R5bGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvYXR0cmlidXRlcy9idXR0b24uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9idXR0b24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9wYWRkaW5nLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvbWFyZ2luLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXItc2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvYm94c2hhZG93L2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvY2FsbC10by1hY3Rpb24vY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9zdHlsZXMvYm94LXNoYWRvdy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2NhbGwtdG8tYWN0aW9uL2NvbXBvbmVudHMvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9wYWRkaW5nLW1hcmdpbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVycy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9hdHRyaWJ1dGVzL21hcmdpbi1wYWRkaW5nLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2guanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9hdHRyaWJ1dGVzL2JveC1zaGFkb3cuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jYWxsLXRvLWFjdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3N0eWxlcy9jb250ZW50LWJveC1zdHlsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXBhbmVsLWl0ZW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLWNvbnRyb2wvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvZG91YmxlLXdhdmUucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvd2F2eS5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zbG9wZWQucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvZ3Jvdy5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9hbmdsZWQucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1wYW5lbC1ib2R5L2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvY29udGVudC1ib3gvY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zdHlsZS0xLnBuZyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL3N0eWxlLTIucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvc3R5bGUtMy5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb250ZW50LWJveC9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb250ZW50LWJveC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2F0dHJpYnV0ZXMvc2VwYXJhdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc3R5bGVzL2JnLWdyYWRpZW50LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvYXR0cmlidXRlcy9iZy1ncmFkaWVudC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2NvbnRhaW5lci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3NlcGFyYXRvci9zZXBhcmF0b3JzLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc2VwYXJhdG9yL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2hhcGUtZGl2aWRlci9jb250cm9scy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2NvbnRhaW5lci9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb250YWluZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2luYy9pY29uLWxpYi9pY29uTGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2ljb24tc2V0L2NvbXBvbmVudHMvSWNvbkxpc3QuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pY29uLXNldC9jb21wb25lbnRzL2ljb24tc2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb3VudGVyL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc3R5bGVzL2ljb24tY29sb3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb3VudGVyL2NvbXBvbmVudHMvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2NvdW50ZXIvY29tcG9uZW50cy9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvY291bnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2ljb24tc2V0L2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaWNvbi1zZXQvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaWNvbi1zZXQvY29tcG9uZW50cy9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaWNvbi1zZXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1jYXJvdXNlbC9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2dhbGxlcnkvZ2FsbGVyeS1pbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2hlbHBlci9tZWRpYS1oZWxwZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9nYWxsZXJ5L2dhbGxlcnktcGxhY2Vob2xkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9nYWxsZXJ5L2dhbGxlcnktZHJvcHpvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1jYXJvdXNlbC9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1jYXJvdXNlbC9jb21wb25lbnRzL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1jYXJvdXNlbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpbmVhci1wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci9saW5lLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGluZWFyLXByb2dyZXNzYmFyL3Byb2dyZXNzYmFyL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGluZWFyLXByb2dyZXNzYmFyL3Byb2dyZXNzYmFyL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9saW5lYXItcHJvZ3Jlc3NiYXIvcHJvZ3Jlc3NiYXIvc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpbmVhci1wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpbmVhci1wcm9ncmVzc2Jhci9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGluZWFyLXByb2dyZXNzYmFyL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9saW5lYXItcHJvZ3Jlc3NiYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2luYy9pY29uLWxpYi9jdXN0b20taWNvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9saXN0L2ljb24tbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpc3QvY29tcG9uZW50cy9pY29uLXNldHRpbmdzLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGlzdC9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpc3QvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpc3Qvc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9sb2dvcy9jb21wb25lbnQvbG9nb3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9sb2dvcy9jb21wb25lbnQvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xvZ29zL2NvbXBvbmVudC9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbG9nb3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9sYXRlc3QtcG9zdHMtZ3JpZC9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtMS5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTIucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1ncmlkLWxheW91dC0zLnBuZyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3N0eWxlcy9ibG9nLXBvc3Qtc3R5bGVzLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGF0ZXN0LXBvc3RzLWdyaWQvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xhdGVzdC1wb3N0cy1ncmlkL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGF0ZXN0LXBvc3RzLWxpc3QvY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTEucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1saXN0LWxheW91dC0yLnBuZyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtMy5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9sYXRlc3QtcG9zdHMtbGlzdC9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGF0ZXN0LXBvc3RzLWxpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9nYWxsZXJ5L2NhcHRpb24tb3B0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2dhbGxlcnkvZ2FsbGVyeS1saW5rLXNldHRpbmdzLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaW1hZ2UtbWFzb25yeS9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2ltYWdlLW1hc29ucnkvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaW1hZ2UtbWFzb25yeS9jb21wb25lbnRzL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9nYWxsZXJ5L2F0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1tYXNvbnJ5L2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvbm90aWNlLWJhci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL25vdGljZS1iYXIvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvbm90aWNlLWJhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNlLWxpc3QvbGlzdC13cmFwcGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9saXN0LWl0ZW0vY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljZS1saXN0L2xpc3QtaXRlbS9FZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9saXN0LWl0ZW0vU2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNlLWxpc3QvbGlzdC1pdGVtL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvY29tcG9uZW50cy9wcmljaW5nLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2luZy10YWJsZS9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2luZy10YWJsZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL3RpdGxlL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL3RpdGxlL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljaW5nLXRhYmxlL3ByaWNpbmctdGFibGUtaW5uZXIvY29tcG9uZW50cy90aXRsZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL3ByaWNlL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL3ByaWNlL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljaW5nLXRhYmxlL3ByaWNpbmctdGFibGUtaW5uZXIvY29tcG9uZW50cy9wcmljZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2Rlc2NyaXB0aW9uL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2Rlc2NyaXB0aW9uL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljaW5nLXRhYmxlL3ByaWNpbmctdGFibGUtaW5uZXIvY29tcG9uZW50cy9kZXNjcmlwdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2J1dHRvbi9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljaW5nLXRhYmxlL3ByaWNpbmctdGFibGUtaW5uZXIvY29tcG9uZW50cy9idXR0b24vZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2J1dHRvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1saW5rcy9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1saW5rcy9jb21wb25lbnRzL3NvY2lhbC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1saW5rcy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc29jaWFsLWxpbmtzL2NvbXBvbmVudHMvc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1saW5rcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1zaGFyaW5nL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc29jaWFsLXNoYXJpbmcvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc29jaWFsLXNoYXJpbmcvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlY3Rpb24taGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VydmljZXMvY29tcG9uZW50cy9zZXJ2aWNlcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VydmljZXMvc2VydmljZS1pbm5lci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZXJ2aWNlcy9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZXJ2aWNlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy90aXRsZS9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZXJ2aWNlcy9zZXJ2aWNlLWlubmVyL2NvbXBvbmVudHMvdGl0bGUvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy90aXRsZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy9kZXNjcmlwdGlvbi9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZXJ2aWNlcy9zZXJ2aWNlLWlubmVyL2NvbXBvbmVudHMvZGVzY3JpcHRpb24vZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy9kZXNjcmlwdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy9idXR0b24vaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VydmljZXMvc2VydmljZS1pbm5lci9jb21wb25lbnRzL2J1dHRvbi9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VydmljZXMvc2VydmljZS1pbm5lci9jb21wb25lbnRzL2J1dHRvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5jL2ljb24tbGliL3N0YXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zdGFyLXJhdGluZ3MvY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zdGFyLXJhdGluZ3MvRWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3N0YXItcmF0aW5ncy9TYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc3Rhci1yYXRpbmdzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy9jb21wb25lbnQvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3RhYnMvdGFiL1NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy90YWJzL3RhYi9FZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy90YWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy90ZXN0aW1vbmlhbC90ZXN0aW1vbmlhbC13cmFwcGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGVzdGltb25pYWwvdGVzdGltb25pYWwtaXRlbS9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3Rlc3RpbW9uaWFsL3Rlc3RpbW9uaWFsLWl0ZW0vRWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3Rlc3RpbW9uaWFsL3Rlc3RpbW9uaWFsLWl0ZW0vU2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3Rlc3RpbW9uaWFsL3Rlc3RpbW9uaWFsLWl0ZW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy90ZXN0aW1vbmlhbC9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGVzdGltb25pYWwvc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3Rlc3RpbW9uaWFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXNlci1wcm9maWxlL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXNlci1wcm9maWxlL2NvbXBvbmVudHMvcHJvZmlsZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3VzZXItcHJvZmlsZS9jb21wb25lbnRzL3NvY2lhbC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3VzZXItcHJvZmlsZS9jb21wb25lbnRzL2F2YXRhci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3VzZXItcHJvZmlsZS9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91c2VyLXByb2ZpbGUvY29tcG9uZW50cy9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXNlci1wcm9maWxlL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2hhcGUtZGl2aWRlci9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zaGFwZS1kaXZpZGVyL0VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zaGFwZS1kaXZpZGVyL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zaGFwZS1kaXZpZGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvZW1wdHktc2VjdGlvbi9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2VtcHR5LXNlY3Rpb24vaW5kZXguanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJoYXNPd24iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZyIsImFyZ1R5cGUiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5uZXIiLCJhcHBseSIsImpvaW4iLCJkZWZhdWx0IiwiaG9va0NhbGxiYWNrIiwic29tZSIsImhvb2tzIiwiaW5wdXQiLCJ0b1N0cmluZyIsImlzT2JqZWN0IiwiaXNVbmRlZmluZWQiLCJpc051bWJlciIsImlzRGF0ZSIsIkRhdGUiLCJtYXAiLCJhcnIiLCJmbiIsInJlcyIsImhhc093blByb3AiLCJhIiwiYiIsImV4dGVuZCIsInZhbHVlT2YiLCJjcmVhdGVVVEMiLCJmb3JtYXQiLCJsb2NhbGUiLCJzdHJpY3QiLCJjcmVhdGVMb2NhbE9yVVRDIiwidXRjIiwiZ2V0UGFyc2luZ0ZsYWdzIiwiX3BmIiwiZW1wdHkiLCJ1bnVzZWRUb2tlbnMiLCJ1bnVzZWRJbnB1dCIsIm92ZXJmbG93IiwiY2hhcnNMZWZ0T3ZlciIsIm51bGxJbnB1dCIsImludmFsaWRNb250aCIsImludmFsaWRGb3JtYXQiLCJ1c2VySW52YWxpZGF0ZWQiLCJpc28iLCJwYXJzZWREYXRlUGFydHMiLCJtZXJpZGllbSIsInJmYzI4MjIiLCJ3ZWVrZGF5TWlzbWF0Y2giLCJpc1ZhbGlkIiwiX2lzVmFsaWQiLCJmbGFncyIsInBhcnNlZFBhcnRzIiwiaXNOb3dWYWxpZCIsImlzTmFOIiwiX2QiLCJnZXRUaW1lIiwiaW52YWxpZFdlZWtkYXkiLCJfc3RyaWN0IiwidW5kZWZpbmVkIiwiYmlnSG91ciIsImlzRnJvemVuIiwiY3JlYXRlSW52YWxpZCIsIk5hTiIsImZ1biIsInRoaXMiLCJsZW4iLCJtb21lbnRQcm9wZXJ0aWVzIiwiY29weUNvbmZpZyIsInRvIiwiZnJvbSIsInByb3AiLCJ2YWwiLCJfaXNBTW9tZW50T2JqZWN0IiwiX2kiLCJfZiIsIl9sIiwiX3R6bSIsIl9pc1VUQyIsIl9vZmZzZXQiLCJfbG9jYWxlIiwidXBkYXRlSW5Qcm9ncmVzcyIsIk1vbWVudCIsImNvbmZpZyIsInVwZGF0ZU9mZnNldCIsImlzTW9tZW50Iiwib2JqIiwiYWJzRmxvb3IiLCJudW1iZXIiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwidG9JbnQiLCJhcmd1bWVudEZvckNvZXJjaW9uIiwiY29lcmNlZE51bWJlciIsImlzRmluaXRlIiwiY29tcGFyZUFycmF5cyIsImFycmF5MSIsImFycmF5MiIsImRvbnRDb252ZXJ0IiwibWluIiwibGVuZ3RoRGlmZiIsImFicyIsImRpZmZzIiwid2FybiIsIm1zZyIsInN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyIsImNvbnNvbGUiLCJkZXByZWNhdGUiLCJmaXJzdFRpbWUiLCJkZXByZWNhdGlvbkhhbmRsZXIiLCJhcmdzIiwic2xpY2UiLCJFcnJvciIsInN0YWNrIiwia2V5cyIsImRlcHJlY2F0aW9ucyIsImRlcHJlY2F0ZVNpbXBsZSIsImlzRnVuY3Rpb24iLCJGdW5jdGlvbiIsIm1lcmdlQ29uZmlncyIsInBhcmVudENvbmZpZyIsImNoaWxkQ29uZmlnIiwiTG9jYWxlIiwic2V0IiwiYWxpYXNlcyIsImFkZFVuaXRBbGlhcyIsInVuaXQiLCJzaG9ydGhhbmQiLCJsb3dlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVVuaXRzIiwidW5pdHMiLCJub3JtYWxpemVPYmplY3RVbml0cyIsImlucHV0T2JqZWN0Iiwibm9ybWFsaXplZFByb3AiLCJub3JtYWxpemVkSW5wdXQiLCJwcmlvcml0aWVzIiwiYWRkVW5pdFByaW9yaXR5IiwicHJpb3JpdHkiLCJ6ZXJvRmlsbCIsInRhcmdldExlbmd0aCIsImZvcmNlU2lnbiIsImFic051bWJlciIsInplcm9zVG9GaWxsIiwicG93IiwibWF4Iiwic3Vic3RyIiwiZm9ybWF0dGluZ1Rva2VucyIsImxvY2FsRm9ybWF0dGluZ1Rva2VucyIsImZvcm1hdEZ1bmN0aW9ucyIsImZvcm1hdFRva2VuRnVuY3Rpb25zIiwiYWRkRm9ybWF0VG9rZW4iLCJ0b2tlbiIsInBhZGRlZCIsIm9yZGluYWwiLCJjYWxsYmFjayIsImZ1bmMiLCJsb2NhbGVEYXRhIiwiZm9ybWF0TW9tZW50IiwiZXhwYW5kRm9ybWF0IiwiYXJyYXkiLCJtYXRjaCIsInJlcGxhY2UiLCJtb20iLCJvdXRwdXQiLCJtYWtlRm9ybWF0RnVuY3Rpb24iLCJpbnZhbGlkRGF0ZSIsInJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2VucyIsImxvbmdEYXRlRm9ybWF0IiwibGFzdEluZGV4IiwidGVzdCIsIm1hdGNoMSIsIm1hdGNoMiIsIm1hdGNoMyIsIm1hdGNoNCIsIm1hdGNoNiIsIm1hdGNoMXRvMiIsIm1hdGNoM3RvNCIsIm1hdGNoNXRvNiIsIm1hdGNoMXRvMyIsIm1hdGNoMXRvNCIsIm1hdGNoMXRvNiIsIm1hdGNoVW5zaWduZWQiLCJtYXRjaFNpZ25lZCIsIm1hdGNoT2Zmc2V0IiwibWF0Y2hTaG9ydE9mZnNldCIsIm1hdGNoV29yZCIsInJlZ2V4ZXMiLCJhZGRSZWdleFRva2VuIiwicmVnZXgiLCJzdHJpY3RSZWdleCIsImlzU3RyaWN0IiwiZ2V0UGFyc2VSZWdleEZvclRva2VuIiwiUmVnRXhwIiwicmVnZXhFc2NhcGUiLCJtYXRjaGVkIiwicDEiLCJwMiIsInAzIiwicDQiLCJ0b2tlbnMiLCJhZGRQYXJzZVRva2VuIiwiYWRkV2Vla1BhcnNlVG9rZW4iLCJfdyIsImFkZFRpbWVUb0FycmF5RnJvbVRva2VuIiwiX2EiLCJkYXlzSW5ZZWFyIiwieWVhciIsImlzTGVhcFllYXIiLCJ5IiwicGFyc2VUd29EaWdpdFllYXIiLCJwYXJzZUludCIsImluZGV4T2YiLCJnZXRTZXRZZWFyIiwibWFrZUdldFNldCIsImtlZXBUaW1lIiwic2V0JDEiLCJtb250aCIsImRhdGUiLCJkYXlzSW5Nb250aCIsIngiLCJtb2RNb250aCIsIm1vbnRoc1Nob3J0IiwibW9udGhzIiwibW9udGhzU2hvcnRSZWdleCIsIm1vbnRoc1JlZ2V4IiwibW9udGhzUGFyc2UiLCJNT05USFNfSU5fRk9STUFUIiwiZGVmYXVsdExvY2FsZU1vbnRocyIsInNwbGl0IiwiZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0IiwiaGFuZGxlU3RyaWN0UGFyc2UiLCJtb250aE5hbWUiLCJpaSIsImxsYyIsInRvTG9jYWxlTG93ZXJDYXNlIiwiX21vbnRoc1BhcnNlIiwiX2xvbmdNb250aHNQYXJzZSIsIl9zaG9ydE1vbnRoc1BhcnNlIiwic2V0TW9udGgiLCJkYXlPZk1vbnRoIiwiZ2V0U2V0TW9udGgiLCJkZWZhdWx0TW9udGhzU2hvcnRSZWdleCIsImRlZmF1bHRNb250aHNSZWdleCIsImNvbXB1dGVNb250aHNQYXJzZSIsImNtcExlblJldiIsInNob3J0UGllY2VzIiwibG9uZ1BpZWNlcyIsIm1peGVkUGllY2VzIiwic29ydCIsIl9tb250aHNSZWdleCIsIl9tb250aHNTaG9ydFJlZ2V4IiwiX21vbnRoc1N0cmljdFJlZ2V4IiwiX21vbnRoc1Nob3J0U3RyaWN0UmVnZXgiLCJjcmVhdGVEYXRlIiwiaCIsIk0iLCJtcyIsImdldEZ1bGxZZWFyIiwic2V0RnVsbFllYXIiLCJjcmVhdGVVVENEYXRlIiwiVVRDIiwiZ2V0VVRDRnVsbFllYXIiLCJzZXRVVENGdWxsWWVhciIsImZpcnN0V2Vla09mZnNldCIsImRvdyIsImRveSIsImZ3ZCIsImdldFVUQ0RheSIsImRheU9mWWVhckZyb21XZWVrcyIsIndlZWsiLCJ3ZWVrZGF5IiwicmVzWWVhciIsInJlc0RheU9mWWVhciIsImRheU9mWWVhciIsIndlZWtPZlllYXIiLCJyZXNXZWVrIiwid2Vla09mZnNldCIsIndlZWtzSW5ZZWFyIiwid2Vla09mZnNldE5leHQiLCJzaGlmdFdlZWtkYXlzIiwid3MiLCJjb25jYXQiLCJ3ZWVrZGF5c01pbiIsIndlZWtkYXlzU2hvcnQiLCJ3ZWVrZGF5cyIsIndlZWtkYXlzTWluUmVnZXgiLCJ3ZWVrZGF5c1Nob3J0UmVnZXgiLCJ3ZWVrZGF5c1JlZ2V4Iiwid2Vla2RheXNQYXJzZSIsImRlZmF1bHRMb2NhbGVXZWVrZGF5cyIsImRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0IiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluIiwiaGFuZGxlU3RyaWN0UGFyc2UkMSIsIndlZWtkYXlOYW1lIiwiX3dlZWtkYXlzUGFyc2UiLCJfc2hvcnRXZWVrZGF5c1BhcnNlIiwiX21pbldlZWtkYXlzUGFyc2UiLCJkYXkiLCJkZWZhdWx0V2Vla2RheXNSZWdleCIsImRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXgiLCJkZWZhdWx0V2Vla2RheXNNaW5SZWdleCIsImNvbXB1dGVXZWVrZGF5c1BhcnNlIiwibWlucCIsInNob3J0cCIsImxvbmdwIiwibWluUGllY2VzIiwiX3dlZWtkYXlzUmVnZXgiLCJfd2Vla2RheXNTaG9ydFJlZ2V4IiwiX3dlZWtkYXlzTWluUmVnZXgiLCJfd2Vla2RheXNTdHJpY3RSZWdleCIsIl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgiLCJfd2Vla2RheXNNaW5TdHJpY3RSZWdleCIsImhGb3JtYXQiLCJob3VycyIsImxvd2VyY2FzZSIsIm1pbnV0ZXMiLCJtYXRjaE1lcmlkaWVtIiwiX21lcmlkaWVtUGFyc2UiLCJzZWNvbmRzIiwia0lucHV0IiwiX2lzUG0iLCJpc1BNIiwiX21lcmlkaWVtIiwicG9zIiwicG9zMSIsInBvczIiLCJnbG9iYWxMb2NhbGUiLCJnZXRTZXRIb3VyIiwiYmFzZUNvbmZpZyIsImNhbGVuZGFyIiwic2FtZURheSIsIm5leHREYXkiLCJuZXh0V2VlayIsImxhc3REYXkiLCJsYXN0V2VlayIsInNhbWVFbHNlIiwiTFRTIiwiTFQiLCJMIiwiTEwiLCJMTEwiLCJMTExMIiwiZGF5T2ZNb250aE9yZGluYWxQYXJzZSIsInJlbGF0aXZlVGltZSIsImZ1dHVyZSIsInBhc3QiLCJzcyIsIm1tIiwiaGgiLCJkZCIsIk1NIiwieXkiLCJtZXJpZGllbVBhcnNlIiwibG9jYWxlcyIsImxvY2FsZUZhbWlsaWVzIiwibm9ybWFsaXplTG9jYWxlIiwibG9hZExvY2FsZSIsIm9sZExvY2FsZSIsIl9hYmJyIiwiZ2V0U2V0R2xvYmFsTG9jYWxlIiwiZSIsInZhbHVlcyIsImRhdGEiLCJnZXRMb2NhbGUiLCJkZWZpbmVMb2NhbGUiLCJhYmJyIiwiX2NvbmZpZyIsInBhcmVudExvY2FsZSIsImZvckVhY2giLCJuYW1lcyIsImoiLCJuZXh0IiwiY2hvb3NlTG9jYWxlIiwiY2hlY2tPdmVyZmxvdyIsIl9vdmVyZmxvd0RheU9mWWVhciIsIl9vdmVyZmxvd1dlZWtzIiwiX292ZXJmbG93V2Vla2RheSIsImRlZmF1bHRzIiwiY29uZmlnRnJvbUFycmF5IiwiY3VycmVudERhdGUiLCJleHBlY3RlZFdlZWtkYXkiLCJ5ZWFyVG9Vc2UiLCJub3dWYWx1ZSIsIm5vdyIsIl91c2VVVEMiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJnZXRNb250aCIsImdldERhdGUiLCJjdXJyZW50RGF0ZUFycmF5IiwidyIsIndlZWtZZWFyIiwidGVtcCIsIndlZWtkYXlPdmVyZmxvdyIsIkdHIiwiVyIsIkUiLCJjcmVhdGVMb2NhbCIsIl93ZWVrIiwiY3VyV2VlayIsImdnIiwiX2RheU9mWWVhciIsImRheU9mWWVhckZyb21XZWVrSW5mbyIsIl9uZXh0RGF5IiwiZ2V0RGF5Iiwic2V0VVRDTWludXRlcyIsImdldFVUQ01pbnV0ZXMiLCJleHRlbmRlZElzb1JlZ2V4IiwiYmFzaWNJc29SZWdleCIsInR6UmVnZXgiLCJpc29EYXRlcyIsImlzb1RpbWVzIiwiYXNwTmV0SnNvblJlZ2V4IiwiY29uZmlnRnJvbUlTTyIsImFsbG93VGltZSIsImRhdGVGb3JtYXQiLCJ0aW1lRm9ybWF0IiwidHpGb3JtYXQiLCJzdHJpbmciLCJleGVjIiwiY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCIsInVudHJ1bmNhdGVZZWFyIiwieWVhclN0ciIsIm9ic09mZnNldHMiLCJVVCIsIkdNVCIsIkVEVCIsIkVTVCIsIkNEVCIsIkNTVCIsIk1EVCIsIk1TVCIsIlBEVCIsIlBTVCIsImNvbmZpZ0Zyb21SRkMyODIyIiwibW9udGhTdHIiLCJkYXlTdHIiLCJob3VyU3RyIiwibWludXRlU3RyIiwic2Vjb25kU3RyIiwicmVzdWx0IiwicGFyc2VkQXJyYXkiLCJ3ZWVrZGF5U3RyIiwicGFyc2VkSW5wdXQiLCJjaGVja1dlZWtkYXkiLCJvYnNPZmZzZXQiLCJtaWxpdGFyeU9mZnNldCIsIm51bU9mZnNldCIsImhtIiwiY2FsY3VsYXRlT2Zmc2V0IiwiSVNPXzg2MDEiLCJSRkNfMjgyMiIsInNraXBwZWQiLCJzdHJpbmdMZW5ndGgiLCJ0b3RhbFBhcnNlZElucHV0TGVuZ3RoIiwiaG91ciIsImlzUG0iLCJtZXJpZGllbUhvdXIiLCJtZXJpZGllbUZpeFdyYXAiLCJwcmVwYXJlQ29uZmlnIiwicHJlcGFyc2UiLCJ0ZW1wQ29uZmlnIiwiYmVzdE1vbWVudCIsInNjb3JlVG9CZWF0IiwiY3VycmVudFNjb3JlIiwic2NvcmUiLCJjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkiLCJjcmVhdGVGcm9tSW5wdXRGYWxsYmFjayIsImNvbmZpZ0Zyb21TdHJpbmciLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCIsImNvbmZpZ0Zyb21PYmplY3QiLCJjb25maWdGcm9tSW5wdXQiLCJpc1VUQyIsImdldE93blByb3BlcnR5TmFtZXMiLCJrIiwiaXNPYmplY3RFbXB0eSIsImFkZCIsInByb3RvdHlwZU1pbiIsIm90aGVyIiwicHJvdG90eXBlTWF4IiwicGlja0J5IiwibW9tZW50cyIsIm9yZGVyaW5nIiwiRHVyYXRpb24iLCJkdXJhdGlvbiIsInllYXJzIiwicXVhcnRlcnMiLCJxdWFydGVyIiwid2Vla3MiLCJpc29XZWVrIiwiZGF5cyIsIm1pbGxpc2Vjb25kcyIsInVuaXRIYXNEZWNpbWFsIiwicGFyc2VGbG9hdCIsImlzRHVyYXRpb25WYWxpZCIsIl9taWxsaXNlY29uZHMiLCJfZGF5cyIsIl9tb250aHMiLCJfZGF0YSIsIl9idWJibGUiLCJpc0R1cmF0aW9uIiwiYWJzUm91bmQiLCJyb3VuZCIsIm9mZnNldCIsInNlcGFyYXRvciIsInV0Y09mZnNldCIsInNpZ24iLCJvZmZzZXRGcm9tU3RyaW5nIiwiY2h1bmtPZmZzZXQiLCJtYXRjaGVyIiwibWF0Y2hlcyIsInBhcnRzIiwiY2xvbmVXaXRoT2Zmc2V0IiwibW9kZWwiLCJkaWZmIiwiY2xvbmUiLCJzZXRUaW1lIiwibG9jYWwiLCJnZXREYXRlT2Zmc2V0IiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJpc1V0YyIsImFzcE5ldFJlZ2V4IiwiaXNvUmVnZXgiLCJjcmVhdGVEdXJhdGlvbiIsInJldCIsImRpZmZSZXMiLCJiYXNlIiwicGFyc2VJc28iLCJpc0JlZm9yZSIsInBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UiLCJpbnAiLCJpc0FmdGVyIiwiY3JlYXRlQWRkZXIiLCJkaXJlY3Rpb24iLCJwZXJpb2QiLCJ0bXAiLCJhZGRTdWJ0cmFjdCIsImlzQWRkaW5nIiwiaW52YWxpZCIsInN1YnRyYWN0IiwibW9udGhEaWZmIiwid2hvbGVNb250aERpZmYiLCJhbmNob3IiLCJuZXdMb2NhbGVEYXRhIiwiZGVmYXVsdEZvcm1hdCIsImRlZmF1bHRGb3JtYXRVdGMiLCJsYW5nIiwibW9kJDEiLCJkaXZpZGVuZCIsImRpdmlzb3IiLCJsb2NhbFN0YXJ0T2ZEYXRlIiwidXRjU3RhcnRPZkRhdGUiLCJhZGRXZWVrWWVhckZvcm1hdFRva2VuIiwiZ2V0U2V0V2Vla1llYXJIZWxwZXIiLCJ3ZWVrc1RhcmdldCIsInNldFdlZWtBbGwiLCJkYXlPZlllYXJEYXRhIiwiaXNvV2Vla1llYXIiLCJfZGF5T2ZNb250aE9yZGluYWxQYXJzZSIsIl9vcmRpbmFsUGFyc2UiLCJfZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQiLCJnZXRTZXREYXlPZk1vbnRoIiwiZ2V0U2V0TWludXRlIiwiZ2V0U2V0U2Vjb25kIiwicGFyc2VNcyIsImdldFNldE1pbGxpc2Vjb25kIiwicHJvdG8iLCJwcmVQYXJzZVBvc3RGb3JtYXQiLCJ0aW1lIiwiZm9ybWF0cyIsInNvZCIsInN0YXJ0T2YiLCJjYWxlbmRhckZvcm1hdCIsImFzRmxvYXQiLCJ0aGF0Iiwiem9uZURlbHRhIiwiZW5kT2YiLCJzdGFydE9mRGF0ZSIsImlzb1dlZWtkYXkiLCJpbnB1dFN0cmluZyIsInBvc3Rmb3JtYXQiLCJ3aXRob3V0U3VmZml4IiwiaHVtYW5pemUiLCJmcm9tTm93IiwidG9Ob3ciLCJpbnZhbGlkQXQiLCJsb2NhbElucHV0IiwiaXNCZXR3ZWVuIiwiaW5jbHVzaXZpdHkiLCJsb2NhbEZyb20iLCJsb2NhbFRvIiwiaXNTYW1lIiwiaW5wdXRNcyIsImlzU2FtZU9yQWZ0ZXIiLCJpc1NhbWVPckJlZm9yZSIsInBhcnNpbmdGbGFncyIsInByaW9yaXRpemVkIiwidW5pdHNPYmoiLCJ1IiwiZ2V0UHJpb3JpdGl6ZWRVbml0cyIsInRvQXJyYXkiLCJ0b09iamVjdCIsInRvRGF0ZSIsInRvSVNPU3RyaW5nIiwia2VlcE9mZnNldCIsImluc3BlY3QiLCJ6b25lIiwiaXNMb2NhbCIsInByZWZpeCIsInN1ZmZpeCIsInRvSlNPTiIsInVuaXgiLCJjcmVhdGlvbkRhdGEiLCJpc29XZWVrcyIsIndlZWtJbmZvIiwiaXNvV2Vla3NJblllYXIiLCJwYXJzZVdlZWtkYXkiLCJwYXJzZUlzb1dlZWtkYXkiLCJrZWVwTG9jYWxUaW1lIiwia2VlcE1pbnV0ZXMiLCJsb2NhbEFkanVzdCIsIl9jaGFuZ2VJblByb2dyZXNzIiwicGFyc2Vab25lIiwidFpvbmUiLCJoYXNBbGlnbmVkSG91ck9mZnNldCIsImlzRFNUIiwiaXNVdGNPZmZzZXQiLCJ6b25lQWJiciIsInpvbmVOYW1lIiwiZGF0ZXMiLCJpc0RTVFNoaWZ0ZWQiLCJfaXNEU1RTaGlmdGVkIiwicHJvdG8kMSIsImdldCQxIiwiaW5kZXgiLCJmaWVsZCIsInNldHRlciIsImxpc3RNb250aHNJbXBsIiwib3V0IiwibGlzdFdlZWtkYXlzSW1wbCIsImxvY2FsZVNvcnRlZCIsInNoaWZ0IiwiX2NhbGVuZGFyIiwiX2xvbmdEYXRlRm9ybWF0IiwiZm9ybWF0VXBwZXIiLCJ0b1VwcGVyQ2FzZSIsIl9pbnZhbGlkRGF0ZSIsIl9vcmRpbmFsIiwiaXNGdXR1cmUiLCJfcmVsYXRpdmVUaW1lIiwicGFzdEZ1dHVyZSIsInNvdXJjZSIsImlzRm9ybWF0IiwiX21vbnRoc1Nob3J0IiwiX21vbnRoc1BhcnNlRXhhY3QiLCJmaXJzdERheU9mWWVhciIsImZpcnN0RGF5T2ZXZWVrIiwiX3dlZWtkYXlzIiwiX3dlZWtkYXlzTWluIiwiX3dlZWtkYXlzU2hvcnQiLCJfd2Vla2RheXNQYXJzZUV4YWN0IiwiX2Z1bGxXZWVrZGF5c1BhcnNlIiwiY2hhckF0IiwiaXNMb3dlciIsImxhbmdEYXRhIiwibWF0aEFicyIsImFkZFN1YnRyYWN0JDEiLCJhYnNDZWlsIiwiZGF5c1RvTW9udGhzIiwibW9udGhzVG9EYXlzIiwibWFrZUFzIiwiYWxpYXMiLCJhcyIsImFzTWlsbGlzZWNvbmRzIiwiYXNTZWNvbmRzIiwiYXNNaW51dGVzIiwiYXNIb3VycyIsImFzRGF5cyIsImFzV2Vla3MiLCJhc01vbnRocyIsImFzUXVhcnRlcnMiLCJhc1llYXJzIiwibWFrZUdldHRlciIsInRocmVzaG9sZHMiLCJzdWJzdGl0dXRlVGltZUFnbyIsImFicyQxIiwidG9JU09TdHJpbmckMSIsIlkiLCJEIiwidG9GaXhlZCIsInRvdGFsIiwidG90YWxTaWduIiwieW1TaWduIiwiZGF5c1NpZ24iLCJobXNTaWduIiwicHJvdG8kMiIsIm1vbnRoc0Zyb21EYXlzIiwid2l0aFN1ZmZpeCIsInBvc05lZ0R1cmF0aW9uIiwicmVsYXRpdmVUaW1lJDEiLCJ0b0lzb1N0cmluZyIsInZlcnNpb24iLCJ1cGRhdGVMb2NhbGUiLCJ0bXBMb2NhbGUiLCJyZWxhdGl2ZVRpbWVSb3VuZGluZyIsInJvdW5kaW5nRnVuY3Rpb24iLCJyZWxhdGl2ZVRpbWVUaHJlc2hvbGQiLCJ0aHJlc2hvbGQiLCJsaW1pdCIsIm15TW9tZW50IiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUwiLCJEQVRFVElNRV9MT0NBTF9TRUNPTkRTIiwiREFURVRJTUVfTE9DQUxfTVMiLCJEQVRFIiwiVElNRSIsIlRJTUVfU0VDT05EUyIsIlRJTUVfTVMiLCJXRUVLIiwiTU9OVEgiLCJmYWN0b3J5IiwiZnJlZUdsb2JhbCIsImZyZWVTZWxmIiwic2VsZiIsInJvb3QiLCJ0eXBlIiwiZ2xvYmFsIiwiZG9jdW1lbnQiLCJ3aW5kb3ciLCJub0dsb2JhbCIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJjbGFzczJ0eXBlIiwiZm5Ub1N0cmluZyIsIk9iamVjdEZ1bmN0aW9uU3RyaW5nIiwic3VwcG9ydCIsIm5vZGVUeXBlIiwiaXNXaW5kb3ciLCJwcmVzZXJ2ZWRTY3JpcHRBdHRyaWJ1dGVzIiwic3JjIiwibm9uY2UiLCJub01vZHVsZSIsIkRPTUV2YWwiLCJjb2RlIiwibm9kZSIsImRvYyIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0IiwiZ2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwiaGVhZCIsImFwcGVuZENoaWxkIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwidG9UeXBlIiwialF1ZXJ5Iiwic2VsZWN0b3IiLCJjb250ZXh0IiwiaW5pdCIsInJ0cmltIiwiaXNBcnJheUxpa2UiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsIm51bSIsInB1c2hTdGFjayIsImVsZW1zIiwibWVyZ2UiLCJwcmV2T2JqZWN0IiwiZWFjaCIsImVsZW0iLCJmaXJzdCIsImVxIiwibGFzdCIsImVuZCIsInNwbGljZSIsIm9wdGlvbnMiLCJjb3B5IiwiY29weUlzQXJyYXkiLCJ0YXJnZXQiLCJkZWVwIiwiaXNQbGFpbk9iamVjdCIsImV4cGFuZG8iLCJyYW5kb20iLCJpc1JlYWR5IiwiZXJyb3IiLCJub29wIiwiQ3RvciIsImlzRW1wdHlPYmplY3QiLCJnbG9iYWxFdmFsIiwidHJpbSIsIm1ha2VBcnJheSIsInJlc3VsdHMiLCJpbkFycmF5IiwiZ3JlcCIsImludmVydCIsImNhbGxiYWNrRXhwZWN0IiwiZ3VpZCIsIml0ZXJhdG9yIiwiU2l6emxlIiwiRXhwciIsImdldFRleHQiLCJpc1hNTCIsInRva2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENvbnRleHQiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0iLCJkb2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJjb250YWlucyIsInByZWZlcnJlZERvYyIsImRpcnJ1bnMiLCJkb25lIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwidG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJub25uYXRpdmVTZWxlY3RvckNhY2hlIiwic29ydE9yZGVyIiwicG9wIiwicHVzaF9uYXRpdmUiLCJsaXN0IiwiYm9vbGVhbnMiLCJ3aGl0ZXNwYWNlIiwiaWRlbnRpZmllciIsImF0dHJpYnV0ZXMiLCJwc2V1ZG9zIiwicndoaXRlc3BhY2UiLCJyY29tbWEiLCJyY29tYmluYXRvcnMiLCJyZGVzY2VuZCIsInJwc2V1ZG8iLCJyaWRlbnRpZmllciIsIm1hdGNoRXhwciIsInJodG1sIiwicmlucHV0cyIsInJoZWFkZXIiLCJybmF0aXZlIiwicnF1aWNrRXhwciIsInJzaWJsaW5nIiwicnVuZXNjYXBlIiwiZnVuZXNjYXBlIiwiXyIsImVzY2FwZWQiLCJlc2NhcGVkV2hpdGVzcGFjZSIsImhpZ2giLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyY3NzZXNjYXBlIiwiZmNzc2VzY2FwZSIsImNoIiwiYXNDb2RlUG9pbnQiLCJjaGFyQ29kZUF0IiwidW5sb2FkSGFuZGxlciIsImluRGlzYWJsZWRGaWVsZHNldCIsImFkZENvbWJpbmF0b3IiLCJkaXNhYmxlZCIsIm5vZGVOYW1lIiwiZGlyIiwiY2hpbGROb2RlcyIsImVscyIsInNlZWQiLCJuaWQiLCJncm91cHMiLCJuZXdTZWxlY3RvciIsIm5ld0NvbnRleHQiLCJvd25lckRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJpZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFzYSIsInRvU2VsZWN0b3IiLCJ0ZXN0Q29udGV4dCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJxc2FFcnJvciIsInJlbW92ZUF0dHJpYnV0ZSIsImNhY2hlIiwiY2FjaGVMZW5ndGgiLCJtYXJrRnVuY3Rpb24iLCJhc3NlcnQiLCJlbCIsImFkZEhhbmRsZSIsImF0dHJzIiwiaGFuZGxlciIsImF0dHJIYW5kbGUiLCJzaWJsaW5nQ2hlY2siLCJjdXIiLCJzb3VyY2VJbmRleCIsIm5leHRTaWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJjcmVhdGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVEaXNhYmxlZFBzZXVkbyIsImlzRGlzYWJsZWQiLCJjcmVhdGVQb3NpdGlvbmFsUHNldWRvIiwiYXJndW1lbnQiLCJtYXRjaEluZGV4ZXMiLCJuYW1lc3BhY2UiLCJuYW1lc3BhY2VVUkkiLCJkb2N1bWVudEVsZW1lbnQiLCJoYXNDb21wYXJlIiwic3ViV2luZG93IiwiZGVmYXVsdFZpZXciLCJ0b3AiLCJhZGRFdmVudExpc3RlbmVyIiwiYXR0YWNoRXZlbnQiLCJjbGFzc05hbWUiLCJjcmVhdGVDb21tZW50IiwiZ2V0QnlJZCIsImdldEVsZW1lbnRzQnlOYW1lIiwiZmlsdGVyIiwiYXR0cklkIiwiZmluZCIsImdldEF0dHJpYnV0ZU5vZGUiLCJ0YWciLCJpbm5lckhUTUwiLCJtYXRjaGVzU2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJkaXNjb25uZWN0ZWRNYXRjaCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiYWRvd24iLCJidXAiLCJjb21wYXJlIiwic29ydERldGFjaGVkIiwiYXVwIiwiYXAiLCJicCIsInVuc2hpZnQiLCJleHByIiwiZWxlbWVudHMiLCJhdHRyIiwic3BlY2lmaWVkIiwiZXNjYXBlIiwic2VsIiwidW5pcXVlU29ydCIsImR1cGxpY2F0ZXMiLCJkZXRlY3REdXBsaWNhdGVzIiwic29ydFN0YWJsZSIsInRleHRDb250ZW50IiwiZmlyc3RDaGlsZCIsIm5vZGVWYWx1ZSIsInNlbGVjdG9ycyIsImNyZWF0ZVBzZXVkbyIsInJlbGF0aXZlIiwicHJlRmlsdGVyIiwiZXhjZXNzIiwidW5xdW90ZWQiLCJub2RlTmFtZVNlbGVjdG9yIiwicGF0dGVybiIsIm9wZXJhdG9yIiwiY2hlY2siLCJ3aGF0Iiwic2ltcGxlIiwiZm9yd2FyZCIsIm9mVHlwZSIsInhtbCIsInVuaXF1ZUNhY2hlIiwib3V0ZXJDYWNoZSIsIm5vZGVJbmRleCIsInN0YXJ0IiwicGFyZW50IiwidXNlQ2FjaGUiLCJsYXN0Q2hpbGQiLCJ1bmlxdWVJRCIsInBzZXVkbyIsInNldEZpbHRlcnMiLCJpZHgiLCJ1bm1hdGNoZWQiLCJlbGVtTGFuZyIsImhhc2giLCJsb2NhdGlvbiIsImFjdGl2ZUVsZW1lbnQiLCJoYXNGb2N1cyIsImhyZWYiLCJ0YWJJbmRleCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsInNlbGVjdGVkSW5kZXgiLCJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIsInBhc3N3b3JkIiwiaW1hZ2UiLCJzdWJtaXQiLCJyZXNldCIsImNvbWJpbmF0b3IiLCJza2lwIiwiY2hlY2tOb25FbGVtZW50cyIsImRvbmVOYW1lIiwib2xkQ2FjaGUiLCJuZXdDYWNoZSIsImVsZW1lbnRNYXRjaGVyIiwibWF0Y2hlcnMiLCJjb25kZW5zZSIsIm5ld1VubWF0Y2hlZCIsIm1hcHBlZCIsInNldE1hdGNoZXIiLCJwb3N0RmlsdGVyIiwicG9zdEZpbmRlciIsInBvc3RTZWxlY3RvciIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsImNvbnRleHRzIiwibXVsdGlwbGVDb250ZXh0cyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsImltcGxpY2l0UmVsYXRpdmUiLCJtYXRjaENvbnRleHQiLCJtYXRjaEFueUNvbnRleHQiLCJmaWx0ZXJzIiwicGFyc2VPbmx5Iiwic29GYXIiLCJwcmVGaWx0ZXJzIiwiY2FjaGVkIiwic2V0TWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJieVNldCIsImJ5RWxlbWVudCIsInN1cGVyTWF0Y2hlciIsIm91dGVybW9zdCIsIm1hdGNoZWRDb3VudCIsInNldE1hdGNoZWQiLCJjb250ZXh0QmFja3VwIiwiZGlycnVuc1VuaXF1ZSIsIm1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyIsImNvbXBpbGVkIiwiZGVmYXVsdFZhbHVlIiwidW5pcXVlIiwiaXNYTUxEb2MiLCJlc2NhcGVTZWxlY3RvciIsInVudGlsIiwidHJ1bmNhdGUiLCJpcyIsInNpYmxpbmdzIiwicm5lZWRzQ29udGV4dCIsIm5lZWRzQ29udGV4dCIsInJzaW5nbGVUYWciLCJ3aW5ub3ciLCJxdWFsaWZpZXIiLCJub3QiLCJyb290alF1ZXJ5IiwicGFyc2VIVE1MIiwicmVhZHkiLCJycGFyZW50c3ByZXYiLCJndWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRyZW4iLCJjb250ZW50cyIsInByZXYiLCJzaWJsaW5nIiwiaGFzIiwidGFyZ2V0cyIsImNsb3Nlc3QiLCJwcmV2QWxsIiwiYWRkQmFjayIsInBhcmVudHMiLCJwYXJlbnRzVW50aWwiLCJuZXh0QWxsIiwibmV4dFVudGlsIiwicHJldlVudGlsIiwiY29udGVudERvY3VtZW50IiwiY29udGVudCIsInJldmVyc2UiLCJybm90aHRtbHdoaXRlIiwiSWRlbnRpdHkiLCJ2IiwiVGhyb3dlciIsImV4IiwiYWRvcHRWYWx1ZSIsInJlc29sdmUiLCJyZWplY3QiLCJub1ZhbHVlIiwibWV0aG9kIiwicHJvbWlzZSIsImZhaWwiLCJ0aGVuIiwiQ2FsbGJhY2tzIiwiZmxhZyIsImNyZWF0ZU9wdGlvbnMiLCJmaXJpbmciLCJtZW1vcnkiLCJmaXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5kZXgiLCJmaXJlIiwib25jZSIsInN0b3BPbkZhbHNlIiwicmVtb3ZlIiwiZGlzYWJsZSIsImxvY2siLCJmaXJlV2l0aCIsIkRlZmVycmVkIiwidHVwbGVzIiwic3RhdGUiLCJhbHdheXMiLCJkZWZlcnJlZCIsInBpcGUiLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJtYXhEZXB0aCIsImRlcHRoIiwic3BlY2lhbCIsIm1pZ2h0VGhyb3ciLCJUeXBlRXJyb3IiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9jZXNzIiwiZXhjZXB0aW9uSG9vayIsInN0YWNrVHJhY2UiLCJyZWplY3RXaXRoIiwiZ2V0U3RhY2tIb29rIiwic2V0VGltZW91dCIsInN0YXRlU3RyaW5nIiwid2hlbiIsInNpbmdsZVZhbHVlIiwicmVtYWluaW5nIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsIm1hc3RlciIsInVwZGF0ZUZ1bmMiLCJyZXJyb3JOYW1lcyIsIm1lc3NhZ2UiLCJyZWFkeUV4Y2VwdGlvbiIsInJlYWR5TGlzdCIsImNvbXBsZXRlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjYXRjaCIsInJlYWR5V2FpdCIsIndhaXQiLCJyZWFkeVN0YXRlIiwiZG9TY3JvbGwiLCJhY2Nlc3MiLCJjaGFpbmFibGUiLCJlbXB0eUdldCIsInJhdyIsImJ1bGsiLCJybXNQcmVmaXgiLCJyZGFzaEFscGhhIiwiZmNhbWVsQ2FzZSIsImFsbCIsImxldHRlciIsImNhbWVsQ2FzZSIsImFjY2VwdERhdGEiLCJvd25lciIsIkRhdGEiLCJ1aWQiLCJjb25maWd1cmFibGUiLCJoYXNEYXRhIiwiZGF0YVByaXYiLCJkYXRhVXNlciIsInJicmFjZSIsInJtdWx0aURhc2giLCJkYXRhQXR0ciIsIkpTT04iLCJwYXJzZSIsImdldERhdGEiLCJyZW1vdmVEYXRhIiwiX3JlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJfcXVldWVIb29rcyIsInN0b3AiLCJjbGVhclF1ZXVlIiwiY291bnQiLCJkZWZlciIsInBudW0iLCJyY3NzTnVtIiwiY3NzRXhwYW5kIiwiaXNBdHRhY2hlZCIsImNvbXBvc2VkIiwiZ2V0Um9vdE5vZGUiLCJpc0hpZGRlbldpdGhpblRyZWUiLCJzdHlsZSIsImRpc3BsYXkiLCJjc3MiLCJzd2FwIiwib2xkIiwiYWRqdXN0Q1NTIiwidmFsdWVQYXJ0cyIsInR3ZWVuIiwiYWRqdXN0ZWQiLCJzY2FsZSIsIm1heEl0ZXJhdGlvbnMiLCJjdXJyZW50VmFsdWUiLCJpbml0aWFsIiwiY3NzTnVtYmVyIiwiaW5pdGlhbEluVW5pdCIsImRlZmF1bHREaXNwbGF5TWFwIiwiZ2V0RGVmYXVsdERpc3BsYXkiLCJib2R5Iiwic2hvd0hpZGUiLCJzaG93IiwiaGlkZSIsInRvZ2dsZSIsInJjaGVja2FibGVUeXBlIiwicnRhZ05hbWUiLCJyc2NyaXB0VHlwZSIsIndyYXBNYXAiLCJvcHRpb24iLCJ0aGVhZCIsImNvbCIsInRyIiwidGQiLCJfZGVmYXVsdCIsImdldEFsbCIsInNldEdsb2JhbEV2YWwiLCJyZWZFbGVtZW50cyIsIm9wdGdyb3VwIiwidGJvZHkiLCJ0Zm9vdCIsImNvbGdyb3VwIiwiY2FwdGlvbiIsInRoIiwiZGl2IiwiYnVpbGRGcmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJpZ25vcmVkIiwid3JhcCIsImF0dGFjaGVkIiwiZnJhZ21lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50Iiwibm9kZXMiLCJodG1sUHJlZmlsdGVyIiwiY3JlYXRlVGV4dE5vZGUiLCJjaGVja0Nsb25lIiwiY2xvbmVOb2RlIiwibm9DbG9uZUNoZWNrZWQiLCJya2V5RXZlbnQiLCJybW91c2VFdmVudCIsInJ0eXBlbmFtZXNwYWNlIiwicmV0dXJuVHJ1ZSIsInJldHVybkZhbHNlIiwiZXhwZWN0U3luYyIsImVyciIsInNhZmVBY3RpdmVFbGVtZW50Iiwib24iLCJ0eXBlcyIsIm9uZSIsIm9yaWdGbiIsImV2ZW50Iiwib2ZmIiwibGV2ZXJhZ2VOYXRpdmUiLCJub3RBc3luYyIsInNhdmVkIiwiaXNUcmlnZ2VyIiwiZGVsZWdhdGVUeXBlIiwic3RvcFByb3BhZ2F0aW9uIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJ0cmlnZ2VyIiwiRXZlbnQiLCJoYW5kbGVPYmpJbiIsImV2ZW50SGFuZGxlIiwiZXZlbnRzIiwiaGFuZGxlT2JqIiwiaGFuZGxlcnMiLCJuYW1lc3BhY2VzIiwib3JpZ1R5cGUiLCJlbGVtRGF0YSIsImhhbmRsZSIsInRyaWdnZXJlZCIsImRpc3BhdGNoIiwiYmluZFR5cGUiLCJkZWxlZ2F0ZUNvdW50Iiwic2V0dXAiLCJtYXBwZWRUeXBlcyIsIm9yaWdDb3VudCIsInRlYXJkb3duIiwicmVtb3ZlRXZlbnQiLCJuYXRpdmVFdmVudCIsImhhbmRsZXJRdWV1ZSIsImZpeCIsImRlbGVnYXRlVGFyZ2V0IiwicHJlRGlzcGF0Y2giLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsImN1cnJlbnRUYXJnZXQiLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInJuYW1lc3BhY2UiLCJwb3N0RGlzcGF0Y2giLCJtYXRjaGVkSGFuZGxlcnMiLCJtYXRjaGVkU2VsZWN0b3JzIiwiYnV0dG9uIiwiYWRkUHJvcCIsImhvb2siLCJvcmlnaW5hbEV2ZW50Iiwid3JpdGFibGUiLCJsb2FkIiwibm9CdWJibGUiLCJjbGljayIsImJlZm9yZXVubG9hZCIsInJldHVyblZhbHVlIiwicHJvcHMiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJldmVudGVkIiwicmVsYXRlZFRhcmdldCIsInRpbWVTdGFtcCIsImlzU2ltdWxhdGVkIiwiYWx0S2V5IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJjaGFuZ2VkVG91Y2hlcyIsImN0cmxLZXkiLCJkZXRhaWwiLCJldmVudFBoYXNlIiwibWV0YUtleSIsInBhZ2VYIiwicGFnZVkiLCJzaGlmdEtleSIsInZpZXciLCJjaGFyQ29kZSIsImtleUNvZGUiLCJidXR0b25zIiwiY2xpZW50WCIsImNsaWVudFkiLCJvZmZzZXRYIiwib2Zmc2V0WSIsInBvaW50ZXJJZCIsInBvaW50ZXJUeXBlIiwic2NyZWVuWCIsInNjcmVlblkiLCJ0YXJnZXRUb3VjaGVzIiwidG9FbGVtZW50IiwidG91Y2hlcyIsIndoaWNoIiwiZm9jdXMiLCJibHVyIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJvcmlnIiwicmVsYXRlZCIsInJ4aHRtbFRhZyIsInJub0lubmVyaHRtbCIsInJjaGVja2VkIiwicmNsZWFuU2NyaXB0IiwibWFuaXB1bGF0aW9uVGFyZ2V0IiwiZGlzYWJsZVNjcmlwdCIsInJlc3RvcmVTY3JpcHQiLCJjbG9uZUNvcHlFdmVudCIsImRlc3QiLCJwZGF0YU9sZCIsInBkYXRhQ3VyIiwidWRhdGFPbGQiLCJ1ZGF0YUN1ciIsImZpeElucHV0IiwiZG9tTWFuaXAiLCJjb2xsZWN0aW9uIiwiaGFzU2NyaXB0cyIsImlOb0Nsb25lIiwidmFsdWVJc0Z1bmN0aW9uIiwiaHRtbCIsIl9ldmFsVXJsIiwia2VlcERhdGEiLCJjbGVhbkRhdGEiLCJkYXRhQW5kRXZlbnRzIiwiZGVlcERhdGFBbmRFdmVudHMiLCJzcmNFbGVtZW50cyIsImRlc3RFbGVtZW50cyIsImluUGFnZSIsImRldGFjaCIsImFwcGVuZCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJhZnRlciIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiYXBwZW5kVG8iLCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJvcmlnaW5hbCIsImluc2VydCIsInJudW1ub25weCIsImdldFN0eWxlcyIsIm9wZW5lciIsImdldENvbXB1dGVkU3R5bGUiLCJyYm94U3R5bGUiLCJjdXJDU1MiLCJjb21wdXRlZCIsIndpZHRoIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImdldFByb3BlcnR5VmFsdWUiLCJwaXhlbEJveFN0eWxlcyIsImFkZEdldEhvb2tJZiIsImNvbmRpdGlvbkZuIiwiaG9va0ZuIiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJjb250YWluZXIiLCJjc3NUZXh0IiwiZGl2U3R5bGUiLCJwaXhlbFBvc2l0aW9uVmFsIiwicmVsaWFibGVNYXJnaW5MZWZ0VmFsIiwicm91bmRQaXhlbE1lYXN1cmVzIiwibWFyZ2luTGVmdCIsInJpZ2h0IiwicGl4ZWxCb3hTdHlsZXNWYWwiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsInBvc2l0aW9uIiwic2Nyb2xsYm94U2l6ZVZhbCIsIm9mZnNldFdpZHRoIiwibWVhc3VyZSIsImJhY2tncm91bmRDbGlwIiwiY2xlYXJDbG9uZVN0eWxlIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbFBvc2l0aW9uIiwicmVsaWFibGVNYXJnaW5MZWZ0Iiwic2Nyb2xsYm94U2l6ZSIsImNzc1ByZWZpeGVzIiwiZW1wdHlTdHlsZSIsInZlbmRvclByb3BzIiwiZmluYWxQcm9wTmFtZSIsImZpbmFsIiwiY3NzUHJvcHMiLCJjYXBOYW1lIiwidmVuZG9yUHJvcE5hbWUiLCJyZGlzcGxheXN3YXAiLCJyY3VzdG9tUHJvcCIsImNzc1Nob3ciLCJ2aXNpYmlsaXR5IiwiY3NzTm9ybWFsVHJhbnNmb3JtIiwibGV0dGVyU3BhY2luZyIsImZvbnRXZWlnaHQiLCJzZXRQb3NpdGl2ZU51bWJlciIsImJveE1vZGVsQWRqdXN0bWVudCIsImRpbWVuc2lvbiIsImJveCIsImlzQm9yZGVyQm94Iiwic3R5bGVzIiwiY29tcHV0ZWRWYWwiLCJleHRyYSIsImRlbHRhIiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNCb3JkZXJCb3giLCJvZmZzZXRQcm9wIiwiZ2V0Q2xpZW50UmVjdHMiLCJUd2VlbiIsImVhc2luZyIsImNzc0hvb2tzIiwib3BhY2l0eSIsIm9yaWdOYW1lIiwiaXNDdXN0b21Qcm9wIiwic2V0UHJvcGVydHkiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzY3JvbGxib3hTaXplQnVnZ3kiLCJsZWZ0IiwibWFyZ2luIiwicGFkZGluZyIsImJvcmRlciIsImV4cGFuZCIsImV4cGFuZGVkIiwicHJvcEhvb2tzIiwicnVuIiwicGVyY2VudCIsImVhc2VkIiwic3RlcCIsImZ4Iiwic2Nyb2xsVG9wIiwic2Nyb2xsTGVmdCIsImxpbmVhciIsInN3aW5nIiwiY29zIiwiUEkiLCJmeE5vdyIsImluUHJvZ3Jlc3MiLCJyZnh0eXBlcyIsInJydW4iLCJzY2hlZHVsZSIsImhpZGRlbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImludGVydmFsIiwidGljayIsImNyZWF0ZUZ4Tm93IiwiZ2VuRngiLCJpbmNsdWRlV2lkdGgiLCJoZWlnaHQiLCJjcmVhdGVUd2VlbiIsImFuaW1hdGlvbiIsIkFuaW1hdGlvbiIsInR3ZWVuZXJzIiwicHJvcGVydGllcyIsInN0b3BwZWQiLCJwcmVmaWx0ZXJzIiwiY3VycmVudFRpbWUiLCJzdGFydFRpbWUiLCJ0d2VlbnMiLCJvcHRzIiwic3BlY2lhbEVhc2luZyIsIm9yaWdpbmFsUHJvcGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsImdvdG9FbmQiLCJwcm9wRmlsdGVyIiwiY29tcGxldGUiLCJ0aW1lciIsImFuaW0iLCJ0d2VlbmVyIiwib2xkZmlyZSIsInByb3BUd2VlbiIsInJlc3RvcmVEaXNwbGF5IiwiaXNCb3giLCJkYXRhU2hvdyIsInVucXVldWVkIiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwicHJlZmlsdGVyIiwic3BlZWQiLCJvcHQiLCJzcGVlZHMiLCJmYWRlVG8iLCJhbmltYXRlIiwib3B0YWxsIiwiZG9BbmltYXRpb24iLCJmaW5pc2giLCJzdG9wUXVldWUiLCJ0aW1lcnMiLCJjc3NGbiIsInNsaWRlRG93biIsInNsaWRlVXAiLCJzbGlkZVRvZ2dsZSIsImZhZGVJbiIsImZhZGVPdXQiLCJmYWRlVG9nZ2xlIiwic2xvdyIsImZhc3QiLCJkZWxheSIsInRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJyYWRpb1ZhbHVlIiwiYm9vbEhvb2siLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJib29sIiwiYXR0ck5hbWVzIiwibG93ZXJjYXNlTmFtZSIsInJmb2N1c2FibGUiLCJyY2xpY2thYmxlIiwic3RyaXBBbmRDb2xsYXBzZSIsImdldENsYXNzIiwiY2xhc3Nlc1RvQXJyYXkiLCJyZW1vdmVQcm9wIiwicHJvcEZpeCIsInRhYmluZGV4IiwiYWRkQ2xhc3MiLCJjdXJWYWx1ZSIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInJlbW92ZUNsYXNzIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImlzVmFsaWRWYWx1ZSIsImhhc0NsYXNzIiwicnJldHVybiIsInZhbEhvb2tzIiwib3B0aW9uU2V0IiwiZm9jdXNpbiIsInJmb2N1c01vcnBoIiwic3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2siLCJvbmx5SGFuZGxlcnMiLCJidWJibGVUeXBlIiwib250eXBlIiwibGFzdEVsZW1lbnQiLCJldmVudFBhdGgiLCJwYXJlbnRXaW5kb3ciLCJzaW11bGF0ZSIsInRyaWdnZXJIYW5kbGVyIiwiYXR0YWNoZXMiLCJycXVlcnkiLCJwYXJzZVhNTCIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsInJicmFja2V0IiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJidWlsZFBhcmFtcyIsInRyYWRpdGlvbmFsIiwicGFyYW0iLCJ2YWx1ZU9yRnVuY3Rpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVBcnJheSIsInIyMCIsInJoYXNoIiwicmFudGlDYWNoZSIsInJoZWFkZXJzIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInRyYW5zcG9ydHMiLCJhbGxUeXBlcyIsIm9yaWdpbkFuY2hvciIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImRhdGFUeXBlIiwiZGF0YVR5cGVzIiwiaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMiLCJqcVhIUiIsImluc3BlY3RlZCIsInNlZWtpbmdUcmFuc3BvcnQiLCJwcmVmaWx0ZXJPckZhY3RvcnkiLCJkYXRhVHlwZU9yVHJhbnNwb3J0IiwiYWpheEV4dGVuZCIsImZsYXRPcHRpb25zIiwiYWpheFNldHRpbmdzIiwiYWN0aXZlIiwibGFzdE1vZGlmaWVkIiwiZXRhZyIsInVybCIsInByb3RvY29sIiwicHJvY2Vzc0RhdGEiLCJhc3luYyIsImNvbnRlbnRUeXBlIiwiYWNjZXB0cyIsImpzb24iLCJyZXNwb25zZUZpZWxkcyIsImNvbnZlcnRlcnMiLCJhamF4U2V0dXAiLCJzZXR0aW5ncyIsImFqYXhQcmVmaWx0ZXIiLCJhamF4VHJhbnNwb3J0IiwiYWpheCIsInRyYW5zcG9ydCIsImNhY2hlVVJMIiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwicmVzcG9uc2VIZWFkZXJzIiwidGltZW91dFRpbWVyIiwidXJsQW5jaG9yIiwiZmlyZUdsb2JhbHMiLCJ1bmNhY2hlZCIsImNhbGxiYWNrQ29udGV4dCIsImdsb2JhbEV2ZW50Q29udGV4dCIsImNvbXBsZXRlRGVmZXJyZWQiLCJzdGF0dXNDb2RlIiwicmVxdWVzdEhlYWRlcnMiLCJyZXF1ZXN0SGVhZGVyc05hbWVzIiwic3RyQWJvcnQiLCJnZXRSZXNwb25zZUhlYWRlciIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJvdmVycmlkZU1pbWVUeXBlIiwibWltZVR5cGUiLCJzdGF0dXMiLCJhYm9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJjcm9zc0RvbWFpbiIsImhvc3QiLCJoYXNDb250ZW50IiwiaWZNb2RpZmllZCIsImhlYWRlcnMiLCJiZWZvcmVTZW5kIiwic3VjY2VzcyIsInNlbmQiLCJuYXRpdmVTdGF0dXNUZXh0IiwicmVzcG9uc2VzIiwiaXNTdWNjZXNzIiwicmVzcG9uc2UiLCJtb2RpZmllZCIsImN0IiwiZmluYWxEYXRhVHlwZSIsImZpcnN0RGF0YVR5cGUiLCJhamF4SGFuZGxlUmVzcG9uc2VzIiwiY29udjIiLCJjdXJyZW50IiwiY29udiIsImRhdGFGaWx0ZXIiLCJ0aHJvd3MiLCJhamF4Q29udmVydCIsImdldEpTT04iLCJnZXRTY3JpcHQiLCJ3cmFwQWxsIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJ3cmFwSW5uZXIiLCJodG1sSXNGdW5jdGlvbiIsInVud3JhcCIsInZpc2libGUiLCJvZmZzZXRIZWlnaHQiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsInhoclN1Y2Nlc3NTdGF0dXMiLCIwIiwiMTIyMyIsInhoclN1cHBvcnRlZCIsImNvcnMiLCJlcnJvckNhbGxiYWNrIiwib3BlbiIsInVzZXJuYW1lIiwieGhyRmllbGRzIiwib25sb2FkIiwib25lcnJvciIsIm9uYWJvcnQiLCJvbnRpbWVvdXQiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZXNwb25zZVR5cGUiLCJyZXNwb25zZVRleHQiLCJiaW5hcnkiLCJzY3JpcHRBdHRycyIsImNoYXJzZXQiLCJzY3JpcHRDaGFyc2V0IiwiZXZ0Iiwib2xkQ2FsbGJhY2tzIiwicmpzb25wIiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwib3JpZ2luYWxTZXR0aW5ncyIsImNhbGxiYWNrTmFtZSIsIm92ZXJ3cml0dGVuIiwicmVzcG9uc2VDb250YWluZXIiLCJqc29uUHJvcCIsImNyZWF0ZUhUTUxEb2N1bWVudCIsImltcGxlbWVudGF0aW9uIiwia2VlcFNjcmlwdHMiLCJwYXJzZWQiLCJwYXJhbXMiLCJhbmltYXRlZCIsInNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1clRvcCIsImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjdXJFbGVtIiwidXNpbmciLCJyZWN0Iiwid2luIiwicGFnZVlPZmZzZXQiLCJwYWdlWE9mZnNldCIsIm9mZnNldFBhcmVudCIsInBhcmVudE9mZnNldCIsInNjcm9sbFRvIiwiSGVpZ2h0IiwiV2lkdGgiLCJkZWZhdWx0RXh0cmEiLCJmdW5jTmFtZSIsImhvdmVyIiwiZm5PdmVyIiwiZm5PdXQiLCJ1bmJpbmQiLCJkZWxlZ2F0ZSIsInVuZGVsZWdhdGUiLCJwcm94eSIsImhvbGRSZWFkeSIsImhvbGQiLCJwYXJzZUpTT04iLCJpc051bWVyaWMiLCJfalF1ZXJ5IiwiXyQiLCIkIiwibm9Db25mbGljdCIsImFycmF5TWFwIiwiYmFzZUNsb25lIiwiYmFzZVVuc2V0IiwiY2FzdFBhdGgiLCJjb3B5T2JqZWN0IiwiY3VzdG9tT21pdENsb25lIiwiZmxhdFJlc3QiLCJnZXRBbGxLZXlzSW4iLCJvbWl0IiwicGF0aHMiLCJpc0RlZXAiLCJwYXRoIiwiQ0xPTkVfREVFUF9GTEFHIiwiYmFzZUlzTmF0aXZlIiwiZ2V0VmFsdWUiLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsInN5bVRvU3RyaW5nVGFnIiwiYXNzaWduVmFsdWUiLCJiYXNlQXNzaWduVmFsdWUiLCJjdXN0b21pemVyIiwiaXNOZXciLCJuZXdWYWx1ZSIsImFycmF5TGlrZUtleXMiLCJiYXNlS2V5cyIsImlzTGVuZ3RoIiwiaXNLZXkiLCJzdHJpbmdUb1BhdGgiLCJpc1N5bWJvbCIsImFycmF5RmlsdGVyIiwiYmFzZUZpbHRlciIsImJhc2VJdGVyYXRlZSIsInByZWRpY2F0ZSIsInJlc0luZGV4IiwiYmFzZU1hcCIsIml0ZXJhdGVlIiwibGlzdENhY2hlQ2xlYXIiLCJsaXN0Q2FjaGVEZWxldGUiLCJsaXN0Q2FjaGVHZXQiLCJsaXN0Q2FjaGVIYXMiLCJsaXN0Q2FjaGVTZXQiLCJMaXN0Q2FjaGUiLCJlbnRyaWVzIiwiY2xlYXIiLCJlbnRyeSIsIm5hdGl2ZUNyZWF0ZSIsImdldE5hdGl2ZSIsImlzS2V5YWJsZSIsIl9fZGF0YV9fIiwib2JqVmFsdWUiLCJ3ZWJwYWNrUG9seWZpbGwiLCJyZUlzVWludCIsIm9iamVjdFByb3RvIiwiRGF0YVZpZXciLCJNYXAiLCJQcm9taXNlIiwiU2V0IiwiV2Vha01hcCIsImJhc2VHZXRUYWciLCJ0b1NvdXJjZSIsImRhdGFWaWV3Q3RvclN0cmluZyIsIm1hcEN0b3JTdHJpbmciLCJwcm9taXNlQ3RvclN0cmluZyIsInNldEN0b3JTdHJpbmciLCJ3ZWFrTWFwQ3RvclN0cmluZyIsImdldFRhZyIsIkFycmF5QnVmZmVyIiwiY3RvclN0cmluZyIsImlzT2JqZWN0TGlrZSIsInRvS2V5IiwiYmFzZU1hdGNoZXMiLCJiYXNlTWF0Y2hlc1Byb3BlcnR5IiwiaWRlbnRpdHkiLCJjYW5Vc2VET00iLCJzbGlkZXNPbkxlZnQiLCJzbGlkZXNPblJpZ2h0Iiwic2libGluZ0RpcmVjdGlvbiIsImdldFRvdGFsU2xpZGVzIiwiZ2V0UG9zdENsb25lcyIsImdldFByZUNsb25lcyIsImdldFRyYWNrTGVmdCIsImdldFRyYWNrQW5pbWF0ZUNTUyIsImdldFRyYWNrQ1NTIiwiY2hlY2tTcGVjS2V5cyIsImdldFNsaWRlQ291bnQiLCJjaGVja05hdmlnYWJsZSIsImdldE5hdmlnYWJsZUluZGV4ZXMiLCJzd2lwZUVuZCIsInN3aXBlTW92ZSIsInN3aXBlU3RhcnQiLCJrZXlIYW5kbGVyIiwiY2hhbmdlU2xpZGUiLCJzbGlkZUhhbmRsZXIiLCJpbml0aWFsaXplZFN0YXRlIiwiZXh0cmFjdE9iamVjdCIsImNhbkdvTmV4dCIsImdldFN3aXBlRGlyZWN0aW9uIiwiZ2V0SGVpZ2h0IiwiZ2V0V2lkdGgiLCJsYXp5U2xpZGVzT25SaWdodCIsImxhenlTbGlkZXNPbkxlZnQiLCJsYXp5RW5kSW5kZXgiLCJsYXp5U3RhcnRJbmRleCIsImdldFJlcXVpcmVkTGF6eVNsaWRlcyIsImdldE9uRGVtYW5kTGF6eVNsaWRlcyIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3REb20iLCJfb2JqZWN0U3ByZWFkIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9kZWZpbmVQcm9wZXJ0eSIsInNwZWMiLCJvbkRlbWFuZFNsaWRlcyIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsInNsaWRlSW5kZXgiLCJsYXp5TG9hZGVkTGlzdCIsInJlcXVpcmVkU2xpZGVzIiwiY3VycmVudFNsaWRlIiwiY2VudGVyTW9kZSIsInNsaWRlc1RvU2hvdyIsImNlbnRlclBhZGRpbmciLCJ0b3VjaE9iamVjdCIsInhEaXN0IiwieURpc3QiLCJzd2lwZUFuZ2xlIiwidmVydGljYWxTd2lwaW5nIiwic3RhcnRYIiwiY3VyWCIsInN0YXJ0WSIsImN1clkiLCJhdGFuMiIsImNhbkdvIiwiaW5maW5pdGUiLCJzbGlkZUNvdW50IiwibmV3T2JqZWN0Iiwic2xpZGVXaWR0aCIsIkNoaWxkcmVuIiwibGlzdFdpZHRoIiwiZmluZERPTU5vZGUiLCJsaXN0UmVmIiwidHJhY2tXaWR0aCIsInRyYWNrUmVmIiwidmVydGljYWwiLCJjZW50ZXJQYWRkaW5nQWRqIiwic2xpZGVIZWlnaHQiLCJxdWVyeVNlbGVjdG9yIiwibGlzdEhlaWdodCIsImluaXRpYWxTbGlkZSIsInJ0bCIsInNsaWRlc1RvTG9hZCIsImF1dG9wbGF5aW5nIiwiYXV0b3BsYXkiLCJ3YWl0Rm9yQW5pbWF0ZSIsImFuaW1hdGluZyIsImZhZGUiLCJsYXp5TG9hZCIsInNsaWRlc1RvU2Nyb2xsIiwidXNlQ1NTIiwiZmluYWxTbGlkZSIsImFuaW1hdGlvbkxlZnQiLCJmaW5hbExlZnQiLCJhbmltYXRpb25TbGlkZSIsIm5leHRTdGF0ZSIsInRyYWNrU3R5bGUiLCJzd2lwZUxlZnQiLCJpbmRleE9mZnNldCIsInByZXZpb3VzSW50Iiwic2xpZGVPZmZzZXQiLCJ0YXJnZXRTbGlkZSIsIk51bWJlciIsImFjY2Vzc2liaWxpdHkiLCJ0YWdOYW1lIiwic3dpcGUiLCJkcmFnZ2FibGUiLCJkcmFnZ2luZyIsInNjcm9sbGluZyIsInN3aXBlVG9TbGlkZSIsImVkZ2VGcmljdGlvbiIsImVkZ2VEcmFnZ2VkIiwib25FZGdlIiwic3dpcGVkIiwic3dpcGluZyIsInN3aXBlRXZlbnQiLCJzd2lwZUxlbmd0aCIsInNxcnQiLCJ2ZXJ0aWNhbFN3aXBlTGVuZ3RoIiwicG9zaXRpb25PZmZzZXQiLCJkb3RDb3VudCIsInN3aXBlRGlyZWN0aW9uIiwidG91Y2hTd2lwZUxlbmd0aCIsInRvdWNoVGhyZXNob2xkIiwib25Td2lwZSIsIm1pblN3aXBlIiwibmV3U2xpZGUiLCJjdXJyZW50TGVmdCIsImJyZWFrcG9pbnQiLCJjb3VudGVyIiwiaW5kZXhlcyIsIm5hdmlnYWJsZXMiLCJwcmV2TmF2aWdhYmxlIiwiY2VudGVyT2Zmc2V0Iiwic3dpcGVkU2xpZGUiLCJzbGlkZXMiLCJldmVyeSIsInNsaWRlIiwib2Zmc2V0VG9wIiwib2Zmc2V0TGVmdCIsImN1cnJlbnRJbmRleCIsImRhdGFzZXQiLCJrZXlzQXJyYXkiLCJyZWR1Y2UiLCJ0cmFja0hlaWdodCIsInRyYWNrQ2hpbGRyZW4iLCJ0cmFuc2l0aW9uIiwiV2Via2l0VHJhbnNpdGlvbiIsInVzZVRyYW5zZm9ybSIsIldlYmtpdFRyYW5zZm9ybSIsInRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIiwibWFyZ2luVG9wIiwiY3NzRWFzZSIsInVuc2xpY2siLCJ0YXJnZXRMZWZ0IiwidmFyaWFibGVXaWR0aCIsInNsaWRlc1RvT2Zmc2V0IiwidGFyZ2V0U2xpZGVJbmRleCIsInRyYWNrRWxlbSIsIl9yZWYiLCJfcmVmMiIsImJhc2VHZXQiLCJiYXNlUGlja0J5Iiwic3RhY2tDbGVhciIsInN0YWNrRGVsZXRlIiwic3RhY2tHZXQiLCJzdGFja0hhcyIsInN0YWNrU2V0IiwiU3RhY2siLCJzaXplIiwiZyIsIm1hcENhY2hlQ2xlYXIiLCJtYXBDYWNoZURlbGV0ZSIsIm1hcENhY2hlR2V0IiwibWFwQ2FjaGVIYXMiLCJtYXBDYWNoZVNldCIsIk1hcENhY2hlIiwiYmFzZUlzQXJndW1lbnRzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJpc0FyZ3VtZW50cyIsInN0dWJGYWxzZSIsImZyZWVFeHBvcnRzIiwiZnJlZU1vZHVsZSIsIkJ1ZmZlciIsImlzQnVmZmVyIiwiZnJlZVByb2Nlc3MiLCJub2RlVXRpbCIsInJlcXVpcmUiLCJiaW5kaW5nIiwic3R1YkFycmF5IiwibmF0aXZlR2V0U3ltYm9scyIsImdldFN5bWJvbHMiLCJzeW1ib2wiLCJnZXRQcm90b3R5cGUiLCJvdmVyQXJnIiwiYmFzZUdldEFsbEtleXMiLCJnZXRTeW1ib2xzSW4iLCJrZXlzSW4iLCJVaW50OEFycmF5IiwiYXJyYXlCdWZmZXIiLCJieXRlTGVuZ3RoIiwicmVJc0RlZXBQcm9wIiwicmVJc1BsYWluUHJvcCIsInByb3BJc0VudW1lcmFibGUiLCJhc3NpZ24iLCJ0ZXN0MSIsInRlc3QyIiwidGVzdDMiLCJzaG91bGRVc2VOYXRpdmUiLCJzeW1ib2xzIiwiRXZFbWl0dGVyIiwiZXZlbnROYW1lIiwibGlzdGVuZXIiLCJfZXZlbnRzIiwibGlzdGVuZXJzIiwib25jZUV2ZW50cyIsIl9vbmNlRXZlbnRzIiwiZW1pdEV2ZW50Iiwib25jZUxpc3RlbmVycyIsImFsbE9mZiIsImdldFN0eWxlU2l6ZSIsImxvZ0Vycm9yIiwibWVhc3VyZW1lbnRzIiwibWVhc3VyZW1lbnRzTGVuZ3RoIiwiZ2V0U3R5bGUiLCJpc0JveFNpemVPdXRlciIsImlzU2V0dXAiLCJnZXRTaXplIiwiYm9yZGVyU3R5bGUiLCJib3JkZXJXaWR0aCIsImJveFNpemluZyIsImlubmVyV2lkdGgiLCJpbm5lckhlaWdodCIsIm91dGVyV2lkdGgiLCJvdXRlckhlaWdodCIsImdldFplcm9TaXplIiwibWVhc3VyZW1lbnQiLCJwYWRkaW5nV2lkdGgiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdIZWlnaHQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsIm1hcmdpbldpZHRoIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5IZWlnaHQiLCJtYXJnaW5Cb3R0b20iLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVySGVpZ2h0IiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImlzQm9yZGVyQm94U2l6ZU91dGVyIiwic3R5bGVXaWR0aCIsInN0eWxlSGVpZ2h0IiwiZnVuY1RvU3RyaW5nIiwiYmFzZVRpbWVzIiwiaXNJbmRleCIsImlzVHlwZWRBcnJheSIsImluaGVyaXRlZCIsImlzQXJyIiwiaXNBcmciLCJpc0J1ZmYiLCJpc1R5cGUiLCJza2lwSW5kZXhlcyIsImJhc2VJc1R5cGVkQXJyYXkiLCJiYXNlVW5hcnkiLCJub2RlSXNUeXBlZEFycmF5IiwiYmFzZUtleXNJbiIsImFycmF5UHVzaCIsImtleXNGdW5jIiwic3ltYm9sc0Z1bmMiLCJmbGF0dGVuIiwib3ZlclJlc3QiLCJzZXRUb1N0cmluZyIsIm5hdGl2ZU1heCIsIm90aGVyQXJncyIsImJhc2VTZXRUb1N0cmluZyIsInNob3J0T3V0IiwiYmFzZUZvck93biIsImJhc2VFYWNoIiwiY3JlYXRlQmFzZUVhY2giLCJiYXNlSXNFcXVhbERlZXAiLCJiYXNlSXNFcXVhbCIsImJpdG1hc2siLCJTZXRDYWNoZSIsImFycmF5U29tZSIsImNhY2hlSGFzIiwiZXF1YWxGdW5jIiwiaXNQYXJ0aWFsIiwiYXJyTGVuZ3RoIiwib3RoTGVuZ3RoIiwic3RhY2tlZCIsInNlZW4iLCJhcnJWYWx1ZSIsIm90aFZhbHVlIiwiY29tcGFyZWQiLCJvdGhJbmRleCIsInNyY1ZhbHVlIiwiYmFzZUhhc0luIiwiaGFzUGF0aCIsImNoZWNrRENFIiwiX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwiYmFzZVNldCIsInRvRmluaXRlIiwicmVtYWluZGVyIiwicmVUcmltIiwicmVJc0JhZEhleCIsInJlSXNCaW5hcnkiLCJyZUlzT2N0YWwiLCJmcmVlUGFyc2VJbnQiLCJpc0JpbmFyeSIsIm1vbWVudCIsInN5bWJvbE1hcCIsIm51bWJlck1hcCIsInBsdXJhbEZvcm0iLCJwbHVyYWxzIiwicGx1cmFsaXplIiwiZiIsInN0ciIsIndlZWtkYXlzUGFyc2VFeGFjdCIsInN1ZmZpeGVzIiwiMSIsIjUiLCI4IiwiNzAiLCI4MCIsIjIiLCI3IiwiMjAiLCI1MCIsIjMiLCI0IiwiMTAwIiwiNiIsIjkiLCIxMCIsIjMwIiwiNjAiLCI5MCIsInJlbGF0aXZlVGltZVdpdGhQbHVyYWwiLCJmb3JtcyIsInN0YW5kYWxvbmUiLCJsYXN0RGlnaXQiLCJsYXN0MkRpZ2l0cyIsInJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbiIsIm11dGF0aW9uVGFibGUiLCJzdWJzdHJpbmciLCJzb2Z0TXV0YXRpb24iLCJtdXRhdGlvbiIsImxhc3ROdW1iZXIiLCJ0cmFuc2xhdGUiLCJtb250aHNQYXJzZUV4YWN0IiwibGwiLCJsbGwiLCJsbGxsIiwicGx1cmFsIiwibW9udGhzU3RyaWN0UmVnZXgiLCJtb250aHNTaG9ydFN0cmljdFJlZ2V4IiwibG9uZ01vbnRoc1BhcnNlIiwic2hvcnRNb250aHNQYXJzZSIsInByb2Nlc3NSZWxhdGl2ZVRpbWUiLCJtb250aHNOb21pbmF0aXZlRWwiLCJtb250aHNHZW5pdGl2ZUVsIiwibW9tZW50VG9Gb3JtYXQiLCJfbW9udGhzR2VuaXRpdmVFbCIsIl9tb250aHNOb21pbmF0aXZlRWwiLCJjYWxlbmRhckVsIiwiX2NhbGVuZGFyRWwiLCJtb250aHNTaG9ydERvdCIsIm51bWJlcnNQYXN0IiwibnVtYmVyc0Z1dHVyZSIsInZlcmJhbE51bWJlciIsIm1vbnRoc1Nob3J0V2l0aERvdHMiLCJtb250aHNTaG9ydFdpdGhvdXREb3RzIiwid2Vla0VuZGluZ3MiLCI0MCIsImlzVXBwZXIiLCJlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIiLCJ0cmFuc2xhdGVTaW5ndWxhciIsInJlbGF0aXZlVGltZVdpdGhTaW5ndWxhciIsInRyYW5zbGF0b3IiLCJ3b3JkcyIsImNvcnJlY3RHcmFtbWF0aWNhbENhc2UiLCJ3b3JkS2V5IiwicmVsYXRpdmVUaW1lTXIiLCJtb250aHNOb21pbmF0aXZlIiwibW9udGhzU3ViamVjdGl2ZSIsIjEyIiwiMTMiLCJudW1iZXJzTm91bnMiLCJudW1iZXJOb3VuIiwiaHVuZHJlZCIsInRlbiIsIndvcmQiLCJudW1iZXJBc05vdW4iLCJwcm9jZXNzSG91cnNGdW5jdGlvbiIsImRldGVjdG9yIiwiaXNJRSIsImFnZW50IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidW5kZWYiLCJpc0xlZ2FjeU9wZXJhIiwib3BlcmEiLCJfaW50ZXJvcERlZmF1bHQiLCJQcm9wVHlwZXMiLCJSZWFjdCIsIlJlYWN0X19kZWZhdWx0Iiwid2FybmluZyIsIkNvdW50VXAkMSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydGllcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlT25seSIsIl9nZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX3NldFByb3RvdHlwZU9mIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9hcnIiLCJfbiIsIl9lIiwiX3MiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwiY3JlYXRlQ291bnRVcEluc3RhbmNlIiwiZGVjaW1hbCIsImRlY2ltYWxzIiwiZWFzaW5nRm4iLCJmb3JtYXR0aW5nRm4iLCJ1c2VFYXNpbmciLCJ1c2VHcm91cGluZyIsIkNvdW50VXAiLCJfQ29tcG9uZW50IiwiX2dldFByb3RvdHlwZU9mMiIsIl90aGlzIiwiX2xlbiIsIl9rZXkiLCJjb250YWluZXJSZWYiLCJIVE1MRWxlbWVudCIsIlNWR1RleHRFbGVtZW50IiwiU1ZHVFNwYW5FbGVtZW50IiwiX2Fzc2VydFRoaXNJbml0aWFsaXplIiwicmVzdGFydCIsInVwZGF0ZSIsIm9uUGF1c2VSZXN1bWUiLCJwYXVzZVJlc3VtZSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZTIiLCJvblJlc2V0IiwiX2Fzc2VydFRoaXNJbml0aWFsaXplMyIsIl90aGlzJHByb3BzIiwib25FbmQiLCJvblN0YXJ0IiwidGltZW91dElkIiwibmV3RW5kIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplNCIsIm9uVXBkYXRlIiwiY3JlYXRlUmVmIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiX2luaGVyaXRzIiwiX3RoaXMkcHJvcHMyIiwiY3JlYXRlSW5zdGFuY2UiLCJuZXh0UHJvcHMiLCJfdGhpcyRwcm9wczMiLCJyZWRyYXciLCJwcmV2UHJvcHMiLCJfdGhpcyRwcm9wczQiLCJwcmVzZXJ2ZVZhbHVlIiwiX3RoaXMkcHJvcHM1IiwiY291bnRVcFJlZiIsInJlZiIsIkNvbXBvbmVudCIsImlzUmVxdWlyZWQiLCJzdGFydE9uTW91bnQiLCJNT0NLX0VMRU1FTlQiLCJ1c2VDb3VudFVwIiwiX3Byb3BzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfb2JqZWN0U3ByZWFkMiIsImRlZmF1bHRQcm9wcyIsIl91c2VTdGF0ZTIiLCJ1c2VTdGF0ZSIsInNldENvdW50IiwidXNlUmVmIiwiZ2V0Q291bnRVcCIsImNvdW50VXAiLCJuZXdDb3VudFVwIiwiZm9ybWF0dGluZ0ZuUmVmIiwidXNlRWZmZWN0IiwiYmFzZVBpY2siLCJwaWNrIiwiYmFzZUZpbmRJbmRleCIsInRvSW50ZWdlciIsImZyb21JbmRleCIsImlzQnJvd3NlciIsIk1hc29ucnkiLCJpbWFnZXNsb2FkZWQiLCJlbGVtZW50UmVzaXplRGV0ZWN0b3JNYWtlciIsImRlYm91bmNlIiwiY3JlYXRlUmVhY3RDbGFzcyIsInByb3BUeXBlcyIsImVuYWJsZVJlc2l6YWJsZUNoaWxkcmVuIiwiZGlzYWJsZUltYWdlc0xvYWRlZCIsIm9uSW1hZ2VzTG9hZGVkIiwidXBkYXRlT25FYWNoSW1hZ2VMb2FkIiwiaW1hZ2VzTG9hZGVkT3B0aW9ucyIsImVsZW1lbnRUeXBlIiwib25MYXlvdXRDb21wbGV0ZSIsIm9uUmVtb3ZlQ29tcGxldGUiLCJNYXNvbnJ5Q29tcG9uZW50IiwibWFzb25yeSIsImVyZCIsImxhdGVzdEtub3duRG9tQ2hpbGRyZW4iLCJkaXNwbGF5TmFtZSIsImltYWdlc0xvYWRlZENhbmNlbFJlZiIsImdldERlZmF1bHRQcm9wcyIsImluaXRpYWxpemVNYXNvbnJ5IiwiZm9yY2UiLCJtYXNvbnJ5Q29udGFpbmVyIiwiZ2V0Q3VycmVudERvbUNoaWxkcmVuIiwiaXRlbVNlbGVjdG9yIiwiZGlmZkRvbUNoaWxkcmVuIiwiZm9yY2VJdGVtUmVsb2FkIiwia25vd25DaGlsZHJlblN0aWxsQXR0YWNoZWQiLCJlbGVtZW50IiwiY3VycmVudERvbUNoaWxkcmVuIiwicmVtb3ZlZCIsImF0dGFjaGVkS25vd25DaGlsZCIsIm5ld0RvbUNoaWxkcmVuIiwiY3VycmVudENoaWxkIiwiYmVnaW5uaW5nSW5kZXgiLCJwcmVwZW5kZWQiLCJuZXdDaGlsZCIsImFwcGVuZGVkIiwibW92ZWQiLCJjaGlsZCIsIm5ldyIsInBlcmZvcm1MYXlvdXQiLCJyZWxvYWRJdGVtcyIsInJlbW92ZUFsbExpc3RlbmVycyIsImxpc3RlblRvRWxlbWVudFJlc2l6ZSIsImxheW91dCIsImRlcmVmSW1hZ2VzTG9hZGVkIiwiaW1hZ2VzTG9hZGVkIiwiaW1nTG9hZCIsImNhbmNlbCIsImluaXRpYWxpemVSZXNpemFibGVDaGlsZHJlbiIsInN0cmF0ZWd5IiwibGlzdGVuVG8iLCJkZXN0cm95RXJkIiwidW5pbnN0YWxsIiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImRlc3Ryb3kiLCJzZXRSZWYiLCJyZW5kZXIiLCJ0YWlsIiwibWVtb2l6ZWQiLCJzZWFyY2hDYWNoZSIsIm1heFNpemUiLCJjYXN0RnVuY3Rpb24iLCJuYXRpdmVNaW4iLCJ3cCIsImNhdGVnb3J5SWNvbiIsImZpbGwiLCJibG9ja3MiLCJ1cGRhdGVDYXRlZ29yeSIsImljb24iLCJhcnJheUVhY2giLCJiYXNlQXNzaWduIiwiYmFzZUFzc2lnbkluIiwiY2xvbmVCdWZmZXIiLCJjb3B5QXJyYXkiLCJjb3B5U3ltYm9scyIsImNvcHlTeW1ib2xzSW4iLCJnZXRBbGxLZXlzIiwiaW5pdENsb25lQXJyYXkiLCJpbml0Q2xvbmVCeVRhZyIsImluaXRDbG9uZU9iamVjdCIsImlzTWFwIiwiaXNTZXQiLCJjbG9uZWFibGVUYWdzIiwiaXNGbGF0IiwiaXNGdWxsIiwiaXNGdW5jIiwic3ViVmFsdWUiLCJhc3NvY0luZGV4T2YiLCJwYWlycyIsIkxBUkdFX0FSUkFZX1NJWkUiLCJpc01hc2tlZCIsInJlSXNIb3N0Q3RvciIsImZ1bmNQcm90byIsInJlSXNOYXRpdmUiLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsImlzT3duIiwidW5tYXNrZWQiLCJjb3JlSnNEYXRhIiwibWFza1NyY0tleSIsIklFX1BST1RPIiwiSGFzaCIsImhhc2hDbGVhciIsImhhc2hEZWxldGUiLCJoYXNoR2V0IiwiaGFzaEhhcyIsImhhc2hTZXQiLCJnZXRNYXBEYXRhIiwidHlwZWRBcnJheVRhZ3MiLCJpc1Byb3RvdHlwZSIsIm5hdGl2ZUtleXMiLCJuYXRpdmVLZXlzSW4iLCJpc1Byb3RvIiwiYWxsb2NVbnNhZmUiLCJidWZmZXIiLCJjbG9uZUFycmF5QnVmZmVyIiwiY2xvbmVEYXRhVmlldyIsImNsb25lUmVnRXhwIiwiY2xvbmVTeW1ib2wiLCJjbG9uZVR5cGVkQXJyYXkiLCJkYXRhVmlldyIsImJ5dGVPZmZzZXQiLCJyZUZsYWdzIiwicmVnZXhwIiwic3ltYm9sUHJvdG8iLCJzeW1ib2xWYWx1ZU9mIiwidHlwZWRBcnJheSIsImJhc2VDcmVhdGUiLCJvYmplY3RDcmVhdGUiLCJiYXNlSXNNYXAiLCJub2RlSXNNYXAiLCJiYXNlSXNTZXQiLCJub2RlSXNTZXQiLCJtZW1vaXplQ2FwcGVkIiwicmVQcm9wTmFtZSIsInJlRXNjYXBlQ2hhciIsInF1b3RlIiwic3ViU3RyaW5nIiwibWVtb2l6ZSIsInJlc29sdmVyIiwiQ2FjaGUiLCJiYXNlVG9TdHJpbmciLCJzeW1ib2xUb1N0cmluZyIsImJhc2VTbGljZSIsIm9iamVjdEN0b3JTdHJpbmciLCJiYXNlRmxhdHRlbiIsImlzRmxhdHRlbmFibGUiLCJzcHJlYWRhYmxlU3ltYm9sIiwiaXNDb25jYXRTcHJlYWRhYmxlIiwidGhpc0FyZyIsImNvbnN0YW50IiwibmF0aXZlTm93IiwibGFzdENhbGxlZCIsInN0YW1wIiwiZm9yIiwicSIsInoiLCJBIiwiQiIsIkMiLCJpc01vdW50ZWQiLCJlbnF1ZXVlRm9yY2VVcGRhdGUiLCJlbnF1ZXVlUmVwbGFjZVN0YXRlIiwiZW5xdWV1ZVNldFN0YXRlIiwiRiIsInJlZnMiLCJ1cGRhdGVyIiwiRyIsIkgiLCJpc1JlYWN0Q29tcG9uZW50Iiwic2V0U3RhdGUiLCJmb3JjZVVwZGF0ZSIsIkkiLCJpc1B1cmVSZWFjdENvbXBvbmVudCIsIkoiLCJLIiwiX19zZWxmIiwiX19zb3VyY2UiLCIkJHR5cGVvZiIsIl9vd25lciIsIk8iLCJQIiwiUSIsIlIiLCJrZXlQcmVmaXgiLCJTIiwiViIsIlQiLCJVIiwiYWEiLCJYIiwiTiIsIloiLCJiYSIsIlJlYWN0Q3VycmVudERpc3BhdGNoZXIiLCJSZWFjdEN1cnJlbnRCYXRjaENvbmZpZyIsInN1c3BlbnNlIiwiUmVhY3RDdXJyZW50T3duZXIiLCJJc1NvbWVSZW5kZXJlckFjdGluZyIsIm9ubHkiLCJGcmFnbWVudCIsIlByb2ZpbGVyIiwiUHVyZUNvbXBvbmVudCIsIlN0cmljdE1vZGUiLCJTdXNwZW5zZSIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlQ29udGV4dCIsIl9jYWxjdWxhdGVDaGFuZ2VkQml0cyIsIl9jdXJyZW50VmFsdWUiLCJfY3VycmVudFZhbHVlMiIsIl90aHJlYWRDb3VudCIsIlByb3ZpZGVyIiwiQ29uc3VtZXIiLCJfY29udGV4dCIsImNyZWF0ZUZhY3RvcnkiLCJmb3J3YXJkUmVmIiwiaXNWYWxpZEVsZW1lbnQiLCJsYXp5IiwiX2N0b3IiLCJfc3RhdHVzIiwiX3Jlc3VsdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VEZWJ1Z1ZhbHVlIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWR1Y2VyIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImdldFNoaW0iLCJSZWFjdFByb3BUeXBlcyIsImFueSIsImFycmF5T2YiLCJpbnN0YW5jZU9mIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIm51bWVyYWxzIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJpbml0aWFsaXplIiwiaW5pdGlhbGl6ZWQiLCJzdGFydFZhbCIsImVuZFZhbCIsImRlYyIsImNvdW50RG93biIsImZyYW1lVmFsIiwicHJpbnRWYWx1ZSIsInRpbWVzdGFtcCIsInJBRiIsInBhdXNlZCIsImJhc2VGb3IiLCJjcmVhdGVCYXNlRm9yIiwiZnJvbVJpZ2h0IiwiaXRlcmFibGUiLCJlYWNoRnVuYyIsImJhc2VJc01hdGNoIiwiZ2V0TWF0Y2hEYXRhIiwibWF0Y2hlc1N0cmljdENvbXBhcmFibGUiLCJtYXRjaERhdGEiLCJub0N1c3RvbWl6ZXIiLCJDT01QQVJFX1BBUlRJQUxfRkxBRyIsImVxdWFsQXJyYXlzIiwiZXF1YWxCeVRhZyIsImVxdWFsT2JqZWN0cyIsIm9iamVjdFRhZyIsIm9iaklzQXJyIiwib3RoSXNBcnIiLCJvYmpUYWciLCJvdGhUYWciLCJvYmpJc09iaiIsIm90aElzT2JqIiwiaXNTYW1lVGFnIiwib2JqSXNXcmFwcGVkIiwib3RoSXNXcmFwcGVkIiwib2JqVW53cmFwcGVkIiwib3RoVW53cmFwcGVkIiwic2V0Q2FjaGVBZGQiLCJzZXRDYWNoZUhhcyIsIm1hcFRvQXJyYXkiLCJzZXRUb0FycmF5IiwiY29udmVydCIsIm9ialByb3BzIiwib2JqTGVuZ3RoIiwic2tpcEN0b3IiLCJvYmpDdG9yIiwib3RoQ3RvciIsImlzU3RyaWN0Q29tcGFyYWJsZSIsImhhc0luIiwiaGFzRnVuYyIsImJhc2VQcm9wZXJ0eSIsImJhc2VQcm9wZXJ0eURlZXAiLCJfaW5uZXJTbGlkZXIiLCJfanNvbjJtcSIsIl9kZWZhdWx0UHJvcHMiLCJfaW5uZXJTbGlkZXJVdGlscyIsIl90eXBlb2YiLCJfZXh0ZW5kcyIsImVucXVpcmUiLCJTbGlkZXIiLCJfUmVhY3QkQ29tcG9uZW50IiwiaW5uZXJTbGlkZXIiLCJzbGlja1ByZXYiLCJzbGlja05leHQiLCJkb250QW5pbWF0ZSIsInNsaWNrR29UbyIsInBhdXNlIiwiYXV0b1BsYXkiLCJfcmVzcG9uc2l2ZU1lZGlhSGFuZGxlcnMiLCJxdWVyeSIsInJlZ2lzdGVyIiwiX3RoaXMyIiwicmVzcG9uc2l2ZSIsImJyZWFrcG9pbnRzIiwiYnJlYWtwdCIsImJRdWVyeSIsIm1lZGlhIiwidW5yZWdpc3RlciIsIm5ld1Byb3BzIiwiX3RoaXMzIiwicmVzcCIsInJvd3MiLCJzbGlkZXNQZXJSb3ciLCJuZXdDaGlsZHJlbiIsImN1cnJlbnRXaWR0aCIsInJvdyIsIklubmVyU2xpZGVyIiwiaW5uZXJTbGlkZXJSZWZIYW5kbGVyIiwiX2luaXRpYWxTdGF0ZSIsIl9sb2Rhc2giLCJfY2xhc3NuYW1lcyIsIl90cmFjayIsIl9kb3RzIiwiX2Fycm93cyIsIl9yZXNpemVPYnNlcnZlclBvbHlmaWxsIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwidHJhY2siLCJhZGFwdGl2ZUhlaWdodCIsInNzckluaXQiLCJvbkluaXQiLCJwcmV2U3RhdGUiLCJvbkxhenlMb2FkIiwidXBkYXRlU3RhdGUiLCJhZGFwdEhlaWdodCIsImxhenlMb2FkVGltZXIiLCJzZXRJbnRlcnZhbCIsInByb2dyZXNzaXZlTGF6eUxvYWQiLCJybyIsIm9uV2luZG93UmVzaXplZCIsImNhbGxiYWNrVGltZXJzIiwib2JzZXJ2ZSIsIm9uZm9jdXMiLCJwYXVzZU9uRm9jdXMiLCJvblNsaWRlRm9jdXMiLCJvbmJsdXIiLCJvblNsaWRlQmx1ciIsImFuaW1hdGlvbkVuZENhbGxiYWNrIiwiY2xlYXJJbnRlcnZhbCIsImRldGFjaEV2ZW50IiwiYXV0b3BsYXlUaW1lciIsInNldFRyYWNrU3R5bGUiLCJjaGVja0ltYWdlc0xvYWQiLCJvblJlSW5pdCIsImRlYm91bmNlZFJlc2l6ZSIsInJlc2l6ZVdpbmRvdyIsInVwZGF0ZWRTdGF0ZSIsIl90cmFja1dpZHRoIiwiX3RyYWNrTGVmdCIsImNoaWxkcmVuV2lkdGhzIiwicHJlQ2xvbmVzIiwicG9zdENsb25lcyIsIl9pMiIsIl9pMyIsIl90cmFja1N0eWxlIiwiY2hpbGRyZW5Db3VudCIsInRyYWNrTGVmdCIsImltYWdlcyIsImltYWdlc0NvdW50IiwibG9hZGVkQ291bnQiLCJvbmNsaWNrIiwicHJldkNsaWNrSGFuZGxlciIsIm9uTGF6eUxvYWRFcnJvciIsIl9pbmRleCIsImFzTmF2Rm9yIiwiYmVmb3JlQ2hhbmdlIiwiYWZ0ZXJDaGFuZ2UiLCJfc2xpZGVIYW5kbGVyIiwiZmlyc3RCYXRjaCIsImNsaWNrYWJsZSIsIm9udG91Y2htb3ZlIiwiZGlzYWJsZUJvZHlTY3JvbGwiLCJ0cmlnZ2VyU2xpZGVIYW5kbGVyIiwiZW5hYmxlQm9keVNjcm9sbCIsIm5leHRJbmRleCIsInBsYXlUeXBlIiwicGxheSIsImF1dG9wbGF5U3BlZWQiLCJwYXVzZVR5cGUiLCJkb3RzIiwicHJldkFycm93IiwibmV4dEFycm93IiwidHJhY2tQcm9wcyIsInBhdXNlT25Ib3ZlciIsIm9uTW91c2VFbnRlciIsIm9uVHJhY2tPdmVyIiwib25Nb3VzZUxlYXZlIiwib25UcmFja0xlYXZlIiwib25Nb3VzZU92ZXIiLCJmb2N1c09uU2VsZWN0Iiwic2VsZWN0SGFuZGxlciIsImRvdFByb3BzIiwicGF1c2VPbkRvdHNIb3ZlciIsImNsaWNrSGFuZGxlciIsIm9uRG90c0xlYXZlIiwib25Eb3RzT3ZlciIsIkRvdHMiLCJhcnJvd1Byb3BzIiwiYXJyb3dzIiwiUHJldkFycm93IiwiTmV4dEFycm93IiwidmVydGljYWxIZWlnaHRTdHlsZSIsImNlbnRlclBhZGRpbmdTdHlsZSIsImxpc3RTdHlsZSIsInRvdWNoTW92ZSIsImxpc3RQcm9wcyIsIm9uQ2xpY2siLCJvbk1vdXNlRG93biIsIm9uTW91c2VNb3ZlIiwib25Nb3VzZVVwIiwib25Ub3VjaFN0YXJ0Iiwib25Ub3VjaE1vdmUiLCJvblRvdWNoRW5kIiwib25Ub3VjaENhbmNlbCIsIm9uS2V5RG93biIsImlubmVyU2xpZGVyUHJvcHMiLCJsaXN0UmVmSGFuZGxlciIsIlRyYWNrIiwidHJhY2tSZWZIYW5kbGVyIiwib25FcnJvciIsImRhIiwiZWEiLCJmYSIsImhhIiwiaWEiLCJqYSIsImxhIiwibWEiLCJuYSIsIm9hIiwia2EiLCJwYSIsInFhIiwicmEiLCJzYSIsImV4dHJhY3RFdmVudHMiLCJldmVudFR5cGVzIiwidGEiLCJwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyIsInVhIiwicmVnaXN0cmF0aW9uTmFtZSIsInZhIiwid2EiLCJkZXBlbmRlbmNpZXMiLCJ4YSIsInlhIiwiemEiLCJBYSIsIkJhIiwiQ2EiLCJzdGF0ZU5vZGUiLCJEYSIsIkVhIiwiRmEiLCJHYSIsIkhhIiwiSWEiLCJKYSIsIkthIiwiTGEiLCJNYSIsIk5hIiwiT2EiLCJQYSIsIlFhIiwiYWNjZXB0c0Jvb2xlYW5zIiwiYXR0cmlidXRlTmFtZSIsImF0dHJpYnV0ZU5hbWVzcGFjZSIsIm11c3RVc2VQcm9wZXJ0eSIsInByb3BlcnR5TmFtZSIsInNhbml0aXplVVJMIiwiVWEiLCJWYSIsInhsaW5rSHJlZiIsIldhIiwiWGEiLCJTYSIsIlRhIiwiUmEiLCJzZXRBdHRyaWJ1dGVOUyIsIllhIiwiWmEiLCIkYSIsImFiIiwiYmIiLCJjYiIsImRiIiwiZWIiLCJmYiIsImdiIiwiaGIiLCJpYiIsImpiIiwia2IiLCJsYiIsIm1iIiwibmIiLCJwYiIsInFiIiwiX2RlYnVnT3duZXIiLCJfZGVidWdTb3VyY2UiLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJyZXR1cm4iLCJyYiIsInNiIiwieGIiLCJfdmFsdWVUcmFja2VyIiwic2V0VmFsdWUiLCJzdG9wVHJhY2tpbmciLCJ0YiIsInliIiwiemIiLCJkZWZhdWx0Q2hlY2tlZCIsIl93cmFwcGVyU3RhdGUiLCJpbml0aWFsQ2hlY2tlZCIsIkFiIiwiaW5pdGlhbFZhbHVlIiwiY29udHJvbGxlZCIsIkJiIiwiQ2IiLCJEYiIsIkViIiwiR2IiLCJGYiIsIkhiIiwiZGVmYXVsdFNlbGVjdGVkIiwiSWIiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIkpiIiwiS2IiLCJMYiIsIk1iIiwiTmIiLCJPYiIsIlBiIiwiUWIiLCJNU0FwcCIsImV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uIiwiUmIiLCJTYiIsIlRiIiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uc3RhcnQiLCJ0cmFuc2l0aW9uZW5kIiwiVWIiLCJWYiIsIldiIiwiWGIiLCJZYiIsIlpiIiwiJGIiLCJhYyIsImJjIiwiY2MiLCJkYyIsImFsdGVybmF0ZSIsImVmZmVjdFRhZyIsImVjIiwibWVtb2l6ZWRTdGF0ZSIsImRlaHlkcmF0ZWQiLCJmYyIsImhjIiwiZ2MiLCJpYyIsImpjIiwia2MiLCJsYyIsIl9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNwYXRjaEluc3RhbmNlcyIsImlzUGVyc2lzdGVudCIsInJlbGVhc2UiLCJtYyIsIm5jIiwic3JjRWxlbWVudCIsImNvcnJlc3BvbmRpbmdVc2VFbGVtZW50Iiwib2MiLCJwYyIsInFjIiwidG9wTGV2ZWxUeXBlIiwidGFyZ2V0SW5zdCIsImFuY2VzdG9ycyIsInJjIiwiZXZlbnRTeXN0ZW1GbGFncyIsInNjIiwiY29udGFpbmVySW5mbyIsInRjIiwidWMiLCJ2YyIsIndjIiwieGMiLCJ5YyIsInpjIiwiQWMiLCJCYyIsIkNjIiwiRGMiLCJFYyIsIkZjIiwiR2MiLCJIYyIsIkljIiwiS2MiLCJibG9ja2VkT24iLCJMYyIsImRlbGV0ZSIsIk1jIiwiTmMiLCJQYyIsInVuc3RhYmxlX3J1bldpdGhQcmlvcml0eSIsImh5ZHJhdGUiLCJRYyIsIlJjIiwiU2MiLCJUYyIsIlVjIiwidW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayIsInVuc3RhYmxlX05vcm1hbFByaW9yaXR5IiwiVmMiLCJXYyIsIlljIiwiWmMiLCIkYyIsImFkIiwiYnViYmxlZCIsImNhcHR1cmVkIiwiZXZlbnRQcmlvcml0eSIsImJkIiwiY2QiLCJ1bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSIsImVkIiwiZmQiLCJnZCIsImhkIiwiT2MiLCJqZCIsImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiYm9yZGVySW1hZ2VPdXRzZXQiLCJib3JkZXJJbWFnZVNsaWNlIiwiYm9yZGVySW1hZ2VXaWR0aCIsImJveEZsZXgiLCJib3hGbGV4R3JvdXAiLCJib3hPcmRpbmFsR3JvdXAiLCJjb2x1bW5Db3VudCIsImNvbHVtbnMiLCJmbGV4IiwiZmxleEdyb3ciLCJmbGV4UG9zaXRpdmUiLCJmbGV4U2hyaW5rIiwiZmxleE5lZ2F0aXZlIiwiZmxleE9yZGVyIiwiZ3JpZEFyZWEiLCJncmlkUm93IiwiZ3JpZFJvd0VuZCIsImdyaWRSb3dTcGFuIiwiZ3JpZFJvd1N0YXJ0IiwiZ3JpZENvbHVtbiIsImdyaWRDb2x1bW5FbmQiLCJncmlkQ29sdW1uU3BhbiIsImdyaWRDb2x1bW5TdGFydCIsImxpbmVDbGFtcCIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ0YWJTaXplIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsImZpbGxPcGFjaXR5IiwiZmxvb2RPcGFjaXR5Iiwic3RvcE9wYWNpdHkiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0Iiwic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZU9wYWNpdHkiLCJzdHJva2VXaWR0aCIsImtkIiwibGQiLCJtZCIsIm5kIiwibWVudWl0ZW0iLCJhcmVhIiwiYnIiLCJlbWJlZCIsImhyIiwiaW1nIiwia2V5Z2VuIiwibGluayIsIm1ldGEiLCJ3YnIiLCJvZCIsInBkIiwicWQiLCJyZCIsInNkIiwidWQiLCJ2ZCIsInhkIiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50V2luZG93IiwieWQiLCJjb250ZW50RWRpdGFibGUiLCJEZCIsIkVkIiwiRmQiLCJhdXRvRm9jdXMiLCJHZCIsIl9faHRtbCIsIkhkIiwiSWQiLCJKZCIsIktkIiwicHJldmlvdXNTaWJsaW5nIiwiTGQiLCJNZCIsIk5kIiwiT2QiLCJQZCIsIlFkIiwiUmQiLCJTZCIsIlRkIiwiZGlzcGF0Y2hDb25maWciLCJVZCIsIl90YXJnZXRJbnN0IiwiVmQiLCJXZCIsIlhkIiwiWWQiLCJaZCIsIiRkIiwiYWUiLCJiZSIsImNlIiwiSW50ZXJmYWNlIiwiZWUiLCJldmVudFBvb2wiLCJmZSIsImRlc3RydWN0b3IiLCJkZSIsImdldFBvb2xlZCIsImNhbmNlbEJ1YmJsZSIsInBlcnNpc3QiLCJpc1RydXN0ZWQiLCJnZSIsImhlIiwiaWUiLCJqZSIsImtlIiwiZG9jdW1lbnRNb2RlIiwibGUiLCJtZSIsIm5lIiwib2UiLCJiZWZvcmVJbnB1dCIsImNvbXBvc2l0aW9uRW5kIiwiY29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uVXBkYXRlIiwicGUiLCJxZSIsInJlIiwic2UiLCJ2ZSIsInRlIiwiY2hhciIsInVlIiwid2UiLCJjb2xvciIsImRhdGV0aW1lIiwiZW1haWwiLCJyYW5nZSIsInNlYXJjaCIsInRlbCIsInhlIiwieWUiLCJjaGFuZ2UiLCJ6ZSIsIkFlIiwiQmUiLCJDZSIsIkRlIiwiRWUiLCJGZSIsIkdlIiwiSGUiLCJJZSIsIkplIiwiS2UiLCJMZSIsIk1lIiwiX2lzSW5wdXRFdmVudFN1cHBvcnRlZCIsIk5lIiwiT2UiLCJBbHQiLCJDb250cm9sIiwiTWV0YSIsIlNoaWZ0IiwiUGUiLCJnZXRNb2RpZmllclN0YXRlIiwiUWUiLCJSZSIsIlNlIiwiVGUiLCJVZSIsIlZlIiwiZnJvbUVsZW1lbnQiLCJtb3ZlbWVudFgiLCJtb3ZlbWVudFkiLCJXZSIsInByZXNzdXJlIiwidGFuZ2VudGlhbFByZXNzdXJlIiwidGlsdFgiLCJ0aWx0WSIsInR3aXN0IiwiaXNQcmltYXJ5IiwiWGUiLCJtb3VzZUVudGVyIiwibW91c2VMZWF2ZSIsInBvaW50ZXJFbnRlciIsInBvaW50ZXJMZWF2ZSIsIlllIiwiJGUiLCJhZiIsImJmIiwiY2YiLCJkZiIsImVmIiwiZmYiLCJnZiIsImhmIiwiamYiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsImFuY2hvck5vZGUiLCJnZXRTZWxlY3Rpb24iLCJhbmNob3JPZmZzZXQiLCJmb2N1c05vZGUiLCJmb2N1c09mZnNldCIsImtmIiwib25TZWxlY3QiLCJsZiIsImFuaW1hdGlvbk5hbWUiLCJlbGFwc2VkVGltZSIsInBzZXVkb0VsZW1lbnQiLCJtZiIsImNsaXBib2FyZERhdGEiLCJuZiIsIm9mIiwicGYiLCJFc2MiLCJTcGFjZWJhciIsIkxlZnQiLCJVcCIsIlJpZ2h0IiwiRG93biIsIkRlbCIsIldpbiIsIk1lbnUiLCJBcHBzIiwiU2Nyb2xsIiwiTW96UHJpbnRhYmxlS2V5IiwicWYiLCIxNiIsIjE3IiwiMTgiLCIxOSIsIjI3IiwiMzIiLCIzMyIsIjM0IiwiMzUiLCIzNiIsIjM3IiwiMzgiLCIzOSIsIjQ1IiwiNDYiLCIxMTIiLCIxMTMiLCIxMTQiLCIxMTUiLCIxMTYiLCIxMTciLCIxMTgiLCIxMTkiLCIxMjAiLCIxMjEiLCIxMjIiLCIxMjMiLCIxNDQiLCIxNDUiLCIyMjQiLCJyZiIsInJlcGVhdCIsInNmIiwiZGF0YVRyYW5zZmVyIiwidGYiLCJ1ZiIsInZmIiwiZGVsdGFYIiwid2hlZWxEZWx0YVgiLCJkZWx0YVkiLCJ3aGVlbERlbHRhWSIsIndoZWVsRGVsdGEiLCJkZWx0YVoiLCJkZWx0YU1vZGUiLCJ3ZiIsIlNpbXBsZUV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hhbmdlRXZlbnRQbHVnaW4iLCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iLCJ5ZiIsInpmIiwiQWYiLCJCZiIsIkNmIiwiY29udGV4dFR5cGVzIiwiX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dCIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0IiwiY2hpbGRDb250ZXh0VHlwZXMiLCJEZiIsIkVmIiwiRmYiLCJnZXRDaGlsZENvbnRleHQiLCJHZiIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0IiwiSGYiLCJJZiIsIkpmIiwiS2YiLCJ1bnN0YWJsZV9jYW5jZWxDYWxsYmFjayIsIkxmIiwidW5zdGFibGVfcmVxdWVzdFBhaW50IiwiTWYiLCJ1bnN0YWJsZV9ub3ciLCJOZiIsInVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsIiwiT2YiLCJ1bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSIsIlBmIiwiUWYiLCJSZiIsInVuc3RhYmxlX0xvd1ByaW9yaXR5IiwiU2YiLCJ1bnN0YWJsZV9JZGxlUHJpb3JpdHkiLCJUZiIsIlVmIiwidW5zdGFibGVfc2hvdWxkWWllbGQiLCJWZiIsIldmIiwiWGYiLCJZZiIsIlpmIiwiJGYiLCJhZyIsImJnIiwiY2ciLCJkZyIsImVnIiwiZmciLCJoZyIsImlnIiwiamciLCJrZyIsImxnIiwibWciLCJuZyIsIm9nIiwicGciLCJjaGlsZEV4cGlyYXRpb25UaW1lIiwicWciLCJmaXJzdENvbnRleHQiLCJleHBpcmF0aW9uVGltZSIsInJnIiwic2ciLCJvYnNlcnZlZEJpdHMiLCJyZXNwb25kZXJzIiwidGciLCJ1ZyIsInVwZGF0ZVF1ZXVlIiwiYmFzZVN0YXRlIiwiYmFzZVF1ZXVlIiwic2hhcmVkIiwicGVuZGluZyIsImVmZmVjdHMiLCJ2ZyIsIndnIiwic3VzcGVuc2VDb25maWciLCJwYXlsb2FkIiwieGciLCJ5ZyIsInpnIiwiY2EiLCJBZyIsIkJnIiwiQ2ciLCJEZyIsIkVnIiwiRmciLCJKZyIsIl9yZWFjdEludGVybmFsRmliZXIiLCJHZyIsIkhnIiwiSWciLCJLZyIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsIkxnIiwiY29udGV4dFR5cGUiLCJNZyIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsIk5nIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUiLCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50V2lsbE1vdW50IiwiT2ciLCJQZyIsIl9zdHJpbmdSZWYiLCJRZyIsIlJnIiwibGFzdEVmZmVjdCIsIm5leHRFZmZlY3QiLCJmaXJzdEVmZmVjdCIsIlNnIiwiVGciLCJVZyIsIlZnIiwiV2ciLCJYZyIsIllnIiwiWmciLCIkZyIsImFoIiwiYmgiLCJkaCIsImVoIiwiZmgiLCJnaCIsIm1lbW9pemVkUHJvcHMiLCJyZXZlYWxPcmRlciIsImloIiwicmVzcG9uZGVyIiwiamgiLCJraCIsImxoIiwibWgiLCJuaCIsIm9oIiwicGgiLCJxaCIsInJoIiwic2giLCJ1aCIsInZoIiwid2giLCJsYXN0UmVuZGVyZWRSZWR1Y2VyIiwiYWN0aW9uIiwiZWFnZXJSZWR1Y2VyIiwiZWFnZXJTdGF0ZSIsImxhc3RSZW5kZXJlZFN0YXRlIiwieGgiLCJ5aCIsInpoIiwiQWgiLCJkZXBzIiwiQmgiLCJDaCIsIkRoIiwiRWgiLCJGaCIsIkdoIiwiSGgiLCJJaCIsIkpoIiwiS2giLCJMaCIsIk1oIiwiTmgiLCJyZWFkQ29udGV4dCIsInVzZVJlc3BvbmRlciIsInVzZURlZmVycmVkVmFsdWUiLCJ1c2VUcmFuc2l0aW9uIiwiT2giLCJQaCIsIlFoIiwiUmgiLCJTaCIsIlRoIiwicGVuZGluZ1Byb3BzIiwiVWgiLCJWaCIsIldoIiwiWGgiLCJZaCIsIlpoIiwiJGgiLCJhaSIsImJpIiwiY2kiLCJkaSIsImVpIiwiZmkiLCJVTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSIsImNvbXBvbmVudFdpbGxVcGRhdGUiLCJnaSIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImhpIiwicGVuZGluZ0NvbnRleHQiLCJuaSIsInBpIiwicWkiLCJyZXRyeVRpbWUiLCJqaSIsImZhbGxiYWNrIiwidW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2siLCJraSIsImxpIiwiaXNCYWNrd2FyZHMiLCJyZW5kZXJpbmciLCJyZW5kZXJpbmdTdGFydFRpbWUiLCJ0YWlsRXhwaXJhdGlvbiIsInRhaWxNb2RlIiwibWkiLCJyaSIsInNpIiwid2FzTXVsdGlwbGUiLCJtdWx0aXBsZSIsImNyZWF0ZUVsZW1lbnROUyIsInRpIiwidWkiLCJ2aSIsIndpIiwieGkiLCJ5aSIsInppIiwiQWkiLCJCaSIsIldlYWtTZXQiLCJDaSIsIkZpIiwiRWkiLCJHaSIsIl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlIiwiSGkiLCJJaSIsIkppIiwiS2kiLCJMaSIsIkRpIiwiTWkiLCJOaSIsIk9pIiwiUGkiLCJRaSIsIl9yZWFjdFJvb3RDb250YWluZXIiLCJSaSIsIlNpIiwiVGkiLCJVaSIsIlZpIiwiV2kiLCJYaSIsIllpIiwiWmkiLCIkaSIsImNvbXBvbmVudERpZENhdGNoIiwiYWoiLCJjb21wb25lbnRTdGFjayIsIlJqIiwiYmoiLCJjaiIsImRqIiwia2oiLCJsaiIsIm1qIiwibmoiLCJvaiIsInFqIiwicmoiLCJzaiIsInRqIiwidWoiLCJ2aiIsIndqIiwidGltZW91dE1zIiwieGoiLCJ5aiIsInpqIiwibGFzdEV4cGlyZWRUaW1lIiwiQWoiLCJmaXJzdFBlbmRpbmdUaW1lIiwibGFzdFBpbmdlZFRpbWUiLCJuZXh0S25vd25QZW5kaW5nTGV2ZWwiLCJjYWxsYmFja0V4cGlyYXRpb25UaW1lIiwiY2FsbGJhY2tQcmlvcml0eSIsImNhbGxiYWNrTm9kZSIsIkJqIiwiQ2oiLCJEaiIsIkVqIiwiRmoiLCJHaiIsIkhqIiwiZmluaXNoZWRXb3JrIiwiZmluaXNoZWRFeHBpcmF0aW9uVGltZSIsImxhc3RTdXNwZW5kZWRUaW1lIiwiSWoiLCJ0aW1lb3V0SGFuZGxlIiwiSmoiLCJidXN5TWluRHVyYXRpb25NcyIsImJ1c3lEZWxheU1zIiwiS2oiLCJNaiIsIk5qIiwicGluZ0NhY2hlIiwiT2oiLCJ1YiIsIlBqIiwiWGMiLCJRaiIsIlNqIiwiZmlyc3RTdXNwZW5kZWRUaW1lIiwicmFuZ2VDb3VudCIsIndiIiwiYWN0aXZlRWxlbWVudERldGFjaGVkIiwiZm9jdXNlZEVsZW0iLCJzZWxlY3Rpb25SYW5nZSIsIlRqIiwid2QiLCJjcmVhdGVSYW5nZSIsInNldFN0YXJ0IiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJzZXRFbmQiLCJ2YiIsIlVqIiwiVmoiLCJXaiIsIm9iIiwiWGoiLCJ1bnN0YWJsZV9vYnNlcnZlZEJpdHMiLCJaaiIsInBlbmRpbmdDaGlsZHJlbiIsImFrIiwiYmsiLCJjayIsImRrIiwiZWsiLCJmayIsIkpjIiwiX2ludGVybmFsUm9vdCIsImdrIiwiaWsiLCJoYXNBdHRyaWJ1dGUiLCJoayIsImprIiwia2siLCJ1bm1vdW50Iiwic3RyaW5naWZ5IiwiZm9ybSIsIkxqIiwibGsiLCJFdmVudHMiLCJmaW5kRmliZXJCeUhvc3RJbnN0YW5jZSIsImJ1bmRsZVR5cGUiLCJyZW5kZXJlclBhY2thZ2VOYW1lIiwic3VwcG9ydHNGaWJlciIsImluamVjdCIsIm9uQ29tbWl0RmliZXJSb290Iiwib25Db21taXRGaWJlclVubW91bnQiLCJZaiIsIm92ZXJyaWRlSG9va1N0YXRlIiwib3ZlcnJpZGVQcm9wcyIsInNldFN1c3BlbnNlSGFuZGxlciIsInNjaGVkdWxlVXBkYXRlIiwiY3VycmVudERpc3BhdGNoZXJSZWYiLCJmaW5kSG9zdEluc3RhbmNlQnlGaWJlciIsImZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaCIsInNjaGVkdWxlUmVmcmVzaCIsInNjaGVkdWxlUm9vdCIsInNldFJlZnJlc2hIYW5kbGVyIiwiZ2V0Q3VycmVudEZpYmVyIiwiY3JlYXRlUG9ydGFsIiwiZmx1c2hTeW5jIiwidW5tb3VudENvbXBvbmVudEF0Tm9kZSIsInVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzIiwidW5zdGFibGVfY3JlYXRlUG9ydGFsIiwidW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXIiLCJNZXNzYWdlQ2hhbm5lbCIsInVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlIiwicGVyZm9ybWFuY2UiLCJwb3J0MiIsInBvcnQxIiwib25tZXNzYWdlIiwicG9zdE1lc3NhZ2UiLCJzb3J0SW5kZXgiLCJwcmlvcml0eUxldmVsIiwidW5zdGFibGVfUHJvZmlsaW5nIiwidW5zdGFibGVfY29udGludWVFeGVjdXRpb24iLCJ1bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZSIsInVuc3RhYmxlX25leHQiLCJ1bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbiIsInVuc3RhYmxlX3dyYXBDYWxsYmFjayIsImN1cnJlbnREaXJlY3Rpb24iLCJ0b051bWJlciIsImxhc3RBcmdzIiwibGFzdFRoaXMiLCJtYXhXYWl0IiwidGltZXJJZCIsImxhc3RDYWxsVGltZSIsImxhc3RJbnZva2VUaW1lIiwibGVhZGluZyIsIm1heGluZyIsInRyYWlsaW5nIiwiaW52b2tlRnVuYyIsImxlYWRpbmdFZGdlIiwidGltZXJFeHBpcmVkIiwic2hvdWxkSW52b2tlIiwidGltZVNpbmNlTGFzdENhbGwiLCJ0cmFpbGluZ0VkZ2UiLCJyZW1haW5pbmdXYWl0IiwiZGVib3VuY2VkIiwiaXNJbnZva2luZyIsImZsdXNoIiwiZ2V0U2xpZGVDbGFzc2VzIiwic2xpY2tBY3RpdmUiLCJzbGlja0NlbnRlciIsInNsaWNrQ2xvbmVkIiwiZ2V0S2V5IiwiZmFsbGJhY2tLZXkiLCJyZW5kZXJTbGlkZXMiLCJwcmVDbG9uZVNsaWRlcyIsInBvc3RDbG9uZVNsaWRlcyIsImNoaWxkT25DbGlja09wdGlvbnMiLCJjaGlsZFN0eWxlIiwiZ2V0U2xpZGVTdHlsZSIsInNsaWRlQ2xhc3MiLCJzbGlkZUNsYXNzZXMiLCJvdXRsaW5lIiwicHJlQ2xvbmVObyIsIl9SZWFjdCRQdXJlQ29tcG9uZW50IiwibW91c2VFdmVudHMiLCJsZWZ0Qm91bmQiLCJyaWdodEJvdW5kIiwiZG90T3B0aW9ucyIsImN1c3RvbVBhZ2luZyIsImFwcGVuZERvdHMiLCJkb3RzQ2xhc3MiLCJfY3JlYXRlQ2xhc3MiLCJwcmV2Q2xhc3NlcyIsInByZXZIYW5kbGVyIiwicHJldkFycm93UHJvcHMiLCJjdXN0b21Qcm9wcyIsIl9SZWFjdCRQdXJlQ29tcG9uZW50MiIsIm5leHRDbGFzc2VzIiwibmV4dEhhbmRsZXIiLCJuZXh0QXJyb3dQcm9wcyIsIk1hcFNoaW0iLCJnZXRJbmRleCIsImNsYXNzXzEiLCJfX2VudHJpZXNfXyIsImN0eCIsImdsb2JhbCQxIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lJDEiLCJ0cmFuc2l0aW9uS2V5cyIsIm11dGF0aW9uT2JzZXJ2ZXJTdXBwb3J0ZWQiLCJNdXRhdGlvbk9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyIiwiY29ubmVjdGVkXyIsIm11dGF0aW9uRXZlbnRzQWRkZWRfIiwibXV0YXRpb25zT2JzZXJ2ZXJfIiwib2JzZXJ2ZXJzXyIsIm9uVHJhbnNpdGlvbkVuZF8iLCJyZWZyZXNoIiwibGVhZGluZ0NhbGwiLCJ0cmFpbGluZ0NhbGwiLCJyZXNvbHZlUGVuZGluZyIsInRpbWVvdXRDYWxsYmFjayIsInRocm90dGxlIiwiYWRkT2JzZXJ2ZXIiLCJvYnNlcnZlciIsImNvbm5lY3RfIiwicmVtb3ZlT2JzZXJ2ZXIiLCJvYnNlcnZlcnMiLCJkaXNjb25uZWN0XyIsInVwZGF0ZU9ic2VydmVyc18iLCJhY3RpdmVPYnNlcnZlcnMiLCJnYXRoZXJBY3RpdmUiLCJoYXNBY3RpdmUiLCJicm9hZGNhc3RBY3RpdmUiLCJjaGlsZExpc3QiLCJjaGFyYWN0ZXJEYXRhIiwic3VidHJlZSIsImRpc2Nvbm5lY3QiLCJfYiIsImdldEluc3RhbmNlIiwiaW5zdGFuY2VfIiwiZGVmaW5lQ29uZmlndXJhYmxlIiwiZ2V0V2luZG93T2YiLCJlbXB0eVJlY3QiLCJjcmVhdGVSZWN0SW5pdCIsInRvRmxvYXQiLCJnZXRCb3JkZXJzU2l6ZSIsInBvc2l0aW9ucyIsImdldEhUTUxFbGVtZW50Q29udGVudFJlY3QiLCJjbGllbnRXaWR0aCIsImNsaWVudEhlaWdodCIsInBhZGRpbmdzIiwicG9zaXRpb25zXzEiLCJnZXRQYWRkaW5ncyIsImhvcml6UGFkIiwidmVydFBhZCIsImJvdHRvbSIsImlzRG9jdW1lbnRFbGVtZW50IiwidmVydFNjcm9sbGJhciIsImhvcml6U2Nyb2xsYmFyIiwiaXNTVkdHcmFwaGljc0VsZW1lbnQiLCJTVkdHcmFwaGljc0VsZW1lbnQiLCJTVkdFbGVtZW50IiwiZ2V0QkJveCIsImdldENvbnRlbnRSZWN0IiwiYmJveCIsImdldFNWR0NvbnRlbnRSZWN0IiwiUmVzaXplT2JzZXJ2YXRpb24iLCJicm9hZGNhc3RXaWR0aCIsImJyb2FkY2FzdEhlaWdodCIsImNvbnRlbnRSZWN0XyIsImlzQWN0aXZlIiwiYnJvYWRjYXN0UmVjdCIsIlJlc2l6ZU9ic2VydmVyRW50cnkiLCJyZWN0SW5pdCIsIkNvbnN0ciIsImNvbnRlbnRSZWN0IiwiRE9NUmVjdFJlYWRPbmx5IiwiUmVzaXplT2JzZXJ2ZXJTUEkiLCJjb250cm9sbGVyIiwiY2FsbGJhY2tDdHgiLCJhY3RpdmVPYnNlcnZhdGlvbnNfIiwib2JzZXJ2YXRpb25zXyIsImNhbGxiYWNrXyIsImNvbnRyb2xsZXJfIiwiY2FsbGJhY2tDdHhfIiwiRWxlbWVudCIsIm9ic2VydmF0aW9ucyIsInVub2JzZXJ2ZSIsImNsZWFyQWN0aXZlIiwib2JzZXJ2YXRpb24iLCJSZXNpemVPYnNlcnZlciIsImNhbWVsMmh5cGhlbiIsIm9iajJtcSIsIm1xIiwiZmVhdHVyZXMiLCJmZWF0dXJlIiwiaXNEaW1lbnNpb24iLCJNZWRpYVF1ZXJ5RGlzcGF0Y2giLCJNZWRpYVF1ZXJ5IiwiVXRpbCIsIm1hdGNoTWVkaWEiLCJxdWVyaWVzIiwiYnJvd3NlcklzSW5jYXBhYmxlIiwic2hvdWxkRGVncmFkZSIsImlzVW5jb25kaXRpb25hbCIsImFkZEhhbmRsZXIiLCJyZW1vdmVIYW5kbGVyIiwiUXVlcnlIYW5kbGVyIiwibXFsIiwiYXNzZXNzIiwiYWRkTGlzdGVuZXIiLCJjb25zdHVjdG9yIiwiZXF1YWxzIiwicmVtb3ZlTGlzdGVuZXIiLCJkZWZlclNldHVwIiwiaW5pdGlhbGlzZWQiLCJ1bm1hdGNoIiwibmVzdGVkIiwid2VicGFja0NvbnRleHQiLCJyZXEiLCJ3ZWJwYWNrQ29udGV4dFJlc29sdmUiLCJPdXRsYXllciIsImNvbXBhdE9wdGlvbnMiLCJmaXRXaWR0aCIsIl9yZXNldExheW91dCIsIl9nZXRNZWFzdXJlbWVudCIsIm1lYXN1cmVDb2x1bW5zIiwiY29sWXMiLCJjb2xzIiwibWF4WSIsImhvcml6b250YWxDb2xJbmRleCIsImdldENvbnRhaW5lcldpZHRoIiwiY29sdW1uV2lkdGgiLCJmaXJzdEl0ZW0iLCJpdGVtcyIsImZpcnN0SXRlbUVsZW0iLCJjb250YWluZXJXaWR0aCIsImd1dHRlciIsIl9nZXRPcHRpb24iLCJfZ2V0SXRlbUxheW91dFBvc2l0aW9uIiwiaXRlbSIsImNvbFNwYW4iLCJjb2xQb3NpdGlvbiIsImhvcml6b250YWxPcmRlciIsInNldEhlaWdodCIsInNldE1heCIsIl9nZXRUb3BDb2xQb3NpdGlvbiIsImNvbEdyb3VwIiwiX2dldFRvcENvbEdyb3VwIiwibWluaW11bVkiLCJncm91cENvdW50IiwiX2dldENvbEdyb3VwWSIsImdyb3VwQ29sWXMiLCJfZ2V0SG9yaXpvbnRhbENvbFBvc2l0aW9uIiwiaGFzU2l6ZSIsIl9tYW5hZ2VTdGFtcCIsInN0YW1wU2l6ZSIsIl9nZXRFbGVtZW50T2Zmc2V0IiwiZmlyc3RYIiwibGFzdFgiLCJmaXJzdENvbCIsImxhc3RDb2wiLCJzdGFtcE1heFkiLCJfZ2V0Q29udGFpbmVyU2l6ZSIsIl9nZXRDb250YWluZXJGaXRXaWR0aCIsInVudXNlZENvbHMiLCJuZWVkc1Jlc2l6ZUxheW91dCIsInByZXZpb3VzV2lkdGgiLCJ1dGlscyIsIkl0ZW0iLCJHVUlEIiwiaW5zdGFuY2VzIiwicXVlcnlFbGVtZW50IiwiZ2V0UXVlcnlFbGVtZW50IiwiJGVsZW1lbnQiLCJvdXRsYXllckdVSUQiLCJfY3JlYXRlIiwiY29udGFpbmVyU3R5bGUiLCJpbml0TGF5b3V0Iiwib3JpZ2luTGVmdCIsIm9yaWdpblRvcCIsInJlc2l6ZSIsInJlc2l6ZUNvbnRhaW5lciIsInRyYW5zaXRpb25EdXJhdGlvbiIsImhpZGRlblN0eWxlIiwidmlzaWJsZVN0eWxlIiwic3ViY2xhc3MiLCJQYXJlbnQiLCJTdWJDbGFzcyIsIm9sZE9wdGlvbiIsImhvcml6b250YWwiLCJsYXlvdXRJbnN0YW50Iiwic3RhbXBzIiwiYmluZFJlc2l6ZSIsIl9pdGVtaXplIiwiaXRlbUVsZW1zIiwiX2ZpbHRlckZpbmRJdGVtRWxlbWVudHMiLCJmaWx0ZXJGaW5kRWxlbWVudHMiLCJnZXRJdGVtRWxlbWVudHMiLCJfbWFuYWdlU3RhbXBzIiwiaXNJbnN0YW50IiwiX2lzTGF5b3V0SW5pdGVkIiwibGF5b3V0SXRlbXMiLCJfaW5pdCIsIl9nZXRJdGVtc0ZvckxheW91dCIsIl9sYXlvdXRJdGVtcyIsIl9wb3N0TGF5b3V0IiwiaXNJZ25vcmVkIiwiX2VtaXRDb21wbGV0ZU9uSXRlbXMiLCJpc0xheW91dEluc3RhbnQiLCJfcHJvY2Vzc0xheW91dFF1ZXVlIiwidXBkYXRlU3RhZ2dlciIsIl9wb3NpdGlvbkl0ZW0iLCJzdGFnZ2VyIiwibXNVbml0cyIsImdldE1pbGxpc2Vjb25kcyIsImdvVG8iLCJtb3ZlVG8iLCJfc2V0Q29udGFpbmVyTWVhc3VyZSIsImlzV2lkdGgiLCJlbGVtU2l6ZSIsIm9uQ29tcGxldGUiLCJkaXNwYXRjaEV2ZW50IiwiZG9uZUNvdW50IiwiZW1pdEFyZ3MiLCIkZXZlbnQiLCJpZ25vcmUiLCJnZXRJdGVtIiwidW5pZ25vcmUiLCJfZmluZCIsInVuc3RhbXAiLCJyZW1vdmVGcm9tIiwiX2dldEJvdW5kaW5nUmVjdCIsImJvdW5kaW5nUmVjdCIsIl9ib3VuZGluZ1JlY3QiLCJ0aGlzUmVjdCIsImhhbmRsZUV2ZW50IiwiaXNSZXNpemVCb3VuZCIsInVuYmluZFJlc2l6ZSIsIm9ucmVzaXplIiwiZGVib3VuY2VNZXRob2QiLCJhZGRJdGVtcyIsInJldmVhbCIsInByZXZpb3VzSXRlbXMiLCJyZXZlYWxJdGVtRWxlbWVudHMiLCJnZXRJdGVtcyIsImhpZGVJdGVtRWxlbWVudHMiLCJyZW1vdmVJdGVtcyIsIkxheW91dCIsImh0bWxJbml0IiwiYnJpZGdldCIsImFycmF5U2xpY2UiLCJhcnkiLCJnZXRQYXJlbnQiLCJmZkVsZW1zIiwiY2hpbGRFbGVtcyIsIl9jbGFzcyIsIm1ldGhvZE5hbWUiLCJ0aW1lb3V0TmFtZSIsImRvY1JlYWR5IiwidG9EYXNoZWQiLCIkMSIsIiQyIiwiV2lkZ2V0Q2xhc3MiLCJkYXNoZWROYW1lc3BhY2UiLCJkYXRhQXR0ckVsZW1zIiwianNEYXNoRWxlbXMiLCJkYXRhT3B0aW9uc0F0dHIiLCJtYXRjaGVzTWV0aG9kIiwiRWxlbVByb3RvIiwicHJlZml4ZXMiLCJkb2NFbGVtU3R5bGUiLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJ0cmFuc2Zvcm1Qcm9wZXJ0eSIsInRyYW5zaXRpb25FbmRFdmVudCIsInZlbmRvclByb3BlcnRpZXMiLCJ0cmFuc2l0aW9uRGVsYXkiLCJfdHJhbnNuIiwiaW5nUHJvcGVydGllcyIsImNsZWFuIiwiZWxlbVN0eWxlIiwiZ2V0UG9zaXRpb24iLCJpc09yaWdpbkxlZnQiLCJpc09yaWdpblRvcCIsInhWYWx1ZSIsInlWYWx1ZSIsImxheW91dFNpemUiLCJsYXlvdXRQb3NpdGlvbiIsInhQYWRkaW5nIiwieFByb3BlcnR5IiwieFJlc2V0UHJvcGVydHkiLCJnZXRYVmFsdWUiLCJ5UGFkZGluZyIsInlQcm9wZXJ0eSIsInlSZXNldFByb3BlcnR5IiwiZ2V0WVZhbHVlIiwiaXNIb3Jpem9udGFsIiwicGVyY2VudFBvc2l0aW9uIiwiX3RyYW5zaXRpb25UbyIsImRpZE5vdE1vdmUiLCJzZXRQb3NpdGlvbiIsImlzVHJhbnNpdGlvbmluZyIsInRyYW5zWCIsInRyYW5zWSIsInRyYW5zaXRpb25TdHlsZSIsImdldFRyYW5zbGF0ZSIsIm9uVHJhbnNpdGlvbkVuZCIsImlzQ2xlYW5pbmciLCJfbm9uVHJhbnNpdGlvbiIsIl9yZW1vdmVTdHlsZXMiLCJfdHJhbnNpdGlvbiIsImVuYWJsZVRyYW5zaXRpb24iLCJ0cmFuc2l0aW9uUHJvcHMiLCJzdGFnZ2VyRGVsYXkiLCJvbndlYmtpdFRyYW5zaXRpb25FbmQiLCJvbnRyYW5zaXRpb25lbmQiLCJvbm90cmFuc2l0aW9uZW5kIiwiZGFzaGVkVmVuZG9yUHJvcGVydGllcyIsImlzRW1wdHlPYmoiLCJkaXNhYmxlVHJhbnNpdGlvbiIsInJlbW92ZVRyYW5zaXRpb25TdHlsZXMiLCJjbGVhblN0eWxlIiwiY2xlYW5UcmFuc2l0aW9uU3R5bGUiLCJyZW1vdmVFbGVtIiwiaXNIaWRkZW4iLCJnZXRIaWRlUmV2ZWFsVHJhbnNpdGlvbkVuZFByb3BlcnR5Iiwib25SZXZlYWxUcmFuc2l0aW9uRW5kIiwic3R5bGVQcm9wZXJ0eSIsIm9wdGlvblN0eWxlIiwib25IaWRlVHJhbnNpdGlvbkVuZCIsIkltYWdlc0xvYWRlZCIsIm9uQWx3YXlzIiwicXVlcnlFbGVtIiwiZ2V0SW1hZ2VzIiwianFEZWZlcnJlZCIsImFkZEVsZW1lbnRJbWFnZXMiLCJhZGRJbWFnZSIsImJhY2tncm91bmQiLCJhZGRFbGVtZW50QmFja2dyb3VuZEltYWdlcyIsImVsZW1lbnROb2RlVHlwZXMiLCJjaGlsZEltZ3MiLCIxMSIsIkxvYWRpbmdJbWFnZSIsIkJhY2tncm91bmQiLCJJbWFnZSIsInJlVVJMIiwiYmFja2dyb3VuZEltYWdlIiwiYWRkQmFja2dyb3VuZCIsImxvYWRpbmdJbWFnZSIsInByb2dyZXNzZWRDb3VudCIsImhhc0FueUJyb2tlbiIsImlzTG9hZGVkIiwiZGVidWciLCJsb2ciLCJpc0NvbXBsZXRlIiwianFNZXRob2QiLCJnZXRJc0ltYWdlQ29tcGxldGUiLCJjb25maXJtIiwibmF0dXJhbFdpZHRoIiwicHJveHlJbWFnZSIsInVuYmluZEV2ZW50cyIsIm1ha2VKUXVlcnlQbHVnaW4iLCJjcmVhdGVBc3NpZ25lciIsImJhc2VSZXN0IiwiaXNJdGVyYXRlZUNhbGwiLCJhc3NpZ25lciIsInNvdXJjZXMiLCJndWFyZCIsImVsZW1lbnRVdGlsc01ha2VyIiwibGlzdGVuZXJIYW5kbGVyTWFrZXIiLCJpZEdlbmVyYXRvck1ha2VyIiwiaWRIYW5kbGVyTWFrZXIiLCJyZXBvcnRlck1ha2VyIiwiYnJvd3NlckRldGVjdG9yIiwiYmF0Y2hQcm9jZXNzb3JNYWtlciIsInN0YXRlSGFuZGxlciIsIm9iamVjdFN0cmF0ZWd5TWFrZXIiLCJzY3JvbGxTdHJhdGVneU1ha2VyIiwiaXNDb2xsZWN0aW9uIiwiaXNFbGVtZW50IiwiZ2V0T3B0aW9uIiwiaWRIYW5kbGVyIiwiaWRHZW5lcmF0b3IiLCJkZWZhdWx0SWRIYW5kbGVyIiwicmVwb3J0ZXIiLCJiYXRjaFByb2Nlc3NvciIsImdsb2JhbE9wdGlvbnMiLCJjYWxsT25BZGQiLCJkZXRlY3Rpb25TdHJhdGVneSIsImV2ZW50TGlzdGVuZXJIYW5kbGVyIiwiZWxlbWVudFV0aWxzIiwiZGVzaXJlZFN0cmF0ZWd5IiwiaW1wb3J0YW50Q3NzUnVsZXMiLCJzdHJhdGVneU9wdGlvbnMiLCJpbXBvcnRhbnQiLCJvblJlYWR5Q2FsbGJhY2tzIiwib25SZXNpemVDYWxsYmFjayIsImVsZW1lbnRzUmVhZHkiLCJvblJlYWR5Q2FsbGJhY2siLCJnZXRTdGF0ZSIsImluaXRTdGF0ZSIsImlzRGV0ZWN0YWJsZSIsImlzQnVzeSIsIm1hcmtCdXN5IiwibWFrZURldGVjdGFibGUiLCJtYXJrQXNEZXRlY3RhYmxlIiwic3RhcnRTaXplIiwiY2xlYW5TdGF0ZSIsImluaXREb2N1bWVudCIsInRhcmdldERvY3VtZW50IiwiYnVzeSIsImV2ZW50TGlzdGVuZXJzIiwiZ2V0TGlzdGVuZXJzIiwiaWRDb3VudCIsImdlbmVyYXRlIiwicXVpZXQiLCJhdHRhY2hGdW5jdGlvbiIsIkJhdGNoIiwiYmF0Y2giLCJ0b3BMZXZlbCIsImJvdHRvbUxldmVsIiwibGV2ZWwiLCJhc3luY1Byb2Nlc3MiLCJhdXRvUHJvY2VzcyIsImFzeW5jRnJhbWVIYW5kbGVyIiwiaXNQcm9jZXNzaW5nIiwicHJvY2Vzc0JhdGNoIiwicHJvY2Vzc2luZ0JhdGNoIiwicHJvY2Vzc0JhdGNoQXN5bmMiLCJsb2NhbEFzeW5jUHJvY2VzcyIsImJ1aWxkQ3NzVGV4dFN0cmluZyIsInJ1bGVzIiwic2VwZXJhdG9yIiwiZ2V0T2JqZWN0IiwiT0JKRUNUX1NUWUxFIiwicG9zaXRpb25DaGVja1BlcmZvcm1lZCIsIm11dGF0ZURvbSIsImFsdGVyUG9zaXRpb25TdHlsZXMiLCJyZW1vdmVSZWxhdGl2ZVN0eWxlcyIsImdldE51bWVyaWNhbFZhbHVlIiwiZ2V0RG9jdW1lbnQiLCJjaGVja0Zvck9iamVjdERvY3VtZW50VGltZW91dElkIiwib2JqZWN0RG9jdW1lbnQiLCJpbmplY3RPYmplY3QiLCJsaXN0ZW5lclByb3h5IiwiaGFzU3RhdGUiLCJzY3JvbGxiYXJTaXplcyIsIndpZHRoU2l6ZSIsImhlaWdodFNpemUiLCJnZXRTY3JvbGxiYXJTaXplcyIsInN0eWxlSWQiLCJjb250YWluZXJDbGFzcyIsImNvbnRhaW5lckFuaW1hdGlvbkNsYXNzIiwiY29udGFpbmVyQW5pbWF0aW9uQWN0aXZlQ2xhc3MiLCJzdHlsZUVsZW1lbnQiLCJpbmplY3RTdHlsZSIsImluamVjdFNjcm9sbFN0eWxlIiwiYWRkRXZlbnQiLCJnZXRFeHBhbmRFbGVtZW50IiwiZ2V0U2hyaW5rRWxlbWVudCIsImlzVW5yZW5kZXJlZCIsImVsZW1lbnRTdHlsZSIsIndpZHRoQ1NTIiwiaGVpZ2h0Q1NTIiwic3RvcmVTdHlsZSIsInN0b3JlQ3VycmVudFNpemUiLCJsYXN0V2lkdGgiLCJsYXN0SGVpZ2h0IiwiZ2V0V2lkdGhPZmZzZXQiLCJnZXRIZWlnaHRPZmZzZXQiLCJnZXRFeHBhbmRXaWR0aCIsImdldEV4cGFuZEhlaWdodCIsInBvc2l0aW9uU2Nyb2xsYmFycyIsInNocmluayIsImV4cGFuZFdpZHRoIiwiZXhwYW5kSGVpZ2h0Iiwic2hyaW5rV2lkdGgiLCJnZXRTaHJpbmtXaWR0aCIsInNocmlua0hlaWdodCIsImdldFNocmlua0hlaWdodCIsImluamVjdENvbnRhaW5lckVsZW1lbnQiLCJhZGRBbmltYXRpb25DbGFzcyIsIm9uQW5pbWF0aW9uU3RhcnQiLCJvblJlbmRlcmVkIiwiaW5qZWN0U2Nyb2xsRWxlbWVudHMiLCJyb290Q29udGFpbmVyIiwic2Nyb2xsYmFyV2lkdGgiLCJzY3JvbGxiYXJIZWlnaHQiLCJjb250YWluZXJDb250YWluZXJTdHlsZSIsImV4cGFuZFN0eWxlIiwic2hyaW5rU3R5bGUiLCJleHBhbmRDaGlsZFN0eWxlIiwic2hyaW5rQ2hpbGRTdHlsZSIsImNvbnRhaW5lckNvbnRhaW5lciIsImV4cGFuZENoaWxkIiwic2hyaW5rQ2hpbGQiLCJvbkV4cGFuZFNjcm9sbCIsIm9uU2hyaW5rU2Nyb2xsIiwib25FeHBhbmQiLCJvblNocmluayIsInJlZ2lzdGVyTGlzdGVuZXJzQW5kUG9zaXRpb25FbGVtZW50cyIsInVwZGF0ZUNoaWxkU2l6ZXMiLCJnZXRFeHBhbmRDaGlsZEVsZW1lbnQiLCJ1cGRhdGVEZXRlY3RvckVsZW1lbnRzIiwic2l6ZUNoYW5nZWQiLCJhcmVFbGVtZW50c0luamVjdGVkIiwibm90aWZ5TGlzdGVuZXJzSWZOZWVkZWQiLCJsYXN0Tm90aWZpZWRXaWR0aCIsImxhc3ROb3RpZmllZEhlaWdodCIsImhhbmRsZVNjcm9sbCIsImZpbmFsaXplRG9tTXV0YXRpb24iLCJpbnN0YWxsIiwiaXNJbkRvY3VtZW50IiwiaXNEZXRhY2hlZCIsInRpbWVXYWl0aW5nIiwiUmVhY3ROb29wVXBkYXRlUXVldWUiLCJfYXNzaWduIiwiZW1wdHlPYmplY3QiLCJfaW52YXJpYW50IiwiUmVhY3RDb21wb25lbnQiLCJpbmplY3RlZE1peGlucyIsIlJlYWN0Q2xhc3NJbnRlcmZhY2UiLCJtaXhpbnMiLCJzdGF0aWNzIiwiZ2V0SW5pdGlhbFN0YXRlIiwidXBkYXRlQ29tcG9uZW50IiwiUmVhY3RDbGFzc1N0YXRpY0ludGVyZmFjZSIsIlJFU0VSVkVEX1NQRUNfS0VZUyIsIm1peFNwZWNJbnRvQ29tcG9uZW50IiwiY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24iLCJzcGVjUG9saWN5IiwibWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQiLCJhdXRvYmluZCIsInZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUiLCJpc0FscmVhZHlEZWZpbmVkIiwiUmVhY3RDbGFzc01peGluIiwiYXV0b0JpbmRQYWlycyIsIl9fcmVhY3RBdXRvQmluZFBhaXJzIiwiaXNSZWFjdENsYXNzTWV0aG9kIiwiY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIiwibWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyIsInR3byIsImJpbmRBdXRvQmluZE1ldGhvZCIsImNvbXBvbmVudCIsIklzTW91bnRlZFByZU1peGluIiwiX19pc01vdW50ZWQiLCJJc01vdW50ZWRQb3N0TWl4aW4iLCJyZXBsYWNlU3RhdGUiLCJuZXdTdGF0ZSIsIlJlYWN0Q2xhc3NDb21wb25lbnQiLCJhdXRvQmluZEtleSIsImJpbmRBdXRvQmluZE1ldGhvZHMiLCJpbml0aWFsU3RhdGUiLCJjb25kaXRpb24iLCJhcmdJbmRleCIsImZyYW1lc1RvUG9wIiwiaWNvbnMiLCJjYXRlZ29yeSIsInhtbG5zIiwidmlld0JveCIsIngyIiwieTIiLCJncmFkaWVudFVuaXRzIiwic3RvcC1jb2xvciIsImFjY29yZGlvbiIsImN4IiwiY3kiLCJjbGFzcyIsImNvbnRlbnRib3giLCJ1c2VycHJvZmlsZSIsInN0YXJyYXRpbmciLCJwb2ludHMiLCJpbWFnZWNhcm91c2VsIiwiaW1hZ2VzbGlkZXIiLCJwb3N0bGlzdCIsInBvc3RncmlkIiwicG9zdGNhcm91c2VsIiwiaWNvbmJsb2Nrc3BhcmUiLCJpY29ubGlzdCIsImN0YSIsImxvZ29iYWRnZSIsIm5vdGljZSIsInByb2dyZXNzQmFyIiwicHJpY2luZ1RhYmxlIiwicHJpY2luZ0xpc3QiLCJzb2NpYWxTaGFyZSIsInNvY2lhbGxpbmtzIiwidGFicyIsInNoYXBlZGl2aXZlciIsInRlc3RpbW9uaWFsIiwidXBsb2FkIiwic2VjdGlvbkhlYWRlciIsInNlcnZpY2VzIiwiZW1wdHlTcGFjZXMiLCJsYXlvdXRzIiwiZmxpcFgiLCJmbGlwWSIsImVkaXQiLCJibG9ja3NwYXJlX3BsYWNlaG9sZGVyIiwiZ2V0Q2F0ZWdvcmllcyIsInNldENhdGVnb3JpZXMiLCJzbHVnIiwiX18iLCJpMThuIiwiYWRkRmlsdGVyIiwiY3JlYXRlSGlnaGVyT3JkZXJDb21wb25lbnQiLCJjb21wb3NlIiwiYWxsb3dlZEJsb2NrcyIsIndpdGhBdHRyaWJ1dGVzIiwiQmxvY2tFZGl0IiwiYmxvY2tOYW1lIiwiaW5jbHVkZXMiLCJibG9ja3NwYXJlIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsIkljb25MaXN0Iiwic3VwZXIiLCJpc09wZW4iLCJmaWx0ZXJUZXh0Iiwic2hvd0ljb25zIiwiZGlzYWJsZVRvZ2dsZSIsImNvbG9yU2V0dGluZ3MiLCJpY29uQ29sb3IiLCJvbkNvbG9yQ2hhbmdlIiwiZmluYWxEYXRhIiwiSWNvbkxpc3REYXRhIiwibGFiZWwiLCJUb2dnbGUiLCJvbkNoYW5nZSIsIkNvbG9yIiwicGxhY2Vob2xkZXIiLCJhdXRvQ29tcGxldGUiLCJ3aXRoU2VsZWN0Iiwid2l0aERpc3BhdGNoIiwiY29tcG9uZW50cyIsIkJ1dHRvbiIsIlBhbmVsQm9keSIsIlNlbGVjdENvbnRyb2wiLCJSYW5nZUNvbnRyb2wiLCJibG9ja0VkaXRvciIsIklubmVyQmxvY2tzIiwiUmljaFRleHQiLCJJbnNwZWN0b3JDb250cm9scyIsIlBhbmVsQ29sb3JTZXR0aW5ncyIsIm93blByb3BzIiwiY2xpZW50SWQiLCJnZXRCbG9ja0hpZXJhcmNoeVJvb3RDbGllbnRJZCIsImdldEJsb2NrIiwiaXNCbG9ja1NlbGVjdGVkIiwiaGFzU2VsZWN0ZWRJbm5lckJsb2NrIiwiYmxvY2siLCJpc1NlbGVjdGVkQmxvY2tJblJvb3QiLCJyb290QmxvY2siLCJyZW1vdmVCbG9jayIsInVwZGF0ZUJsb2NrQXR0cmlidXRlcyIsImZpbmRQYXJlbnRBY2NvcmRpb24iLCJkZXZpY2UiLCJzZXRBdHRyaWJ1dGVzIiwidW5pcXVlSWQiLCJfY2xpZW50IiwiaW5uZXJCbG9ja3MiLCJzZXRHbG9iYWxTZXR0aW5ncyIsInBhcmVudEFjY29yZGlvbiIsInVwZGF0ZVJvb3RCbG9jayIsInVwZGF0ZUl0ZW1OdW1iZXIiLCJpdGVtTnVtYmVyIiwiX29uQ2xpY2tMYWJlbCIsIml0ZW1Ub2dnbGUiLCJkZWZhdWx0VGV4dCIsImZpbGxUeXBlIiwiaGVhZGluZyIsImljb25Qb3NpdGlvbiIsInBhbmVsQ29sb3IiLCJwYW5lbEFjdGl2ZUNvbG9yIiwidGV4dENvbG9yIiwiYWN0aXZlVGV4dENvbG9yIiwicGFuZWxCYWNrR3JvdW5kQ29sb3IiLCJpc1NlbGVjdGVkIiwicGFuZWxfYWN0X2NvbG9yIiwicGFuZWxfY29sb3IiLCJhY3RfcGFuZWxfdGV4dF9jb2xvciIsInBhbmVsX3RleHRfY29sb3IiLCJwYW5lbF9ib2R5X2JnIiwicGFuZWxTdHlsZSIsImJhY2tncm91bmRDb2xvciIsInBhbmVsR2FwIiwidGl0bGUiLCJpbml0aWFsT3BlbiIsInJvbGUiLCJhbGxvd2VkRm9ybWF0cyIsImtlZXBQbGFjZWhvbGRlck9uRm9jdXMiLCJ1cGRhdGVMYWJlbCIsImRhdGEtYmciLCJ0ZW1wbGF0ZSIsImN1c3RvbUZvbnRTaXplIiwidGVtcGxhdGVMb2NrIiwiU2F2ZSIsIm9wZW5GaXJzdEl0ZW0iLCJkZWZhdWx0VGV4dFNpemUiLCJkYXRhLWFjdC1jb2xvciIsImRhdGEtdHh0LWNvbG9yIiwiZGF0YS1hY3RpdmUiLCJkYXRhLXBhbiIsIkNvbnRlbnQiLCJyZWdpc3RlckJsb2NrVHlwZSIsIm1ldGFkYXRhIiwiYWNjb3JkaW9uSXRlbVNldHRpbmdzIiwiZGVzY3JpcHRpb24iLCJzdXBwb3J0cyIsImluc2VydGVyIiwicmV1c2FibGUiLCJFZGl0Iiwic2F2ZSIsIkljb25CdXR0b24iLCJjcmVhdGVCbG9jayIsImluc2VydEJsb2NrIiwiZGVmYXVsdEl0ZW1zIiwiaW5zZXJ0QWNjb3JkaW9uSXRlbSIsIm5ld0Jsb2NrQXR0cmlidXRlcyIsImxhc3RCbG9ja0F0dHJpYnV0ZXMiLCJnZXRBY2NvcmRpb25UZW1wbGF0ZSIsImRhdGEtaXRlbS10b2dnbGUiLCJrZXl3b3JkcyIsImFsaWduIiwiZXhhbXBsZSIsIkFjY29yZGlvbkJsb2NrIiwiQlNCdXR0b24iLCJ0ZXh0QWxpZ24iLCJzZWN0aW9uQWxpZ25tZW50IiwiY2xhc3NuYW1lcyIsIlRvZ2dsZUNvbnRyb2wiLCJCU2J1dHRvblNldHRpbmdzIiwiZW5hYmxlQnV0dG9uQmFja2dyb3VuZENvbG9yIiwiYnV0dG9uQmFja2dyb3VuZENvbG9yIiwib25DaGFuZ2VCdXR0b25Db2xvciIsImJ1dHRvblRleHRDb2xvciIsIm9uQ2hhbmdlQnV0dG9uVGV4dENvbG9yIiwiZW5hYmxlQnV0dG9uU2l6ZSIsImJ1dHRvblNpemUiLCJvbkNoYW5nZUJ1dHRvblNpemUiLCJlbmFibGVCdXR0b25TaGFwZSIsImJ1dHRvblNoYXBlIiwib25DaGFuZ2VCdXR0b25TaGFwZSIsImVuYWJsZUJ1dHRvblN0eWxlIiwiYnV0dG9uU3R5bGUiLCJvbkNoYW5nZUJvcmRlclN0eWxlIiwiZW5hYmxlQnV0dG9uVGFyZ2V0IiwiYnV0dG9uVGFyZ2V0Iiwib25DaGFuZ2VCdXR0b25UYXJnZXQiLCJib3JkZXJDb2xvciIsIm9uY2hhbmdlQm9yZGVyQ29sb3IiLCJib3JkZXJCdG5UZXh0Q29sb3IiLCJvbkNoYW5nZUJvcmRlckJ0blRleHRDb2xvciIsImVuYWJsZUJ0bkJvcmRlcldpZHRoIiwiYnRuQm9yZGVyV2lkdGgiLCJvbmNoYW5nZWJ0bkJvcmRlcldpZHRoIiwiZW5hYmxlQnRuRm9udFdlaWdodCIsImJ0bkZvbnRXZWlnaHQiLCJvbmNoYW5nZUJ0bkZvbnRXZWlnaHQiLCJidXR0b25TaXplT3B0aW9ucyIsImJ1dHRvblNoYXBlT3B0aW9ucyIsImJ1dHRvblN0eWxlT3B0aW9ucyIsImJ0bkZvbnRXaWdodE9wdGlvbnMiLCJHcmFkaWVudENvbG9ycyIsImJhY2tncm91bmRDb2xvcjEiLCJiYWNrZ3JvdW5kQ29sb3IyIiwiZ3JhZGllbnRBbmdsZSIsImNvbG9yTG9jYXRpb24xIiwiY29sb3JMb2NhdGlvbjIiLCJvbkNoYW5nZUJhY2tncm91bmRDb2xvcjEiLCJvbkNoYW5nZUJhY2tncm91bmRDb2xvcjIiLCJvbkNoYW5nZUdyYWRpZW50QW5nbGUiLCJvbkNoYW5nZUNvbG9yTG9jYXRpb24xIiwib25DaGFuZ2VDb2xvckxvY2F0aW9uMiIsIkluc3BlY3RvciIsImVuYWJsZUdyYWRpZW50Iiwib25DaGFuZ2VHcmFkaWVudCIsImJ1dHRvblN0eWxlT3B0aW9uIiwiYnV0dG9uU3R5bGVzIiwiYW5nbGUiLCJsb2NhMSIsImxvY2EyIiwiYnV0dG9uQXR0cmlidXRlcyIsImJ1dHRvblRleHQiLCJidXR0b25VcmwiLCJhdHRyaWJ1dGUiLCJBbGlnbm1lbnRUb29sYmFyIiwiQmxvY2tDb250cm9scyIsIlVSTElucHV0IiwiRGFzaGljb24iLCJidG5TdHlsZSIsIm9uU3VibWl0IiwicmVsIiwiUGFkZGluZyIsInBhZGRpbmdUaXRsZSIsInBhZGRpbmdIZWxwIiwicGFkZGluZ01pbiIsInBhZGRpbmdNYXgiLCJwYWRkaW5nRW5hYmxlIiwib25DaGFuZ2VQYWRkaW5nIiwicGFkZGluZ1RvcE1pbiIsInBhZGRpbmdUb3BNYXgiLCJwYWRkaW5nRW5hYmxlVG9wIiwib25DaGFuZ2VQYWRkaW5nVG9wIiwicGFkZGluZ1JpZ2h0TWluIiwicGFkZGluZ1JpZ2h0TWF4IiwicGFkZGluZ0VuYWJsZVJpZ2h0Iiwib25DaGFuZ2VQYWRkaW5nUmlnaHQiLCJwYWRkaW5nQm90dG9tTWluIiwicGFkZGluZ0JvdHRvbU1heCIsInBhZGRpbmdFbmFibGVCb3R0b20iLCJvbkNoYW5nZVBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdE1pbiIsInBhZGRpbmdMZWZ0TWF4IiwicGFkZGluZ0VuYWJsZUxlZnQiLCJvbkNoYW5nZVBhZGRpbmdMZWZ0IiwicGFkZGluZ1ZlcnRpY2FsIiwicGFkZGluZ0VuYWJsZVZlcnRpY2FsIiwicGFkZGluZ1ZlcnRpY2FsTWluIiwicGFkZGluZ1ZlcnRpY2FsTWF4Iiwib25DaGFuZ2VQYWRkaW5nVmVydGljYWwiLCJwYWRkaW5nSG9yaXpvbnRhbCIsInBhZGRpbmdFbmFibGVIb3Jpem9udGFsIiwicGFkZGluZ0hvcml6b250YWxNaW4iLCJwYWRkaW5nSG9yaXpvbnRhbE1heCIsIm9uQ2hhbmdlUGFkZGluZ0hvcml6b250YWwiLCJoZWxwIiwiTWFyZ2luIiwibWFyZ2luVGl0bGUiLCJtYXJnaW5IZWxwIiwibWFyZ2luTWluIiwibWFyZ2luTWF4IiwibWFyZ2luRW5hYmxlIiwib25DaGFuZ2VNYXJnaW4iLCJtYXJnaW5Ub3BNaW4iLCJtYXJnaW5Ub3BNYXgiLCJtYXJnaW5FbmFibGVUb3AiLCJvbkNoYW5nZU1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbU1pbiIsIm1hcmdpbkJvdHRvbU1heCIsIm1hcmdpbkVuYWJsZUJvdHRvbSIsIm9uQ2hhbmdlTWFyZ2luQm90dG9tIiwiQlNIZWFkZXJTZXR0aW5ncyIsImVuYWJsZUJsb2NrR2FwcyIsImVuYWJsZWhlYWRlcmxheW91dE9wdGlvbiIsImhlYWRlcmxheW91dE9wdGlvbiIsIm9uQ2hhbmdlSGVhZGVyU3R5bGUiLCJ0aXRsZUZvbnRTaXplIiwib25DaGFuZ2V0aXRsZUZvbnRTaXplIiwiaGVhZGVyVGFnT3B0aW9uIiwic3VidGl0bGVGb250U2l6ZSIsIm9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZSIsIm9uQ2hhbmdlSGVhZGVyVGFnIiwiZGFzaENvbG9yIiwiZW5hYmxlaGVhZGVyYm94Q29sb3IiLCJoZWFkZXJib3hDb2xvciIsIm9uQ2hhbmdlYm94Y29sb3IiLCJvbkNoYW5nZURhc2hDb2xvciIsImhlYWRlcnRpdGxlQ29sb3IiLCJvbkNoYW5nZXRpdGxlY29sb3IiLCJ0aXRsZVBhZGRpbmdUb3AiLCJvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcCIsInRpdGxlUGFkZGluZ0JvdHRvbSIsIm9uQ2hhbmdldGl0bGVQYWRkaW5nQm90dG9tIiwic3VidGl0bGVQYWRkaW5nVG9wIiwiaGVhZGVyc3VidGl0bGVDb2xvciIsIm9uQ2hhbmdlc3VidGl0bGVjb2xvciIsIm9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nVG9wIiwic3VidGl0bGVQYWRkaW5nQm90dG9tIiwib25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdCb3R0b20iLCJoZWFkZXJwYWRkaW5nVG9wIiwib25DaGFuZ2VoZWFkZXJwYWRkaW5nVG9wIiwiaGVhZGVycGFkZGluZ1JpZ2h0Iiwib25DaGFuZ2VoZWFkZXJwYWRkaW5nUmlnaHQiLCJoZWFkZXJwYWRkaW5nQm90dG9tIiwib25DaGFuZ2VoZWFkZXJwYWRkaW5nQm90dG9tIiwiaGVhZGVycGFkZGluZ0xlZnQiLCJvbkNoYW5nZWhlYWRlcnBhZGRpbmdMZWZ0IiwiaGVhZGVybWFyZ2luVG9wIiwib25DaGFuZ2VoZWFkZXJtYXJnaW5Ub3AiLCJoZWFkZXJtYXJnaW5Cb3R0b20iLCJvbkNoYW5nZWhlYWRlcm1hcmdpbkJvdHRvbSIsImhlYWRlclN0eWxlT3B0aW9uIiwiaGVhZGVyVGFnU2VsZWN0T3B0aW9uIiwiTWVkaWFVcGxvYWQiLCJvcGFjaXR5UmF0aW8iLCJjdGFCYWNrR3JvdW5kQ29sb3IiLCJzaG93SW1hZ2UiLCJpbWdVUkwiLCJpbWdJRCIsImltZ0FsdCIsImJhY2tncm91bmRGaXgiLCJib3JkZXJSYWRpdXMiLCJlbmFibGVCb3hTaGFkb3ciLCJ4T2Zmc2V0IiwieU9mZnNldCIsInNwcmVhZCIsInNoYWRvd0NvbG9yIiwib25SZW1vdmVJbWFnZSIsImFsdCIsImJveFNoYWRvd1N0eWxlcyIsImJveFN0eWxlcyIsImJveFNoYWRvdyIsIm1hcmdpblBhZGRpbmdTdHlsZXMiLCJDYWxsVG9BY3Rpb24iLCJlZGl0U3R5bGVzIiwicGFkZGluZ01hcmdpbiIsImJsb2NrU3R5bGVzIiwiQlNIZWFkZXIiLCJzZWN0aW9uSGVhZGVyQXR0cmlidXRlcyIsImhlYWRlclRpdGxlIiwiaGVhZGVyU3ViVGl0bGUiLCJoZWFkZXJ0aXRsZURhc2hDb2xvciIsIm1hcmdpblBhZGRpbmciLCJkYXNoQ29sb3JzIiwiZGFzaFN0eWxlIiwidGl0bGVDb2xvciIsInRpdGxlU3R5bGVzIiwiZm9udFNpemUiLCJzdWJ0aXRsZUNvbG9yIiwic3VidGl0bGVTdHlsZXMiLCJib3hTaGFkb3dBdHRyaWJ1dGVzIiwicHJldl9pbWciLCJibG9ja3NwYXJlX2dsb2JhbHMiLCJCbG9ja0FsaWdubWVudFRvb2xiYXIiLCJhbGlnbm1lbnRPcHRpb25zIiwib3BhY2l0eVJhdGlvVG9DbGFzcyIsInJhdGlvIiwiaW5jb3MiLCJjb3ZlciIsImF1dGhvciIsInBhZ2VzIiwiZ2V0RWRpdFdyYXBwZXJQcm9wcyIsImJ1dHRvbkFsaWdubWVudCIsInRpdGxlRGFzaFN0eWxlcyIsInBsYWNlX2hvbGRlcl9pbWFnZSIsImNvbnRyb2xzIiwiYmxvZ1Bvc3RTdHlsZXMiLCJibG9nU3R5bGVzIiwiZGVzaWduIiwiZW5hYmxlQmFja2dyb3VuZENvbG9yIiwiYmFja0dyb3VuZENvbG9yIiwic3JjVXJsIiwiRGVzaWduUGFuZWxJdGVtIiwiaW1hZ2VGaWxlIiwiaW1hZ2VIb3ZlckZpbGUiLCJpbWFnZVdpZHRoIiwiaW1hZ2VIZWlnaHQiLCJzcmNIb3ZlciIsIlJhZGlvQ29udHJvbCIsIkRlc2lnbkNvbnRyb2wiLCJmaXhlZE9wdGlvbnMiLCJob3ZlckltYWdlIiwiaXNQcm8iLCJCYXNlQ29udHJvbCIsImFwcGx5RmlsdGVycyIsImRlc2lnbnMiLCJEZXNpZ25TZXBhcmF0b3JDb250cm9sIiwiZXhjbHVkZURlc2lnbnMiLCJEZXNpZ25QYW5lbEJvZHkiLCJzZWxlY3RlZE9wdGlvbkluVGl0bGUiLCJzZWxlY3RlZE9wdGlvbiIsInBhbmVsVGl0bGUiLCJtYWluQ2xhc3NlcyIsImltZ1NoYXBlT3B0aW9ucyIsImltYWdlU2hhcGUiLCJkZXNjcmlwdGlvbkNvbG9yIiwic2hvd0NvbnRlbnRJbWciLCJzaG93QnV0dG9uIiwibGF5b3V0T3B0aW9uIiwic2VjdGlvbkRlc2NyaXB0aW9uIiwiYnRuU3R5bGVzIiwic2VwYXJhdG9yQXR0cmlidXRlcyIsImxheWVyMVNoYWRvdyIsImJnR3JhZGllbnQiLCJiZ0dyYWRpZW50U3R5bGVzIiwiYmdHcmFkaWVudEF0dHJpYnV0ZXMiLCJzZXBhcmF0b3JFbmFibGUiLCJzaG93RnJvbnQiLCJ6aW5kZXhEaXZpZGVyIiwiZGl2aWRlclBvc2l0aW9uIiwidG9wRGl2aWRlck1hcmdpbiIsImJvdHRvbURpdmlkZXJNYXJnaW4iLCJlbmFibGVHYXAiLCJTVkdEb3VibGVXYXZlIiwiU1ZHRmFuIiwiU1ZHV2F2eSIsIlNWR1dhdmVzIiwiU1ZHU2xvcGVkIiwiU1ZHQ3VydmUiLCJTVkdTaGFwZU9jZWFuIiwiU1ZHR3JvdyIsIlNWR0Nsb3VkcyIsIlNWR0FuZ2xlZCIsInNlcGFyYXRvcnMiLCJTZXBhcmF0b3IiLCJTZXBhcmF0b3JDb21wIiwicHJlc2VydmVBc3BlY3RSYXRpbyIsImFyaWEtaGlkZGVuIiwic2hhZG93IiwiVG9vbGJhciIsIkNvbnRyb2xzIiwidmVydGljYWxGbGlwIiwiaG9yaXpvbnRhbEZsaXAiLCJ0b29sYmFyQ29udHJvbHMiLCJiYWNrZ3JvdW5kSW1nIiwid2lkdGhSYXRpbyIsInNlcFN0eWxlcyIsInJlbmRlckFwcGVuZGVyIiwiaGFzSW5uZXJCbG9ja3MiLCJEZWZhdWx0QmxvY2tBcHBlbmRlciIsIkJ1dHRvbkJsb2NrQXBwZW5kZXIiLCJtaW5IZWlnaHQiLCJ0cmFuc2Zvcm1zIiwiaXNNdWx0aUJsb2NrIiwiX19leHBlcmltZW50YWxDb252ZXJ0IiwiYWxpZ25tZW50cyIsIndpZGVzdEFsaWdubWVudCIsImdyb3VwSW5uZXJCbG9ja3MiLCJCU0ljb25TZXR0aW5ncyIsIm9uQ2hhbmdlTmFtZSIsImVuYWJsZWljb25TaXplIiwiaWNvblNpemUiLCJvbkNoYW5nZUljb25TaXplT3B0aW9ucyIsImVuYWJsZWljb25TdHlsZXMiLCJpY29uU3R5bGVzIiwib25DaGFuZ2VJY29uU3R5bGVzIiwiaWNvbkJhY2tncm91bmRDb2xvciIsIm9uQ2hhbmdlSWNvbkJhY2tncm91bmRDb2xvciIsImljb25Cb3JkZXJDb2xvciIsIm9uQ2hhbmdlSWNvbkJvcmRlckNvbG9yIiwiT25DaGFuZ2VJY29uQ29sb3IiLCJpY29uU2l6ZU9wdGlvbnMiLCJvbkNoYW5nZUJvcmRlclJhZGl1cyIsImljb25TdHlsZXNPcHRpb25zIiwiY291bnRlckZvbnRDb2xvciIsImltZ0ljb25PcHRpb24iLCJibG9ja0JvcmRlclJhZGl1cyIsImljb25Db2xvck9wdGlvbnMiLCJBTExPV0VEX0JMT0NLUyIsIlRFTVBMQVRFIiwiRGVzY3JpcHRpb24iLCJpY29uU3R5bGVzY3NzIiwidGVtcGxhdGVJbnNlcnRVcGRhdGVzU2VsZWN0aW9uIiwic3BhY2VyIiwiaWNvblN0eWxlc0NzcyIsIm5leHRBbGlnbiIsIlRleHRDb250cm9sIiwiaW1hZ2VTaXplU2VsZWN0IiwiZ2V0U2V0dGluZ3MiLCJnZXRFZGl0b3JTZXR0aW5ncyIsImNvbXBhY3QiLCJpbWFnZVNpemVzIiwibnVtYmVyb2ZTbGlkZSIsInNob3dzbGlkZXJOZXh0UHJldiIsImNhcm91c2VsU3BlZWQiLCJzaG93RG90cyIsImNhcm91c2VsTmV4dEljb24iLCJuYXZpZ2F0aW9uQ29sb3IiLCJndXR0ZXJTcGFjZSIsIm5hdmlnYXRpb25TaXplIiwiY29sb3JGaWx0ZXIiLCJzaG93T3JpZ2luYWxPbkhvdmVyIiwiZW5hYmxlQXV0b1BsYXkiLCJhYkltYWdlU2l6ZVNlbGVjdCIsIm5hdmlnYXRpb25TaXplT3B0aW9uIiwiU3Bpbm5lciIsImtleWNvZGVzIiwiaXNCbG9iVVJMIiwiQkFDS1NQQUNFIiwiREVMRVRFIiwiYmxvYiIsImdldE1lZGlhIiwib25JbWFnZUNsaWNrIiwib25TZWxlY3RDYXB0aW9uIiwiYmluZENvbnRhaW5lciIsInNhdmVDdXN0b21MaW5rIiwiY2FwdGlvblNlbGVjdGVkIiwiY2FwdGlvbkZvY3VzZWQiLCJpc1NhdmVkIiwiaW1nTGluayIsInNvdXJjZV91cmwiLCJhbHRfdGV4dCIsImNhcHRpb25zIiwiZ3V0dGVyTW9iaWxlIiwiaXNGaXJzdEl0ZW0iLCJpc0xhc3RJdGVtIiwibGlua1RvIiwib25Nb3ZlQmFja3dhcmQiLCJvbk1vdmVGb3J3YXJkIiwib25SZW1vdmUiLCJzdXBwb3J0c0NhcHRpb24iLCJzdXBwb3J0c01vdmluZyIsInZlcnRpY2FsTW92aW5nIiwic2l6ZXMiLCJpbnNwZWN0b3JTaXplIiwiYXJpYUxhYmVsIiwiaW1ndXJsIiwibWVkaXVtIiwibGFyZ2UiLCJmdWxsIiwiaW1nQ2xhc3NlcyIsImRhdGEtaWQiLCJkYXRhLWltZ2xpbmsiLCJhcmlhLWxhYmVsIiwiY2FwdGlvblN0eWxlcyIsImFyaWEtZGlzYWJsZWQiLCJpc0VtcHR5IiwibmV3Q2FwdGlvbiIsInVuc3RhYmxlT25Gb2N1cyIsImlubGluZVRvb2xiYXIiLCJwaWNrUmVsZXZhbnRNZWRpYUZpbGVzIiwiaW1hZ2VQcm9wcyIsImltZ0tleSIsImZpbmRJbmRleCIsIkFMTE9XRURfR0FMTEVSWV9NRURJQV9UWVBFUyIsInNwcmludGYiLCJNZWRpYVBsYWNlaG9sZGVyIiwiQmxvY2tJY29uIiwiR2FsbGVyeVBsYWNlaG9sZGVyIiwib25TZWxlY3RJbWFnZXMiLCJoZWxwZXIiLCJub3RpY2VPcGVyYXRpb25zIiwibm90aWNlVUkiLCJoYXNJbWFnZXMiLCJhZGRUb0dhbGxlcnkiLCJpc0FwcGVuZGVyIiwiZHJvcFpvbmVVSU9ubHkiLCJsYWJlbHMiLCJpbnN0cnVjdGlvbnMiLCJhY2NlcHQiLCJhbGxvd2VkVHlwZXMiLCJjcmVhdGVFcnJvck5vdGljZSIsIm5vdGljZXMiLCJtZWRpYVVwbG9hZCIsIkRyb3Bab25lIiwiR2FsbGVyeURyb3Bab25lIiwiYWRkTWVkaWFGaWxlcyIsImZpbGVzIiwiY3VycmVudEltYWdlcyIsImZpbGVzTGlzdCIsIm9uRmlsZUNoYW5nZSIsImltYWdlc05vcm1hbGl6ZWQiLCJvbkZpbGVzRHJvcCIsIndpdGhOb3RpY2VzIiwiUmVzaXphYmxlQm94IiwiTWVkaWFVcGxvYWRDaGVjayIsIm9uU2VsZWN0SW1hZ2UiLCJzZXRJbWFnZUF0dHJpYnV0ZXMiLCJvbkl0ZW1DbGljayIsIm9uRWRpdFNlbGVjdEltYWdlcyIsInNlbGVjdGVkSW1hZ2UiLCJsaWdodGJveCIsImxpZ2h0Ym94U3R5bGUiLCJyYWRpdXMiLCJncmlkU2l6ZSIsIm9uTW92ZSIsIm9sZEluZGV4IiwibmV3SW5kZXgiLCJfaW1nIiwiZHJvcFpvbmUiLCJuZXh0YXJyb3ciLCJwcmV2YXJyb3ciLCJCc05leHRBcnJvdzEiLCJCc1ByZXZBcnJvdzEiLCJCc05leHRBcnJvdzIiLCJCc1ByZXZBcnJvdzIiLCJCc05leHRBcnJvdzMiLCJCc1ByZXZBcnJvdzMiLCJCc05leHRBcnJvdzQiLCJCc1ByZXZBcnJvdzQiLCJCc05leHRBcnJvdzUiLCJCc1ByZXZBcnJvdzUiLCJsb29wIiwiZ2FsbGVyeSIsIkdhbGxlcnlDYXJvdXNlbEVkaXQiLCJwcmV2c3RyIiwiY2Fyb3VzZWxfYXJncyIsImpzb25EYXRhIiwiZGF0YS1uZXh0IiwiZGF0YS1wcmV2IiwiZGF0YS1zbGljayIsIkxpbmUiLCJpbmRpY2F0b3IiLCJiYXJDb2xvciIsImJhclRoaWNrbmVzcyIsInBlcmNlbnRhZ2VUZXh0Q29sb3IiLCJwcm9ncmVzc0JhclBhdGgiLCJzdHJva2UiLCJ0ZXh0U2l6ZSIsInByb2dyZXNzSXRlbVNldHRpbmdzIiwicGVyY2VudGFnZSIsImJsb2NrSUQiLCJsaW5lU3R5bGUiLCJkYXRhLXBlcmNlbnQiLCJpbnNlcnRQcm9ncmVzc2Jhckl0ZW0iLCJ0aXRsZTEiLCJnZXRQcm9ncmVzc2JhclRlbXBsYXRlIiwiaW50ZXJhY3Rpb24iLCJMaW5lYXJQcm9ncmVzc0Jsb2NrIiwiQlNMaXN0SWNvblNldHRpbmdzIiwibGlzdFR5cGUiLCJvbkNoYW5nZUxpc3RTdHlsZSIsIm9yZGVyTGlzdFN0eWxlIiwib25DaGFuZ2VPcmRlckxpc3RTdHlsZSIsIm9uY2hhbmdlQ29sb3IiLCJsaXN0QmFja0dyb3VuZENvbG9yIiwibGlzdERhdGEiLCJjbGFzc2VzTmFtZSIsIm11bHRpbGluZSIsIml0ZW1Qcm9wIiwiTG9nb3MiLCJncmF5c2NhbGUiLCJkYXRhLWxpbmsiLCJRdWVyeUNvbnRyb2xzIiwiYWRkUXVlcnlBcmdzIiwiYXBpRmV0Y2giLCJjYXRlZ29yaWVzTGlzdCIsInN0aWxsTW91bnRlZCIsImZldGNoUmVxdWVzdCIsInBlcl9wYWdlIiwicG9zdFR5cGUiLCJkaXNwbGF5UG9zdENhdGVnb3J5IiwiZGlzcGxheVBvc3RUaXRsZSIsImRpc3BsYXlQb3N0QXV0aG9yIiwiZGlzcGxheVBvc3REYXRlIiwiZGlzcGxheVBvc3RFeGNlcnB0IiwiZGlzcGxheVBvc3RMaW5rIiwiZXhjZXJwdExlbmd0aCIsInJlYWRNb3JlVGV4dCIsInBvc3RzVG9TaG93IiwiaW1hZ2VTaXplIiwib3JkZXJCeSIsImNhdGVnb3JpZXMiLCJwb3N0VGl0bGVDb2xvciIsImNvbnRlbnRPcmRlciIsImVxdWFsSW1hZ2VIZWlnaHQiLCJwb3N0VGl0bGVGb250U2l6ZSIsImxpbmtDb2xvciIsImdlbmVyYWxDb2xvciIsImxhdGVzdFBvc3RzIiwiaGFzUG9zdHMiLCJpc1Bvc3QiLCJzZWxlY3RlZENhdGVnb3J5SWQiLCJvbkNhdGVnb3J5Q2hhbmdlIiwib25PcmRlckNoYW5nZSIsIm9uT3JkZXJCeUNoYW5nZSIsImRlY29kZUVudGl0aWVzIiwiaHRtbEVudGl0aWVzIiwiUGxhY2Vob2xkZXIiLCJnZXRFbnRpdHlSZWNvcmRzIiwibGF0ZXN0UG9zdHNRdWVyeSIsIm9yZGVyYnkiLCJzZWN0aW9uVGFnIiwiZGlzcGxheVBvc3RzIiwiU2VjdGlvblRhZyIsIml0ZW1TdHlsZSIsImxpbmtjb2xvciIsImdlbmVyYWxjb2xvciIsImVkaXRDb250ZW50UGFkZGluZyIsInBvc3QiLCJmZWF0dXJlZEltYWdlIiwiZmVhdHVyZWRfaW1hZ2VfdXJscyIsImNhdGVnb3J5X2luZm8iLCJyZW5kZXJlZCIsImF1dGhvcl9pbmZvIiwiZGlzcGxheV9uYW1lIiwiYXV0aG9yX2xpbmsiLCJkYXRlX2dtdCIsImRhdGVUaW1lIiwiZXhjZXJwdCIsIm5vX3dvcmRzIiwiTGF0ZXN0UG9zdHNCbG9ja0dyaWQiLCJMYXRlc3RQb3N0c0Jsb2NrTGlzdCIsInNldENhcHRpb25TdHlsZVRvIiwiY2FwdGlvblN0eWxlIiwiZ2V0Q2FwdGlvbnNIZWxwIiwibWFzb25yeU9wdGlvbnMiLCJlZGl0b3JTaWRlYmFyT3BlbmVkIiwiaXNFZGl0b3JTaWRlYmFyT3BlbmVkIiwicGx1Z2luU2lkZWJhck9wZW5lZCIsImlzUGx1Z2luU2lkZWJhck9wZW5lZCIsInB1Ymxpc2hTaWRlYmFyT3BlbmVkIiwiaXNQdWJsaXNoU2lkZWJhck9wZW5lZCIsIndpZGVDb250cm9sc0VuYWJsZWQiLCJhbGlnbldpZGUiLCJtYXNvbnJ5Q2xhc3NlcyIsImlubmVyQ2xhc3NlcyIsIkJzR2FsbGVyeUF0dHJpYnV0ZXMiLCJjYXB0aW9uQ29sb3IiLCJtZW51X2ltZ191cmwiLCJ0ZXh0c0NvbG9yIiwiYm94Qm9yZGVyQ29sb3IiLCJlbmFibGVCdXR0b24iLCJCU05vdGljZUJhciIsIm5vdGljZUNvbnRlbnQiLCJQcmljaW5nTGlzdCIsImxheW91dE9wdGlvbnMiLCJwcmljZVVuaXRQb3NpdGlvbiIsInByaWNlQ29sb3IiLCJwcmljZVRpdGxlQ29sb3IiLCJwcmljZVVuaXRDb2xvciIsInByaWNlRGVzY3JpcHRpb25Db2xvciIsInByaWNlTGlzdEl0ZW1TZXR0aW5ncyIsInByaWNlIiwicHJpY2VUaXRsZSIsInByaWNlRGVzY3JpcHRpb24iLCJwcmljZVVuaXQiLCJpbnNlcnRQcmljZUl0ZW0iLCJnZXRQcmljZVRlbXBsYXRlIiwiUHJpY2VMaXN0QmxvY2siLCJQcmljaW5nVGFibGUiLCJjb2x1bW5zR2FwIiwiUGFuZWxSb3ciLCJ3aXRoSW5wdXRGaWVsZCIsIkJsb2NrRGVzY3JpcHRpb24iLCJGb3JtVG9nZ2xlIiwic2VjdGlvblNjYWxlIiwiZW5hYmxlQmFkZ2UiLCJiYWRnZVRleHQiLCJiYWRnZVN0eWxlIiwiYmFkZ2VPcHRpb24iLCJpbWdJRDEiLCJpbWdVUkwxIiwiaW1nQWx0MSIsImJhZGdlVGV4dENvbG9yIiwiYmFkZ2VCYWNrR3JvdW5kQ29sb3IiLCJiYWRnZUltZ1NpemUiLCJwcmljZUl0ZW1TZXR0aW5ncyIsImFsaWdubWVudCIsImJhZGdlU3R5bGVzIiwiYmFkZ2VJbWdTdHlsZSIsImJhZGdlY2xhc3MiLCJzY2FsZVJhdGlvQ2xhc3MiLCJjdXJyZW5jeSIsInRlcm0iLCJtdWx0aWxpbmVUYWciLCJvcmRlcmVkIiwiRm9udFNpemUiLCJpdGVtU2NvcGUiLCJpdGVtVHlwZSIsImluc2VydFNlcnZpY2VJdGVtIiwiZ2V0U2VydmljZVRlbXBsYXRlIiwidGltZXMiLCJ3aXRoRmFsbGJhY2tTdHlsZXMiLCJnZXRGb250U2l6ZUNsYXNzIiwiZ2V0Q29sb3JDbGFzc05hbWUiLCJ3aXRoRm9udFNpemVzIiwiRm9udFNpemVQaWNrZXIiLCJ3aXRoQ29sb3JzIiwiQ29udHJhc3RDaGVja2VyIiwiYXBwbHlGYWxsYmFja1N0eWxlcyIsImVkaXRhYmxlTm9kZSIsImNvbXB1dGVkU3R5bGVzIiwiZmFsbGJhY2tCYWNrZ3JvdW5kQ29sb3IiLCJmYWxsYmFja1RleHRDb2xvciIsImZhbGxiYWNrRm9udFNpemUiLCJzaG93VGVybSIsInNob3dDdXJyZW5jeSIsInNldEZvbnRTaXplIiwic2V0VGV4dENvbG9yIiwic2V0QmFja2dyb3VuZENvbG9yIiwiZWRpdENsYXNzV3JhcHBlck5hbWUiLCJlZGl0Q2xhc3NOYW1lIiwiZWRpdFdyYXBTdHlsZXMiLCJjdXJyZW5jeVNpemUiLCJjdXJyZW5jeVN0eWxlcyIsInRlcm1TaXplIiwidGVybVN0eWxlcyIsImN1c3RvbUJhY2tncm91bmRDb2xvciIsImN1c3RvbVRleHRDb2xvciIsImZvbnRTaXplQ2xhc3MiLCJiYWNrZ3JvdW5kQ2xhc3MiLCJ3cmFwcGVyQ2xhc3NOYW1lIiwid3JhcHBlclN0eWxlcyIsImNvbXB1dGVkRm9udFNpemUiLCJDb2xvclBhbGV0dGUiLCJ0ZXh0Q2xhc3MiLCJCdXR0b25FZGl0IiwiaWNvblNoYXBlcyIsImNsaWVudHMiLCJpY29uU2l6ZXMiLCJidXR0b25TaGFwZXMiLCJidXR0b25TaXplcyIsImZhY2Vib29rVGl0bGUiLCJmYWNlYm9va1VybCIsInR3aXR0ZXJUaXRsZSIsInR3aXR0ZXJVcmwiLCJpbnN0YWdyYW1UaXRsZSIsImluc3RhZ3JhbVVybCIsInlvdXR1YmVUaXRsZSIsInlvdXR1YmVVcmwiLCJsaW5rZWRpblRpdGxlIiwibGlua2VkaW5VcmwiLCJwaW50ZXJlc3RUaXRsZSIsInBpbnRlcmVzdFVybCIsIlNvY2lhbExpbmtzIiwiY29sb3JTdHlsZXMiLCJpY29uQ29sb3JPcHRpb24iLCJjdXN0b21mb250Q29sb3JPcHRpb24iLCJjdXN0b21iYWNrZ3JvdW5kQ29sb3JPcHRpb24iLCJidXR0b25PcHRpb25zIiwiYnV0dG9uRmlsbHMiLCJ0dW1ibHJVcmwiLCJ0dW1ibHJUaXRsZSIsInRlbGVncmFtVXJsIiwidGVsZWdyYW1UaXRsZSIsInJlZGRpdFVybCIsInJlZGRpdFRpdGxlIiwiZmxpY2tyVXJsIiwiZmxpY2tyVGl0bGUiLCJkcmliYmJsZVVybCIsImRyaWJiYmxlVGl0bGUiLCJ2a1VybCIsInZrVGl0bGUiLCJ5ZWxwVXJsIiwieWVscFRpdGxlIiwicXVvcmFVcmwiLCJxdW9yYVRpdGxlIiwibWVldHVwVXJsIiwibWVldHVwVGl0bGUiLCJnaXRodWJVcmwiLCJnaXRodWJUaXRsZSIsImZhY2Vib29rIiwidHdpdHRlciIsInBpbnRlcmVzdCIsImxpbmtlZGluIiwicmVkZGl0IiwiZW1haWxUaXRsZSIsIlNlcnZpY2VzIiwic2VydmljZUl0ZW1zIiwic2VydmljZUl0ZW1TZXR0aW5ncyIsIlNlcnZpY2VMaXN0QmxvY2siLCJFbXB0eVN0YXIiLCJmaWxsQ29sb3IiLCJIYWxmU3RhciIsIkZ1bGxTdGFyIiwic3RhckNvdW50Iiwic3RhclNpemUiLCJzdGFyQ29sb3IiLCJzdGFyQWxpZ24iLCJzZWxlY3RlZFN0YXJzIiwiZW1wdHlTdGFyQ29sb3IiLCJoaWdobGlnaHRlZFN0YXJzIiwiYmxvY2tzcGFyZV9tYWtlX2hhbGZfc3RhciIsImJsb2Nrc3BhcmVfbWFrZV9lbXB0eV9zdGFyIiwic3RhcnMiLCJ0YWJMYXlvdXQiLCJ0YWJTdHlsZSIsInRhYkJhY2tHcm91bmRDb2xvciIsImFjdGl2ZVRhYkJhY2tncm91bmRDb2xvciIsInRhYlRleHRDb2xvciIsImFjdGl2ZXRhYlRleHRDb2xvciIsInRhYkFsaWdubWVudCIsInRhYkxheW91dE9wdGlvbnMiLCJUb29sdGlwIiwidGFiVGl0bGVzIiwidGhpc0luZGV4IiwiYWN0X3RhYl9iZyIsInRhYl9iZyIsImFjdF90YWJfdGV4dCIsInRhYl90ZXh0IiwiY3VycmVudFRhYkJsb2NrIiwic2hvd0ljb25QaWNrZXIiLCJhY3RpdmVUYWIiLCJpY29uTmFtZSIsImluaXRpYWxSZW5kZXIiLCJ1cGRhdGVUaXRsZXMiLCJkZWxldGVUYWIiLCJuZXh0QWN0aXZlVGFiIiwibmV3VGl0bGVzIiwicmVuZGVyVGFiVGl0bGVzIiwiYXJlYUxhYmVsIiwiY3VzdG9tQ2xhc3NOYW1lIiwidGFiLWJnIiwiYXRhYi1iZyIsInRhYi10ZXh0IiwiYXRhYi10ZXh0IiwiVGVzdGltb25pYWxXcmFwcGVyIiwiZW5hYmxlUmF0aW5ncyIsInRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0Q29sb3IiLCJ0ZXN0aW1vbmlhbERlc2NyaXB0aW9uVGV4dFNpemUiLCJ0ZXN0aW1vbmlhbEl0ZW1TZXR0aW5ncyIsInRlc3RpbW9uaWFsRGVzY3JpcHRpb24iLCJpbnNlcnRUZXN0aW1vbmlhbEl0ZW0iLCJnZXRUZXN0aW1vbmlhbFRlbXBsYXRlIiwiVGVzdGltb25pYWxMaXN0QmxvY2siLCJwcm9maWxlVGV4dENvbG9yIiwicHJvZmlsZUJhY2tncm91bmRDb2xvciIsImluc3RhZ3JhbSIsInlvdXR1YmUiLCJidXR0b25GaWxsIiwiUHJvZmlsZUJveCIsInByb2ZpbGVJbWdVUkwiLCJwcm9maWxlRm9udFNpemUiLCJwcm9maWxlQXZhdGFyU2hhcGUiLCJvcHRpbnNMYXlwdXRzIiwiU29jaWFsSWNvbnMiLCJBdmF0YXJDb2x1bW4iLCJwcm9maWxlQ29udGVudCIsInByb2ZpbGVDb250ZW50Rm9udFNpemUiXSwibWFwcGluZ3MiOiJhQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQUtmRixFQUFvQlEsRUFBSUYsRUFHeEJOLEVBQW9CUyxFQUFJVixFQUd4QkMsRUFBb0JVLEVBQUksU0FBU1IsRUFBU1MsRUFBTUMsR0FDM0NaLEVBQW9CYSxFQUFFWCxFQUFTUyxJQUNsQ0csT0FBT0MsZUFBZWIsRUFBU1MsRUFBTSxDQUFFSyxZQUFZLEVBQU1DLElBQUtMLEtBS2hFWixFQUFvQmtCLEVBQUksU0FBU2hCLEdBQ1gsb0JBQVhpQixRQUEwQkEsT0FBT0MsYUFDMUNOLE9BQU9DLGVBQWViLEVBQVNpQixPQUFPQyxZQUFhLENBQUVDLE1BQU8sV0FFN0RQLE9BQU9DLGVBQWViLEVBQVMsYUFBYyxDQUFFbUIsT0FBTyxLQVF2RHJCLEVBQW9Cc0IsRUFBSSxTQUFTRCxFQUFPRSxHQUV2QyxHQURVLEVBQVBBLElBQVVGLEVBQVFyQixFQUFvQnFCLElBQy9CLEVBQVBFLEVBQVUsT0FBT0YsRUFDcEIsR0FBVyxFQUFQRSxHQUE4QixpQkFBVkYsR0FBc0JBLEdBQVNBLEVBQU1HLFdBQVksT0FBT0gsRUFDaEYsSUFBSUksRUFBS1gsT0FBT1ksT0FBTyxNQUd2QixHQUZBMUIsRUFBb0JrQixFQUFFTyxHQUN0QlgsT0FBT0MsZUFBZVUsRUFBSSxVQUFXLENBQUVULFlBQVksRUFBTUssTUFBT0EsSUFDdEQsRUFBUEUsR0FBNEIsaUJBQVRGLEVBQW1C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SUFDZCxVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxhQUFjLElBQ2QsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxhQUFjLElBQ2QsVUFBVyxJQUNYLGFBQWMsSUFDZCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxhQUFjLElBQ2QsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLGFBQWMsSUFDZCxnQkFBaUIsSUFDakIsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLFVBQVcsSUFDWCxhQUFjLElBQ2QsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLFVBQVcsSUFDWCxhQUFjLElBQ2QsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9B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LHlCQUFDLEdBQWN2ekcsR0FFbkIsZ0NBQUtoWixVQUFZLHNEQUNiLGdDQUFLQSxVQUFZLHFCQUNqQndSLE1BQU8sQ0FDSGtULE9BQU9BLEVBQU8sS0FDZGhHLE1BQU0sT0FDTjQ5RixnQkFBZ0JpUSxHQUFnQyxhQU9oRXJPLEtBQUssU0FBU2xsRyxHQUFNLFFBS1pBLEVBQU1qZSxXQUhOMnBCLEVBRlksRUFFWkEsT0FDQTZuRyxFQUhZLEVBR1pBLGdCQUdKLE9BRUksZ0NBQUt2c0gsVUFBWSxzREFDYixnQ0FBS0EsVUFBWSxxQkFDWndSLE1BQU8sQ0FDSGtULE9BQU9BLEVBQU8sS0FDZGhHLE1BQU0sT0FDTjQ5RixnQkFBZ0JpUSxHQUFnQyxlIiwiZmlsZSI6ImJsb2Nrcy5idWlsZC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA0MjEpO1xuIiwiLyohXG4gIENvcHlyaWdodCAoYykgMjAxNyBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMgKCkge1xuXHRcdHZhciBjbGFzc2VzID0gW107XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGFyZyA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdGlmICghYXJnKSBjb250aW51ZTtcblxuXHRcdFx0dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXG5cdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZyk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSAmJiBhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdHZhciBpbm5lciA9IGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKTtcblx0XHRcdFx0aWYgKGlubmVyKSB7XG5cdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwiLy8hIG1vbWVudC5qc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgICBnbG9iYWwubW9tZW50ID0gZmFjdG9yeSgpXG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBob29rQ2FsbGJhY2s7XG5cbiAgICBmdW5jdGlvbiBob29rcyAoKSB7XG4gICAgICAgIHJldHVybiBob29rQ2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGRvbmUgdG8gcmVnaXN0ZXIgdGhlIG1ldGhvZCBjYWxsZWQgd2l0aCBtb21lbnQoKVxuICAgIC8vIHdpdGhvdXQgY3JlYXRpbmcgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICAgIGZ1bmN0aW9uIHNldEhvb2tDYWxsYmFjayAoY2FsbGJhY2spIHtcbiAgICAgICAgaG9va0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBcnJheShpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBBcnJheSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0KGlucHV0KSB7XG4gICAgICAgIC8vIElFOCB3aWxsIHRyZWF0IHVuZGVmaW5lZCBhbmQgbnVsbCBhcyBvYmplY3QgaWYgaXQgd2Fzbid0IGZvclxuICAgICAgICAvLyBpbnB1dCAhPSBudWxsXG4gICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0RW1wdHkob2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcykge1xuICAgICAgICAgICAgcmV0dXJuIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaztcbiAgICAgICAgICAgIGZvciAoayBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE51bWJlcl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF0ZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBEYXRlIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IERhdGVdJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXAoYXJyLCBmbikge1xuICAgICAgICB2YXIgcmVzID0gW10sIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGZuKGFycltpXSwgaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzT3duUHJvcChhLCBiKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZW5kKGEsIGIpIHtcbiAgICAgICAgZm9yICh2YXIgaSBpbiBiKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChiLCBpKSkge1xuICAgICAgICAgICAgICAgIGFbaV0gPSBiW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3RvU3RyaW5nJykpIHtcbiAgICAgICAgICAgIGEudG9TdHJpbmcgPSBiLnRvU3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3ZhbHVlT2YnKSkge1xuICAgICAgICAgICAgYS52YWx1ZU9mID0gYi52YWx1ZU9mO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgdHJ1ZSkudXRjKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmYXVsdFBhcnNpbmdGbGFncygpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBkZWVwIGNsb25lIHRoaXMgb2JqZWN0LlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1wdHkgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICB1bnVzZWRUb2tlbnMgICAgOiBbXSxcbiAgICAgICAgICAgIHVudXNlZElucHV0ICAgICA6IFtdLFxuICAgICAgICAgICAgb3ZlcmZsb3cgICAgICAgIDogLTIsXG4gICAgICAgICAgICBjaGFyc0xlZnRPdmVyICAgOiAwLFxuICAgICAgICAgICAgbnVsbElucHV0ICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICBpbnZhbGlkTW9udGggICAgOiBudWxsLFxuICAgICAgICAgICAgaW52YWxpZEZvcm1hdCAgIDogZmFsc2UsXG4gICAgICAgICAgICB1c2VySW52YWxpZGF0ZWQgOiBmYWxzZSxcbiAgICAgICAgICAgIGlzbyAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgcGFyc2VkRGF0ZVBhcnRzIDogW10sXG4gICAgICAgICAgICBtZXJpZGllbSAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgcmZjMjgyMiAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICB3ZWVrZGF5TWlzbWF0Y2ggOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBhcnNpbmdGbGFncyhtKSB7XG4gICAgICAgIGlmIChtLl9wZiA9PSBudWxsKSB7XG4gICAgICAgICAgICBtLl9wZiA9IGRlZmF1bHRQYXJzaW5nRmxhZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5fcGY7XG4gICAgfVxuXG4gICAgdmFyIHNvbWU7XG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5zb21lKSB7XG4gICAgICAgIHNvbWUgPSBBcnJheS5wcm90b3R5cGUuc29tZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzb21lID0gZnVuY3Rpb24gKGZ1bikge1xuICAgICAgICAgICAgdmFyIHQgPSBPYmplY3QodGhpcyk7XG4gICAgICAgICAgICB2YXIgbGVuID0gdC5sZW5ndGggPj4+IDA7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSBpbiB0ICYmIGZ1bi5jYWxsKHRoaXMsIHRbaV0sIGksIHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQobSkge1xuICAgICAgICBpZiAobS5faXNWYWxpZCA9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgZmxhZ3MgPSBnZXRQYXJzaW5nRmxhZ3MobSk7XG4gICAgICAgICAgICB2YXIgcGFyc2VkUGFydHMgPSBzb21lLmNhbGwoZmxhZ3MucGFyc2VkRGF0ZVBhcnRzLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBpc05vd1ZhbGlkID0gIWlzTmFOKG0uX2QuZ2V0VGltZSgpKSAmJlxuICAgICAgICAgICAgICAgIGZsYWdzLm92ZXJmbG93IDwgMCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5lbXB0eSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkTW9udGggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZFdlZWtkYXkgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3Mud2Vla2RheU1pc21hdGNoICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLm51bGxJbnB1dCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkRm9ybWF0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLnVzZXJJbnZhbGlkYXRlZCAmJlxuICAgICAgICAgICAgICAgICghZmxhZ3MubWVyaWRpZW0gfHwgKGZsYWdzLm1lcmlkaWVtICYmIHBhcnNlZFBhcnRzKSk7XG5cbiAgICAgICAgICAgIGlmIChtLl9zdHJpY3QpIHtcbiAgICAgICAgICAgICAgICBpc05vd1ZhbGlkID0gaXNOb3dWYWxpZCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5jaGFyc0xlZnRPdmVyID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLnVudXNlZFRva2Vucy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYmlnSG91ciA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoT2JqZWN0LmlzRnJvemVuID09IG51bGwgfHwgIU9iamVjdC5pc0Zyb3plbihtKSkge1xuICAgICAgICAgICAgICAgIG0uX2lzVmFsaWQgPSBpc05vd1ZhbGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG0uX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52YWxpZCAoZmxhZ3MpIHtcbiAgICAgICAgdmFyIG0gPSBjcmVhdGVVVEMoTmFOKTtcbiAgICAgICAgaWYgKGZsYWdzICE9IG51bGwpIHtcbiAgICAgICAgICAgIGV4dGVuZChnZXRQYXJzaW5nRmxhZ3MobSksIGZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS51c2VySW52YWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGx1Z2lucyB0aGF0IGFkZCBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGFkZCB0aGUga2V5IGhlcmUgKG51bGwgdmFsdWUpLFxuICAgIC8vIHNvIHdlIGNhbiBwcm9wZXJseSBjbG9uZSBvdXJzZWx2ZXMuXG4gICAgdmFyIG1vbWVudFByb3BlcnRpZXMgPSBob29rcy5tb21lbnRQcm9wZXJ0aWVzID0gW107XG5cbiAgICBmdW5jdGlvbiBjb3B5Q29uZmlnKHRvLCBmcm9tKSB7XG4gICAgICAgIHZhciBpLCBwcm9wLCB2YWw7XG5cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc0FNb21lbnRPYmplY3QpKSB7XG4gICAgICAgICAgICB0by5faXNBTW9tZW50T2JqZWN0ID0gZnJvbS5faXNBTW9tZW50T2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faSkpIHtcbiAgICAgICAgICAgIHRvLl9pID0gZnJvbS5faTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2YpKSB7XG4gICAgICAgICAgICB0by5fZiA9IGZyb20uX2Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sKSkge1xuICAgICAgICAgICAgdG8uX2wgPSBmcm9tLl9sO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fc3RyaWN0KSkge1xuICAgICAgICAgICAgdG8uX3N0cmljdCA9IGZyb20uX3N0cmljdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3R6bSkpIHtcbiAgICAgICAgICAgIHRvLl90em0gPSBmcm9tLl90em07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc1VUQykpIHtcbiAgICAgICAgICAgIHRvLl9pc1VUQyA9IGZyb20uX2lzVVRDO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fb2Zmc2V0KSkge1xuICAgICAgICAgICAgdG8uX29mZnNldCA9IGZyb20uX29mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3BmKSkge1xuICAgICAgICAgICAgdG8uX3BmID0gZ2V0UGFyc2luZ0ZsYWdzKGZyb20pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbG9jYWxlKSkge1xuICAgICAgICAgICAgdG8uX2xvY2FsZSA9IGZyb20uX2xvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb21lbnRQcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtb21lbnRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcHJvcCA9IG1vbWVudFByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICAgICAgdmFsID0gZnJvbVtwcm9wXTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9bcHJvcF0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvO1xuICAgIH1cblxuICAgIHZhciB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG5cbiAgICAvLyBNb21lbnQgcHJvdG90eXBlIG9iamVjdFxuICAgIGZ1bmN0aW9uIE1vbWVudChjb25maWcpIHtcbiAgICAgICAgY29weUNvbmZpZyh0aGlzLCBjb25maWcpO1xuICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoY29uZmlnLl9kICE9IG51bGwgPyBjb25maWcuX2QuZ2V0VGltZSgpIDogTmFOKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5fZCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJldmVudCBpbmZpbml0ZSBsb29wIGluIGNhc2UgdXBkYXRlT2Zmc2V0IGNyZWF0ZXMgbmV3IG1vbWVudFxuICAgICAgICAvLyBvYmplY3RzLlxuICAgICAgICBpZiAodXBkYXRlSW5Qcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNNb21lbnQgKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgTW9tZW50IHx8IChvYmogIT0gbnVsbCAmJiBvYmouX2lzQU1vbWVudE9iamVjdCAhPSBudWxsKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNGbG9vciAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICAvLyAtMCAtPiAwXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKG51bWJlcikgfHwgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0ludChhcmd1bWVudEZvckNvZXJjaW9uKSB7XG4gICAgICAgIHZhciBjb2VyY2VkTnVtYmVyID0gK2FyZ3VtZW50Rm9yQ29lcmNpb24sXG4gICAgICAgICAgICB2YWx1ZSA9IDA7XG5cbiAgICAgICAgaWYgKGNvZXJjZWROdW1iZXIgIT09IDAgJiYgaXNGaW5pdGUoY29lcmNlZE51bWJlcikpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYWJzRmxvb3IoY29lcmNlZE51bWJlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gY29tcGFyZSB0d28gYXJyYXlzLCByZXR1cm4gdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlc1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVBcnJheXMoYXJyYXkxLCBhcnJheTIsIGRvbnRDb252ZXJ0KSB7XG4gICAgICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcnJheTEubGVuZ3RoLCBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGxlbmd0aERpZmYgPSBNYXRoLmFicyhhcnJheTEubGVuZ3RoIC0gYXJyYXkyLmxlbmd0aCksXG4gICAgICAgICAgICBkaWZmcyA9IDAsXG4gICAgICAgICAgICBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgoZG9udENvbnZlcnQgJiYgYXJyYXkxW2ldICE9PSBhcnJheTJbaV0pIHx8XG4gICAgICAgICAgICAgICAgKCFkb250Q29udmVydCAmJiB0b0ludChhcnJheTFbaV0pICE9PSB0b0ludChhcnJheTJbaV0pKSkge1xuICAgICAgICAgICAgICAgIGRpZmZzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpZmZzICsgbGVuZ3RoRGlmZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3YXJuKG1zZykge1xuICAgICAgICBpZiAoaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgY29uc29sZSAhPT0gICd1bmRlZmluZWQnKSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRGVwcmVjYXRpb24gd2FybmluZzogJyArIG1zZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGUobXNnLCBmbikge1xuICAgICAgICB2YXIgZmlyc3RUaW1lID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gZXh0ZW5kKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLCBtc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpcnN0VGltZSkge1xuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICAgICAgdmFyIGFyZztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBhcmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbaV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0gJ1xcblsnICsgaSArICddICc7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnICs9IGtleSArICc6ICcgKyBhcmd1bWVudHNbMF1ba2V5XSArICcsICc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMCwgLTIpOyAvLyBSZW1vdmUgdHJhaWxpbmcgY29tbWEgYW5kIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhcm4obXNnICsgJ1xcbkFyZ3VtZW50czogJyArIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpLmpvaW4oJycpICsgJ1xcbicgKyAobmV3IEVycm9yKCkpLnN0YWNrKTtcbiAgICAgICAgICAgICAgICBmaXJzdFRpbWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9LCBmbik7XG4gICAgfVxuXG4gICAgdmFyIGRlcHJlY2F0aW9ucyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlU2ltcGxlKG5hbWUsIG1zZykge1xuICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihuYW1lLCBtc2cpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVwcmVjYXRpb25zW25hbWVdKSB7XG4gICAgICAgICAgICB3YXJuKG1zZyk7XG4gICAgICAgICAgICBkZXByZWNhdGlvbnNbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID0gZmFsc2U7XG4gICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyID0gbnVsbDtcblxuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgRnVuY3Rpb24gfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXQgKGNvbmZpZykge1xuICAgICAgICB2YXIgcHJvcCwgaTtcbiAgICAgICAgZm9yIChpIGluIGNvbmZpZykge1xuICAgICAgICAgICAgcHJvcCA9IGNvbmZpZ1tpXTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgdGhpc1tpXSA9IHByb3A7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXNbJ18nICsgaV0gPSBwcm9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgLy8gTGVuaWVudCBvcmRpbmFsIHBhcnNpbmcgYWNjZXB0cyBqdXN0IGEgbnVtYmVyIGluIGFkZGl0aW9uIHRvXG4gICAgICAgIC8vIG51bWJlciArIChwb3NzaWJseSkgc3R1ZmYgY29taW5nIGZyb20gX2RheU9mTW9udGhPcmRpbmFsUGFyc2UuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgdGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQgPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgKHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2Uuc291cmNlIHx8IHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UpICtcbiAgICAgICAgICAgICAgICAnfCcgKyAoL1xcZHsxLDJ9Lykuc291cmNlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjaGlsZENvbmZpZykge1xuICAgICAgICB2YXIgcmVzID0gZXh0ZW5kKHt9LCBwYXJlbnRDb25maWcpLCBwcm9wO1xuICAgICAgICBmb3IgKHByb3AgaW4gY2hpbGRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pICYmIGlzT2JqZWN0KGNoaWxkQ29uZmlnW3Byb3BdKSkge1xuICAgICAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJlc1twcm9wXSwgcGFyZW50Q29uZmlnW3Byb3BdKTtcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJlc1twcm9wXSwgY2hpbGRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGRDb25maWdbcHJvcF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSBjaGlsZENvbmZpZ1twcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVzW3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHByb3AgaW4gcGFyZW50Q29uZmlnKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChwYXJlbnRDb25maWcsIHByb3ApICYmXG4gICAgICAgICAgICAgICAgICAgICFoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSAmJlxuICAgICAgICAgICAgICAgICAgICBpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIGNoYW5nZXMgdG8gcHJvcGVydGllcyBkb24ndCBtb2RpZnkgcGFyZW50IGNvbmZpZ1xuICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGV4dGVuZCh7fSwgcmVzW3Byb3BdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIExvY2FsZShjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNldChjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXM7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMpIHtcbiAgICAgICAga2V5cyA9IE9iamVjdC5rZXlzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGtleXMgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICB2YXIgaSwgcmVzID0gW107XG4gICAgICAgICAgICBmb3IgKGkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc093blByb3Aob2JqLCBpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0Q2FsZW5kYXIgPSB7XG4gICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIgKGtleSwgbW9tLCBub3cpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyW2tleV0gfHwgdGhpcy5fY2FsZW5kYXJbJ3NhbWVFbHNlJ107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG91dHB1dCkgPyBvdXRwdXQuY2FsbChtb20sIG5vdykgOiBvdXRwdXQ7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb25nRGF0ZUZvcm1hdCA9IHtcbiAgICAgICAgTFRTICA6ICdoOm1tOnNzIEEnLFxuICAgICAgICBMVCAgIDogJ2g6bW0gQScsXG4gICAgICAgIEwgICAgOiAnTU0vREQvWVlZWScsXG4gICAgICAgIExMICAgOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgTExMICA6ICdNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICAgICAgTExMTCA6ICdkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb25nRGF0ZUZvcm1hdCAoa2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldLFxuICAgICAgICAgICAgZm9ybWF0VXBwZXIgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXkudG9VcHBlckNhc2UoKV07XG5cbiAgICAgICAgaWYgKGZvcm1hdCB8fCAhZm9ybWF0VXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldID0gZm9ybWF0VXBwZXIucmVwbGFjZSgvTU1NTXxNTXxERHxkZGRkL2csIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWwuc2xpY2UoMSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0SW52YWxpZERhdGUgPSAnSW52YWxpZCBkYXRlJztcblxuICAgIGZ1bmN0aW9uIGludmFsaWREYXRlICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludmFsaWREYXRlO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0T3JkaW5hbCA9ICclZCc7XG4gICAgdmFyIGRlZmF1bHREYXlPZk1vbnRoT3JkaW5hbFBhcnNlID0gL1xcZHsxLDJ9LztcblxuICAgIGZ1bmN0aW9uIG9yZGluYWwgKG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCclZCcsIG51bWJlcik7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRSZWxhdGl2ZVRpbWUgPSB7XG4gICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgIHBhc3QgICA6ICclcyBhZ28nLFxuICAgICAgICBzICA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgIG0gIDogJ2EgbWludXRlJyxcbiAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgIGggIDogJ2FuIGhvdXInLFxuICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgIGQgIDogJ2EgZGF5JyxcbiAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgIE0gIDogJ2EgbW9udGgnLFxuICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICB5ICA6ICdhIHllYXInLFxuICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX3JlbGF0aXZlVGltZVtzdHJpbmddO1xuICAgICAgICByZXR1cm4gKGlzRnVuY3Rpb24ob3V0cHV0KSkgP1xuICAgICAgICAgICAgb3V0cHV0KG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkgOlxuICAgICAgICAgICAgb3V0cHV0LnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFzdEZ1dHVyZSAoZGlmZiwgb3V0cHV0KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbZGlmZiA+IDAgPyAnZnV0dXJlJyA6ICdwYXN0J107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKGZvcm1hdCkgPyBmb3JtYXQob3V0cHV0KSA6IGZvcm1hdC5yZXBsYWNlKC8lcy9pLCBvdXRwdXQpO1xuICAgIH1cblxuICAgIHZhciBhbGlhc2VzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0QWxpYXMgKHVuaXQsIHNob3J0aGFuZCkge1xuICAgICAgICB2YXIgbG93ZXJDYXNlID0gdW5pdC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBhbGlhc2VzW2xvd2VyQ2FzZV0gPSBhbGlhc2VzW2xvd2VyQ2FzZSArICdzJ10gPSBhbGlhc2VzW3Nob3J0aGFuZF0gPSB1bml0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdW5pdHMgPT09ICdzdHJpbmcnID8gYWxpYXNlc1t1bml0c10gfHwgYWxpYXNlc1t1bml0cy50b0xvd2VyQ2FzZSgpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVPYmplY3RVbml0cyhpbnB1dE9iamVjdCkge1xuICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0ge30sXG4gICAgICAgICAgICBub3JtYWxpemVkUHJvcCxcbiAgICAgICAgICAgIHByb3A7XG5cbiAgICAgICAgZm9yIChwcm9wIGluIGlucHV0T2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChpbnB1dE9iamVjdCwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkUHJvcCA9IG5vcm1hbGl6ZVVuaXRzKHByb3ApO1xuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkUHJvcCkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkSW5wdXRbbm9ybWFsaXplZFByb3BdID0gaW5wdXRPYmplY3RbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRJbnB1dDtcbiAgICB9XG5cbiAgICB2YXIgcHJpb3JpdGllcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkVW5pdFByaW9yaXR5KHVuaXQsIHByaW9yaXR5KSB7XG4gICAgICAgIHByaW9yaXRpZXNbdW5pdF0gPSBwcmlvcml0eTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzT2JqKSB7XG4gICAgICAgIHZhciB1bml0cyA9IFtdO1xuICAgICAgICBmb3IgKHZhciB1IGluIHVuaXRzT2JqKSB7XG4gICAgICAgICAgICB1bml0cy5wdXNoKHt1bml0OiB1LCBwcmlvcml0eTogcHJpb3JpdGllc1t1XX0pO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnByaW9yaXR5IC0gYi5wcmlvcml0eTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1bml0cztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB6ZXJvRmlsbChudW1iZXIsIHRhcmdldExlbmd0aCwgZm9yY2VTaWduKSB7XG4gICAgICAgIHZhciBhYnNOdW1iZXIgPSAnJyArIE1hdGguYWJzKG51bWJlciksXG4gICAgICAgICAgICB6ZXJvc1RvRmlsbCA9IHRhcmdldExlbmd0aCAtIGFic051bWJlci5sZW5ndGgsXG4gICAgICAgICAgICBzaWduID0gbnVtYmVyID49IDA7XG4gICAgICAgIHJldHVybiAoc2lnbiA/IChmb3JjZVNpZ24gPyAnKycgOiAnJykgOiAnLScpICtcbiAgICAgICAgICAgIE1hdGgucG93KDEwLCBNYXRoLm1heCgwLCB6ZXJvc1RvRmlsbCkpLnRvU3RyaW5nKCkuc3Vic3RyKDEpICsgYWJzTnVtYmVyO1xuICAgIH1cblxuICAgIHZhciBmb3JtYXR0aW5nVG9rZW5zID0gLyhcXFtbXlxcW10qXFxdKXwoXFxcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xZWVlZWVl8WVlZWVl8WVlZWXxZWXxnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZztcblxuICAgIHZhciBsb2NhbEZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nO1xuXG4gICAgdmFyIGZvcm1hdEZ1bmN0aW9ucyA9IHt9O1xuXG4gICAgdmFyIGZvcm1hdFRva2VuRnVuY3Rpb25zID0ge307XG5cbiAgICAvLyB0b2tlbjogICAgJ00nXG4gICAgLy8gcGFkZGVkOiAgIFsnTU0nLCAyXVxuICAgIC8vIG9yZGluYWw6ICAnTW8nXG4gICAgLy8gY2FsbGJhY2s6IGZ1bmN0aW9uICgpIHsgdGhpcy5tb250aCgpICsgMSB9XG4gICAgZnVuY3Rpb24gYWRkRm9ybWF0VG9rZW4gKHRva2VuLCBwYWRkZWQsIG9yZGluYWwsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBmdW5jID0gY2FsbGJhY2s7XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBmdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW2NhbGxiYWNrXSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhZGRlZCkge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbcGFkZGVkWzBdXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gemVyb0ZpbGwoZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBwYWRkZWRbMV0sIHBhZGRlZFsyXSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcmRpbmFsKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1tvcmRpbmFsXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkub3JkaW5hbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRva2VuKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVGb3JtYXR0aW5nVG9rZW5zKGlucHV0KSB7XG4gICAgICAgIGlmIChpbnB1dC5tYXRjaCgvXFxbW1xcc1xcU10vKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL15cXFt8XFxdJC9nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1xcXFwvZywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VGb3JtYXRGdW5jdGlvbihmb3JtYXQpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gZm9ybWF0Lm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpLCBpLCBsZW5ndGg7XG5cbiAgICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXRUb2tlbkZ1bmN0aW9uc1thcnJheVtpXV0pIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSByZW1vdmVGb3JtYXR0aW5nVG9rZW5zKGFycmF5W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobW9tKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gJycsIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gaXNGdW5jdGlvbihhcnJheVtpXSkgPyBhcnJheVtpXS5jYWxsKG1vbSwgZm9ybWF0KSA6IGFycmF5W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBmb3JtYXQgZGF0ZSB1c2luZyBuYXRpdmUgZGF0ZSBvYmplY3RcbiAgICBmdW5jdGlvbiBmb3JtYXRNb21lbnQobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBtLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybWF0ID0gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbS5sb2NhbGVEYXRhKCkpO1xuICAgICAgICBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSA9IGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdIHx8IG1ha2VGb3JtYXRGdW5jdGlvbihmb3JtYXQpO1xuXG4gICAgICAgIHJldHVybiBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XShtKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHBhbmRGb3JtYXQoZm9ybWF0LCBsb2NhbGUpIHtcbiAgICAgICAgdmFyIGkgPSA1O1xuXG4gICAgICAgIGZ1bmN0aW9uIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2VucyhpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5sb25nRGF0ZUZvcm1hdChpbnB1dCkgfHwgaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMubGFzdEluZGV4ID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBsb2NhbEZvcm1hdHRpbmdUb2tlbnMudGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShsb2NhbEZvcm1hdHRpbmdUb2tlbnMsIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2Vucyk7XG4gICAgICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoMSAgICAgICAgID0gL1xcZC87ICAgICAgICAgICAgLy8gICAgICAgMCAtIDlcbiAgICB2YXIgbWF0Y2gyICAgICAgICAgPSAvXFxkXFxkLzsgICAgICAgICAgLy8gICAgICAwMCAtIDk5XG4gICAgdmFyIG1hdGNoMyAgICAgICAgID0gL1xcZHszfS87ICAgICAgICAgLy8gICAgIDAwMCAtIDk5OVxuICAgIHZhciBtYXRjaDQgICAgICAgICA9IC9cXGR7NH0vOyAgICAgICAgIC8vICAgIDAwMDAgLSA5OTk5XG4gICAgdmFyIG1hdGNoNiAgICAgICAgID0gL1srLV0/XFxkezZ9LzsgICAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuICAgIHZhciBtYXRjaDF0bzIgICAgICA9IC9cXGRcXGQ/LzsgICAgICAgICAvLyAgICAgICAwIC0gOTlcbiAgICB2YXIgbWF0Y2gzdG80ICAgICAgPSAvXFxkXFxkXFxkXFxkPy87ICAgICAvLyAgICAgOTk5IC0gOTk5OVxuICAgIHZhciBtYXRjaDV0bzYgICAgICA9IC9cXGRcXGRcXGRcXGRcXGRcXGQ/LzsgLy8gICA5OTk5OSAtIDk5OTk5OVxuICAgIHZhciBtYXRjaDF0bzMgICAgICA9IC9cXGR7MSwzfS87ICAgICAgIC8vICAgICAgIDAgLSA5OTlcbiAgICB2YXIgbWF0Y2gxdG80ICAgICAgPSAvXFxkezEsNH0vOyAgICAgICAvLyAgICAgICAwIC0gOTk5OVxuICAgIHZhciBtYXRjaDF0bzYgICAgICA9IC9bKy1dP1xcZHsxLDZ9LzsgIC8vIC05OTk5OTkgLSA5OTk5OTlcblxuICAgIHZhciBtYXRjaFVuc2lnbmVkICA9IC9cXGQrLzsgICAgICAgICAgIC8vICAgICAgIDAgLSBpbmZcbiAgICB2YXIgbWF0Y2hTaWduZWQgICAgPSAvWystXT9cXGQrLzsgICAgICAvLyAgICAtaW5mIC0gaW5mXG5cbiAgICB2YXIgbWF0Y2hPZmZzZXQgICAgPSAvWnxbKy1dXFxkXFxkOj9cXGRcXGQvZ2k7IC8vICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWlxuICAgIHZhciBtYXRjaFNob3J0T2Zmc2V0ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vZ2k7IC8vICswMCAtMDAgKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG5cbiAgICB2YXIgbWF0Y2hUaW1lc3RhbXAgPSAvWystXT9cXGQrKFxcLlxcZHsxLDN9KT8vOyAvLyAxMjM0NTY3ODkgMTIzNDU2Nzg5LjEyM1xuXG4gICAgLy8gYW55IHdvcmQgKG9yIHR3bykgY2hhcmFjdGVycyBvciBudW1iZXJzIGluY2x1ZGluZyB0d28vdGhyZWUgd29yZCBtb250aCBpbiBhcmFiaWMuXG4gICAgLy8gaW5jbHVkZXMgc2NvdHRpc2ggZ2FlbGljIHR3byB3b3JkIGFuZCBoeXBoZW5hdGVkIG1vbnRoc1xuICAgIHZhciBtYXRjaFdvcmQgPSAvWzAtOV17MCwyNTZ9WydhLXpcXHUwMEEwLVxcdTA1RkZcXHUwNzAwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGMDdcXHVGRjEwLVxcdUZGRUZdezEsMjU2fXxbXFx1MDYwMC1cXHUwNkZGXFwvXXsxLDI1Nn0oXFxzKj9bXFx1MDYwMC1cXHUwNkZGXXsxLDI1Nn0pezEsMn0vaTtcblxuICAgIHZhciByZWdleGVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRSZWdleFRva2VuICh0b2tlbiwgcmVnZXgsIHN0cmljdFJlZ2V4KSB7XG4gICAgICAgIHJlZ2V4ZXNbdG9rZW5dID0gaXNGdW5jdGlvbihyZWdleCkgPyByZWdleCA6IGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIChpc1N0cmljdCAmJiBzdHJpY3RSZWdleCkgPyBzdHJpY3RSZWdleCA6IHJlZ2V4O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBhcnNlUmVnZXhGb3JUb2tlbiAodG9rZW4sIGNvbmZpZykge1xuICAgICAgICBpZiAoIWhhc093blByb3AocmVnZXhlcywgdG9rZW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh1bmVzY2FwZUZvcm1hdCh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZ2V4ZXNbdG9rZW5dKGNvbmZpZy5fc3RyaWN0LCBjb25maWcuX2xvY2FsZSk7XG4gICAgfVxuXG4gICAgLy8gQ29kZSBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdFxuICAgIGZ1bmN0aW9uIHVuZXNjYXBlRm9ybWF0KHMpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2V4RXNjYXBlKHMucmVwbGFjZSgnXFxcXCcsICcnKS5yZXBsYWNlKC9cXFxcKFxcWyl8XFxcXChcXF0pfFxcWyhbXlxcXVxcW10qKVxcXXxcXFxcKC4pL2csIGZ1bmN0aW9uIChtYXRjaGVkLCBwMSwgcDIsIHAzLCBwNCkge1xuICAgICAgICAgICAgcmV0dXJuIHAxIHx8IHAyIHx8IHAzIHx8IHA0O1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVnZXhFc2NhcGUocykge1xuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcbiAgICB9XG5cbiAgICB2YXIgdG9rZW5zID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRQYXJzZVRva2VuICh0b2tlbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGksIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRva2VuID0gW3Rva2VuXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1iZXIoY2FsbGJhY2spKSB7XG4gICAgICAgICAgICBmdW5jID0gZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2NhbGxiYWNrXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2VuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5baV1dID0gZnVuYztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFdlZWtQYXJzZVRva2VuICh0b2tlbiwgY2FsbGJhY2spIHtcbiAgICAgICAgYWRkUGFyc2VUb2tlbih0b2tlbiwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikge1xuICAgICAgICAgICAgY29uZmlnLl93ID0gY29uZmlnLl93IHx8IHt9O1xuICAgICAgICAgICAgY2FsbGJhY2soaW5wdXQsIGNvbmZpZy5fdywgY29uZmlnLCB0b2tlbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFRpbWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBpbnB1dCwgY29uZmlnKSB7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsICYmIGhhc093blByb3AodG9rZW5zLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbl0oaW5wdXQsIGNvbmZpZy5fYSwgY29uZmlnLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgWUVBUiA9IDA7XG4gICAgdmFyIE1PTlRIID0gMTtcbiAgICB2YXIgREFURSA9IDI7XG4gICAgdmFyIEhPVVIgPSAzO1xuICAgIHZhciBNSU5VVEUgPSA0O1xuICAgIHZhciBTRUNPTkQgPSA1O1xuICAgIHZhciBNSUxMSVNFQ09ORCA9IDY7XG4gICAgdmFyIFdFRUsgPSA3O1xuICAgIHZhciBXRUVLREFZID0gODtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdZJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgeSA9IHRoaXMueWVhcigpO1xuICAgICAgICByZXR1cm4geSA8PSA5OTk5ID8gJycgKyB5IDogJysnICsgeTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVknLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVknLCAgIDRdLCAgICAgICAwLCAneWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWVknLCAgNV0sICAgICAgIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWVknLCA2LCB0cnVlXSwgMCwgJ3llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygneWVhcicsICd5Jyk7XG5cbiAgICAvLyBQUklPUklUSUVTXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3llYXInLCAxKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1knLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWScsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWScsICAgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWVknLCBtYXRjaDF0bzYsIG1hdGNoNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnWVlZWVknLCAnWVlZWVlZJ10sIFlFQVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gaW5wdXQubGVuZ3RoID09PSAyID8gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpIDogdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBkYXlzSW5ZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIoeWVhcikgPyAzNjYgOiAzNjU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCkgfHwgeWVhciAlIDQwMCA9PT0gMDtcbiAgICB9XG5cbiAgICAvLyBIT09LU1xuXG4gICAgaG9va3MucGFyc2VUd29EaWdpdFllYXIgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRvSW50KGlucHV0KSArICh0b0ludChpbnB1dCkgPiA2OCA/IDE5MDAgOiAyMDAwKTtcbiAgICB9O1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFllYXIgPSBtYWtlR2V0U2V0KCdGdWxsWWVhcicsIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gZ2V0SXNMZWFwWWVhciAoKSB7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcigpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlR2V0U2V0ICh1bml0LCBrZWVwVGltZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldCQxKHRoaXMsIHVuaXQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywga2VlcFRpbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0KHRoaXMsIHVuaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldCAobW9tLCB1bml0KSB7XG4gICAgICAgIHJldHVybiBtb20uaXNWYWxpZCgpID9cbiAgICAgICAgICAgIG1vbS5fZFsnZ2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSgpIDogTmFOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCQxIChtb20sIHVuaXQsIHZhbHVlKSB7XG4gICAgICAgIGlmIChtb20uaXNWYWxpZCgpICYmICFpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh1bml0ID09PSAnRnVsbFllYXInICYmIGlzTGVhcFllYXIobW9tLnllYXIoKSkgJiYgbW9tLm1vbnRoKCkgPT09IDEgJiYgbW9tLmRhdGUoKSA9PT0gMjkpIHtcbiAgICAgICAgICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0odmFsdWUsIG1vbS5tb250aCgpLCBkYXlzSW5Nb250aCh2YWx1ZSwgbW9tLm1vbnRoKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdHZXQgKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzW3VuaXRzXSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gc3RyaW5nU2V0ICh1bml0cywgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1bml0cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplT2JqZWN0VW5pdHModW5pdHMpO1xuICAgICAgICAgICAgdmFyIHByaW9yaXRpemVkID0gZ2V0UHJpb3JpdGl6ZWRVbml0cyh1bml0cyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByaW9yaXRpemVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpc1twcmlvcml0aXplZFtpXS51bml0XSh1bml0c1twcmlvcml0aXplZFtpXS51bml0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9kKG4sIHgpIHtcbiAgICAgICAgcmV0dXJuICgobiAlIHgpICsgeCkgJSB4O1xuICAgIH1cblxuICAgIHZhciBpbmRleE9mO1xuXG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7XG4gICAgICAgIGluZGV4T2YgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleE9mID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgIC8vIEkga25vd1xuICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzW2ldID09PSBvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkge1xuICAgICAgICBpZiAoaXNOYU4oeWVhcikgfHwgaXNOYU4obW9udGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtb2RNb250aCA9IG1vZChtb250aCwgMTIpO1xuICAgICAgICB5ZWFyICs9IChtb250aCAtIG1vZE1vbnRoKSAvIDEyO1xuICAgICAgICByZXR1cm4gbW9kTW9udGggPT09IDEgPyAoaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDogMjgpIDogKDMxIC0gbW9kTW9udGggJSA3ICUgMik7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ00nLCBbJ01NJywgMl0sICdNbycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGgoKSArIDE7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21vbnRoJywgJ00nKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21vbnRoJywgOCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdNJywgICAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdNTScsICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTScsICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTU0nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNJywgJ01NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTU9OVEhdID0gdG9JbnQoaW5wdXQpIC0gMTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNTU0nLCAnTU1NTSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciBtb250aCA9IGNvbmZpZy5fbG9jYWxlLm1vbnRoc1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpO1xuICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhIG1vbnRoIG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZC5cbiAgICAgICAgaWYgKG1vbnRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIGFycmF5W01PTlRIXSA9IG1vbnRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZE1vbnRoID0gaW5wdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIHZhciBNT05USFNfSU5fRk9STUFUID0gL0Rbb0RdPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrTU1NTT8vO1xuICAgIHZhciBkZWZhdWx0TG9jYWxlTW9udGhzID0gJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzIChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpID8gdGhpcy5fbW9udGhzIDpcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpID8gdGhpcy5fbW9udGhzW20ubW9udGgoKV0gOlxuICAgICAgICAgICAgdGhpcy5fbW9udGhzWyh0aGlzLl9tb250aHMuaXNGb3JtYXQgfHwgTU9OVEhTX0lOX0ZPUk1BVCkudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCA9ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNTaG9ydCAobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpID8gdGhpcy5fbW9udGhzU2hvcnQgOlxuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0WydzdGFuZGFsb25lJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpID8gdGhpcy5fbW9udGhzU2hvcnRbbS5tb250aCgpXSA6XG4gICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFtNT05USFNfSU5fRk9STUFULnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLm1vbnRoKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVN0cmljdFBhcnNlKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IG1vbnRoTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCB1c2VkXG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7ICsraSkge1xuICAgICAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldID0gdGhpcy5tb250aHMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzUGFyc2UgKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIG1vbSwgcmVnZXg7XG5cbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZS5jYWxsKHRoaXMsIG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9tb250aHNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogYWRkIHNvcnRpbmdcbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlclxuICAgICAgICAvLyBzZWUgc29ydGluZyBpbiBjb21wdXRlTW9udGhzUGFyc2VcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdHJpY3QgJiYgIXRoaXMuX21vbnRoc1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgcmVnZXggPSAnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKSArICd8XicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnTU1NTScgJiYgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnTU1NJyAmJiB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX21vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gc2V0TW9udGggKG1vbSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGRheU9mTW9udGg7XG5cbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAvLyBObyBvcFxuICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoL15cXGQrJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvSW50KHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBtb20ubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBBbm90aGVyIHNpbGVudCBmYWlsdXJlP1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGF5T2ZNb250aCA9IE1hdGgubWluKG1vbS5kYXRlKCksIGRheXNJbk1vbnRoKG1vbS55ZWFyKCksIHZhbHVlKSk7XG4gICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyAnTW9udGgnXSh2YWx1ZSwgZGF5T2ZNb250aCk7XG4gICAgICAgIHJldHVybiBtb207XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0TW9udGggKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZXRNb250aCh0aGlzLCB2YWx1ZSk7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgJ01vbnRoJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXlzSW5Nb250aCAoKSB7XG4gICAgICAgIHJldHVybiBkYXlzSW5Nb250aCh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gbW9udGhzU2hvcnRSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1Nob3J0UmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSBkZWZhdWx0TW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TW9udGhzUmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gbW9udGhzUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZU1vbnRoc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNSZWdleCA9IGRlZmF1bHRNb250aHNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVNb250aHNQYXJzZSAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLCBtb207XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaCh0aGlzLm1vbnRocyhtb20sICcnKSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHNTaG9ydChtb20sICcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdFxuICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuXG4gICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHNob3J0UGllY2VzW2ldID0gcmVnZXhFc2NhcGUoc2hvcnRQaWVjZXNbaV0pO1xuICAgICAgICAgICAgbG9uZ1BpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKGxvbmdQaWVjZXNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNDsgaSsrKSB7XG4gICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1peGVkUGllY2VzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFJlZ2V4ID0gdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbG9uZ1BpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRGF0ZSAoeSwgbSwgZCwgaCwgTSwgcywgbXMpIHtcbiAgICAgICAgLy8gY2FuJ3QganVzdCBhcHBseSgpIHRvIGNyZWF0ZSBhIGRhdGU6XG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8xODEzNDhcbiAgICAgICAgdmFyIGRhdGU7XG4gICAgICAgIC8vIHRoZSBkYXRlIGNvbnN0cnVjdG9yIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoeSArIDQwMCwgbSwgZCwgaCwgTSwgcywgbXMpO1xuICAgICAgICAgICAgaWYgKGlzRmluaXRlKGRhdGUuZ2V0RnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVUQ0RhdGUgKHkpIHtcbiAgICAgICAgdmFyIGRhdGU7XG4gICAgICAgIC8vIHRoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgYXJnc1swXSA9IHkgKyA0MDA7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJncykpO1xuICAgICAgICAgICAgaWYgKGlzRmluaXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQtb2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXJcbiAgICBmdW5jdGlvbiBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKVxuICAgICAgICAgICAgZndkID0gNyArIGRvdyAtIGRveSxcbiAgICAgICAgICAgIC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9jYWwgd2Vla2RheSBpcyBmd2RcbiAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBjcmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cpICUgNztcblxuICAgICAgICByZXR1cm4gLWZ3ZGx3ICsgZndkIC0gMTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlI0NhbGN1bGF0aW5nX2FfZGF0ZV9naXZlbl90aGVfeWVhci4yQ193ZWVrX251bWJlcl9hbmRfd2Vla2RheVxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyh5ZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgbG9jYWxXZWVrZGF5ID0gKDcgKyB3ZWVrZGF5IC0gZG93KSAlIDcsXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRheU9mWWVhciA9IDEgKyA3ICogKHdlZWsgLSAxKSArIGxvY2FsV2Vla2RheSArIHdlZWtPZmZzZXQsXG4gICAgICAgICAgICByZXNZZWFyLCByZXNEYXlPZlllYXI7XG5cbiAgICAgICAgaWYgKGRheU9mWWVhciA8PSAwKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciAtIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlzSW5ZZWFyKHJlc1llYXIpICsgZGF5T2ZZZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mWWVhciA+IGRheXNJblllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyICsgMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhciAtIGRheXNJblllYXIoeWVhcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyLFxuICAgICAgICAgICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrT2ZZZWFyKG1vbSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQobW9tLnllYXIoKSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2VlayA9IE1hdGguZmxvb3IoKG1vbS5kYXlPZlllYXIoKSAtIHdlZWtPZmZzZXQgLSAxKSAvIDcpICsgMSxcbiAgICAgICAgICAgIHJlc1dlZWssIHJlc1llYXI7XG5cbiAgICAgICAgaWYgKHdlZWsgPCAxKSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSAtIDE7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayArIHdlZWtzSW5ZZWFyKHJlc1llYXIsIGRvdywgZG95KTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayAtIHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KTtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2VlazogcmVzV2VlayxcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrc0luWWVhcih5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0TmV4dCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyICsgMSwgZG93LCBkb3kpO1xuICAgICAgICByZXR1cm4gKGRheXNJblllYXIoeWVhcikgLSB3ZWVrT2Zmc2V0ICsgd2Vla09mZnNldE5leHQpIC8gNztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigndycsIFsnd3cnLCAyXSwgJ3dvJywgJ3dlZWsnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignVycsIFsnV1cnLCAyXSwgJ1dvJywgJ2lzb1dlZWsnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2VlaycsICd3Jyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrJywgJ1cnKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnd2VlaycsIDUpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2VlaycsIDUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigndycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3d3JywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdXVycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsndycsICd3dycsICdXJywgJ1dXJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAxKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrIChtb20pIHtcbiAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrID0ge1xuICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mV2VlayAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mWWVhciAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRveTtcbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHdlZWtPZlllYXIodGhpcywgMSwgNCkud2VlaztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RvJywgJ2RheScpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZScsIDAsIDAsICd3ZWVrZGF5Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ0UnLCAwLCAwLCAnaXNvV2Vla2RheScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXknLCAnZCcpO1xuICAgIGFkZFVuaXRBbGlhcygnd2Vla2RheScsICdlJyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrZGF5JywgJ0UnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrZGF5JywgMTEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla2RheScsIDExKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2QnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzTWluUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2RkJywgJ2RkZCcsICdkZGRkJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgd2Vla2RheSA9IGNvbmZpZy5fbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZFxuICAgICAgICBpZiAod2Vla2RheSAhPSBudWxsKSB7XG4gICAgICAgICAgICB3ZWVrLmQgPSB3ZWVrZGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZFdlZWtkYXkgPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkJywgJ2UnLCAnRSddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBwYXJzZVdlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc05hTihpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChpbnB1dCwgMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQgPSBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KSAlIDcgfHwgNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOYU4oaW5wdXQpID8gbnVsbCA6IGlucHV0O1xuICAgIH1cblxuICAgIC8vIExPQ0FMRVNcbiAgICBmdW5jdGlvbiBzaGlmdFdlZWtkYXlzICh3cywgbikge1xuICAgICAgICByZXR1cm4gd3Muc2xpY2UobiwgNykuY29uY2F0KHdzLnNsaWNlKDAsIG4pKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzID0gJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzIChtLCBmb3JtYXQpIHtcbiAgICAgICAgdmFyIHdlZWtkYXlzID0gaXNBcnJheSh0aGlzLl93ZWVrZGF5cykgPyB0aGlzLl93ZWVrZGF5cyA6XG4gICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1sobSAmJiBtICE9PSB0cnVlICYmIHRoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZm9ybWF0KSkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ107XG4gICAgICAgIHJldHVybiAobSA9PT0gdHJ1ZSkgPyBzaGlmdFdlZWtkYXlzKHdlZWtkYXlzLCB0aGlzLl93ZWVrLmRvdylcbiAgICAgICAgICAgIDogKG0pID8gd2Vla2RheXNbbS5kYXkoKV0gOiB3ZWVrZGF5cztcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQgPSAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzU2hvcnQgKG0pIHtcbiAgICAgICAgcmV0dXJuIChtID09PSB0cnVlKSA/IHNoaWZ0V2Vla2RheXModGhpcy5fd2Vla2RheXNTaG9ydCwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IChtKSA/IHRoaXMuX3dlZWtkYXlzU2hvcnRbbS5kYXkoKV0gOiB0aGlzLl93ZWVrZGF5c1Nob3J0O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4gPSAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNNaW4gKG0pIHtcbiAgICAgICAgcmV0dXJuIChtID09PSB0cnVlKSA/IHNoaWZ0V2Vla2RheXModGhpcy5fd2Vla2RheXNNaW4sIHRoaXMuX3dlZWsuZG93KVxuICAgICAgICAgICAgOiAobSkgPyB0aGlzLl93ZWVrZGF5c01pblttLmRheSgpXSA6IHRoaXMuX3dlZWtkYXlzTWluO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVN0cmljdFBhcnNlJDEod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBpaSwgbW9tLCBsbGMgPSB3ZWVrZGF5TmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGRkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzUGFyc2UgKHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlU3RyaWN0UGFyc2UkMS5jYWxsKHRoaXMsIHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuXG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9ICdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpICsgJ3xeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAocmVnZXgucmVwbGFjZSgnLicsICcnKSwgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgdGhlIHJlZ2V4XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZGQnICYmIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZGQnICYmIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGQnICYmIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXREYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5ID0gdGhpcy5faXNVVEMgPyB0aGlzLl9kLmdldFVUQ0RheSgpIDogdGhpcy5fZC5nZXREYXkoKTtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlucHV0ID0gcGFyc2VXZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQoaW5wdXQgLSBkYXksICdkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGF5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0TG9jYWxlRGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdlZWtkYXkgPSAodGhpcy5kYXkoKSArIDcgLSB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3cpICUgNztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrZGF5IDogdGhpcy5hZGQoaW5wdXQgLSB3ZWVrZGF5LCAnZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT0RheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYmVoYXZlcyB0aGUgc2FtZSBhcyBtb21lbnQjZGF5IGV4Y2VwdFxuICAgICAgICAvLyBhcyBhIGdldHRlciwgcmV0dXJucyA3IGluc3RlYWQgb2YgMCAoMS03IHJhbmdlIGluc3RlYWQgb2YgMC02KVxuICAgICAgICAvLyBhcyBhIHNldHRlciwgc3VuZGF5IHNob3VsZCBiZWxvbmcgdG8gdGhlIHByZXZpb3VzIHdlZWsuXG5cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciB3ZWVrZGF5ID0gcGFyc2VJc29XZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSAlIDcgPyB3ZWVrZGF5IDogd2Vla2RheSAtIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgfHwgNztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0V2Vla2RheXNSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1JlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IGRlZmF1bHRXZWVrZGF5c1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gd2Vla2RheXNTaG9ydFJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0V2Vla2RheXNNaW5SZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c01pblJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNNaW5SZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBjb21wdXRlV2Vla2RheXNQYXJzZSAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBtaW5QaWVjZXMgPSBbXSwgc2hvcnRQaWVjZXMgPSBbXSwgbG9uZ1BpZWNlcyA9IFtdLCBtaXhlZFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgaSwgbW9tLCBtaW5wLCBzaG9ydHAsIGxvbmdwO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIG1pbnAgPSB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpO1xuICAgICAgICAgICAgc2hvcnRwID0gdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpO1xuICAgICAgICAgICAgbG9uZ3AgPSB0aGlzLndlZWtkYXlzKG1vbSwgJycpO1xuICAgICAgICAgICAgbWluUGllY2VzLnB1c2gobWlucCk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHNob3J0cCk7XG4gICAgICAgICAgICBsb25nUGllY2VzLnB1c2gobG9uZ3ApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gobG9uZ3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgd2Vla2RheSAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdFxuICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuXG4gICAgICAgIG1pblBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1peGVkUGllY2VzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluUmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgc2hvcnRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWluUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBoRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpICUgMTIgfHwgMTI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga0Zvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKSB8fCAyNDtcbiAgICB9XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSCcsIFsnSEgnLCAyXSwgMCwgJ2hvdXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignaCcsIFsnaGgnLCAyXSwgMCwgaEZvcm1hdCk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ2snLCBbJ2trJywgMl0sIDAsIGtGb3JtYXQpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgaEZvcm1hdC5hcHBseSh0aGlzKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdobW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgaEZvcm1hdC5hcHBseSh0aGlzKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyB0aGlzLmhvdXJzKCkgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSG1tc3MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBtZXJpZGllbSAodG9rZW4sIGxvd2VyY2FzZSkge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1lcmlkaWVtKHRoaXMuaG91cnMoKSwgdGhpcy5taW51dGVzKCksIGxvd2VyY2FzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1lcmlkaWVtKCdhJywgdHJ1ZSk7XG4gICAgbWVyaWRpZW0oJ0EnLCBmYWxzZSk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2hvdXInLCAnaCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2hvdXInLCAxMyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBmdW5jdGlvbiBtYXRjaE1lcmlkaWVtIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuX21lcmlkaWVtUGFyc2U7XG4gICAgfVxuXG4gICAgYWRkUmVnZXhUb2tlbignYScsICBtYXRjaE1lcmlkaWVtKTtcbiAgICBhZGRSZWdleFRva2VuKCdBJywgIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0gnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdoJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignaycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0hIJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2hoJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2trJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkUmVnZXhUb2tlbignaG1tJywgbWF0Y2gzdG80KTtcbiAgICBhZGRSZWdleFRva2VuKCdobW1zcycsIG1hdGNoNXRvNik7XG4gICAgYWRkUmVnZXhUb2tlbignSG1tJywgbWF0Y2gzdG80KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW1zcycsIG1hdGNoNXRvNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnSCcsICdISCddLCBIT1VSKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnaycsICdrayddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIGtJbnB1dCA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSBrSW5wdXQgPT09IDI0ID8gMCA6IGtJbnB1dDtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnYScsICdBJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2lzUG0gPSBjb25maWcuX2xvY2FsZS5pc1BNKGlucHV0KTtcbiAgICAgICAgY29uZmlnLl9tZXJpZGllbSA9IGlucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydoJywgJ2hoJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignaG1tJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MpKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignaG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0O1xuICAgICAgICB2YXIgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdIbW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MxID0gaW5wdXQubGVuZ3RoIC0gNDtcbiAgICAgICAgdmFyIHBvczIgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMSwgMikpO1xuICAgICAgICBhcnJheVtTRUNPTkRdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczIpKTtcbiAgICB9KTtcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUlzUE0gKGlucHV0KSB7XG4gICAgICAgIC8vIElFOCBRdWlya3MgTW9kZSAmIElFNyBTdGFuZGFyZHMgTW9kZSBkbyBub3QgYWxsb3cgYWNjZXNzaW5nIHN0cmluZ3MgbGlrZSBhcnJheXNcbiAgICAgICAgLy8gVXNpbmcgY2hhckF0IHNob3VsZCBiZSBtb3JlIGNvbXBhdGlibGUuXG4gICAgICAgIHJldHVybiAoKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApID09PSAncCcpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZSA9IC9bYXBdXFwuP20/XFwuPy9pO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1lcmlkaWVtIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncG0nIDogJ1BNJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2FtJyA6ICdBTSc7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIFNldHRpbmcgdGhlIGhvdXIgc2hvdWxkIGtlZXAgdGhlIHRpbWUsIGJlY2F1c2UgdGhlIHVzZXIgZXhwbGljaXRseVxuICAgIC8vIHNwZWNpZmllZCB3aGljaCBob3VyIHRoZXkgd2FudC4gU28gdHJ5aW5nIHRvIG1haW50YWluIHRoZSBzYW1lIGhvdXIgKGluXG4gICAgLy8gYSBuZXcgdGltZXpvbmUpIG1ha2VzIHNlbnNlLiBBZGRpbmcvc3VidHJhY3RpbmcgaG91cnMgZG9lcyBub3QgZm9sbG93XG4gICAgLy8gdGhpcyBydWxlLlxuICAgIHZhciBnZXRTZXRIb3VyID0gbWFrZUdldFNldCgnSG91cnMnLCB0cnVlKTtcblxuICAgIHZhciBiYXNlQ29uZmlnID0ge1xuICAgICAgICBjYWxlbmRhcjogZGVmYXVsdENhbGVuZGFyLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDogZGVmYXVsdExvbmdEYXRlRm9ybWF0LFxuICAgICAgICBpbnZhbGlkRGF0ZTogZGVmYXVsdEludmFsaWREYXRlLFxuICAgICAgICBvcmRpbmFsOiBkZWZhdWx0T3JkaW5hbCxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UsXG4gICAgICAgIHJlbGF0aXZlVGltZTogZGVmYXVsdFJlbGF0aXZlVGltZSxcblxuICAgICAgICBtb250aHM6IGRlZmF1bHRMb2NhbGVNb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQsXG5cbiAgICAgICAgd2VlazogZGVmYXVsdExvY2FsZVdlZWssXG5cbiAgICAgICAgd2Vla2RheXM6IGRlZmF1bHRMb2NhbGVXZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW46IGRlZmF1bHRMb2NhbGVXZWVrZGF5c01pbixcbiAgICAgICAgd2Vla2RheXNTaG9ydDogZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQsXG5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogZGVmYXVsdExvY2FsZU1lcmlkaWVtUGFyc2VcbiAgICB9O1xuXG4gICAgLy8gaW50ZXJuYWwgc3RvcmFnZSBmb3IgbG9jYWxlIGNvbmZpZyBmaWxlc1xuICAgIHZhciBsb2NhbGVzID0ge307XG4gICAgdmFyIGxvY2FsZUZhbWlsaWVzID0ge307XG4gICAgdmFyIGdsb2JhbExvY2FsZTtcblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUxvY2FsZShrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleSA/IGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ18nLCAnLScpIDoga2V5O1xuICAgIH1cblxuICAgIC8vIHBpY2sgdGhlIGxvY2FsZSBmcm9tIHRoZSBhcnJheVxuICAgIC8vIHRyeSBbJ2VuLWF1JywgJ2VuLWdiJ10gYXMgJ2VuLWF1JywgJ2VuLWdiJywgJ2VuJywgYXMgaW4gbW92ZSB0aHJvdWdoIHRoZSBsaXN0IHRyeWluZyBlYWNoXG4gICAgLy8gc3Vic3RyaW5nIGZyb20gbW9zdCBzcGVjaWZpYyB0byBsZWFzdCwgYnV0IG1vdmUgdG8gdGhlIG5leHQgYXJyYXkgaXRlbSBpZiBpdCdzIGEgbW9yZSBzcGVjaWZpYyB2YXJpYW50IHRoYW4gdGhlIGN1cnJlbnQgcm9vdFxuICAgIGZ1bmN0aW9uIGNob29zZUxvY2FsZShuYW1lcykge1xuICAgICAgICB2YXIgaSA9IDAsIGosIG5leHQsIGxvY2FsZSwgc3BsaXQ7XG5cbiAgICAgICAgd2hpbGUgKGkgPCBuYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNwbGl0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2ldKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgaiA9IHNwbGl0Lmxlbmd0aDtcbiAgICAgICAgICAgIG5leHQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaSArIDFdKTtcbiAgICAgICAgICAgIG5leHQgPSBuZXh0ID8gbmV4dC5zcGxpdCgnLScpIDogbnVsbDtcbiAgICAgICAgICAgIHdoaWxlIChqID4gMCkge1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoc3BsaXQuc2xpY2UoMCwgaikuam9pbignLScpKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQubGVuZ3RoID49IGogJiYgY29tcGFyZUFycmF5cyhzcGxpdCwgbmV4dCwgdHJ1ZSkgPj0gaiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy90aGUgbmV4dCBhcnJheSBpdGVtIGlzIGJldHRlciB0aGFuIGEgc2hhbGxvd2VyIHN1YnN0cmluZyBvZiB0aGlzIG9uZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgai0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9hZExvY2FsZShuYW1lKSB7XG4gICAgICAgIHZhciBvbGRMb2NhbGUgPSBudWxsO1xuICAgICAgICAvLyBUT0RPOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWdpc3RlciBhbmQgbG9hZCBhbGwgdGhlIGxvY2FsZXMgaW4gTm9kZVxuICAgICAgICBpZiAoIWxvY2FsZXNbbmFtZV0gJiYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSAmJlxuICAgICAgICAgICAgICAgIG1vZHVsZSAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvbGRMb2NhbGUgPSBnbG9iYWxMb2NhbGUuX2FiYnI7XG4gICAgICAgICAgICAgICAgdmFyIGFsaWFzZWRSZXF1aXJlID0gcmVxdWlyZTtcbiAgICAgICAgICAgICAgICBhbGlhc2VkUmVxdWlyZSgnLi9sb2NhbGUvJyArIG5hbWUpO1xuICAgICAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShvbGRMb2NhbGUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgbG9hZCBsb2NhbGUgYW5kIHRoZW4gc2V0IHRoZSBnbG9iYWwgbG9jYWxlLiAgSWZcbiAgICAvLyBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCBpbiwgaXQgd2lsbCBzaW1wbHkgcmV0dXJuIHRoZSBjdXJyZW50IGdsb2JhbFxuICAgIC8vIGxvY2FsZSBrZXkuXG4gICAgZnVuY3Rpb24gZ2V0U2V0R2xvYmFsTG9jYWxlIChrZXksIHZhbHVlcykge1xuICAgICAgICB2YXIgZGF0YTtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZGVmaW5lTG9jYWxlKGtleSwgdmFsdWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAvLyBtb21lbnQuZHVyYXRpb24uX2xvY2FsZSA9IG1vbWVudC5fbG9jYWxlID0gZGF0YTtcbiAgICAgICAgICAgICAgICBnbG9iYWxMb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgY29uc29sZSAhPT0gICd1bmRlZmluZWQnKSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICAgICAgICAgICAgLy93YXJuIHVzZXIgaWYgYXJndW1lbnRzIGFyZSBwYXNzZWQgYnV0IHRoZSBsb2NhbGUgY291bGQgbm90IGJlIHNldFxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0xvY2FsZSAnICsga2V5ICsgICcgbm90IGZvdW5kLiBEaWQgeW91IGZvcmdldCB0byBsb2FkIGl0PycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGUuX2FiYnI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmaW5lTG9jYWxlIChuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZSwgcGFyZW50Q29uZmlnID0gYmFzZUNvbmZpZztcbiAgICAgICAgICAgIGNvbmZpZy5hYmJyID0gbmFtZTtcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUoJ2RlZmluZUxvY2FsZU92ZXJyaWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgbW9tZW50LnVwZGF0ZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHRvIGNoYW5nZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbiBleGlzdGluZyBsb2NhbGUuIG1vbWVudC5kZWZpbmVMb2NhbGUobG9jYWxlTmFtZSwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnKSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGUgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZGVmaW5lLWxvY2FsZS8gZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW25hbWVdLl9jb25maWc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tjb25maWcucGFyZW50TG9jYWxlXS5fY29uZmlnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoY29uZmlnLnBhcmVudExvY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlLl9jb25maWc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBjb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbmV3IExvY2FsZShtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjb25maWcpKTtcblxuICAgICAgICAgICAgaWYgKGxvY2FsZUZhbWlsaWVzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbbmFtZV0uZm9yRWFjaChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBkZWZpbmVMb2NhbGUoeC5uYW1lLCB4LmNvbmZpZyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZVxuICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIHNldCB0aGUgbG9jYWxlIEFGVEVSIGFsbCBjaGlsZCBsb2NhbGVzIGhhdmUgYmVlblxuICAgICAgICAgICAgLy8gY3JlYXRlZCwgc28gd2Ugd29uJ3QgZW5kIHVwIHdpdGggdGhlIGNoaWxkIGxvY2FsZSBzZXQuXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG5cblxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB1c2VmdWwgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVMb2NhbGUobmFtZSwgY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZSwgdG1wTG9jYWxlLCBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgLy8gTUVSR0VcbiAgICAgICAgICAgIHRtcExvY2FsZSA9IGxvYWRMb2NhbGUobmFtZSk7XG4gICAgICAgICAgICBpZiAodG1wTG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSB0bXBMb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZyA9IG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZyk7XG4gICAgICAgICAgICBsb2NhbGUgPSBuZXcgTG9jYWxlKGNvbmZpZyk7XG4gICAgICAgICAgICBsb2NhbGUucGFyZW50TG9jYWxlID0gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGU7XG5cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZVxuICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcGFzcyBudWxsIGZvciBjb25maWcgdG8gdW51cGRhdGUsIHVzZWZ1bCBmb3IgdGVzdHNcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIHJldHVybnMgbG9jYWxlIGRhdGFcbiAgICBmdW5jdGlvbiBnZXRMb2NhbGUgKGtleSkge1xuICAgICAgICB2YXIgbG9jYWxlO1xuXG4gICAgICAgIGlmIChrZXkgJiYga2V5Ll9sb2NhbGUgJiYga2V5Ll9sb2NhbGUuX2FiYnIpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQXJyYXkoa2V5KSkge1xuICAgICAgICAgICAgLy9zaG9ydC1jaXJjdWl0IGV2ZXJ5dGhpbmcgZWxzZVxuICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXkgPSBba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaG9vc2VMb2NhbGUoa2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TG9jYWxlcygpIHtcbiAgICAgICAgcmV0dXJuIGtleXMobG9jYWxlcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tPdmVyZmxvdyAobSkge1xuICAgICAgICB2YXIgb3ZlcmZsb3c7XG4gICAgICAgIHZhciBhID0gbS5fYTtcblxuICAgICAgICBpZiAoYSAmJiBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPT09IC0yKSB7XG4gICAgICAgICAgICBvdmVyZmxvdyA9XG4gICAgICAgICAgICAgICAgYVtNT05USF0gICAgICAgPCAwIHx8IGFbTU9OVEhdICAgICAgID4gMTEgID8gTU9OVEggOlxuICAgICAgICAgICAgICAgIGFbREFURV0gICAgICAgIDwgMSB8fCBhW0RBVEVdICAgICAgICA+IGRheXNJbk1vbnRoKGFbWUVBUl0sIGFbTU9OVEhdKSA/IERBVEUgOlxuICAgICAgICAgICAgICAgIGFbSE9VUl0gICAgICAgIDwgMCB8fCBhW0hPVVJdICAgICAgICA+IDI0IHx8IChhW0hPVVJdID09PSAyNCAmJiAoYVtNSU5VVEVdICE9PSAwIHx8IGFbU0VDT05EXSAhPT0gMCB8fCBhW01JTExJU0VDT05EXSAhPT0gMCkpID8gSE9VUiA6XG4gICAgICAgICAgICAgICAgYVtNSU5VVEVdICAgICAgPCAwIHx8IGFbTUlOVVRFXSAgICAgID4gNTkgID8gTUlOVVRFIDpcbiAgICAgICAgICAgICAgICBhW1NFQ09ORF0gICAgICA8IDAgfHwgYVtTRUNPTkRdICAgICAgPiA1OSAgPyBTRUNPTkQgOlxuICAgICAgICAgICAgICAgIGFbTUlMTElTRUNPTkRdIDwgMCB8fCBhW01JTExJU0VDT05EXSA+IDk5OSA/IE1JTExJU0VDT05EIDpcbiAgICAgICAgICAgICAgICAtMTtcblxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dEYXlPZlllYXIgJiYgKG92ZXJmbG93IDwgWUVBUiB8fCBvdmVyZmxvdyA+IERBVEUpKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBEQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dXZWVrcyAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtkYXkgJiYgb3ZlcmZsb3cgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBXRUVLREFZO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPSBvdmVyZmxvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIC8vIFBpY2sgdGhlIGZpcnN0IGRlZmluZWQgb2YgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy5cbiAgICBmdW5jdGlvbiBkZWZhdWx0cyhhLCBiLCBjKSB7XG4gICAgICAgIGlmIChhICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKSB7XG4gICAgICAgIC8vIGhvb2tzIGlzIGFjdHVhbGx5IHRoZSBleHBvcnRlZCBtb21lbnQgb2JqZWN0XG4gICAgICAgIHZhciBub3dWYWx1ZSA9IG5ldyBEYXRlKGhvb2tzLm5vdygpKTtcbiAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDKSB7XG4gICAgICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksIG5vd1ZhbHVlLmdldFVUQ01vbnRoKCksIG5vd1ZhbHVlLmdldFVUQ0RhdGUoKV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtub3dWYWx1ZS5nZXRGdWxsWWVhcigpLCBub3dWYWx1ZS5nZXRNb250aCgpLCBub3dWYWx1ZS5nZXREYXRlKCldO1xuICAgIH1cblxuICAgIC8vIGNvbnZlcnQgYW4gYXJyYXkgdG8gYSBkYXRlLlxuICAgIC8vIHRoZSBhcnJheSBzaG91bGQgbWlycm9yIHRoZSBwYXJhbWV0ZXJzIGJlbG93XG4gICAgLy8gbm90ZTogYWxsIHZhbHVlcyBwYXN0IHRoZSB5ZWFyIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBsb3dlc3QgcG9zc2libGUgdmFsdWUuXG4gICAgLy8gW3llYXIsIG1vbnRoLCBkYXkgLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUFycmF5IChjb25maWcpIHtcbiAgICAgICAgdmFyIGksIGRhdGUsIGlucHV0ID0gW10sIGN1cnJlbnREYXRlLCBleHBlY3RlZFdlZWtkYXksIHllYXJUb1VzZTtcblxuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKTtcblxuICAgICAgICAvL2NvbXB1dGUgZGF5IG9mIHRoZSB5ZWFyIGZyb20gd2Vla3MgYW5kIHdlZWtkYXlzXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgY29uZmlnLl9hW0RBVEVdID09IG51bGwgJiYgY29uZmlnLl9hW01PTlRIXSA9PSBudWxsKSB7XG4gICAgICAgICAgICBkYXlPZlllYXJGcm9tV2Vla0luZm8oY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vaWYgdGhlIGRheSBvZiB0aGUgeWVhciBpcyBzZXQsIGZpZ3VyZSBvdXQgd2hhdCBpdCBpc1xuICAgICAgICBpZiAoY29uZmlnLl9kYXlPZlllYXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgeWVhclRvVXNlID0gZGVmYXVsdHMoY29uZmlnLl9hW1lFQVJdLCBjdXJyZW50RGF0ZVtZRUFSXSk7XG5cbiAgICAgICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciA+IGRheXNJblllYXIoeWVhclRvVXNlKSB8fCBjb25maWcuX2RheU9mWWVhciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd0RheU9mWWVhciA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKHllYXJUb1VzZSwgMCwgY29uZmlnLl9kYXlPZlllYXIpO1xuICAgICAgICAgICAgY29uZmlnLl9hW01PTlRIXSA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtEQVRFXSA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IGRhdGUuXG4gICAgICAgIC8vICogaWYgbm8geWVhciwgbW9udGgsIGRheSBvZiBtb250aCBhcmUgZ2l2ZW4sIGRlZmF1bHQgdG8gdG9kYXlcbiAgICAgICAgLy8gKiBpZiBkYXkgb2YgbW9udGggaXMgZ2l2ZW4sIGRlZmF1bHQgbW9udGggYW5kIHllYXJcbiAgICAgICAgLy8gKiBpZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBvbmx5IHllYXJcbiAgICAgICAgLy8gKiBpZiB5ZWFyIGlzIGdpdmVuLCBkb24ndCBkZWZhdWx0IGFueXRoaW5nXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAzICYmIGNvbmZpZy5fYVtpXSA9PSBudWxsOyArK2kpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gY3VycmVudERhdGVbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBaZXJvIG91dCB3aGF0ZXZlciB3YXMgbm90IGRlZmF1bHRlZCwgaW5jbHVkaW5nIHRpbWVcbiAgICAgICAgZm9yICg7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gKGNvbmZpZy5fYVtpXSA9PSBudWxsKSA/IChpID09PSAyID8gMSA6IDApIDogY29uZmlnLl9hW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIDI0OjAwOjAwLjAwMFxuICAgICAgICBpZiAoY29uZmlnLl9hW0hPVVJdID09PSAyNCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtNSU5VVEVdID09PSAwICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW1NFQ09ORF0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbTUlMTElTRUNPTkRdID09PSAwKSB7XG4gICAgICAgICAgICBjb25maWcuX25leHREYXkgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZy5fZCA9IChjb25maWcuX3VzZVVUQyA/IGNyZWF0ZVVUQ0RhdGUgOiBjcmVhdGVEYXRlKS5hcHBseShudWxsLCBpbnB1dCk7XG4gICAgICAgIGV4cGVjdGVkV2Vla2RheSA9IGNvbmZpZy5fdXNlVVRDID8gY29uZmlnLl9kLmdldFVUQ0RheSgpIDogY29uZmlnLl9kLmdldERheSgpO1xuXG4gICAgICAgIC8vIEFwcGx5IHRpbWV6b25lIG9mZnNldCBmcm9tIGlucHV0LiBUaGUgYWN0dWFsIHV0Y09mZnNldCBjYW4gYmUgY2hhbmdlZFxuICAgICAgICAvLyB3aXRoIHBhcnNlWm9uZS5cbiAgICAgICAgaWYgKGNvbmZpZy5fdHptICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLl9uZXh0RGF5KSB7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAyNDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNoZWNrIGZvciBtaXNtYXRjaGluZyBkYXkgb2Ygd2Vla1xuICAgICAgICBpZiAoY29uZmlnLl93ICYmIHR5cGVvZiBjb25maWcuX3cuZCAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uZmlnLl93LmQgIT09IGV4cGVjdGVkV2Vla2RheSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykud2Vla2RheU1pc21hdGNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpIHtcbiAgICAgICAgdmFyIHcsIHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSwgdGVtcCwgd2Vla2RheU92ZXJmbG93O1xuXG4gICAgICAgIHcgPSBjb25maWcuX3c7XG4gICAgICAgIGlmICh3LkdHICE9IG51bGwgfHwgdy5XICE9IG51bGwgfHwgdy5FICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRvdyA9IDE7XG4gICAgICAgICAgICBkb3kgPSA0O1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBXZSBuZWVkIHRvIHRha2UgdGhlIGN1cnJlbnQgaXNvV2Vla1llYXIsIGJ1dCB0aGF0IGRlcGVuZHMgb25cbiAgICAgICAgICAgIC8vIGhvdyB3ZSBpbnRlcnByZXQgbm93IChsb2NhbCwgdXRjLCBmaXhlZCBvZmZzZXQpLiBTbyBjcmVhdGVcbiAgICAgICAgICAgIC8vIGEgbm93IHZlcnNpb24gb2YgY3VycmVudCBjb25maWcgKHRha2UgbG9jYWwvdXRjL29mZnNldCBmbGFncywgYW5kXG4gICAgICAgICAgICAvLyBjcmVhdGUgbm93KS5cbiAgICAgICAgICAgIHdlZWtZZWFyID0gZGVmYXVsdHMody5HRywgY29uZmlnLl9hW1lFQVJdLCB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIDEsIDQpLnllYXIpO1xuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcuVywgMSk7XG4gICAgICAgICAgICB3ZWVrZGF5ID0gZGVmYXVsdHMody5FLCAxKTtcbiAgICAgICAgICAgIGlmICh3ZWVrZGF5IDwgMSB8fCB3ZWVrZGF5ID4gNykge1xuICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkb3cgPSBjb25maWcuX2xvY2FsZS5fd2Vlay5kb3c7XG4gICAgICAgICAgICBkb3kgPSBjb25maWcuX2xvY2FsZS5fd2Vlay5kb3k7XG5cbiAgICAgICAgICAgIHZhciBjdXJXZWVrID0gd2Vla09mWWVhcihjcmVhdGVMb2NhbCgpLCBkb3csIGRveSk7XG5cbiAgICAgICAgICAgIHdlZWtZZWFyID0gZGVmYXVsdHMody5nZywgY29uZmlnLl9hW1lFQVJdLCBjdXJXZWVrLnllYXIpO1xuXG4gICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgd2Vlay5cbiAgICAgICAgICAgIHdlZWsgPSBkZWZhdWx0cyh3LncsIGN1cldlZWsud2Vlayk7XG5cbiAgICAgICAgICAgIGlmICh3LmQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIHdlZWtkYXkgLS0gbG93IGRheSBudW1iZXJzIGFyZSBjb25zaWRlcmVkIG5leHQgd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3LmQ7XG4gICAgICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAwIHx8IHdlZWtkYXkgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh3LmUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIGxvY2FsIHdlZWtkYXkgLS0gY291bnRpbmcgc3RhcnRzIGZyb20gYmVnaW5uaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5lICsgZG93O1xuICAgICAgICAgICAgICAgIGlmICh3LmUgPCAwIHx8IHcuZSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gYmVnaW5uaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gZG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3ZWVrIDwgMSB8fCB3ZWVrID4gd2Vla3NJblllYXIod2Vla1llYXIsIGRvdywgZG95KSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla3MgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWtkYXlPdmVyZmxvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrZGF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlbXAgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSA9IHRlbXAueWVhcjtcbiAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdGVtcC5kYXlPZlllYXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpc28gODYwMSByZWdleFxuICAgIC8vIDAwMDAtMDAtMDAgMDAwMC1XMDAgb3IgMDAwMC1XMDAtMCArIFQgKyAwMCBvciAwMDowMCBvciAwMDowMDowMCBvciAwMDowMDowMC4wMDAgKyArMDA6MDAgb3IgKzAwMDAgb3IgKzAwKVxuICAgIHZhciBleHRlbmRlZElzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KS0oPzpcXGRcXGQtXFxkXFxkfFdcXGRcXGQtXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86OlxcZFxcZCg/OjpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoW1xcK1xcLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvO1xuICAgIHZhciBiYXNpY0lzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KSg/OlxcZFxcZFxcZFxcZHxXXFxkXFxkXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86XFxkXFxkKD86XFxkXFxkKD86Wy4sXVxcZCspPyk/KT8pKFtcXCtcXC1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLztcblxuICAgIHZhciB0elJlZ2V4ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vO1xuXG4gICAgdmFyIGlzb0RhdGVzID0gW1xuICAgICAgICBbJ1lZWVlZWS1NTS1ERCcsIC9bKy1dXFxkezZ9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgWydZWVlZLU1NLUREJywgL1xcZHs0fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgIFsnR0dHRy1bV11XVy1FJywgL1xcZHs0fS1XXFxkXFxkLVxcZC9dLFxuICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXFxkezR9LVdcXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgIFsnWVlZWS1EREQnLCAvXFxkezR9LVxcZHszfS9dLFxuICAgICAgICBbJ1lZWVktTU0nLCAvXFxkezR9LVxcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZWVlNTUREJywgL1srLV1cXGR7MTB9L10sXG4gICAgICAgIFsnWVlZWU1NREQnLCAvXFxkezh9L10sXG4gICAgICAgIC8vIFlZWVlNTSBpcyBOT1QgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmRcbiAgICAgICAgWydHR0dHW1ddV1dFJywgL1xcZHs0fVdcXGR7M30vXSxcbiAgICAgICAgWydHR0dHW1ddV1cnLCAvXFxkezR9V1xcZHsyfS8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZREREJywgL1xcZHs3fS9dXG4gICAgXTtcblxuICAgIC8vIGlzbyB0aW1lIGZvcm1hdHMgYW5kIHJlZ2V4ZXNcbiAgICB2YXIgaXNvVGltZXMgPSBbXG4gICAgICAgIFsnSEg6bW06c3MuU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcyxTU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICBbJ0hIOm1tJywgL1xcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgWydISG1tc3MuU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgIFsnSEhtbXNzLFNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISG1tc3MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkL10sXG4gICAgICAgIFsnSEhtbScsIC9cXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgWydISCcsIC9cXGRcXGQvXVxuICAgIF07XG5cbiAgICB2YXIgYXNwTmV0SnNvblJlZ2V4ID0gL15cXC8/RGF0ZVxcKChcXC0/XFxkKykvaTtcblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlTTyhjb25maWcpIHtcbiAgICAgICAgdmFyIGksIGwsXG4gICAgICAgICAgICBzdHJpbmcgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBtYXRjaCA9IGV4dGVuZGVkSXNvUmVnZXguZXhlYyhzdHJpbmcpIHx8IGJhc2ljSXNvUmVnZXguZXhlYyhzdHJpbmcpLFxuICAgICAgICAgICAgYWxsb3dUaW1lLCBkYXRlRm9ybWF0LCB0aW1lRm9ybWF0LCB0ekZvcm1hdDtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmlzbyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29EYXRlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNvRGF0ZXNbaV1bMV0uZXhlYyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGlzb0RhdGVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICBhbGxvd1RpbWUgPSBpc29EYXRlc1tpXVsyXSAhPT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbM10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvVGltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IChtYXRjaFsyXSB8fCAnICcpICsgaXNvVGltZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhbGxvd1RpbWUgJiYgdGltZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR6UmVnZXguZXhlYyhtYXRjaFs0XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHpGb3JtYXQgPSAnWic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcuX2YgPSBkYXRlRm9ybWF0ICsgKHRpbWVGb3JtYXQgfHwgJycpICsgKHR6Rm9ybWF0IHx8ICcnKTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkZDIDI4MjIgcmVnZXg6IEZvciBkZXRhaWxzIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjgyMiNzZWN0aW9uLTMuM1xuICAgIHZhciByZmMyODIyID0gL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXFxkezR9KSkkLztcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MoeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpLFxuICAgICAgICAgICAgcGFyc2VJbnQoZGF5U3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChob3VyU3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW51dGVTdHIsIDEwKVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChzZWNvbmRTdHIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlSW50KHNlY29uZFN0ciwgMTApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhclN0cikge1xuICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KHllYXJTdHIsIDEwKTtcbiAgICAgICAgaWYgKHllYXIgPD0gNDkpIHtcbiAgICAgICAgICAgIHJldHVybiAyMDAwICsgeWVhcjtcbiAgICAgICAgfSBlbHNlIGlmICh5ZWFyIDw9IDk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIDE5MDAgKyB5ZWFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5ZWFyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFwoW14pXSpcXCl8W1xcblxcdF0vZywgJyAnKS5yZXBsYWNlKC8oXFxzXFxzKykvZywgJyAnKS5yZXBsYWNlKC9eXFxzXFxzKi8sICcnKS5yZXBsYWNlKC9cXHNcXHMqJC8sICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1dlZWtkYXkod2Vla2RheVN0ciwgcGFyc2VkSW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAod2Vla2RheVN0cikge1xuICAgICAgICAgICAgLy8gVE9ETzogUmVwbGFjZSB0aGUgdmFuaWxsYSBKUyBEYXRlIG9iamVjdCB3aXRoIGFuIGluZGVwZW50ZW50IGRheS1vZi13ZWVrIGNoZWNrLlxuICAgICAgICAgICAgdmFyIHdlZWtkYXlQcm92aWRlZCA9IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0ciksXG4gICAgICAgICAgICAgICAgd2Vla2RheUFjdHVhbCA9IG5ldyBEYXRlKHBhcnNlZElucHV0WzBdLCBwYXJzZWRJbnB1dFsxXSwgcGFyc2VkSW5wdXRbMl0pLmdldERheSgpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXlQcm92aWRlZCAhPT0gd2Vla2RheUFjdHVhbCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLndlZWtkYXlNaXNtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBvYnNPZmZzZXRzID0ge1xuICAgICAgICBVVDogMCxcbiAgICAgICAgR01UOiAwLFxuICAgICAgICBFRFQ6IC00ICogNjAsXG4gICAgICAgIEVTVDogLTUgKiA2MCxcbiAgICAgICAgQ0RUOiAtNSAqIDYwLFxuICAgICAgICBDU1Q6IC02ICogNjAsXG4gICAgICAgIE1EVDogLTYgKiA2MCxcbiAgICAgICAgTVNUOiAtNyAqIDYwLFxuICAgICAgICBQRFQ6IC03ICogNjAsXG4gICAgICAgIFBTVDogLTggKiA2MFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQob2JzT2Zmc2V0LCBtaWxpdGFyeU9mZnNldCwgbnVtT2Zmc2V0KSB7XG4gICAgICAgIGlmIChvYnNPZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gICAgICAgIH0gZWxzZSBpZiAobWlsaXRhcnlPZmZzZXQpIHtcbiAgICAgICAgICAgIC8vIHRoZSBvbmx5IGFsbG93ZWQgbWlsaXRhcnkgdHogaXMgWlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBwYXJzZUludChudW1PZmZzZXQsIDEwKTtcbiAgICAgICAgICAgIHZhciBtID0gaG0gJSAxMDAsIGggPSAoaG0gLSBtKSAvIDEwMDtcbiAgICAgICAgICAgIHJldHVybiBoICogNjAgKyBtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBhbmQgdGltZSBmcm9tIHJlZiAyODIyIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2ggPSByZmMyODIyLmV4ZWMocHJlcHJvY2Vzc1JGQzI4MjIoY29uZmlnLl9pKSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdmFyIHBhcnNlZEFycmF5ID0gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhtYXRjaFs0XSwgbWF0Y2hbM10sIG1hdGNoWzJdLCBtYXRjaFs1XSwgbWF0Y2hbNl0sIG1hdGNoWzddKTtcbiAgICAgICAgICAgIGlmICghY2hlY2tXZWVrZGF5KG1hdGNoWzFdLCBwYXJzZWRBcnJheSwgY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uZmlnLl9hID0gcGFyc2VkQXJyYXk7XG4gICAgICAgICAgICBjb25maWcuX3R6bSA9IGNhbGN1bGF0ZU9mZnNldChtYXRjaFs4XSwgbWF0Y2hbOV0sIG1hdGNoWzEwXSk7XG5cbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGNyZWF0ZVVUQ0RhdGUuYXBwbHkobnVsbCwgY29uZmlnLl9hKTtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnJmYzI4MjIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gaXNvIGZvcm1hdCBvciBmYWxsYmFja1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gYXNwTmV0SnNvblJlZ2V4LmV4ZWMoY29uZmlnLl9pKTtcblxuICAgICAgICBpZiAobWF0Y2hlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoK21hdGNoZWRbMV0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluYWwgYXR0ZW1wdCwgdXNlIElucHV0IEZhbGxiYWNrXG4gICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2sgPSBkZXByZWNhdGUoXG4gICAgICAgICd2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgJyArXG4gICAgICAgICd3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlICcgK1xuICAgICAgICAnZGlzY291cmFnZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyBtYWpvciByZWxlYXNlLiBQbGVhc2UgcmVmZXIgdG8gJyArXG4gICAgICAgICdodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uJyxcbiAgICAgICAgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoY29uZmlnLl9pICsgKGNvbmZpZy5fdXNlVVRDID8gJyBVVEMnIDogJycpKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0YW5kYXJkXG4gICAgaG9va3MuSVNPXzg2MDEgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBSRkMgMjgyMiBmb3JtXG4gICAgaG9va3MuUkZDXzI4MjIgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmdcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZykge1xuICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8gYW5vdGhlciBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBmbG93IHRvIHByZXZlbnQgY2lyY3VsYXIgZGVwc1xuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5JU09fODYwMSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLlJGQ18yODIyKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5fYSA9IFtdO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IHRydWU7XG5cbiAgICAgICAgLy8gVGhpcyBhcnJheSBpcyB1c2VkIHRvIG1ha2UgYSBEYXRlLCBlaXRoZXIgd2l0aCBgbmV3IERhdGVgIG9yIGBEYXRlLlVUQ2BcbiAgICAgICAgdmFyIHN0cmluZyA9ICcnICsgY29uZmlnLl9pLFxuICAgICAgICAgICAgaSwgcGFyc2VkSW5wdXQsIHRva2VucywgdG9rZW4sIHNraXBwZWQsXG4gICAgICAgICAgICBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCA9IDA7XG5cbiAgICAgICAgdG9rZW5zID0gZXhwYW5kRm9ybWF0KGNvbmZpZy5fZiwgY29uZmlnLl9sb2NhbGUpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpIHx8IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHwgW10pWzBdO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Rva2VuJywgdG9rZW4sICdwYXJzZWRJbnB1dCcsIHBhcnNlZElucHV0LFxuICAgICAgICAgICAgLy8gICAgICAgICAncmVnZXgnLCBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgc2tpcHBlZCA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpKTtcbiAgICAgICAgICAgICAgICBpZiAoc2tpcHBlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc2tpcHBlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZShzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkgKyBwYXJzZWRJbnB1dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggKz0gcGFyc2VkSW5wdXQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgaWYgaXQncyBub3QgYSBrbm93biB0b2tlblxuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkVG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgcGFyc2VkSW5wdXQsIGNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb25maWcuX3N0cmljdCAmJiAhcGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGQgcmVtYWluaW5nIHVucGFyc2VkIGlucHV0IGxlbmd0aCB0byB0aGUgc3RyaW5nXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmNoYXJzTGVmdE92ZXIgPSBzdHJpbmdMZW5ndGggLSB0b3RhbFBhcnNlZElucHV0TGVuZ3RoO1xuICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNsZWFyIF8xMmggZmxhZyBpZiBob3VyIGlzIDw9IDEyXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPD0gMTIgJiZcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5wYXJzZWREYXRlUGFydHMgPSBjb25maWcuX2Euc2xpY2UoMCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLm1lcmlkaWVtID0gY29uZmlnLl9tZXJpZGllbTtcbiAgICAgICAgLy8gaGFuZGxlIG1lcmlkaWVtXG4gICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IG1lcmlkaWVtRml4V3JhcChjb25maWcuX2xvY2FsZSwgY29uZmlnLl9hW0hPVVJdLCBjb25maWcuX21lcmlkaWVtKTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgY2hlY2tPdmVyZmxvdyhjb25maWcpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwIChsb2NhbGUsIGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgIHZhciBpc1BtO1xuXG4gICAgICAgIGlmIChtZXJpZGllbSA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLm1lcmlkaWVtSG91ciAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLm1lcmlkaWVtSG91cihob3VyLCBtZXJpZGllbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxlLmlzUE0gIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2tcbiAgICAgICAgICAgIGlzUG0gPSBsb2NhbGUuaXNQTShtZXJpZGllbSk7XG4gICAgICAgICAgICBpZiAoaXNQbSAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyICs9IDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1BtICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHN1cHBvc2VkIHRvIGhhcHBlblxuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBhcnJheSBvZiBmb3JtYXQgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIHRlbXBDb25maWcsXG4gICAgICAgICAgICBiZXN0TW9tZW50LFxuXG4gICAgICAgICAgICBzY29yZVRvQmVhdCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWcuX2YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSA9IDA7XG4gICAgICAgICAgICB0ZW1wQ29uZmlnID0gY29weUNvbmZpZyh7fSwgY29uZmlnKTtcbiAgICAgICAgICAgIGlmIChjb25maWcuX3VzZVVUQyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGVtcENvbmZpZy5fdXNlVVRDID0gY29uZmlnLl91c2VVVEM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZW1wQ29uZmlnLl9mID0gY29uZmlnLl9mW2ldO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCh0ZW1wQ29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHRlbXBDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueSBpbnB1dCB0aGF0IHdhcyBub3QgcGFyc2VkIGFkZCBhIHBlbmFsdHkgZm9yIHRoYXQgZm9ybWF0XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLmNoYXJzTGVmdE92ZXI7XG5cbiAgICAgICAgICAgIC8vb3IgdG9rZW5zXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnVudXNlZFRva2Vucy5sZW5ndGggKiAxMDtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnNjb3JlID0gY3VycmVudFNjb3JlO1xuXG4gICAgICAgICAgICBpZiAoc2NvcmVUb0JlYXQgPT0gbnVsbCB8fCBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCkge1xuICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXh0ZW5kKGNvbmZpZywgYmVzdE1vbWVudCB8fCB0ZW1wQ29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tT2JqZWN0KGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGNvbmZpZy5faSk7XG4gICAgICAgIGNvbmZpZy5fYSA9IG1hcChbaS55ZWFyLCBpLm1vbnRoLCBpLmRheSB8fCBpLmRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vjb25kLCBpLm1pbGxpc2Vjb25kXSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbmZpZyAoY29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3cocHJlcGFyZUNvbmZpZyhjb25maWcpKSk7XG4gICAgICAgIGlmIChyZXMuX25leHREYXkpIHtcbiAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVFxuICAgICAgICAgICAgcmVzLmFkZCgxLCAnZCcpO1xuICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnIChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgZm9ybWF0ID0gY29uZmlnLl9mO1xuXG4gICAgICAgIGNvbmZpZy5fbG9jYWxlID0gY29uZmlnLl9sb2NhbGUgfHwgZ2V0TG9jYWxlKGNvbmZpZy5fbCk7XG5cbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsIHx8IChmb3JtYXQgPT09IHVuZGVmaW5lZCAmJiBpbnB1dCA9PT0gJycpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCh7bnVsbElucHV0OiB0cnVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnLl9pID0gaW5wdXQgPSBjb25maWcuX2xvY2FsZS5wcmVwYXJzZShpbnB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNb21lbnQoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vbWVudChjaGVja092ZXJmbG93KGlucHV0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gaW5wdXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShmb3JtYXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSW5wdXQoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNWYWxpZChjb25maWcpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZyhjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2EgPSBtYXAoaW5wdXQuc2xpY2UoMCksIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbU9iamVjdChjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbE9yVVRDIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgaXNVVEMpIHtcbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBpZiAobG9jYWxlID09PSB0cnVlIHx8IGxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoaXNPYmplY3QoaW5wdXQpICYmIGlzT2JqZWN0RW1wdHkoaW5wdXQpKSB8fFxuICAgICAgICAgICAgICAgIChpc0FycmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MjNcbiAgICAgICAgYy5faXNBTW9tZW50T2JqZWN0ID0gdHJ1ZTtcbiAgICAgICAgYy5fdXNlVVRDID0gYy5faXNVVEMgPSBpc1VUQztcbiAgICAgICAgYy5fbCA9IGxvY2FsZTtcbiAgICAgICAgYy5faSA9IGlucHV0O1xuICAgICAgICBjLl9mID0gZm9ybWF0O1xuICAgICAgICBjLl9zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21Db25maWcoYyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWwgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvdHlwZU1pbiA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPCB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIHZhciBwcm90b3R5cGVNYXggPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID4gdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBQaWNrIGEgbW9tZW50IG0gZnJvbSBtb21lbnRzIHNvIHRoYXQgbVtmbl0ob3RoZXIpIGlzIHRydWUgZm9yIGFsbFxuICAgIC8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rpb24gZm4gdG8gYmUgdHJhbnNpdGl2ZS5cbiAgICAvL1xuICAgIC8vIG1vbWVudHMgc2hvdWxkIGVpdGhlciBiZSBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cyBvciBhbiBhcnJheSwgd2hvc2VcbiAgICAvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzLlxuICAgIGZ1bmN0aW9uIHBpY2tCeShmbiwgbW9tZW50cykge1xuICAgICAgICB2YXIgcmVzLCBpO1xuICAgICAgICBpZiAobW9tZW50cy5sZW5ndGggPT09IDEgJiYgaXNBcnJheShtb21lbnRzWzBdKSkge1xuICAgICAgICAgICAgbW9tZW50cyA9IG1vbWVudHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gbW9tZW50c1swXTtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tpXVtmbl0ocmVzKSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkP1xuICAgIGZ1bmN0aW9uIG1pbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQmVmb3JlJywgYXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF4ICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNBZnRlcicsIGFyZ3MpO1xuICAgIH1cblxuICAgIHZhciBub3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUubm93KCkgOiArKG5ldyBEYXRlKCkpO1xuICAgIH07XG5cbiAgICB2YXIgb3JkZXJpbmcgPSBbJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCAnbWlsbGlzZWNvbmQnXTtcblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb25WYWxpZChtKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBtKSB7XG4gICAgICAgICAgICBpZiAoIShpbmRleE9mLmNhbGwob3JkZXJpbmcsIGtleSkgIT09IC0xICYmIChtW2tleV0gPT0gbnVsbCB8fCAhaXNOYU4obVtrZXldKSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHVuaXRIYXNEZWNpbWFsID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChtW29yZGVyaW5nW2ldXSkge1xuICAgICAgICAgICAgICAgIGlmICh1bml0SGFzRGVjaW1hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG9ubHkgYWxsb3cgbm9uLWludGVnZXJzIGZvciBzbWFsbGVzdCB1bml0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KG1bb3JkZXJpbmdbaV1dKSAhPT0gdG9JbnQobVtvcmRlcmluZ1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKE5hTik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRHVyYXRpb24gKGR1cmF0aW9uKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSBub3JtYWxpemVPYmplY3RVbml0cyhkdXJhdGlvbiksXG4gICAgICAgICAgICB5ZWFycyA9IG5vcm1hbGl6ZWRJbnB1dC55ZWFyIHx8IDAsXG4gICAgICAgICAgICBxdWFydGVycyA9IG5vcm1hbGl6ZWRJbnB1dC5xdWFydGVyIHx8IDAsXG4gICAgICAgICAgICBtb250aHMgPSBub3JtYWxpemVkSW5wdXQubW9udGggfHwgMCxcbiAgICAgICAgICAgIHdlZWtzID0gbm9ybWFsaXplZElucHV0LndlZWsgfHwgbm9ybWFsaXplZElucHV0Lmlzb1dlZWsgfHwgMCxcbiAgICAgICAgICAgIGRheXMgPSBub3JtYWxpemVkSW5wdXQuZGF5IHx8IDAsXG4gICAgICAgICAgICBob3VycyA9IG5vcm1hbGl6ZWRJbnB1dC5ob3VyIHx8IDAsXG4gICAgICAgICAgICBtaW51dGVzID0gbm9ybWFsaXplZElucHV0Lm1pbnV0ZSB8fCAwLFxuICAgICAgICAgICAgc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5zZWNvbmQgfHwgMCxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5taWxsaXNlY29uZCB8fCAwO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc0R1cmF0aW9uVmFsaWQobm9ybWFsaXplZElucHV0KTtcblxuICAgICAgICAvLyByZXByZXNlbnRhdGlvbiBmb3IgZGF0ZUFkZFJlbW92ZVxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSArbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHNlY29uZHMgKiAxZTMgKyAvLyAxMDAwXG4gICAgICAgICAgICBtaW51dGVzICogNmU0ICsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzhcbiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhXG4gICAgICAgIC8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHlcbiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICtcbiAgICAgICAgICAgIHdlZWtzICogNztcbiAgICAgICAgLy8gSXQgaXMgaW1wb3NzaWJsZSB0byB0cmFuc2xhdGUgbW9udGhzIGludG8gZGF5cyB3aXRob3V0IGtub3dpbmdcbiAgICAgICAgLy8gd2hpY2ggbW9udGhzIHlvdSBhcmUgYXJlIHRhbGtpbmcgYWJvdXQsIHNvIHdlIGhhdmUgdG8gc3RvcmVcbiAgICAgICAgLy8gaXQgc2VwYXJhdGVseS5cbiAgICAgICAgdGhpcy5fbW9udGhzID0gK21vbnRocyArXG4gICAgICAgICAgICBxdWFydGVycyAqIDMgK1xuICAgICAgICAgICAgeWVhcnMgKiAxMjtcblxuICAgICAgICB0aGlzLl9kYXRhID0ge307XG5cbiAgICAgICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgdGhpcy5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEdXJhdGlvbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNSb3VuZCAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgtMSAqIG51bWJlcikgKiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBvZmZzZXQgKHRva2VuLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICAgICAgdmFyIHNpZ24gPSAnKyc7XG4gICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgc2lnbiA9ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaWduICsgemVyb0ZpbGwofn4ob2Zmc2V0IC8gNjApLCAyKSArIHNlcGFyYXRvciArIHplcm9GaWxsKH5+KG9mZnNldCkgJSA2MCwgMik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9mZnNldCgnWicsICc6Jyk7XG4gICAgb2Zmc2V0KCdaWicsICcnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1onLCAgbWF0Y2hTaG9ydE9mZnNldCk7XG4gICAgYWRkUmVnZXhUb2tlbignWlonLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnWicsICdaWiddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl91c2VVVEMgPSB0cnVlO1xuICAgICAgICBjb25maWcuX3R6bSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gdGltZXpvbmUgY2h1bmtlclxuICAgIC8vICcrMTA6MDAnID4gWycxMCcsICAnMDAnXVxuICAgIC8vICctMTUzMCcgID4gWyctMTUnLCAnMzAnXVxuICAgIHZhciBjaHVua09mZnNldCA9IC8oW1xcK1xcLV18XFxkXFxkKS9naTtcblxuICAgIGZ1bmN0aW9uIG9mZnNldEZyb21TdHJpbmcobWF0Y2hlciwgc3RyaW5nKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gKHN0cmluZyB8fCAnJykubWF0Y2gobWF0Y2hlcik7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNodW5rICAgPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0gfHwgW107XG4gICAgICAgIHZhciBwYXJ0cyAgID0gKGNodW5rICsgJycpLm1hdGNoKGNodW5rT2Zmc2V0KSB8fCBbJy0nLCAwLCAwXTtcbiAgICAgICAgdmFyIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pO1xuXG4gICAgICAgIHJldHVybiBtaW51dGVzID09PSAwID9cbiAgICAgICAgICAwIDpcbiAgICAgICAgICBwYXJ0c1swXSA9PT0gJysnID8gbWludXRlcyA6IC1taW51dGVzO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhIG1vbWVudCBmcm9tIGlucHV0LCB0aGF0IGlzIGxvY2FsL3V0Yy96b25lIGVxdWl2YWxlbnQgdG8gbW9kZWwuXG4gICAgZnVuY3Rpb24gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCBtb2RlbCkge1xuICAgICAgICB2YXIgcmVzLCBkaWZmO1xuICAgICAgICBpZiAobW9kZWwuX2lzVVRDKSB7XG4gICAgICAgICAgICByZXMgPSBtb2RlbC5jbG9uZSgpO1xuICAgICAgICAgICAgZGlmZiA9IChpc01vbWVudChpbnB1dCkgfHwgaXNEYXRlKGlucHV0KSA/IGlucHV0LnZhbHVlT2YoKSA6IGNyZWF0ZUxvY2FsKGlucHV0KS52YWx1ZU9mKCkpIC0gcmVzLnZhbHVlT2YoKTtcbiAgICAgICAgICAgIC8vIFVzZSBsb3ctbGV2ZWwgYXBpLCBiZWNhdXNlIHRoaXMgZm4gaXMgbG93LWxldmVsIGFwaS5cbiAgICAgICAgICAgIHJlcy5fZC5zZXRUaW1lKHJlcy5fZC52YWx1ZU9mKCkgKyBkaWZmKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChyZXMsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQpLmxvY2FsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXRlT2Zmc2V0IChtKSB7XG4gICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICAgICAgICByZXR1cm4gLU1hdGgucm91bmQobS5fZC5nZXRUaW1lem9uZU9mZnNldCgpIC8gMTUpICogMTU7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBtb21lbnQgaXMgbXV0YXRlZC5cbiAgICAvLyBJdCBpcyBpbnRlbmRlZCB0byBrZWVwIHRoZSBvZmZzZXQgaW4gc3luYyB3aXRoIHRoZSB0aW1lem9uZS5cbiAgICBob29rcy51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIGtlZXBMb2NhbFRpbWUgPSB0cnVlIG1lYW5zIG9ubHkgY2hhbmdlIHRoZSB0aW1lem9uZSwgd2l0aG91dFxuICAgIC8vIGFmZmVjdGluZyB0aGUgbG9jYWwgaG91ci4gU28gNTozMToyNiArMDMwMCAtLVt1dGNPZmZzZXQoMiwgdHJ1ZSldLS0+XG4gICAgLy8gNTozMToyNiArMDIwMCBJdCBpcyBwb3NzaWJsZSB0aGF0IDU6MzE6MjYgZG9lc24ndCBleGlzdCB3aXRoIG9mZnNldFxuICAgIC8vICswMjAwLCBzbyB3ZSBhZGp1c3QgdGhlIHRpbWUgYXMgbmVlZGVkLCB0byBiZSB2YWxpZC5cbiAgICAvL1xuICAgIC8vIEtlZXBpbmcgdGhlIHRpbWUgYWN0dWFsbHkgYWRkcy9zdWJ0cmFjdHMgKG9uZSBob3VyKVxuICAgIC8vIGZyb20gdGhlIGFjdHVhbCByZXByZXNlbnRlZCB0aW1lLiBUaGF0IGlzIHdoeSB3ZSBjYWxsIHVwZGF0ZU9mZnNldFxuICAgIC8vIGEgc2Vjb25kIHRpbWUuIEluIGNhc2UgaXQgd2FudHMgdXMgdG8gY2hhbmdlIHRoZSBvZmZzZXQgYWdhaW5cbiAgICAvLyBfY2hhbmdlSW5Qcm9ncmVzcyA9PSB0cnVlIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBhZGp1c3QsIGJlY2F1c2VcbiAgICAvLyB0aGVyZSBpcyBubyBzdWNoIHRpbWUgaW4gdGhlIGdpdmVuIHRpbWV6b25lLlxuICAgIGZ1bmN0aW9uIGdldFNldE9mZnNldCAoaW5wdXQsIGtlZXBMb2NhbFRpbWUsIGtlZXBNaW51dGVzKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9vZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIGxvY2FsQWRqdXN0O1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChNYXRoLmFicyhpbnB1dCkgPCAxNiAmJiAha2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0ICogNjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzVVRDICYmIGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICBsb2NhbEFkanVzdCA9IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXQgPSBpbnB1dDtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChsb2NhbEFkanVzdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGQobG9jYWxBZGp1c3QsICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmICgha2VlcExvY2FsVGltZSB8fCB0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGNyZWF0ZUR1cmF0aW9uKGlucHV0IC0gb2Zmc2V0LCAnbScpLCAxLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRab25lIChpbnB1dCwga2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IC1pbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb0xvY2FsIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1VUQykge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3VidHJhY3QoZ2V0RGF0ZU9mZnNldCh0aGlzKSwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldCAoKSB7XG4gICAgICAgIGlmICh0aGlzLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0LCB0aGlzLl9pKTtcbiAgICAgICAgICAgIGlmICh0Wm9uZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodFpvbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzQWxpZ25lZEhvdXJPZmZzZXQgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dCA9IGlucHV0ID8gY3JlYXRlTG9jYWwoaW5wdXQpLnV0Y09mZnNldCgpIDogMDtcblxuICAgICAgICByZXR1cm4gKHRoaXMudXRjT2Zmc2V0KCkgLSBpbnB1dCkgJSA2MCA9PT0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZSAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkICgpIHtcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9pc0RTVFNoaWZ0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBjb3B5Q29uZmlnKGMsIHRoaXMpO1xuICAgICAgICBjID0gcHJlcGFyZUNvbmZpZyhjKTtcblxuICAgICAgICBpZiAoYy5fYSkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gYy5faXNVVEMgPyBjcmVhdGVVVEMoYy5fYSkgOiBjcmVhdGVMb2NhbChjLl9hKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgY29tcGFyZUFycmF5cyhjLl9hLCBvdGhlci50b0FycmF5KCkpID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gIXRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGNPZmZzZXQgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVXRjICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4XG4gICAgdmFyIGFzcE5ldFJlZ2V4ID0gL14oXFwtfFxcKyk/KD86KFxcZCopWy4gXSk/KFxcZCspXFw6KFxcZCspKD86XFw6KFxcZCspKFxcLlxcZCopPyk/JC87XG5cbiAgICAvLyBmcm9tIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9naXQvY2xvc3VyZV9nb29nX2RhdGVfZGF0ZS5qcy5zb3VyY2UuaHRtbFxuICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmVcbiAgICAvLyBhbmQgZnVydGhlciBtb2RpZmllZCB0byBhbGxvdyBmb3Igc3RyaW5ncyBjb250YWluaW5nIGJvdGggd2VlayBhbmQgZGF5XG4gICAgdmFyIGlzb1JlZ2V4ID0gL14oLXxcXCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLztcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUR1cmF0aW9uIChpbnB1dCwga2V5KSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGlucHV0LFxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYWdhaW5zdCByZWdleHAgaXMgZXhwZW5zaXZlLCBkbyBpdCBvbiBkZW1hbmRcbiAgICAgICAgICAgIG1hdGNoID0gbnVsbCxcbiAgICAgICAgICAgIHNpZ24sXG4gICAgICAgICAgICByZXQsXG4gICAgICAgICAgICBkaWZmUmVzO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbXMgOiBpbnB1dC5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgICAgIGQgIDogaW5wdXQuX2RheXMsXG4gICAgICAgICAgICAgICAgTSAgOiBpbnB1dC5fbW9udGhzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbltrZXldID0gaW5wdXQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uLm1pbGxpc2Vjb25kcyA9IGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gYXNwTmV0UmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeSAgOiAwLFxuICAgICAgICAgICAgICAgIGQgIDogdG9JbnQobWF0Y2hbREFURV0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBoICA6IHRvSW50KG1hdGNoW0hPVVJdKSAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbSAgOiB0b0ludChtYXRjaFtNSU5VVEVdKSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIHMgIDogdG9JbnQobWF0Y2hbU0VDT05EXSkgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBtcyA6IHRvSW50KGFic1JvdW5kKG1hdGNoW01JTExJU0VDT05EXSAqIDEwMDApKSAqIHNpZ24gLy8gdGhlIG1pbGxpc2Vjb25kIGRlY2ltYWwgcG9pbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1hdGNoXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gaXNvUmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeSA6IHBhcnNlSXNvKG1hdGNoWzJdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBNIDogcGFyc2VJc28obWF0Y2hbM10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHcgOiBwYXJzZUlzbyhtYXRjaFs0XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgZCA6IHBhcnNlSXNvKG1hdGNoWzVdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBoIDogcGFyc2VJc28obWF0Y2hbNl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIG0gOiBwYXJzZUlzbyhtYXRjaFs3XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgcyA6IHBhcnNlSXNvKG1hdGNoWzhdLCBzaWduKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChkdXJhdGlvbiA9PSBudWxsKSB7Ly8gY2hlY2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZHVyYXRpb24gPT09ICdvYmplY3QnICYmICgnZnJvbScgaW4gZHVyYXRpb24gfHwgJ3RvJyBpbiBkdXJhdGlvbikpIHtcbiAgICAgICAgICAgIGRpZmZSZXMgPSBtb21lbnRzRGlmZmVyZW5jZShjcmVhdGVMb2NhbChkdXJhdGlvbi5mcm9tKSwgY3JlYXRlTG9jYWwoZHVyYXRpb24udG8pKTtcblxuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGR1cmF0aW9uLm1zID0gZGlmZlJlcy5taWxsaXNlY29uZHM7XG4gICAgICAgICAgICBkdXJhdGlvbi5NID0gZGlmZlJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXQgPSBuZXcgRHVyYXRpb24oZHVyYXRpb24pO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSAmJiBoYXNPd25Qcm9wKGlucHV0LCAnX2xvY2FsZScpKSB7XG4gICAgICAgICAgICByZXQuX2xvY2FsZSA9IGlucHV0Ll9sb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGNyZWF0ZUR1cmF0aW9uLmZuID0gRHVyYXRpb24ucHJvdG90eXBlO1xuICAgIGNyZWF0ZUR1cmF0aW9uLmludmFsaWQgPSBjcmVhdGVJbnZhbGlkJDE7XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzbyAoaW5wLCBzaWduKSB7XG4gICAgICAgIC8vIFdlJ2Qgbm9ybWFsbHkgdXNlIH5+aW5wIGZvciB0aGlzLCBidXQgdW5mb3J0dW5hdGVseSBpdCBhbHNvXG4gICAgICAgIC8vIGNvbnZlcnRzIGZsb2F0cyB0byBpbnRzLlxuICAgICAgICAvLyBpbnAgbWF5IGJlIHVuZGVmaW5lZCwgc28gY2FyZWZ1bCBjYWxsaW5nIHJlcGxhY2Ugb24gaXQuXG4gICAgICAgIHZhciByZXMgPSBpbnAgJiYgcGFyc2VGbG9hdChpbnAucmVwbGFjZSgnLCcsICcuJykpO1xuICAgICAgICAvLyBhcHBseSBzaWduIHdoaWxlIHdlJ3JlIGF0IGl0XG4gICAgICAgIHJldHVybiAoaXNOYU4ocmVzKSA/IDAgOiByZXMpICogc2lnbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXMgPSB7fTtcblxuICAgICAgICByZXMubW9udGhzID0gb3RoZXIubW9udGgoKSAtIGJhc2UubW9udGgoKSArXG4gICAgICAgICAgICAob3RoZXIueWVhcigpIC0gYmFzZS55ZWFyKCkpICogMTI7XG4gICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHtcbiAgICAgICAgICAgIC0tcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSArb3RoZXIgLSArKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzO1xuICAgICAgICBpZiAoIShiYXNlLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcbiAgICAgICAgfVxuXG4gICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zmc2V0KG90aGVyLCBiYXNlKTtcbiAgICAgICAgaWYgKGJhc2UuaXNCZWZvcmUob3RoZXIpKSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2Uob3RoZXIsIGJhc2UpO1xuICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1yZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRlciBkZXByZWNhdGlvbiBpcyByZW1vdmVkXG4gICAgZnVuY3Rpb24gY3JlYXRlQWRkZXIoZGlyZWN0aW9uLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBkdXIsIHRtcDtcbiAgICAgICAgICAgIC8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBjb21wbGFpbiBhYm91dCBpdFxuICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0gbnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUobmFtZSwgJ21vbWVudCgpLicgKyBuYW1lICArICcocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuJyArIG5hbWUgKyAnKG51bWJlciwgcGVyaW9kKS4gJyArXG4gICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICB0bXAgPSB2YWw7IHZhbCA9IHBlcmlvZDsgcGVyaW9kID0gdG1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWwgPSB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/ICt2YWwgOiB2YWw7XG4gICAgICAgICAgICBkdXIgPSBjcmVhdGVEdXJhdGlvbih2YWwsIHBlcmlvZCk7XG4gICAgICAgICAgICBhZGRTdWJ0cmFjdCh0aGlzLCBkdXIsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCAobW9tLCBkdXJhdGlvbiwgaXNBZGRpbmcsIHVwZGF0ZU9mZnNldCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSBhYnNSb3VuZChkdXJhdGlvbi5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVPZmZzZXQgPSB1cGRhdGVPZmZzZXQgPT0gbnVsbCA/IHRydWUgOiB1cGRhdGVPZmZzZXQ7XG5cbiAgICAgICAgaWYgKG1vbnRocykge1xuICAgICAgICAgICAgc2V0TW9udGgobW9tLCBnZXQobW9tLCAnTW9udGgnKSArIG1vbnRocyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF5cykge1xuICAgICAgICAgICAgc2V0JDEobW9tLCAnRGF0ZScsIGdldChtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICAgIG1vbS5fZC5zZXRUaW1lKG1vbS5fZC52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZU9mZnNldCkge1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KG1vbSwgZGF5cyB8fCBtb250aHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFkZCAgICAgID0gY3JlYXRlQWRkZXIoMSwgJ2FkZCcpO1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3QnKTtcblxuICAgIGZ1bmN0aW9uIGdldENhbGVuZGFyRm9ybWF0KG15TW9tZW50LCBub3cpIHtcbiAgICAgICAgdmFyIGRpZmYgPSBteU1vbWVudC5kaWZmKG5vdywgJ2RheXMnLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGRpZmYgPCAtNiA/ICdzYW1lRWxzZScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAtMSA/ICdsYXN0V2VlaycgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAwID8gJ2xhc3REYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMSA/ICdzYW1lRGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDIgPyAnbmV4dERheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCA3ID8gJ25leHRXZWVrJyA6ICdzYW1lRWxzZSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIkMSAodGltZSwgZm9ybWF0cykge1xuICAgICAgICAvLyBXZSB3YW50IHRvIGNvbXBhcmUgdGhlIHN0YXJ0IG9mIHRvZGF5LCB2cyB0aGlzLlxuICAgICAgICAvLyBHZXR0aW5nIHN0YXJ0LW9mLXRvZGF5IGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBsb2NhbC91dGMvb2Zmc2V0IG9yIG5vdC5cbiAgICAgICAgdmFyIG5vdyA9IHRpbWUgfHwgY3JlYXRlTG9jYWwoKSxcbiAgICAgICAgICAgIHNvZCA9IGNsb25lV2l0aE9mZnNldChub3csIHRoaXMpLnN0YXJ0T2YoJ2RheScpLFxuICAgICAgICAgICAgZm9ybWF0ID0gaG9va3MuY2FsZW5kYXJGb3JtYXQodGhpcywgc29kKSB8fCAnc2FtZUVsc2UnO1xuXG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRzICYmIChpc0Z1bmN0aW9uKGZvcm1hdHNbZm9ybWF0XSkgPyBmb3JtYXRzW2Zvcm1hdF0uY2FsbCh0aGlzLCBub3cpIDogZm9ybWF0c1tmb3JtYXRdKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQob3V0cHV0IHx8IHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGZvcm1hdCwgdGhpcywgY3JlYXRlTG9jYWwobm93KSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBZnRlciAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID4gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxJbnB1dC52YWx1ZU9mKCkgPCB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZWZvcmUgKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JldHdlZW4gKGZyb20sIHRvLCB1bml0cywgaW5jbHVzaXZpdHkpIHtcbiAgICAgICAgdmFyIGxvY2FsRnJvbSA9IGlzTW9tZW50KGZyb20pID8gZnJvbSA6IGNyZWF0ZUxvY2FsKGZyb20pLFxuICAgICAgICAgICAgbG9jYWxUbyA9IGlzTW9tZW50KHRvKSA/IHRvIDogY3JlYXRlTG9jYWwodG8pO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbEZyb20uaXNWYWxpZCgpICYmIGxvY2FsVG8uaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGluY2x1c2l2aXR5ID0gaW5jbHVzaXZpdHkgfHwgJygpJztcbiAgICAgICAgcmV0dXJuIChpbmNsdXNpdml0eVswXSA9PT0gJygnID8gdGhpcy5pc0FmdGVyKGxvY2FsRnJvbSwgdW5pdHMpIDogIXRoaXMuaXNCZWZvcmUobG9jYWxGcm9tLCB1bml0cykpICYmXG4gICAgICAgICAgICAoaW5jbHVzaXZpdHlbMV0gPT09ICcpJyA/IHRoaXMuaXNCZWZvcmUobG9jYWxUbywgdW5pdHMpIDogIXRoaXMuaXNBZnRlcihsb2NhbFRvLCB1bml0cykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCksXG4gICAgICAgICAgICBpbnB1dE1zO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA9PT0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dE1zID0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckFmdGVyIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0FmdGVyKGlucHV0LCB1bml0cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lT3JCZWZvcmUgKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQmVmb3JlKGlucHV0LCB1bml0cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGlmZiAoaW5wdXQsIHVuaXRzLCBhc0Zsb2F0KSB7XG4gICAgICAgIHZhciB0aGF0LFxuICAgICAgICAgICAgem9uZURlbHRhLFxuICAgICAgICAgICAgb3V0cHV0O1xuXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGF0ID0gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCB0aGlzKTtcblxuICAgICAgICBpZiAoIXRoYXQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgem9uZURlbHRhID0gKHRoYXQudXRjT2Zmc2V0KCkgLSB0aGlzLnV0Y09mZnNldCgpKSAqIDZlNDtcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMTI7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCk7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KSAvIDM7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDFlMzsgYnJlYWs7IC8vIDEwMDBcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyA2ZTQ7IGJyZWFrOyAvLyAxMDAwICogNjBcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gMzZlNTsgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwXG4gICAgICAgICAgICBjYXNlICdkYXknOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQgLSB6b25lRGVsdGEpIC8gODY0ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MCAqIDI0LCBuZWdhdGUgZHN0XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDYwNDhlNTsgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQgKiA3LCBuZWdhdGUgZHN0XG4gICAgICAgICAgICBkZWZhdWx0OiBvdXRwdXQgPSB0aGlzIC0gdGhhdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhc0Zsb2F0ID8gb3V0cHV0IDogYWJzRmxvb3Iob3V0cHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb250aERpZmYgKGEsIGIpIHtcbiAgICAgICAgLy8gZGlmZmVyZW5jZSBpbiBtb250aHNcbiAgICAgICAgdmFyIHdob2xlTW9udGhEaWZmID0gKChiLnllYXIoKSAtIGEueWVhcigpKSAqIDEyKSArIChiLm1vbnRoKCkgLSBhLm1vbnRoKCkpLFxuICAgICAgICAgICAgLy8gYiBpcyBpbiAoYW5jaG9yIC0gMSBtb250aCwgYW5jaG9yICsgMSBtb250aClcbiAgICAgICAgICAgIGFuY2hvciA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYsICdtb250aHMnKSxcbiAgICAgICAgICAgIGFuY2hvcjIsIGFkanVzdDtcblxuICAgICAgICBpZiAoYiAtIGFuY2hvciA8IDApIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmIC0gMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IgLSBhbmNob3IyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmICsgMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IyIC0gYW5jaG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vY2hlY2sgZm9yIG5lZ2F0aXZlIHplcm8sIHJldHVybiB6ZXJvIGlmIG5lZ2F0aXZlIHplcm9cbiAgICAgICAgcmV0dXJuIC0od2hvbGVNb250aERpZmYgKyBhZGp1c3QpIHx8IDA7XG4gICAgfVxuXG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdCA9ICdZWVlZLU1NLUREVEhIOm1tOnNzWic7XG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdFV0YyA9ICdZWVlZLU1NLUREVEhIOm1tOnNzW1pdJztcblxuICAgIGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoJ2VuJykuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWicpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nKGtlZXBPZmZzZXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHV0YyA9IGtlZXBPZmZzZXQgIT09IHRydWU7XG4gICAgICAgIHZhciBtID0gdXRjID8gdGhpcy5jbG9uZSgpLnV0YygpIDogdGhpcztcbiAgICAgICAgaWYgKG0ueWVhcigpIDwgMCB8fCBtLnllYXIoKSA+IDk5OTkpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQobSwgdXRjID8gJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScgOiAnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSkge1xuICAgICAgICAgICAgLy8gbmF0aXZlIGltcGxlbWVudGF0aW9uIGlzIH41MHggZmFzdGVyLCB1c2UgaXQgd2hlbiB3ZSBjYW5cbiAgICAgICAgICAgIGlmICh1dGMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkgKyB0aGlzLnV0Y09mZnNldCgpICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLnJlcGxhY2UoJ1onLCBmb3JtYXRNb21lbnQobSwgJ1onKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChtLCB1dGMgPyAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScgOiAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBodW1hbiByZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIG1vbWVudCB0aGF0IGNhblxuICAgICAqIGFsc28gYmUgZXZhbHVhdGVkIHRvIGdldCBhIG5ldyBtb21lbnQgd2hpY2ggaXMgdGhlIHNhbWVcbiAgICAgKlxuICAgICAqIEBsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC9kb2NzL2FwaS91dGlsLmh0bWwjdXRpbF9jdXN0b21faW5zcGVjdF9mdW5jdGlvbl9vbl9vYmplY3RzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAnbW9tZW50LmludmFsaWQoLyogJyArIHRoaXMuX2kgKyAnICovKSc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZ1bmMgPSAnbW9tZW50JztcbiAgICAgICAgdmFyIHpvbmUgPSAnJztcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9jYWwoKSkge1xuICAgICAgICAgICAgZnVuYyA9IHRoaXMudXRjT2Zmc2V0KCkgPT09IDAgPyAnbW9tZW50LnV0YycgOiAnbW9tZW50LnBhcnNlWm9uZSc7XG4gICAgICAgICAgICB6b25lID0gJ1onO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmVmaXggPSAnWycgKyBmdW5jICsgJyhcIl0nO1xuICAgICAgICB2YXIgeWVhciA9ICgwIDw9IHRoaXMueWVhcigpICYmIHRoaXMueWVhcigpIDw9IDk5OTkpID8gJ1lZWVknIDogJ1lZWVlZWSc7XG4gICAgICAgIHZhciBkYXRldGltZSA9ICctTU0tRERbVF1ISDptbTpzcy5TU1MnO1xuICAgICAgICB2YXIgc3VmZml4ID0gem9uZSArICdbXCIpXSc7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KHByZWZpeCArIHllYXIgKyBkYXRldGltZSArIHN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZm9ybWF0IChpbnB1dFN0cmluZykge1xuICAgICAgICBpZiAoIWlucHV0U3RyaW5nKSB7XG4gICAgICAgICAgICBpbnB1dFN0cmluZyA9IHRoaXMuaXNVdGMoKSA/IGhvb2tzLmRlZmF1bHRGb3JtYXRVdGMgOiBob29rcy5kZWZhdWx0Rm9ybWF0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRNb21lbnQodGhpcywgaW5wdXRTdHJpbmcpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb20gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHxcbiAgICAgICAgICAgICAgICAgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHt0bzogdGhpcywgZnJvbTogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZyb21Ob3cgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbShjcmVhdGVMb2NhbCgpLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0byAodGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fFxuICAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oe2Zyb206IHRoaXMsIHRvOiB0aW1lfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Ob3cgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG8oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgLy8gSWYgcGFzc2VkIGEgbG9jYWxlIGtleSwgaXQgd2lsbCBzZXQgdGhlIGxvY2FsZSBmb3IgdGhpc1xuICAgIC8vIGluc3RhbmNlLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiB0aGUgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbiAgICAvLyB2YXJpYWJsZXMgZm9yIHRoaXMgaW5zdGFuY2UuXG4gICAgZnVuY3Rpb24gbG9jYWxlIChrZXkpIHtcbiAgICAgICAgdmFyIG5ld0xvY2FsZURhdGE7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3TG9jYWxlRGF0YSA9IGdldExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKG5ld0xvY2FsZURhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvY2FsZSA9IG5ld0xvY2FsZURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYW5nID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4nLFxuICAgICAgICBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZURhdGEgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHZhciBNU19QRVJfU0VDT05EID0gMTAwMDtcbiAgICB2YXIgTVNfUEVSX01JTlVURSA9IDYwICogTVNfUEVSX1NFQ09ORDtcbiAgICB2YXIgTVNfUEVSX0hPVVIgPSA2MCAqIE1TX1BFUl9NSU5VVEU7XG4gICAgdmFyIE1TX1BFUl80MDBfWUVBUlMgPSAoMzY1ICogNDAwICsgOTcpICogMjQgKiBNU19QRVJfSE9VUjtcblxuICAgIC8vIGFjdHVhbCBtb2R1bG8gLSBoYW5kbGVzIG5lZ2F0aXZlIG51bWJlcnMgKGZvciBkYXRlcyBiZWZvcmUgMTk3MCk6XG4gICAgZnVuY3Rpb24gbW9kJDEoZGl2aWRlbmQsIGRpdmlzb3IpIHtcbiAgICAgICAgcmV0dXJuIChkaXZpZGVuZCAlIGRpdmlzb3IgKyBkaXZpc29yKSAlIGRpdmlzb3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxTdGFydE9mRGF0ZSh5LCBtLCBkKSB7XG4gICAgICAgIC8vIHRoZSBkYXRlIGNvbnN0cnVjdG9yIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSArIDQwMCwgbSwgZCkgLSBNU19QRVJfNDAwX1lFQVJTO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHksIG0sIGQpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHV0Y1N0YXJ0T2ZEYXRlKHksIG0sIGQpIHtcbiAgICAgICAgLy8gRGF0ZS5VVEMgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIHJldHVybiBEYXRlLlVUQyh5ICsgNDAwLCBtLCBkKSAtIE1TX1BFUl80MDBfWUVBUlM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gRGF0ZS5VVEMoeSwgbSwgZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE9mICh1bml0cykge1xuICAgICAgICB2YXIgdGltZTtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnIHx8ICF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RhcnRPZkRhdGUgPSB0aGlzLl9pc1VUQyA/IHV0Y1N0YXJ0T2ZEYXRlIDogbG9jYWxTdGFydE9mRGF0ZTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIDAsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkgLSB0aGlzLm1vbnRoKCkgJSAzLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSB0aGlzLndlZWtkYXkoKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpc29XZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSAodGhpcy5pc29XZWVrZGF5KCkgLSAxKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIHRoaXMuZGF0ZSgpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUgKyAodGhpcy5faXNVVEMgPyAwIDogdGhpcy51dGNPZmZzZXQoKSAqIE1TX1BFUl9NSU5VVEUpLCBNU19QRVJfSE9VUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUsIE1TX1BFUl9NSU5VVEUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSAtPSBtb2QkMSh0aW1lLCBNU19QRVJfU0VDT05EKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Quc2V0VGltZSh0aW1lKTtcbiAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbmRPZiAodW5pdHMpIHtcbiAgICAgICAgdmFyIHRpbWU7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAodW5pdHMgPT09IHVuZGVmaW5lZCB8fCB1bml0cyA9PT0gJ21pbGxpc2Vjb25kJyB8fCAhdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0YXJ0T2ZEYXRlID0gdGhpcy5faXNVVEMgPyB1dGNTdGFydE9mRGF0ZSA6IGxvY2FsU3RhcnRPZkRhdGU7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpICsgMSwgMCwgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkgLSB0aGlzLm1vbnRoKCkgJSAzICsgMywgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpICsgMSwgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIHRoaXMuZGF0ZSgpIC0gdGhpcy53ZWVrZGF5KCkgKyA3KSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpc29XZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSAodGhpcy5pc29XZWVrZGF5KCkgLSAxKSArIDcpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgKyAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPSBNU19QRVJfSE9VUiAtIG1vZCQxKHRpbWUgKyAodGhpcy5faXNVVEMgPyAwIDogdGhpcy51dGNPZmZzZXQoKSAqIE1TX1BFUl9NSU5VVEUpLCBNU19QRVJfSE9VUikgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPSBNU19QRVJfTUlOVVRFIC0gbW9kJDEodGltZSwgTVNfUEVSX01JTlVURSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPSBNU19QRVJfU0VDT05EIC0gbW9kJDEodGltZSwgTVNfUEVSX1NFQ09ORCkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZC5zZXRUaW1lKHRpbWUpO1xuICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbHVlT2YgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCkgLSAoKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bml4ICgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkgLyAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0RhdGUgKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQXJyYXkgKCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBbbS55ZWFyKCksIG0ubW9udGgoKSwgbS5kYXRlKCksIG0uaG91cigpLCBtLm1pbnV0ZSgpLCBtLnNlY29uZCgpLCBtLm1pbGxpc2Vjb25kKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvT2JqZWN0ICgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcnM6IG0ueWVhcigpLFxuICAgICAgICAgICAgbW9udGhzOiBtLm1vbnRoKCksXG4gICAgICAgICAgICBkYXRlOiBtLmRhdGUoKSxcbiAgICAgICAgICAgIGhvdXJzOiBtLmhvdXJzKCksXG4gICAgICAgICAgICBtaW51dGVzOiBtLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgIHNlY29uZHM6IG0uc2Vjb25kcygpLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzOiBtLm1pbGxpc2Vjb25kcygpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICAgICAgLy8gbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbFxuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLnRvSVNPU3RyaW5nKCkgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMiAoKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNpbmdGbGFncyAoKSB7XG4gICAgICAgIHJldHVybiBleHRlbmQoe30sIGdldFBhcnNpbmdGbGFncyh0aGlzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52YWxpZEF0ICgpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNpbmdGbGFncyh0aGlzKS5vdmVyZmxvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGlvbkRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnB1dDogdGhpcy5faSxcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fZixcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5fbG9jYWxlLFxuICAgICAgICAgICAgaXNVVEM6IHRoaXMuX2lzVVRDLFxuICAgICAgICAgICAgc3RyaWN0OiB0aGlzLl9zdHJpY3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnR0cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1llYXJGb3JtYXRUb2tlbiAodG9rZW4sIGdldHRlcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdldHRlcik7XG4gICAgfVxuXG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZycsICAgICAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnZycsICAgICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0cnLCAgJ2lzb1dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2Vla1llYXInLCAnZ2cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtZZWFyJywgJ0dHJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrWWVhcicsIDEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla1llYXInLCAxKTtcblxuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRycsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2cnLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdHRycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2dnJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2dnZycsICdnZ2dnZycsICdHR0dHJywgJ0dHR0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnJywgJ0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIHRoaXMud2VlaygpLFxuICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheSgpLFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyxcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LCB0aGlzLmlzb1dlZWsoKSwgdGhpcy5pc29XZWVrZGF5KCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luWWVhciAoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhckhlbHBlcihpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtzVGFyZ2V0O1xuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIodGhpcywgZG93LCBkb3kpLnllYXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3ZWVrc1RhcmdldCA9IHdlZWtzSW5ZZWFyKGlucHV0LCBkb3csIGRveSk7XG4gICAgICAgICAgICBpZiAod2VlayA+IHdlZWtzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgd2VlayA9IHdlZWtzVGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldFdlZWtBbGwuY2FsbCh0aGlzLCBpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0V2Vla0FsbCh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhckRhdGEgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKGRheU9mWWVhckRhdGEueWVhciwgMCwgZGF5T2ZZZWFyRGF0YS5kYXlPZlllYXIpO1xuXG4gICAgICAgIHRoaXMueWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgICAgICB0aGlzLm1vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgICAgIHRoaXMuZGF0ZShkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdRJywgMCwgJ1FvJywgJ3F1YXJ0ZXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygncXVhcnRlcicsICdRJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdxdWFydGVyJywgNyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTtcbiAgICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0UXVhcnRlciAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMykgOiB0aGlzLm1vbnRoKChpbnB1dCAtIDEpICogMyArIHRoaXMubW9udGgoKSAlIDMpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEJywgWydERCcsIDJdLCAnRG8nLCAnZGF0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXRlJywgJ0QnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXRlJywgOSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignREQnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignRG8nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgXCJvcmRpbmFsUGFyc2VcIiBmYWxsYmFjayBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/XG4gICAgICAgICAgKGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZSB8fCBsb2NhbGUuX29yZGluYWxQYXJzZSkgOlxuICAgICAgICAgIGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQ7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnRCcsICdERCddLCBEQVRFKTtcbiAgICBhZGRQYXJzZVRva2VuKCdEbycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbREFURV0gPSB0b0ludChpbnB1dC5tYXRjaChtYXRjaDF0bzIpWzBdKTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXREYXlPZk1vbnRoID0gbWFrZUdldFNldCgnRGF0ZScsIHRydWUpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0RERCcsIFsnRERERCcsIDNdLCAnREREbycsICdkYXlPZlllYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF5T2ZZZWFyJywgJ0RERCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheU9mWWVhcicsIDQpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignREREJywgIG1hdGNoMXRvMyk7XG4gICAgYWRkUmVnZXhUb2tlbignRERERCcsIG1hdGNoMyk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ0RERCcsICdEREREJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mWWVhciAoaW5wdXQpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhciA9IE1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKSAtIHRoaXMuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykpIC8gODY0ZTUpICsgMTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBkYXlPZlllYXIgOiB0aGlzLmFkZCgoaW5wdXQgLSBkYXlPZlllYXIpLCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdtJywgWydtbScsIDJdLCAwLCAnbWludXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbnV0ZScsICdtJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaW51dGUnLCAxNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdtJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignbW0nLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ20nLCAnbW0nXSwgTUlOVVRFKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaW51dGUgPSBtYWtlR2V0U2V0KCdNaW51dGVzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMl0sIDAsICdzZWNvbmQnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnc2Vjb25kJywgJ3MnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3NlY29uZCcsIDE1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3MnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdzcycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsncycsICdzcyddLCBTRUNPTkQpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFNlY29uZCA9IG1ha2VHZXRTZXQoJ1NlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTJywgM10sIDAsICdtaWxsaXNlY29uZCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTUycsIDRdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTJywgNV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTUycsIDZdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTUycsIDddLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTJywgOF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTUycsIDldLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDAwO1xuICAgIH0pO1xuXG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbGxpc2Vjb25kJywgJ21zJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaWxsaXNlY29uZCcsIDE2KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1MnLCAgICBtYXRjaDF0bzMsIG1hdGNoMSk7XG4gICAgYWRkUmVnZXhUb2tlbignU1MnLCAgIG1hdGNoMXRvMywgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCAgbWF0Y2gxdG8zLCBtYXRjaDMpO1xuXG4gICAgdmFyIHRva2VuO1xuICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUmVnZXhUb2tlbih0b2tlbiwgbWF0Y2hVbnNpZ25lZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VNcyhpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTUlMTElTRUNPTkRdID0gdG9JbnQoKCcwLicgKyBpbnB1dCkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmb3IgKHRva2VuID0gJ1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpO1xuICAgIH1cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0TWlsbGlzZWNvbmQgPSBtYWtlR2V0U2V0KCdNaWxsaXNlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigneicsICAwLCAwLCAnem9uZUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFpvbmVBYmJyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ1VUQycgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRab25lTmFtZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICdDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZScgOiAnJztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8gPSBNb21lbnQucHJvdG90eXBlO1xuXG4gICAgcHJvdG8uYWRkICAgICAgICAgICAgICAgPSBhZGQ7XG4gICAgcHJvdG8uY2FsZW5kYXIgICAgICAgICAgPSBjYWxlbmRhciQxO1xuICAgIHByb3RvLmNsb25lICAgICAgICAgICAgID0gY2xvbmU7XG4gICAgcHJvdG8uZGlmZiAgICAgICAgICAgICAgPSBkaWZmO1xuICAgIHByb3RvLmVuZE9mICAgICAgICAgICAgID0gZW5kT2Y7XG4gICAgcHJvdG8uZm9ybWF0ICAgICAgICAgICAgPSBmb3JtYXQ7XG4gICAgcHJvdG8uZnJvbSAgICAgICAgICAgICAgPSBmcm9tO1xuICAgIHByb3RvLmZyb21Ob3cgICAgICAgICAgID0gZnJvbU5vdztcbiAgICBwcm90by50byAgICAgICAgICAgICAgICA9IHRvO1xuICAgIHByb3RvLnRvTm93ICAgICAgICAgICAgID0gdG9Ob3c7XG4gICAgcHJvdG8uZ2V0ICAgICAgICAgICAgICAgPSBzdHJpbmdHZXQ7XG4gICAgcHJvdG8uaW52YWxpZEF0ICAgICAgICAgPSBpbnZhbGlkQXQ7XG4gICAgcHJvdG8uaXNBZnRlciAgICAgICAgICAgPSBpc0FmdGVyO1xuICAgIHByb3RvLmlzQmVmb3JlICAgICAgICAgID0gaXNCZWZvcmU7XG4gICAgcHJvdG8uaXNCZXR3ZWVuICAgICAgICAgPSBpc0JldHdlZW47XG4gICAgcHJvdG8uaXNTYW1lICAgICAgICAgICAgPSBpc1NhbWU7XG4gICAgcHJvdG8uaXNTYW1lT3JBZnRlciAgICAgPSBpc1NhbWVPckFmdGVyO1xuICAgIHByb3RvLmlzU2FtZU9yQmVmb3JlICAgID0gaXNTYW1lT3JCZWZvcmU7XG4gICAgcHJvdG8uaXNWYWxpZCAgICAgICAgICAgPSBpc1ZhbGlkJDI7XG4gICAgcHJvdG8ubGFuZyAgICAgICAgICAgICAgPSBsYW5nO1xuICAgIHByb3RvLmxvY2FsZSAgICAgICAgICAgID0gbG9jYWxlO1xuICAgIHByb3RvLmxvY2FsZURhdGEgICAgICAgID0gbG9jYWxlRGF0YTtcbiAgICBwcm90by5tYXggICAgICAgICAgICAgICA9IHByb3RvdHlwZU1heDtcbiAgICBwcm90by5taW4gICAgICAgICAgICAgICA9IHByb3RvdHlwZU1pbjtcbiAgICBwcm90by5wYXJzaW5nRmxhZ3MgICAgICA9IHBhcnNpbmdGbGFncztcbiAgICBwcm90by5zZXQgICAgICAgICAgICAgICA9IHN0cmluZ1NldDtcbiAgICBwcm90by5zdGFydE9mICAgICAgICAgICA9IHN0YXJ0T2Y7XG4gICAgcHJvdG8uc3VidHJhY3QgICAgICAgICAgPSBzdWJ0cmFjdDtcbiAgICBwcm90by50b0FycmF5ICAgICAgICAgICA9IHRvQXJyYXk7XG4gICAgcHJvdG8udG9PYmplY3QgICAgICAgICAgPSB0b09iamVjdDtcbiAgICBwcm90by50b0RhdGUgICAgICAgICAgICA9IHRvRGF0ZTtcbiAgICBwcm90by50b0lTT1N0cmluZyAgICAgICA9IHRvSVNPU3RyaW5nO1xuICAgIHByb3RvLmluc3BlY3QgICAgICAgICAgID0gaW5zcGVjdDtcbiAgICBwcm90by50b0pTT04gICAgICAgICAgICA9IHRvSlNPTjtcbiAgICBwcm90by50b1N0cmluZyAgICAgICAgICA9IHRvU3RyaW5nO1xuICAgIHByb3RvLnVuaXggICAgICAgICAgICAgID0gdW5peDtcbiAgICBwcm90by52YWx1ZU9mICAgICAgICAgICA9IHZhbHVlT2Y7XG4gICAgcHJvdG8uY3JlYXRpb25EYXRhICAgICAgPSBjcmVhdGlvbkRhdGE7XG4gICAgcHJvdG8ueWVhciAgICAgICA9IGdldFNldFllYXI7XG4gICAgcHJvdG8uaXNMZWFwWWVhciA9IGdldElzTGVhcFllYXI7XG4gICAgcHJvdG8ud2Vla1llYXIgICAgPSBnZXRTZXRXZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrWWVhciA9IGdldFNldElTT1dlZWtZZWFyO1xuICAgIHByb3RvLnF1YXJ0ZXIgPSBwcm90by5xdWFydGVycyA9IGdldFNldFF1YXJ0ZXI7XG4gICAgcHJvdG8ubW9udGggICAgICAgPSBnZXRTZXRNb250aDtcbiAgICBwcm90by5kYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoO1xuICAgIHByb3RvLndlZWsgICAgICAgICAgID0gcHJvdG8ud2Vla3MgICAgICAgID0gZ2V0U2V0V2VlaztcbiAgICBwcm90by5pc29XZWVrICAgICAgICA9IHByb3RvLmlzb1dlZWtzICAgICA9IGdldFNldElTT1dlZWs7XG4gICAgcHJvdG8ud2Vla3NJblllYXIgICAgPSBnZXRXZWVrc0luWWVhcjtcbiAgICBwcm90by5pc29XZWVrc0luWWVhciA9IGdldElTT1dlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmRhdGUgICAgICAgPSBnZXRTZXREYXlPZk1vbnRoO1xuICAgIHByb3RvLmRheSAgICAgICAgPSBwcm90by5kYXlzICAgICAgICAgICAgID0gZ2V0U2V0RGF5T2ZXZWVrO1xuICAgIHByb3RvLndlZWtkYXkgICAgPSBnZXRTZXRMb2NhbGVEYXlPZldlZWs7XG4gICAgcHJvdG8uaXNvV2Vla2RheSA9IGdldFNldElTT0RheU9mV2VlaztcbiAgICBwcm90by5kYXlPZlllYXIgID0gZ2V0U2V0RGF5T2ZZZWFyO1xuICAgIHByb3RvLmhvdXIgPSBwcm90by5ob3VycyA9IGdldFNldEhvdXI7XG4gICAgcHJvdG8ubWludXRlID0gcHJvdG8ubWludXRlcyA9IGdldFNldE1pbnV0ZTtcbiAgICBwcm90by5zZWNvbmQgPSBwcm90by5zZWNvbmRzID0gZ2V0U2V0U2Vjb25kO1xuICAgIHByb3RvLm1pbGxpc2Vjb25kID0gcHJvdG8ubWlsbGlzZWNvbmRzID0gZ2V0U2V0TWlsbGlzZWNvbmQ7XG4gICAgcHJvdG8udXRjT2Zmc2V0ICAgICAgICAgICAgPSBnZXRTZXRPZmZzZXQ7XG4gICAgcHJvdG8udXRjICAgICAgICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1VUQztcbiAgICBwcm90by5sb2NhbCAgICAgICAgICAgICAgICA9IHNldE9mZnNldFRvTG9jYWw7XG4gICAgcHJvdG8ucGFyc2Vab25lICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldDtcbiAgICBwcm90by5oYXNBbGlnbmVkSG91ck9mZnNldCA9IGhhc0FsaWduZWRIb3VyT2Zmc2V0O1xuICAgIHByb3RvLmlzRFNUICAgICAgICAgICAgICAgID0gaXNEYXlsaWdodFNhdmluZ1RpbWU7XG4gICAgcHJvdG8uaXNMb2NhbCAgICAgICAgICAgICAgPSBpc0xvY2FsO1xuICAgIHByb3RvLmlzVXRjT2Zmc2V0ICAgICAgICAgID0gaXNVdGNPZmZzZXQ7XG4gICAgcHJvdG8uaXNVdGMgICAgICAgICAgICAgICAgPSBpc1V0YztcbiAgICBwcm90by5pc1VUQyAgICAgICAgICAgICAgICA9IGlzVXRjO1xuICAgIHByb3RvLnpvbmVBYmJyID0gZ2V0Wm9uZUFiYnI7XG4gICAgcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTtcbiAgICBwcm90by5kYXRlcyAgPSBkZXByZWNhdGUoJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJywgZ2V0U2V0RGF5T2ZNb250aCk7XG4gICAgcHJvdG8ubW9udGhzID0gZGVwcmVjYXRlKCdtb250aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQnLCBnZXRTZXRNb250aCk7XG4gICAgcHJvdG8ueWVhcnMgID0gZGVwcmVjYXRlKCd5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkJywgZ2V0U2V0WWVhcik7XG4gICAgcHJvdG8uem9uZSAgID0gZGVwcmVjYXRlKCdtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLycsIGdldFNldFpvbmUpO1xuICAgIHByb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZSgnaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbicsIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVbml4IChpbnB1dCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJblpvbmUgKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYXJzZVpvbmUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVQYXJzZVBvc3RGb3JtYXQgKHN0cmluZykge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH1cblxuICAgIHZhciBwcm90byQxID0gTG9jYWxlLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDEuY2FsZW5kYXIgICAgICAgID0gY2FsZW5kYXI7XG4gICAgcHJvdG8kMS5sb25nRGF0ZUZvcm1hdCAgPSBsb25nRGF0ZUZvcm1hdDtcbiAgICBwcm90byQxLmludmFsaWREYXRlICAgICA9IGludmFsaWREYXRlO1xuICAgIHByb3RvJDEub3JkaW5hbCAgICAgICAgID0gb3JkaW5hbDtcbiAgICBwcm90byQxLnByZXBhcnNlICAgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnBvc3Rmb3JtYXQgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnJlbGF0aXZlVGltZSAgICA9IHJlbGF0aXZlVGltZTtcbiAgICBwcm90byQxLnBhc3RGdXR1cmUgICAgICA9IHBhc3RGdXR1cmU7XG4gICAgcHJvdG8kMS5zZXQgICAgICAgICAgICAgPSBzZXQ7XG5cbiAgICBwcm90byQxLm1vbnRocyAgICAgICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRocztcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0ICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRoc1Nob3J0O1xuICAgIHByb3RvJDEubW9udGhzUGFyc2UgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzUGFyc2U7XG4gICAgcHJvdG8kMS5tb250aHNSZWdleCAgICAgICA9IG1vbnRoc1JlZ2V4O1xuICAgIHByb3RvJDEubW9udGhzU2hvcnRSZWdleCAgPSBtb250aHNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2VlayA9IGxvY2FsZVdlZWs7XG4gICAgcHJvdG8kMS5maXJzdERheU9mWWVhciA9IGxvY2FsZUZpcnN0RGF5T2ZZZWFyO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZldlZWsgPSBsb2NhbGVGaXJzdERheU9mV2VlaztcblxuICAgIHByb3RvJDEud2Vla2RheXMgICAgICAgPSAgICAgICAgbG9jYWxlV2Vla2RheXM7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pbiAgICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c01pbjtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnQgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzU2hvcnQ7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1BhcnNlICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c1BhcnNlO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5c1JlZ2V4ICAgICAgID0gICAgICAgIHdlZWtkYXlzUmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0UmVnZXggID0gICAgICAgIHdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzTWluUmVnZXggICAgPSAgICAgICAgd2Vla2RheXNNaW5SZWdleDtcblxuICAgIHByb3RvJDEuaXNQTSA9IGxvY2FsZUlzUE07XG4gICAgcHJvdG8kMS5tZXJpZGllbSA9IGxvY2FsZU1lcmlkaWVtO1xuXG4gICAgZnVuY3Rpb24gZ2V0JDEgKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpO1xuICAgICAgICB2YXIgdXRjID0gY3JlYXRlVVRDKCkuc2V0KHNldHRlciwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gbG9jYWxlW2ZpZWxkXSh1dGMsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc0ltcGwgKGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIC8vICgpXG4gICAgLy8gKDUpXG4gICAgLy8gKGZtdCwgNSlcbiAgICAvLyAoZm10KVxuICAgIC8vICh0cnVlKVxuICAgIC8vICh0cnVlLCA1KVxuICAgIC8vICh0cnVlLCBmbXQsIDUpXG4gICAgLy8gKHRydWUsIGZtdClcbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNJbXBsIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbG9jYWxlU29ydGVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBsb2NhbGVTb3J0ZWQ7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGxvY2FsZVNvcnRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpLFxuICAgICAgICAgICAgc2hpZnQgPSBsb2NhbGVTb3J0ZWQgPyBsb2NhbGUuX3dlZWsuZG93IDogMDtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgKGkgKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRocyAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRocycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNTaG9ydCAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNTaG9ydCAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzU2hvcnQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNNaW4gKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpO1xuICAgIH1cblxuICAgIGdldFNldEdsb2JhbExvY2FsZSgnZW4nLCB7XG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodG9JbnQobnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG4gICAgaG9va3MubGFuZyA9IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4nLCBnZXRTZXRHbG9iYWxMb2NhbGUpO1xuICAgIGhvb2tzLmxhbmdEYXRhID0gZGVwcmVjYXRlKCdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJywgZ2V0TG9jYWxlKTtcblxuICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBhYnMgKCkge1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgICAgPSB0aGlzLl9kYXRhO1xuXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9IG1hdGhBYnModGhpcy5fbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgdGhpcy5fZGF5cyAgICAgICAgID0gbWF0aEFicyh0aGlzLl9kYXlzKTtcbiAgICAgICAgdGhpcy5fbW9udGhzICAgICAgID0gbWF0aEFicyh0aGlzLl9tb250aHMpO1xuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzICA9IG1hdGhBYnMoZGF0YS5taWxsaXNlY29uZHMpO1xuICAgICAgICBkYXRhLnNlY29uZHMgICAgICAgPSBtYXRoQWJzKGRhdGEuc2Vjb25kcyk7XG4gICAgICAgIGRhdGEubWludXRlcyAgICAgICA9IG1hdGhBYnMoZGF0YS5taW51dGVzKTtcbiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgID0gbWF0aEFicyhkYXRhLmhvdXJzKTtcbiAgICAgICAgZGF0YS5tb250aHMgICAgICAgID0gbWF0aEFicyhkYXRhLm1vbnRocyk7XG4gICAgICAgIGRhdGEueWVhcnMgICAgICAgICA9IG1hdGhBYnMoZGF0YS55ZWFycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QkMSAoZHVyYXRpb24sIGlucHV0LCB2YWx1ZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUR1cmF0aW9uKGlucHV0LCB2YWx1ZSk7XG5cbiAgICAgICAgZHVyYXRpb24uX21pbGxpc2Vjb25kcyArPSBkaXJlY3Rpb24gKiBvdGhlci5fbWlsbGlzZWNvbmRzO1xuICAgICAgICBkdXJhdGlvbi5fZGF5cyAgICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9kYXlzO1xuICAgICAgICBkdXJhdGlvbi5fbW9udGhzICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9tb250aHM7XG5cbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gYWRkJDEgKGlucHV0LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYWRkU3VidHJhY3QkMSh0aGlzLCBpbnB1dCwgdmFsdWUsIDEpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIHN1YnRyYWN0KDEsICdzJykgb3Igc3VidHJhY3QoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gc3VidHJhY3QkMSAoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0NlaWwgKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1YmJsZSAoKSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7XG4gICAgICAgIHZhciBkYXlzICAgICAgICAgPSB0aGlzLl9kYXlzO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gdGhpcy5fbW9udGhzO1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgID0gdGhpcy5fZGF0YTtcbiAgICAgICAgdmFyIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycywgbW9udGhzRnJvbURheXM7XG5cbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIG1peCBvZiBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdmFsdWVzLCBidWJibGUgZG93biBmaXJzdFxuICAgICAgICAvLyBjaGVjazogaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzIxNjZcbiAgICAgICAgaWYgKCEoKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRheXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHxcbiAgICAgICAgICAgICAgICAobWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAwKSkpIHtcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTtcbiAgICAgICAgICAgIGRheXMgPSAwO1xuICAgICAgICAgICAgbW9udGhzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3JcbiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLlxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG5cbiAgICAgICAgc2Vjb25kcyAgICAgICAgICAgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzICAgICAgPSBzZWNvbmRzICUgNjA7XG5cbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgICAgICA9IG1pbnV0ZXMgJSA2MDtcblxuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIGRhdGEuaG91cnMgICAgICAgID0gaG91cnMgJSAyNDtcblxuICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgICAgIC8vIGNvbnZlcnQgZGF5cyB0byBtb250aHNcbiAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9Nb250aHMoZGF5cykpO1xuICAgICAgICBtb250aHMgKz0gbW9udGhzRnJvbURheXM7XG4gICAgICAgIGRheXMgLT0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzRnJvbURheXMpKTtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cbiAgICAgICAgZGF0YS5kYXlzICAgPSBkYXlzO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRocztcbiAgICAgICAgZGF0YS55ZWFycyAgPSB5ZWFycztcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMgKGRheXMpIHtcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTQ2MDk3IGRheXMgKHRha2luZyBpbnRvIGFjY291bnQgbGVhcCB5ZWFyIHJ1bGVzKVxuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxMiBtb250aHMgPT09IDQ4MDBcbiAgICAgICAgcmV0dXJuIGRheXMgKiA0ODAwIC8gMTQ2MDk3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyAobW9udGhzKSB7XG4gICAgICAgIC8vIHRoZSByZXZlcnNlIG9mIGRheXNUb01vbnRoc1xuICAgICAgICByZXR1cm4gbW9udGhzICogMTQ2MDk3IC8gNDgwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcyAodW5pdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5cztcbiAgICAgICAgdmFyIG1vbnRocztcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBpZiAodW5pdHMgPT09ICdtb250aCcgfHwgdW5pdHMgPT09ICdxdWFydGVyJyB8fCB1bml0cyA9PT0gJ3llYXInKSB7XG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzICsgZGF5c1RvTW9udGhzKGRheXMpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ21vbnRoJzogICByZXR1cm4gbW9udGhzO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOiByZXR1cm4gbW9udGhzIC8gMztcbiAgICAgICAgICAgICAgICBjYXNlICd5ZWFyJzogICAgcmV0dXJuIG1vbnRocyAvIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaGFuZGxlIG1pbGxpc2Vjb25kcyBzZXBhcmF0ZWx5IGJlY2F1c2Ugb2YgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgKGlzc3VlICMxODY3KVxuICAgICAgICAgICAgZGF5cyA9IHRoaXMuX2RheXMgKyBNYXRoLnJvdW5kKG1vbnRoc1RvRGF5cyh0aGlzLl9tb250aHMpKTtcbiAgICAgICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd3ZWVrJyAgIDogcmV0dXJuIGRheXMgLyA3ICAgICArIG1pbGxpc2Vjb25kcyAvIDYwNDhlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXknICAgIDogcmV0dXJuIGRheXMgICAgICAgICArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hvdXInICAgOiByZXR1cm4gZGF5cyAqIDI0ICAgICsgbWlsbGlzZWNvbmRzIC8gMzZlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdtaW51dGUnIDogcmV0dXJuIGRheXMgKiAxNDQwICArIG1pbGxpc2Vjb25kcyAvIDZlNDtcbiAgICAgICAgICAgICAgICBjYXNlICdzZWNvbmQnIDogcmV0dXJuIGRheXMgKiA4NjQwMCArIG1pbGxpc2Vjb25kcyAvIDEwMDA7XG4gICAgICAgICAgICAgICAgLy8gTWF0aC5mbG9vciBwcmV2ZW50cyBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyBoZXJlXG4gICAgICAgICAgICAgICAgY2FzZSAnbWlsbGlzZWNvbmQnOiByZXR1cm4gTWF0aC5mbG9vcihkYXlzICogODY0ZTUpICsgbWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignVW5rbm93biB1bml0ICcgKyB1bml0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgdGhpcy5hcygnbXMnKT9cbiAgICBmdW5jdGlvbiB2YWx1ZU9mJDEgKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgK1xuICAgICAgICAgICAgdGhpcy5fZGF5cyAqIDg2NGU1ICtcbiAgICAgICAgICAgICh0aGlzLl9tb250aHMgJSAxMikgKiAyNTkyZTYgK1xuICAgICAgICAgICAgdG9JbnQodGhpcy5fbW9udGhzIC8gMTIpICogMzE1MzZlNlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VBcyAoYWxpYXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFzKGFsaWFzKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgYXNNaWxsaXNlY29uZHMgPSBtYWtlQXMoJ21zJyk7XG4gICAgdmFyIGFzU2Vjb25kcyAgICAgID0gbWFrZUFzKCdzJyk7XG4gICAgdmFyIGFzTWludXRlcyAgICAgID0gbWFrZUFzKCdtJyk7XG4gICAgdmFyIGFzSG91cnMgICAgICAgID0gbWFrZUFzKCdoJyk7XG4gICAgdmFyIGFzRGF5cyAgICAgICAgID0gbWFrZUFzKCdkJyk7XG4gICAgdmFyIGFzV2Vla3MgICAgICAgID0gbWFrZUFzKCd3Jyk7XG4gICAgdmFyIGFzTW9udGhzICAgICAgID0gbWFrZUFzKCdNJyk7XG4gICAgdmFyIGFzUXVhcnRlcnMgICAgID0gbWFrZUFzKCdRJyk7XG4gICAgdmFyIGFzWWVhcnMgICAgICAgID0gbWFrZUFzKCd5Jyk7XG5cbiAgICBmdW5jdGlvbiBjbG9uZSQxICgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldCQyICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpc1t1bml0cyArICdzJ10oKSA6IE5hTjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlR2V0dGVyKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2RhdGFbbmFtZV0gOiBOYU47XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIG1pbGxpc2Vjb25kcyA9IG1ha2VHZXR0ZXIoJ21pbGxpc2Vjb25kcycpO1xuICAgIHZhciBzZWNvbmRzICAgICAgPSBtYWtlR2V0dGVyKCdzZWNvbmRzJyk7XG4gICAgdmFyIG1pbnV0ZXMgICAgICA9IG1ha2VHZXR0ZXIoJ21pbnV0ZXMnKTtcbiAgICB2YXIgaG91cnMgICAgICAgID0gbWFrZUdldHRlcignaG91cnMnKTtcbiAgICB2YXIgZGF5cyAgICAgICAgID0gbWFrZUdldHRlcignZGF5cycpO1xuICAgIHZhciBtb250aHMgICAgICAgPSBtYWtlR2V0dGVyKCdtb250aHMnKTtcbiAgICB2YXIgeWVhcnMgICAgICAgID0gbWFrZUdldHRlcigneWVhcnMnKTtcblxuICAgIGZ1bmN0aW9uIHdlZWtzICgpIHtcbiAgICAgICAgcmV0dXJuIGFic0Zsb29yKHRoaXMuZGF5cygpIC8gNyk7XG4gICAgfVxuXG4gICAgdmFyIHJvdW5kID0gTWF0aC5yb3VuZDtcbiAgICB2YXIgdGhyZXNob2xkcyA9IHtcbiAgICAgICAgc3M6IDQ0LCAgICAgICAgIC8vIGEgZmV3IHNlY29uZHMgdG8gc2Vjb25kc1xuICAgICAgICBzIDogNDUsICAgICAgICAgLy8gc2Vjb25kcyB0byBtaW51dGVcbiAgICAgICAgbSA6IDQ1LCAgICAgICAgIC8vIG1pbnV0ZXMgdG8gaG91clxuICAgICAgICBoIDogMjIsICAgICAgICAgLy8gaG91cnMgdG8gZGF5XG4gICAgICAgIGQgOiAyNiwgICAgICAgICAvLyBkYXlzIHRvIG1vbnRoXG4gICAgICAgIE0gOiAxMSAgICAgICAgICAvLyBtb250aHMgdG8geWVhclxuICAgIH07XG5cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vbWVudC5mbi5mcm9tLCBtb21lbnQuZm4uZnJvbU5vdywgYW5kIG1vbWVudC5kdXJhdGlvbi5mbi5odW1hbml6ZVxuICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVUaW1lQWdvKHN0cmluZywgbnVtYmVyLCB3aXRob3V0U3VmZml4LCBpc0Z1dHVyZSwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUucmVsYXRpdmVUaW1lKG51bWJlciB8fCAxLCAhIXdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZSQxIChwb3NOZWdEdXJhdGlvbiwgd2l0aG91dFN1ZmZpeCwgbG9jYWxlKSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGNyZWF0ZUR1cmF0aW9uKHBvc05lZ0R1cmF0aW9uKS5hYnMoKTtcbiAgICAgICAgdmFyIHNlY29uZHMgID0gcm91bmQoZHVyYXRpb24uYXMoJ3MnKSk7XG4gICAgICAgIHZhciBtaW51dGVzICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdtJykpO1xuICAgICAgICB2YXIgaG91cnMgICAgPSByb3VuZChkdXJhdGlvbi5hcygnaCcpKTtcbiAgICAgICAgdmFyIGRheXMgICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ2QnKSk7XG4gICAgICAgIHZhciBtb250aHMgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdNJykpO1xuICAgICAgICB2YXIgeWVhcnMgICAgPSByb3VuZChkdXJhdGlvbi5hcygneScpKTtcblxuICAgICAgICB2YXIgYSA9IHNlY29uZHMgPD0gdGhyZXNob2xkcy5zcyAmJiBbJ3MnLCBzZWNvbmRzXSAgfHxcbiAgICAgICAgICAgICAgICBzZWNvbmRzIDwgdGhyZXNob2xkcy5zICAgJiYgWydzcycsIHNlY29uZHNdIHx8XG4gICAgICAgICAgICAgICAgbWludXRlcyA8PSAxICAgICAgICAgICAgICYmIFsnbSddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPCB0aHJlc2hvbGRzLm0gICAmJiBbJ21tJywgbWludXRlc10gfHxcbiAgICAgICAgICAgICAgICBob3VycyAgIDw9IDEgICAgICAgICAgICAgJiYgWydoJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgaG91cnMgICA8IHRocmVzaG9sZHMuaCAgICYmIFsnaGgnLCBob3Vyc10gICB8fFxuICAgICAgICAgICAgICAgIGRheXMgICAgPD0gMSAgICAgICAgICAgICAmJiBbJ2QnXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBkYXlzICAgIDwgdGhyZXNob2xkcy5kICAgJiYgWydkZCcsIGRheXNdICAgIHx8XG4gICAgICAgICAgICAgICAgbW9udGhzICA8PSAxICAgICAgICAgICAgICYmIFsnTSddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIG1vbnRocyAgPCB0aHJlc2hvbGRzLk0gICAmJiBbJ01NJywgbW9udGhzXSAgfHxcbiAgICAgICAgICAgICAgICB5ZWFycyAgIDw9IDEgICAgICAgICAgICAgJiYgWyd5J10gICAgICAgICAgIHx8IFsneXknLCB5ZWFyc107XG5cbiAgICAgICAgYVsyXSA9IHdpdGhvdXRTdWZmaXg7XG4gICAgICAgIGFbM10gPSArcG9zTmVnRHVyYXRpb24gPiAwO1xuICAgICAgICBhWzRdID0gbG9jYWxlO1xuICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZVRpbWVBZ28uYXBwbHkobnVsbCwgYSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCB0aGUgcm91bmRpbmcgZnVuY3Rpb24gZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nIChyb3VuZGluZ0Z1bmN0aW9uKSB7XG4gICAgICAgIGlmIChyb3VuZGluZ0Z1bmN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByb3VuZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mKHJvdW5kaW5nRnVuY3Rpb24pID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByb3VuZCA9IHJvdW5kaW5nRnVuY3Rpb247XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCBhIHRocmVzaG9sZCBmb3IgcmVsYXRpdmUgdGltZSBzdHJpbmdzXG4gICAgZnVuY3Rpb24gZ2V0U2V0UmVsYXRpdmVUaW1lVGhyZXNob2xkICh0aHJlc2hvbGQsIGxpbWl0KSB7XG4gICAgICAgIGlmICh0aHJlc2hvbGRzW3RocmVzaG9sZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW1pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyZXNob2xkc1t0aHJlc2hvbGRdO1xuICAgICAgICB9XG4gICAgICAgIHRocmVzaG9sZHNbdGhyZXNob2xkXSA9IGxpbWl0O1xuICAgICAgICBpZiAodGhyZXNob2xkID09PSAncycpIHtcbiAgICAgICAgICAgIHRocmVzaG9sZHMuc3MgPSBsaW1pdCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHVtYW5pemUgKHdpdGhTdWZmaXgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxlID0gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgIHZhciBvdXRwdXQgPSByZWxhdGl2ZVRpbWUkMSh0aGlzLCAhd2l0aFN1ZmZpeCwgbG9jYWxlKTtcblxuICAgICAgICBpZiAod2l0aFN1ZmZpeCkge1xuICAgICAgICAgICAgb3V0cHV0ID0gbG9jYWxlLnBhc3RGdXR1cmUoK3RoaXMsIG91dHB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9jYWxlLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWJzJDEgPSBNYXRoLmFicztcblxuICAgIGZ1bmN0aW9uIHNpZ24oeCkge1xuICAgICAgICByZXR1cm4gKCh4ID4gMCkgLSAoeCA8IDApKSB8fCAreDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0lTT1N0cmluZyQxKCkge1xuICAgICAgICAvLyBmb3IgSVNPIHN0cmluZ3Mgd2UgZG8gbm90IHVzZSB0aGUgbm9ybWFsIGJ1YmJsaW5nIHJ1bGVzOlxuICAgICAgICAvLyAgKiBtaWxsaXNlY29uZHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVjb21lIGhvdXJzXG4gICAgICAgIC8vICAqIGRheXMgZG8gbm90IGJ1YmJsZSBhdCBhbGxcbiAgICAgICAgLy8gICogbW9udGhzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSB5ZWFyc1xuICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgdGhlcmUgaXMgbm8gY29udGV4dC1mcmVlIGNvbnZlcnNpb24gYmV0d2VlbiBob3VycyBhbmQgZGF5c1xuICAgICAgICAvLyAodGhpbmsgb2YgY2xvY2sgY2hhbmdlcylcbiAgICAgICAgLy8gYW5kIGFsc28gbm90IGJldHdlZW4gZGF5cyBhbmQgbW9udGhzICgyOC0zMSBkYXlzIHBlciBtb250aClcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2Vjb25kcyA9IGFicyQxKHRoaXMuX21pbGxpc2Vjb25kcykgLyAxMDAwO1xuICAgICAgICB2YXIgZGF5cyAgICAgICAgID0gYWJzJDEodGhpcy5fZGF5cyk7XG4gICAgICAgIHZhciBtb250aHMgICAgICAgPSBhYnMkMSh0aGlzLl9tb250aHMpO1xuICAgICAgICB2YXIgbWludXRlcywgaG91cnMsIHllYXJzO1xuXG4gICAgICAgIC8vIDM2MDAgc2Vjb25kcyAtPiA2MCBtaW51dGVzIC0+IDEgaG91clxuICAgICAgICBtaW51dGVzICAgICAgICAgICA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgICAgIGhvdXJzICAgICAgICAgICAgID0gYWJzRmxvb3IobWludXRlcyAvIDYwKTtcbiAgICAgICAgc2Vjb25kcyAlPSA2MDtcbiAgICAgICAgbWludXRlcyAlPSA2MDtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzICA9IGFic0Zsb29yKG1vbnRocyAvIDEyKTtcbiAgICAgICAgbW9udGhzICU9IDEyO1xuXG5cbiAgICAgICAgLy8gaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2RvcmRpbGxlL21vbWVudC1pc29kdXJhdGlvbi9ibG9iL21hc3Rlci9tb21lbnQuaXNvZHVyYXRpb24uanNcbiAgICAgICAgdmFyIFkgPSB5ZWFycztcbiAgICAgICAgdmFyIE0gPSBtb250aHM7XG4gICAgICAgIHZhciBEID0gZGF5cztcbiAgICAgICAgdmFyIGggPSBob3VycztcbiAgICAgICAgdmFyIG0gPSBtaW51dGVzO1xuICAgICAgICB2YXIgcyA9IHNlY29uZHMgPyBzZWNvbmRzLnRvRml4ZWQoMykucmVwbGFjZSgvXFwuPzArJC8sICcnKSA6ICcnO1xuICAgICAgICB2YXIgdG90YWwgPSB0aGlzLmFzU2Vjb25kcygpO1xuXG4gICAgICAgIGlmICghdG90YWwpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHNhbWUgYXMgQyMncyAoTm9kYSkgYW5kIHB5dGhvbiAoaXNvZGF0ZSkuLi5cbiAgICAgICAgICAgIC8vIGJ1dCBub3Qgb3RoZXIgSlMgKGdvb2cuZGF0ZSlcbiAgICAgICAgICAgIHJldHVybiAnUDBEJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0b3RhbFNpZ24gPSB0b3RhbCA8IDAgPyAnLScgOiAnJztcbiAgICAgICAgdmFyIHltU2lnbiA9IHNpZ24odGhpcy5fbW9udGhzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcbiAgICAgICAgdmFyIGRheXNTaWduID0gc2lnbih0aGlzLl9kYXlzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcbiAgICAgICAgdmFyIGhtc1NpZ24gPSBzaWduKHRoaXMuX21pbGxpc2Vjb25kcykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG5cbiAgICAgICAgcmV0dXJuIHRvdGFsU2lnbiArICdQJyArXG4gICAgICAgICAgICAoWSA/IHltU2lnbiArIFkgKyAnWScgOiAnJykgK1xuICAgICAgICAgICAgKE0gPyB5bVNpZ24gKyBNICsgJ00nIDogJycpICtcbiAgICAgICAgICAgIChEID8gZGF5c1NpZ24gKyBEICsgJ0QnIDogJycpICtcbiAgICAgICAgICAgICgoaCB8fCBtIHx8IHMpID8gJ1QnIDogJycpICtcbiAgICAgICAgICAgIChoID8gaG1zU2lnbiArIGggKyAnSCcgOiAnJykgK1xuICAgICAgICAgICAgKG0gPyBobXNTaWduICsgbSArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAocyA/IGhtc1NpZ24gKyBzICsgJ1MnIDogJycpO1xuICAgIH1cblxuICAgIHZhciBwcm90byQyID0gRHVyYXRpb24ucHJvdG90eXBlO1xuXG4gICAgcHJvdG8kMi5pc1ZhbGlkICAgICAgICA9IGlzVmFsaWQkMTtcbiAgICBwcm90byQyLmFicyAgICAgICAgICAgID0gYWJzO1xuICAgIHByb3RvJDIuYWRkICAgICAgICAgICAgPSBhZGQkMTtcbiAgICBwcm90byQyLnN1YnRyYWN0ICAgICAgID0gc3VidHJhY3QkMTtcbiAgICBwcm90byQyLmFzICAgICAgICAgICAgID0gYXM7XG4gICAgcHJvdG8kMi5hc01pbGxpc2Vjb25kcyA9IGFzTWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuYXNTZWNvbmRzICAgICAgPSBhc1NlY29uZHM7XG4gICAgcHJvdG8kMi5hc01pbnV0ZXMgICAgICA9IGFzTWludXRlcztcbiAgICBwcm90byQyLmFzSG91cnMgICAgICAgID0gYXNIb3VycztcbiAgICBwcm90byQyLmFzRGF5cyAgICAgICAgID0gYXNEYXlzO1xuICAgIHByb3RvJDIuYXNXZWVrcyAgICAgICAgPSBhc1dlZWtzO1xuICAgIHByb3RvJDIuYXNNb250aHMgICAgICAgPSBhc01vbnRocztcbiAgICBwcm90byQyLmFzUXVhcnRlcnMgICAgID0gYXNRdWFydGVycztcbiAgICBwcm90byQyLmFzWWVhcnMgICAgICAgID0gYXNZZWFycztcbiAgICBwcm90byQyLnZhbHVlT2YgICAgICAgID0gdmFsdWVPZiQxO1xuICAgIHByb3RvJDIuX2J1YmJsZSAgICAgICAgPSBidWJibGU7XG4gICAgcHJvdG8kMi5jbG9uZSAgICAgICAgICA9IGNsb25lJDE7XG4gICAgcHJvdG8kMi5nZXQgICAgICAgICAgICA9IGdldCQyO1xuICAgIHByb3RvJDIubWlsbGlzZWNvbmRzICAgPSBtaWxsaXNlY29uZHM7XG4gICAgcHJvdG8kMi5zZWNvbmRzICAgICAgICA9IHNlY29uZHM7XG4gICAgcHJvdG8kMi5taW51dGVzICAgICAgICA9IG1pbnV0ZXM7XG4gICAgcHJvdG8kMi5ob3VycyAgICAgICAgICA9IGhvdXJzO1xuICAgIHByb3RvJDIuZGF5cyAgICAgICAgICAgPSBkYXlzO1xuICAgIHByb3RvJDIud2Vla3MgICAgICAgICAgPSB3ZWVrcztcbiAgICBwcm90byQyLm1vbnRocyAgICAgICAgID0gbW9udGhzO1xuICAgIHByb3RvJDIueWVhcnMgICAgICAgICAgPSB5ZWFycztcbiAgICBwcm90byQyLmh1bWFuaXplICAgICAgID0gaHVtYW5pemU7XG4gICAgcHJvdG8kMi50b0lTT1N0cmluZyAgICA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b1N0cmluZyAgICAgICA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b0pTT04gICAgICAgICA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi5sb2NhbGUgICAgICAgICA9IGxvY2FsZTtcbiAgICBwcm90byQyLmxvY2FsZURhdGEgICAgID0gbG9jYWxlRGF0YTtcblxuICAgIHByb3RvJDIudG9Jc29TdHJpbmcgPSBkZXByZWNhdGUoJ3RvSXNvU3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0b0lTT1N0cmluZygpIGluc3RlYWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpJywgdG9JU09TdHJpbmckMSk7XG4gICAgcHJvdG8kMi5sYW5nID0gbGFuZztcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdYJywgMCwgMCwgJ3VuaXgnKTtcbiAgICBhZGRGb3JtYXRUb2tlbigneCcsIDAsIDAsICd2YWx1ZU9mJyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCd4JywgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1gnLCBtYXRjaFRpbWVzdGFtcCk7XG4gICAgYWRkUGFyc2VUb2tlbignWCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShwYXJzZUZsb2F0KGlucHV0LCAxMCkgKiAxMDAwKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCd4JywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHRvSW50KGlucHV0KSk7XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cblxuICAgIGhvb2tzLnZlcnNpb24gPSAnMi4yNC4wJztcblxuICAgIHNldEhvb2tDYWxsYmFjayhjcmVhdGVMb2NhbCk7XG5cbiAgICBob29rcy5mbiAgICAgICAgICAgICAgICAgICAgPSBwcm90bztcbiAgICBob29rcy5taW4gICAgICAgICAgICAgICAgICAgPSBtaW47XG4gICAgaG9va3MubWF4ICAgICAgICAgICAgICAgICAgID0gbWF4O1xuICAgIGhvb2tzLm5vdyAgICAgICAgICAgICAgICAgICA9IG5vdztcbiAgICBob29rcy51dGMgICAgICAgICAgICAgICAgICAgPSBjcmVhdGVVVEM7XG4gICAgaG9va3MudW5peCAgICAgICAgICAgICAgICAgID0gY3JlYXRlVW5peDtcbiAgICBob29rcy5tb250aHMgICAgICAgICAgICAgICAgPSBsaXN0TW9udGhzO1xuICAgIGhvb2tzLmlzRGF0ZSAgICAgICAgICAgICAgICA9IGlzRGF0ZTtcbiAgICBob29rcy5sb2NhbGUgICAgICAgICAgICAgICAgPSBnZXRTZXRHbG9iYWxMb2NhbGU7XG4gICAgaG9va3MuaW52YWxpZCAgICAgICAgICAgICAgID0gY3JlYXRlSW52YWxpZDtcbiAgICBob29rcy5kdXJhdGlvbiAgICAgICAgICAgICAgPSBjcmVhdGVEdXJhdGlvbjtcbiAgICBob29rcy5pc01vbWVudCAgICAgICAgICAgICAgPSBpc01vbWVudDtcbiAgICBob29rcy53ZWVrZGF5cyAgICAgICAgICAgICAgPSBsaXN0V2Vla2RheXM7XG4gICAgaG9va3MucGFyc2Vab25lICAgICAgICAgICAgID0gY3JlYXRlSW5ab25lO1xuICAgIGhvb2tzLmxvY2FsZURhdGEgICAgICAgICAgICA9IGdldExvY2FsZTtcbiAgICBob29rcy5pc0R1cmF0aW9uICAgICAgICAgICAgPSBpc0R1cmF0aW9uO1xuICAgIGhvb2tzLm1vbnRoc1Nob3J0ICAgICAgICAgICA9IGxpc3RNb250aHNTaG9ydDtcbiAgICBob29rcy53ZWVrZGF5c01pbiAgICAgICAgICAgPSBsaXN0V2Vla2RheXNNaW47XG4gICAgaG9va3MuZGVmaW5lTG9jYWxlICAgICAgICAgID0gZGVmaW5lTG9jYWxlO1xuICAgIGhvb2tzLnVwZGF0ZUxvY2FsZSAgICAgICAgICA9IHVwZGF0ZUxvY2FsZTtcbiAgICBob29rcy5sb2NhbGVzICAgICAgICAgICAgICAgPSBsaXN0TG9jYWxlcztcbiAgICBob29rcy53ZWVrZGF5c1Nob3J0ICAgICAgICAgPSBsaXN0V2Vla2RheXNTaG9ydDtcbiAgICBob29rcy5ub3JtYWxpemVVbml0cyAgICAgICAgPSBub3JtYWxpemVVbml0cztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVSb3VuZGluZyAgPSBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQgPSBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQ7XG4gICAgaG9va3MuY2FsZW5kYXJGb3JtYXQgICAgICAgID0gZ2V0Q2FsZW5kYXJGb3JtYXQ7XG4gICAgaG9va3MucHJvdG90eXBlICAgICAgICAgICAgID0gcHJvdG87XG5cbiAgICAvLyBjdXJyZW50bHkgSFRNTDUgaW5wdXQgdHlwZSBvbmx5IHN1cHBvcnRzIDI0LWhvdXIgZm9ybWF0c1xuICAgIGhvb2tzLkhUTUw1X0ZNVCA9IHtcbiAgICAgICAgREFURVRJTUVfTE9DQUw6ICdZWVlZLU1NLUREVEhIOm1tJywgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIC8+XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMX1NFQ09ORFM6ICdZWVlZLU1NLUREVEhIOm1tOnNzJywgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMX01TOiAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnLCAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBzdGVwPVwiMC4wMDFcIiAvPlxuICAgICAgICBEQVRFOiAnWVlZWS1NTS1ERCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cImRhdGVcIiAvPlxuICAgICAgICBUSU1FOiAnSEg6bW0nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiAvPlxuICAgICAgICBUSU1FX1NFQ09ORFM6ICdISDptbTpzcycsICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIFRJTUVfTVM6ICdISDptbTpzcy5TU1MnLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIFdFRUs6ICdHR0dHLVtXXVdXJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwid2Vla1wiIC8+XG4gICAgICAgIE1PTlRIOiAnWVlZWS1NTScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwibW9udGhcIiAvPlxuICAgIH07XG5cbiAgICByZXR1cm4gaG9va3M7XG5cbn0pKSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiIsIi8qIVxuICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My40LjFcbiAqIGh0dHBzOi8vanF1ZXJ5LmNvbS9cbiAqXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE5LTA1LTAxVDIxOjA0WlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsIGZhY3RvcnkgKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0aWYgKCB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2Bcblx0XHQvLyBpcyBwcmVzZW50LCBleGVjdXRlIHRoZSBmYWN0b3J5IGFuZCBnZXQgalF1ZXJ5LlxuXHRcdC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1lbnRgXG5cdFx0Ly8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuXG5cdFx0Ly8gVGhpcyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCBgd2luZG93YC5cblx0XHQvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpKHdpbmRvdyk7XG5cdFx0Ly8gU2VlIHRpY2tldCAjMTQ1NDkgZm9yIG1vcmUgaW5mby5cblx0XHRtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/XG5cdFx0XHRmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6XG5cdFx0XHRmdW5jdGlvbiggdyApIHtcblx0XHRcdFx0aWYgKCAhdy5kb2N1bWVudCApIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhY3RvcnkoIHcgKTtcblx0XHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeSggZ2xvYmFsICk7XG5cdH1cblxuLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXRcbn0gKSggdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5kb3csIG5vR2xvYmFsICkge1xuXG4vLyBFZGdlIDw9IDEyIC0gMTMrLCBGaXJlZm94IDw9MTggLSA0NSssIElFIDEwIC0gMTEsIFNhZmFyaSA1LjEgLSA5KywgaU9TIDYgLSA5LjFcbi8vIHRocm93IGV4Y2VwdGlvbnMgd2hlbiBub24tc3RyaWN0IGNvZGUgKGUuZy4sIEFTUC5ORVQgNC41KSBhY2Nlc3NlcyBzdHJpY3QgbW9kZVxuLy8gYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIgKHRyYWMtMTMzMzUpLiBCdXQgYXMgb2YgalF1ZXJ5IDMuMCAoMjAxNiksIHN0cmljdCBtb2RlIHNob3VsZCBiZSBjb21tb25cbi8vIGVub3VnaCB0aGF0IGFsbCBzdWNoIGF0dGVtcHRzIGFyZSBndWFyZGVkIGluIGEgdHJ5IGJsb2NrLlxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBhcnIgPSBbXTtcblxudmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuXG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cbnZhciBzbGljZSA9IGFyci5zbGljZTtcblxudmFyIGNvbmNhdCA9IGFyci5jb25jYXQ7XG5cbnZhciBwdXNoID0gYXJyLnB1c2g7XG5cbnZhciBpbmRleE9mID0gYXJyLmluZGV4T2Y7XG5cbnZhciBjbGFzczJ0eXBlID0ge307XG5cbnZhciB0b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7XG5cbnZhciBoYXNPd24gPSBjbGFzczJ0eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgZm5Ub1N0cmluZyA9IGhhc093bi50b1N0cmluZztcblxudmFyIE9iamVjdEZ1bmN0aW9uU3RyaW5nID0gZm5Ub1N0cmluZy5jYWxsKCBPYmplY3QgKTtcblxudmFyIHN1cHBvcnQgPSB7fTtcblxudmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKCBvYmogKSB7XG5cbiAgICAgIC8vIFN1cHBvcnQ6IENocm9tZSA8PTU3LCBGaXJlZm94IDw9NTJcbiAgICAgIC8vIEluIHNvbWUgYnJvd3NlcnMsIHR5cGVvZiByZXR1cm5zIFwiZnVuY3Rpb25cIiBmb3IgSFRNTCA8b2JqZWN0PiBlbGVtZW50c1xuICAgICAgLy8gKGkuZS4sIGB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvYmplY3RcIiApID09PSBcImZ1bmN0aW9uXCJgKS5cbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2xhc3NpZnkgKmFueSogRE9NIG5vZGUgYXMgYSBmdW5jdGlvbi5cbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iai5ub2RlVHlwZSAhPT0gXCJudW1iZXJcIjtcbiAgfTtcblxuXG52YXIgaXNXaW5kb3cgPSBmdW5jdGlvbiBpc1dpbmRvdyggb2JqICkge1xuXHRcdHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7XG5cdH07XG5cblxuXG5cblx0dmFyIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgPSB7XG5cdFx0dHlwZTogdHJ1ZSxcblx0XHRzcmM6IHRydWUsXG5cdFx0bm9uY2U6IHRydWUsXG5cdFx0bm9Nb2R1bGU6IHRydWVcblx0fTtcblxuXHRmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBub2RlLCBkb2MgKSB7XG5cdFx0ZG9jID0gZG9jIHx8IGRvY3VtZW50O1xuXG5cdFx0dmFyIGksIHZhbCxcblx0XHRcdHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCBcInNjcmlwdFwiICk7XG5cblx0XHRzY3JpcHQudGV4dCA9IGNvZGU7XG5cdFx0aWYgKCBub2RlICkge1xuXHRcdFx0Zm9yICggaSBpbiBwcmVzZXJ2ZWRTY3JpcHRBdHRyaWJ1dGVzICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggNjQrLCBFZGdlIDE4K1xuXHRcdFx0XHQvLyBTb21lIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgdGhlIFwibm9uY2VcIiBwcm9wZXJ0eSBvbiBzY3JpcHRzLlxuXHRcdFx0XHQvLyBPbiB0aGUgb3RoZXIgaGFuZCwganVzdCB1c2luZyBgZ2V0QXR0cmlidXRlYCBpcyBub3QgZW5vdWdoIGFzXG5cdFx0XHRcdC8vIHRoZSBgbm9uY2VgIGF0dHJpYnV0ZSBpcyByZXNldCB0byBhbiBlbXB0eSBzdHJpbmcgd2hlbmV2ZXIgaXRcblx0XHRcdFx0Ly8gYmVjb21lcyBicm93c2luZy1jb250ZXh0IGNvbm5lY3RlZC5cblx0XHRcdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvMjM2OVxuXHRcdFx0XHQvLyBTZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jbm9uY2UtYXR0cmlidXRlc1xuXHRcdFx0XHQvLyBUaGUgYG5vZGUuZ2V0QXR0cmlidXRlYCBjaGVjayB3YXMgYWRkZWQgZm9yIHRoZSBzYWtlIG9mXG5cdFx0XHRcdC8vIGBqUXVlcnkuZ2xvYmFsRXZhbGAgc28gdGhhdCBpdCBjYW4gZmFrZSBhIG5vbmNlLWNvbnRhaW5pbmcgbm9kZVxuXHRcdFx0XHQvLyB2aWEgYW4gb2JqZWN0LlxuXHRcdFx0XHR2YWwgPSBub2RlWyBpIF0gfHwgbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoIGkgKTtcblx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0c2NyaXB0LnNldEF0dHJpYnV0ZSggaSwgdmFsICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZG9jLmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdCApLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApO1xuXHR9XG5cblxuZnVuY3Rpb24gdG9UeXBlKCBvYmogKSB7XG5cdGlmICggb2JqID09IG51bGwgKSB7XG5cdFx0cmV0dXJuIG9iaiArIFwiXCI7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cClcblx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiID9cblx0XHRjbGFzczJ0eXBlWyB0b1N0cmluZy5jYWxsKCBvYmogKSBdIHx8IFwib2JqZWN0XCIgOlxuXHRcdHR5cGVvZiBvYmo7XG59XG4vKiBnbG9iYWwgU3ltYm9sICovXG4vLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuZXNsaW50cmMuanNvbiB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2JhbFxuLy8gdW5ndWFyZGVkIGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmluZSBnbG9iYWwgb25seSBmb3IgdGhpcyBtb2R1bGVcblxuXG5cbnZhclxuXHR2ZXJzaW9uID0gXCIzLjQuMVwiLFxuXG5cdC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblxuXHRcdC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJ1xuXHRcdC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQpXG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG5cdHJ0cmltID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nO1xuXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xuXG5cdC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWRcblx0anF1ZXJ5OiB2ZXJzaW9uLFxuXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXG5cdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdGlmICggbnVtID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRyZXR1cm4gbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXTtcblx0fSxcblxuXHQvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrXG5cdC8vIChyZXR1cm5pbmcgdGhlIG5ldyBtYXRjaGVkIGVsZW1lbnQgc2V0KVxuXHRwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblxuXHRcdC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0XG5cdFx0dmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApO1xuXG5cdFx0Ly8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSlcblx0XHRyZXQucHJldk9iamVjdCA9IHRoaXM7XG5cblx0XHQvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldFxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0Ly8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cblx0ZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2sgKTtcblx0fSxcblxuXHRtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRzbGljZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTtcblx0fSxcblxuXHRmaXJzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIDAgKTtcblx0fSxcblxuXHRsYXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcblx0fSxcblxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XG5cdFx0dmFyIGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0aiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzWyBqIF0gXSA6IFtdICk7XG5cdH0sXG5cblx0ZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTtcblx0fSxcblxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXG5cdC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLlxuXHRwdXNoOiBwdXNoLFxuXHRzb3J0OiBhcnIuc29ydCxcblx0c3BsaWNlOiBhcnIuc3BsaWNlXG59O1xuXG5qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyAwIF0gfHwge30sXG5cdFx0aSA9IDEsXG5cdFx0bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRkZWVwID0gZmFsc2U7XG5cblx0Ly8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cblx0XHQvLyBTa2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307XG5cdFx0aSsrO1xuXHR9XG5cblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG5cdGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblxuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHtcblxuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRjb3B5ID0gb3B0aW9uc1sgbmFtZSBdO1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgT2JqZWN0LnByb3RvdHlwZSBwb2xsdXRpb25cblx0XHRcdFx0Ly8gUHJldmVudCBuZXZlci1lbmRpbmcgbG9vcFxuXHRcdFx0XHRpZiAoIG5hbWUgPT09IFwiX19wcm90b19fXCIgfHwgdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fFxuXHRcdFx0XHRcdCggY29weUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCBjb3B5ICkgKSApICkge1xuXHRcdFx0XHRcdHNyYyA9IHRhcmdldFsgbmFtZSBdO1xuXG5cdFx0XHRcdFx0Ly8gRW5zdXJlIHByb3BlciB0eXBlIGZvciB0aGUgc291cmNlIHZhbHVlXG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSAmJiAhQXJyYXkuaXNBcnJheSggc3JjICkgKSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IFtdO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoICFjb3B5SXNBcnJheSAmJiAhalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApICkge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSB7fTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cblx0XHRcdFx0XHQvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW1cblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIGNsb25lLCBjb3B5ICk7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHR9IGVsc2UgaWYgKCBjb3B5ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBjb3B5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBVbmlxdWUgZm9yIGVhY2ggY29weSBvZiBqUXVlcnkgb24gdGhlIHBhZ2Vcblx0ZXhwYW5kbzogXCJqUXVlcnlcIiArICggdmVyc2lvbiArIE1hdGgucmFuZG9tKCkgKS5yZXBsYWNlKCAvXFxEL2csIFwiXCIgKSxcblxuXHQvLyBBc3N1bWUgalF1ZXJ5IGlzIHJlYWR5IHdpdGhvdXQgdGhlIHJlYWR5IG1vZHVsZVxuXHRpc1JlYWR5OiB0cnVlLFxuXG5cdGVycm9yOiBmdW5jdGlvbiggbXNnICkge1xuXHRcdHRocm93IG5ldyBFcnJvciggbXNnICk7XG5cdH0sXG5cblx0bm9vcDogZnVuY3Rpb24oKSB7fSxcblxuXHRpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdHZhciBwcm90bywgQ3RvcjtcblxuXHRcdC8vIERldGVjdCBvYnZpb3VzIG5lZ2F0aXZlc1xuXHRcdC8vIFVzZSB0b1N0cmluZyBpbnN0ZWFkIG9mIGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0c1xuXHRcdGlmICggIW9iaiB8fCB0b1N0cmluZy5jYWxsKCBvYmogKSAhPT0gXCJbb2JqZWN0IE9iamVjdF1cIiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRwcm90byA9IGdldFByb3RvKCBvYmogKTtcblxuXHRcdC8vIE9iamVjdHMgd2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRlKCBudWxsIClgKSBhcmUgcGxhaW5cblx0XHRpZiAoICFwcm90byApIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIE9iamVjdHMgd2l0aCBwcm90b3R5cGUgYXJlIHBsYWluIGlmZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2JqZWN0IGZ1bmN0aW9uXG5cdFx0Q3RvciA9IGhhc093bi5jYWxsKCBwcm90bywgXCJjb25zdHJ1Y3RvclwiICkgJiYgcHJvdG8uY29uc3RydWN0b3I7XG5cdFx0cmV0dXJuIHR5cGVvZiBDdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgZm5Ub1N0cmluZy5jYWxsKCBDdG9yICkgPT09IE9iamVjdEZ1bmN0aW9uU3RyaW5nO1xuXHR9LFxuXG5cdGlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIG5hbWU7XG5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Ly8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHRcblx0Z2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUsIG9wdGlvbnMgKSB7XG5cdFx0RE9NRXZhbCggY29kZSwgeyBub25jZTogb3B0aW9ucyAmJiBvcHRpb25zLm5vbmNlIH0gKTtcblx0fSxcblxuXHRlYWNoOiBmdW5jdGlvbiggb2JqLCBjYWxsYmFjayApIHtcblx0XHR2YXIgbGVuZ3RoLCBpID0gMDtcblxuXHRcdGlmICggaXNBcnJheUxpa2UoIG9iaiApICkge1xuXHRcdFx0bGVuZ3RoID0gb2JqLmxlbmd0aDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIG9iaiApIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb2JqO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seVxuXHR0cmltOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRyZXR1cm4gdGV4dCA9PSBudWxsID9cblx0XHRcdFwiXCIgOlxuXHRcdFx0KCB0ZXh0ICsgXCJcIiApLnJlcGxhY2UoIHJ0cmltLCBcIlwiICk7XG5cdH0sXG5cblx0Ly8gcmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7XG5cdFx0dmFyIHJldCA9IHJlc3VsdHMgfHwgW107XG5cblx0XHRpZiAoIGFyciAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBpc0FycmF5TGlrZSggT2JqZWN0KCBhcnIgKSApICkge1xuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHJldCxcblx0XHRcdFx0XHR0eXBlb2YgYXJyID09PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRbIGFyciBdIDogYXJyXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmNhbGwoIHJldCwgYXJyICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHRpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkge1xuXHRcdHJldHVybiBhcnIgPT0gbnVsbCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7XG5cdFx0dmFyIGxlbiA9ICtzZWNvbmQubGVuZ3RoLFxuXHRcdFx0aiA9IDAsXG5cdFx0XHRpID0gZmlyc3QubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTtcblx0XHR9XG5cblx0XHRmaXJzdC5sZW5ndGggPSBpO1xuXG5cdFx0cmV0dXJuIGZpcnN0O1xuXHR9LFxuXG5cdGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHtcblx0XHR2YXIgY2FsbGJhY2tJbnZlcnNlLFxuXHRcdFx0bWF0Y2hlcyA9IFtdLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXG5cdFx0XHRjYWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zXG5cdFx0Ly8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25cblx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdGNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApO1xuXHRcdFx0aWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkge1xuXHRcdFx0XHRtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbWF0Y2hlcztcblx0fSxcblxuXHQvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7XG5cdFx0dmFyIGxlbmd0aCwgdmFsdWUsXG5cdFx0XHRpID0gMCxcblx0XHRcdHJldCA9IFtdO1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyIG5ldyB2YWx1ZXNcblx0XHRpZiAoIGlzQXJyYXlMaWtlKCBlbGVtcyApICkge1xuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCxcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICggaSBpbiBlbGVtcyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRcdHJldHVybiBjb25jYXQuYXBwbHkoIFtdLCByZXQgKTtcblx0fSxcblxuXHQvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVjdHNcblx0Z3VpZDogMSxcblxuXHQvLyBqUXVlcnkuc3VwcG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXJcblx0Ly8gcHJvcGVydGllcyB0byBpdCBzbyBpdCBuZWVkcyB0byBleGlzdC5cblx0c3VwcG9ydDogc3VwcG9ydFxufSApO1xuXG5pZiAoIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiApIHtcblx0alF1ZXJ5LmZuWyBTeW1ib2wuaXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07XG59XG5cbi8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1hcFxualF1ZXJ5LmVhY2goIFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2xcIi5zcGxpdCggXCIgXCIgKSxcbmZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHRjbGFzczJ0eXBlWyBcIltvYmplY3QgXCIgKyBuYW1lICsgXCJdXCIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbn0gKTtcblxuZnVuY3Rpb24gaXNBcnJheUxpa2UoIG9iaiApIHtcblxuXHQvLyBTdXBwb3J0OiByZWFsIGlPUyA4LjIgb25seSAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpXG5cdC8vIGBpbmAgY2hlY2sgdXNlZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSlcblx0Ly8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUgdG8gZmFsc2UgbmVnYXRpdmVzXG5cdC8vIHJlZ2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUVcblx0dmFyIGxlbmd0aCA9ICEhb2JqICYmIFwibGVuZ3RoXCIgaW4gb2JqICYmIG9iai5sZW5ndGgsXG5cdFx0dHlwZSA9IHRvVHlwZSggb2JqICk7XG5cblx0aWYgKCBpc0Z1bmN0aW9uKCBvYmogKSB8fCBpc1dpbmRvdyggb2JqICkgKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIHR5cGUgPT09IFwiYXJyYXlcIiB8fCBsZW5ndGggPT09IDAgfHxcblx0XHR0eXBlb2YgbGVuZ3RoID09PSBcIm51bWJlclwiICYmIGxlbmd0aCA+IDAgJiYgKCBsZW5ndGggLSAxICkgaW4gb2JqO1xufVxudmFyIFNpenpsZSA9XG4vKiFcbiAqIFNpenpsZSBDU1MgU2VsZWN0b3IgRW5naW5lIHYyLjMuNFxuICogaHR0cHM6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwczovL2pzLmZvdW5kYXRpb24vXG4gKlxuICogRGF0ZTogMjAxOS0wNC0wOFxuICovXG4oZnVuY3Rpb24oIHdpbmRvdyApIHtcblxudmFyIGksXG5cdHN1cHBvcnQsXG5cdEV4cHIsXG5cdGdldFRleHQsXG5cdGlzWE1MLFxuXHR0b2tlbml6ZSxcblx0Y29tcGlsZSxcblx0c2VsZWN0LFxuXHRvdXRlcm1vc3RDb250ZXh0LFxuXHRzb3J0SW5wdXQsXG5cdGhhc0R1cGxpY2F0ZSxcblxuXHQvLyBMb2NhbCBkb2N1bWVudCB2YXJzXG5cdHNldERvY3VtZW50LFxuXHRkb2N1bWVudCxcblx0ZG9jRWxlbSxcblx0ZG9jdW1lbnRJc0hUTUwsXG5cdHJidWdneVFTQSxcblx0cmJ1Z2d5TWF0Y2hlcyxcblx0bWF0Y2hlcyxcblx0Y29udGFpbnMsXG5cblx0Ly8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YVxuXHRleHBhbmRvID0gXCJzaXp6bGVcIiArIDEgKiBuZXcgRGF0ZSgpLFxuXHRwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsXG5cdGRpcnJ1bnMgPSAwLFxuXHRkb25lID0gMCxcblx0Y2xhc3NDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0bm9ubmF0aXZlU2VsZWN0b3JDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiAwO1xuXHR9LFxuXG5cdC8vIEluc3RhbmNlIG1ldGhvZHNcblx0aGFzT3duID0gKHt9KS5oYXNPd25Qcm9wZXJ0eSxcblx0YXJyID0gW10sXG5cdHBvcCA9IGFyci5wb3AsXG5cdHB1c2hfbmF0aXZlID0gYXJyLnB1c2gsXG5cdHB1c2ggPSBhcnIucHVzaCxcblx0c2xpY2UgPSBhcnIuc2xpY2UsXG5cdC8vIFVzZSBhIHN0cmlwcGVkLWRvd24gaW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5hdGl2ZVxuXHQvLyBodHRwczovL2pzcGVyZi5jb20vdGhvci1pbmRleG9mLXZzLWZvci81XG5cdGluZGV4T2YgPSBmdW5jdGlvbiggbGlzdCwgZWxlbSApIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRsZW4gPSBsaXN0Lmxlbmd0aDtcblx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGlmICggbGlzdFtpXSA9PT0gZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAtMTtcblx0fSxcblxuXHRib29sZWFucyA9IFwiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWRcIixcblxuXHQvLyBSZWd1bGFyIGV4cHJlc3Npb25zXG5cblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI3doaXRlc3BhY2Vcblx0d2hpdGVzcGFjZSA9IFwiW1xcXFx4MjBcXFxcdFxcXFxyXFxcXG5cXFxcZl1cIixcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjdmFsdWUtZGVmLWlkZW50aWZpZXJcblx0aWRlbnRpZmllciA9IFwiKD86XFxcXFxcXFwufFtcXFxcdy1dfFteXFwwLVxcXFx4YTBdKStcIixcblxuXHQvLyBBdHRyaWJ1dGUgc2VsZWN0b3JzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnNcblx0YXR0cmlidXRlcyA9IFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBPcGVyYXRvciAoY2FwdHVyZSAyKVxuXHRcdFwiKihbKl4kfCF+XT89KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0Ly8gXCJBdHRyaWJ1dGUgdmFsdWVzIG11c3QgYmUgQ1NTIGlkZW50aWZpZXJzIFtjYXB0dXJlIDVdIG9yIHN0cmluZ3MgW2NhcHR1cmUgMyBvciBjYXB0dXJlIDRdXCJcblx0XHRcIiooPzonKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCJ8KFwiICsgaWRlbnRpZmllciArIFwiKSl8KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0XCIqXFxcXF1cIixcblxuXHRwc2V1ZG9zID0gXCI6KFwiICsgaWRlbnRpZmllciArIFwiKSg/OlxcXFwoKFwiICtcblx0XHQvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMgbmVlZGluZyB0b2tlbml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJndW1lbnRzOlxuXHRcdC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KVxuXHRcdFwiKCcoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcIil8XCIgK1xuXHRcdC8vIDIuIHNpbXBsZSAoY2FwdHVyZSA2KVxuXHRcdFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKClbXFxcXF1dfFwiICsgYXR0cmlidXRlcyArIFwiKSopfFwiICtcblx0XHQvLyAzLiBhbnl0aGluZyBlbHNlIChjYXB0dXJlIDIpXG5cdFx0XCIuKlwiICtcblx0XHRcIilcXFxcKXwpXCIsXG5cblx0Ly8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlclxuXHRyd2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyBcIitcIiwgXCJnXCIgKSxcblx0cnRyaW0gPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIit8KCg/Ol58W15cXFxcXFxcXF0pKD86XFxcXFxcXFwuKSopXCIgKyB3aGl0ZXNwYWNlICsgXCIrJFwiLCBcImdcIiApLFxuXG5cdHJjb21tYSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKixcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXHRyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiooWz4rfl18XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcblx0cmRlc2NlbmQgPSBuZXcgUmVnRXhwKCB3aGl0ZXNwYWNlICsgXCJ8PlwiICksXG5cblx0cnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSxcblx0cmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCBcIl5cIiArIGlkZW50aWZpZXIgKyBcIiRcIiApLFxuXG5cdG1hdGNoRXhwciA9IHtcblx0XHRcIklEXCI6IG5ldyBSZWdFeHAoIFwiXiMoXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIkNMQVNTXCI6IG5ldyBSZWdFeHAoIFwiXlxcXFwuKFwiICsgaWRlbnRpZmllciArIFwiKVwiICksXG5cdFx0XCJUQUdcIjogbmV3IFJlZ0V4cCggXCJeKFwiICsgaWRlbnRpZmllciArIFwifFsqXSlcIiApLFxuXHRcdFwiQVRUUlwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIGF0dHJpYnV0ZXMgKSxcblx0XHRcIlBTRVVET1wiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHBzZXVkb3MgKSxcblx0XHRcIkNISUxEXCI6IG5ldyBSZWdFeHAoIFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKGV2ZW58b2RkfCgoWystXXwpKFxcXFxkKilufClcIiArIHdoaXRlc3BhY2UgKyBcIiooPzooWystXXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihcXFxcZCspfCkpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KVwiLCBcImlcIiApLFxuXHRcdFwiYm9vbFwiOiBuZXcgUmVnRXhwKCBcIl4oPzpcIiArIGJvb2xlYW5zICsgXCIpJFwiLCBcImlcIiApLFxuXHRcdC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKVxuXHRcdC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGBcblx0XHRcIm5lZWRzQ29udGV4dFwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcXFwoXCIgK1xuXHRcdFx0d2hpdGVzcGFjZSArIFwiKigoPzotXFxcXGQpP1xcXFxkKilcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpKD89W14tXXwkKVwiLCBcImlcIiApXG5cdH0sXG5cblx0cmh0bWwgPSAvSFRNTCQvaSxcblx0cmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJoZWFkZXIgPSAvXmhcXGQkL2ksXG5cblx0cm5hdGl2ZSA9IC9eW157XStcXHtcXHMqXFxbbmF0aXZlIFxcdy8sXG5cblx0Ly8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2YWJsZSBJRCBvciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzXG5cdHJxdWlja0V4cHIgPSAvXig/OiMoW1xcdy1dKyl8KFxcdyspfFxcLihbXFx3LV0rKSkkLyxcblxuXHRyc2libGluZyA9IC9bK35dLyxcblxuXHQvLyBDU1MgZXNjYXBlc1xuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzXG5cdHJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoIFwiXFxcXFxcXFwoW1xcXFxkYS1mXXsxLDZ9XCIgKyB3aGl0ZXNwYWNlICsgXCI/fChcIiArIHdoaXRlc3BhY2UgKyBcIil8LilcIiwgXCJpZ1wiICksXG5cdGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSApIHtcblx0XHR2YXIgaGlnaCA9IFwiMHhcIiArIGVzY2FwZWQgLSAweDEwMDAwO1xuXHRcdC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50XG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveDwyNFxuXHRcdC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgK1wiMHhcIlxuXHRcdHJldHVybiBoaWdoICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID9cblx0XHRcdGVzY2FwZWQgOlxuXHRcdFx0aGlnaCA8IDAgP1xuXHRcdFx0XHQvLyBCTVAgY29kZXBvaW50XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOlxuXHRcdFx0XHQvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50IChzdXJyb2dhdGUgcGFpcilcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7XG5cdH0sXG5cblx0Ly8gQ1NTIHN0cmluZy9pZGVudGlmaWVyIHNlcmlhbGl6YXRpb25cblx0Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRpb21zXG5cdHJjc3Nlc2NhcGUgPSAvKFtcXDAtXFx4MWZcXHg3Zl18Xi0/XFxkKXxeLSR8W15cXDAtXFx4MWZcXHg3Zi1cXHVGRkZGXFx3LV0vZyxcblx0ZmNzc2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwgYXNDb2RlUG9pbnQgKSB7XG5cdFx0aWYgKCBhc0NvZGVQb2ludCApIHtcblxuXHRcdFx0Ly8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSXG5cdFx0XHRpZiAoIGNoID09PSBcIlxcMFwiICkge1xuXHRcdFx0XHRyZXR1cm4gXCJcXHVGRkZEXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgKGRlcGVuZGVudCB1cG9uIHBvc2l0aW9uKSBudW1iZXJzIGdldCBlc2NhcGVkIGFzIGNvZGUgcG9pbnRzXG5cdFx0XHRyZXR1cm4gY2guc2xpY2UoIDAsIC0xICkgKyBcIlxcXFxcIiArIGNoLmNoYXJDb2RlQXQoIGNoLmxlbmd0aCAtIDEgKS50b1N0cmluZyggMTYgKSArIFwiIFwiO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyIHBvdGVudGlhbGx5LXNwZWNpYWwgQVNDSUkgY2hhcmFjdGVycyBnZXQgYmFja3NsYXNoLWVzY2FwZWRcblx0XHRyZXR1cm4gXCJcXFxcXCIgKyBjaDtcblx0fSxcblxuXHQvLyBVc2VkIGZvciBpZnJhbWVzXG5cdC8vIFNlZSBzZXREb2N1bWVudCgpXG5cdC8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhIFwiUGVybWlzc2lvbiBEZW5pZWRcIlxuXHQvLyBlcnJvciBpbiBJRVxuXHR1bmxvYWRIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG5cdFx0c2V0RG9jdW1lbnQoKTtcblx0fSxcblxuXHRpbkRpc2FibGVkRmllbGRzZXQgPSBhZGRDb21iaW5hdG9yKFxuXHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRydWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImZpZWxkc2V0XCI7XG5cdFx0fSxcblx0XHR7IGRpcjogXCJwYXJlbnROb2RlXCIsIG5leHQ6IFwibGVnZW5kXCIgfVxuXHQpO1xuXG4vLyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3QgKVxudHJ5IHtcblx0cHVzaC5hcHBseShcblx0XHQoYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMgKSksXG5cdFx0cHJlZmVycmVkRG9jLmNoaWxkTm9kZXNcblx0KTtcblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0Ly8gRGV0ZWN0IHNpbGVudGx5IGZhaWxpbmcgcHVzaC5hcHBseVxuXHRhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVUeXBlO1xufSBjYXRjaCAoIGUgKSB7XG5cdHB1c2ggPSB7IGFwcGx5OiBhcnIubGVuZ3RoID9cblxuXHRcdC8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlXG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0cHVzaF9uYXRpdmUuYXBwbHkoIHRhcmdldCwgc2xpY2UuY2FsbChlbHMpICk7XG5cdFx0fSA6XG5cblx0XHQvLyBTdXBwb3J0OiBJRTw5XG5cdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZCBkaXJlY3RseVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHZhciBqID0gdGFyZ2V0Lmxlbmd0aCxcblx0XHRcdFx0aSA9IDA7XG5cdFx0XHQvLyBDYW4ndCB0cnVzdCBOb2RlTGlzdC5sZW5ndGhcblx0XHRcdHdoaWxlICggKHRhcmdldFtqKytdID0gZWxzW2krK10pICkge31cblx0XHRcdHRhcmdldC5sZW5ndGggPSBqIC0gMTtcblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBtLCBpLCBlbGVtLCBuaWQsIG1hdGNoLCBncm91cHMsIG5ld1NlbGVjdG9yLFxuXHRcdG5ld0NvbnRleHQgPSBjb250ZXh0ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCxcblxuXHRcdC8vIG5vZGVUeXBlIGRlZmF1bHRzIHRvIDksIHNpbmNlIGNvbnRleHQgZGVmYXVsdHMgdG8gZG9jdW1lbnRcblx0XHRub2RlVHlwZSA9IGNvbnRleHQgPyBjb250ZXh0Lm5vZGVUeXBlIDogOTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBSZXR1cm4gZWFybHkgZnJvbSBjYWxscyB3aXRoIGludmFsaWQgc2VsZWN0b3Igb3IgY29udGV4dFxuXHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiB8fCAhc2VsZWN0b3IgfHxcblx0XHRub2RlVHlwZSAhPT0gMSAmJiBub2RlVHlwZSAhPT0gOSAmJiBub2RlVHlwZSAhPT0gMTEgKSB7XG5cblx0XHRyZXR1cm4gcmVzdWx0cztcblx0fVxuXG5cdC8vIFRyeSB0byBzaG9ydGN1dCBmaW5kIG9wZXJhdGlvbnMgKGFzIG9wcG9zZWQgdG8gZmlsdGVycykgaW4gSFRNTCBkb2N1bWVudHNcblx0aWYgKCAhc2VlZCApIHtcblxuXHRcdGlmICggKCBjb250ZXh0ID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBwcmVmZXJyZWREb2MgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0XHRzZXREb2N1bWVudCggY29udGV4dCApO1xuXHRcdH1cblx0XHRjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDtcblxuXHRcdGlmICggZG9jdW1lbnRJc0hUTUwgKSB7XG5cblx0XHRcdC8vIElmIHRoZSBzZWxlY3RvciBpcyBzdWZmaWNpZW50bHkgc2ltcGxlLCB0cnkgdXNpbmcgYSBcImdldCpCeSpcIiBET00gbWV0aG9kXG5cdFx0XHQvLyAoZXhjZXB0aW5nIERvY3VtZW50RnJhZ21lbnQgY29udGV4dCwgd2hlcmUgdGhlIG1ldGhvZHMgZG9uJ3QgZXhpc3QpXG5cdFx0XHRpZiAoIG5vZGVUeXBlICE9PSAxMSAmJiAobWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICkpICkge1xuXG5cdFx0XHRcdC8vIElEIHNlbGVjdG9yXG5cdFx0XHRcdGlmICggKG0gPSBtYXRjaFsxXSkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb2N1bWVudCBjb250ZXh0XG5cdFx0XHRcdFx0aWYgKCBub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0XG5cdFx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHRcdC8vIGdldEVsZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSURcblx0XHRcdFx0XHRcdFx0aWYgKCBlbGVtLmlkID09PSBtICkge1xuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEVsZW1lbnQgY29udGV4dFxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0XG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9uc1xuXHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0aWYgKCBuZXdDb250ZXh0ICYmIChlbGVtID0gbmV3Q29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSAmJlxuXHRcdFx0XHRcdFx0XHRjb250YWlucyggY29udGV4dCwgZWxlbSApICYmXG5cdFx0XHRcdFx0XHRcdGVsZW0uaWQgPT09IG0gKSB7XG5cblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUeXBlIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzJdICkge1xuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHNlbGVjdG9yICkgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0XHQvLyBDbGFzcyBzZWxlY3RvclxuXHRcdFx0XHR9IGVsc2UgaWYgKCAobSA9IG1hdGNoWzNdKSAmJiBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiZcblx0XHRcdFx0XHRjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG0gKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRha2UgYWR2YW50YWdlIG9mIHF1ZXJ5U2VsZWN0b3JBbGxcblx0XHRcdGlmICggc3VwcG9ydC5xc2EgJiZcblx0XHRcdFx0IW5vbm5hdGl2ZVNlbGVjdG9yQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXSAmJlxuXHRcdFx0XHQoIXJidWdneVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3QoIHNlbGVjdG9yICkpICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgOCBvbmx5XG5cdFx0XHRcdC8vIEV4Y2x1ZGUgb2JqZWN0IGVsZW1lbnRzXG5cdFx0XHRcdChub2RlVHlwZSAhPT0gMSB8fCBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwib2JqZWN0XCIpICkge1xuXG5cdFx0XHRcdG5ld1NlbGVjdG9yID0gc2VsZWN0b3I7XG5cdFx0XHRcdG5ld0NvbnRleHQgPSBjb250ZXh0O1xuXG5cdFx0XHRcdC8vIHFTQSBjb25zaWRlcnMgZWxlbWVudHMgb3V0c2lkZSBhIHNjb3Bpbmcgcm9vdCB3aGVuIGV2YWx1YXRpbmcgY2hpbGQgb3Jcblx0XHRcdFx0Ly8gZGVzY2VuZGFudCBjb21iaW5hdG9ycywgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudC5cblx0XHRcdFx0Ly8gSW4gc3VjaCBjYXNlcywgd2Ugd29yayBhcm91bmQgdGhlIGJlaGF2aW9yIGJ5IHByZWZpeGluZyBldmVyeSBzZWxlY3RvciBpbiB0aGVcblx0XHRcdFx0Ly8gbGlzdCB3aXRoIGFuIElEIHNlbGVjdG9yIHJlZmVyZW5jaW5nIHRoZSBzY29wZSBjb250ZXh0LlxuXHRcdFx0XHQvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhpcyB0ZWNobmlxdWUuXG5cdFx0XHRcdGlmICggbm9kZVR5cGUgPT09IDEgJiYgcmRlc2NlbmQudGVzdCggc2VsZWN0b3IgKSApIHtcblxuXHRcdFx0XHRcdC8vIENhcHR1cmUgdGhlIGNvbnRleHQgSUQsIHNldHRpbmcgaXQgZmlyc3QgaWYgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0aWYgKCAobmlkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUoIFwiaWRcIiApKSApIHtcblx0XHRcdFx0XHRcdG5pZCA9IG5pZC5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnRleHQuc2V0QXR0cmlidXRlKCBcImlkXCIsIChuaWQgPSBleHBhbmRvKSApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFByZWZpeCBldmVyeSBzZWxlY3RvciBpbiB0aGUgbGlzdFxuXHRcdFx0XHRcdGdyb3VwcyA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdFx0XHRcdGkgPSBncm91cHMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0Z3JvdXBzW2ldID0gXCIjXCIgKyBuaWQgKyBcIiBcIiArIHRvU2VsZWN0b3IoIGdyb3Vwc1tpXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRuZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKCBcIixcIiApO1xuXG5cdFx0XHRcdFx0Ly8gRXhwYW5kIGNvbnRleHQgZm9yIHNpYmxpbmcgc2VsZWN0b3JzXG5cdFx0XHRcdFx0bmV3Q29udGV4dCA9IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8XG5cdFx0XHRcdFx0XHRjb250ZXh0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0bmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCBuZXdTZWxlY3RvciApXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0fSBjYXRjaCAoIHFzYUVycm9yICkge1xuXHRcdFx0XHRcdG5vbm5hdGl2ZVNlbGVjdG9yQ2FjaGUoIHNlbGVjdG9yLCB0cnVlICk7XG5cdFx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdFx0aWYgKCBuaWQgPT09IGV4cGFuZG8gKSB7XG5cdFx0XHRcdFx0XHRjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtmdW5jdGlvbihzdHJpbmcsIG9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cdFx0Ly8gVXNlIChrZXkgKyBcIiBcIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1Nylcblx0XHRpZiAoIGtleXMucHVzaCgga2V5ICsgXCIgXCIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XG5cdFx0XHQvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXNcblx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07XG5cdFx0fVxuXHRcdHJldHVybiAoY2FjaGVbIGtleSArIFwiIFwiIF0gPSB2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGFzc2VydCggZm4gKSB7XG5cdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiKTtcblxuXHR0cnkge1xuXHRcdHJldHVybiAhIWZuKCBlbCApO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGZpbmFsbHkge1xuXHRcdC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdFxuXHRcdGlmICggZWwucGFyZW50Tm9kZSApIHtcblx0XHRcdGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsICk7XG5cdFx0fVxuXHRcdC8vIHJlbGVhc2UgbWVtb3J5IGluIElFXG5cdFx0ZWwgPSBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyc1xuICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkXG4gKi9cbmZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7XG5cdHZhciBhcnIgPSBhdHRycy5zcGxpdChcInxcIiksXG5cdFx0aSA9IGFyci5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0RXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNpYmxpbmdzXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGFcbiAqIEBwYXJhbSB7RWxlbWVudH0gYlxuICogQHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiXG4gKi9cbmZ1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiApIHtcblx0dmFyIGN1ciA9IGIgJiYgYSxcblx0XHRkaWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0YS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7XG5cblx0Ly8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzXG5cdGlmICggZGlmZiApIHtcblx0XHRyZXR1cm4gZGlmZjtcblx0fVxuXG5cdC8vIENoZWNrIGlmIGIgZm9sbG93cyBhXG5cdGlmICggY3VyICkge1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7XG5cdFx0XHRpZiAoIGN1ciA9PT0gYiApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBhID8gMSA6IC0xO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0b25zXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gKG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciA6ZW5hYmxlZC86ZGlzYWJsZWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZGlzYWJsZWQgdHJ1ZSBmb3IgOmRpc2FibGVkOyBmYWxzZSBmb3IgOmVuYWJsZWRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGRpc2FibGVkICkge1xuXG5cdC8vIEtub3duIDpkaXNhYmxlZCBmYWxzZSBwb3NpdGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShuKzIpIDpjYW4tZGlzYWJsZVxuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBPbmx5IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWVuYWJsZWRcblx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1kaXNhYmxlZFxuXHRcdGlmICggXCJmb3JtXCIgaW4gZWxlbSApIHtcblxuXHRcdFx0Ly8gQ2hlY2sgZm9yIGluaGVyaXRlZCBkaXNhYmxlZG5lc3Mgb24gcmVsZXZhbnQgbm9uLWRpc2FibGVkIGVsZW1lbnRzOlxuXHRcdFx0Ly8gKiBsaXN0ZWQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgZmllbGRzZXRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjYXRlZ29yeS1saXN0ZWRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LWZlLWRpc2FibGVkXG5cdFx0XHQvLyAqIG9wdGlvbiBlbGVtZW50cyBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1vcHRpb24tZGlzYWJsZWRcblx0XHRcdC8vIEFsbCBzdWNoIGVsZW1lbnRzIGhhdmUgYSBcImZvcm1cIiBwcm9wZXJ0eS5cblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICYmIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdC8vIE9wdGlvbiBlbGVtZW50cyBkZWZlciB0byBhIHBhcmVudCBvcHRncm91cCBpZiBwcmVzZW50XG5cdFx0XHRcdGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0ucGFyZW50Tm9kZS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA2IC0gMTFcblx0XHRcdFx0Ly8gVXNlIHRoZSBpc0Rpc2FibGVkIHNob3J0Y3V0IHByb3BlcnR5IHRvIGNoZWNrIGZvciBkaXNhYmxlZCBmaWVsZHNldCBhbmNlc3RvcnNcblx0XHRcdFx0cmV0dXJuIGVsZW0uaXNEaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHxcblxuXHRcdFx0XHRcdC8vIFdoZXJlIHRoZXJlIGlzIG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5XG5cdFx0XHRcdFx0LyoganNoaW50IC1XMDE4ICovXG5cdFx0XHRcdFx0ZWxlbS5pc0Rpc2FibGVkICE9PSAhZGlzYWJsZWQgJiZcblx0XHRcdFx0XHRcdGluRGlzYWJsZWRGaWVsZHNldCggZWxlbSApID09PSBkaXNhYmxlZDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXG5cdFx0Ly8gVHJ5IHRvIHdpbm5vdyBvdXQgZWxlbWVudHMgdGhhdCBjYW4ndCBiZSBkaXNhYmxlZCBiZWZvcmUgdHJ1c3RpbmcgdGhlIGRpc2FibGVkIHByb3BlcnR5LlxuXHRcdC8vIFNvbWUgdmljdGltcyBnZXQgY2F1Z2h0IGluIG91ciBuZXQgKGxhYmVsLCBsZWdlbmQsIG1lbnUsIHRyYWNrKSwgYnV0IGl0IHNob3VsZG4ndFxuXHRcdC8vIGV2ZW4gZXhpc3Qgb24gdGhlbSwgbGV0IGFsb25lIGhhdmUgYSBib29sZWFuIHZhbHVlLlxuXHRcdH0gZWxzZSBpZiAoIFwibGFiZWxcIiBpbiBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdH1cblxuXHRcdC8vIFJlbWFpbmluZyBlbGVtZW50cyBhcmUgbmVpdGhlciA6ZW5hYmxlZCBub3IgOmRpc2FibGVkXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgcG9zaXRpb25hbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkge1xuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBhcmd1bWVudCApIHtcblx0XHRhcmd1bWVudCA9ICthcmd1bWVudDtcblx0XHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0dmFyIGosXG5cdFx0XHRcdG1hdGNoSW5kZXhlcyA9IGZuKCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICksXG5cdFx0XHRcdGkgPSBtYXRjaEluZGV4ZXMubGVuZ3RoO1xuXG5cdFx0XHQvLyBNYXRjaCBlbGVtZW50cyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4ZXNcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoIHNlZWRbIChqID0gbWF0Y2hJbmRleGVzW2ldKSBdICkge1xuXHRcdFx0XHRcdHNlZWRbal0gPSAhKG1hdGNoZXNbal0gPSBzZWVkW2pdKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgYSBub2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0PX0gY29udGV4dFxuICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJvb2xlYW59IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkge1xuXHRyZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb250ZXh0O1xufVxuXG4vLyBFeHBvc2Ugc3VwcG9ydCB2YXJzIGZvciBjb252ZW5pZW5jZVxuc3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307XG5cbi8qKlxuICogRGV0ZWN0cyBYTUwgbm9kZXNcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IGVsZW0gQW4gZWxlbWVudCBvciBhIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhNTCBub2RlXG4gKi9cbmlzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBuYW1lc3BhY2UgPSBlbGVtLm5hbWVzcGFjZVVSSSxcblx0XHRkb2NFbGVtID0gKGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtKS5kb2N1bWVudEVsZW1lbnQ7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD04XG5cdC8vIEFzc3VtZSBIVE1MIHdoZW4gZG9jdW1lbnRFbGVtZW50IGRvZXNuJ3QgeWV0IGV4aXN0LCBzdWNoIGFzIGluc2lkZSBsb2FkaW5nIGlmcmFtZXNcblx0Ly8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzQ4MzNcblx0cmV0dXJuICFyaHRtbC50ZXN0KCBuYW1lc3BhY2UgfHwgZG9jRWxlbSAmJiBkb2NFbGVtLm5vZGVOYW1lIHx8IFwiSFRNTFwiICk7XG59O1xuXG4vKipcbiAqIFNldHMgZG9jdW1lbnQtcmVsYXRlZCB2YXJpYWJsZXMgb25jZSBiYXNlZCBvbiB0aGUgY3VycmVudCBkb2N1bWVudFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gW2RvY10gQW4gZWxlbWVudCBvciBkb2N1bWVudCBvYmplY3QgdG8gdXNlIHRvIHNldCB0aGUgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqL1xuc2V0RG9jdW1lbnQgPSBTaXp6bGUuc2V0RG9jdW1lbnQgPSBmdW5jdGlvbiggbm9kZSApIHtcblx0dmFyIGhhc0NvbXBhcmUsIHN1YldpbmRvdyxcblx0XHRkb2MgPSBub2RlID8gbm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUgOiBwcmVmZXJyZWREb2M7XG5cblx0Ly8gUmV0dXJuIGVhcmx5IGlmIGRvYyBpcyBpbnZhbGlkIG9yIGFscmVhZHkgc2VsZWN0ZWRcblx0aWYgKCBkb2MgPT09IGRvY3VtZW50IHx8IGRvYy5ub2RlVHlwZSAhPT0gOSB8fCAhZG9jLmRvY3VtZW50RWxlbWVudCApIHtcblx0XHRyZXR1cm4gZG9jdW1lbnQ7XG5cdH1cblxuXHQvLyBVcGRhdGUgZ2xvYmFsIHZhcmlhYmxlc1xuXHRkb2N1bWVudCA9IGRvYztcblx0ZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblx0ZG9jdW1lbnRJc0hUTUwgPSAhaXNYTUwoIGRvY3VtZW50ICk7XG5cblx0Ly8gU3VwcG9ydDogSUUgOS0xMSwgRWRnZVxuXHQvLyBBY2Nlc3NpbmcgaWZyYW1lIGRvY3VtZW50cyBhZnRlciB1bmxvYWQgdGhyb3dzIFwicGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvcnMgKGpRdWVyeSAjMTM5MzYpXG5cdGlmICggcHJlZmVycmVkRG9jICE9PSBkb2N1bWVudCAmJlxuXHRcdChzdWJXaW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldykgJiYgc3ViV2luZG93LnRvcCAhPT0gc3ViV2luZG93ICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgMTEsIEVkZ2Vcblx0XHRpZiAoIHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0c3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwidW5sb2FkXCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTAgb25seVxuXHRcdH0gZWxzZSBpZiAoIHN1YldpbmRvdy5hdHRhY2hFdmVudCApIHtcblx0XHRcdHN1YldpbmRvdy5hdHRhY2hFdmVudCggXCJvbnVubG9hZFwiLCB1bmxvYWRIYW5kbGVyICk7XG5cdFx0fVxuXHR9XG5cblx0LyogQXR0cmlidXRlc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gU3VwcG9ydDogSUU8OFxuXHQvLyBWZXJpZnkgdGhhdCBnZXRBdHRyaWJ1dGUgcmVhbGx5IHJldHVybnMgYXR0cmlidXRlcyBhbmQgbm90IHByb3BlcnRpZXNcblx0Ly8gKGV4Y2VwdGluZyBJRTggYm9vbGVhbnMpXG5cdHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZWwuY2xhc3NOYW1lID0gXCJpXCI7XG5cdFx0cmV0dXJuICFlbC5nZXRBdHRyaWJ1dGUoXCJjbGFzc05hbWVcIik7XG5cdH0pO1xuXG5cdC8qIGdldEVsZW1lbnQocylCeSpcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKSByZXR1cm5zIG9ubHkgZWxlbWVudHNcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZWwuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoXCJcIikgKTtcblx0XHRyZXR1cm4gIWVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKS5sZW5ndGg7XG5cdH0pO1xuXG5cdC8vIFN1cHBvcnQ6IElFPDlcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICk7XG5cblx0Ly8gU3VwcG9ydDogSUU8MTBcblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lXG5cdC8vIFRoZSBicm9rZW4gZ2V0RWxlbWVudEJ5SWQgbWV0aG9kcyBkb24ndCBwaWNrIHVwIHByb2dyYW1tYXRpY2FsbHktc2V0IG5hbWVzLFxuXHQvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVsZW1lbnRzQnlOYW1lIHRlc3Rcblx0c3VwcG9ydC5nZXRCeUlkID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlkID0gZXhwYW5kbztcblx0XHRyZXR1cm4gIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lIHx8ICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSggZXhwYW5kbyApLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gSUQgZmlsdGVyIGFuZCBmaW5kXG5cdGlmICggc3VwcG9ydC5nZXRCeUlkICkge1xuXHRcdEV4cHIuZmlsdGVyW1wiSURcIl0gPSBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwiaWRcIikgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblx0XHRFeHByLmZpbmRbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblx0XHRcdFx0cmV0dXJuIGVsZW0gPyBbIGVsZW0gXSA6IFtdO1xuXHRcdFx0fVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0RXhwci5maWx0ZXJbXCJJRFwiXSA9ICBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIG5vZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSBcInVuZGVmaW5lZFwiICYmXG5cdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIik7XG5cdFx0XHRcdHJldHVybiBub2RlICYmIG5vZGUudmFsdWUgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDYgLSA3IG9ubHlcblx0XHQvLyBnZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFibGUgYXMgYSBmaW5kIHNob3J0Y3V0XG5cdFx0RXhwci5maW5kW1wiSURcIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0XHR2YXIgbm9kZSwgaSwgZWxlbXMsXG5cdFx0XHRcdFx0ZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtICkge1xuXG5cdFx0XHRcdFx0Ly8gVmVyaWZ5IHRoZSBpZCBhdHRyaWJ1dGVcblx0XHRcdFx0XHRub2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIik7XG5cdFx0XHRcdFx0aWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFsgZWxlbSBdO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEZhbGwgYmFjayBvbiBnZXRFbGVtZW50c0J5TmFtZVxuXHRcdFx0XHRcdGVsZW1zID0gY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSggaWQgKTtcblx0XHRcdFx0XHRpID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbXNbaSsrXSkgKSB7XG5cdFx0XHRcdFx0XHRub2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIik7XG5cdFx0XHRcdFx0XHRpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBbIGVsZW0gXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8vIFRhZ1xuXHRFeHByLmZpbmRbXCJUQUdcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID9cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBEb2N1bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE5cblx0XHRcdH0gZWxzZSBpZiAoIHN1cHBvcnQucXNhICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTtcblx0XHRcdH1cblx0XHR9IDpcblxuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0dG1wID0gW10sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHQvLyBCeSBoYXBweSBjb2luY2lkZW5jZSwgYSAoYnJva2VuKSBnRUJUTiBhcHBlYXJzIG9uIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgdG9vXG5cdFx0XHRcdHJlc3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50c1xuXHRcdFx0aWYgKCB0YWcgPT09IFwiKlwiICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHR0bXAucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB0bXA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9O1xuXG5cdC8vIENsYXNzXG5cdEV4cHIuZmluZFtcIkNMQVNTXCJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7XG5cdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qIFFTQS9tYXRjaGVzU2VsZWN0b3Jcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIFFTQSBhbmQgbWF0Y2hlc1NlbGVjdG9yIHN1cHBvcnRcblxuXHQvLyBtYXRjaGVzU2VsZWN0b3IoOmFjdGl2ZSkgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKElFOS9PcGVyYSAxMS41KVxuXHRyYnVnZ3lNYXRjaGVzID0gW107XG5cblx0Ly8gcVNhKDpmb2N1cykgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKENocm9tZSAyMSlcblx0Ly8gV2UgYWxsb3cgdGhpcyBiZWNhdXNlIG9mIGEgYnVnIGluIElFOC85IHRoYXQgdGhyb3dzIGFuIGVycm9yXG5cdC8vIHdoZW5ldmVyIGBkb2N1bWVudC5hY3RpdmVFbGVtZW50YCBpcyBhY2Nlc3NlZCBvbiBhbiBpZnJhbWVcblx0Ly8gU28sIHdlIGFsbG93IDpmb2N1cyB0byBwYXNzIHRocm91Z2ggUVNBIGFsbCB0aGUgdGltZSB0byBhdm9pZCB0aGUgSUUgZXJyb3Jcblx0Ly8gU2VlIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMzM3OFxuXHRyYnVnZ3lRU0EgPSBbXTtcblxuXHRpZiAoIChzdXBwb3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApKSApIHtcblx0XHQvLyBCdWlsZCBRU0EgcmVnZXhcblx0XHQvLyBSZWdleCBzdHJhdGVneSBhZG9wdGVkIGZyb20gRGllZ28gUGVyaW5pXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdC8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBvc2Vcblx0XHRcdC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVudCBvZiBub3QgZXhwbGljaXRseVxuXHRcdFx0Ly8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsXG5cdFx0XHQvLyBzaW5jZSBpdHMgcHJlc2VuY2Ugc2hvdWxkIGJlIGVub3VnaFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzU5XG5cdFx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlubmVySFRNTCA9IFwiPGEgaWQ9J1wiICsgZXhwYW5kbyArIFwiJz48L2E+XCIgK1xuXHRcdFx0XHRcIjxzZWxlY3QgaWQ9J1wiICsgZXhwYW5kbyArIFwiLVxcclxcXFwnIG1zYWxsb3djYXB0dXJlPScnPlwiICtcblx0XHRcdFx0XCI8b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2XG5cdFx0XHQvLyBOb3RoaW5nIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9sbG93IF49IG9yICQ9IG9yICo9XG5cdFx0XHQvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVzdCBiZSB1bmtub3duIGluIE9wZXJhIGJ1dCBcInNhZmVcIiBmb3IgV2luUlRcblx0XHRcdC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvaGg0NjUzODguYXNweCNhdHRyaWJ1dGVfc2VjdGlvblxuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiW21zYWxsb3djYXB0dXJlXj0nJ11cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJbKl4kXT1cIiArIHdoaXRlc3BhY2UgKyBcIiooPzonJ3xcXFwiXFxcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRThcblx0XHRcdC8vIEJvb2xlYW4gYXR0cmlidXRlcyBhbmQgXCJ2YWx1ZVwiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHlcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbc2VsZWN0ZWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooPzp2YWx1ZXxcIiArIGJvb2xlYW5zICsgXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRyb2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9tSlM8MS45LjgrXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIltpZH49XCIgKyBleHBhbmRvICsgXCItXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIn49XCIpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZWJraXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKFwiOmNoZWNrZWRcIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIjpjaGVja2VkXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCssIGlPUyA4K1xuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg1MVxuXHRcdFx0Ly8gSW4tcGFnZSBgc2VsZWN0b3IjaWQgc2libGluZy1jb21iaW5hdG9yIHNlbGVjdG9yYCBmYWlsc1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCJhI1wiICsgZXhwYW5kbyArIFwiKypcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCIuIy4rWyt+XVwiKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0XHRlbC5pbm5lckhUTUwgPSBcIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+XCIgK1xuXHRcdFx0XHRcIjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD5cIjtcblxuXHRcdFx0Ly8gU3VwcG9ydDogV2luZG93cyA4IE5hdGl2ZSBBcHBzXG5cdFx0XHQvLyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRyaWJ1dGVzIGFyZSByZXN0cmljdGVkIGR1cmluZyAuaW5uZXJIVE1MIGFzc2lnbm1lbnRcblx0XHRcdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcblx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwiaGlkZGVuXCIgKTtcblx0XHRcdGVsLmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwiRFwiICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gRW5mb3JjZSBjYXNlLXNlbnNpdGl2aXR5IG9mIG5hbWUgYXR0cmlidXRlXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT1kXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIm5hbWVcIiArIHdoaXRlc3BhY2UgKyBcIipbKl4kfCF+XT89XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZClcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZW5hYmxlZFwiKS5sZW5ndGggIT09IDIgKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU5LTExK1xuXHRcdFx0Ly8gSUUncyA6ZGlzYWJsZWQgc2VsZWN0b3IgZG9lcyBub3QgcGljayB1cCB0aGUgY2hpbGRyZW4gb2YgZGlzYWJsZWQgZmllbGRzZXRzXG5cdFx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIjpkaXNhYmxlZFwiKS5sZW5ndGggIT09IDIgKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3BlcmEgMTAtMTEgZG9lcyBub3QgdGhyb3cgb24gcG9zdC1jb21tYSBpbnZhbGlkIHBzZXVkb3Ncblx0XHRcdGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIqLDp4XCIpO1xuXHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCIsLio6XCIpO1xuXHRcdH0pO1xuXHR9XG5cblx0aWYgKCAoc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgPSBybmF0aXZlLnRlc3QoIChtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8XG5cdFx0ZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1vek1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpICkpICkge1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdC8vIENoZWNrIHRvIHNlZSBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIG1hdGNoZXNTZWxlY3RvclxuXHRcdFx0Ly8gb24gYSBkaXNjb25uZWN0ZWQgbm9kZSAoSUUgOSlcblx0XHRcdHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggPSBtYXRjaGVzLmNhbGwoIGVsLCBcIipcIiApO1xuXG5cdFx0XHQvLyBUaGlzIHNob3VsZCBmYWlsIHdpdGggYW4gZXhjZXB0aW9uXG5cdFx0XHQvLyBHZWNrbyBkb2VzIG5vdCBlcnJvciwgcmV0dXJucyBmYWxzZSBpbnN0ZWFkXG5cdFx0XHRtYXRjaGVzLmNhbGwoIGVsLCBcIltzIT0nJ106eFwiICk7XG5cdFx0XHRyYnVnZ3lNYXRjaGVzLnB1c2goIFwiIT1cIiwgcHNldWRvcyApO1xuXHRcdH0pO1xuXHR9XG5cblx0cmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbihcInxcIikgKTtcblx0cmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbihcInxcIikgKTtcblxuXHQvKiBDb250YWluc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdGhhc0NvbXBhcmUgPSBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29tcGFyZURvY3VtZW50UG9zaXRpb24gKTtcblxuXHQvLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXJcblx0Ly8gUHVycG9zZWZ1bGx5IHNlbGYtZXhjbHVzaXZlXG5cdC8vIEFzIGluLCBhbiBlbGVtZW50IGRvZXMgbm90IGNvbnRhaW4gaXRzZWxmXG5cdGNvbnRhaW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHR2YXIgYWRvd24gPSBhLm5vZGVUeXBlID09PSA5ID8gYS5kb2N1bWVudEVsZW1lbnQgOiBhLFxuXHRcdFx0XHRidXAgPSBiICYmIGIucGFyZW50Tm9kZTtcblx0XHRcdHJldHVybiBhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKFxuXHRcdFx0XHRhZG93bi5jb250YWlucyA/XG5cdFx0XHRcdFx0YWRvd24uY29udGFpbnMoIGJ1cCApIDpcblx0XHRcdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICYmIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGJ1cCApICYgMTZcblx0XHRcdCkpO1xuXHRcdH0gOlxuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0aWYgKCBiICkge1xuXHRcdFx0XHR3aGlsZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHtcblx0XHRcdFx0XHRpZiAoIGIgPT09IGEgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXG5cdC8qIFNvcnRpbmdcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIERvY3VtZW50IG9yZGVyIHNvcnRpbmdcblx0c29ydE9yZGVyID0gaGFzQ29tcGFyZSA/XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXG5cdFx0Ly8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0Ly8gU29ydCBvbiBtZXRob2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvblxuXHRcdHZhciBjb21wYXJlID0gIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtcblx0XHRpZiAoIGNvbXBhcmUgKSB7XG5cdFx0XHRyZXR1cm4gY29tcGFyZTtcblx0XHR9XG5cblx0XHQvLyBDYWxjdWxhdGUgcG9zaXRpb24gaWYgYm90aCBpbnB1dHMgYmVsb25nIHRvIHRoZSBzYW1lIGRvY3VtZW50XG5cdFx0Y29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PT0gKCBiLm93bmVyRG9jdW1lbnQgfHwgYiApID9cblx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZFxuXHRcdFx0MTtcblxuXHRcdC8vIERpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdGlmICggY29tcGFyZSAmIDEgfHxcblx0XHRcdCghc3VwcG9ydC5zb3J0RGV0YWNoZWQgJiYgYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYSApID09PSBjb21wYXJlKSApIHtcblxuXHRcdFx0Ly8gQ2hvb3NlIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgaXMgcmVsYXRlZCB0byBvdXIgcHJlZmVycmVkIGRvY3VtZW50XG5cdFx0XHRpZiAoIGEgPT09IGRvY3VtZW50IHx8IGEub3duZXJEb2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYSkgKSB7XG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHRcdGlmICggYiA9PT0gZG9jdW1lbnQgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyXG5cdFx0XHRyZXR1cm4gc29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21wYXJlICYgNCA/IC0xIDogMTtcblx0fSA6XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdC8vIEV4aXQgZWFybHkgaWYgdGhlIG5vZGVzIGFyZSBpZGVudGljYWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0YXVwID0gYS5wYXJlbnROb2RlLFxuXHRcdFx0YnVwID0gYi5wYXJlbnROb2RlLFxuXHRcdFx0YXAgPSBbIGEgXSxcblx0XHRcdGJwID0gWyBiIF07XG5cblx0XHQvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZFxuXHRcdGlmICggIWF1cCB8fCAhYnVwICkge1xuXHRcdFx0cmV0dXJuIGEgPT09IGRvY3VtZW50ID8gLTEgOlxuXHRcdFx0XHRiID09PSBkb2N1bWVudCA/IDEgOlxuXHRcdFx0XHRhdXAgPyAtMSA6XG5cdFx0XHRcdGJ1cCA/IDEgOlxuXHRcdFx0XHRzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cblx0XHQvLyBJZiB0aGUgbm9kZXMgYXJlIHNpYmxpbmdzLCB3ZSBjYW4gZG8gYSBxdWljayBjaGVja1xuXHRcdH0gZWxzZSBpZiAoIGF1cCA9PT0gYnVwICkge1xuXHRcdFx0cmV0dXJuIHNpYmxpbmdDaGVjayggYSwgYiApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSB3ZSBuZWVkIGZ1bGwgbGlzdHMgb2YgdGhlaXIgYW5jZXN0b3JzIGZvciBjb21wYXJpc29uXG5cdFx0Y3VyID0gYTtcblx0XHR3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRhcC51bnNoaWZ0KCBjdXIgKTtcblx0XHR9XG5cdFx0Y3VyID0gYjtcblx0XHR3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRicC51bnNoaWZ0KCBjdXIgKTtcblx0XHR9XG5cblx0XHQvLyBXYWxrIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeVxuXHRcdHdoaWxlICggYXBbaV0gPT09IGJwW2ldICkge1xuXHRcdFx0aSsrO1xuXHRcdH1cblxuXHRcdHJldHVybiBpID9cblx0XHRcdC8vIERvIGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBhIGNvbW1vbiBhbmNlc3RvclxuXHRcdFx0c2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29ydCBmaXJzdFxuXHRcdFx0YXBbaV0gPT09IHByZWZlcnJlZERvYyA/IC0xIDpcblx0XHRcdGJwW2ldID09PSBwcmVmZXJyZWREb2MgPyAxIDpcblx0XHRcdDA7XG5cdH07XG5cblx0cmV0dXJuIGRvY3VtZW50O1xufTtcblxuU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7XG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7XG59O1xuXG5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdGlmICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgJiYgZG9jdW1lbnRJc0hUTUwgJiZcblx0XHQhbm9ubmF0aXZlU2VsZWN0b3JDYWNoZVsgZXhwciArIFwiIFwiIF0gJiZcblx0XHQoICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3QoIGV4cHIgKSApICYmXG5cdFx0KCAhcmJ1Z2d5UVNBICAgICB8fCAhcmJ1Z2d5UVNBLnRlc3QoIGV4cHIgKSApICkge1xuXG5cdFx0dHJ5IHtcblx0XHRcdHZhciByZXQgPSBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4cHIgKTtcblxuXHRcdFx0Ly8gSUUgOSdzIG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdFx0aWYgKCByZXQgfHwgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCB8fFxuXHRcdFx0XHRcdC8vIEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50XG5cdFx0XHRcdFx0Ly8gZnJhZ21lbnQgaW4gSUUgOVxuXHRcdFx0XHRcdGVsZW0uZG9jdW1lbnQgJiYgZWxlbS5kb2N1bWVudC5ub2RlVHlwZSAhPT0gMTEgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0bm9ubmF0aXZlU2VsZWN0b3JDYWNoZSggZXhwciwgdHJ1ZSApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIGRvY3VtZW50LCBudWxsLCBbIGVsZW0gXSApLmxlbmd0aCA+IDA7XG59O1xuXG5TaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbiggY29udGV4dCwgZWxlbSApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggY29udGV4dCApO1xuXHR9XG5cdHJldHVybiBjb250YWlucyggY29udGV4dCwgZWxlbSApO1xufTtcblxuU2l6emxlLmF0dHIgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0dmFyIGZuID0gRXhwci5hdHRySGFuZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSxcblx0XHQvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoalF1ZXJ5ICMxMzgwNylcblx0XHR2YWwgPSBmbiAmJiBoYXNPd24uY2FsbCggRXhwci5hdHRySGFuZGxlLCBuYW1lLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRmbiggZWxlbSwgbmFtZSwgIWRvY3VtZW50SXNIVE1MICkgOlxuXHRcdFx0dW5kZWZpbmVkO1xuXG5cdHJldHVybiB2YWwgIT09IHVuZGVmaW5lZCA/XG5cdFx0dmFsIDpcblx0XHRzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWRvY3VtZW50SXNIVE1MID9cblx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkgOlxuXHRcdFx0KHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkgJiYgdmFsLnNwZWNpZmllZCA/XG5cdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdG51bGw7XG59O1xuXG5TaXp6bGUuZXNjYXBlID0gZnVuY3Rpb24oIHNlbCApIHtcblx0cmV0dXJuIChzZWwgKyBcIlwiKS5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7XG59O1xuXG5TaXp6bGUuZXJyb3IgPSBmdW5jdGlvbiggbXNnICkge1xuXHR0aHJvdyBuZXcgRXJyb3IoIFwiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogXCIgKyBtc2cgKTtcbn07XG5cbi8qKlxuICogRG9jdW1lbnQgc29ydGluZyBhbmQgcmVtb3ZpbmcgZHVwbGljYXRlc1xuICogQHBhcmFtIHtBcnJheUxpa2V9IHJlc3VsdHNcbiAqL1xuU2l6emxlLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiggcmVzdWx0cyApIHtcblx0dmFyIGVsZW0sXG5cdFx0ZHVwbGljYXRlcyA9IFtdLFxuXHRcdGogPSAwLFxuXHRcdGkgPSAwO1xuXG5cdC8vIFVubGVzcyB3ZSAqa25vdyogd2UgY2FuIGRldGVjdCBkdXBsaWNhdGVzLCBhc3N1bWUgdGhlaXIgcHJlc2VuY2Vcblx0aGFzRHVwbGljYXRlID0gIXN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcztcblx0c29ydElucHV0ID0gIXN1cHBvcnQuc29ydFN0YWJsZSAmJiByZXN1bHRzLnNsaWNlKCAwICk7XG5cdHJlc3VsdHMuc29ydCggc29ydE9yZGVyICk7XG5cblx0aWYgKCBoYXNEdXBsaWNhdGUgKSB7XG5cdFx0d2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7XG5cdFx0XHRpZiAoIGVsZW0gPT09IHJlc3VsdHNbIGkgXSApIHtcblx0XHRcdFx0aiA9IGR1cGxpY2F0ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdHJlc3VsdHMuc3BsaWNlKCBkdXBsaWNhdGVzWyBqIF0sIDEgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDbGVhciBpbnB1dCBhZnRlciBzb3J0aW5nIHRvIHJlbGVhc2Ugb2JqZWN0c1xuXHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9zaXp6bGUvcHVsbC8yMjVcblx0c29ydElucHV0ID0gbnVsbDtcblxuXHRyZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9kZXNcbiAqIEBwYXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbVxuICovXG5nZXRUZXh0ID0gU2l6emxlLmdldFRleHQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0dmFyIG5vZGUsXG5cdFx0cmV0ID0gXCJcIixcblx0XHRpID0gMCxcblx0XHRub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0aWYgKCAhbm9kZVR5cGUgKSB7XG5cdFx0Ly8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXlcblx0XHR3aGlsZSAoIChub2RlID0gZWxlbVtpKytdKSApIHtcblx0XHRcdC8vIERvIG5vdCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzXG5cdFx0XHRyZXQgKz0gZ2V0VGV4dCggbm9kZSApO1xuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkge1xuXHRcdC8vIFVzZSB0ZXh0Q29udGVudCBmb3IgZWxlbWVudHNcblx0XHQvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChqUXVlcnkgIzExMTUzKVxuXHRcdGlmICggdHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS50ZXh0Q29udGVudDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0cmV0ICs9IGdldFRleHQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkge1xuXHRcdHJldHVybiBlbGVtLm5vZGVWYWx1ZTtcblx0fVxuXHQvLyBEbyBub3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZXNcblxuXHRyZXR1cm4gcmV0O1xufTtcblxuRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7XG5cblx0Ly8gQ2FuIGJlIGFkanVzdGVkIGJ5IHRoZSB1c2VyXG5cdGNhY2hlTGVuZ3RoOiA1MCxcblxuXHRjcmVhdGVQc2V1ZG86IG1hcmtGdW5jdGlvbixcblxuXHRtYXRjaDogbWF0Y2hFeHByLFxuXG5cdGF0dHJIYW5kbGU6IHt9LFxuXG5cdGZpbmQ6IHt9LFxuXG5cdHJlbGF0aXZlOiB7XG5cdFx0XCI+XCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIiBcIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiIH0sXG5cdFx0XCIrXCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiflwiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiB9XG5cdH0sXG5cblx0cHJlRmlsdGVyOiB7XG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdG1hdGNoWzFdID0gbWF0Y2hbMV0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblxuXHRcdFx0Ly8gTW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhlciBxdW90ZWQgb3IgdW5xdW90ZWRcblx0XHRcdG1hdGNoWzNdID0gKCBtYXRjaFszXSB8fCBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCBcIlwiICkucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblxuXHRcdFx0aWYgKCBtYXRjaFsyXSA9PT0gXCJ+PVwiICkge1xuXHRcdFx0XHRtYXRjaFszXSA9IFwiIFwiICsgbWF0Y2hbM10gKyBcIiBcIjtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG1hdGNoLnNsaWNlKCAwLCA0ICk7XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0LyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhwcltcIkNISUxEXCJdXG5cdFx0XHRcdDEgdHlwZSAob25seXxudGh8Li4uKVxuXHRcdFx0XHQyIHdoYXQgKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdDMgYXJndW1lbnQgKGV2ZW58b2RkfFxcZCp8XFxkKm4oWystXVxcZCspP3wuLi4pXG5cdFx0XHRcdDQgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XFxkKm58KVxuXHRcdFx0XHQ1IHNpZ24gb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDYgeCBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NyBzaWduIG9mIHktY29tcG9uZW50XG5cdFx0XHRcdDggeSBvZiB5LWNvbXBvbmVudFxuXHRcdFx0Ki9cblx0XHRcdG1hdGNoWzFdID0gbWF0Y2hbMV0udG9Mb3dlckNhc2UoKTtcblxuXHRcdFx0aWYgKCBtYXRjaFsxXS5zbGljZSggMCwgMyApID09PSBcIm50aFwiICkge1xuXHRcdFx0XHQvLyBudGgtKiByZXF1aXJlcyBhcmd1bWVudFxuXHRcdFx0XHRpZiAoICFtYXRjaFszXSApIHtcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBudW1lcmljIHggYW5kIHkgcGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTERcblx0XHRcdFx0Ly8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVzcGVjdGl2ZWx5IHRvIDAvMVxuXHRcdFx0XHRtYXRjaFs0XSA9ICsoIG1hdGNoWzRdID8gbWF0Y2hbNV0gKyAobWF0Y2hbNl0gfHwgMSkgOiAyICogKCBtYXRjaFszXSA9PT0gXCJldmVuXCIgfHwgbWF0Y2hbM10gPT09IFwib2RkXCIgKSApO1xuXHRcdFx0XHRtYXRjaFs1XSA9ICsoICggbWF0Y2hbN10gKyBtYXRjaFs4XSApIHx8IG1hdGNoWzNdID09PSBcIm9kZFwiICk7XG5cblx0XHRcdC8vIG90aGVyIHR5cGVzIHByb2hpYml0IGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbM10gKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG1hdGNoO1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHR2YXIgZXhjZXNzLFxuXHRcdFx0XHR1bnF1b3RlZCA9ICFtYXRjaFs2XSAmJiBtYXRjaFsyXTtcblxuXHRcdFx0aWYgKCBtYXRjaEV4cHJbXCJDSElMRFwiXS50ZXN0KCBtYXRjaFswXSApICkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWNjZXB0IHF1b3RlZCBhcmd1bWVudHMgYXMtaXNcblx0XHRcdGlmICggbWF0Y2hbM10gKSB7XG5cdFx0XHRcdG1hdGNoWzJdID0gbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgXCJcIjtcblxuXHRcdFx0Ly8gU3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3RlZCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVzdCggdW5xdW90ZWQgKSAmJlxuXHRcdFx0XHQvLyBHZXQgZXhjZXNzIGZyb20gdG9rZW5pemUgKHJlY3Vyc2l2ZWx5KVxuXHRcdFx0XHQoZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkpICYmXG5cdFx0XHRcdC8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpc1xuXHRcdFx0XHQoZXhjZXNzID0gdW5xdW90ZWQuaW5kZXhPZiggXCIpXCIsIHVucXVvdGVkLmxlbmd0aCAtIGV4Y2VzcyApIC0gdW5xdW90ZWQubGVuZ3RoKSApIHtcblxuXHRcdFx0XHQvLyBleGNlc3MgaXMgYSBuZWdhdGl2ZSBpbmRleFxuXHRcdFx0XHRtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdFx0bWF0Y2hbMl0gPSB1bnF1b3RlZC5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldHVybiBvbmx5IGNhcHR1cmVzIG5lZWRlZCBieSB0aGUgcHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50KVxuXHRcdFx0cmV0dXJuIG1hdGNoLnNsaWNlKCAwLCAzICk7XG5cdFx0fVxuXHR9LFxuXG5cdGZpbHRlcjoge1xuXG5cdFx0XCJUQUdcIjogZnVuY3Rpb24oIG5vZGVOYW1lU2VsZWN0b3IgKSB7XG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBub2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBub2RlTmFtZVNlbGVjdG9yID09PSBcIipcIiA/XG5cdFx0XHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbm9kZU5hbWU7XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0xBU1NcIjogZnVuY3Rpb24oIGNsYXNzTmFtZSApIHtcblx0XHRcdHZhciBwYXR0ZXJuID0gY2xhc3NDYWNoZVsgY2xhc3NOYW1lICsgXCIgXCIgXTtcblxuXHRcdFx0cmV0dXJuIHBhdHRlcm4gfHxcblx0XHRcdFx0KHBhdHRlcm4gPSBuZXcgUmVnRXhwKCBcIihefFwiICsgd2hpdGVzcGFjZSArIFwiKVwiICsgY2xhc3NOYW1lICsgXCIoXCIgKyB3aGl0ZXNwYWNlICsgXCJ8JClcIiApKSAmJlxuXHRcdFx0XHRjbGFzc0NhY2hlKCBjbGFzc05hbWUsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXR0ZXJuLnRlc3QoIHR5cGVvZiBlbGVtLmNsYXNzTmFtZSA9PT0gXCJzdHJpbmdcIiAmJiBlbGVtLmNsYXNzTmFtZSB8fCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSB8fCBcIlwiICk7XG5cdFx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG5hbWUsIG9wZXJhdG9yLCBjaGVjayApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICk7XG5cblx0XHRcdFx0aWYgKCByZXN1bHQgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiIT1cIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoICFvcGVyYXRvciApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJlc3VsdCArPSBcIlwiO1xuXG5cdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCI9XCIgPyByZXN1bHQgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIhPVwiID8gcmVzdWx0ICE9PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiXj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID09PSAwIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIqPVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiJD1cIiA/IGNoZWNrICYmIHJlc3VsdC5zbGljZSggLWNoZWNrLmxlbmd0aCApID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifj1cIiA/ICggXCIgXCIgKyByZXN1bHQucmVwbGFjZSggcndoaXRlc3BhY2UsIFwiIFwiICkgKyBcIiBcIiApLmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifD1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgfHwgcmVzdWx0LnNsaWNlKCAwLCBjaGVjay5sZW5ndGggKyAxICkgPT09IGNoZWNrICsgXCItXCIgOlxuXHRcdFx0XHRcdGZhbHNlO1xuXHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgYXJndW1lbnQsIGZpcnN0LCBsYXN0ICkge1xuXHRcdFx0dmFyIHNpbXBsZSA9IHR5cGUuc2xpY2UoIDAsIDMgKSAhPT0gXCJudGhcIixcblx0XHRcdFx0Zm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09IFwibGFzdFwiLFxuXHRcdFx0XHRvZlR5cGUgPSB3aGF0ID09PSBcIm9mLXR5cGVcIjtcblxuXHRcdFx0cmV0dXJuIGZpcnN0ID09PSAxICYmIGxhc3QgPT09IDAgP1xuXG5cdFx0XHRcdC8vIFNob3J0Y3V0IGZvciA6bnRoLSoobilcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuICEhZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0XHR9IDpcblxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBjYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUsIG5vZGVJbmRleCwgc3RhcnQsXG5cdFx0XHRcdFx0XHRkaXIgPSBzaW1wbGUgIT09IGZvcndhcmQgPyBcIm5leHRTaWJsaW5nXCIgOiBcInByZXZpb3VzU2libGluZ1wiLFxuXHRcdFx0XHRcdFx0cGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLFxuXHRcdFx0XHRcdFx0bmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksXG5cdFx0XHRcdFx0XHR1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZSxcblx0XHRcdFx0XHRcdGRpZmYgPSBmYWxzZTtcblxuXHRcdFx0XHRcdGlmICggcGFyZW50ICkge1xuXG5cdFx0XHRcdFx0XHQvLyA6KGZpcnN0fGxhc3R8b25seSktKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdFx0XHRpZiAoIHNpbXBsZSApIHtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCBkaXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9IG5vZGVbIGRpciBdKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggb2ZUeXBlID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdC8vIFJldmVyc2UgZGlyZWN0aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvKVxuXHRcdFx0XHRcdFx0XHRcdHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gXCJvbmx5XCIgJiYgIXN0YXJ0ICYmIFwibmV4dFNpYmxpbmdcIjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0c3RhcnQgPSBbIGZvcndhcmQgPyBwYXJlbnQuZmlyc3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQgXTtcblxuXHRcdFx0XHRcdFx0Ly8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24gYHBhcmVudGBcblx0XHRcdFx0XHRcdGlmICggZm9yd2FyZCAmJiB1c2VDYWNoZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBTZWVrIGBlbGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXhcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBwYXJlbnQ7XG5cdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07XG5cdFx0XHRcdFx0XHRcdGRpZmYgPSBub2RlSW5kZXggJiYgY2FjaGVbIDIgXTtcblx0XHRcdFx0XHRcdFx0bm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9kZUluZGV4IF07XG5cblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEZhbGxiYWNrIHRvIHNlZWtpbmcgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRgIGFuZCBicmVha1xuXHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiArK2RpZmYgJiYgbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJsZVxuXHRcdFx0XHRcdFx0XHRpZiAoIHVzZUNhY2hlICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXlcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRcdGRpZmYgPSBub2RlSW5kZXg7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyB4bWwgOm50aC1jaGlsZCguLi4pXG5cdFx0XHRcdFx0XHRcdC8vIG9yIDpudGgtbGFzdC1jaGlsZCguLi4pIG9yIDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLilcblx0XHRcdFx0XHRcdFx0aWYgKCBkaWZmID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQrK2RpZmYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHVzZUNhY2hlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUgc2l6ZVxuXHRcdFx0XHRcdFx0ZGlmZiAtPSBsYXN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHtcblx0XHRcdC8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZVxuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3Nlc1xuXHRcdFx0Ly8gUHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnNcblx0XHRcdC8vIFJlbWVtYmVyIHRoYXQgc2V0RmlsdGVycyBpbmhlcml0cyBmcm9tIHBzZXVkb3Ncblx0XHRcdHZhciBhcmdzLFxuXHRcdFx0XHRmbiA9IEV4cHIucHNldWRvc1sgcHNldWRvIF0gfHwgRXhwci5zZXRGaWx0ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIHBzZXVkbzogXCIgKyBwc2V1ZG8gKTtcblxuXHRcdFx0Ly8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQc2V1ZG8gdG8gaW5kaWNhdGUgdGhhdFxuXHRcdFx0Ly8gYXJndW1lbnRzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb25cblx0XHRcdC8vIGp1c3QgYXMgU2l6emxlIGRvZXNcblx0XHRcdGlmICggZm5bIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0cmV0dXJuIGZuKCBhcmd1bWVudCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBCdXQgbWFpbnRhaW4gc3VwcG9ydCBmb3Igb2xkIHNpZ25hdHVyZXNcblx0XHRcdGlmICggZm4ubGVuZ3RoID4gMSApIHtcblx0XHRcdFx0YXJncyA9IFsgcHNldWRvLCBwc2V1ZG8sIFwiXCIsIGFyZ3VtZW50IF07XG5cdFx0XHRcdHJldHVybiBFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoIHBzZXVkby50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdFx0XHRcdHZhciBpZHgsXG5cdFx0XHRcdFx0XHRcdG1hdGNoZWQgPSBmbiggc2VlZCwgYXJndW1lbnQgKSxcblx0XHRcdFx0XHRcdFx0aSA9IG1hdGNoZWQubGVuZ3RoO1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdFx0c2VlZFsgaWR4IF0gPSAhKCBtYXRjaGVzWyBpZHggXSA9IG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSA6XG5cdFx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3MgKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm47XG5cdFx0fVxuXHR9LFxuXG5cdHBzZXVkb3M6IHtcblx0XHQvLyBQb3RlbnRpYWxseSBjb21wbGV4IHBzZXVkb3Ncblx0XHRcIm5vdFwiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0Ly8gVHJpbSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGVcblx0XHRcdC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG5cdFx0XHQvLyBzcGFjZXMgYXMgY29tYmluYXRvcnNcblx0XHRcdHZhciBpbnB1dCA9IFtdLFxuXHRcdFx0XHRyZXN1bHRzID0gW10sXG5cdFx0XHRcdG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICkgKTtcblxuXHRcdFx0cmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/XG5cdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcywgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHRcdFx0dW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLFxuXHRcdFx0XHRcdFx0aSA9IHNlZWQubGVuZ3RoO1xuXG5cdFx0XHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYFxuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pIDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHRpbnB1dFswXSA9IGVsZW07XG5cdFx0XHRcdFx0bWF0Y2hlciggaW5wdXQsIG51bGwsIHhtbCwgcmVzdWx0cyApO1xuXHRcdFx0XHRcdC8vIERvbid0IGtlZXAgdGhlIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRcdFx0aW5wdXRbMF0gPSBudWxsO1xuXHRcdFx0XHRcdHJldHVybiAhcmVzdWx0cy5wb3AoKTtcblx0XHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiaGFzXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4gMDtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHRcImNvbnRhaW5zXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gXCJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yXG5cdFx0Ly8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWVcblx0XHQvLyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLFxuXHRcdC8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgXCItXCIuXG5cdFx0Ly8gVGhlIG1hdGNoaW5nIG9mIEMgYWdhaW5zdCB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlIGlzIHBlcmZvcm1lZCBjYXNlLWluc2Vuc2l0aXZlbHkuXG5cdFx0Ly8gVGhlIGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQgbGFuZ3VhZ2UgbmFtZS5cIlxuXHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG9cblx0XHRcImxhbmdcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggbGFuZyApIHtcblx0XHRcdC8vIGxhbmcgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXJcblx0XHRcdGlmICggIXJpZGVudGlmaWVyLnRlc3QobGFuZyB8fCBcIlwiKSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIGxhbmc6IFwiICsgbGFuZyApO1xuXHRcdFx0fVxuXHRcdFx0bGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgZWxlbUxhbmc7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtTGFuZyA9IGRvY3VtZW50SXNIVE1MID9cblx0XHRcdFx0XHRcdGVsZW0ubGFuZyA6XG5cdFx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZShcInhtbDpsYW5nXCIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwibGFuZ1wiKSkgKSB7XG5cblx0XHRcdFx0XHRcdGVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgXCItXCIgKSA9PT0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gd2hpbGUgKCAoZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSkgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gTWlzY2VsbGFuZW91c1xuXHRcdFwidGFyZ2V0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdFx0XHRyZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09IGVsZW0uaWQ7XG5cdFx0fSxcblxuXHRcdFwicm9vdFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2NFbGVtO1xuXHRcdH0sXG5cblx0XHRcImZvY3VzXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1bWVudC5oYXNGb2N1cygpKSAmJiAhIShlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4KTtcblx0XHR9LFxuXG5cdFx0Ly8gQm9vbGVhbiBwcm9wZXJ0aWVzXG5cdFx0XCJlbmFibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCBmYWxzZSApLFxuXHRcdFwiZGlzYWJsZWRcIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIHRydWUgKSxcblxuXHRcdFwiY2hlY2tlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiAhIWVsZW0uY2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSBcIm9wdGlvblwiICYmICEhZWxlbS5zZWxlY3RlZCk7XG5cdFx0fSxcblxuXHRcdFwic2VsZWN0ZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBBY2Nlc3NpbmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0XG5cdFx0XHQvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5XG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlO1xuXHRcdH0sXG5cblx0XHQvLyBDb250ZW50c1xuXHRcdFwiZW1wdHlcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkb1xuXHRcdFx0Ly8gOmVtcHR5IGlzIG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29udGVudCBub2RlcyAodGV4dDogMzsgY2RhdGE6IDQ7IGVudGl0eSByZWY6IDUpLFxuXHRcdFx0Ly8gICBidXQgbm90IGJ5IG90aGVycyAoY29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsgZXRjLilcblx0XHRcdC8vIG5vZGVUeXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0ZXMgKDIpIGRvIG5vdCBhcHBlYXIgYXMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPCA2ICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdFwicGFyZW50XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICFFeHByLnBzZXVkb3NbXCJlbXB0eVwiXSggZWxlbSApO1xuXHRcdH0sXG5cblx0XHQvLyBFbGVtZW50L2lucHV0IHR5cGVzXG5cdFx0XCJoZWFkZXJcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiaW5wdXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiYnV0dG9uXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gXCJidXR0b25cIiB8fCBuYW1lID09PSBcImJ1dHRvblwiO1xuXHRcdH0sXG5cblx0XHRcInRleHRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgYXR0cjtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJlxuXHRcdFx0XHRlbGVtLnR5cGUgPT09IFwidGV4dFwiICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUU8OFxuXHRcdFx0XHQvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVlcyAoZS5nLiwgXCJzZWFyY2hcIikgYXBwZWFyIHdpdGggZWxlbS50eXBlID09PSBcInRleHRcIlxuXHRcdFx0XHQoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKSA9PSBudWxsIHx8IGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gXCJ0ZXh0XCIgKTtcblx0XHR9LFxuXG5cdFx0Ly8gUG9zaXRpb24taW4tY29sbGVjdGlvblxuXHRcdFwiZmlyc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBbIDAgXTtcblx0XHR9KSxcblxuXHRcdFwibGFzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHJldHVybiBbIGxlbmd0aCAtIDEgXTtcblx0XHR9KSxcblxuXHRcdFwiZXFcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0cmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJldmVuXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJvZGRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDE7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcImx0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID9cblx0XHRcdFx0YXJndW1lbnQgKyBsZW5ndGggOlxuXHRcdFx0XHRhcmd1bWVudCA+IGxlbmd0aCA/XG5cdFx0XHRcdFx0bGVuZ3RoIDpcblx0XHRcdFx0XHRhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgLS1pID49IDA7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwiZ3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyArK2kgPCBsZW5ndGg7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KVxuXHR9XG59O1xuXG5FeHByLnBzZXVkb3NbXCJudGhcIl0gPSBFeHByLnBzZXVkb3NbXCJlcVwiXTtcblxuLy8gQWRkIGJ1dHRvbi9pbnB1dCB0eXBlIHBzZXVkb3NcbmZvciAoIGkgaW4geyByYWRpbzogdHJ1ZSwgY2hlY2tib3g6IHRydWUsIGZpbGU6IHRydWUsIHBhc3N3b3JkOiB0cnVlLCBpbWFnZTogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7XG59XG5mb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUJ1dHRvblBzZXVkbyggaSApO1xufVxuXG4vLyBFYXN5IEFQSSBmb3IgY3JlYXRpbmcgbmV3IHNldEZpbHRlcnNcbmZ1bmN0aW9uIHNldEZpbHRlcnMoKSB7fVxuc2V0RmlsdGVycy5wcm90b3R5cGUgPSBFeHByLmZpbHRlcnMgPSBFeHByLnBzZXVkb3M7XG5FeHByLnNldEZpbHRlcnMgPSBuZXcgc2V0RmlsdGVycygpO1xuXG50b2tlbml6ZSA9IFNpenpsZS50b2tlbml6ZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgcGFyc2VPbmx5ICkge1xuXHR2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlwZSxcblx0XHRzb0ZhciwgZ3JvdXBzLCBwcmVGaWx0ZXJzLFxuXHRcdGNhY2hlZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoIGNhY2hlZCApIHtcblx0XHRyZXR1cm4gcGFyc2VPbmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApO1xuXHR9XG5cblx0c29GYXIgPSBzZWxlY3Rvcjtcblx0Z3JvdXBzID0gW107XG5cdHByZUZpbHRlcnMgPSBFeHByLnByZUZpbHRlcjtcblxuXHR3aGlsZSAoIHNvRmFyICkge1xuXG5cdFx0Ly8gQ29tbWEgYW5kIGZpcnN0IHJ1blxuXHRcdGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkpICkge1xuXHRcdFx0aWYgKCBtYXRjaCApIHtcblx0XHRcdFx0Ly8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWRcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbMF0ubGVuZ3RoICkgfHwgc29GYXI7XG5cdFx0XHR9XG5cdFx0XHRncm91cHMucHVzaCggKHRva2VucyA9IFtdKSApO1xuXHRcdH1cblxuXHRcdG1hdGNoZWQgPSBmYWxzZTtcblxuXHRcdC8vIENvbWJpbmF0b3JzXG5cdFx0aWYgKCAobWF0Y2ggPSByY29tYmluYXRvcnMuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZVxuXHRcdFx0XHR0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgXCIgXCIgKVxuXHRcdFx0fSk7XG5cdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZpbHRlcnNcblx0XHRmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkge1xuXHRcdFx0aWYgKCAobWF0Y2ggPSBtYXRjaEV4cHJbIHR5cGUgXS5leGVjKCBzb0ZhciApKSAmJiAoIXByZUZpbHRlcnNbIHR5cGUgXSB8fFxuXHRcdFx0XHQobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSApIHtcblx0XHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRcdG1hdGNoZXM6IG1hdGNoXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggIW1hdGNoZWQgKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3Ncblx0Ly8gaWYgd2UncmUganVzdCBwYXJzaW5nXG5cdC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJuIHRva2Vuc1xuXHRyZXR1cm4gcGFyc2VPbmx5ID9cblx0XHRzb0Zhci5sZW5ndGggOlxuXHRcdHNvRmFyID9cblx0XHRcdFNpenpsZS5lcnJvciggc2VsZWN0b3IgKSA6XG5cdFx0XHQvLyBDYWNoZSB0aGUgdG9rZW5zXG5cdFx0XHR0b2tlbkNhY2hlKCBzZWxlY3RvciwgZ3JvdXBzICkuc2xpY2UoIDAgKTtcbn07XG5cbmZ1bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0c2VsZWN0b3IgPSBcIlwiO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRzZWxlY3RvciArPSB0b2tlbnNbaV0udmFsdWU7XG5cdH1cblx0cmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBhZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBjb21iaW5hdG9yLCBiYXNlICkge1xuXHR2YXIgZGlyID0gY29tYmluYXRvci5kaXIsXG5cdFx0c2tpcCA9IGNvbWJpbmF0b3IubmV4dCxcblx0XHRrZXkgPSBza2lwIHx8IGRpcixcblx0XHRjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09IFwicGFyZW50Tm9kZVwiLFxuXHRcdGRvbmVOYW1lID0gZG9uZSsrO1xuXG5cdHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID9cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSA6XG5cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHNcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIG9sZENhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSxcblx0XHRcdFx0bmV3Q2FjaGUgPSBbIGRpcnJ1bnMsIGRvbmVOYW1lIF07XG5cblx0XHRcdC8vIFdlIGNhbid0IHNldCBhcmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGNvbWJpbmF0b3IgY2FjaGluZ1xuXHRcdFx0aWYgKCB4bWwgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwgKG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0aWYgKCBza2lwICYmIHNraXAgPT09IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHtcblx0XHRcdFx0XHRcdFx0ZWxlbSA9IGVsZW1bIGRpciBdIHx8IGVsZW07XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCAob2xkQ2FjaGUgPSB1bmlxdWVDYWNoZVsga2V5IF0pICYmXG5cdFx0XHRcdFx0XHRcdG9sZENhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgb2xkQ2FjaGVbIDEgXSA9PT0gZG9uZU5hbWUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXVzZSBuZXdjYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlO1xuXG5cdFx0XHRcdFx0XHRcdC8vIEEgbWF0Y2ggbWVhbnMgd2UncmUgZG9uZTsgYSBmYWlsIG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVja2luZ1xuXHRcdFx0XHRcdFx0XHRpZiAoIChuZXdDYWNoZVsgMiBdID0gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkpICkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcbn1cblxuZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkge1xuXHRyZXR1cm4gbWF0Y2hlcnMubGVuZ3RoID4gMSA/XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBpID0gbWF0Y2hlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggIW1hdGNoZXJzW2ldKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gOlxuXHRcdG1hdGNoZXJzWzBdO1xufVxuXG5mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBjb250ZXh0cy5sZW5ndGg7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHRzW2ldLCByZXN1bHRzICk7XG5cdH1cblx0cmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGNvbmRlbnNlKCB1bm1hdGNoZWQsIG1hcCwgZmlsdGVyLCBjb250ZXh0LCB4bWwgKSB7XG5cdHZhciBlbGVtLFxuXHRcdG5ld1VubWF0Y2hlZCA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGxlbiA9IHVubWF0Y2hlZC5sZW5ndGgsXG5cdFx0bWFwcGVkID0gbWFwICE9IG51bGw7XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRpZiAoICFmaWx0ZXIgfHwgZmlsdGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0bmV3VW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0aWYgKCBtYXBwZWQgKSB7XG5cdFx0XHRcdFx0bWFwLnB1c2goIGkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBuZXdVbm1hdGNoZWQ7XG59XG5cbmZ1bmN0aW9uIHNldE1hdGNoZXIoIHByZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApIHtcblx0aWYgKCBwb3N0RmlsdGVyICYmICFwb3N0RmlsdGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbHRlciA9IHNldE1hdGNoZXIoIHBvc3RGaWx0ZXIgKTtcblx0fVxuXHRpZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmluZGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICk7XG5cdH1cblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgcmVzdWx0cywgY29udGV4dCwgeG1sICkge1xuXHRcdHZhciB0ZW1wLCBpLCBlbGVtLFxuXHRcdFx0cHJlTWFwID0gW10sXG5cdFx0XHRwb3N0TWFwID0gW10sXG5cdFx0XHRwcmVleGlzdGluZyA9IHJlc3VsdHMubGVuZ3RoLFxuXG5cdFx0XHQvLyBHZXQgaW5pdGlhbCBlbGVtZW50cyBmcm9tIHNlZWQgb3IgY29udGV4dFxuXHRcdFx0ZWxlbXMgPSBzZWVkIHx8IG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8IFwiKlwiLCBjb250ZXh0Lm5vZGVUeXBlID8gWyBjb250ZXh0IF0gOiBjb250ZXh0LCBbXSApLFxuXG5cdFx0XHQvLyBQcmVmaWx0ZXIgdG8gZ2V0IG1hdGNoZXIgaW5wdXQsIHByZXNlcnZpbmcgYSBtYXAgZm9yIHNlZWQtcmVzdWx0cyBzeW5jaHJvbml6YXRpb25cblx0XHRcdG1hdGNoZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9yICkgP1xuXHRcdFx0XHRjb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJlRmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdGVsZW1zLFxuXG5cdFx0XHRtYXRjaGVyT3V0ID0gbWF0Y2hlciA/XG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgYSBwb3N0RmluZGVyLCBvciBmaWx0ZXJlZCBzZWVkLCBvciBub24tc2VlZCBwb3N0RmlsdGVyIG9yIHByZWV4aXN0aW5nIHJlc3VsdHMsXG5cdFx0XHRcdHBvc3RGaW5kZXIgfHwgKCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID9cblxuXHRcdFx0XHRcdC8vIC4uLmludGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeVxuXHRcdFx0XHRcdFtdIDpcblxuXHRcdFx0XHRcdC8vIC4uLm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseVxuXHRcdFx0XHRcdHJlc3VsdHMgOlxuXHRcdFx0XHRtYXRjaGVySW47XG5cblx0XHQvLyBGaW5kIHByaW1hcnkgbWF0Y2hlc1xuXHRcdGlmICggbWF0Y2hlciApIHtcblx0XHRcdG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgcG9zdEZpbHRlclxuXHRcdGlmICggcG9zdEZpbHRlciApIHtcblx0XHRcdHRlbXAgPSBjb25kZW5zZSggbWF0Y2hlck91dCwgcG9zdE1hcCApO1xuXHRcdFx0cG9zdEZpbHRlciggdGVtcCwgW10sIGNvbnRleHQsIHhtbCApO1xuXG5cdFx0XHQvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluXG5cdFx0XHRpID0gdGVtcC5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAoZWxlbSA9IHRlbXBbaV0pICkge1xuXHRcdFx0XHRcdG1hdGNoZXJPdXRbIHBvc3RNYXBbaV0gXSA9ICEobWF0Y2hlckluWyBwb3N0TWFwW2ldIF0gPSBlbGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggc2VlZCApIHtcblx0XHRcdGlmICggcG9zdEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7XG5cdFx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblx0XHRcdFx0XHQvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkgY29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHNcblx0XHRcdFx0XHR0ZW1wID0gW107XG5cdFx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXN0b3JlIG1hdGNoZXJJbiBzaW5jZSBlbGVtIGlzIG5vdCB5ZXQgYSBmaW5hbCBtYXRjaFxuXHRcdFx0XHRcdFx0XHR0ZW1wLnB1c2goIChtYXRjaGVySW5baV0gPSBlbGVtKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNb3ZlIG1hdGNoZWQgZWxlbWVudHMgZnJvbSBzZWVkIHRvIHJlc3VsdHMgdG8ga2VlcCB0aGVtIHN5bmNocm9uaXplZFxuXHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJlxuXHRcdFx0XHRcdFx0KHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSApIDogcHJlTWFwW2ldKSA+IC0xICkge1xuXG5cdFx0XHRcdFx0XHRzZWVkW3RlbXBdID0gIShyZXN1bHRzW3RlbXBdID0gZWxlbSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBBZGQgZWxlbWVudHMgdG8gcmVzdWx0cywgdGhyb3VnaCBwb3N0RmluZGVyIGlmIGRlZmluZWRcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlck91dCA9IGNvbmRlbnNlKFxuXHRcdFx0XHRtYXRjaGVyT3V0ID09PSByZXN1bHRzID9cblx0XHRcdFx0XHRtYXRjaGVyT3V0LnNwbGljZSggcHJlZXhpc3RpbmcsIG1hdGNoZXJPdXQubGVuZ3RoICkgOlxuXHRcdFx0XHRcdG1hdGNoZXJPdXRcblx0XHRcdCk7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIHJlc3VsdHMsIG1hdGNoZXJPdXQsIHhtbCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgbWF0Y2hlck91dCApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMgKSB7XG5cdHZhciBjaGVja0NvbnRleHQsIG1hdGNoZXIsIGosXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRsZWFkaW5nUmVsYXRpdmUgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMF0udHlwZSBdLFxuXHRcdGltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVtcIiBcIl0sXG5cdFx0aSA9IGxlYWRpbmdSZWxhdGl2ZSA/IDEgOiAwLFxuXG5cdFx0Ly8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQocylcblx0XHRtYXRjaENvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBjaGVja0NvbnRleHQ7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YoIGNoZWNrQ29udGV4dCwgZWxlbSApID4gLTE7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoZXJzID0gWyBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIHJldCA9ICggIWxlYWRpbmdSZWxhdGl2ZSAmJiAoIHhtbCB8fCBjb250ZXh0ICE9PSBvdXRlcm1vc3RDb250ZXh0ICkgKSB8fCAoXG5cdFx0XHRcdChjaGVja0NvbnRleHQgPSBjb250ZXh0KS5ub2RlVHlwZSA/XG5cdFx0XHRcdFx0bWF0Y2hDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdFx0bWF0Y2hBbnlDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApO1xuXHRcdFx0Ly8gQXZvaWQgaGFuZ2luZyBvbnRvIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRjaGVja0NvbnRleHQgPSBudWxsO1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9IF07XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAobWF0Y2hlciA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1tpXS50eXBlIF0pICkge1xuXHRcdFx0bWF0Y2hlcnMgPSBbIGFkZENvbWJpbmF0b3IoZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksIG1hdGNoZXIpIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXIgPSBFeHByLmZpbHRlclsgdG9rZW5zW2ldLnR5cGUgXS5hcHBseSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIHNwZWNpYWwgdXBvbiBzZWVpbmcgYSBwb3NpdGlvbmFsIG1hdGNoZXJcblx0XHRcdGlmICggbWF0Y2hlclsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHQvLyBGaW5kIHRoZSBuZXh0IHJlbGF0aXZlIG9wZXJhdG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmdcblx0XHRcdFx0aiA9ICsraTtcblx0XHRcdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0udHlwZSBdICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBzZXRNYXRjaGVyKFxuXHRcdFx0XHRcdGkgPiAxICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLFxuXHRcdFx0XHRcdGkgPiAxICYmIHRvU2VsZWN0b3IoXG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgcHJlY2VkaW5nIHRva2VuIHdhcyBhIGRlc2NlbmRhbnQgY29tYmluYXRvciwgaW5zZXJ0IGFuIGltcGxpY2l0IGFueS1lbGVtZW50IGAqYFxuXHRcdFx0XHRcdFx0dG9rZW5zLnNsaWNlKCAwLCBpIC0gMSApLmNvbmNhdCh7IHZhbHVlOiB0b2tlbnNbIGkgLSAyIF0udHlwZSA9PT0gXCIgXCIgPyBcIipcIiA6IFwiXCIgfSlcblx0XHRcdFx0XHQpLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSxcblx0XHRcdFx0XHRtYXRjaGVyLFxuXHRcdFx0XHRcdGkgPCBqICYmIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMuc2xpY2UoIGksIGogKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgbWF0Y2hlckZyb21Ub2tlbnMoICh0b2tlbnMgPSB0b2tlbnMuc2xpY2UoIGogKSkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSB7XG5cdHZhciBieVNldCA9IHNldE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0YnlFbGVtZW50ID0gZWxlbWVudE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0c3VwZXJNYXRjaGVyID0gZnVuY3Rpb24oIHNlZWQsIGNvbnRleHQsIHhtbCwgcmVzdWx0cywgb3V0ZXJtb3N0ICkge1xuXHRcdFx0dmFyIGVsZW0sIGosIG1hdGNoZXIsXG5cdFx0XHRcdG1hdGNoZWRDb3VudCA9IDAsXG5cdFx0XHRcdGkgPSBcIjBcIixcblx0XHRcdFx0dW5tYXRjaGVkID0gc2VlZCAmJiBbXSxcblx0XHRcdFx0c2V0TWF0Y2hlZCA9IFtdLFxuXHRcdFx0XHRjb250ZXh0QmFja3VwID0gb3V0ZXJtb3N0Q29udGV4dCxcblx0XHRcdFx0Ly8gV2UgbXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBvciBvdXRlcm1vc3QgY29udGV4dFxuXHRcdFx0XHRlbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIuZmluZFtcIlRBR1wiXSggXCIqXCIsIG91dGVybW9zdCApLFxuXHRcdFx0XHQvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3QgbWF0Y2hlclxuXHRcdFx0XHRkaXJydW5zVW5pcXVlID0gKGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9PSBudWxsID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgMC4xKSxcblx0XHRcdFx0bGVuID0gZWxlbXMubGVuZ3RoO1xuXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgPT09IGRvY3VtZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0c1xuXHRcdFx0Ly8gU3VwcG9ydDogSUU8OSwgU2FmYXJpXG5cdFx0XHQvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogXCJsZW5ndGhcIjsgU2FmYXJpOiA8bnVtYmVyPikgbWF0Y2hpbmcgZWxlbWVudHMgYnkgaWRcblx0XHRcdGZvciAoIDsgaSAhPT0gbGVuICYmIChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHRpZiAoICFjb250ZXh0ICYmIGVsZW0ub3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0XHRcdFx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHRcdFx0XHRcdFx0eG1sID0gIWRvY3VtZW50SXNIVE1MO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR3aGlsZSAoIChtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0IHx8IGRvY3VtZW50LCB4bWwpICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVyc1xuXHRcdFx0XHRpZiAoIGJ5U2V0ICkge1xuXHRcdFx0XHRcdC8vIFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnNcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSkgKSB7XG5cdFx0XHRcdFx0XHRtYXRjaGVkQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90XG5cdFx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdFx0dW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gYGlgIGlzIG5vdyB0aGUgY291bnQgb2YgZWxlbWVudHMgdmlzaXRlZCBhYm92ZSwgYW5kIGFkZGluZyBpdCB0byBgbWF0Y2hlZENvdW50YFxuXHRcdFx0Ly8gbWFrZXMgdGhlIGxhdHRlciBub25uZWdhdGl2ZS5cblx0XHRcdG1hdGNoZWRDb3VudCArPSBpO1xuXG5cdFx0XHQvLyBBcHBseSBzZXQgZmlsdGVycyB0byB1bm1hdGNoZWQgZWxlbWVudHNcblx0XHRcdC8vIE5PVEU6IFRoaXMgY2FuIGJlIHNraXBwZWQgaWYgdGhlcmUgYXJlIG5vIHVubWF0Y2hlZCBlbGVtZW50cyAoaS5lLiwgYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIGVxdWFscyBgaWApLCB1bmxlc3Mgd2UgZGlkbid0IHZpc2l0IF9hbnlfIGVsZW1lbnRzIGluIHRoZSBhYm92ZSBsb29wIGJlY2F1c2Ugd2UgaGF2ZVxuXHRcdFx0Ly8gbm8gZWxlbWVudCBtYXRjaGVycyBhbmQgbm8gc2VlZC5cblx0XHRcdC8vIEluY3JlbWVudGluZyBhbiBpbml0aWFsbHktc3RyaW5nIFwiMFwiIGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFpbiBhIHN0cmluZyBvbmx5IGluIHRoYXRcblx0XHRcdC8vIGNhc2UsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgXCIwMFwiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlmZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzb1xuXHRcdFx0Ly8gbnVtZXJpY2FsbHkgemVyby5cblx0XHRcdGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkge1xuXHRcdFx0XHRqID0gMDtcblx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IHNldE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRcdFx0Ly8gUmVpbnRlZ3JhdGUgZWxlbWVudCBtYXRjaGVzIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc29ydGluZ1xuXHRcdFx0XHRcdGlmICggbWF0Y2hlZENvdW50ID4gMCApIHtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoICEodW5tYXRjaGVkW2ldIHx8IHNldE1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRcdHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVzdWx0cyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXNcblx0XHRcdFx0XHRzZXRNYXRjaGVkID0gY29uZGVuc2UoIHNldE1hdGNoZWQgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHNcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2V0TWF0Y2hlZCApO1xuXG5cdFx0XHRcdC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZ1xuXHRcdFx0XHRpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHQoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHtcblxuXHRcdFx0XHRcdFNpenpsZS51bmlxdWVTb3J0KCByZXN1bHRzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0QmFja3VwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdW5tYXRjaGVkO1xuXHRcdH07XG5cblx0cmV0dXJuIGJ5U2V0ID9cblx0XHRtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDpcblx0XHRzdXBlck1hdGNoZXI7XG59XG5cbmNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XG5cdHZhciBpLFxuXHRcdHNldE1hdGNoZXJzID0gW10sXG5cdFx0ZWxlbWVudE1hdGNoZXJzID0gW10sXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggIWNhY2hlZCApIHtcblx0XHQvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnRcblx0XHRpZiAoICFtYXRjaCApIHtcblx0XHRcdG1hdGNoID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0fVxuXHRcdGkgPSBtYXRjaC5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRjYWNoZWQgPSBtYXRjaGVyRnJvbVRva2VucyggbWF0Y2hbaV0gKTtcblx0XHRcdGlmICggY2FjaGVkWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvblxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApO1xuXG5cdFx0Ly8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5pemF0aW9uXG5cdFx0Y2FjaGVkLnNlbGVjdG9yID0gc2VsZWN0b3I7XG5cdH1cblx0cmV0dXJuIGNhY2hlZDtcbn07XG5cbi8qKlxuICogQSBsb3ctbGV2ZWwgc2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0aCBTaXp6bGUncyBjb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IHNlbGVjdG9yIEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbiBidWlsdCB3aXRoIFNpenpsZS5jb21waWxlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRleHRcbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHRzXVxuICogQHBhcmFtIHtBcnJheX0gW3NlZWRdIEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3RcbiAqL1xuc2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIGksIHRva2VucywgdG9rZW4sIHR5cGUsIGZpbmQsXG5cdFx0Y29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBzZWxlY3Rvcixcblx0XHRtYXRjaCA9ICFzZWVkICYmIHRva2VuaXplKCAoc2VsZWN0b3IgPSBjb21waWxlZC5zZWxlY3RvciB8fCBzZWxlY3RvcikgKTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZFxuXHQvLyAodGhlIGxhdHRlciBvZiB3aGljaCBndWFyYW50ZWVzIHVzIGNvbnRleHQpXG5cdGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkge1xuXG5cdFx0Ly8gUmVkdWNlIGNvbnRleHQgaWYgdGhlIGxlYWRpbmcgY29tcG91bmQgc2VsZWN0b3IgaXMgYW4gSURcblx0XHR0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7XG5cdFx0aWYgKCB0b2tlbnMubGVuZ3RoID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09IFwiSURcIiAmJlxuXHRcdFx0XHRjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmIEV4cHIucmVsYXRpdmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7XG5cblx0XHRcdGNvbnRleHQgPSAoIEV4cHIuZmluZFtcIklEXCJdKCB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UocnVuZXNjYXBlLCBmdW5lc2NhcGUpLCBjb250ZXh0ICkgfHwgW10gKVswXTtcblx0XHRcdGlmICggIWNvbnRleHQgKSB7XG5cdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHQvLyBQcmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3RlcCB1cCBhIGxldmVsXG5cdFx0XHR9IGVsc2UgaWYgKCBjb21waWxlZCApIHtcblx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmV0Y2ggYSBzZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGluZ1xuXHRcdGkgPSBtYXRjaEV4cHJbXCJuZWVkc0NvbnRleHRcIl0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG9rZW4gPSB0b2tlbnNbaV07XG5cblx0XHRcdC8vIEFib3J0IGlmIHdlIGhpdCBhIGNvbWJpbmF0b3Jcblx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgKHR5cGUgPSB0b2tlbi50eXBlKSBdICkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSkgKSB7XG5cdFx0XHRcdC8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9yc1xuXHRcdFx0XHRpZiAoIChzZWVkID0gZmluZChcblx0XHRcdFx0XHR0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksXG5cdFx0XHRcdFx0cnNpYmxpbmcudGVzdCggdG9rZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHRcdFx0XHQpKSApIHtcblxuXHRcdFx0XHRcdC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBlYXJseVxuXHRcdFx0XHRcdHRva2Vucy5zcGxpY2UoIGksIDEgKTtcblx0XHRcdFx0XHRzZWxlY3RvciA9IHNlZWQubGVuZ3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApO1xuXHRcdFx0XHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5nIGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWRcblx0Ly8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZVxuXHQoIGNvbXBpbGVkIHx8IGNvbXBpbGUoIHNlbGVjdG9yLCBtYXRjaCApICkoXG5cdFx0c2VlZCxcblx0XHRjb250ZXh0LFxuXHRcdCFkb2N1bWVudElzSFRNTCxcblx0XHRyZXN1bHRzLFxuXHRcdCFjb250ZXh0IHx8IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0KTtcblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBPbmUtdGltZSBhc3NpZ25tZW50c1xuXG4vLyBTb3J0IHN0YWJpbGl0eVxuc3VwcG9ydC5zb3J0U3RhYmxlID0gZXhwYW5kby5zcGxpdChcIlwiKS5zb3J0KCBzb3J0T3JkZXIgKS5qb2luKFwiXCIpID09PSBleHBhbmRvO1xuXG4vLyBTdXBwb3J0OiBDaHJvbWUgMTQtMzUrXG4vLyBBbHdheXMgYXNzdW1lIGR1cGxpY2F0ZXMgaWYgdGhleSBhcmVuJ3QgcGFzc2VkIHRvIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uXG5zdXBwb3J0LmRldGVjdER1cGxpY2F0ZXMgPSAhIWhhc0R1cGxpY2F0ZTtcblxuLy8gSW5pdGlhbGl6ZSBhZ2FpbnN0IHRoZSBkZWZhdWx0IGRvY3VtZW50XG5zZXREb2N1bWVudCgpO1xuXG4vLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMyIC0gU2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KVxuLy8gRGV0YWNoZWQgbm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIqXG5zdXBwb3J0LnNvcnREZXRhY2hlZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdC8vIFNob3VsZCByZXR1cm4gMSwgYnV0IHJldHVybnMgNCAoZm9sbG93aW5nKVxuXHRyZXR1cm4gZWwuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiKSApICYgMTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBJRTw4XG4vLyBQcmV2ZW50IGF0dHJpYnV0ZS9wcm9wZXJ0eSBcImludGVycG9sYXRpb25cIlxuLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNjQyOSUyOFZTLjg1JTI5LmFzcHhcbmlmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nIyc+PC9hPlwiO1xuXHRyZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpID09PSBcIiNcIiA7XG59KSApIHtcblx0YWRkSGFuZGxlKCBcInR5cGV8aHJlZnxoZWlnaHR8d2lkdGhcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwidHlwZVwiID8gMSA6IDIgKTtcblx0XHR9XG5cdH0pO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZGVmYXVsdFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZShcInZhbHVlXCIpXG5pZiAoICFzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdGVsLmlubmVySFRNTCA9IFwiPGlucHV0Lz5cIjtcblx0ZWwuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiwgXCJcIiApO1xuXHRyZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBcIlwiO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ2YWx1ZVwiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kZWZhdWx0VmFsdWU7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGdldEF0dHJpYnV0ZU5vZGUgdG8gZmV0Y2ggYm9vbGVhbnMgd2hlbiBnZXRBdHRyaWJ1dGUgbGllc1xuaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0cmV0dXJuIGVsLmdldEF0dHJpYnV0ZShcImRpc2FibGVkXCIpID09IG51bGw7XG59KSApIHtcblx0YWRkSGFuZGxlKCBib29sZWFucywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciB2YWw7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbVsgbmFtZSBdID09PSB0cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDpcblx0XHRcdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0fVxuXHR9KTtcbn1cblxucmV0dXJuIFNpenpsZTtcblxufSkoIHdpbmRvdyApO1xuXG5cblxualF1ZXJ5LmZpbmQgPSBTaXp6bGU7XG5qUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3RvcnM7XG5cbi8vIERlcHJlY2F0ZWRcbmpRdWVyeS5leHByWyBcIjpcIiBdID0galF1ZXJ5LmV4cHIucHNldWRvcztcbmpRdWVyeS51bmlxdWVTb3J0ID0galF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0O1xualF1ZXJ5LnRleHQgPSBTaXp6bGUuZ2V0VGV4dDtcbmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDtcbmpRdWVyeS5jb250YWlucyA9IFNpenpsZS5jb250YWlucztcbmpRdWVyeS5lc2NhcGVTZWxlY3RvciA9IFNpenpsZS5lc2NhcGU7XG5cblxuXG5cbnZhciBkaXIgPSBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHtcblx0dmFyIG1hdGNoZWQgPSBbXSxcblx0XHR0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7XG5cblx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICYmIGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7XG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0aWYgKCB0cnVuY2F0ZSAmJiBqUXVlcnkoIGVsZW0gKS5pcyggdW50aWwgKSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBlbGVtICkge1xuXHR2YXIgbWF0Y2hlZCA9IFtdO1xuXG5cdGZvciAoIDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcgKSB7XG5cdFx0aWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7XG5cdFx0XHRtYXRjaGVkLnB1c2goIG4gKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbWF0Y2hlZDtcbn07XG5cblxudmFyIHJuZWVkc0NvbnRleHQgPSBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7XG5cblxuXG5mdW5jdGlvbiBub2RlTmFtZSggZWxlbSwgbmFtZSApIHtcblxuICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTtcblxufTtcbnZhciByc2luZ2xlVGFnID0gKCAvXjwoW2Etel1bXlxcL1xcMD46XFx4MjBcXHRcXHJcXG5cXGZdKilbXFx4MjBcXHRcXHJcXG5cXGZdKlxcLz8+KD86PFxcL1xcMT58KSQvaSApO1xuXG5cblxuLy8gSW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3RcbmZ1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkge1xuXHRpZiAoIGlzRnVuY3Rpb24oIHF1YWxpZmllciApICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIFNpbmdsZSBlbGVtZW50XG5cdGlmICggcXVhbGlmaWVyLm5vZGVUeXBlICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBBcnJheWxpa2Ugb2YgZWxlbWVudHMgKGpRdWVyeSwgYXJndW1lbnRzLCBBcnJheSlcblx0aWYgKCB0eXBlb2YgcXVhbGlmaWVyICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFsaWZpZXIsIGVsZW0gKSA+IC0xICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBGaWx0ZXJlZCBkaXJlY3RseSBmb3IgYm90aCBzaW1wbGUgYW5kIGNvbXBsZXggc2VsZWN0b3JzXG5cdHJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3QgKTtcbn1cblxualF1ZXJ5LmZpbHRlciA9IGZ1bmN0aW9uKCBleHByLCBlbGVtcywgbm90ICkge1xuXHR2YXIgZWxlbSA9IGVsZW1zWyAwIF07XG5cblx0aWYgKCBub3QgKSB7XG5cdFx0ZXhwciA9IFwiOm5vdChcIiArIGV4cHIgKyBcIilcIjtcblx0fVxuXG5cdGlmICggZWxlbXMubGVuZ3RoID09PSAxICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxlbSwgZXhwciApID8gWyBlbGVtIF0gOiBbXTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzKCBleHByLCBqUXVlcnkuZ3JlcCggZWxlbXMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxO1xuXHR9ICkgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZmluZDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBpLCByZXQsXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdHNlbGYgPSB0aGlzO1xuXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeSggc2VsZWN0b3IgKS5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCBzZWxmWyBpIF0sIHRoaXMgKSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApICk7XG5cdFx0fVxuXG5cdFx0cmV0ID0gdGhpcy5wdXNoU3RhY2soIFtdICk7XG5cblx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCBzZWxmWyBpIF0sIHJldCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBsZW4gPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIHJldCApIDogcmV0O1xuXHR9LFxuXHRmaWx0ZXI6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNlICkgKTtcblx0fSxcblx0bm90OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCB0cnVlICkgKTtcblx0fSxcblx0aXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gISF3aW5ub3coXG5cdFx0XHR0aGlzLFxuXG5cdFx0XHQvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0XG5cdFx0XHQvLyBzbyAkKFwicDpmaXJzdFwiKS5pcyhcInA6bGFzdFwiKSB3b24ndCByZXR1cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gXCJwXCIuXG5cdFx0XHR0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgJiYgcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApID9cblx0XHRcdFx0alF1ZXJ5KCBzZWxlY3RvciApIDpcblx0XHRcdFx0c2VsZWN0b3IgfHwgW10sXG5cdFx0XHRmYWxzZVxuXHRcdCkubGVuZ3RoO1xuXHR9XG59ICk7XG5cblxuLy8gSW5pdGlhbGl6ZSBhIGpRdWVyeSBvYmplY3RcblxuXG4vLyBBIGNlbnRyYWwgcmVmZXJlbmNlIHRvIHRoZSByb290IGpRdWVyeShkb2N1bWVudClcbnZhciByb290alF1ZXJ5LFxuXG5cdC8vIEEgc2ltcGxlIHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzXG5cdC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICgjOTUyMSlcblx0Ly8gU3RyaWN0IEhUTUwgcmVjb2duaXRpb24gKCMxMTI5MDogbXVzdCBzdGFydCB3aXRoIDwpXG5cdC8vIFNob3J0Y3V0IHNpbXBsZSAjaWQgY2FzZSBmb3Igc3BlZWRcblx0cnF1aWNrRXhwciA9IC9eKD86XFxzKig8W1xcd1xcV10rPilbXj5dKnwjKFtcXHctXSspKSQvLFxuXG5cdGluaXQgPSBqUXVlcnkuZm4uaW5pdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcm9vdCApIHtcblx0XHR2YXIgbWF0Y2gsIGVsZW07XG5cblx0XHQvLyBIQU5ETEU6ICQoXCJcIiksICQobnVsbCksICQodW5kZWZpbmVkKSwgJChmYWxzZSlcblx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblxuXHRcdC8vIE1ldGhvZCBpbml0KCkgYWNjZXB0cyBhbiBhbHRlcm5hdGUgcm9vdGpRdWVyeVxuXHRcdC8vIHNvIG1pZ3JhdGUgY2FuIHN1cHBvcnQgalF1ZXJ5LnN1YiAoZ2gtMjEwMSlcblx0XHRyb290ID0gcm9vdCB8fCByb290alF1ZXJ5O1xuXG5cdFx0Ly8gSGFuZGxlIEhUTUwgc3RyaW5nc1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0aWYgKCBzZWxlY3RvclsgMCBdID09PSBcIjxcIiAmJlxuXHRcdFx0XHRzZWxlY3Rvclsgc2VsZWN0b3IubGVuZ3RoIC0gMSBdID09PSBcIj5cIiAmJlxuXHRcdFx0XHRzZWxlY3Rvci5sZW5ndGggPj0gMyApIHtcblxuXHRcdFx0XHQvLyBBc3N1bWUgdGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBIVE1MIGFuZCBza2lwIHRoZSByZWdleCBjaGVja1xuXHRcdFx0XHRtYXRjaCA9IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWRcblx0XHRcdGlmICggbWF0Y2ggJiYgKCBtYXRjaFsgMSBdIHx8ICFjb250ZXh0ICkgKSB7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKGh0bWwpIC0+ICQoYXJyYXkpXG5cdFx0XHRcdGlmICggbWF0Y2hbIDEgXSApIHtcblx0XHRcdFx0XHRjb250ZXh0ID0gY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSA/IGNvbnRleHRbIDAgXSA6IGNvbnRleHQ7XG5cblx0XHRcdFx0XHQvLyBPcHRpb24gdG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0XHQvLyBJbnRlbnRpb25hbGx5IGxldCB0aGUgZXJyb3IgYmUgdGhyb3duIGlmIHBhcnNlSFRNTCBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcywgalF1ZXJ5LnBhcnNlSFRNTChcblx0XHRcdFx0XHRcdG1hdGNoWyAxIF0sXG5cdFx0XHRcdFx0XHRjb250ZXh0ICYmIGNvbnRleHQubm9kZVR5cGUgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IGRvY3VtZW50LFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdCkgKTtcblxuXHRcdFx0XHRcdC8vIEhBTkRMRTogJChodG1sLCBwcm9wcylcblx0XHRcdFx0XHRpZiAoIHJzaW5nbGVUYWcudGVzdCggbWF0Y2hbIDEgXSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250ZXh0ICkgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCBtYXRjaCBpbiBjb250ZXh0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFByb3BlcnRpZXMgb2YgY29udGV4dCBhcmUgY2FsbGVkIGFzIG1ldGhvZHMgaWYgcG9zc2libGVcblx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCB0aGlzWyBtYXRjaCBdICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpc1sgbWF0Y2ggXSggY29udGV4dFsgbWF0Y2ggXSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIC4uLmFuZCBvdGhlcndpc2Ugc2V0IGFzIGF0dHJpYnV0ZXNcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmF0dHIoIG1hdGNoLCBjb250ZXh0WyBtYXRjaCBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoI2lkKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbIDIgXSApO1xuXG5cdFx0XHRcdFx0aWYgKCBlbGVtICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdFxuXHRcdFx0XHRcdFx0dGhpc1sgMCBdID0gZWxlbTtcblx0XHRcdFx0XHRcdHRoaXMubGVuZ3RoID0gMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsICQoLi4uKSlcblx0XHRcdH0gZWxzZSBpZiAoICFjb250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkge1xuXHRcdFx0XHRyZXR1cm4gKCBjb250ZXh0IHx8IHJvb3QgKS5maW5kKCBzZWxlY3RvciApO1xuXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dClcblx0XHRcdC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCkuZmluZChleHByKVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY29uc3RydWN0b3IoIGNvbnRleHQgKS5maW5kKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSEFORExFOiAkKERPTUVsZW1lbnQpXG5cdFx0fSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7XG5cdFx0XHR0aGlzWyAwIF0gPSBzZWxlY3Rvcjtcblx0XHRcdHRoaXMubGVuZ3RoID0gMTtcblx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0Ly8gSEFORExFOiAkKGZ1bmN0aW9uKVxuXHRcdC8vIFNob3J0Y3V0IGZvciBkb2N1bWVudCByZWFkeVxuXHRcdH0gZWxzZSBpZiAoIGlzRnVuY3Rpb24oIHNlbGVjdG9yICkgKSB7XG5cdFx0XHRyZXR1cm4gcm9vdC5yZWFkeSAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0cm9vdC5yZWFkeSggc2VsZWN0b3IgKSA6XG5cblx0XHRcdFx0Ly8gRXhlY3V0ZSBpbW1lZGlhdGVseSBpZiByZWFkeSBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRzZWxlY3RvciggalF1ZXJ5ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yLCB0aGlzICk7XG5cdH07XG5cbi8vIEdpdmUgdGhlIGluaXQgZnVuY3Rpb24gdGhlIGpRdWVyeSBwcm90b3R5cGUgZm9yIGxhdGVyIGluc3RhbnRpYXRpb25cbmluaXQucHJvdG90eXBlID0galF1ZXJ5LmZuO1xuXG4vLyBJbml0aWFsaXplIGNlbnRyYWwgcmVmZXJlbmNlXG5yb290alF1ZXJ5ID0galF1ZXJ5KCBkb2N1bWVudCApO1xuXG5cbnZhciBycGFyZW50c3ByZXYgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxcblxuXHQvLyBNZXRob2RzIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldFxuXHRndWFyYW50ZWVkVW5pcXVlID0ge1xuXHRcdGNoaWxkcmVuOiB0cnVlLFxuXHRcdGNvbnRlbnRzOiB0cnVlLFxuXHRcdG5leHQ6IHRydWUsXG5cdFx0cHJldjogdHJ1ZVxuXHR9O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGhhczogZnVuY3Rpb24oIHRhcmdldCApIHtcblx0XHR2YXIgdGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksXG5cdFx0XHRsID0gdGFyZ2V0cy5sZW5ndGg7XG5cblx0XHRyZXR1cm4gdGhpcy5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1sgaSBdICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0Y2xvc2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHtcblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRtYXRjaGVkID0gW10sXG5cdFx0XHR0YXJnZXRzID0gdHlwZW9mIHNlbGVjdG9ycyAhPT0gXCJzdHJpbmdcIiAmJiBqUXVlcnkoIHNlbGVjdG9ycyApO1xuXG5cdFx0Ly8gUG9zaXRpb25hbCBzZWxlY3RvcnMgbmV2ZXIgbWF0Y2gsIHNpbmNlIHRoZXJlJ3Mgbm8gX3NlbGVjdGlvbl8gY29udGV4dFxuXHRcdGlmICggIXJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3JzICkgKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZvciAoIGN1ciA9IHRoaXNbIGkgXTsgY3VyICYmIGN1ciAhPT0gY29udGV4dDsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cblx0XHRcdFx0XHQvLyBBbHdheXMgc2tpcCBkb2N1bWVudCBmcmFnbWVudHNcblx0XHRcdFx0XHRpZiAoIGN1ci5ub2RlVHlwZSA8IDExICYmICggdGFyZ2V0cyA/XG5cdFx0XHRcdFx0XHR0YXJnZXRzLmluZGV4KCBjdXIgKSA+IC0xIDpcblxuXHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcGFzcyBub24tZWxlbWVudHMgdG8gU2l6emxlXG5cdFx0XHRcdFx0XHRjdXIubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0XHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBjdXIsIHNlbGVjdG9ycyApICkgKSB7XG5cblx0XHRcdFx0XHRcdG1hdGNoZWQucHVzaCggY3VyICk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQubGVuZ3RoID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICkgOiBtYXRjaGVkICk7XG5cdH0sXG5cblx0Ly8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbiB0aGUgc2V0XG5cdGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIE5vIGFyZ3VtZW50LCByZXR1cm4gaW5kZXggaW4gcGFyZW50XG5cdFx0aWYgKCAhZWxlbSApIHtcblx0XHRcdHJldHVybiAoIHRoaXNbIDAgXSAmJiB0aGlzWyAwIF0ucGFyZW50Tm9kZSApID8gdGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGggOiAtMTtcblx0XHR9XG5cblx0XHQvLyBJbmRleCBpbiBzZWxlY3RvclxuXHRcdGlmICggdHlwZW9mIGVsZW0gPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sgMCBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gTG9jYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVzaXJlZCBlbGVtZW50XG5cdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggdGhpcyxcblxuXHRcdFx0Ly8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxlbWVudCBpcyB1c2VkXG5cdFx0XHRlbGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVsZW1cblx0XHQpO1xuXHR9LFxuXG5cdGFkZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayhcblx0XHRcdGpRdWVyeS51bmlxdWVTb3J0KFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMuZ2V0KCksIGpRdWVyeSggc2VsZWN0b3IsIGNvbnRleHQgKSApXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblxuXHRhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkKCBzZWxlY3RvciA9PSBudWxsID9cblx0XHRcdHRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoIHNlbGVjdG9yIClcblx0XHQpO1xuXHR9XG59ICk7XG5cbmZ1bmN0aW9uIHNpYmxpbmcoIGN1ciwgZGlyICkge1xuXHR3aGlsZSAoICggY3VyID0gY3VyWyBkaXIgXSApICYmIGN1ci5ub2RlVHlwZSAhPT0gMSApIHt9XG5cdHJldHVybiBjdXI7XG59XG5cbmpRdWVyeS5lYWNoKCB7XG5cdHBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRyZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBudWxsO1xuXHR9LFxuXHRwYXJlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInBhcmVudE5vZGVcIiApO1xuXHR9LFxuXHRwYXJlbnRzVW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInBhcmVudE5vZGVcIiwgdW50aWwgKTtcblx0fSxcblx0bmV4dDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiApO1xuXHR9LFxuXHRwcmV2OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiApO1xuXHR9LFxuXHRuZXh0QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldkFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiApO1xuXHR9LFxuXHRuZXh0VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHByZXZVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHNpYmxpbmdzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZ3MoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApO1xuXHR9LFxuXHRjaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCBlbGVtLmZpcnN0Q2hpbGQgKTtcblx0fSxcblx0Y29udGVudHM6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdGlmICggdHlwZW9mIGVsZW0uY29udGVudERvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uY29udGVudERvY3VtZW50O1xuXHRcdH1cblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5LCBpT1MgNyBvbmx5LCBBbmRyb2lkIEJyb3dzZXIgPD00LjMgb25seVxuXHRcdC8vIFRyZWF0IHRoZSB0ZW1wbGF0ZSBlbGVtZW50IGFzIGEgcmVndWxhciBvbmUgaW4gYnJvd3NlcnMgdGhhdFxuXHRcdC8vIGRvbid0IHN1cHBvcnQgaXQuXG5cdFx0aWYgKCBub2RlTmFtZSggZWxlbSwgXCJ0ZW1wbGF0ZVwiICkgKSB7XG5cdFx0XHRlbGVtID0gZWxlbS5jb250ZW50IHx8IGVsZW07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIGVsZW0uY2hpbGROb2RlcyApO1xuXHR9XG59LCBmdW5jdGlvbiggbmFtZSwgZm4gKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGlsLCBzZWxlY3RvciApIHtcblx0XHR2YXIgbWF0Y2hlZCA9IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApO1xuXG5cdFx0aWYgKCBuYW1lLnNsaWNlKCAtNSApICE9PSBcIlVudGlsXCIgKSB7XG5cdFx0XHRzZWxlY3RvciA9IHVudGlsO1xuXHRcdH1cblxuXHRcdGlmICggc2VsZWN0b3IgJiYgdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0bWF0Y2hlZCA9IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBtYXRjaGVkICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLmxlbmd0aCA+IDEgKSB7XG5cblx0XHRcdC8vIFJlbW92ZSBkdXBsaWNhdGVzXG5cdFx0XHRpZiAoICFndWFyYW50ZWVkVW5pcXVlWyBuYW1lIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldmVyc2Ugb3JkZXIgZm9yIHBhcmVudHMqIGFuZCBwcmV2LWRlcml2YXRpdmVzXG5cdFx0XHRpZiAoIHJwYXJlbnRzcHJldi50ZXN0KCBuYW1lICkgKSB7XG5cdFx0XHRcdG1hdGNoZWQucmV2ZXJzZSgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZCApO1xuXHR9O1xufSApO1xudmFyIHJub3RodG1sd2hpdGUgPSAoIC9bXlxceDIwXFx0XFxyXFxuXFxmXSsvZyApO1xuXG5cblxuLy8gQ29udmVydCBTdHJpbmctZm9ybWF0dGVkIG9wdGlvbnMgaW50byBPYmplY3QtZm9ybWF0dGVkIG9uZXNcbmZ1bmN0aW9uIGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSB7XG5cdHZhciBvYmplY3QgPSB7fTtcblx0alF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7XG5cdFx0b2JqZWN0WyBmbGFnIF0gPSB0cnVlO1xuXHR9ICk7XG5cdHJldHVybiBvYmplY3Q7XG59XG5cbi8qXG4gKiBDcmVhdGUgYSBjYWxsYmFjayBsaXN0IHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczpcbiAqXG4gKlx0b3B0aW9uczogYW4gb3B0aW9uYWwgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgb3B0aW9ucyB0aGF0IHdpbGwgY2hhbmdlIGhvd1xuICpcdFx0XHR0aGUgY2FsbGJhY2sgbGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24gb2JqZWN0XG4gKlxuICogQnkgZGVmYXVsdCBhIGNhbGxiYWNrIGxpc3Qgd2lsbCBhY3QgbGlrZSBhbiBldmVudCBjYWxsYmFjayBsaXN0IGFuZCBjYW4gYmVcbiAqIFwiZmlyZWRcIiBtdWx0aXBsZSB0aW1lcy5cbiAqXG4gKiBQb3NzaWJsZSBvcHRpb25zOlxuICpcbiAqXHRvbmNlOlx0XHRcdHdpbGwgZW5zdXJlIHRoZSBjYWxsYmFjayBsaXN0IGNhbiBvbmx5IGJlIGZpcmVkIG9uY2UgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0bWVtb3J5Olx0XHRcdHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2FsbCBhbnkgY2FsbGJhY2sgYWRkZWRcbiAqXHRcdFx0XHRcdGFmdGVyIHRoZSBsaXN0IGhhcyBiZWVuIGZpcmVkIHJpZ2h0IGF3YXkgd2l0aCB0aGUgbGF0ZXN0IFwibWVtb3JpemVkXCJcbiAqXHRcdFx0XHRcdHZhbHVlcyAobGlrZSBhIERlZmVycmVkKVxuICpcbiAqXHR1bmlxdWU6XHRcdFx0d2lsbCBlbnN1cmUgYSBjYWxsYmFjayBjYW4gb25seSBiZSBhZGRlZCBvbmNlIChubyBkdXBsaWNhdGUgaW4gdGhlIGxpc3QpXG4gKlxuICpcdHN0b3BPbkZhbHNlOlx0aW50ZXJydXB0IGNhbGxpbmdzIHdoZW4gYSBjYWxsYmFjayByZXR1cm5zIGZhbHNlXG4gKlxuICovXG5qUXVlcnkuQ2FsbGJhY2tzID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0Ly8gQ29udmVydCBvcHRpb25zIGZyb20gU3RyaW5nLWZvcm1hdHRlZCB0byBPYmplY3QtZm9ybWF0dGVkIGlmIG5lZWRlZFxuXHQvLyAod2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpXG5cdG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0Y3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIDpcblx0XHRqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApO1xuXG5cdHZhciAvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nXG5cdFx0ZmlyaW5nLFxuXG5cdFx0Ly8gTGFzdCBmaXJlIHZhbHVlIGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHNcblx0XHRtZW1vcnksXG5cblx0XHQvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCB3YXMgYWxyZWFkeSBmaXJlZFxuXHRcdGZpcmVkLFxuXG5cdFx0Ly8gRmxhZyB0byBwcmV2ZW50IGZpcmluZ1xuXHRcdGxvY2tlZCxcblxuXHRcdC8vIEFjdHVhbCBjYWxsYmFjayBsaXN0XG5cdFx0bGlzdCA9IFtdLFxuXG5cdFx0Ly8gUXVldWUgb2YgZXhlY3V0aW9uIGRhdGEgZm9yIHJlcGVhdGFibGUgbGlzdHNcblx0XHRxdWV1ZSA9IFtdLFxuXG5cdFx0Ly8gSW5kZXggb2YgY3VycmVudGx5IGZpcmluZyBjYWxsYmFjayAobW9kaWZpZWQgYnkgYWRkL3JlbW92ZSBhcyBuZWVkZWQpXG5cdFx0ZmlyaW5nSW5kZXggPSAtMSxcblxuXHRcdC8vIEZpcmUgY2FsbGJhY2tzXG5cdFx0ZmlyZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBFbmZvcmNlIHNpbmdsZS1maXJpbmdcblx0XHRcdGxvY2tlZCA9IGxvY2tlZCB8fCBvcHRpb25zLm9uY2U7XG5cblx0XHRcdC8vIEV4ZWN1dGUgY2FsbGJhY2tzIGZvciBhbGwgcGVuZGluZyBleGVjdXRpb25zLFxuXHRcdFx0Ly8gcmVzcGVjdGluZyBmaXJpbmdJbmRleCBvdmVycmlkZXMgYW5kIHJ1bnRpbWUgY2hhbmdlc1xuXHRcdFx0ZmlyZWQgPSBmaXJpbmcgPSB0cnVlO1xuXHRcdFx0Zm9yICggOyBxdWV1ZS5sZW5ndGg7IGZpcmluZ0luZGV4ID0gLTEgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0XHRcdHdoaWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkge1xuXG5cdFx0XHRcdFx0Ly8gUnVuIGNhbGxiYWNrIGFuZCBjaGVjayBmb3IgZWFybHkgdGVybWluYXRpb25cblx0XHRcdFx0XHRpZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHkoIG1lbW9yeVsgMCBdLCBtZW1vcnlbIDEgXSApID09PSBmYWxzZSAmJlxuXHRcdFx0XHRcdFx0b3B0aW9ucy5zdG9wT25GYWxzZSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSnVtcCB0byBlbmQgYW5kIGZvcmdldCB0aGUgZGF0YSBzbyAuYWRkIGRvZXNuJ3QgcmUtZmlyZVxuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aDtcblx0XHRcdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3JnZXQgdGhlIGRhdGEgaWYgd2UncmUgZG9uZSB3aXRoIGl0XG5cdFx0XHRpZiAoICFvcHRpb25zLm1lbW9yeSApIHtcblx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGZpcmluZyA9IGZhbHNlO1xuXG5cdFx0XHQvLyBDbGVhbiB1cCBpZiB3ZSdyZSBkb25lIGZpcmluZyBmb3IgZ29vZFxuXHRcdFx0aWYgKCBsb2NrZWQgKSB7XG5cblx0XHRcdFx0Ly8gS2VlcCBhbiBlbXB0eSBsaXN0IGlmIHdlIGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxsc1xuXHRcdFx0XHRpZiAoIG1lbW9yeSApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCB0aGlzIG9iamVjdCBpcyBzcGVudFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxpc3QgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0XG5cdFx0c2VsZiA9IHtcblxuXHRcdFx0Ly8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyB0byB0aGUgbGlzdFxuXHRcdFx0YWRkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBtZW1vcnkgZnJvbSBhIHBhc3QgcnVuLCB3ZSBzaG91bGQgZmlyZSBhZnRlciBhZGRpbmdcblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aCAtIDE7XG5cdFx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBtZW1vcnkgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQoIGZ1bmN0aW9uIGFkZCggYXJncyApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0LnB1c2goIGFyZyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgdG9UeXBlKCBhcmcgKSAhPT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEluc3BlY3QgcmVjdXJzaXZlbHlcblx0XHRcdFx0XHRcdFx0XHRhZGQoIGFyZyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0fSApKCBhcmd1bWVudHMgKTtcblxuXHRcdFx0XHRcdGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdFxuXHRcdFx0cmVtb3ZlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHR2YXIgaW5kZXg7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRsaXN0LnNwbGljZSggaW5kZXgsIDEgKTtcblxuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGZpcmluZyBpbmRleGVzXG5cdFx0XHRcdFx0XHRpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4ICkge1xuXHRcdFx0XHRcdFx0XHRmaXJpbmdJbmRleC0tO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuXG5cdFx0XHQvLyBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC5cblx0XHRcdGhhczogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRyZXR1cm4gZm4gP1xuXHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBmbiwgbGlzdCApID4gLTEgOlxuXHRcdFx0XHRcdGxpc3QubGVuZ3RoID4gMDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhbGwgY2FsbGJhY2tzIGZyb20gdGhlIGxpc3Rcblx0XHRcdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmUgYW5kIC5hZGRcblx0XHRcdC8vIEFib3J0IGFueSBjdXJyZW50L3BlbmRpbmcgZXhlY3V0aW9uc1xuXHRcdFx0Ly8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBhbmQgdmFsdWVzXG5cdFx0XHRkaXNhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGRpc2FibGVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICFsaXN0O1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRGlzYWJsZSAuZmlyZVxuXHRcdFx0Ly8gQWxzbyBkaXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5jZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdClcblx0XHRcdC8vIEFib3J0IGFueSBwZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdGxvY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsb2NrZWQgPSBxdWV1ZSA9IFtdO1xuXHRcdFx0XHRpZiAoICFtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRsaXN0ID0gbWVtb3J5ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRsb2NrZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gISFsb2NrZWQ7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzXG5cdFx0XHRmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7XG5cdFx0XHRcdGlmICggIWxvY2tlZCApIHtcblx0XHRcdFx0XHRhcmdzID0gYXJncyB8fCBbXTtcblx0XHRcdFx0XHRhcmdzID0gWyBjb250ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJncyBdO1xuXHRcdFx0XHRcdHF1ZXVlLnB1c2goIGFyZ3MgKTtcblx0XHRcdFx0XHRpZiAoICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHNcblx0XHRcdGZpcmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBUbyBrbm93IGlmIHRoZSBjYWxsYmFja3MgaGF2ZSBhbHJlYWR5IGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2Vcblx0XHRcdGZpcmVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhZmlyZWQ7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRyZXR1cm4gc2VsZjtcbn07XG5cblxuZnVuY3Rpb24gSWRlbnRpdHkoIHYgKSB7XG5cdHJldHVybiB2O1xufVxuZnVuY3Rpb24gVGhyb3dlciggZXggKSB7XG5cdHRocm93IGV4O1xufVxuXG5mdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0LCBub1ZhbHVlICkge1xuXHR2YXIgbWV0aG9kO1xuXG5cdHRyeSB7XG5cblx0XHQvLyBDaGVjayBmb3IgcHJvbWlzZSBhc3BlY3QgZmlyc3QgdG8gcHJpdmlsZWdlIHN5bmNocm9ub3VzIGJlaGF2aW9yXG5cdFx0aWYgKCB2YWx1ZSAmJiBpc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnByb21pc2UgKSApICkge1xuXHRcdFx0bWV0aG9kLmNhbGwoIHZhbHVlICkuZG9uZSggcmVzb2x2ZSApLmZhaWwoIHJlamVjdCApO1xuXG5cdFx0Ly8gT3RoZXIgdGhlbmFibGVzXG5cdFx0fSBlbHNlIGlmICggdmFsdWUgJiYgaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS50aGVuICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0ICk7XG5cblx0XHQvLyBPdGhlciBub24tdGhlbmFibGVzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQ29udHJvbCBgcmVzb2x2ZWAgYXJndW1lbnRzIGJ5IGxldHRpbmcgQXJyYXkjc2xpY2UgY2FzdCBib29sZWFuIGBub1ZhbHVlYCB0byBpbnRlZ2VyOlxuXHRcdFx0Ly8gKiBmYWxzZTogWyB2YWx1ZSBdLnNsaWNlKCAwICkgPT4gcmVzb2x2ZSggdmFsdWUgKVxuXHRcdFx0Ly8gKiB0cnVlOiBbIHZhbHVlIF0uc2xpY2UoIDEgKSA9PiByZXNvbHZlKClcblx0XHRcdHJlc29sdmUuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdLnNsaWNlKCBub1ZhbHVlICkgKTtcblx0XHR9XG5cblx0Ly8gRm9yIFByb21pc2VzL0ErLCBjb252ZXJ0IGV4Y2VwdGlvbnMgaW50byByZWplY3Rpb25zXG5cdC8vIFNpbmNlIGpRdWVyeS53aGVuIGRvZXNuJ3QgdW53cmFwIHRoZW5hYmxlcywgd2UgY2FuIHNraXAgdGhlIGV4dHJhIGNoZWNrcyBhcHBlYXJpbmcgaW5cblx0Ly8gRGVmZXJyZWQjdGhlbiB0byBjb25kaXRpb25hbGx5IHN1cHByZXNzIHJlamVjdGlvbi5cblx0fSBjYXRjaCAoIHZhbHVlICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25seVxuXHRcdC8vIFN0cmljdCBtb2RlIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBnbG9iYWwtb2JqZWN0IGNvbnRleHRcblx0XHRyZWplY3QuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdICk7XG5cdH1cbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdERlZmVycmVkOiBmdW5jdGlvbiggZnVuYyApIHtcblx0XHR2YXIgdHVwbGVzID0gW1xuXG5cdFx0XHRcdC8vIGFjdGlvbiwgYWRkIGxpc3RlbmVyLCBjYWxsYmFja3MsXG5cdFx0XHRcdC8vIC4uLiAudGhlbiBoYW5kbGVycywgYXJndW1lbnQgaW5kZXgsIFtmaW5hbCBzdGF0ZV1cblx0XHRcdFx0WyBcIm5vdGlmeVwiLCBcInByb2dyZXNzXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwibWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksIDIgXSxcblx0XHRcdFx0WyBcInJlc29sdmVcIiwgXCJkb25lXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAwLCBcInJlc29sdmVkXCIgXSxcblx0XHRcdFx0WyBcInJlamVjdFwiLCBcImZhaWxcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksIDEsIFwicmVqZWN0ZWRcIiBdXG5cdFx0XHRdLFxuXHRcdFx0c3RhdGUgPSBcInBlbmRpbmdcIixcblx0XHRcdHByb21pc2UgPSB7XG5cdFx0XHRcdHN0YXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RhdGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFsd2F5czogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdFwiY2F0Y2hcIjogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnRoZW4oIG51bGwsIGZuICk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdFxuXHRcdFx0XHRwaXBlOiBmdW5jdGlvbiggLyogZm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKi8gKSB7XG5cdFx0XHRcdFx0dmFyIGZucyA9IGFyZ3VtZW50cztcblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBNYXAgdHVwbGVzIChwcm9ncmVzcywgZG9uZSwgZmFpbCkgdG8gYXJndW1lbnRzIChkb25lLCBmYWlsLCBwcm9ncmVzcylcblx0XHRcdFx0XHRcdFx0dmFyIGZuID0gaXNGdW5jdGlvbiggZm5zWyB0dXBsZVsgNCBdIF0gKSAmJiBmbnNbIHR1cGxlWyA0IF0gXTtcblxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5wcm9ncmVzcyhmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5ub3RpZnkgfSlcblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQuZG9uZShmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZXNvbHZlIH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmZhaWwoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVqZWN0IH0pXG5cdFx0XHRcdFx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMSBdIF0oIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByZXR1cm5lZCA9IGZuICYmIGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkICYmIGlzRnVuY3Rpb24oIHJldHVybmVkLnByb21pc2UgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLnByb21pc2UoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5kb25lKCBuZXdEZWZlci5yZXNvbHZlIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmZhaWwoIG5ld0RlZmVyLnJlamVjdCApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlclsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZuID8gWyByZXR1cm5lZCBdIDogYXJndW1lbnRzXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0Zm5zID0gbnVsbDtcblx0XHRcdFx0XHR9ICkucHJvbWlzZSgpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGVuOiBmdW5jdGlvbiggb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIG9uUHJvZ3Jlc3MgKSB7XG5cdFx0XHRcdFx0dmFyIG1heERlcHRoID0gMDtcblx0XHRcdFx0XHRmdW5jdGlvbiByZXNvbHZlKCBkZXB0aCwgZGVmZXJyZWQsIGhhbmRsZXIsIHNwZWNpYWwgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0aGF0ID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0XHRhcmdzID0gYXJndW1lbnRzLFxuXHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3cgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciByZXR1cm5lZCwgdGhlbjtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjNcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU5XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBJZ25vcmUgZG91YmxlLXJlc29sdXRpb24gYXR0ZW1wdHNcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggZGVwdGggPCBtYXhEZXB0aCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCA9IGhhbmRsZXIuYXBwbHkoIHRoYXQsIGFyZ3MgKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNDhcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggcmV0dXJuZWQgPT09IGRlZmVycmVkLnByb21pc2UoKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggXCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb25cIiApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9ucyAyLjMuMy4xLCAzLjVcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU0XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC03NVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gUmV0cmlldmUgYHRoZW5gIG9ubHkgb25jZVxuXHRcdFx0XHRcdFx0XHRcdFx0dGhlbiA9IHJldHVybmVkICYmXG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuNFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02NFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IGNoZWNrIG9iamVjdHMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlbmFiaWxpdHlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCB0eXBlb2YgcmV0dXJuZWQgPT09IFwib2JqZWN0XCIgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgcmV0dXJuZWQgPT09IFwiZnVuY3Rpb25cIiApICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLnRoZW47XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBhIHJldHVybmVkIHRoZW5hYmxlXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIHRoZW4gKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTcGVjaWFsIHByb2Nlc3NvcnMgKG5vdGlmeSkganVzdCB3YWl0IGZvciByZXNvbHV0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGVuLmNhbGwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBOb3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgYWxzbyBob29rIGludG8gcHJvZ3Jlc3Ncblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIC4uLmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtYXhEZXB0aCsrO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGggKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGFsbCBvdGhlciByZXR1cm5lZCB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBoYW5kbGVyICE9PSBJZGVudGl0eSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIHJldHVybmVkIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBQcm9jZXNzIHRoZSB2YWx1ZShzKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBEZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoIHNwZWNpYWwgfHwgZGVmZXJyZWQucmVzb2x2ZVdpdGggKSggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IG5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBjYXRjaCBhbmQgcmVqZWN0IGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzID0gc3BlY2lhbCA/XG5cdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93IDpcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3coKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByb2Nlc3Muc3RhY2tUcmFjZSApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy40LjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02MVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIElnbm9yZSBwb3N0LXJlc29sdXRpb24gZXhjZXB0aW9uc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKyAxID49IG1heERlcHRoICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gVGhyb3dlciApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncyA9IFsgZSBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCB0aGF0LCBhcmdzICk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4xXG5cdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU3XG5cdFx0XHRcdFx0XHRcdC8vIFJlLXJlc29sdmUgcHJvbWlzZXMgaW1tZWRpYXRlbHkgdG8gZG9kZ2UgZmFsc2UgcmVqZWN0aW9uIGZyb21cblx0XHRcdFx0XHRcdFx0Ly8gc3Vic2VxdWVudCBlcnJvcnNcblx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCApIHtcblx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzKCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDYWxsIGFuIG9wdGlvbmFsIGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFjaywgaW4gY2FzZSBvZiBleGNlcHRpb25cblx0XHRcdFx0XHRcdFx0XHQvLyBzaW5jZSBpdCdzIG90aGVyd2lzZSBsb3N0IHdoZW4gZXhlY3V0aW9uIGdvZXMgYXN5bmNcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgPSBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBwcm9jZXNzICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXG5cdFx0XHRcdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uUHJvZ3Jlc3MgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvblByb2dyZXNzIDpcblx0XHRcdFx0XHRcdFx0XHRcdElkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLm5vdGlmeVdpdGhcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Ly8gZnVsZmlsbGVkX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMSBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0aXNGdW5jdGlvbiggb25GdWxmaWxsZWQgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvbkZ1bGZpbGxlZCA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHQvLyByZWplY3RlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDIgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uUmVqZWN0ZWQgKSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRvblJlamVjdGVkIDpcblx0XHRcdFx0XHRcdFx0XHRcdFRocm93ZXJcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9ICkucHJvbWlzZSgpO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIEdldCBhIHByb21pc2UgZm9yIHRoaXMgZGVmZXJyZWRcblx0XHRcdFx0Ly8gSWYgb2JqIGlzIHByb3ZpZGVkLCB0aGUgcHJvbWlzZSBhc3BlY3QgaXMgYWRkZWQgdG8gdGhlIG9iamVjdFxuXHRcdFx0XHRwcm9taXNlOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdFx0XHRcdHJldHVybiBvYmogIT0gbnVsbCA/IGpRdWVyeS5leHRlbmQoIG9iaiwgcHJvbWlzZSApIDogcHJvbWlzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlZmVycmVkID0ge307XG5cblx0XHQvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzXG5cdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXHRcdFx0dmFyIGxpc3QgPSB0dXBsZVsgMiBdLFxuXHRcdFx0XHRzdGF0ZVN0cmluZyA9IHR1cGxlWyA1IF07XG5cblx0XHRcdC8vIHByb21pc2UucHJvZ3Jlc3MgPSBsaXN0LmFkZFxuXHRcdFx0Ly8gcHJvbWlzZS5kb25lID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZmFpbCA9IGxpc3QuYWRkXG5cdFx0XHRwcm9taXNlWyB0dXBsZVsgMSBdIF0gPSBsaXN0LmFkZDtcblxuXHRcdFx0Ly8gSGFuZGxlIHN0YXRlXG5cdFx0XHRpZiAoIHN0YXRlU3RyaW5nICkge1xuXHRcdFx0XHRsaXN0LmFkZChcblx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gc3RhdGUgPSBcInJlc29sdmVkXCIgKGkuZS4sIGZ1bGZpbGxlZClcblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZWplY3RlZFwiXG5cdFx0XHRcdFx0XHRzdGF0ZSA9IHN0YXRlU3RyaW5nO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyByZWplY3RlZF9jYWxsYmFja3MuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9jYWxsYmFja3MuZGlzYWJsZVxuXHRcdFx0XHRcdHR1cGxlc1sgMyAtIGkgXVsgMiBdLmRpc2FibGUsXG5cblx0XHRcdFx0XHQvLyByZWplY3RlZF9oYW5kbGVycy5kaXNhYmxlXG5cdFx0XHRcdFx0Ly8gZnVsZmlsbGVkX2hhbmRsZXJzLmRpc2FibGVcblx0XHRcdFx0XHR0dXBsZXNbIDMgLSBpIF1bIDMgXS5kaXNhYmxlLFxuXG5cdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfY2FsbGJhY2tzLmxvY2tcblx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMiBdLmxvY2ssXG5cblx0XHRcdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5sb2NrXG5cdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDMgXS5sb2NrXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHByb2dyZXNzX2hhbmRsZXJzLmZpcmVcblx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5maXJlXG5cdFx0XHQvLyByZWplY3RlZF9oYW5kbGVycy5maXJlXG5cdFx0XHRsaXN0LmFkZCggdHVwbGVbIDMgXS5maXJlICk7XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5ub3RpZnlXaXRoKC4uLikgfVxuXHRcdFx0Ly8gZGVmZXJyZWQucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZXNvbHZlV2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdCA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZWplY3RXaXRoKC4uLikgfVxuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gdW5kZWZpbmVkIDogdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8gZGVmZXJyZWQubm90aWZ5V2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmVXaXRoID0gbGlzdC5maXJlV2l0aFxuXHRcdFx0Ly8gZGVmZXJyZWQucmVqZWN0V2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXSA9IGxpc3QuZmlyZVdpdGg7XG5cdFx0fSApO1xuXG5cdFx0Ly8gTWFrZSB0aGUgZGVmZXJyZWQgYSBwcm9taXNlXG5cdFx0cHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApO1xuXG5cdFx0Ly8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueVxuXHRcdGlmICggZnVuYyApIHtcblx0XHRcdGZ1bmMuY2FsbCggZGVmZXJyZWQsIGRlZmVycmVkICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsIGRvbmUhXG5cdFx0cmV0dXJuIGRlZmVycmVkO1xuXHR9LFxuXG5cdC8vIERlZmVycmVkIGhlbHBlclxuXHR3aGVuOiBmdW5jdGlvbiggc2luZ2xlVmFsdWUgKSB7XG5cdFx0dmFyXG5cblx0XHRcdC8vIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlc1xuXHRcdFx0cmVtYWluaW5nID0gYXJndW1lbnRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gY291bnQgb2YgdW5wcm9jZXNzZWQgYXJndW1lbnRzXG5cdFx0XHRpID0gcmVtYWluaW5nLFxuXG5cdFx0XHQvLyBzdWJvcmRpbmF0ZSBmdWxmaWxsbWVudCBkYXRhXG5cdFx0XHRyZXNvbHZlQ29udGV4dHMgPSBBcnJheSggaSApLFxuXHRcdFx0cmVzb2x2ZVZhbHVlcyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLFxuXG5cdFx0XHQvLyB0aGUgbWFzdGVyIERlZmVycmVkXG5cdFx0XHRtYXN0ZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeVxuXHRcdFx0dXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJlc29sdmVDb250ZXh0c1sgaSBdID0gdGhpcztcblx0XHRcdFx0XHRyZXNvbHZlVmFsdWVzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApIDogdmFsdWU7XG5cdFx0XHRcdFx0aWYgKCAhKCAtLXJlbWFpbmluZyApICkge1xuXHRcdFx0XHRcdFx0bWFzdGVyLnJlc29sdmVXaXRoKCByZXNvbHZlQ29udGV4dHMsIHJlc29sdmVWYWx1ZXMgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9O1xuXG5cdFx0Ly8gU2luZ2xlLSBhbmQgZW1wdHkgYXJndW1lbnRzIGFyZSBhZG9wdGVkIGxpa2UgUHJvbWlzZS5yZXNvbHZlXG5cdFx0aWYgKCByZW1haW5pbmcgPD0gMSApIHtcblx0XHRcdGFkb3B0VmFsdWUoIHNpbmdsZVZhbHVlLCBtYXN0ZXIuZG9uZSggdXBkYXRlRnVuYyggaSApICkucmVzb2x2ZSwgbWFzdGVyLnJlamVjdCxcblx0XHRcdFx0IXJlbWFpbmluZyApO1xuXG5cdFx0XHQvLyBVc2UgLnRoZW4oKSB0byB1bndyYXAgc2Vjb25kYXJ5IHRoZW5hYmxlcyAoY2YuIGdoLTMwMDApXG5cdFx0XHRpZiAoIG1hc3Rlci5zdGF0ZSgpID09PSBcInBlbmRpbmdcIiB8fFxuXHRcdFx0XHRpc0Z1bmN0aW9uKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgcmVzb2x2ZVZhbHVlc1sgaSBdLnRoZW4gKSApIHtcblxuXHRcdFx0XHRyZXR1cm4gbWFzdGVyLnRoZW4oKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBNdWx0aXBsZSBhcmd1bWVudHMgYXJlIGFnZ3JlZ2F0ZWQgbGlrZSBQcm9taXNlLmFsbCBhcnJheSBlbGVtZW50c1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0YWRvcHRWYWx1ZSggcmVzb2x2ZVZhbHVlc1sgaSBdLCB1cGRhdGVGdW5jKCBpICksIG1hc3Rlci5yZWplY3QgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbWFzdGVyLnByb21pc2UoKTtcblx0fVxufSApO1xuXG5cbi8vIFRoZXNlIHVzdWFsbHkgaW5kaWNhdGUgYSBwcm9ncmFtbWVyIG1pc3Rha2UgZHVyaW5nIGRldmVsb3BtZW50LFxuLy8gd2FybiBhYm91dCB0aGVtIEFTQVAgcmF0aGVyIHRoYW4gc3dhbGxvd2luZyB0aGVtIGJ5IGRlZmF1bHQuXG52YXIgcmVycm9yTmFtZXMgPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztcblxualF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbiggZXJyb3IsIHN0YWNrICkge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDggLSA5IG9ubHlcblx0Ly8gQ29uc29sZSBleGlzdHMgd2hlbiBkZXYgdG9vbHMgYXJlIG9wZW4sIHdoaWNoIGNhbiBoYXBwZW4gYXQgYW55IHRpbWVcblx0aWYgKCB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS53YXJuICYmIGVycm9yICYmIHJlcnJvck5hbWVzLnRlc3QoIGVycm9yLm5hbWUgKSApIHtcblx0XHR3aW5kb3cuY29uc29sZS53YXJuKCBcImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246IFwiICsgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIHN0YWNrICk7XG5cdH1cbn07XG5cblxuXG5cbmpRdWVyeS5yZWFkeUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKCBlcnJvciApIHtcblx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdHRocm93IGVycm9yO1xuXHR9ICk7XG59O1xuXG5cblxuXG4vLyBUaGUgZGVmZXJyZWQgdXNlZCBvbiBET00gcmVhZHlcbnZhciByZWFkeUxpc3QgPSBqUXVlcnkuRGVmZXJyZWQoKTtcblxualF1ZXJ5LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZuICkge1xuXG5cdHJlYWR5TGlzdFxuXHRcdC50aGVuKCBmbiApXG5cblx0XHQvLyBXcmFwIGpRdWVyeS5yZWFkeUV4Y2VwdGlvbiBpbiBhIGZ1bmN0aW9uIHNvIHRoYXQgdGhlIGxvb2t1cFxuXHRcdC8vIGhhcHBlbnMgYXQgdGhlIHRpbWUgb2YgZXJyb3IgaGFuZGxpbmcgaW5zdGVhZCBvZiBjYWxsYmFja1xuXHRcdC8vIHJlZ2lzdHJhdGlvbi5cblx0XHQuY2F0Y2goIGZ1bmN0aW9uKCBlcnJvciApIHtcblx0XHRcdGpRdWVyeS5yZWFkeUV4Y2VwdGlvbiggZXJyb3IgKTtcblx0XHR9ICk7XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vycy5cblx0aXNSZWFkeTogZmFsc2UsXG5cblx0Ly8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQgZm9yIGJlZm9yZVxuXHQvLyB0aGUgcmVhZHkgZXZlbnQgZmlyZXMuIFNlZSAjNjc4MVxuXHRyZWFkeVdhaXQ6IDEsXG5cblx0Ly8gSGFuZGxlIHdoZW4gdGhlIERPTSBpcyByZWFkeVxuXHRyZWFkeTogZnVuY3Rpb24oIHdhaXQgKSB7XG5cblx0XHQvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVuZGluZyBob2xkcyBvciB3ZSdyZSBhbHJlYWR5IHJlYWR5XG5cdFx0aWYgKCB3YWl0ID09PSB0cnVlID8gLS1qUXVlcnkucmVhZHlXYWl0IDogalF1ZXJ5LmlzUmVhZHkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5XG5cdFx0alF1ZXJ5LmlzUmVhZHkgPSB0cnVlO1xuXG5cdFx0Ly8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVkLCBkZWNyZW1lbnQsIGFuZCB3YWl0IGlmIG5lZWQgYmVcblx0XHRpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGVyZSBhcmUgZnVuY3Rpb25zIGJvdW5kLCB0byBleGVjdXRlXG5cdFx0cmVhZHlMaXN0LnJlc29sdmVXaXRoKCBkb2N1bWVudCwgWyBqUXVlcnkgXSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5yZWFkeS50aGVuID0gcmVhZHlMaXN0LnRoZW47XG5cbi8vIFRoZSByZWFkeSBldmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kXG5mdW5jdGlvbiBjb21wbGV0ZWQoKSB7XG5cdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQgKTtcblx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBjb21wbGV0ZWQgKTtcblx0alF1ZXJ5LnJlYWR5KCk7XG59XG5cbi8vIENhdGNoIGNhc2VzIHdoZXJlICQoZG9jdW1lbnQpLnJlYWR5KCkgaXMgY2FsbGVkXG4vLyBhZnRlciB0aGUgYnJvd3NlciBldmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC5cbi8vIFN1cHBvcnQ6IElFIDw9OSAtIDEwIG9ubHlcbi8vIE9sZGVyIElFIHNvbWV0aW1lcyBzaWduYWxzIFwiaW50ZXJhY3RpdmVcIiB0b28gc29vblxuaWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIgfHxcblx0KCBkb2N1bWVudC5yZWFkeVN0YXRlICE9PSBcImxvYWRpbmdcIiAmJiAhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsICkgKSB7XG5cblx0Ly8gSGFuZGxlIGl0IGFzeW5jaHJvbm91c2x5IHRvIGFsbG93IHNjcmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTtcblxufSBlbHNlIHtcblxuXHQvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrXG5cdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQgKTtcblxuXHQvLyBBIGZhbGxiYWNrIHRvIHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29ya1xuXHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCApO1xufVxuXG5cblxuXG4vLyBNdWx0aWZ1bmN0aW9uYWwgbWV0aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb25cbi8vIFRoZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlvblxudmFyIGFjY2VzcyA9IGZ1bmN0aW9uKCBlbGVtcywgZm4sIGtleSwgdmFsdWUsIGNoYWluYWJsZSwgZW1wdHlHZXQsIHJhdyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IGVsZW1zLmxlbmd0aCxcblx0XHRidWxrID0ga2V5ID09IG51bGw7XG5cblx0Ly8gU2V0cyBtYW55IHZhbHVlc1xuXHRpZiAoIHRvVHlwZSgga2V5ICkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblx0XHRmb3IgKCBpIGluIGtleSApIHtcblx0XHRcdGFjY2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbIGkgXSwgdHJ1ZSwgZW1wdHlHZXQsIHJhdyApO1xuXHRcdH1cblxuXHQvLyBTZXRzIG9uZSB2YWx1ZVxuXHR9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cblx0XHRpZiAoICFpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmF3ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoIGJ1bGsgKSB7XG5cblx0XHRcdC8vIEJ1bGsgb3BlcmF0aW9ucyBydW4gYWdhaW5zdCB0aGUgZW50aXJlIHNldFxuXHRcdFx0aWYgKCByYXcgKSB7XG5cdFx0XHRcdGZuLmNhbGwoIGVsZW1zLCB2YWx1ZSApO1xuXHRcdFx0XHRmbiA9IG51bGw7XG5cblx0XHRcdC8vIC4uLmV4Y2VwdCB3aGVuIGV4ZWN1dGluZyBmdW5jdGlvbiB2YWx1ZXNcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1bGsgPSBmbjtcblx0XHRcdFx0Zm4gPSBmdW5jdGlvbiggZWxlbSwga2V5LCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gYnVsay5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdmFsdWUgKTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdGZuKFxuXHRcdFx0XHRcdGVsZW1zWyBpIF0sIGtleSwgcmF3ID9cblx0XHRcdFx0XHR2YWx1ZSA6XG5cdFx0XHRcdFx0dmFsdWUuY2FsbCggZWxlbXNbIGkgXSwgaSwgZm4oIGVsZW1zWyBpIF0sIGtleSApIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIGNoYWluYWJsZSApIHtcblx0XHRyZXR1cm4gZWxlbXM7XG5cdH1cblxuXHQvLyBHZXRzXG5cdGlmICggYnVsayApIHtcblx0XHRyZXR1cm4gZm4uY2FsbCggZWxlbXMgKTtcblx0fVxuXG5cdHJldHVybiBsZW4gPyBmbiggZWxlbXNbIDAgXSwga2V5ICkgOiBlbXB0eUdldDtcbn07XG5cblxuLy8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nXG52YXIgcm1zUHJlZml4ID0gL14tbXMtLyxcblx0cmRhc2hBbHBoYSA9IC8tKFthLXpdKS9nO1xuXG4vLyBVc2VkIGJ5IGNhbWVsQ2FzZSBhcyBjYWxsYmFjayB0byByZXBsYWNlKClcbmZ1bmN0aW9uIGZjYW1lbENhc2UoIGFsbCwgbGV0dGVyICkge1xuXHRyZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8vIENvbnZlcnQgZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRhIG1vZHVsZXNcbi8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTVcbi8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8gaHVtcCB0aGVpciB2ZW5kb3IgcHJlZml4ICgjOTU3MilcbmZ1bmN0aW9uIGNhbWVsQ2FzZSggc3RyaW5nICkge1xuXHRyZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgXCJtcy1cIiApLnJlcGxhY2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTtcbn1cbnZhciBhY2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkge1xuXG5cdC8vIEFjY2VwdHMgb25seTpcblx0Ly8gIC0gTm9kZVxuXHQvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RFXG5cdC8vICAgIC0gTm9kZS5ET0NVTUVOVF9OT0RFXG5cdC8vICAtIE9iamVjdFxuXHQvLyAgICAtIEFueVxuXHRyZXR1cm4gb3duZXIubm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7XG59O1xuXG5cblxuXG5mdW5jdGlvbiBEYXRhKCkge1xuXHR0aGlzLmV4cGFuZG8gPSBqUXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7XG59XG5cbkRhdGEudWlkID0gMTtcblxuRGF0YS5wcm90b3R5cGUgPSB7XG5cblx0Y2FjaGU6IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHRcdC8vIENoZWNrIGlmIHRoZSBvd25lciBvYmplY3QgYWxyZWFkeSBoYXMgYSBjYWNoZVxuXHRcdHZhciB2YWx1ZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblxuXHRcdC8vIElmIG5vdCwgY3JlYXRlIG9uZVxuXHRcdGlmICggIXZhbHVlICkge1xuXHRcdFx0dmFsdWUgPSB7fTtcblxuXHRcdFx0Ly8gV2UgY2FuIGFjY2VwdCBkYXRhIGZvciBub24tZWxlbWVudCBub2RlcyBpbiBtb2Rlcm4gYnJvd3NlcnMsXG5cdFx0XHQvLyBidXQgd2Ugc2hvdWxkIG5vdCwgc2VlICM4MzM1LlxuXHRcdFx0Ly8gQWx3YXlzIHJldHVybiBhbiBlbXB0eSBvYmplY3QuXG5cdFx0XHRpZiAoIGFjY2VwdERhdGEoIG93bmVyICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYgaXQgaXMgYSBub2RlIHVubGlrZWx5IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQgb3ZlclxuXHRcdFx0XHQvLyB1c2UgcGxhaW4gYXNzaWdubWVudFxuXHRcdFx0XHRpZiAoIG93bmVyLm5vZGVUeXBlICkge1xuXHRcdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHZhbHVlO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBzZWN1cmUgaXQgaW4gYSBub24tZW51bWVyYWJsZSBwcm9wZXJ0eVxuXHRcdFx0XHQvLyBjb25maWd1cmFibGUgbXVzdCBiZSB0cnVlIHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZVxuXHRcdFx0XHQvLyBkZWxldGVkIHdoZW4gZGF0YSBpcyByZW1vdmVkXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCBvd25lciwgdGhpcy5leHBhbmRvLCB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogdmFsdWUsXG5cdFx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWVcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWU7XG5cdH0sXG5cdHNldDogZnVuY3Rpb24oIG93bmVyLCBkYXRhLCB2YWx1ZSApIHtcblx0XHR2YXIgcHJvcCxcblx0XHRcdGNhY2hlID0gdGhpcy5jYWNoZSggb3duZXIgKTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwga2V5LCB2YWx1ZSBdIGFyZ3Ncblx0XHQvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGNhY2hlWyBjYW1lbENhc2UoIGRhdGEgKSBdID0gdmFsdWU7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIHsgcHJvcGVydGllcyB9IF0gYXJnc1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIENvcHkgdGhlIHByb3BlcnRpZXMgb25lLWJ5LW9uZSB0byB0aGUgY2FjaGUgb2JqZWN0XG5cdFx0XHRmb3IgKCBwcm9wIGluIGRhdGEgKSB7XG5cdFx0XHRcdGNhY2hlWyBjYW1lbENhc2UoIHByb3AgKSBdID0gZGF0YVsgcHJvcCBdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2FjaGU7XG5cdH0sXG5cdGdldDogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0cmV0dXJuIGtleSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMuY2FjaGUoIG93bmVyICkgOlxuXG5cdFx0XHQvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpXG5cdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gJiYgb3duZXJbIHRoaXMuZXhwYW5kbyBdWyBjYW1lbENhc2UoIGtleSApIF07XG5cdH0sXG5cdGFjY2VzczogZnVuY3Rpb24oIG93bmVyLCBrZXksIHZhbHVlICkge1xuXG5cdFx0Ly8gSW4gY2FzZXMgd2hlcmUgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBObyBrZXkgd2FzIHNwZWNpZmllZFxuXHRcdC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZpZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZFxuXHRcdC8vXG5cdFx0Ly8gVGFrZSB0aGUgXCJyZWFkXCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lXG5cdFx0Ly8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdFxuXHRcdC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXlcblx0XHQvL1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHxcblx0XHRcdFx0KCAoIGtleSAmJiB0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiICkgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApICkge1xuXG5cdFx0XHRyZXR1cm4gdGhpcy5nZXQoIG93bmVyLCBrZXkgKTtcblx0XHR9XG5cblx0XHQvLyBXaGVuIHRoZSBrZXkgaXMgbm90IGEgc3RyaW5nLCBvciBib3RoIGEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vIGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5nIG9iamVjdHMpIHdpdGggZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBBbiBvYmplY3Qgb2YgcHJvcGVydGllc1xuXHRcdC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlXG5cdFx0Ly9cblx0XHR0aGlzLnNldCggb3duZXIsIGtleSwgdmFsdWUgKTtcblxuXHRcdC8vIFNpbmNlIHRoZSBcInNldFwiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3NpYmxlIGVudHJ5IHBvaW50c1xuXHRcdC8vIHJldHVybiB0aGUgZXhwZWN0ZWQgZGF0YSBiYXNlZCBvbiB3aGljaCBwYXRoIHdhcyB0YWtlblsqXVxuXHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBrZXk7XG5cdH0sXG5cdHJlbW92ZTogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0dmFyIGksXG5cdFx0XHRjYWNoZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblxuXHRcdGlmICggY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIGtleSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0IGFycmF5IG9yIHNwYWNlIHNlcGFyYXRlZCBzdHJpbmcgb2Yga2V5c1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBrZXkgKSApIHtcblxuXHRcdFx0XHQvLyBJZiBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5cy4uLlxuXHRcdFx0XHQvLyBXZSBhbHdheXMgc2V0IGNhbWVsQ2FzZSBrZXlzLCBzbyByZW1vdmUgdGhhdC5cblx0XHRcdFx0a2V5ID0ga2V5Lm1hcCggY2FtZWxDYXNlICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRrZXkgPSBjYW1lbENhc2UoIGtleSApO1xuXG5cdFx0XHRcdC8vIElmIGEga2V5IHdpdGggdGhlIHNwYWNlcyBleGlzdHMsIHVzZSBpdC5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCBjcmVhdGUgYW4gYXJyYXkgYnkgbWF0Y2hpbmcgbm9uLXdoaXRlc3BhY2Vcblx0XHRcdFx0a2V5ID0ga2V5IGluIGNhY2hlID9cblx0XHRcdFx0XHRbIGtleSBdIDpcblx0XHRcdFx0XHQoIGtleS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdICk7XG5cdFx0XHR9XG5cblx0XHRcdGkgPSBrZXkubGVuZ3RoO1xuXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlbIGkgXSBdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiB0aGVyZSdzIG5vIG1vcmUgZGF0YVxuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHwgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICkgKSB7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDVcblx0XHRcdC8vIFdlYmtpdCAmIEJsaW5rIHBlcmZvcm1hbmNlIHN1ZmZlcnMgd2hlbiBkZWxldGluZyBwcm9wZXJ0aWVzXG5cdFx0XHQvLyBmcm9tIERPTSBub2Rlcywgc28gc2V0IHRvIHVuZGVmaW5lZCBpbnN0ZWFkXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zNzg2MDcgKGJ1ZyByZXN0cmljdGVkKVxuXHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVsZXRlIG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBvd25lciApIHtcblx0XHR2YXIgY2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0cmV0dXJuIGNhY2hlICE9PSB1bmRlZmluZWQgJiYgIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApO1xuXHR9XG59O1xudmFyIGRhdGFQcml2ID0gbmV3IERhdGEoKTtcblxudmFyIGRhdGFVc2VyID0gbmV3IERhdGEoKTtcblxuXG5cbi8vXHRJbXBsZW1lbnRhdGlvbiBTdW1tYXJ5XG4vL1xuLy9cdDEuIEVuZm9yY2UgQVBJIHN1cmZhY2UgYW5kIHNlbWFudGljIGNvbXBhdGliaWxpdHkgd2l0aCAxLjkueCBicmFuY2hcbi8vXHQyLiBJbXByb3ZlIHRoZSBtb2R1bGUncyBtYWludGFpbmFiaWxpdHkgYnkgcmVkdWNpbmcgdGhlIHN0b3JhZ2Vcbi8vXHRcdHBhdGhzIHRvIGEgc2luZ2xlIG1lY2hhbmlzbS5cbi8vXHQzLiBVc2UgdGhlIHNhbWUgc2luZ2xlIG1lY2hhbmlzbSB0byBzdXBwb3J0IFwicHJpdmF0ZVwiIGFuZCBcInVzZXJcIiBkYXRhLlxuLy9cdDQuIF9OZXZlcl8gZXhwb3NlIFwicHJpdmF0ZVwiIGRhdGEgdG8gdXNlciBjb2RlIChUT0RPOiBEcm9wIF9kYXRhLCBfcmVtb3ZlRGF0YSlcbi8vXHQ1LiBBdm9pZCBleHBvc2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9uIHVzZXIgb2JqZWN0cyAoZWcuIGV4cGFuZG8gcHJvcGVydGllcylcbi8vXHQ2LiBQcm92aWRlIGEgY2xlYXIgcGF0aCBmb3IgaW1wbGVtZW50YXRpb24gdXBncmFkZSB0byBXZWFrTWFwIGluIDIwMTRcblxudmFyIHJicmFjZSA9IC9eKD86XFx7W1xcd1xcV10qXFx9fFxcW1tcXHdcXFddKlxcXSkkLyxcblx0cm11bHRpRGFzaCA9IC9bQS1aXS9nO1xuXG5mdW5jdGlvbiBnZXREYXRhKCBkYXRhICkge1xuXHRpZiAoIGRhdGEgPT09IFwidHJ1ZVwiICkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0aWYgKCBkYXRhID09PSBcImZhbHNlXCIgKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aWYgKCBkYXRhID09PSBcIm51bGxcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIE9ubHkgY29udmVydCB0byBhIG51bWJlciBpZiBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgc3RyaW5nXG5cdGlmICggZGF0YSA9PT0gK2RhdGEgKyBcIlwiICkge1xuXHRcdHJldHVybiArZGF0YTtcblx0fVxuXG5cdGlmICggcmJyYWNlLnRlc3QoIGRhdGEgKSApIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZSggZGF0YSApO1xuXHR9XG5cblx0cmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGRhdGFBdHRyKCBlbGVtLCBrZXksIGRhdGEgKSB7XG5cdHZhciBuYW1lO1xuXG5cdC8vIElmIG5vdGhpbmcgd2FzIGZvdW5kIGludGVybmFsbHksIHRyeSB0byBmZXRjaCBhbnlcblx0Ly8gZGF0YSBmcm9tIHRoZSBIVE1MNSBkYXRhLSogYXR0cmlidXRlXG5cdGlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0bmFtZSA9IFwiZGF0YS1cIiArIGtleS5yZXBsYWNlKCBybXVsdGlEYXNoLCBcIi0kJlwiICkudG9Mb3dlckNhc2UoKTtcblx0XHRkYXRhID0gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTtcblxuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRkYXRhID0gZ2V0RGF0YSggZGF0YSApO1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBkYXRhIHNvIGl0IGlzbid0IGNoYW5nZWQgbGF0ZXJcblx0XHRcdGRhdGFVc2VyLnNldCggZWxlbSwga2V5LCBkYXRhICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBkYXRhO1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkYXRhVXNlci5oYXNEYXRhKCBlbGVtICkgfHwgZGF0YVByaXYuaGFzRGF0YSggZWxlbSApO1xuXHR9LFxuXG5cdGRhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhVXNlci5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRkYXRhVXNlci5yZW1vdmUoIGVsZW0sIG5hbWUgKTtcblx0fSxcblxuXHQvLyBUT0RPOiBOb3cgdGhhdCBhbGwgY2FsbHMgdG8gX2RhdGEgYW5kIF9yZW1vdmVEYXRhIGhhdmUgYmVlbiByZXBsYWNlZFxuXHQvLyB3aXRoIGRpcmVjdCBjYWxscyB0byBkYXRhUHJpdiBtZXRob2RzLCB0aGVzZSBjYW4gYmUgZGVwcmVjYXRlZC5cblx0X2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRfcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRkYXRhOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR2YXIgaSwgbmFtZSwgZGF0YSxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRhdHRycyA9IGVsZW0gJiYgZWxlbS5hdHRyaWJ1dGVzO1xuXG5cdFx0Ly8gR2V0cyBhbGwgdmFsdWVzXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdGhpcy5sZW5ndGggKSB7XG5cdFx0XHRcdGRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0gKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWRhdGFQcml2LmdldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiApICkge1xuXHRcdFx0XHRcdGkgPSBhdHRycy5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDExIG9ubHlcblx0XHRcdFx0XHRcdC8vIFRoZSBhdHRycyBlbGVtZW50cyBjYW4gYmUgbnVsbCAoIzE0ODk0KVxuXHRcdFx0XHRcdFx0aWYgKCBhdHRyc1sgaSBdICkge1xuXHRcdFx0XHRcdFx0XHRuYW1lID0gYXR0cnNbIGkgXS5uYW1lO1xuXHRcdFx0XHRcdFx0XHRpZiAoIG5hbWUuaW5kZXhPZiggXCJkYXRhLVwiICkgPT09IDAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZSA9IGNhbWVsQ2FzZSggbmFtZS5zbGljZSggNSApICk7XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YUF0dHIoIGVsZW0sIG5hbWUsIGRhdGFbIG5hbWUgXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH1cblxuXHRcdC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzXG5cdFx0aWYgKCB0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5ICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGRhdGE7XG5cblx0XHRcdC8vIFRoZSBjYWxsaW5nIGpRdWVyeSBvYmplY3QgKGVsZW1lbnQgbWF0Y2hlcykgaXMgbm90IGVtcHR5XG5cdFx0XHQvLyAoYW5kIHRoZXJlZm9yZSBoYXMgYW4gZWxlbWVudCBhcHBlYXJzIGF0IHRoaXNbIDAgXSkgYW5kIHRoZVxuXHRcdFx0Ly8gYHZhbHVlYCBwYXJhbWV0ZXIgd2FzIG5vdCB1bmRlZmluZWQuIEFuIGVtcHR5IGpRdWVyeSBvYmplY3Rcblx0XHRcdC8vIHdpbGwgcmVzdWx0IGluIGB1bmRlZmluZWRgIGZvciBlbGVtID0gdGhpc1sgMCBdIHdoaWNoIHdpbGxcblx0XHRcdC8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0IHRvIHJlYWQgYSBkYXRhIGNhY2hlIGlzIG1hZGUuXG5cdFx0XHRpZiAoIGVsZW0gJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlXG5cdFx0XHRcdC8vIFRoZSBrZXkgd2lsbCBhbHdheXMgYmUgY2FtZWxDYXNlZCBpbiBEYXRhXG5cdFx0XHRcdGRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0sIGtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gXCJkaXNjb3ZlclwiIHRoZSBkYXRhIGluXG5cdFx0XHRcdC8vIEhUTUw1IGN1c3RvbSBkYXRhLSogYXR0cnNcblx0XHRcdFx0ZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBXZSB0cmllZCByZWFsbHkgaGFyZCwgYnV0IHRoZSBkYXRhIGRvZXNuJ3QgZXhpc3QuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IHRoZSBkYXRhLi4uXG5cdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgY2FtZWxDYXNlZCBrZXlcblx0XHRcdFx0ZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXksIHZhbHVlICk7XG5cdFx0XHR9ICk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGRhdGFVc2VyLnJlbW92ZSggdGhpcywga2V5ICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHF1ZXVlO1xuXG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0dHlwZSA9ICggdHlwZSB8fCBcImZ4XCIgKSArIFwicXVldWVcIjtcblx0XHRcdHF1ZXVlID0gZGF0YVByaXYuZ2V0KCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXBcblx0XHRcdGlmICggZGF0YSApIHtcblx0XHRcdFx0aWYgKCAhcXVldWUgfHwgQXJyYXkuaXNBcnJheSggZGF0YSApICkge1xuXHRcdFx0XHRcdHF1ZXVlID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KCBkYXRhICkgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBkYXRhICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBxdWV1ZSB8fCBbXTtcblx0XHR9XG5cdH0sXG5cblx0ZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksXG5cdFx0XHRzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCxcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKSxcblx0XHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksXG5cdFx0XHRuZXh0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCBlbGVtLCB0eXBlICk7XG5cdFx0XHR9O1xuXG5cdFx0Ly8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbFxuXHRcdGlmICggZm4gPT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0c3RhcnRMZW5ndGgtLTtcblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXG5cdFx0XHQvLyBBZGQgYSBwcm9ncmVzcyBzZW50aW5lbCB0byBwcmV2ZW50IHRoZSBmeCBxdWV1ZSBmcm9tIGJlaW5nXG5cdFx0XHQvLyBhdXRvbWF0aWNhbGx5IGRlcXVldWVkXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiApIHtcblx0XHRcdFx0cXVldWUudW5zaGlmdCggXCJpbnByb2dyZXNzXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2xlYXIgdXAgdGhlIGxhc3QgcXVldWUgc3RvcCBmdW5jdGlvblxuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApO1xuXHRcdH1cblxuXHRcdGlmICggIXN0YXJ0TGVuZ3RoICYmIGhvb2tzICkge1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZVxuXHRfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dmFyIGtleSA9IHR5cGUgKyBcInF1ZXVlSG9va3NcIjtcblx0XHRyZXR1cm4gZGF0YVByaXYuZ2V0KCBlbGVtLCBrZXkgKSB8fCBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIGtleSwge1xuXHRcdFx0ZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLmFkZCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgWyB0eXBlICsgXCJxdWV1ZVwiLCBrZXkgXSApO1xuXHRcdFx0fSApXG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0cXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBzZXR0ZXIgPSAyO1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGRhdGEgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IFwiZnhcIjtcblx0XHRcdHNldHRlci0tO1xuXHRcdH1cblxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRlciApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbIDAgXSwgdHlwZSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcyA6XG5cdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTtcblxuXHRcdFx0XHQvLyBFbnN1cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZVxuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiAmJiBxdWV1ZVsgMCBdICE9PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdH0sXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHR9ICk7XG5cdH0sXG5cdGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0fSxcblxuXHQvLyBHZXQgYSBwcm9taXNlIHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlXG5cdC8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBkZWZhdWx0KVxuXHRwcm9taXNlOiBmdW5jdGlvbiggdHlwZSwgb2JqICkge1xuXHRcdHZhciB0bXAsXG5cdFx0XHRjb3VudCA9IDEsXG5cdFx0XHRkZWZlciA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0ZWxlbWVudHMgPSB0aGlzLFxuXHRcdFx0aSA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0cmVzb2x2ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICEoIC0tY291bnQgKSApIHtcblx0XHRcdFx0XHRkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxlbWVudHMgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG9iaiA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRtcCA9IGRhdGFQcml2LmdldCggZWxlbWVudHNbIGkgXSwgdHlwZSArIFwicXVldWVIb29rc1wiICk7XG5cdFx0XHRpZiAoIHRtcCAmJiB0bXAuZW1wdHkgKSB7XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHRcdHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmVzb2x2ZSgpO1xuXHRcdHJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTtcblx0fVxufSApO1xudmFyIHBudW0gPSAoIC9bKy1dPyg/OlxcZCpcXC58KVxcZCsoPzpbZUVdWystXT9cXGQrfCkvICkuc291cmNlO1xuXG52YXIgcmNzc051bSA9IG5ldyBSZWdFeHAoIFwiXig/OihbKy1dKT18KShcIiArIHBudW0gKyBcIikoW2EteiVdKikkXCIsIFwiaVwiICk7XG5cblxudmFyIGNzc0V4cGFuZCA9IFsgXCJUb3BcIiwgXCJSaWdodFwiLCBcIkJvdHRvbVwiLCBcIkxlZnRcIiBdO1xuXG52YXIgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuXHR2YXIgaXNBdHRhY2hlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cdFx0fSxcblx0XHRjb21wb3NlZCA9IHsgY29tcG9zZWQ6IHRydWUgfTtcblxuXHQvLyBTdXBwb3J0OiBJRSA5IC0gMTErLCBFZGdlIDEyIC0gMTgrLCBpT1MgMTAuMCAtIDEwLjIgb25seVxuXHQvLyBDaGVjayBhdHRhY2htZW50IGFjcm9zcyBzaGFkb3cgRE9NIGJvdW5kYXJpZXMgd2hlbiBwb3NzaWJsZSAoZ2gtMzUwNClcblx0Ly8gU3VwcG9ydDogaU9TIDEwLjAtMTAuMiBvbmx5XG5cdC8vIEVhcmx5IGlPUyAxMCB2ZXJzaW9ucyBzdXBwb3J0IGBhdHRhY2hTaGFkb3dgIGJ1dCBub3QgYGdldFJvb3ROb2RlYCxcblx0Ly8gbGVhZGluZyB0byBlcnJvcnMuIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGBnZXRSb290Tm9kZWAuXG5cdGlmICggZG9jdW1lbnRFbGVtZW50LmdldFJvb3ROb2RlICkge1xuXHRcdGlzQXR0YWNoZWQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApIHx8XG5cdFx0XHRcdGVsZW0uZ2V0Um9vdE5vZGUoIGNvbXBvc2VkICkgPT09IGVsZW0ub3duZXJEb2N1bWVudDtcblx0XHR9O1xuXHR9XG52YXIgaXNIaWRkZW5XaXRoaW5UcmVlID0gZnVuY3Rpb24oIGVsZW0sIGVsICkge1xuXG5cdFx0Ly8gaXNIaWRkZW5XaXRoaW5UcmVlIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247XG5cdFx0Ly8gaW4gdGhhdCBjYXNlLCBlbGVtZW50IHdpbGwgYmUgc2Vjb25kIGFyZ3VtZW50XG5cdFx0ZWxlbSA9IGVsIHx8IGVsZW07XG5cblx0XHQvLyBJbmxpbmUgc3R5bGUgdHJ1bXBzIGFsbFxuXHRcdHJldHVybiBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiIHx8XG5cdFx0XHRlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwiXCIgJiZcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlLCBjaGVjayBjb21wdXRlZCBzdHlsZVxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTQzIC0gNDVcblx0XHRcdC8vIERpc2Nvbm5lY3RlZCBlbGVtZW50cyBjYW4gaGF2ZSBjb21wdXRlZCBkaXNwbGF5OiBub25lLCBzbyBmaXJzdCBjb25maXJtIHRoYXQgZWxlbSBpc1xuXHRcdFx0Ly8gaW4gdGhlIGRvY3VtZW50LlxuXHRcdFx0aXNBdHRhY2hlZCggZWxlbSApICYmXG5cblx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgPT09IFwibm9uZVwiO1xuXHR9O1xuXG52YXIgc3dhcCA9IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjaywgYXJncyApIHtcblx0dmFyIHJldCwgbmFtZSxcblx0XHRvbGQgPSB7fTtcblxuXHQvLyBSZW1lbWJlciB0aGUgb2xkIHZhbHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdG9sZFsgbmFtZSBdID0gZWxlbS5zdHlsZVsgbmFtZSBdO1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTtcblx0fVxuXG5cdHJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBhcmdzIHx8IFtdICk7XG5cblx0Ly8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTtcblx0fVxuXG5cdHJldHVybiByZXQ7XG59O1xuXG5cblxuXG5mdW5jdGlvbiBhZGp1c3RDU1MoIGVsZW0sIHByb3AsIHZhbHVlUGFydHMsIHR3ZWVuICkge1xuXHR2YXIgYWRqdXN0ZWQsIHNjYWxlLFxuXHRcdG1heEl0ZXJhdGlvbnMgPSAyMCxcblx0XHRjdXJyZW50VmFsdWUgPSB0d2VlbiA/XG5cdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuLmN1cigpO1xuXHRcdFx0fSA6XG5cdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AsIFwiXCIgKTtcblx0XHRcdH0sXG5cdFx0aW5pdGlhbCA9IGN1cnJlbnRWYWx1ZSgpLFxuXHRcdHVuaXQgPSB2YWx1ZVBhcnRzICYmIHZhbHVlUGFydHNbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKSxcblxuXHRcdC8vIFN0YXJ0aW5nIHZhbHVlIGNvbXB1dGF0aW9uIGlzIHJlcXVpcmVkIGZvciBwb3RlbnRpYWwgdW5pdCBtaXNtYXRjaGVzXG5cdFx0aW5pdGlhbEluVW5pdCA9IGVsZW0ubm9kZVR5cGUgJiZcblx0XHRcdCggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdIHx8IHVuaXQgIT09IFwicHhcIiAmJiAraW5pdGlhbCApICYmXG5cdFx0XHRyY3NzTnVtLmV4ZWMoIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AgKSApO1xuXG5cdGlmICggaW5pdGlhbEluVW5pdCAmJiBpbml0aWFsSW5Vbml0WyAzIF0gIT09IHVuaXQgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NTRcblx0XHQvLyBIYWx2ZSB0aGUgaXRlcmF0aW9uIHRhcmdldCB2YWx1ZSB0byBwcmV2ZW50IGludGVyZmVyZW5jZSBmcm9tIENTUyB1cHBlciBib3VuZHMgKGdoLTIxNDQpXG5cdFx0aW5pdGlhbCA9IGluaXRpYWwgLyAyO1xuXG5cdFx0Ly8gVHJ1c3QgdW5pdHMgcmVwb3J0ZWQgYnkgalF1ZXJ5LmNzc1xuXHRcdHVuaXQgPSB1bml0IHx8IGluaXRpYWxJblVuaXRbIDMgXTtcblxuXHRcdC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBvaW50XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsIHx8IDE7XG5cblx0XHR3aGlsZSAoIG1heEl0ZXJhdGlvbnMtLSApIHtcblxuXHRcdFx0Ly8gRXZhbHVhdGUgYW5kIHVwZGF0ZSBvdXIgYmVzdCBndWVzcyAoZG91YmxpbmcgZ3Vlc3NlcyB0aGF0IHplcm8gb3V0KS5cblx0XHRcdC8vIEZpbmlzaCBpZiB0aGUgc2NhbGUgZXF1YWxzIG9yIGNyb3NzZXMgMSAobWFraW5nIHRoZSBvbGQqbmV3IHByb2R1Y3Qgbm9uLXBvc2l0aXZlKS5cblx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVuaXQgKTtcblx0XHRcdGlmICggKCAxIC0gc2NhbGUgKSAqICggMSAtICggc2NhbGUgPSBjdXJyZW50VmFsdWUoKSAvIGluaXRpYWwgfHwgMC41ICkgKSA8PSAwICkge1xuXHRcdFx0XHRtYXhJdGVyYXRpb25zID0gMDtcblx0XHRcdH1cblx0XHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0IC8gc2NhbGU7XG5cblx0XHR9XG5cblx0XHRpbml0aWFsSW5Vbml0ID0gaW5pdGlhbEluVW5pdCAqIDI7XG5cdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgdHdlZW4gcHJvcGVydGllcyBsYXRlciBvblxuXHRcdHZhbHVlUGFydHMgPSB2YWx1ZVBhcnRzIHx8IFtdO1xuXHR9XG5cblx0aWYgKCB2YWx1ZVBhcnRzICkge1xuXHRcdGluaXRpYWxJblVuaXQgPSAraW5pdGlhbEluVW5pdCB8fCAraW5pdGlhbCB8fCAwO1xuXG5cdFx0Ly8gQXBwbHkgcmVsYXRpdmUgb2Zmc2V0ICgrPS8tPSkgaWYgc3BlY2lmaWVkXG5cdFx0YWRqdXN0ZWQgPSB2YWx1ZVBhcnRzWyAxIF0gP1xuXHRcdFx0aW5pdGlhbEluVW5pdCArICggdmFsdWVQYXJ0c1sgMSBdICsgMSApICogdmFsdWVQYXJ0c1sgMiBdIDpcblx0XHRcdCt2YWx1ZVBhcnRzWyAyIF07XG5cdFx0aWYgKCB0d2VlbiApIHtcblx0XHRcdHR3ZWVuLnVuaXQgPSB1bml0O1xuXHRcdFx0dHdlZW4uc3RhcnQgPSBpbml0aWFsSW5Vbml0O1xuXHRcdFx0dHdlZW4uZW5kID0gYWRqdXN0ZWQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZGp1c3RlZDtcbn1cblxuXG52YXIgZGVmYXVsdERpc3BsYXlNYXAgPSB7fTtcblxuZnVuY3Rpb24gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKSB7XG5cdHZhciB0ZW1wLFxuXHRcdGRvYyA9IGVsZW0ub3duZXJEb2N1bWVudCxcblx0XHRub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUsXG5cdFx0ZGlzcGxheSA9IGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdO1xuXG5cdGlmICggZGlzcGxheSApIHtcblx0XHRyZXR1cm4gZGlzcGxheTtcblx0fVxuXG5cdHRlbXAgPSBkb2MuYm9keS5hcHBlbmRDaGlsZCggZG9jLmNyZWF0ZUVsZW1lbnQoIG5vZGVOYW1lICkgKTtcblx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIHRlbXAsIFwiZGlzcGxheVwiICk7XG5cblx0dGVtcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0ZW1wICk7XG5cblx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRkaXNwbGF5ID0gXCJibG9ja1wiO1xuXHR9XG5cdGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdID0gZGlzcGxheTtcblxuXHRyZXR1cm4gZGlzcGxheTtcbn1cblxuZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBzaG93ICkge1xuXHR2YXIgZGlzcGxheSwgZWxlbSxcblx0XHR2YWx1ZXMgPSBbXSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuXG5cdC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBmb3IgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGNoYW5nZVxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTtcblx0XHRpZiAoICFlbGVtLnN0eWxlICkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0ZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTtcblx0XHRpZiAoIHNob3cgKSB7XG5cblx0XHRcdC8vIFNpbmNlIHdlIGZvcmNlIHZpc2liaWxpdHkgdXBvbiBjYXNjYWRlLWhpZGRlbiBlbGVtZW50cywgYW4gaW1tZWRpYXRlIChhbmQgc2xvdylcblx0XHRcdC8vIGNoZWNrIGlzIHJlcXVpcmVkIGluIHRoaXMgZmlyc3QgbG9vcCB1bmxlc3Mgd2UgaGF2ZSBhIG5vbmVtcHR5IGRpc3BsYXkgdmFsdWUgKGVpdGhlclxuXHRcdFx0Ly8gaW5saW5lIG9yIGFib3V0LXRvLWJlLXJlc3RvcmVkKVxuXHRcdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApIHx8IG51bGw7XG5cdFx0XHRcdGlmICggIXZhbHVlc1sgaW5kZXggXSApIHtcblx0XHRcdFx0XHRlbGVtLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCBkaXNwbGF5ICE9PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gXCJub25lXCI7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBvdmVyd3JpdGluZ1xuXHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiZGlzcGxheVwiLCBkaXNwbGF5ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gU2V0IHRoZSBkaXNwbGF5IG9mIHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wIHRvIGF2b2lkIGNvbnN0YW50IHJlZmxvd1xuXHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGlmICggdmFsdWVzWyBpbmRleCBdICE9IG51bGwgKSB7XG5cdFx0XHRlbGVtZW50c1sgaW5kZXggXS5zdHlsZS5kaXNwbGF5ID0gdmFsdWVzWyBpbmRleCBdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50cztcbn1cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRzaG93OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTtcblx0fSxcblx0aGlkZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzICk7XG5cdH0sXG5cdHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkge1xuXHRcdGlmICggdHlwZW9mIHN0YXRlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGlzSGlkZGVuV2l0aGluVHJlZSggdGhpcyApICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5zaG93KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5oaWRlKCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG52YXIgcmNoZWNrYWJsZVR5cGUgPSAoIC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pICk7XG5cbnZhciBydGFnTmFtZSA9ICggLzwoW2Etel1bXlxcL1xcMD5cXHgyMFxcdFxcclxcblxcZl0qKS9pICk7XG5cbnZhciByc2NyaXB0VHlwZSA9ICggL14kfF5tb2R1bGUkfFxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSApO1xuXG5cblxuLy8gV2UgaGF2ZSB0byBjbG9zZSB0aGVzZSB0YWdzIHRvIHN1cHBvcnQgWEhUTUwgKCMxMzIwMClcbnZhciB3cmFwTWFwID0ge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdG9wdGlvbjogWyAxLCBcIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz5cIiwgXCI8L3NlbGVjdD5cIiBdLFxuXG5cdC8vIFhIVE1MIHBhcnNlcnMgZG8gbm90IG1hZ2ljYWxseSBpbnNlcnQgZWxlbWVudHMgaW4gdGhlXG5cdC8vIHNhbWUgd2F5IHRoYXQgdGFnIHNvdXAgcGFyc2VycyBkby4gU28gd2UgY2Fubm90IHNob3J0ZW5cblx0Ly8gdGhpcyBieSBvbWl0dGluZyA8dGJvZHk+IG9yIG90aGVyIHJlcXVpcmVkIGVsZW1lbnRzLlxuXHR0aGVhZDogWyAxLCBcIjx0YWJsZT5cIiwgXCI8L3RhYmxlPlwiIF0sXG5cdGNvbDogWyAyLCBcIjx0YWJsZT48Y29sZ3JvdXA+XCIsIFwiPC9jb2xncm91cD48L3RhYmxlPlwiIF0sXG5cdHRyOiBbIDIsIFwiPHRhYmxlPjx0Ym9keT5cIiwgXCI8L3Rib2R5PjwvdGFibGU+XCIgXSxcblx0dGQ6IFsgMywgXCI8dGFibGU+PHRib2R5Pjx0cj5cIiwgXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXG5cdF9kZWZhdWx0OiBbIDAsIFwiXCIsIFwiXCIgXVxufTtcblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbndyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9wdGlvbjtcblxud3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3VwID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDtcbndyYXBNYXAudGggPSB3cmFwTWFwLnRkO1xuXG5cbmZ1bmN0aW9uIGdldEFsbCggY29udGV4dCwgdGFnICkge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0Ly8gVXNlIHR5cGVvZiB0byBhdm9pZCB6ZXJvLWFyZ3VtZW50IG1ldGhvZCBpbnZvY2F0aW9uIG9uIGhvc3Qgb2JqZWN0cyAoIzE1MTUxKVxuXHR2YXIgcmV0O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0cmV0ID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIGlmICggdHlwZW9mIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCBcIipcIiApO1xuXG5cdH0gZWxzZSB7XG5cdFx0cmV0ID0gW107XG5cdH1cblxuXHRpZiAoIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBub2RlTmFtZSggY29udGV4dCwgdGFnICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5tZXJnZSggWyBjb250ZXh0IF0sIHJldCApO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn1cblxuXG4vLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFscmVhZHkgYmVlbiBldmFsdWF0ZWRcbmZ1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZFbGVtZW50cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGRhdGFQcml2LnNldChcblx0XHRcdGVsZW1zWyBpIF0sXG5cdFx0XHRcImdsb2JhbEV2YWxcIixcblx0XHRcdCFyZWZFbGVtZW50cyB8fCBkYXRhUHJpdi5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sIFwiZ2xvYmFsRXZhbFwiIClcblx0XHQpO1xuXHR9XG59XG5cblxudmFyIHJodG1sID0gLzx8JiM/XFx3KzsvO1xuXG5mdW5jdGlvbiBidWlsZEZyYWdtZW50KCBlbGVtcywgY29udGV4dCwgc2NyaXB0cywgc2VsZWN0aW9uLCBpZ25vcmVkICkge1xuXHR2YXIgZWxlbSwgdG1wLCB0YWcsIHdyYXAsIGF0dGFjaGVkLCBqLFxuXHRcdGZyYWdtZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0bm9kZXMgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsID0gZWxlbXMubGVuZ3RoO1xuXG5cdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRlbGVtID0gZWxlbXNbIGkgXTtcblxuXHRcdGlmICggZWxlbSB8fCBlbGVtID09PSAwICkge1xuXG5cdFx0XHQvLyBBZGQgbm9kZXMgZGlyZWN0bHlcblx0XHRcdGlmICggdG9UeXBlKCBlbGVtICkgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBub2RlcywgZWxlbS5ub2RlVHlwZSA/IFsgZWxlbSBdIDogZWxlbSApO1xuXG5cdFx0XHQvLyBDb252ZXJ0IG5vbi1odG1sIGludG8gYSB0ZXh0IG5vZGVcblx0XHRcdH0gZWxzZSBpZiAoICFyaHRtbC50ZXN0KCBlbGVtICkgKSB7XG5cdFx0XHRcdG5vZGVzLnB1c2goIGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0gKSApO1xuXG5cdFx0XHQvLyBDb252ZXJ0IGh0bWwgaW50byBET00gbm9kZXNcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRtcCA9IHRtcCB8fCBmcmFnbWVudC5hcHBlbmRDaGlsZCggY29udGV4dC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKTtcblxuXHRcdFx0XHQvLyBEZXNlcmlhbGl6ZSBhIHN0YW5kYXJkIHJlcHJlc2VudGF0aW9uXG5cdFx0XHRcdHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHR3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDtcblx0XHRcdFx0dG1wLmlubmVySFRNTCA9IHdyYXBbIDEgXSArIGpRdWVyeS5odG1sUHJlZmlsdGVyKCBlbGVtICkgKyB3cmFwWyAyIF07XG5cblx0XHRcdFx0Ly8gRGVzY2VuZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50XG5cdFx0XHRcdGogPSB3cmFwWyAwIF07XG5cdFx0XHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0XHRcdHRtcCA9IHRtcC5sYXN0Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCB0bXAuY2hpbGROb2RlcyApO1xuXG5cdFx0XHRcdC8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVyXG5cdFx0XHRcdHRtcCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRcdFx0Ly8gRW5zdXJlIHRoZSBjcmVhdGVkIG5vZGVzIGFyZSBvcnBoYW5lZCAoIzEyMzkyKVxuXHRcdFx0XHR0bXAudGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJlbW92ZSB3cmFwcGVyIGZyb20gZnJhZ21lbnRcblx0ZnJhZ21lbnQudGV4dENvbnRlbnQgPSBcIlwiO1xuXG5cdGkgPSAwO1xuXHR3aGlsZSAoICggZWxlbSA9IG5vZGVzWyBpKysgXSApICkge1xuXG5cdFx0Ly8gU2tpcCBlbGVtZW50cyBhbHJlYWR5IGluIHRoZSBjb250ZXh0IGNvbGxlY3Rpb24gKHRyYWMtNDA4Nylcblx0XHRpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSggZWxlbSwgc2VsZWN0aW9uICkgPiAtMSApIHtcblx0XHRcdGlmICggaWdub3JlZCApIHtcblx0XHRcdFx0aWdub3JlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRhdHRhY2hlZCA9IGlzQXR0YWNoZWQoIGVsZW0gKTtcblxuXHRcdC8vIEFwcGVuZCB0byBmcmFnbWVudFxuXHRcdHRtcCA9IGdldEFsbCggZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgXCJzY3JpcHRcIiApO1xuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGlmICggYXR0YWNoZWQgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCB0bXAgKTtcblx0XHR9XG5cblx0XHQvLyBDYXB0dXJlIGV4ZWN1dGFibGVzXG5cdFx0aWYgKCBzY3JpcHRzICkge1xuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRtcFsgaisrIF0gKSApIHtcblx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgXCJcIiApICkge1xuXHRcdFx0XHRcdHNjcmlwdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZyYWdtZW50O1xufVxuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICksXG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5XG5cdC8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5MDEpXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwicmFkaW9cIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcInRcIiApO1xuXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHlcblx0Ly8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzXG5cdHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcbn0gKSgpO1xuXG5cbnZhclxuXHRya2V5RXZlbnQgPSAvXmtleS8sXG5cdHJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLFxuXHRydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlxcLiguKyl8KS87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMStcbi8vIGZvY3VzKCkgYW5kIGJsdXIoKSBhcmUgYXN5bmNocm9ub3VzLCBleGNlcHQgd2hlbiB0aGV5IGFyZSBuby1vcC5cbi8vIFNvIGV4cGVjdCBmb2N1cyB0byBiZSBzeW5jaHJvbm91cyB3aGVuIHRoZSBlbGVtZW50IGlzIGFscmVhZHkgYWN0aXZlLFxuLy8gYW5kIGJsdXIgdG8gYmUgc3luY2hyb25vdXMgd2hlbiB0aGUgZWxlbWVudCBpcyBub3QgYWxyZWFkeSBhY3RpdmUuXG4vLyAoZm9jdXMgYW5kIGJsdXIgYXJlIGFsd2F5cyBzeW5jaHJvbm91cyBpbiBvdGhlciBzdXBwb3J0ZWQgYnJvd3NlcnMsXG4vLyB0aGlzIGp1c3QgZGVmaW5lcyB3aGVuIHdlIGNhbiBjb3VudCBvbiBpdCkuXG5mdW5jdGlvbiBleHBlY3RTeW5jKCBlbGVtLCB0eXBlICkge1xuXHRyZXR1cm4gKCBlbGVtID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICkgPT09ICggdHlwZSA9PT0gXCJmb2N1c1wiICk7XG59XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG4vLyBBY2Nlc3NpbmcgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBjYW4gdGhyb3cgdW5leHBlY3RlZGx5XG4vLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzOTNcbmZ1bmN0aW9uIHNhZmVBY3RpdmVFbGVtZW50KCkge1xuXHR0cnkge1xuXHRcdHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXHR9IGNhdGNoICggZXJyICkgeyB9XG59XG5cbmZ1bmN0aW9uIG9uKCBlbGVtLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCBvbmUgKSB7XG5cdHZhciBvcmlnRm4sIHR5cGU7XG5cblx0Ly8gVHlwZXMgY2FuIGJlIGEgbWFwIG9mIHR5cGVzL2hhbmRsZXJzXG5cdGlmICggdHlwZW9mIHR5cGVzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gKCB0eXBlcy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhIClcblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1PYmplY3QsIGRhdGEgKVxuXHRcdFx0ZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0Zm9yICggdHlwZSBpbiB0eXBlcyApIHtcblx0XHRcdG9uKCBlbGVtLCB0eXBlLCBzZWxlY3RvciwgZGF0YSwgdHlwZXNbIHR5cGUgXSwgb25lICk7XG5cdFx0fVxuXHRcdHJldHVybiBlbGVtO1xuXHR9XG5cblx0aWYgKCBkYXRhID09IG51bGwgJiYgZm4gPT0gbnVsbCApIHtcblxuXHRcdC8vICggdHlwZXMsIGZuIClcblx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdGRhdGEgPSBzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0fSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHtcblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcywgc2VsZWN0b3IsIGZuIClcblx0XHRcdGZuID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gKCB0eXBlcywgZGF0YSwgZm4gKVxuXHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdGZuID0gcmV0dXJuRmFsc2U7XG5cdH0gZWxzZSBpZiAoICFmbiApIHtcblx0XHRyZXR1cm4gZWxlbTtcblx0fVxuXG5cdGlmICggb25lID09PSAxICkge1xuXHRcdG9yaWdGbiA9IGZuO1xuXHRcdGZuID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0XHQvLyBDYW4gdXNlIGFuIGVtcHR5IHNldCwgc2luY2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm9cblx0XHRcdGpRdWVyeSgpLm9mZiggZXZlbnQgKTtcblx0XHRcdHJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdH07XG5cblx0XHQvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4gcmVtb3ZlIHVzaW5nIG9yaWdGblxuXHRcdGZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApO1xuXHR9XG5cdHJldHVybiBlbGVtLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIHR5cGVzLCBmbiwgZGF0YSwgc2VsZWN0b3IgKTtcblx0fSApO1xufVxuXG4vKlxuICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLlxuICogUHJvcHMgdG8gRGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5IGZvciBtYW55IG9mIHRoZSBpZGVhcy5cbiAqL1xualF1ZXJ5LmV2ZW50ID0ge1xuXG5cdGdsb2JhbDoge30sXG5cblx0YWRkOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG9yICkge1xuXG5cdFx0dmFyIGhhbmRsZU9iakluLCBldmVudEhhbmRsZSwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFQcml2LmdldCggZWxlbSApO1xuXG5cdFx0Ly8gRG9uJ3QgYXR0YWNoIGV2ZW50cyB0byBub0RhdGEgb3IgdGV4dC9jb21tZW50IG5vZGVzIChidXQgYWxsb3cgcGxhaW4gb2JqZWN0cylcblx0XHRpZiAoICFlbGVtRGF0YSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBkYXRhIGluIGxpZXUgb2YgdGhlIGhhbmRsZXJcblx0XHRpZiAoIGhhbmRsZXIuaGFuZGxlciApIHtcblx0XHRcdGhhbmRsZU9iakluID0gaGFuZGxlcjtcblx0XHRcdGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyO1xuXHRcdFx0c2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3Rvcjtcblx0XHR9XG5cblx0XHQvLyBFbnN1cmUgdGhhdCBpbnZhbGlkIHNlbGVjdG9ycyB0aHJvdyBleGNlcHRpb25zIGF0IGF0dGFjaCB0aW1lXG5cdFx0Ly8gRXZhbHVhdGUgYWdhaW5zdCBkb2N1bWVudEVsZW1lbnQgaW4gY2FzZSBlbGVtIGlzIGEgbm9uLWVsZW1lbnQgbm9kZSAoZS5nLiwgZG9jdW1lbnQpXG5cdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZG9jdW1lbnRFbGVtZW50LCBzZWxlY3RvciApO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBoYW5kbGVyIGhhcyBhIHVuaXF1ZSBJRCwgdXNlZCB0byBmaW5kL3JlbW92ZSBpdCBsYXRlclxuXHRcdGlmICggIWhhbmRsZXIuZ3VpZCApIHtcblx0XHRcdGhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7XG5cdFx0fVxuXG5cdFx0Ly8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdFxuXHRcdGlmICggISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7XG5cdFx0XHRldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSB7fTtcblx0XHR9XG5cdFx0aWYgKCAhKCBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSApICkge1xuXHRcdFx0ZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHtcblxuXHRcdFx0XHQvLyBEaXNjYXJkIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSBqUXVlcnkuZXZlbnQudHJpZ2dlcigpIGFuZFxuXHRcdFx0XHQvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkXG5cdFx0XHRcdHJldHVybiB0eXBlb2YgalF1ZXJ5ICE9PSBcInVuZGVmaW5lZFwiICYmIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZVxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07XG5cdFx0XHRuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBUaGVyZSAqbXVzdCogYmUgYSB0eXBlLCBubyBhdHRhY2hpbmcgbmFtZXNwYWNlLW9ubHkgaGFuZGxlcnNcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBjaGFuZ2VkIHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBJZiBzZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5cGVcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblxuXHRcdFx0Ly8gVXBkYXRlIHNwZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIGhhbmRsZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzXG5cdFx0XHRoYW5kbGVPYmogPSBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdG9yaWdUeXBlOiBvcmlnVHlwZSxcblx0XHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdFx0aGFuZGxlcjogaGFuZGxlcixcblx0XHRcdFx0Z3VpZDogaGFuZGxlci5ndWlkLFxuXHRcdFx0XHRzZWxlY3Rvcjogc2VsZWN0b3IsXG5cdFx0XHRcdG5lZWRzQ29udGV4dDogc2VsZWN0b3IgJiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICksXG5cdFx0XHRcdG5hbWVzcGFjZTogbmFtZXNwYWNlcy5qb2luKCBcIi5cIiApXG5cdFx0XHR9LCBoYW5kbGVPYmpJbiApO1xuXG5cdFx0XHQvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdFxuXHRcdFx0aWYgKCAhKCBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdICkgKSB7XG5cdFx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTtcblx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7XG5cblx0XHRcdFx0Ly8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lciBpZiB0aGUgc3BlY2lhbCBldmVudHMgaGFuZGxlciByZXR1cm5zIGZhbHNlXG5cdFx0XHRcdGlmICggIXNwZWNpYWwuc2V0dXAgfHxcblx0XHRcdFx0XHRzcGVjaWFsLnNldHVwLmNhbGwoIGVsZW0sIGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0aWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggc3BlY2lhbC5hZGQgKSB7XG5cdFx0XHRcdHNwZWNpYWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApO1xuXG5cdFx0XHRcdGlmICggIWhhbmRsZU9iai5oYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QsIGRlbGVnYXRlcyBpbiBmcm9udFxuXHRcdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdFx0aGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9iaiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb25cblx0XHRcdGpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7XG5cdFx0fVxuXG5cdH0sXG5cblx0Ly8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVudHMgZnJvbSBhbiBlbGVtZW50XG5cdHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7XG5cblx0XHR2YXIgaiwgb3JpZ0NvdW50LCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YVByaXYuaGFzRGF0YSggZWxlbSApICYmIGRhdGFQcml2LmdldCggZWxlbSApO1xuXG5cdFx0aWYgKCAhZWxlbURhdGEgfHwgISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gT25jZSBmb3IgZWFjaCB0eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkgYmUgb21pdHRlZFxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07XG5cdFx0XHRuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBVbmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVsZW1lbnRcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVyLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gfHwgW107XG5cdFx0XHR0bXAgPSB0bXBbIDIgXSAmJlxuXHRcdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKCBcIlxcXFwuKD86LipcXFxcLnwpXCIgKSArIFwiKFxcXFwufCQpXCIgKTtcblxuXHRcdFx0Ly8gUmVtb3ZlIG1hdGNoaW5nIGV2ZW50c1xuXHRcdFx0b3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0XHRoYW5kbGVPYmogPSBoYW5kbGVyc1sgaiBdO1xuXG5cdFx0XHRcdGlmICggKCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0gaGFuZGxlT2JqLm9yaWdUeXBlICkgJiZcblx0XHRcdFx0XHQoICFoYW5kbGVyIHx8IGhhbmRsZXIuZ3VpZCA9PT0gaGFuZGxlT2JqLmd1aWQgKSAmJlxuXHRcdFx0XHRcdCggIXRtcCB8fCB0bXAudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgJiZcblx0XHRcdFx0XHQoICFzZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gaGFuZGxlT2JqLnNlbGVjdG9yIHx8XG5cdFx0XHRcdFx0XHRzZWxlY3RvciA9PT0gXCIqKlwiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkge1xuXHRcdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaiwgMSApO1xuXG5cdFx0XHRcdFx0aWYgKCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggc3BlY2lhbC5yZW1vdmUgKSB7XG5cdFx0XHRcdFx0XHRzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBleGlzdFxuXHRcdFx0Ly8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJzaW9uIGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpXG5cdFx0XHRpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC50ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhhbmRsZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGVsZXRlIGV2ZW50c1sgdHlwZSBdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSBkYXRhIGFuZCB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkXG5cdFx0aWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7XG5cdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiaGFuZGxlIGV2ZW50c1wiICk7XG5cdFx0fVxuXHR9LFxuXG5cdGRpc3BhdGNoOiBmdW5jdGlvbiggbmF0aXZlRXZlbnQgKSB7XG5cblx0XHQvLyBNYWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2ZW50IGZyb20gdGhlIG5hdGl2ZSBldmVudCBvYmplY3Rcblx0XHR2YXIgZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBuYXRpdmVFdmVudCApO1xuXG5cdFx0dmFyIGksIGosIHJldCwgbWF0Y2hlZCwgaGFuZGxlT2JqLCBoYW5kbGVyUXVldWUsXG5cdFx0XHRhcmdzID0gbmV3IEFycmF5KCBhcmd1bWVudHMubGVuZ3RoICksXG5cdFx0XHRoYW5kbGVycyA9ICggZGF0YVByaXYuZ2V0KCB0aGlzLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdIHx8IFtdLFxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwge307XG5cblx0XHQvLyBVc2UgdGhlIGZpeC1lZCBqUXVlcnkuRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChyZWFkLW9ubHkpIG5hdGl2ZSBldmVudFxuXHRcdGFyZ3NbIDAgXSA9IGV2ZW50O1xuXG5cdFx0Zm9yICggaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRhcmdzWyBpIF0gPSBhcmd1bWVudHNbIGkgXTtcblx0XHR9XG5cblx0XHRldmVudC5kZWxlZ2F0ZVRhcmdldCA9IHRoaXM7XG5cblx0XHQvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkXG5cdFx0aWYgKCBzcGVjaWFsLnByZURpc3BhdGNoICYmIHNwZWNpYWwucHJlRGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGhhbmRsZXJzXG5cdFx0aGFuZGxlclF1ZXVlID0galF1ZXJ5LmV2ZW50LmhhbmRsZXJzLmNhbGwoIHRoaXMsIGV2ZW50LCBoYW5kbGVycyApO1xuXG5cdFx0Ly8gUnVuIGRlbGVnYXRlcyBmaXJzdDsgdGhleSBtYXkgd2FudCB0byBzdG9wIHByb3BhZ2F0aW9uIGJlbmVhdGggdXNcblx0XHRpID0gMDtcblx0XHR3aGlsZSAoICggbWF0Y2hlZCA9IGhhbmRsZXJRdWV1ZVsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBtYXRjaGVkLmVsZW07XG5cblx0XHRcdGogPSAwO1xuXHRcdFx0d2hpbGUgKCAoIGhhbmRsZU9iaiA9IG1hdGNoZWQuaGFuZGxlcnNbIGorKyBdICkgJiZcblx0XHRcdFx0IWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cblx0XHRcdFx0Ly8gSWYgdGhlIGV2ZW50IGlzIG5hbWVzcGFjZWQsIHRoZW4gZWFjaCBoYW5kbGVyIGlzIG9ubHkgaW52b2tlZCBpZiBpdCBpc1xuXHRcdFx0XHQvLyBzcGVjaWFsbHkgdW5pdmVyc2FsIG9yIGl0cyBuYW1lc3BhY2VzIGFyZSBhIHN1cGVyc2V0IG9mIHRoZSBldmVudCdzLlxuXHRcdFx0XHRpZiAoICFldmVudC5ybmFtZXNwYWNlIHx8IGhhbmRsZU9iai5uYW1lc3BhY2UgPT09IGZhbHNlIHx8XG5cdFx0XHRcdFx0ZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XG5cblx0XHRcdFx0XHRldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7XG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xuXG5cdFx0XHRcdFx0cmV0ID0gKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fFxuXHRcdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZVxuXHRcdGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7XG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0aGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGksIGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsXG5cdFx0XHRoYW5kbGVyUXVldWUgPSBbXSxcblx0XHRcdGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LFxuXHRcdFx0Y3VyID0gZXZlbnQudGFyZ2V0O1xuXG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTlcblx0XHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICh0cmFjLTEzMTgwKVxuXHRcdFx0Y3VyLm5vZGVUeXBlICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MlxuXHRcdFx0Ly8gU3VwcHJlc3Mgc3BlYy12aW9sYXRpbmcgY2xpY2tzIGluZGljYXRpbmcgYSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAodHJhYy0zODYxKVxuXHRcdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnQtdHlwZS1jbGlja1xuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0Ly8gLi4uYnV0IG5vdCBhcnJvdyBrZXkgXCJjbGlja3NcIiBvZiByYWRpbyBpbnB1dHMsIHdoaWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKVxuXHRcdFx0ISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGV2ZW50LmJ1dHRvbiA+PSAxICkgKSB7XG5cblx0XHRcdGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkge1xuXG5cdFx0XHRcdC8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KVxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NClcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkge1xuXHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycyA9IFtdO1xuXHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnMgPSB7fTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkSGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggbWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVyc1xuXHRcdGN1ciA9IHRoaXM7XG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhbmRsZXJRdWV1ZTtcblx0fSxcblxuXHRhZGRQcm9wOiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cblx0XHRcdGdldDogaXNGdW5jdGlvbiggaG9vayApID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBob29rKCB0aGlzLm9yaWdpbmFsRXZlbnQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gOlxuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFtZSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwge1xuXHRcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0b3JpZ2luYWxFdmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7XG5cdH0sXG5cblx0c3BlY2lhbDoge1xuXHRcdGxvYWQ6IHtcblxuXHRcdFx0Ly8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZFxuXHRcdFx0bm9CdWJibGU6IHRydWVcblx0XHR9LFxuXHRcdGNsaWNrOiB7XG5cblx0XHRcdC8vIFV0aWxpemUgbmF0aXZlIGV2ZW50IHRvIGVuc3VyZSBjb3JyZWN0IHN0YXRlIGZvciBjaGVja2FibGUgaW5wdXRzXG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oIGRhdGEgKSB7XG5cblx0XHRcdFx0Ly8gRm9yIG11dHVhbCBjb21wcmVzc2liaWxpdHkgd2l0aCBfZGVmYXVsdCwgcmVwbGFjZSBgdGhpc2AgYWNjZXNzIHdpdGggYSBsb2NhbCB2YXIuXG5cdFx0XHRcdC8vIGB8fCBkYXRhYCBpcyBkZWFkIGNvZGUgbWVhbnQgb25seSB0byBwcmVzZXJ2ZSB0aGUgdmFyaWFibGUgdGhyb3VnaCBtaW5pZmljYXRpb24uXG5cdFx0XHRcdHZhciBlbCA9IHRoaXMgfHwgZGF0YTtcblxuXHRcdFx0XHQvLyBDbGFpbSB0aGUgZmlyc3QgaGFuZGxlclxuXHRcdFx0XHRpZiAoIHJjaGVja2FibGVUeXBlLnRlc3QoIGVsLnR5cGUgKSAmJlxuXHRcdFx0XHRcdGVsLmNsaWNrICYmIG5vZGVOYW1lKCBlbCwgXCJpbnB1dFwiICkgKSB7XG5cblx0XHRcdFx0XHQvLyBkYXRhUHJpdi5zZXQoIGVsLCBcImNsaWNrXCIsIC4uLiApXG5cdFx0XHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIGVsLCBcImNsaWNrXCIsIHJldHVyblRydWUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJldHVybiBmYWxzZSB0byBhbGxvdyBub3JtYWwgcHJvY2Vzc2luZyBpbiB0aGUgY2FsbGVyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbiggZGF0YSApIHtcblxuXHRcdFx0XHQvLyBGb3IgbXV0dWFsIGNvbXByZXNzaWJpbGl0eSB3aXRoIF9kZWZhdWx0LCByZXBsYWNlIGB0aGlzYCBhY2Nlc3Mgd2l0aCBhIGxvY2FsIHZhci5cblx0XHRcdFx0Ly8gYHx8IGRhdGFgIGlzIGRlYWQgY29kZSBtZWFudCBvbmx5IHRvIHByZXNlcnZlIHRoZSB2YXJpYWJsZSB0aHJvdWdoIG1pbmlmaWNhdGlvbi5cblx0XHRcdFx0dmFyIGVsID0gdGhpcyB8fCBkYXRhO1xuXG5cdFx0XHRcdC8vIEZvcmNlIHNldHVwIGJlZm9yZSB0cmlnZ2VyaW5nIGEgY2xpY2tcblx0XHRcdFx0aWYgKCByY2hlY2thYmxlVHlwZS50ZXN0KCBlbC50eXBlICkgJiZcblx0XHRcdFx0XHRlbC5jbGljayAmJiBub2RlTmFtZSggZWwsIFwiaW5wdXRcIiApICkge1xuXG5cdFx0XHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIGVsLCBcImNsaWNrXCIgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJldHVybiBub24tZmFsc2UgdG8gYWxsb3cgbm9ybWFsIGV2ZW50LXBhdGggcHJvcGFnYXRpb25cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBGb3IgY3Jvc3MtYnJvd3NlciBjb25zaXN0ZW5jeSwgc3VwcHJlc3MgbmF0aXZlIC5jbGljaygpIG9uIGxpbmtzXG5cdFx0XHQvLyBBbHNvIHByZXZlbnQgaXQgaWYgd2UncmUgY3VycmVudGx5IGluc2lkZSBhIGxldmVyYWdlZCBuYXRpdmUtZXZlbnQgc3RhY2tcblx0XHRcdF9kZWZhdWx0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG5cdFx0XHRcdHJldHVybiByY2hlY2thYmxlVHlwZS50ZXN0KCB0YXJnZXQudHlwZSApICYmXG5cdFx0XHRcdFx0dGFyZ2V0LmNsaWNrICYmIG5vZGVOYW1lKCB0YXJnZXQsIFwiaW5wdXRcIiApICYmXG5cdFx0XHRcdFx0ZGF0YVByaXYuZ2V0KCB0YXJnZXQsIFwiY2xpY2tcIiApIHx8XG5cdFx0XHRcdFx0bm9kZU5hbWUoIHRhcmdldCwgXCJhXCIgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0YmVmb3JldW5sb2FkOiB7XG5cdFx0XHRwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDIwK1xuXHRcdFx0XHQvLyBGaXJlZm94IGRvZXNuJ3QgYWxlcnQgaWYgdGhlIHJldHVyblZhbHVlIGZpZWxkIGlzIG5vdCBzZXQuXG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRldmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZXZlbnQucmVzdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBFbnN1cmUgdGhlIHByZXNlbmNlIG9mIGFuIGV2ZW50IGxpc3RlbmVyIHRoYXQgaGFuZGxlcyBtYW51YWxseS10cmlnZ2VyZWRcbi8vIHN5bnRoZXRpYyBldmVudHMgYnkgaW50ZXJydXB0aW5nIHByb2dyZXNzIHVudGlsIHJlaW52b2tlZCBpbiByZXNwb25zZSB0b1xuLy8gKm5hdGl2ZSogZXZlbnRzIHRoYXQgaXQgZmlyZXMgZGlyZWN0bHksIGVuc3VyaW5nIHRoYXQgc3RhdGUgY2hhbmdlcyBoYXZlXG4vLyBhbHJlYWR5IG9jY3VycmVkIGJlZm9yZSBvdGhlciBsaXN0ZW5lcnMgYXJlIGludm9rZWQuXG5mdW5jdGlvbiBsZXZlcmFnZU5hdGl2ZSggZWwsIHR5cGUsIGV4cGVjdFN5bmMgKSB7XG5cblx0Ly8gTWlzc2luZyBleHBlY3RTeW5jIGluZGljYXRlcyBhIHRyaWdnZXIgY2FsbCwgd2hpY2ggbXVzdCBmb3JjZSBzZXR1cCB0aHJvdWdoIGpRdWVyeS5ldmVudC5hZGRcblx0aWYgKCAhZXhwZWN0U3luYyApIHtcblx0XHRpZiAoIGRhdGFQcml2LmdldCggZWwsIHR5cGUgKSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggZWwsIHR5cGUsIHJldHVyblRydWUgKTtcblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVnaXN0ZXIgdGhlIGNvbnRyb2xsZXIgYXMgYSBzcGVjaWFsIHVuaXZlcnNhbCBoYW5kbGVyIGZvciBhbGwgZXZlbnQgbmFtZXNwYWNlc1xuXHRkYXRhUHJpdi5zZXQoIGVsLCB0eXBlLCBmYWxzZSApO1xuXHRqUXVlcnkuZXZlbnQuYWRkKCBlbCwgdHlwZSwge1xuXHRcdG5hbWVzcGFjZTogZmFsc2UsXG5cdFx0aGFuZGxlcjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0dmFyIG5vdEFzeW5jLCByZXN1bHQsXG5cdFx0XHRcdHNhdmVkID0gZGF0YVByaXYuZ2V0KCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdGlmICggKCBldmVudC5pc1RyaWdnZXIgJiAxICkgJiYgdGhpc1sgdHlwZSBdICkge1xuXG5cdFx0XHRcdC8vIEludGVycnVwdCBwcm9jZXNzaW5nIG9mIHRoZSBvdXRlciBzeW50aGV0aWMgLnRyaWdnZXIoKWVkIGV2ZW50XG5cdFx0XHRcdC8vIFNhdmVkIGRhdGEgc2hvdWxkIGJlIGZhbHNlIGluIHN1Y2ggY2FzZXMsIGJ1dCBtaWdodCBiZSBhIGxlZnRvdmVyIGNhcHR1cmUgb2JqZWN0XG5cdFx0XHRcdC8vIGZyb20gYW4gYXN5bmMgbmF0aXZlIGhhbmRsZXIgKGdoLTQzNTApXG5cdFx0XHRcdGlmICggIXNhdmVkLmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdC8vIFN0b3JlIGFyZ3VtZW50cyBmb3IgdXNlIHdoZW4gaGFuZGxpbmcgdGhlIGlubmVyIG5hdGl2ZSBldmVudFxuXHRcdFx0XHRcdC8vIFRoZXJlIHdpbGwgYWx3YXlzIGJlIGF0IGxlYXN0IG9uZSBhcmd1bWVudCAoYW4gZXZlbnQgb2JqZWN0KSwgc28gdGhpcyBhcnJheVxuXHRcdFx0XHRcdC8vIHdpbGwgbm90IGJlIGNvbmZ1c2VkIHdpdGggYSBsZWZ0b3ZlciBjYXB0dXJlIG9iamVjdC5cblx0XHRcdFx0XHRzYXZlZCA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgdHlwZSwgc2F2ZWQgKTtcblxuXHRcdFx0XHRcdC8vIFRyaWdnZXIgdGhlIG5hdGl2ZSBldmVudCBhbmQgY2FwdHVyZSBpdHMgcmVzdWx0XG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTErXG5cdFx0XHRcdFx0Ly8gZm9jdXMoKSBhbmQgYmx1cigpIGFyZSBhc3luY2hyb25vdXNcblx0XHRcdFx0XHRub3RBc3luYyA9IGV4cGVjdFN5bmMoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0XHR0aGlzWyB0eXBlIF0oKTtcblx0XHRcdFx0XHRyZXN1bHQgPSBkYXRhUHJpdi5nZXQoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0XHRpZiAoIHNhdmVkICE9PSByZXN1bHQgfHwgbm90QXN5bmMgKSB7XG5cdFx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIHRoaXMsIHR5cGUsIGZhbHNlICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNhdmVkICE9PSByZXN1bHQgKSB7XG5cblx0XHRcdFx0XHRcdC8vIENhbmNlbCB0aGUgb3V0ZXIgc3ludGhldGljIGV2ZW50XG5cdFx0XHRcdFx0XHRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0LnZhbHVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGlzIGlzIGFuIGlubmVyIHN5bnRoZXRpYyBldmVudCBmb3IgYW4gZXZlbnQgd2l0aCBhIGJ1YmJsaW5nIHN1cnJvZ2F0ZVxuXHRcdFx0XHQvLyAoZm9jdXMgb3IgYmx1ciksIGFzc3VtZSB0aGF0IHRoZSBzdXJyb2dhdGUgYWxyZWFkeSBwcm9wYWdhdGVkIGZyb20gdHJpZ2dlcmluZyB0aGVcblx0XHRcdFx0Ly8gbmF0aXZlIGV2ZW50IGFuZCBwcmV2ZW50IHRoYXQgZnJvbSBoYXBwZW5pbmcgYWdhaW4gaGVyZS5cblx0XHRcdFx0Ly8gVGhpcyB0ZWNobmljYWxseSBnZXRzIHRoZSBvcmRlcmluZyB3cm9uZyB3LnIudC4gdG8gYC50cmlnZ2VyKClgIChpbiB3aGljaCB0aGVcblx0XHRcdFx0Ly8gYnViYmxpbmcgc3Vycm9nYXRlIHByb3BhZ2F0ZXMgKmFmdGVyKiB0aGUgbm9uLWJ1YmJsaW5nIGJhc2UpLCBidXQgdGhhdCBzZWVtc1xuXHRcdFx0XHQvLyBsZXNzIGJhZCB0aGFuIGR1cGxpY2F0aW9uLlxuXHRcdFx0XHR9IGVsc2UgaWYgKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge30gKS5kZWxlZ2F0ZVR5cGUgKSB7XG5cdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgdGhpcyBpcyBhIG5hdGl2ZSBldmVudCB0cmlnZ2VyZWQgYWJvdmUsIGV2ZXJ5dGhpbmcgaXMgbm93IGluIG9yZGVyXG5cdFx0XHQvLyBGaXJlIGFuIGlubmVyIHN5bnRoZXRpYyBldmVudCB3aXRoIHRoZSBvcmlnaW5hbCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIHNhdmVkLmxlbmd0aCApIHtcblxuXHRcdFx0XHQvLyAuLi5hbmQgY2FwdHVyZSB0aGUgcmVzdWx0XG5cdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgdHlwZSwge1xuXHRcdFx0XHRcdHZhbHVlOiBqUXVlcnkuZXZlbnQudHJpZ2dlcihcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTErXG5cdFx0XHRcdFx0XHQvLyBFeHRlbmQgd2l0aCB0aGUgcHJvdG90eXBlIHRvIHJlc2V0IHRoZSBhYm92ZSBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuXHRcdFx0XHRcdFx0alF1ZXJ5LmV4dGVuZCggc2F2ZWRbIDAgXSwgalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSApLFxuXHRcdFx0XHRcdFx0c2F2ZWQuc2xpY2UoIDEgKSxcblx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHQpXG5cdFx0XHRcdH0gKTtcblxuXHRcdFx0XHQvLyBBYm9ydCBoYW5kbGluZyBvZiB0aGUgbmF0aXZlIGV2ZW50XG5cdFx0XHRcdGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSApO1xufVxuXG5qUXVlcnkucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkge1xuXG5cdC8vIFRoaXMgXCJpZlwiIGlzIG5lZWRlZCBmb3IgcGxhaW4gb2JqZWN0c1xuXHRpZiAoIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciApIHtcblx0XHRlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSApO1xuXHR9XG59O1xuXG5qUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHtcblxuXHQvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmRcblx0aWYgKCAhKCB0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50ICkgKSB7XG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuRXZlbnQoIHNyYywgcHJvcHMgKTtcblx0fVxuXG5cdC8vIEV2ZW50IG9iamVjdFxuXHRpZiAoIHNyYyAmJiBzcmMudHlwZSApIHtcblx0XHR0aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7XG5cdFx0dGhpcy50eXBlID0gc3JjLnR5cGU7XG5cblx0XHQvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZFxuXHRcdC8vIGJ5IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlLlxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gc3JjLmRlZmF1bHRQcmV2ZW50ZWQgfHxcblx0XHRcdFx0c3JjLmRlZmF1bHRQcmV2ZW50ZWQgPT09IHVuZGVmaW5lZCAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seVxuXHRcdFx0XHRzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlID9cblx0XHRcdHJldHVyblRydWUgOlxuXHRcdFx0cmV0dXJuRmFsc2U7XG5cblx0XHQvLyBDcmVhdGUgdGFyZ2V0IHByb3BlcnRpZXNcblx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgPD02IC0gNyBvbmx5XG5cdFx0Ly8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0ZXh0IG5vZGUgKCM1MDQsICMxMzE0Mylcblx0XHR0aGlzLnRhcmdldCA9ICggc3JjLnRhcmdldCAmJiBzcmMudGFyZ2V0Lm5vZGVUeXBlID09PSAzICkgP1xuXHRcdFx0c3JjLnRhcmdldC5wYXJlbnROb2RlIDpcblx0XHRcdHNyYy50YXJnZXQ7XG5cblx0XHR0aGlzLmN1cnJlbnRUYXJnZXQgPSBzcmMuY3VycmVudFRhcmdldDtcblx0XHR0aGlzLnJlbGF0ZWRUYXJnZXQgPSBzcmMucmVsYXRlZFRhcmdldDtcblxuXHQvLyBFdmVudCB0eXBlXG5cdH0gZWxzZSB7XG5cdFx0dGhpcy50eXBlID0gc3JjO1xuXHR9XG5cblx0Ly8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3Rcblx0aWYgKCBwcm9wcyApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aGlzLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmVcblx0dGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuXG5cdC8vIE1hcmsgaXQgYXMgZml4ZWRcblx0dGhpc1sgalF1ZXJ5LmV4cGFuZG8gXSA9IHRydWU7XG59O1xuXG4vLyBqUXVlcnkuRXZlbnQgaXMgYmFzZWQgb24gRE9NMyBFdmVudHMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0IExhbmd1YWdlIEJpbmRpbmdcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWxcbmpRdWVyeS5FdmVudC5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBqUXVlcnkuRXZlbnQsXG5cdGlzRGVmYXVsdFByZXZlbnRlZDogcmV0dXJuRmFsc2UsXG5cdGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXHRpc1NpbXVsYXRlZDogZmFsc2UsXG5cblx0cHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fSxcblx0c3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zdG9wUHJvcGFnYXRpb24oKTtcblx0fVxufTtcblxuLy8gSW5jbHVkZXMgYWxsIGNvbW1vbiBldmVudCBwcm9wcyBpbmNsdWRpbmcgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnQgc3BlY2lmaWMgcHJvcHNcbmpRdWVyeS5lYWNoKCB7XG5cdGFsdEtleTogdHJ1ZSxcblx0YnViYmxlczogdHJ1ZSxcblx0Y2FuY2VsYWJsZTogdHJ1ZSxcblx0Y2hhbmdlZFRvdWNoZXM6IHRydWUsXG5cdGN0cmxLZXk6IHRydWUsXG5cdGRldGFpbDogdHJ1ZSxcblx0ZXZlbnRQaGFzZTogdHJ1ZSxcblx0bWV0YUtleTogdHJ1ZSxcblx0cGFnZVg6IHRydWUsXG5cdHBhZ2VZOiB0cnVlLFxuXHRzaGlmdEtleTogdHJ1ZSxcblx0dmlldzogdHJ1ZSxcblx0XCJjaGFyXCI6IHRydWUsXG5cdGNvZGU6IHRydWUsXG5cdGNoYXJDb2RlOiB0cnVlLFxuXHRrZXk6IHRydWUsXG5cdGtleUNvZGU6IHRydWUsXG5cdGJ1dHRvbjogdHJ1ZSxcblx0YnV0dG9uczogdHJ1ZSxcblx0Y2xpZW50WDogdHJ1ZSxcblx0Y2xpZW50WTogdHJ1ZSxcblx0b2Zmc2V0WDogdHJ1ZSxcblx0b2Zmc2V0WTogdHJ1ZSxcblx0cG9pbnRlcklkOiB0cnVlLFxuXHRwb2ludGVyVHlwZTogdHJ1ZSxcblx0c2NyZWVuWDogdHJ1ZSxcblx0c2NyZWVuWTogdHJ1ZSxcblx0dGFyZ2V0VG91Y2hlczogdHJ1ZSxcblx0dG9FbGVtZW50OiB0cnVlLFxuXHR0b3VjaGVzOiB0cnVlLFxuXG5cdHdoaWNoOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIGJ1dHRvbiA9IGV2ZW50LmJ1dHRvbjtcblxuXHRcdC8vIEFkZCB3aGljaCBmb3Iga2V5IGV2ZW50c1xuXHRcdGlmICggZXZlbnQud2hpY2ggPT0gbnVsbCAmJiBya2V5RXZlbnQudGVzdCggZXZlbnQudHlwZSApICkge1xuXHRcdFx0cmV0dXJuIGV2ZW50LmNoYXJDb2RlICE9IG51bGwgPyBldmVudC5jaGFyQ29kZSA6IGV2ZW50LmtleUNvZGU7XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHdoaWNoIGZvciBjbGljazogMSA9PT0gbGVmdDsgMiA9PT0gbWlkZGxlOyAzID09PSByaWdodFxuXHRcdGlmICggIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkICYmIHJtb3VzZUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHtcblx0XHRcdGlmICggYnV0dG9uICYgMSApIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggYnV0dG9uICYgMiApIHtcblx0XHRcdFx0cmV0dXJuIDM7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggYnV0dG9uICYgNCApIHtcblx0XHRcdFx0cmV0dXJuIDI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC53aGljaDtcblx0fVxufSwgalF1ZXJ5LmV2ZW50LmFkZFByb3AgKTtcblxualF1ZXJ5LmVhY2goIHsgZm9jdXM6IFwiZm9jdXNpblwiLCBibHVyOiBcImZvY3Vzb3V0XCIgfSwgZnVuY3Rpb24oIHR5cGUsIGRlbGVnYXRlVHlwZSApIHtcblx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSA9IHtcblxuXHRcdC8vIFV0aWxpemUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdFxuXHRcdHNldHVwOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gQ2xhaW0gdGhlIGZpcnN0IGhhbmRsZXJcblx0XHRcdC8vIGRhdGFQcml2LnNldCggdGhpcywgXCJmb2N1c1wiLCAuLi4gKVxuXHRcdFx0Ly8gZGF0YVByaXYuc2V0KCB0aGlzLCBcImJsdXJcIiwgLi4uIClcblx0XHRcdGxldmVyYWdlTmF0aXZlKCB0aGlzLCB0eXBlLCBleHBlY3RTeW5jICk7XG5cblx0XHRcdC8vIFJldHVybiBmYWxzZSB0byBhbGxvdyBub3JtYWwgcHJvY2Vzc2luZyBpbiB0aGUgY2FsbGVyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRm9yY2Ugc2V0dXAgYmVmb3JlIHRyaWdnZXJcblx0XHRcdGxldmVyYWdlTmF0aXZlKCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdC8vIFJldHVybiBub24tZmFsc2UgdG8gYWxsb3cgbm9ybWFsIGV2ZW50LXBhdGggcHJvcGFnYXRpb25cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHRkZWxlZ2F0ZVR5cGU6IGRlbGVnYXRlVHlwZVxuXHR9O1xufSApO1xuXG4vLyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGltZSBjaGVja3Ncbi8vIHNvIHRoYXQgZXZlbnQgZGVsZWdhdGlvbiB3b3JrcyBpbiBqUXVlcnkuXG4vLyBEbyB0aGUgc2FtZSBmb3IgcG9pbnRlcmVudGVyL3BvaW50ZXJsZWF2ZSBhbmQgcG9pbnRlcm92ZXIvcG9pbnRlcm91dFxuLy9cbi8vIFN1cHBvcnQ6IFNhZmFyaSA3IG9ubHlcbi8vIFNhZmFyaSBzZW5kcyBtb3VzZWVudGVyIHRvbyBvZnRlbjsgc2VlOlxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDcwMjU4XG4vLyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcgKGl0IGV4aXN0ZWQgaW4gb2xkZXIgQ2hyb21lIHZlcnNpb25zIGFzIHdlbGwpLlxualF1ZXJ5LmVhY2goIHtcblx0bW91c2VlbnRlcjogXCJtb3VzZW92ZXJcIixcblx0bW91c2VsZWF2ZTogXCJtb3VzZW91dFwiLFxuXHRwb2ludGVyZW50ZXI6IFwicG9pbnRlcm92ZXJcIixcblx0cG9pbnRlcmxlYXZlOiBcInBvaW50ZXJvdXRcIlxufSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHtcblx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIG9yaWcgXSA9IHtcblx0XHRkZWxlZ2F0ZVR5cGU6IGZpeCxcblx0XHRiaW5kVHlwZTogZml4LFxuXG5cdFx0aGFuZGxlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHR2YXIgcmV0LFxuXHRcdFx0XHR0YXJnZXQgPSB0aGlzLFxuXHRcdFx0XHRyZWxhdGVkID0gZXZlbnQucmVsYXRlZFRhcmdldCxcblx0XHRcdFx0aGFuZGxlT2JqID0gZXZlbnQuaGFuZGxlT2JqO1xuXG5cdFx0XHQvLyBGb3IgbW91c2VlbnRlci9sZWF2ZSBjYWxsIHRoZSBoYW5kbGVyIGlmIHJlbGF0ZWQgaXMgb3V0c2lkZSB0aGUgdGFyZ2V0LlxuXHRcdFx0Ly8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3dcblx0XHRcdGlmICggIXJlbGF0ZWQgfHwgKCByZWxhdGVkICE9PSB0YXJnZXQgJiYgIWpRdWVyeS5jb250YWlucyggdGFyZ2V0LCByZWxhdGVkICkgKSApIHtcblx0XHRcdFx0ZXZlbnQudHlwZSA9IGhhbmRsZU9iai5vcmlnVHlwZTtcblx0XHRcdFx0cmV0ID0gaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRldmVudC50eXBlID0gZml4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cdH07XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHRvbjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7XG5cdH0sXG5cdG9uZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7XG5cdH0sXG5cdG9mZjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZm4gKSB7XG5cdFx0dmFyIGhhbmRsZU9iaiwgdHlwZTtcblx0XHRpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiApIHtcblxuXHRcdFx0Ly8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudFxuXHRcdFx0aGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqO1xuXHRcdFx0alF1ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZihcblx0XHRcdFx0aGFuZGxlT2JqLm5hbWVzcGFjZSA/XG5cdFx0XHRcdFx0aGFuZGxlT2JqLm9yaWdUeXBlICsgXCIuXCIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDpcblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUsXG5cdFx0XHRcdGhhbmRsZU9iai5zZWxlY3Rvcixcblx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXJcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdFx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSApXG5cdFx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0XHR0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcyBbLCBmbl0gKVxuXHRcdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRcdGZuID0gcmV0dXJuRmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbnZhclxuXG5cdC8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cblxuXHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzMyMjlcblx0cnhodG1sVGFnID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlxcL1xcMD5cXHgyMFxcdFxcclxcblxcZl0qKVtePl0qKVxcLz4vZ2ksXG5cblx0LyogZXNsaW50LWVuYWJsZSAqL1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSwgRWRnZSAxMiAtIDEzIG9ubHlcblx0Ly8gSW4gSUUvRWRnZSB1c2luZyByZWdleCBncm91cHMgaGVyZSBjYXVzZXMgc2V2ZXJlIHNsb3dkb3ducy5cblx0Ly8gU2VlIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvMTczNjUxMi9cblx0cm5vSW5uZXJodG1sID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksXG5cblx0Ly8gY2hlY2tlZD1cImNoZWNrZWRcIiBvciBjaGVja2VkXG5cdHJjaGVja2VkID0gL2NoZWNrZWRcXHMqKD86W149XXw9XFxzKi5jaGVja2VkLikvaSxcblx0cmNsZWFuU2NyaXB0ID0gL15cXHMqPCEoPzpcXFtDREFUQVxcW3wtLSl8KD86XFxdXFxdfC0tKT5cXHMqJC9nO1xuXG4vLyBQcmVmZXIgYSB0Ym9keSBvdmVyIGl0cyBwYXJlbnQgdGFibGUgZm9yIGNvbnRhaW5pbmcgbmV3IHJvd3NcbmZ1bmN0aW9uIG1hbmlwdWxhdGlvblRhcmdldCggZWxlbSwgY29udGVudCApIHtcblx0aWYgKCBub2RlTmFtZSggZWxlbSwgXCJ0YWJsZVwiICkgJiZcblx0XHRub2RlTmFtZSggY29udGVudC5ub2RlVHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCBcInRyXCIgKSApIHtcblxuXHRcdHJldHVybiBqUXVlcnkoIGVsZW0gKS5jaGlsZHJlbiggXCJ0Ym9keVwiIClbIDAgXSB8fCBlbGVtO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbi8vIFJlcGxhY2UvcmVzdG9yZSB0aGUgdHlwZSBhdHRyaWJ1dGUgb2Ygc2NyaXB0IGVsZW1lbnRzIGZvciBzYWZlIERPTSBtYW5pcHVsYXRpb25cbmZ1bmN0aW9uIGRpc2FibGVTY3JpcHQoIGVsZW0gKSB7XG5cdGVsZW0udHlwZSA9ICggZWxlbS5nZXRBdHRyaWJ1dGUoIFwidHlwZVwiICkgIT09IG51bGwgKSArIFwiL1wiICsgZWxlbS50eXBlO1xuXHRyZXR1cm4gZWxlbTtcbn1cbmZ1bmN0aW9uIHJlc3RvcmVTY3JpcHQoIGVsZW0gKSB7XG5cdGlmICggKCBlbGVtLnR5cGUgfHwgXCJcIiApLnNsaWNlKCAwLCA1ICkgPT09IFwidHJ1ZS9cIiApIHtcblx0XHRlbGVtLnR5cGUgPSBlbGVtLnR5cGUuc2xpY2UoIDUgKTtcblx0fSBlbHNlIHtcblx0XHRlbGVtLnJlbW92ZUF0dHJpYnV0ZSggXCJ0eXBlXCIgKTtcblx0fVxuXG5cdHJldHVybiBlbGVtO1xufVxuXG5mdW5jdGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBkZXN0ICkge1xuXHR2YXIgaSwgbCwgdHlwZSwgcGRhdGFPbGQsIHBkYXRhQ3VyLCB1ZGF0YU9sZCwgdWRhdGFDdXIsIGV2ZW50cztcblxuXHRpZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gMS4gQ29weSBwcml2YXRlIGRhdGE6IGV2ZW50cywgaGFuZGxlcnMsIGV0Yy5cblx0aWYgKCBkYXRhUHJpdi5oYXNEYXRhKCBzcmMgKSApIHtcblx0XHRwZGF0YU9sZCA9IGRhdGFQcml2LmFjY2Vzcyggc3JjICk7XG5cdFx0cGRhdGFDdXIgPSBkYXRhUHJpdi5zZXQoIGRlc3QsIHBkYXRhT2xkICk7XG5cdFx0ZXZlbnRzID0gcGRhdGFPbGQuZXZlbnRzO1xuXG5cdFx0aWYgKCBldmVudHMgKSB7XG5cdFx0XHRkZWxldGUgcGRhdGFDdXIuaGFuZGxlO1xuXHRcdFx0cGRhdGFDdXIuZXZlbnRzID0ge307XG5cblx0XHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xuXHRcdFx0XHRmb3IgKCBpID0gMCwgbCA9IGV2ZW50c1sgdHlwZSBdLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyAyLiBDb3B5IHVzZXIgZGF0YVxuXHRpZiAoIGRhdGFVc2VyLmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHVkYXRhT2xkID0gZGF0YVVzZXIuYWNjZXNzKCBzcmMgKTtcblx0XHR1ZGF0YUN1ciA9IGpRdWVyeS5leHRlbmQoIHt9LCB1ZGF0YU9sZCApO1xuXG5cdFx0ZGF0YVVzZXIuc2V0KCBkZXN0LCB1ZGF0YUN1ciApO1xuXHR9XG59XG5cbi8vIEZpeCBJRSBidWdzLCBzZWUgc3VwcG9ydCB0ZXN0c1xuZnVuY3Rpb24gZml4SW5wdXQoIHNyYywgZGVzdCApIHtcblx0dmFyIG5vZGVOYW1lID0gZGVzdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG5cdC8vIEZhaWxzIHRvIHBlcnNpc3QgdGhlIGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLlxuXHRpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgcmNoZWNrYWJsZVR5cGUudGVzdCggc3JjLnR5cGUgKSApIHtcblx0XHRkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDtcblxuXHQvLyBGYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZCBzdGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9uc1xuXHR9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5vZGVOYW1lID09PSBcInRleHRhcmVhXCIgKSB7XG5cdFx0ZGVzdC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGRvbU1hbmlwKCBjb2xsZWN0aW9uLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApIHtcblxuXHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdGFyZ3MgPSBjb25jYXQuYXBwbHkoIFtdLCBhcmdzICk7XG5cblx0dmFyIGZyYWdtZW50LCBmaXJzdCwgc2NyaXB0cywgaGFzU2NyaXB0cywgbm9kZSwgZG9jLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBjb2xsZWN0aW9uLmxlbmd0aCxcblx0XHRpTm9DbG9uZSA9IGwgLSAxLFxuXHRcdHZhbHVlID0gYXJnc1sgMCBdLFxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0Ly8gV2UgY2FuJ3QgY2xvbmVOb2RlIGZyYWdtZW50cyB0aGF0IGNvbnRhaW4gY2hlY2tlZCwgaW4gV2ViS2l0XG5cdGlmICggdmFsdWVJc0Z1bmN0aW9uIHx8XG5cdFx0XHQoIGwgPiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQhc3VwcG9ydC5jaGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHtcblx0XHRyZXR1cm4gY29sbGVjdGlvbi5lYWNoKCBmdW5jdGlvbiggaW5kZXggKSB7XG5cdFx0XHR2YXIgc2VsZiA9IGNvbGxlY3Rpb24uZXEoIGluZGV4ICk7XG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0YXJnc1sgMCBdID0gdmFsdWUuY2FsbCggdGhpcywgaW5kZXgsIHNlbGYuaHRtbCgpICk7XG5cdFx0XHR9XG5cdFx0XHRkb21NYW5pcCggc2VsZiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKTtcblx0XHR9ICk7XG5cdH1cblxuXHRpZiAoIGwgKSB7XG5cdFx0ZnJhZ21lbnQgPSBidWlsZEZyYWdtZW50KCBhcmdzLCBjb2xsZWN0aW9uWyAwIF0ub3duZXJEb2N1bWVudCwgZmFsc2UsIGNvbGxlY3Rpb24sIGlnbm9yZWQgKTtcblx0XHRmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkge1xuXHRcdFx0ZnJhZ21lbnQgPSBmaXJzdDtcblx0XHR9XG5cblx0XHQvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBhbiBpbnRlcmVzdCBpbiBpZ25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2tcblx0XHRpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7XG5cdFx0XHRzY3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgXCJzY3JpcHRcIiApLCBkaXNhYmxlU2NyaXB0ICk7XG5cdFx0XHRoYXNTY3JpcHRzID0gc2NyaXB0cy5sZW5ndGg7XG5cblx0XHRcdC8vIFVzZSB0aGUgb3JpZ2luYWwgZnJhZ21lbnQgZm9yIHRoZSBsYXN0IGl0ZW1cblx0XHRcdC8vIGluc3RlYWQgb2YgdGhlIGZpcnN0IGJlY2F1c2UgaXQgY2FuIGVuZCB1cFxuXHRcdFx0Ly8gYmVpbmcgZW1wdGllZCBpbmNvcnJlY3RseSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgKCM4MDcwKS5cblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0bm9kZSA9IGZyYWdtZW50O1xuXG5cdFx0XHRcdGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IGpRdWVyeS5jbG9uZSggbm9kZSwgdHJ1ZSwgdHJ1ZSApO1xuXG5cdFx0XHRcdFx0Ly8gS2VlcCByZWZlcmVuY2VzIHRvIGNsb25lZCBzY3JpcHRzIGZvciBsYXRlciByZXN0b3JhdGlvblxuXHRcdFx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBdLCBub2RlLCBpICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblx0XHRcdFx0ZG9jID0gc2NyaXB0c1sgc2NyaXB0cy5sZW5ndGggLSAxIF0ub3duZXJEb2N1bWVudDtcblxuXHRcdFx0XHQvLyBSZWVuYWJsZSBzY3JpcHRzXG5cdFx0XHRcdGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTtcblxuXHRcdFx0XHQvLyBFdmFsdWF0ZSBleGVjdXRhYmxlIHNjcmlwdHMgb24gZmlyc3QgZG9jdW1lbnQgaW5zZXJ0aW9uXG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgaGFzU2NyaXB0czsgaSsrICkge1xuXHRcdFx0XHRcdG5vZGUgPSBzY3JpcHRzWyBpIF07XG5cdFx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgXCJcIiApICYmXG5cdFx0XHRcdFx0XHQhZGF0YVByaXYuYWNjZXNzKCBub2RlLCBcImdsb2JhbEV2YWxcIiApICYmXG5cdFx0XHRcdFx0XHRqUXVlcnkuY29udGFpbnMoIGRvYywgbm9kZSApICkge1xuXG5cdFx0XHRcdFx0XHRpZiAoIG5vZGUuc3JjICYmICggbm9kZS50eXBlIHx8IFwiXCIgKS50b0xvd2VyQ2FzZSgpICAhPT0gXCJtb2R1bGVcIiApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBPcHRpb25hbCBBSkFYIGRlcGVuZGVuY3ksIGJ1dCB3b24ndCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudFxuXHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5fZXZhbFVybCAmJiAhbm9kZS5ub01vZHVsZSApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRub25jZTogbm9kZS5ub25jZSB8fCBub2RlLmdldEF0dHJpYnV0ZSggXCJub25jZVwiIClcblx0XHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdERPTUV2YWwoIG5vZGUudGV4dENvbnRlbnQucmVwbGFjZSggcmNsZWFuU2NyaXB0LCBcIlwiICksIG5vZGUsIGRvYyApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjb2xsZWN0aW9uO1xufVxuXG5mdW5jdGlvbiByZW1vdmUoIGVsZW0sIHNlbGVjdG9yLCBrZWVwRGF0YSApIHtcblx0dmFyIG5vZGUsXG5cdFx0bm9kZXMgPSBzZWxlY3RvciA/IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBlbGVtICkgOiBlbGVtLFxuXHRcdGkgPSAwO1xuXG5cdGZvciAoIDsgKCBub2RlID0gbm9kZXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRpZiAoICFrZWVwRGF0YSAmJiBub2RlLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBub2RlICkgKTtcblx0XHR9XG5cblx0XHRpZiAoIG5vZGUucGFyZW50Tm9kZSApIHtcblx0XHRcdGlmICgga2VlcERhdGEgJiYgaXNBdHRhY2hlZCggbm9kZSApICkge1xuXHRcdFx0XHRzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIG5vZGUsIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0fVxuXHRcdFx0bm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBub2RlICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aHRtbFByZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0cmV0dXJuIGh0bWwucmVwbGFjZSggcnhodG1sVGFnLCBcIjwkMT48LyQyPlwiICk7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHR2YXIgaSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cyxcblx0XHRcdGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKSxcblx0XHRcdGluUGFnZSA9IGlzQXR0YWNoZWQoIGVsZW0gKTtcblxuXHRcdC8vIEZpeCBJRSBjbG9uaW5nIGlzc3Vlc1xuXHRcdGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNrZWQgJiYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiZcblx0XHRcdFx0IWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXG5cdFx0XHQvLyBXZSBlc2NoZXcgU2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM6IGh0dHBzOi8vanNwZXJmLmNvbS9nZXRhbGwtdnMtc2l6emxlLzJcblx0XHRcdGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUgKTtcblx0XHRcdHNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7XG5cblx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmaXhJbnB1dCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb3B5IHRoZSBldmVudHMgZnJvbSB0aGUgb3JpZ2luYWwgdG8gdGhlIGNsb25lXG5cdFx0aWYgKCBkYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0aWYgKCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdFx0c3JjRWxlbWVudHMgPSBzcmNFbGVtZW50cyB8fCBnZXRBbGwoIGVsZW0gKTtcblx0XHRcdFx0ZGVzdEVsZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8IGdldEFsbCggY2xvbmUgKTtcblxuXHRcdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRjbG9uZUNvcHlFdmVudCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIGVsZW0sIGNsb25lICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUsIFwic2NyaXB0XCIgKTtcblx0XHRpZiAoIGRlc3RFbGVtZW50cy5sZW5ndGggPiAwICkge1xuXHRcdFx0c2V0R2xvYmFsRXZhbCggZGVzdEVsZW1lbnRzLCAhaW5QYWdlICYmIGdldEFsbCggZWxlbSwgXCJzY3JpcHRcIiApICk7XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHRoZSBjbG9uZWQgc2V0XG5cdFx0cmV0dXJuIGNsb25lO1xuXHR9LFxuXG5cdGNsZWFuRGF0YTogZnVuY3Rpb24oIGVsZW1zICkge1xuXHRcdHZhciBkYXRhLCBlbGVtLCB0eXBlLFxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7ICggZWxlbSA9IGVsZW1zWyBpIF0gKSAhPT0gdW5kZWZpbmVkOyBpKysgKSB7XG5cdFx0XHRpZiAoIGFjY2VwdERhdGEoIGVsZW0gKSApIHtcblx0XHRcdFx0aWYgKCAoIGRhdGEgPSBlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gKSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0Zm9yICggdHlwZSBpbiBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWRcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1K1xuXHRcdFx0XHRcdC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZVxuXHRcdFx0XHRcdGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSApIHtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrXG5cdFx0XHRcdFx0Ly8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlXG5cdFx0XHRcdFx0ZWxlbVsgZGF0YVVzZXIuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciApO1xuXHR9LFxuXG5cdHRleHQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS50ZXh0KCB0aGlzICkgOlxuXHRcdFx0XHR0aGlzLmVtcHR5KCkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fSxcblxuXHRhcHBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRwcmVwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0YXJnZXQuZmlyc3RDaGlsZCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRiZWZvcmU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGFmdGVyOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGVsZW0sXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKCBlbGVtID0gdGhpc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXG5cdFx0XHRcdC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzXG5cdFx0XHRcdGVsZW0udGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0ZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50cztcblx0XHRkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7XG5cblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKTtcblx0XHR9ICk7XG5cdH0sXG5cblx0aHRtbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBlbGVtID0gdGhpc1sgMCBdIHx8IHt9LFxuXHRcdFx0XHRpID0gMCxcblx0XHRcdFx0bCA9IHRoaXMubGVuZ3RoO1xuXG5cdFx0XHRpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uaW5uZXJIVE1MO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZWUgaWYgd2UgY2FuIHRha2UgYSBzaG9ydGN1dCBhbmQganVzdCB1c2UgaW5uZXJIVE1MXG5cdFx0XHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVlICkgJiZcblx0XHRcdFx0IXdyYXBNYXBbICggcnRhZ05hbWUuZXhlYyggdmFsdWUgKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKSBdICkge1xuXG5cdFx0XHRcdHZhbHVlID0galF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIHZhbHVlICk7XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0XHRlbGVtID0gdGhpc1sgaSBdIHx8IHt9O1xuXG5cdFx0XHRcdFx0XHQvLyBSZW1vdmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Ncblx0XHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7XG5cdFx0XHRcdFx0XHRcdGVsZW0uaW5uZXJIVE1MID0gdmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZWxlbSA9IDA7XG5cblx0XHRcdFx0Ly8gSWYgdXNpbmcgaW5uZXJIVE1MIHRocm93cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge31cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHR0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApO1xuXHRcdFx0fVxuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0cmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBpZ25vcmVkID0gW107XG5cblx0XHQvLyBNYWtlIHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBub24taWdub3JlZCBjb250ZXh0IGVsZW1lbnQgd2l0aCB0aGUgbmV3IGNvbnRlbnRcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuXG5cdFx0XHRpZiAoIGpRdWVyeS5pbkFycmF5KCB0aGlzLCBpZ25vcmVkICkgPCAwICkge1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIHRoaXMgKSApO1xuXHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblx0XHRcdFx0XHRwYXJlbnQucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEZvcmNlIGNhbGxiYWNrIGludm9jYXRpb25cblx0XHR9LCBpZ25vcmVkICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIHtcblx0YXBwZW5kVG86IFwiYXBwZW5kXCIsXG5cdHByZXBlbmRUbzogXCJwcmVwZW5kXCIsXG5cdGluc2VydEJlZm9yZTogXCJiZWZvcmVcIixcblx0aW5zZXJ0QWZ0ZXI6IFwiYWZ0ZXJcIixcblx0cmVwbGFjZUFsbDogXCJyZXBsYWNlV2l0aFwiXG59LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBlbGVtcyxcblx0XHRcdHJldCA9IFtdLFxuXHRcdFx0aW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLFxuXHRcdFx0bGFzdCA9IGluc2VydC5sZW5ndGggLSAxLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkge1xuXHRcdFx0ZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTtcblx0XHRcdGpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHQvLyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRwdXNoLmFwcGx5KCByZXQsIGVsZW1zLmdldCgpICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTtcblx0fTtcbn0gKTtcbnZhciBybnVtbm9ucHggPSBuZXcgUmVnRXhwKCBcIl4oXCIgKyBwbnVtICsgXCIpKD8hcHgpW2EteiVdKyRcIiwgXCJpXCIgKTtcblxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5LCBGaXJlZm94IDw9MzAgKCMxNTA5OCwgIzE0MTUwKVxuXHRcdC8vIElFIHRocm93cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBvcHVwc1xuXHRcdC8vIEZGIG1lYW53aGlsZSB0aHJvd3Mgb24gZnJhbWUgZWxlbWVudHMgdGhyb3VnaCBcImRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGVcIlxuXHRcdHZhciB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXG5cdFx0aWYgKCAhdmlldyB8fCAhdmlldy5vcGVuZXIgKSB7XG5cdFx0XHR2aWV3ID0gd2luZG93O1xuXHRcdH1cblxuXHRcdHJldHVybiB2aWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTtcblx0fTtcblxudmFyIHJib3hTdHlsZSA9IG5ldyBSZWdFeHAoIGNzc0V4cGFuZC5qb2luKCBcInxcIiApLCBcImlcIiApO1xuXG5cblxuKCBmdW5jdGlvbigpIHtcblxuXHQvLyBFeGVjdXRpbmcgYm90aCBwaXhlbFBvc2l0aW9uICYgYm94U2l6aW5nUmVsaWFibGUgdGVzdHMgcmVxdWlyZSBvbmx5IG9uZSBsYXlvdXRcblx0Ly8gc28gdGhleSdyZSBleGVjdXRlZCBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgdGhlIHNlY29uZCBjb21wdXRhdGlvbi5cblx0ZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKSB7XG5cblx0XHQvLyBUaGlzIGlzIGEgc2luZ2xldG9uLCB3ZSBuZWVkIHRvIGV4ZWN1dGUgaXQgb25seSBvbmNlXG5cdFx0aWYgKCAhZGl2ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7XCIgK1xuXHRcdFx0XCJtYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjBcIjtcblx0XHRkaXYuc3R5bGUuY3NzVGV4dCA9XG5cdFx0XHRcInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDtcIiArXG5cdFx0XHRcIm1hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7XCIgK1xuXHRcdFx0XCJ3aWR0aDo2MCU7dG9wOjElXCI7XG5cdFx0ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKCBjb250YWluZXIgKS5hcHBlbmRDaGlsZCggZGl2ICk7XG5cblx0XHR2YXIgZGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2ICk7XG5cdFx0cGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gXCIxJVwiO1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgRmlyZWZveCA8PTMgLSA0NFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUubWFyZ2luTGVmdCApID09PSAxMjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHksIFNhZmFyaSA8PTkuMSAtIDEwLjEsIGlPUyA8PTcuMCAtIDkuM1xuXHRcdC8vIFNvbWUgc3R5bGVzIGNvbWUgYmFjayB3aXRoIHBlcmNlbnRhZ2UgdmFsdWVzLCBldmVuIHRob3VnaCB0aGV5IHNob3VsZG4ndFxuXHRcdGRpdi5zdHlsZS5yaWdodCA9IFwiNjAlXCI7XG5cdFx0cGl4ZWxCb3hTdHlsZXNWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLnJpZ2h0ICkgPT09IDM2O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHlcblx0XHQvLyBEZXRlY3QgbWlzcmVwb3J0aW5nIG9mIGNvbnRlbnQgZGltZW5zaW9ucyBmb3IgYm94LXNpemluZzpib3JkZXItYm94IGVsZW1lbnRzXG5cdFx0Ym94U2l6aW5nUmVsaWFibGVWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLndpZHRoICkgPT09IDM2O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSBvbmx5XG5cdFx0Ly8gRGV0ZWN0IG92ZXJmbG93OnNjcm9sbCBzY3Jld2luZXNzIChnaC0zNjk5KVxuXHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTY0XG5cdFx0Ly8gRG9uJ3QgZ2V0IHRyaWNrZWQgd2hlbiB6b29tIGFmZmVjdHMgb2Zmc2V0V2lkdGggKGdoLTQwMjkpXG5cdFx0ZGl2LnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuXHRcdHNjcm9sbGJveFNpemVWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdi5vZmZzZXRXaWR0aCAvIDMgKSA9PT0gMTI7XG5cblx0XHRkb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApO1xuXG5cdFx0Ly8gTnVsbGlmeSB0aGUgZGl2IHNvIGl0IHdvdWxkbid0IGJlIHN0b3JlZCBpbiB0aGUgbWVtb3J5IGFuZFxuXHRcdC8vIGl0IHdpbGwgYWxzbyBiZSBhIHNpZ24gdGhhdCBjaGVja3MgYWxyZWFkeSBwZXJmb3JtZWRcblx0XHRkaXYgPSBudWxsO1xuXHR9XG5cblx0ZnVuY3Rpb24gcm91bmRQaXhlbE1lYXN1cmVzKCBtZWFzdXJlICkge1xuXHRcdHJldHVybiBNYXRoLnJvdW5kKCBwYXJzZUZsb2F0KCBtZWFzdXJlICkgKTtcblx0fVxuXG5cdHZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hTaXppbmdSZWxpYWJsZVZhbCwgc2Nyb2xsYm94U2l6ZVZhbCwgcGl4ZWxCb3hTdHlsZXNWYWwsXG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0VmFsLFxuXHRcdGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSxcblx0XHRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICk7XG5cblx0Ly8gRmluaXNoIGVhcmx5IGluIGxpbWl0ZWQgKG5vbi1icm93c2VyKSBlbnZpcm9ubWVudHNcblx0aWYgKCAhZGl2LnN0eWxlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0Ly8gU3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQgKCM4OTA4KVxuXHRkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcImNvbnRlbnQtYm94XCI7XG5cdGRpdi5jbG9uZU5vZGUoIHRydWUgKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9IFwiXCI7XG5cdHN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlID0gZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID09PSBcImNvbnRlbnQtYm94XCI7XG5cblx0alF1ZXJ5LmV4dGVuZCggc3VwcG9ydCwge1xuXHRcdGJveFNpemluZ1JlbGlhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gYm94U2l6aW5nUmVsaWFibGVWYWw7XG5cdFx0fSxcblx0XHRwaXhlbEJveFN0eWxlczogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHBpeGVsQm94U3R5bGVzVmFsO1xuXHRcdH0sXG5cdFx0cGl4ZWxQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHBpeGVsUG9zaXRpb25WYWw7XG5cdFx0fSxcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiByZWxpYWJsZU1hcmdpbkxlZnRWYWw7XG5cdFx0fSxcblx0XHRzY3JvbGxib3hTaXplOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gc2Nyb2xsYm94U2l6ZVZhbDtcblx0XHR9XG5cdH0gKTtcbn0gKSgpO1xuXG5cbmZ1bmN0aW9uIGN1ckNTUyggZWxlbSwgbmFtZSwgY29tcHV0ZWQgKSB7XG5cdHZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCByZXQsXG5cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDUxK1xuXHRcdC8vIFJldHJpZXZpbmcgc3R5bGUgYmVmb3JlIGNvbXB1dGVkIHNvbWVob3dcblx0XHQvLyBmaXhlcyBhbiBpc3N1ZSB3aXRoIGdldHRpbmcgd3JvbmcgdmFsdWVzXG5cdFx0Ly8gb24gZGV0YWNoZWQgZWxlbWVudHNcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XG5cblx0Y29tcHV0ZWQgPSBjb21wdXRlZCB8fCBnZXRTdHlsZXMoIGVsZW0gKTtcblxuXHQvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG5lZWRlZCBmb3I6XG5cdC8vICAgLmNzcygnZmlsdGVyJykgKElFIDkgb25seSwgIzEyNTM3KVxuXHQvLyAgIC5jc3MoJy0tY3VzdG9tUHJvcGVydHkpICgjMzE0NClcblx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRyZXQgPSBjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTtcblxuXHRcdGlmICggcmV0ID09PSBcIlwiICYmICFpc0F0dGFjaGVkKCBlbGVtICkgKSB7XG5cdFx0XHRyZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBBIHRyaWJ1dGUgdG8gdGhlIFwiYXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkc1wiXG5cdFx0Ly8gQW5kcm9pZCBCcm93c2VyIHJldHVybnMgcGVyY2VudGFnZSBmb3Igc29tZSB2YWx1ZXMsXG5cdFx0Ly8gYnV0IHdpZHRoIHNlZW1zIHRvIGJlIHJlbGlhYmx5IHBpeGVscy5cblx0XHQvLyBUaGlzIGlzIGFnYWluc3QgdGhlIENTU09NIGRyYWZ0IHNwZWM6XG5cdFx0Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXNcblx0XHRpZiAoICFzdXBwb3J0LnBpeGVsQm94U3R5bGVzKCkgJiYgcm51bW5vbnB4LnRlc3QoIHJldCApICYmIHJib3hTdHlsZS50ZXN0KCBuYW1lICkgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXNcblx0XHRcdHdpZHRoID0gc3R5bGUud2lkdGg7XG5cdFx0XHRtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoO1xuXHRcdFx0bWF4V2lkdGggPSBzdHlsZS5tYXhXaWR0aDtcblxuXHRcdFx0Ly8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dFxuXHRcdFx0c3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0O1xuXHRcdFx0cmV0ID0gY29tcHV0ZWQud2lkdGg7XG5cblx0XHRcdC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXNcblx0XHRcdHN0eWxlLndpZHRoID0gd2lkdGg7XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoO1xuXHRcdFx0c3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgP1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdC8vIElFIHJldHVybnMgekluZGV4IHZhbHVlIGFzIGFuIGludGVnZXIuXG5cdFx0cmV0ICsgXCJcIiA6XG5cdFx0cmV0O1xufVxuXG5cbmZ1bmN0aW9uIGFkZEdldEhvb2tJZiggY29uZGl0aW9uRm4sIGhvb2tGbiApIHtcblxuXHQvLyBEZWZpbmUgdGhlIGhvb2ssIHdlJ2xsIGNoZWNrIG9uIHRoZSBmaXJzdCBydW4gaWYgaXQncyByZWFsbHkgbmVlZGVkLlxuXHRyZXR1cm4ge1xuXHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGNvbmRpdGlvbkZuKCkgKSB7XG5cblx0XHRcdFx0Ly8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVlXG5cdFx0XHRcdC8vIHRvIG1pc3NpbmcgZGVwZW5kZW5jeSksIHJlbW92ZSBpdC5cblx0XHRcdFx0ZGVsZXRlIHRoaXMuZ2V0O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhvb2sgbmVlZGVkOyByZWRlZmluZSBpdCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLlxuXHRcdFx0cmV0dXJuICggdGhpcy5nZXQgPSBob29rRm4gKS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fVxuXHR9O1xufVxuXG5cbnZhciBjc3NQcmVmaXhlcyA9IFsgXCJXZWJraXRcIiwgXCJNb3pcIiwgXCJtc1wiIF0sXG5cdGVtcHR5U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkuc3R5bGUsXG5cdHZlbmRvclByb3BzID0ge307XG5cbi8vIFJldHVybiBhIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBvciB1bmRlZmluZWRcbmZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKCBuYW1lICkge1xuXG5cdC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXNcblx0dmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSxcblx0XHRpID0gY3NzUHJlZml4ZXMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTtcblx0XHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRcdHJldHVybiBuYW1lO1xuXHRcdH1cblx0fVxufVxuXG4vLyBSZXR1cm4gYSBwb3RlbnRpYWxseS1tYXBwZWQgalF1ZXJ5LmNzc1Byb3BzIG9yIHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eVxuZnVuY3Rpb24gZmluYWxQcm9wTmFtZSggbmFtZSApIHtcblx0dmFyIGZpbmFsID0galF1ZXJ5LmNzc1Byb3BzWyBuYW1lIF0gfHwgdmVuZG9yUHJvcHNbIG5hbWUgXTtcblxuXHRpZiAoIGZpbmFsICkge1xuXHRcdHJldHVybiBmaW5hbDtcblx0fVxuXHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXHRyZXR1cm4gdmVuZG9yUHJvcHNbIG5hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBuYW1lICkgfHwgbmFtZTtcbn1cblxuXG52YXJcblxuXHQvLyBTd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3aXRoIHRhYmxlXG5cdC8vIGV4Y2VwdCBcInRhYmxlXCIsIFwidGFibGUtY2VsbFwiLCBvciBcInRhYmxlLWNhcHRpb25cIlxuXHQvLyBTZWUgaGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3BsYXlcblx0cmRpc3BsYXlzd2FwID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFxuXHRyY3VzdG9tUHJvcCA9IC9eLS0vLFxuXHRjc3NTaG93ID0geyBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLCB2aXNpYmlsaXR5OiBcImhpZGRlblwiLCBkaXNwbGF5OiBcImJsb2NrXCIgfSxcblx0Y3NzTm9ybWFsVHJhbnNmb3JtID0ge1xuXHRcdGxldHRlclNwYWNpbmc6IFwiMFwiLFxuXHRcdGZvbnRXZWlnaHQ6IFwiNDAwXCJcblx0fTtcblxuZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApIHtcblxuXHQvLyBBbnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuXG5cdC8vIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludFxuXHR2YXIgbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKTtcblx0cmV0dXJuIG1hdGNoZXMgP1xuXG5cdFx0Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgXCJzdWJ0cmFjdFwiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3Ncblx0XHRNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApIDpcblx0XHR2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYm94TW9kZWxBZGp1c3RtZW50KCBlbGVtLCBkaW1lbnNpb24sIGJveCwgaXNCb3JkZXJCb3gsIHN0eWxlcywgY29tcHV0ZWRWYWwgKSB7XG5cdHZhciBpID0gZGltZW5zaW9uID09PSBcIndpZHRoXCIgPyAxIDogMCxcblx0XHRleHRyYSA9IDAsXG5cdFx0ZGVsdGEgPSAwO1xuXG5cdC8vIEFkanVzdG1lbnQgbWF5IG5vdCBiZSBuZWNlc3Nhcnlcblx0aWYgKCBib3ggPT09ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHtcblxuXHRcdC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpblxuXHRcdGlmICggYm94ID09PSBcIm1hcmdpblwiICkge1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgYm94ICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBjb250ZW50LWJveCwgd2UncmUgc2Vla2luZyBcInBhZGRpbmdcIiBvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCJcblx0XHRpZiAoICFpc0JvcmRlckJveCApIHtcblxuXHRcdFx0Ly8gQWRkIHBhZGRpbmdcblx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBGb3IgXCJib3JkZXJcIiBvciBcIm1hcmdpblwiLCBhZGQgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJwYWRkaW5nXCIgKSB7XG5cdFx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEJ1dCBzdGlsbCBrZWVwIHRyYWNrIG9mIGl0IG90aGVyd2lzZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZXh0cmEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBib3JkZXItYm94IChjb250ZW50ICsgcGFkZGluZyArIGJvcmRlciksIHdlJ3JlIHNlZWtpbmcgXCJjb250ZW50XCIgb3Jcblx0XHQvLyBcInBhZGRpbmdcIiBvciBcIm1hcmdpblwiXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gRm9yIFwiY29udGVudFwiLCBzdWJ0cmFjdCBwYWRkaW5nXG5cdFx0XHRpZiAoIGJveCA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIgb3IgXCJwYWRkaW5nXCIsIHN1YnRyYWN0IGJvcmRlclxuXHRcdFx0aWYgKCBib3ggIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWNjb3VudCBmb3IgcG9zaXRpdmUgY29udGVudC1ib3ggc2Nyb2xsIGd1dHRlciB3aGVuIHJlcXVlc3RlZCBieSBwcm92aWRpbmcgY29tcHV0ZWRWYWxcblx0aWYgKCAhaXNCb3JkZXJCb3ggJiYgY29tcHV0ZWRWYWwgPj0gMCApIHtcblxuXHRcdC8vIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBpcyBhIHJvdW5kZWQgc3VtIG9mIGNvbnRlbnQsIHBhZGRpbmcsIHNjcm9sbCBndXR0ZXIsIGFuZCBib3JkZXJcblx0XHQvLyBBc3N1bWluZyBpbnRlZ2VyIHNjcm9sbCBndXR0ZXIsIHN1YnRyYWN0IHRoZSByZXN0IGFuZCByb3VuZCBkb3duXG5cdFx0ZGVsdGEgKz0gTWF0aC5tYXgoIDAsIE1hdGguY2VpbChcblx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRjb21wdXRlZFZhbCAtXG5cdFx0XHRkZWx0YSAtXG5cdFx0XHRleHRyYSAtXG5cdFx0XHQwLjVcblxuXHRcdC8vIElmIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBpcyB1bmtub3duLCB0aGVuIHdlIGNhbid0IGRldGVybWluZSBjb250ZW50LWJveCBzY3JvbGwgZ3V0dGVyXG5cdFx0Ly8gVXNlIGFuIGV4cGxpY2l0IHplcm8gdG8gYXZvaWQgTmFOIChnaC0zOTY0KVxuXHRcdCkgKSB8fCAwO1xuXHR9XG5cblx0cmV0dXJuIGRlbHRhO1xufVxuXG5mdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICkge1xuXG5cdC8vIFN0YXJ0IHdpdGggY29tcHV0ZWQgc3R5bGVcblx0dmFyIHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLFxuXG5cdFx0Ly8gVG8gYXZvaWQgZm9yY2luZyBhIHJlZmxvdywgb25seSBmZXRjaCBib3hTaXppbmcgaWYgd2UgbmVlZCBpdCAoZ2gtNDMyMikuXG5cdFx0Ly8gRmFrZSBjb250ZW50LWJveCB1bnRpbCB3ZSBrbm93IGl0J3MgbmVlZGVkIHRvIGtub3cgdGhlIHRydWUgdmFsdWUuXG5cdFx0Ym94U2l6aW5nTmVlZGVkID0gIXN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSB8fCBleHRyYSxcblx0XHRpc0JvcmRlckJveCA9IGJveFNpemluZ05lZWRlZCAmJlxuXHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHR2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3gsXG5cblx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIGRpbWVuc2lvbiwgc3R5bGVzICksXG5cdFx0b2Zmc2V0UHJvcCA9IFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICk7XG5cblx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTU0XG5cdC8vIFJldHVybiBhIGNvbmZvdW5kaW5nIG5vbi1waXhlbCB2YWx1ZSBvciBmZWlnbiBpZ25vcmFuY2UsIGFzIGFwcHJvcHJpYXRlLlxuXHRpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHtcblx0XHRpZiAoICFleHRyYSApIHtcblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fVxuXHRcdHZhbCA9IFwiYXV0b1wiO1xuXHR9XG5cblxuXHQvLyBGYWxsIGJhY2sgdG8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IHdoZW4gdmFsdWUgaXMgXCJhdXRvXCJcblx0Ly8gVGhpcyBoYXBwZW5zIGZvciBpbmxpbmUgZWxlbWVudHMgd2l0aCBubyBleHBsaWNpdCBzZXR0aW5nIChnaC0zNTcxKVxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIC0gNC4zIG9ubHlcblx0Ly8gQWxzbyB1c2Ugb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGZvciBtaXNyZXBvcnRlZCBpbmxpbmUgZGltZW5zaW9ucyAoZ2gtMzYwMilcblx0Ly8gU3VwcG9ydDogSUUgOS0xMSBvbmx5XG5cdC8vIEFsc28gdXNlIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBmb3Igd2hlbiBib3ggc2l6aW5nIGlzIHVucmVsaWFibGVcblx0Ly8gV2UgdXNlIGdldENsaWVudFJlY3RzKCkgdG8gY2hlY2sgZm9yIGhpZGRlbi9kaXNjb25uZWN0ZWQuXG5cdC8vIEluIHRob3NlIGNhc2VzLCB0aGUgY29tcHV0ZWQgdmFsdWUgY2FuIGJlIHRydXN0ZWQgdG8gYmUgYm9yZGVyLWJveFxuXHRpZiAoICggIXN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSAmJiBpc0JvcmRlckJveCB8fFxuXHRcdHZhbCA9PT0gXCJhdXRvXCIgfHxcblx0XHQhcGFyc2VGbG9hdCggdmFsICkgJiYgalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJpbmxpbmVcIiApICYmXG5cdFx0ZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApIHtcblxuXHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIjtcblxuXHRcdC8vIFdoZXJlIGF2YWlsYWJsZSwgb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGFwcHJveGltYXRlIGJvcmRlciBib3ggZGltZW5zaW9ucy5cblx0XHQvLyBXaGVyZSBub3QgYXZhaWxhYmxlIChlLmcuLCBTVkcpLCBhc3N1bWUgdW5yZWxpYWJsZSBib3gtc2l6aW5nIGFuZCBpbnRlcnByZXQgdGhlXG5cdFx0Ly8gcmV0cmlldmVkIHZhbHVlIGFzIGEgY29udGVudCBib3ggZGltZW5zaW9uLlxuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSBvZmZzZXRQcm9wIGluIGVsZW07XG5cdFx0aWYgKCB2YWx1ZUlzQm9yZGVyQm94ICkge1xuXHRcdFx0dmFsID0gZWxlbVsgb2Zmc2V0UHJvcCBdO1xuXHRcdH1cblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBcIlwiIGFuZCBhdXRvXG5cdHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7XG5cblx0Ly8gQWRqdXN0IGZvciB0aGUgZWxlbWVudCdzIGJveCBtb2RlbFxuXHRyZXR1cm4gKCB2YWwgK1xuXHRcdGJveE1vZGVsQWRqdXN0bWVudChcblx0XHRcdGVsZW0sXG5cdFx0XHRkaW1lbnNpb24sXG5cdFx0XHRleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICksXG5cdFx0XHR2YWx1ZUlzQm9yZGVyQm94LFxuXHRcdFx0c3R5bGVzLFxuXG5cdFx0XHQvLyBQcm92aWRlIHRoZSBjdXJyZW50IGNvbXB1dGVkIHNpemUgdG8gcmVxdWVzdCBzY3JvbGwgZ3V0dGVyIGNhbGN1bGF0aW9uIChnaC0zNTg5KVxuXHRcdFx0dmFsXG5cdFx0KVxuXHQpICsgXCJweFwiO1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gQWRkIGluIHN0eWxlIHByb3BlcnR5IGhvb2tzIGZvciBvdmVycmlkaW5nIHRoZSBkZWZhdWx0XG5cdC8vIGJlaGF2aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eVxuXHRjc3NIb29rczoge1xuXHRcdG9wYWNpdHk6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdFx0Ly8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9tIG9wYWNpdHlcblx0XHRcdFx0XHR2YXIgcmV0ID0gY3VyQ1NTKCBlbGVtLCBcIm9wYWNpdHlcIiApO1xuXHRcdFx0XHRcdHJldHVybiByZXQgPT09IFwiXCIgPyBcIjFcIiA6IHJldDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvLyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCBcInB4XCIgdG8gdGhlc2UgcG9zc2libHktdW5pdGxlc3MgcHJvcGVydGllc1xuXHRjc3NOdW1iZXI6IHtcblx0XHRcImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50XCI6IHRydWUsXG5cdFx0XCJjb2x1bW5Db3VudFwiOiB0cnVlLFxuXHRcdFwiZmlsbE9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcImZsZXhHcm93XCI6IHRydWUsXG5cdFx0XCJmbGV4U2hyaW5rXCI6IHRydWUsXG5cdFx0XCJmb250V2VpZ2h0XCI6IHRydWUsXG5cdFx0XCJncmlkQXJlYVwiOiB0cnVlLFxuXHRcdFwiZ3JpZENvbHVtblwiOiB0cnVlLFxuXHRcdFwiZ3JpZENvbHVtbkVuZFwiOiB0cnVlLFxuXHRcdFwiZ3JpZENvbHVtblN0YXJ0XCI6IHRydWUsXG5cdFx0XCJncmlkUm93XCI6IHRydWUsXG5cdFx0XCJncmlkUm93RW5kXCI6IHRydWUsXG5cdFx0XCJncmlkUm93U3RhcnRcIjogdHJ1ZSxcblx0XHRcImxpbmVIZWlnaHRcIjogdHJ1ZSxcblx0XHRcIm9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcIm9yZGVyXCI6IHRydWUsXG5cdFx0XCJvcnBoYW5zXCI6IHRydWUsXG5cdFx0XCJ3aWRvd3NcIjogdHJ1ZSxcblx0XHRcInpJbmRleFwiOiB0cnVlLFxuXHRcdFwiem9vbVwiOiB0cnVlXG5cdH0sXG5cblx0Ly8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZVxuXHQvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlXG5cdGNzc1Byb3BzOiB7fSxcblxuXHQvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZVxuXHRzdHlsZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHtcblxuXHRcdC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZVxuXHRcdHZhciByZXQsIHR5cGUsIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBjYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIHF1ZXJ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiwgdGhlbiB1bnByZWZpeGVkIHZlcnNpb25cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZVxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cblx0XHRcdC8vIENvbnZlcnQgXCIrPVwiIG9yIFwiLT1cIiB0byByZWxhdGl2ZSBudW1iZXJzICgjNzM0NSlcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBdICkge1xuXHRcdFx0XHR2YWx1ZSA9IGFkanVzdENTUyggZWxlbSwgbmFtZSwgcmV0ICk7XG5cblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM5MjM3XG5cdFx0XHRcdHR5cGUgPSBcIm51bWJlclwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcylcblx0XHRcdC8vIFRoZSBpc0N1c3RvbVByb3AgY2hlY2sgY2FuIGJlIHJlbW92ZWQgaW4galF1ZXJ5IDQuMCB3aGVuIHdlIG9ubHkgYXV0by1hcHBlbmRcblx0XHRcdC8vIFwicHhcIiB0byBhIGZldyBoYXJkY29kZWQgdmFsdWVzLlxuXHRcdFx0aWYgKCB0eXBlID09PSBcIm51bWJlclwiICYmICFpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRcdHZhbHVlICs9IHJldCAmJiByZXRbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gPyBcIlwiIDogXCJweFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGJhY2tncm91bmQtKiBwcm9wcyBhZmZlY3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXNcblx0XHRcdGlmICggIXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSBcIlwiICYmIG5hbWUuaW5kZXhPZiggXCJiYWNrZ3JvdW5kXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IFwiaW5oZXJpdFwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWVcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fFxuXHRcdFx0XHQoIHZhbHVlID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0aWYgKCBpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRcdFx0c3R5bGUuc2V0UHJvcGVydHkoIG5hbWUsIHZhbHVlICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgbm9uLWNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHQoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE90aGVyd2lzZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2JqZWN0XG5cdFx0XHRyZXR1cm4gc3R5bGVbIG5hbWUgXTtcblx0XHR9XG5cdH0sXG5cblx0Y3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHtcblx0XHR2YXIgdmFsLCBudW0sIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBjYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIG1vZGlmeSB0aGUgdmFsdWUgaWYgaXQgaXMgYSBDU1MgY3VzdG9tIHByb3BlcnR5XG5cdFx0Ly8gc2luY2UgdGhleSBhcmUgdXNlci1kZWZpbmVkLlxuXHRcdGlmICggIWlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdG5hbWUgPSBmaW5hbFByb3BOYW1lKCBvcmlnTmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIG5hbWVcblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsID0gaG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0XG5cdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBcIm5vcm1hbFwiIHRvIGNvbXB1dGVkIHZhbHVlXG5cdFx0aWYgKCB2YWwgPT09IFwibm9ybWFsXCIgJiYgbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7XG5cdFx0XHR2YWwgPSBjc3NOb3JtYWxUcmFuc2Zvcm1bIG5hbWUgXTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9yIGEgcXVhbGlmaWVyIHdhcyBwcm92aWRlZCBhbmQgdmFsIGxvb2tzIG51bWVyaWNcblx0XHRpZiAoIGV4dHJhID09PSBcIlwiIHx8IGV4dHJhICkge1xuXHRcdFx0bnVtID0gcGFyc2VGbG9hdCggdmFsICk7XG5cdFx0XHRyZXR1cm4gZXh0cmEgPT09IHRydWUgfHwgaXNGaW5pdGUoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbDtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcImhlaWdodFwiLCBcIndpZHRoXCIgXSwgZnVuY3Rpb24oIGksIGRpbWVuc2lvbiApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBkaW1lbnNpb24gXSA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwgZXh0cmEgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdC8vIENlcnRhaW4gZWxlbWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbVxuXHRcdFx0XHQvLyBidXQgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdFxuXHRcdFx0XHRyZXR1cm4gcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgKSAmJlxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDgrXG5cdFx0XHRcdFx0Ly8gVGFibGUgY29sdW1ucyBpbiBTYWZhcmkgaGF2ZSBub24temVybyBvZmZzZXRXaWR0aCAmIHplcm9cblx0XHRcdFx0XHQvLyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB1bmxlc3MgZGlzcGxheSBpcyBjaGFuZ2VkLlxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHRcdFx0XHRcdC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGVcblx0XHRcdFx0XHQvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuXG5cdFx0XHRcdFx0KCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCB8fCAhZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCApID9cblx0XHRcdFx0XHRcdHN3YXAoIGVsZW0sIGNzc1Nob3csIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApO1xuXHRcdFx0XHRcdFx0fSApIDpcblx0XHRcdFx0XHRcdGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIGV4dHJhICkge1xuXHRcdFx0dmFyIG1hdGNoZXMsXG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLFxuXG5cdFx0XHRcdC8vIE9ubHkgcmVhZCBzdHlsZXMucG9zaXRpb24gaWYgdGhlIHRlc3QgaGFzIGEgY2hhbmNlIHRvIGZhaWxcblx0XHRcdFx0Ly8gdG8gYXZvaWQgZm9yY2luZyBhIHJlZmxvdy5cblx0XHRcdFx0c2Nyb2xsYm94U2l6ZUJ1Z2d5ID0gIXN1cHBvcnQuc2Nyb2xsYm94U2l6ZSgpICYmXG5cdFx0XHRcdFx0c3R5bGVzLnBvc2l0aW9uID09PSBcImFic29sdXRlXCIsXG5cblx0XHRcdFx0Ly8gVG8gYXZvaWQgZm9yY2luZyBhIHJlZmxvdywgb25seSBmZXRjaCBib3hTaXppbmcgaWYgd2UgbmVlZCBpdCAoZ2gtMzk5MSlcblx0XHRcdFx0Ym94U2l6aW5nTmVlZGVkID0gc2Nyb2xsYm94U2l6ZUJ1Z2d5IHx8IGV4dHJhLFxuXHRcdFx0XHRpc0JvcmRlckJveCA9IGJveFNpemluZ05lZWRlZCAmJlxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCIsXG5cdFx0XHRcdHN1YnRyYWN0ID0gZXh0cmEgP1xuXHRcdFx0XHRcdGJveE1vZGVsQWRqdXN0bWVudChcblx0XHRcdFx0XHRcdGVsZW0sXG5cdFx0XHRcdFx0XHRkaW1lbnNpb24sXG5cdFx0XHRcdFx0XHRleHRyYSxcblx0XHRcdFx0XHRcdGlzQm9yZGVyQm94LFxuXHRcdFx0XHRcdFx0c3R5bGVzXG5cdFx0XHRcdFx0KSA6XG5cdFx0XHRcdFx0MDtcblxuXHRcdFx0Ly8gQWNjb3VudCBmb3IgdW5yZWxpYWJsZSBib3JkZXItYm94IGRpbWVuc2lvbnMgYnkgY29tcGFyaW5nIG9mZnNldCogdG8gY29tcHV0ZWQgYW5kXG5cdFx0XHQvLyBmYWtpbmcgYSBjb250ZW50LWJveCB0byBnZXQgYm9yZGVyIGFuZCBwYWRkaW5nIChnaC0zNjk5KVxuXHRcdFx0aWYgKCBpc0JvcmRlckJveCAmJiBzY3JvbGxib3hTaXplQnVnZ3kgKSB7XG5cdFx0XHRcdHN1YnRyYWN0IC09IE1hdGguY2VpbChcblx0XHRcdFx0XHRlbGVtWyBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApIF0gLVxuXHRcdFx0XHRcdHBhcnNlRmxvYXQoIHN0eWxlc1sgZGltZW5zaW9uIF0gKSAtXG5cdFx0XHRcdFx0Ym94TW9kZWxBZGp1c3RtZW50KCBlbGVtLCBkaW1lbnNpb24sIFwiYm9yZGVyXCIsIGZhbHNlLCBzdHlsZXMgKSAtXG5cdFx0XHRcdFx0MC41XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnZlcnQgdG8gcGl4ZWxzIGlmIHZhbHVlIGFkanVzdG1lbnQgaXMgbmVlZGVkXG5cdFx0XHRpZiAoIHN1YnRyYWN0ICYmICggbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmXG5cdFx0XHRcdCggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApICE9PSBcInB4XCIgKSB7XG5cblx0XHRcdFx0ZWxlbS5zdHlsZVsgZGltZW5zaW9uIF0gPSB2YWx1ZTtcblx0XHRcdFx0dmFsdWUgPSBqUXVlcnkuY3NzKCBlbGVtLCBkaW1lbnNpb24gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKTtcblx0XHR9XG5cdH07XG59ICk7XG5cbmpRdWVyeS5jc3NIb29rcy5tYXJnaW5MZWZ0ID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luTGVmdCxcblx0ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4gKCBwYXJzZUZsb2F0KCBjdXJDU1MoIGVsZW0sIFwibWFyZ2luTGVmdFwiICkgKSB8fFxuXHRcdFx0XHRlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLVxuXHRcdFx0XHRcdHN3YXAoIGVsZW0sIHsgbWFyZ2luTGVmdDogMCB9LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cdFx0XHRcdFx0fSApXG5cdFx0XHRcdCkgKyBcInB4XCI7XG5cdFx0fVxuXHR9XG4pO1xuXG4vLyBUaGVzZSBob29rcyBhcmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzXG5qUXVlcnkuZWFjaCgge1xuXHRtYXJnaW46IFwiXCIsXG5cdHBhZGRpbmc6IFwiXCIsXG5cdGJvcmRlcjogXCJXaWR0aFwiXG59LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0gPSB7XG5cdFx0ZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgaSA9IDAsXG5cdFx0XHRcdGV4cGFuZGVkID0ge30sXG5cblx0XHRcdFx0Ly8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3RyaW5nXG5cdFx0XHRcdHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUuc3BsaXQoIFwiIFwiICkgOiBbIHZhbHVlIF07XG5cblx0XHRcdGZvciAoIDsgaSA8IDQ7IGkrKyApIHtcblx0XHRcdFx0ZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFuZFsgaSBdICsgc3VmZml4IF0gPVxuXHRcdFx0XHRcdHBhcnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV4cGFuZGVkO1xuXHRcdH1cblx0fTtcblxuXHRpZiAoIHByZWZpeCAhPT0gXCJtYXJnaW5cIiApIHtcblx0XHRqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdLnNldCA9IHNldFBvc2l0aXZlTnVtYmVyO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0Y3NzOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0dmFyIHN0eWxlcywgbGVuLFxuXHRcdFx0XHRtYXAgPSB7fSxcblx0XHRcdFx0aSA9IDA7XG5cblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggbmFtZSApICkge1xuXHRcdFx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKTtcblx0XHRcdFx0bGVuID0gbmFtZS5sZW5ndGg7XG5cblx0XHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0bWFwWyBuYW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIG1hcDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVlICkgOlxuXHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7XG5cdFx0fSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH1cbn0gKTtcblxuXG5mdW5jdGlvbiBUd2VlbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKSB7XG5cdHJldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICk7XG59XG5qUXVlcnkuVHdlZW4gPSBUd2VlbjtcblxuVHdlZW4ucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogVHdlZW4sXG5cdGluaXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5pdCApIHtcblx0XHR0aGlzLmVsZW0gPSBlbGVtO1xuXHRcdHRoaXMucHJvcCA9IHByb3A7XG5cdFx0dGhpcy5lYXNpbmcgPSBlYXNpbmcgfHwgalF1ZXJ5LmVhc2luZy5fZGVmYXVsdDtcblx0XHR0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCk7XG5cdFx0dGhpcy5lbmQgPSBlbmQ7XG5cdFx0dGhpcy51bml0ID0gdW5pdCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0fSxcblx0Y3VyOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0cmV0dXJuIGhvb2tzICYmIGhvb2tzLmdldCA/XG5cdFx0XHRob29rcy5nZXQoIHRoaXMgKSA6XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlzICk7XG5cdH0sXG5cdHJ1bjogZnVuY3Rpb24oIHBlcmNlbnQgKSB7XG5cdFx0dmFyIGVhc2VkLFxuXHRcdFx0aG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0galF1ZXJ5LmVhc2luZ1sgdGhpcy5lYXNpbmcgXShcblx0XHRcdFx0cGVyY2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0gcGVyY2VudDtcblx0XHR9XG5cdFx0dGhpcy5ub3cgPSAoIHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICogZWFzZWQgKyB0aGlzLnN0YXJ0O1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHtcblx0XHRcdHRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMgKTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnNldCApIHtcblx0XHRcdGhvb2tzLnNldCggdGhpcyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KCB0aGlzICk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59O1xuXG5Ud2Vlbi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7XG5cblR3ZWVuLnByb3BIb29rcyA9IHtcblx0X2RlZmF1bHQ6IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRcdHZhciByZXN1bHQ7XG5cblx0XHRcdC8vIFVzZSBhIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGRpcmVjdGx5IHdoZW4gaXQgaXMgbm90IGEgRE9NIGVsZW1lbnQsXG5cdFx0XHQvLyBvciB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHN0eWxlIHByb3BlcnR5IHRoYXQgZXhpc3RzLlxuXHRcdFx0aWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICE9PSAxIHx8XG5cdFx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSAhPSBudWxsICYmIHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsICkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHlcblx0XHRcdC8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxsYmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFyc2UgZmFpbHMuXG5cdFx0XHQvLyBTaW1wbGUgdmFsdWVzIHN1Y2ggYXMgXCIxMHB4XCIgYXJlIHBhcnNlZCB0byBGbG9hdDtcblx0XHRcdC8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgXCJyb3RhdGUoMXJhZClcIiBhcmUgcmV0dXJuZWQgYXMtaXMuXG5cdFx0XHRyZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCBcIlwiICk7XG5cblx0XHRcdC8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVuZGVmaW5lZCBhbmQgXCJhdXRvXCIgYXJlIGNvbnZlcnRlZCB0byAwLlxuXHRcdFx0cmV0dXJuICFyZXN1bHQgfHwgcmVzdWx0ID09PSBcImF1dG9cIiA/IDAgOiByZXN1bHQ7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblxuXHRcdFx0Ly8gVXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQuXG5cdFx0XHQvLyBVc2UgY3NzSG9vayBpZiBpdHMgdGhlcmUuXG5cdFx0XHQvLyBVc2UgLnN0eWxlIGlmIGF2YWlsYWJsZSBhbmQgdXNlIHBsYWluIHByb3BlcnRpZXMgd2hlcmUgYXZhaWxhYmxlLlxuXHRcdFx0aWYgKCBqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdICkge1xuXHRcdFx0XHRqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApO1xuXHRcdFx0fSBlbHNlIGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoXG5cdFx0XHRcdFx0alF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gfHxcblx0XHRcdFx0XHR0d2Vlbi5lbGVtLnN0eWxlWyBmaW5hbFByb3BOYW1lKCB0d2Vlbi5wcm9wICkgXSAhPSBudWxsICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbi8vIFBhbmljIGJhc2VkIGFwcHJvYWNoIHRvIHNldHRpbmcgdGhpbmdzIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuVHdlZW4ucHJvcEhvb2tzLnNjcm9sbFRvcCA9IFR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0ge1xuXHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgJiYgdHdlZW4uZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmVhc2luZyA9IHtcblx0bGluZWFyOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gcDtcblx0fSxcblx0c3dpbmc6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7XG5cdH0sXG5cdF9kZWZhdWx0OiBcInN3aW5nXCJcbn07XG5cbmpRdWVyeS5meCA9IFR3ZWVuLnByb3RvdHlwZS5pbml0O1xuXG4vLyBCYWNrIGNvbXBhdCA8MS44IGV4dGVuc2lvbiBwb2ludFxualF1ZXJ5LmZ4LnN0ZXAgPSB7fTtcblxuXG5cblxudmFyXG5cdGZ4Tm93LCBpblByb2dyZXNzLFxuXHRyZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxcblx0cnJ1biA9IC9xdWV1ZUhvb2tzJC87XG5cbmZ1bmN0aW9uIHNjaGVkdWxlKCkge1xuXHRpZiAoIGluUHJvZ3Jlc3MgKSB7XG5cdFx0aWYgKCBkb2N1bWVudC5oaWRkZW4gPT09IGZhbHNlICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKSB7XG5cdFx0XHR3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBzY2hlZHVsZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3aW5kb3cuc2V0VGltZW91dCggc2NoZWR1bGUsIGpRdWVyeS5meC5pbnRlcnZhbCApO1xuXHRcdH1cblxuXHRcdGpRdWVyeS5meC50aWNrKCk7XG5cdH1cbn1cblxuLy8gQW5pbWF0aW9ucyBjcmVhdGVkIHN5bmNocm9ub3VzbHkgd2lsbCBydW4gc3luY2hyb25vdXNseVxuZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRmeE5vdyA9IHVuZGVmaW5lZDtcblx0fSApO1xuXHRyZXR1cm4gKCBmeE5vdyA9IERhdGUubm93KCkgKTtcbn1cblxuLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb25cbmZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7XG5cdHZhciB3aGljaCxcblx0XHRpID0gMCxcblx0XHRhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07XG5cblx0Ly8gSWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLFxuXHQvLyBvdGhlcndpc2Ugc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodFxuXHRpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDtcblx0Zm9yICggOyBpIDwgNDsgaSArPSAyIC0gaW5jbHVkZVdpZHRoICkge1xuXHRcdHdoaWNoID0gY3NzRXhwYW5kWyBpIF07XG5cdFx0YXR0cnNbIFwibWFyZ2luXCIgKyB3aGljaCBdID0gYXR0cnNbIFwicGFkZGluZ1wiICsgd2hpY2ggXSA9IHR5cGU7XG5cdH1cblxuXHRpZiAoIGluY2x1ZGVXaWR0aCApIHtcblx0XHRhdHRycy5vcGFjaXR5ID0gYXR0cnMud2lkdGggPSB0eXBlO1xuXHR9XG5cblx0cmV0dXJuIGF0dHJzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUd2VlbiggdmFsdWUsIHByb3AsIGFuaW1hdGlvbiApIHtcblx0dmFyIHR3ZWVuLFxuXHRcdGNvbGxlY3Rpb24gPSAoIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCBBbmltYXRpb24udHdlZW5lcnNbIFwiKlwiIF0gKSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCAoIHR3ZWVuID0gY29sbGVjdGlvblsgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSApIHtcblxuXHRcdFx0Ly8gV2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHlcblx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7XG5cdHZhciBwcm9wLCB2YWx1ZSwgdG9nZ2xlLCBob29rcywgb2xkZmlyZSwgcHJvcFR3ZWVuLCByZXN0b3JlRGlzcGxheSwgZGlzcGxheSxcblx0XHRpc0JveCA9IFwid2lkdGhcIiBpbiBwcm9wcyB8fCBcImhlaWdodFwiIGluIHByb3BzLFxuXHRcdGFuaW0gPSB0aGlzLFxuXHRcdG9yaWcgPSB7fSxcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGUsXG5cdFx0aGlkZGVuID0gZWxlbS5ub2RlVHlwZSAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSxcblx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJmeHNob3dcIiApO1xuXG5cdC8vIFF1ZXVlLXNraXBwaW5nIGFuaW1hdGlvbnMgaGlqYWNrIHRoZSBmeCBob29rc1xuXHRpZiAoICFvcHRzLnF1ZXVlICkge1xuXHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCBcImZ4XCIgKTtcblx0XHRpZiAoIGhvb2tzLnVucXVldWVkID09IG51bGwgKSB7XG5cdFx0XHRob29rcy51bnF1ZXVlZCA9IDA7XG5cdFx0XHRvbGRmaXJlID0gaG9va3MuZW1wdHkuZmlyZTtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhaG9va3MudW5xdWV1ZWQgKSB7XG5cdFx0XHRcdFx0b2xkZmlyZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRob29rcy51bnF1ZXVlZCsrO1xuXG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBFbnN1cmUgdGhlIGNvbXBsZXRlIGhhbmRsZXIgaXMgY2FsbGVkIGJlZm9yZSB0aGlzIGNvbXBsZXRlc1xuXHRcdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRob29rcy51bnF1ZXVlZC0tO1xuXHRcdFx0XHRpZiAoICFqUXVlcnkucXVldWUoIGVsZW0sIFwiZnhcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBEZXRlY3Qgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0Zm9yICggcHJvcCBpbiBwcm9wcyApIHtcblx0XHR2YWx1ZSA9IHByb3BzWyBwcm9wIF07XG5cdFx0aWYgKCByZnh0eXBlcy50ZXN0KCB2YWx1ZSApICkge1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBwcm9wIF07XG5cdFx0XHR0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09IFwidG9nZ2xlXCI7XG5cdFx0XHRpZiAoIHZhbHVlID09PSAoIGhpZGRlbiA/IFwiaGlkZVwiIDogXCJzaG93XCIgKSApIHtcblxuXHRcdFx0XHQvLyBQcmV0ZW5kIHRvIGJlIGhpZGRlbiBpZiB0aGlzIGlzIGEgXCJzaG93XCIgYW5kXG5cdFx0XHRcdC8vIHRoZXJlIGlzIHN0aWxsIGRhdGEgZnJvbSBhIHN0b3BwZWQgc2hvdy9oaWRlXG5cdFx0XHRcdGlmICggdmFsdWUgPT09IFwic2hvd1wiICYmIGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSB0cnVlO1xuXG5cdFx0XHRcdC8vIElnbm9yZSBhbGwgb3RoZXIgbm8tb3Agc2hvdy9oaWRlIGRhdGFcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0b3JpZ1sgcHJvcCBdID0gZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBCYWlsIG91dCBpZiB0aGlzIGlzIGEgbm8tb3AgbGlrZSAuaGlkZSgpLmhpZGUoKVxuXHRwcm9wVHdlZW4gPSAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3BzICk7XG5cdGlmICggIXByb3BUd2VlbiAmJiBqUXVlcnkuaXNFbXB0eU9iamVjdCggb3JpZyApICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFJlc3RyaWN0IFwib3ZlcmZsb3dcIiBhbmQgXCJkaXNwbGF5XCIgc3R5bGVzIGR1cmluZyBib3ggYW5pbWF0aW9uc1xuXHRpZiAoIGlzQm94ICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDE1XG5cdFx0Ly8gUmVjb3JkIGFsbCAzIG92ZXJmbG93IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdCBpbmZlciB0aGUgc2hvcnRoYW5kXG5cdFx0Ly8gZnJvbSBpZGVudGljYWxseS12YWx1ZWQgb3ZlcmZsb3dYIGFuZCBvdmVyZmxvd1kgYW5kIEVkZ2UganVzdCBtaXJyb3JzXG5cdFx0Ly8gdGhlIG92ZXJmbG93WCB2YWx1ZSB0aGVyZS5cblx0XHRvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTtcblxuXHRcdC8vIElkZW50aWZ5IGEgZGlzcGxheSB0eXBlLCBwcmVmZXJyaW5nIG9sZCBzaG93L2hpZGUgZGF0YSBvdmVyIHRoZSBDU1MgY2FzY2FkZVxuXHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVNob3cgJiYgZGF0YVNob3cuZGlzcGxheTtcblx0XHRpZiAoIHJlc3RvcmVEaXNwbGF5ID09IG51bGwgKSB7XG5cdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHR9XG5cdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdGlmICggcmVzdG9yZURpc3BsYXkgKSB7XG5cdFx0XHRcdGRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gR2V0IG5vbmVtcHR5IHZhbHVlKHMpIGJ5IHRlbXBvcmFyaWx5IGZvcmNpbmcgdmlzaWJpbGl0eVxuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdFx0cmVzdG9yZURpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXkgfHwgcmVzdG9yZURpc3BsYXk7XG5cdFx0XHRcdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBbmltYXRlIGlubGluZSBlbGVtZW50cyBhcyBpbmxpbmUtYmxvY2tcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwiaW5saW5lXCIgfHwgZGlzcGxheSA9PT0gXCJpbmxpbmUtYmxvY2tcIiAmJiByZXN0b3JlRGlzcGxheSAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBqUXVlcnkuY3NzKCBlbGVtLCBcImZsb2F0XCIgKSA9PT0gXCJub25lXCIgKSB7XG5cblx0XHRcdFx0Ly8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgZGlzcGxheSB2YWx1ZSBhdCB0aGUgZW5kIG9mIHB1cmUgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0XHRcdFx0aWYgKCAhcHJvcFR3ZWVuICkge1xuXHRcdFx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRzdHlsZS5kaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRcdGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5O1xuXHRcdFx0XHRcdFx0cmVzdG9yZURpc3BsYXkgPSBkaXNwbGF5ID09PSBcIm5vbmVcIiA/IFwiXCIgOiBkaXNwbGF5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIG9wdHMub3ZlcmZsb3cgKSB7XG5cdFx0c3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuXHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblx0XHRcdHN0eWxlLm92ZXJmbG93ID0gb3B0cy5vdmVyZmxvd1sgMCBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEltcGxlbWVudCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRwcm9wVHdlZW4gPSBmYWxzZTtcblx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXG5cdFx0Ly8gR2VuZXJhbCBzaG93L2hpZGUgc2V0dXAgZm9yIHRoaXMgZWxlbWVudCBhbmltYXRpb25cblx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRpZiAoIGRhdGFTaG93ICkge1xuXHRcdFx0XHRpZiAoIFwiaGlkZGVuXCIgaW4gZGF0YVNob3cgKSB7XG5cdFx0XHRcdFx0aGlkZGVuID0gZGF0YVNob3cuaGlkZGVuO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgXCJmeHNob3dcIiwgeyBkaXNwbGF5OiByZXN0b3JlRGlzcGxheSB9ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0b3JlIGhpZGRlbi92aXNpYmxlIGZvciB0b2dnbGUgc28gYC5zdG9wKCkudG9nZ2xlKClgIFwicmV2ZXJzZXNcIlxuXHRcdFx0aWYgKCB0b2dnbGUgKSB7XG5cdFx0XHRcdGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNob3cgZWxlbWVudHMgYmVmb3JlIGFuaW1hdGluZyB0aGVtXG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqL1xuXG5cdFx0XHRhbmltLmRvbmUoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqL1xuXG5cdFx0XHRcdC8vIFRoZSBmaW5hbCBzdGVwIG9mIGEgXCJoaWRlXCIgYW5pbWF0aW9uIGlzIGFjdHVhbGx5IGhpZGluZyB0aGUgZWxlbWVudFxuXHRcdFx0XHRpZiAoICFoaWRkZW4gKSB7XG5cdFx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cdFx0XHRcdGZvciAoIHByb3AgaW4gb3JpZyApIHtcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Ly8gUGVyLXByb3BlcnR5IHNldHVwXG5cdFx0cHJvcFR3ZWVuID0gY3JlYXRlVHdlZW4oIGhpZGRlbiA/IGRhdGFTaG93WyBwcm9wIF0gOiAwLCBwcm9wLCBhbmltICk7XG5cdFx0aWYgKCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7XG5cdFx0XHRkYXRhU2hvd1sgcHJvcCBdID0gcHJvcFR3ZWVuLnN0YXJ0O1xuXHRcdFx0aWYgKCBoaWRkZW4gKSB7XG5cdFx0XHRcdHByb3BUd2Vlbi5lbmQgPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRcdHByb3BUd2Vlbi5zdGFydCA9IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHByb3BGaWx0ZXIoIHByb3BzLCBzcGVjaWFsRWFzaW5nICkge1xuXHR2YXIgaW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzO1xuXG5cdC8vIGNhbWVsQ2FzZSwgc3BlY2lhbEVhc2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzc1xuXHRmb3IgKCBpbmRleCBpbiBwcm9wcyApIHtcblx0XHRuYW1lID0gY2FtZWxDYXNlKCBpbmRleCApO1xuXHRcdGVhc2luZyA9IHNwZWNpYWxFYXNpbmdbIG5hbWUgXTtcblx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdO1xuXHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRcdGVhc2luZyA9IHZhbHVlWyAxIF07XG5cdFx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdID0gdmFsdWVbIDAgXTtcblx0XHR9XG5cblx0XHRpZiAoIGluZGV4ICE9PSBuYW1lICkge1xuXHRcdFx0cHJvcHNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBpbmRleCBdO1xuXHRcdH1cblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07XG5cdFx0aWYgKCBob29rcyAmJiBcImV4cGFuZFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsdWUgPSBob29rcy5leHBhbmQoIHZhbHVlICk7XG5cdFx0XHRkZWxldGUgcHJvcHNbIG5hbWUgXTtcblxuXHRcdFx0Ly8gTm90IHF1aXRlICQuZXh0ZW5kLCB0aGlzIHdvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBrZXlzLlxuXHRcdFx0Ly8gUmV1c2luZyAnaW5kZXgnIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgY29ycmVjdCBcIm5hbWVcIlxuXHRcdFx0Zm9yICggaW5kZXggaW4gdmFsdWUgKSB7XG5cdFx0XHRcdGlmICggISggaW5kZXggaW4gcHJvcHMgKSApIHtcblx0XHRcdFx0XHRwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyBpbmRleCBdO1xuXHRcdFx0XHRcdHNwZWNpYWxFYXNpbmdbIGluZGV4IF0gPSBlYXNpbmc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c3BlY2lhbEVhc2luZ1sgbmFtZSBdID0gZWFzaW5nO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBBbmltYXRpb24oIGVsZW0sIHByb3BlcnRpZXMsIG9wdGlvbnMgKSB7XG5cdHZhciByZXN1bHQsXG5cdFx0c3RvcHBlZCxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gQW5pbWF0aW9uLnByZWZpbHRlcnMubGVuZ3RoLFxuXHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCkuYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRG9uJ3QgbWF0Y2ggZWxlbSBpbiB0aGUgOmFuaW1hdGVkIHNlbGVjdG9yXG5cdFx0XHRkZWxldGUgdGljay5lbGVtO1xuXHRcdH0gKSxcblx0XHR0aWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHZhciBjdXJyZW50VGltZSA9IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRcdHJlbWFpbmluZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUgKSxcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDIuMyBvbmx5XG5cdFx0XHRcdC8vIEFyY2hhaWMgY3Jhc2ggYnVnIHdvbid0IGFsbG93IHVzIHRvIHVzZSBgMSAtICggMC41IHx8IDAgKWAgKCMxMjQ5Nylcblx0XHRcdFx0dGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLFxuXHRcdFx0XHRwZXJjZW50ID0gMSAtIHRlbXAsXG5cdFx0XHRcdGluZGV4ID0gMCxcblx0XHRcdFx0bGVuZ3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7XG5cblx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSApO1xuXG5cdFx0XHQvLyBJZiB0aGVyZSdzIG1vcmUgdG8gZG8sIHlpZWxkXG5cdFx0XHRpZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHtcblx0XHRcdFx0cmV0dXJuIHJlbWFpbmluZztcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgdGhpcyB3YXMgYW4gZW1wdHkgYW5pbWF0aW9uLCBzeW50aGVzaXplIGEgZmluYWwgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uXG5cdFx0XHRpZiAoICFsZW5ndGggKSB7XG5cdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVzb2x2ZSB0aGUgYW5pbWF0aW9uIGFuZCByZXBvcnQgaXRzIGNvbmNsdXNpb25cblx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRhbmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0cHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksXG5cdFx0XHRvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7XG5cdFx0XHRcdHNwZWNpYWxFYXNpbmc6IHt9LFxuXHRcdFx0XHRlYXNpbmc6IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHRcblx0XHRcdH0sIG9wdGlvbnMgKSxcblx0XHRcdG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcyxcblx0XHRcdG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucyxcblx0XHRcdHN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuXHRcdFx0dHdlZW5zOiBbXSxcblx0XHRcdGNyZWF0ZVR3ZWVuOiBmdW5jdGlvbiggcHJvcCwgZW5kICkge1xuXHRcdFx0XHR2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsXG5cdFx0XHRcdFx0XHRhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5nICk7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdFx0fSxcblx0XHRcdHN0b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkge1xuXHRcdFx0XHR2YXIgaW5kZXggPSAwLFxuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgYXJlIGdvaW5nIHRvIHRoZSBlbmQsIHdlIHdhbnQgdG8gcnVuIGFsbCB0aGUgdHdlZW5zXG5cdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIHdlIHNraXAgdGhpcyBwYXJ0XG5cdFx0XHRcdFx0bGVuZ3RoID0gZ290b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoIDogMDtcblx0XHRcdFx0aWYgKCBzdG9wcGVkICkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0b3BwZWQgPSB0cnVlO1xuXHRcdFx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCAxICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXNvbHZlIHdoZW4gd2UgcGxheWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhlcndpc2UsIHJlamVjdFxuXHRcdFx0XHRpZiAoIGdvdG9FbmQgKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fVxuXHRcdH0gKSxcblx0XHRwcm9wcyA9IGFuaW1hdGlvbi5wcm9wcztcblxuXHRwcm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApO1xuXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0cmVzdWx0ID0gQW5pbWF0aW9uLnByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywgYW5pbWF0aW9uLm9wdHMgKTtcblx0XHRpZiAoIHJlc3VsdCApIHtcblx0XHRcdGlmICggaXNGdW5jdGlvbiggcmVzdWx0LnN0b3AgKSApIHtcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCBhbmltYXRpb24uZWxlbSwgYW5pbWF0aW9uLm9wdHMucXVldWUgKS5zdG9wID1cblx0XHRcdFx0XHRyZXN1bHQuc3RvcC5iaW5kKCByZXN1bHQgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9XG5cblx0alF1ZXJ5Lm1hcCggcHJvcHMsIGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTtcblxuXHRpZiAoIGlzRnVuY3Rpb24oIGFuaW1hdGlvbi5vcHRzLnN0YXJ0ICkgKSB7XG5cdFx0YW5pbWF0aW9uLm9wdHMuc3RhcnQuY2FsbCggZWxlbSwgYW5pbWF0aW9uICk7XG5cdH1cblxuXHQvLyBBdHRhY2ggY2FsbGJhY2tzIGZyb20gb3B0aW9uc1xuXHRhbmltYXRpb25cblx0XHQucHJvZ3Jlc3MoIGFuaW1hdGlvbi5vcHRzLnByb2dyZXNzIClcblx0XHQuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0aW9uLm9wdHMuY29tcGxldGUgKVxuXHRcdC5mYWlsKCBhbmltYXRpb24ub3B0cy5mYWlsIClcblx0XHQuYWx3YXlzKCBhbmltYXRpb24ub3B0cy5hbHdheXMgKTtcblxuXHRqUXVlcnkuZngudGltZXIoXG5cdFx0alF1ZXJ5LmV4dGVuZCggdGljaywge1xuXHRcdFx0ZWxlbTogZWxlbSxcblx0XHRcdGFuaW06IGFuaW1hdGlvbixcblx0XHRcdHF1ZXVlOiBhbmltYXRpb24ub3B0cy5xdWV1ZVxuXHRcdH0gKVxuXHQpO1xuXG5cdHJldHVybiBhbmltYXRpb247XG59XG5cbmpRdWVyeS5BbmltYXRpb24gPSBqUXVlcnkuZXh0ZW5kKCBBbmltYXRpb24sIHtcblxuXHR0d2VlbmVyczoge1xuXHRcdFwiKlwiOiBbIGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHtcblx0XHRcdHZhciB0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICk7XG5cdFx0XHRhZGp1c3RDU1MoIHR3ZWVuLmVsZW0sIHByb3AsIHJjc3NOdW0uZXhlYyggdmFsdWUgKSwgdHdlZW4gKTtcblx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHR9IF1cblx0fSxcblxuXHR0d2VlbmVyOiBmdW5jdGlvbiggcHJvcHMsIGNhbGxiYWNrICkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggcHJvcHMgKSApIHtcblx0XHRcdGNhbGxiYWNrID0gcHJvcHM7XG5cdFx0XHRwcm9wcyA9IFsgXCIqXCIgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvcHMgPSBwcm9wcy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApO1xuXHRcdH1cblxuXHRcdHZhciBwcm9wLFxuXHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0bGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdHByb3AgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdID0gQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW107XG5cdFx0XHRBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH1cblx0fSxcblxuXHRwcmVmaWx0ZXJzOiBbIGRlZmF1bHRQcmVmaWx0ZXIgXSxcblxuXHRwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHtcblx0XHRpZiAoIHByZXBlbmQgKSB7XG5cdFx0XHRBbmltYXRpb24ucHJlZmlsdGVycy51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRBbmltYXRpb24ucHJlZmlsdGVycy5wdXNoKCBjYWxsYmFjayApO1xuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuc3BlZWQgPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgZm4gKSB7XG5cdHZhciBvcHQgPSBzcGVlZCAmJiB0eXBlb2Ygc3BlZWQgPT09IFwib2JqZWN0XCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6IHtcblx0XHRjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fFxuXHRcdFx0aXNGdW5jdGlvbiggc3BlZWQgKSAmJiBzcGVlZCxcblx0XHRkdXJhdGlvbjogc3BlZWQsXG5cdFx0ZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFpc0Z1bmN0aW9uKCBlYXNpbmcgKSAmJiBlYXNpbmdcblx0fTtcblxuXHQvLyBHbyB0byB0aGUgZW5kIHN0YXRlIGlmIGZ4IGFyZSBvZmZcblx0aWYgKCBqUXVlcnkuZngub2ZmICkge1xuXHRcdG9wdC5kdXJhdGlvbiA9IDA7XG5cblx0fSBlbHNlIHtcblx0XHRpZiAoIHR5cGVvZiBvcHQuZHVyYXRpb24gIT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRpZiAoIG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzICkge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzWyBvcHQuZHVyYXRpb24gXTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVsdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBOb3JtYWxpemUgb3B0LnF1ZXVlIC0gdHJ1ZS91bmRlZmluZWQvbnVsbCAtPiBcImZ4XCJcblx0aWYgKCBvcHQucXVldWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUgKSB7XG5cdFx0b3B0LnF1ZXVlID0gXCJmeFwiO1xuXHR9XG5cblx0Ly8gUXVldWVpbmdcblx0b3B0Lm9sZCA9IG9wdC5jb21wbGV0ZTtcblxuXHRvcHQuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcblx0XHRpZiAoIGlzRnVuY3Rpb24oIG9wdC5vbGQgKSApIHtcblx0XHRcdG9wdC5vbGQuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0LnF1ZXVlICkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5xdWV1ZSApO1xuXHRcdH1cblx0fTtcblxuXHRyZXR1cm4gb3B0O1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmYWRlVG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cblx0XHQvLyBTaG93IGFueSBoaWRkZW4gZWxlbWVudHMgYWZ0ZXIgc2V0dGluZyBvcGFjaXR5IHRvIDBcblx0XHRyZXR1cm4gdGhpcy5maWx0ZXIoIGlzSGlkZGVuV2l0aGluVHJlZSApLmNzcyggXCJvcGFjaXR5XCIsIDAgKS5zaG93KClcblxuXHRcdFx0Ly8gQW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkXG5cdFx0XHQuZW5kKCkuYW5pbWF0ZSggeyBvcGFjaXR5OiB0byB9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9LFxuXHRhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0dmFyIGVtcHR5ID0galF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSxcblx0XHRcdG9wdGFsbCA9IGpRdWVyeS5zcGVlZCggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSxcblx0XHRcdGRvQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gT3BlcmF0ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3Rcblx0XHRcdFx0dmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9wdGFsbCApO1xuXG5cdFx0XHRcdC8vIEVtcHR5IGFuaW1hdGlvbnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlhdGVseVxuXHRcdFx0XHRpZiAoIGVtcHR5IHx8IGRhdGFQcml2LmdldCggdGhpcywgXCJmaW5pc2hcIiApICkge1xuXHRcdFx0XHRcdGFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0ZG9BbmltYXRpb24uZmluaXNoID0gZG9BbmltYXRpb247XG5cblx0XHRyZXR1cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/XG5cdFx0XHR0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOlxuXHRcdFx0dGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApO1xuXHR9LFxuXHRzdG9wOiBmdW5jdGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHtcblx0XHR2YXIgc3RvcFF1ZXVlID0gZnVuY3Rpb24oIGhvb2tzICkge1xuXHRcdFx0dmFyIHN0b3AgPSBob29rcy5zdG9wO1xuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRzdG9wKCBnb3RvRW5kICk7XG5cdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRnb3RvRW5kID0gY2xlYXJRdWV1ZTtcblx0XHRcdGNsZWFyUXVldWUgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKCBjbGVhclF1ZXVlICYmIHR5cGUgIT09IGZhbHNlICkge1xuXHRcdFx0dGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZGVxdWV1ZSA9IHRydWUsXG5cdFx0XHRcdGluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyBcInF1ZXVlSG9va3NcIixcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0ZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApO1xuXG5cdFx0XHRpZiAoIGluZGV4ICkge1xuXHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICkge1xuXHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBpbmRleCBpbiBkYXRhICkge1xuXHRcdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgJiYgcnJ1bi50ZXN0KCBpbmRleCApICkge1xuXHRcdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiZcblx0XHRcdFx0XHQoIHR5cGUgPT0gbnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSApIHtcblxuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIGdvdG9FbmQgKTtcblx0XHRcdFx0XHRkZXF1ZXVlID0gZmFsc2U7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGFydCB0aGUgbmV4dCBpbiB0aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkLlxuXHRcdFx0Ly8gVGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIgY29tcGxldGUgY2FsbGJhY2tzLCB3aGljaFxuXHRcdFx0Ly8gd2lsbCBkZXF1ZXVlIGJ1dCBvbmx5IGlmIHRoZXkgd2VyZSBnb3RvRW5kLlxuXHRcdFx0aWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblx0ZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRpZiAoIHR5cGUgIT09IGZhbHNlICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpbmRleCxcblx0XHRcdFx0ZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApLFxuXHRcdFx0XHRxdWV1ZSA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlXCIgXSxcblx0XHRcdFx0aG9va3MgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgXSxcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0bGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5sZW5ndGggOiAwO1xuXG5cdFx0XHQvLyBFbmFibGUgZmluaXNoaW5nIGZsYWcgb24gcHJpdmF0ZSBkYXRhXG5cdFx0XHRkYXRhLmZpbmlzaCA9IHRydWU7XG5cblx0XHRcdC8vIEVtcHR5IHRoZSBxdWV1ZSBmaXJzdFxuXHRcdFx0alF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBbXSApO1xuXG5cdFx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnN0b3AgKSB7XG5cdFx0XHRcdGhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSB7XG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGluZGV4IF0uZmluaXNoICkge1xuXHRcdFx0XHRcdHF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWdcblx0XHRcdGRlbGV0ZSBkYXRhLmZpbmlzaDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJ0b2dnbGVcIiwgXCJzaG93XCIsIFwiaGlkZVwiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgY3NzRm4gPSBqUXVlcnkuZm5bIG5hbWUgXTtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSBcImJvb2xlYW5cIiA/XG5cdFx0XHRjc3NGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICkgOlxuXHRcdFx0dGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSApO1xuXG4vLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zXG5qUXVlcnkuZWFjaCgge1xuXHRzbGlkZURvd246IGdlbkZ4KCBcInNob3dcIiApLFxuXHRzbGlkZVVwOiBnZW5GeCggXCJoaWRlXCIgKSxcblx0c2xpZGVUb2dnbGU6IGdlbkZ4KCBcInRvZ2dsZVwiICksXG5cdGZhZGVJbjogeyBvcGFjaXR5OiBcInNob3dcIiB9LFxuXHRmYWRlT3V0OiB7IG9wYWNpdHk6IFwiaGlkZVwiIH0sXG5cdGZhZGVUb2dnbGU6IHsgb3BhY2l0eTogXCJ0b2dnbGVcIiB9XG59LCBmdW5jdGlvbiggbmFtZSwgcHJvcHMgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkudGltZXJzID0gW107XG5qUXVlcnkuZngudGljayA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgdGltZXIsXG5cdFx0aSA9IDAsXG5cdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycztcblxuXHRmeE5vdyA9IERhdGUubm93KCk7XG5cblx0Zm9yICggOyBpIDwgdGltZXJzLmxlbmd0aDsgaSsrICkge1xuXHRcdHRpbWVyID0gdGltZXJzWyBpIF07XG5cblx0XHQvLyBSdW4gdGhlIHRpbWVyIGFuZCBzYWZlbHkgcmVtb3ZlIGl0IHdoZW4gZG9uZSAoYWxsb3dpbmcgZm9yIGV4dGVybmFsIHJlbW92YWwpXG5cdFx0aWYgKCAhdGltZXIoKSAmJiB0aW1lcnNbIGkgXSA9PT0gdGltZXIgKSB7XG5cdFx0XHR0aW1lcnMuc3BsaWNlKCBpLS0sIDEgKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoICF0aW1lcnMubGVuZ3RoICkge1xuXHRcdGpRdWVyeS5meC5zdG9wKCk7XG5cdH1cblx0ZnhOb3cgPSB1bmRlZmluZWQ7XG59O1xuXG5qUXVlcnkuZngudGltZXIgPSBmdW5jdGlvbiggdGltZXIgKSB7XG5cdGpRdWVyeS50aW1lcnMucHVzaCggdGltZXIgKTtcblx0alF1ZXJ5LmZ4LnN0YXJ0KCk7XG59O1xuXG5qUXVlcnkuZnguaW50ZXJ2YWwgPSAxMztcbmpRdWVyeS5meC5zdGFydCA9IGZ1bmN0aW9uKCkge1xuXHRpZiAoIGluUHJvZ3Jlc3MgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aW5Qcm9ncmVzcyA9IHRydWU7XG5cdHNjaGVkdWxlKCk7XG59O1xuXG5qUXVlcnkuZnguc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRpblByb2dyZXNzID0gbnVsbDtcbn07XG5cbmpRdWVyeS5meC5zcGVlZHMgPSB7XG5cdHNsb3c6IDYwMCxcblx0ZmFzdDogMjAwLFxuXG5cdC8vIERlZmF1bHQgc3BlZWRcblx0X2RlZmF1bHQ6IDQwMFxufTtcblxuXG4vLyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBDbGludCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Npb24uXG4vLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMDAzMjQwMTQ3NDcvaHR0cDovL2JsaW5kc2lnbmFscy5jb20vaW5kZXgucGhwLzIwMDkvMDcvanF1ZXJ5LWRlbGF5L1xualF1ZXJ5LmZuLmRlbGF5ID0gZnVuY3Rpb24oIHRpbWUsIHR5cGUgKSB7XG5cdHRpbWUgPSBqUXVlcnkuZnggPyBqUXVlcnkuZnguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7XG5cdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkge1xuXHRcdHZhciB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTtcblx0XHRob29rcy5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7XG5cdFx0fTtcblx0fSApO1xufTtcblxuXG4oIGZ1bmN0aW9uKCkge1xuXHR2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKSxcblx0XHRzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcInNlbGVjdFwiICksXG5cdFx0b3B0ID0gc2VsZWN0LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcIm9wdGlvblwiICkgKTtcblxuXHRpbnB1dC50eXBlID0gXCJjaGVja2JveFwiO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjMgb25seVxuXHQvLyBEZWZhdWx0IHZhbHVlIGZvciBhIGNoZWNrYm94IHNob3VsZCBiZSBcIm9uXCJcblx0c3VwcG9ydC5jaGVja09uID0gaW5wdXQudmFsdWUgIT09IFwiXCI7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdC8vIE11c3QgYWNjZXNzIHNlbGVjdGVkSW5kZXggdG8gbWFrZSBkZWZhdWx0IG9wdGlvbnMgc2VsZWN0XG5cdHN1cHBvcnQub3B0U2VsZWN0ZWQgPSBvcHQuc2VsZWN0ZWQ7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdC8vIEFuIGlucHV0IGxvc2VzIGl0cyB2YWx1ZSBhZnRlciBiZWNvbWluZyBhIHJhZGlvXG5cdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cdGlucHV0LnZhbHVlID0gXCJ0XCI7XG5cdGlucHV0LnR5cGUgPSBcInJhZGlvXCI7XG5cdHN1cHBvcnQucmFkaW9WYWx1ZSA9IGlucHV0LnZhbHVlID09PSBcInRcIjtcbn0gKSgpO1xuXG5cbnZhciBib29sSG9vayxcblx0YXR0ckhhbmRsZSA9IGpRdWVyeS5leHByLmF0dHJIYW5kbGU7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0YXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWRcblx0XHRpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSwgdmFsdWUgKTtcblx0XHR9XG5cblx0XHQvLyBBdHRyaWJ1dGUgaG9va3MgYXJlIGRldGVybWluZWQgYnkgdGhlIGxvd2VyY2FzZSB2ZXJzaW9uXG5cdFx0Ly8gR3JhYiBuZWNlc3NhcnkgaG9vayBpZiBvbmUgaXMgZGVmaW5lZFxuXHRcdGlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXHRcdFx0aG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fFxuXHRcdFx0XHQoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSApID8gYm9vbEhvb2sgOiB1bmRlZmluZWQgKTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHZhbHVlID09PSBudWxsICkge1xuXHRcdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHQoIHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCB2YWx1ZSArIFwiXCIgKTtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkge1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cblx0XHRyZXQgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBuYW1lICk7XG5cblx0XHQvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwgd2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5lZFxuXHRcdHJldHVybiByZXQgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJldDtcblx0fSxcblxuXHRhdHRySG9va3M6IHtcblx0XHR0eXBlOiB7XG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhc3VwcG9ydC5yYWRpb1ZhbHVlICYmIHZhbHVlID09PSBcInJhZGlvXCIgJiZcblx0XHRcdFx0XHRub2RlTmFtZSggZWxlbSwgXCJpbnB1dFwiICkgKSB7XG5cdFx0XHRcdFx0dmFyIHZhbCA9IGVsZW0udmFsdWU7XG5cdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCB2YWx1ZSApO1xuXHRcdFx0XHRcdGlmICggdmFsICkge1xuXHRcdFx0XHRcdFx0ZWxlbS52YWx1ZSA9IHZhbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHR2YXIgbmFtZSxcblx0XHRcdGkgPSAwLFxuXG5cdFx0XHQvLyBBdHRyaWJ1dGUgbmFtZXMgY2FuIGNvbnRhaW4gbm9uLUhUTUwgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG5cdFx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTJcblx0XHRcdGF0dHJOYW1lcyA9IHZhbHVlICYmIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICk7XG5cblx0XHRpZiAoIGF0dHJOYW1lcyAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0d2hpbGUgKCAoIG5hbWUgPSBhdHRyTmFtZXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIEhvb2tzIGZvciBib29sZWFuIGF0dHJpYnV0ZXNcbmJvb2xIb29rID0ge1xuXHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHtcblx0XHRpZiAoIHZhbHVlID09PSBmYWxzZSApIHtcblxuXHRcdFx0Ly8gUmVtb3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3aGVuIHNldCB0byBmYWxzZVxuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cbn07XG5cbmpRdWVyeS5lYWNoKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCggL1xcdysvZyApLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0dmFyIGdldHRlciA9IGF0dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyO1xuXG5cdGF0dHJIYW5kbGVbIG5hbWUgXSA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgcmV0LCBoYW5kbGUsXG5cdFx0XHRsb3dlcmNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cblx0XHRcdC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3AgYnkgdGVtcG9yYXJpbHkgcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBnZXR0ZXJcblx0XHRcdGhhbmRsZSA9IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXTtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IHJldDtcblx0XHRcdHJldCA9IGdldHRlciggZWxlbSwgbmFtZSwgaXNYTUwgKSAhPSBudWxsID9cblx0XHRcdFx0bG93ZXJjYXNlTmFtZSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0XHRhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF0gPSBoYW5kbGU7XG5cdFx0fVxuXHRcdHJldHVybiByZXQ7XG5cdH07XG59ICk7XG5cblxuXG5cbnZhciByZm9jdXNhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxcblx0cmNsaWNrYWJsZSA9IC9eKD86YXxhcmVhKSQvaTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LnByb3AsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZVByb3A6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGVsZXRlIHRoaXNbIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZSBdO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHR2YXIgcmV0LCBob29rcyxcblx0XHRcdG5UeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRcdC8vIERvbid0IGdldC9zZXQgcHJvcGVydGllcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcblx0XHRpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXG5cdFx0XHQvLyBGaXggbmFtZSBhbmQgYXR0YWNoIGhvb2tzXG5cdFx0XHRuYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lO1xuXHRcdFx0aG9va3MgPSBqUXVlcnkucHJvcEhvb2tzWyBuYW1lIF07XG5cdFx0fVxuXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuICggZWxlbVsgbmFtZSBdID0gdmFsdWUgKTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkge1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZWxlbVsgbmFtZSBdO1xuXHR9LFxuXG5cdHByb3BIb29rczoge1xuXHRcdHRhYkluZGV4OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0XHRcdFx0Ly8gZWxlbS50YWJJbmRleCBkb2Vzbid0IGFsd2F5cyByZXR1cm4gdGhlXG5cdFx0XHRcdC8vIGNvcnJlY3QgdmFsdWUgd2hlbiBpdCBoYXNuJ3QgYmVlbiBleHBsaWNpdGx5IHNldFxuXHRcdFx0XHQvLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNDExMTYyMzMzNDcvaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC9cblx0XHRcdFx0Ly8gVXNlIHByb3BlciBhdHRyaWJ1dGUgcmV0cmlldmFsKCMxMjA3Milcblx0XHRcdFx0dmFyIHRhYmluZGV4ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ0YWJpbmRleFwiICk7XG5cblx0XHRcdFx0aWYgKCB0YWJpbmRleCApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2VJbnQoIHRhYmluZGV4LCAxMCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8XG5cdFx0XHRcdFx0cmNsaWNrYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgJiZcblx0XHRcdFx0XHRlbGVtLmhyZWZcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHByb3BGaXg6IHtcblx0XHRcImZvclwiOiBcImh0bWxGb3JcIixcblx0XHRcImNsYXNzXCI6IFwiY2xhc3NOYW1lXCJcblx0fVxufSApO1xuXG4vLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcbi8vIEFjY2Vzc2luZyB0aGUgc2VsZWN0ZWRJbmRleCBwcm9wZXJ0eVxuLy8gZm9yY2VzIHRoZSBicm93c2VyIHRvIHJlc3BlY3Qgc2V0dGluZyBzZWxlY3RlZFxuLy8gb24gdGhlIG9wdGlvblxuLy8gVGhlIGdldHRlciBlbnN1cmVzIGEgZGVmYXVsdCBvcHRpb24gaXMgc2VsZWN0ZWRcbi8vIHdoZW4gaW4gYW4gb3B0Z3JvdXBcbi8vIGVzbGludCBydWxlIFwibm8tdW51c2VkLWV4cHJlc3Npb25zXCIgaXMgZGlzYWJsZWQgZm9yIHRoaXMgY29kZVxuLy8gc2luY2UgaXQgY29uc2lkZXJzIHN1Y2ggYWNjZXNzaW9ucyBub29wXG5pZiAoICFzdXBwb3J0Lm9wdFNlbGVjdGVkICkge1xuXHRqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICYmIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOiBcIm9mZlwiICovXG5cblx0XHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRpZiAoIHBhcmVudCApIHtcblx0XHRcdFx0cGFyZW50LnNlbGVjdGVkSW5kZXg7XG5cblx0XHRcdFx0aWYgKCBwYXJlbnQucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG5qUXVlcnkuZWFjaCggW1xuXHRcInRhYkluZGV4XCIsXG5cdFwicmVhZE9ubHlcIixcblx0XCJtYXhMZW5ndGhcIixcblx0XCJjZWxsU3BhY2luZ1wiLFxuXHRcImNlbGxQYWRkaW5nXCIsXG5cdFwicm93U3BhblwiLFxuXHRcImNvbFNwYW5cIixcblx0XCJ1c2VNYXBcIixcblx0XCJmcmFtZUJvcmRlclwiLFxuXHRcImNvbnRlbnRFZGl0YWJsZVwiXG5dLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnByb3BGaXhbIHRoaXMudG9Mb3dlckNhc2UoKSBdID0gdGhpcztcbn0gKTtcblxuXG5cblxuXHQvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBhY2NvcmRpbmcgdG8gSFRNTCBzcGVjXG5cdC8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFwc2UtYXNjaWktd2hpdGVzcGFjZVxuXHRmdW5jdGlvbiBzdHJpcEFuZENvbGxhcHNlKCB2YWx1ZSApIHtcblx0XHR2YXIgdG9rZW5zID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0XHRyZXR1cm4gdG9rZW5zLmpvaW4oIFwiIFwiICk7XG5cdH1cblxuXG5mdW5jdGlvbiBnZXRDbGFzcyggZWxlbSApIHtcblx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCBcImNsYXNzXCIgKSB8fCBcIlwiO1xufVxuXG5mdW5jdGlvbiBjbGFzc2VzVG9BcnJheSggdmFsdWUgKSB7XG5cdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cdH1cblx0cmV0dXJuIFtdO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGNsYXNzZXMgPSBjbGFzc2VzVG9BcnJheSggdmFsdWUgKTtcblxuXHRcdGlmICggY2xhc3Nlcy5sZW5ndGggKSB7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTtcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHtcblx0XHRcdFx0XHRcdGlmICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApIDwgMCApIHtcblx0XHRcdFx0XHRcdFx0Y3VyICs9IGNsYXp6ICsgXCIgXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsIGZpbmFsVmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRyZW1vdmVDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYXR0ciggXCJjbGFzc1wiLCBcIlwiICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NlcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc2VzLmxlbmd0aCApIHtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApO1xuXG5cdFx0XHRcdC8vIFRoaXMgZXhwcmVzc2lvbiBpcyBoZXJlIGZvciBiZXR0ZXIgY29tcHJlc3NpYmlsaXR5IChzZWUgYWRkQ2xhc3MpXG5cdFx0XHRcdGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyBcIiBcIiApO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSAqYWxsKiBpbnN0YW5jZXNcblx0XHRcdFx0XHRcdHdoaWxlICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciA9IGN1ci5yZXBsYWNlKCBcIiBcIiArIGNsYXp6ICsgXCIgXCIsIFwiIFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsIGZpbmFsVmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCApIHtcblx0XHR2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZSxcblx0XHRcdGlzVmFsaWRWYWx1ZSA9IHR5cGUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSggdmFsdWUgKTtcblxuXHRcdGlmICggdHlwZW9mIHN0YXRlVmFsID09PSBcImJvb2xlYW5cIiAmJiBpc1ZhbGlkVmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gc3RhdGVWYWwgPyB0aGlzLmFkZENsYXNzKCB2YWx1ZSApIDogdGhpcy5yZW1vdmVDbGFzcyggdmFsdWUgKTtcblx0XHR9XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkudG9nZ2xlQ2xhc3MoXG5cdFx0XHRcdFx0dmFsdWUuY2FsbCggdGhpcywgaSwgZ2V0Q2xhc3MoIHRoaXMgKSwgc3RhdGVWYWwgKSxcblx0XHRcdFx0XHRzdGF0ZVZhbFxuXHRcdFx0XHQpO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGNsYXNzTmFtZSwgaSwgc2VsZiwgY2xhc3NOYW1lcztcblxuXHRcdFx0aWYgKCBpc1ZhbGlkVmFsdWUgKSB7XG5cblx0XHRcdFx0Ly8gVG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXNcblx0XHRcdFx0aSA9IDA7XG5cdFx0XHRcdHNlbGYgPSBqUXVlcnkoIHRoaXMgKTtcblx0XHRcdFx0Y2xhc3NOYW1lcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0XHRcdHdoaWxlICggKCBjbGFzc05hbWUgPSBjbGFzc05hbWVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNwYWNlIHNlcGFyYXRlZCBsaXN0XG5cdFx0XHRcdFx0aWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKSApIHtcblx0XHRcdFx0XHRcdHNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzZWxmLmFkZENsYXNzKCBjbGFzc05hbWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWVcblx0XHRcdH0gZWxzZSBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZSA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0XHRcdGNsYXNzTmFtZSA9IGdldENsYXNzKCB0aGlzICk7XG5cdFx0XHRcdGlmICggY2xhc3NOYW1lICkge1xuXG5cdFx0XHRcdFx0Ly8gU3RvcmUgY2xhc3NOYW1lIGlmIHNldFxuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIsIGNsYXNzTmFtZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgY2xhc3MgbmFtZSBvciBpZiB3ZSdyZSBwYXNzZWQgYGZhbHNlYCxcblx0XHRcdFx0Ly8gdGhlbiByZW1vdmUgdGhlIHdob2xlIGNsYXNzbmFtZSAoaWYgdGhlcmUgd2FzIG9uZSwgdGhlIGFib3ZlIHNhdmVkIGl0KS5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGJyaW5nIGJhY2sgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgc2F2ZWQgKGlmIGFueXRoaW5nKSxcblx0XHRcdFx0Ly8gZmFsbGluZyBiYWNrIHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm90aGluZyB3YXMgc3RvcmVkLlxuXHRcdFx0XHRpZiAoIHRoaXMuc2V0QXR0cmlidXRlICkge1xuXHRcdFx0XHRcdHRoaXMuc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsXG5cdFx0XHRcdFx0XHRjbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID9cblx0XHRcdFx0XHRcdFwiXCIgOlxuXHRcdFx0XHRcdFx0ZGF0YVByaXYuZ2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiApIHx8IFwiXCJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGhhc0NsYXNzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZSwgZWxlbSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Y2xhc3NOYW1lID0gXCIgXCIgKyBzZWxlY3RvciArIFwiIFwiO1xuXHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHQoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggZ2V0Q2xhc3MoIGVsZW0gKSApICsgXCIgXCIgKS5pbmRleE9mKCBjbGFzc05hbWUgKSA+IC0xICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufSApO1xuXG5cblxuXG52YXIgcnJldHVybiA9IC9cXHIvZztcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHR2YWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgaG9va3MsIHJldCwgdmFsdWVJc0Z1bmN0aW9uLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUgXSB8fFxuXHRcdFx0XHRcdGpRdWVyeS52YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdFx0aWYgKCBob29rcyAmJlxuXHRcdFx0XHRcdFwiZ2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0XHQoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgXCJ2YWx1ZVwiICkgKSAhPT0gdW5kZWZpbmVkXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXQgPSBlbGVtLnZhbHVlO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBtb3N0IGNvbW1vbiBzdHJpbmcgY2FzZXNcblx0XHRcdFx0aWYgKCB0eXBlb2YgcmV0ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHRcdHJldHVybiByZXQucmVwbGFjZSggcnJldHVybiwgXCJcIiApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSGFuZGxlIGNhc2VzIHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyXG5cdFx0XHRcdHJldHVybiByZXQgPT0gbnVsbCA/IFwiXCIgOiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YWx1ZUlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHR2YXIgdmFsO1xuXG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIGpRdWVyeSggdGhpcyApLnZhbCgpICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWwgPSB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgXCJcIjsgY29udmVydCBudW1iZXJzIHRvIHN0cmluZ1xuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0dmFsID0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsICs9IFwiXCI7XG5cblx0XHRcdH0gZWxzZSBpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHR2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSArIFwiXCI7XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdC8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nXG5cdFx0XHRpZiAoICFob29rcyB8fCAhKCBcInNldFwiIGluIGhvb2tzICkgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsIFwidmFsdWVcIiApID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHRoaXMudmFsdWUgPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0dmFsSG9va3M6IHtcblx0XHRvcHRpb246IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0dmFyIHZhbCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIFwidmFsdWVcIiApO1xuXHRcdFx0XHRyZXR1cm4gdmFsICE9IG51bGwgP1xuXHRcdFx0XHRcdHZhbCA6XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEgb25seVxuXHRcdFx0XHRcdC8vIG9wdGlvbi50ZXh0IHRocm93cyBleGNlcHRpb25zICgjMTQ2ODYsICMxNDg1OClcblx0XHRcdFx0XHQvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZVxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNlXG5cdFx0XHRcdFx0c3RyaXBBbmRDb2xsYXBzZSggalF1ZXJ5LnRleHQoIGVsZW0gKSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0c2VsZWN0OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgdmFsdWUsIG9wdGlvbiwgaSxcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LFxuXHRcdFx0XHRcdG9uZSA9IGVsZW0udHlwZSA9PT0gXCJzZWxlY3Qtb25lXCIsXG5cdFx0XHRcdFx0dmFsdWVzID0gb25lID8gbnVsbCA6IFtdLFxuXHRcdFx0XHRcdG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0XHRcdGlmICggaW5kZXggPCAwICkge1xuXHRcdFx0XHRcdGkgPSBtYXg7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpID0gb25lID8gaW5kZXggOiAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuXHRcdFx0XHRmb3IgKCA7IGkgPCBtYXg7IGkrKyApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdC8vIElFOC05IGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKVxuXHRcdFx0XHRcdGlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJlxuXG5cdFx0XHRcdFx0XHRcdC8vIERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcblx0XHRcdFx0XHRcdFx0IW9wdGlvbi5kaXNhYmxlZCAmJlxuXHRcdFx0XHRcdFx0XHQoICFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fFxuXHRcdFx0XHRcdFx0XHRcdCFub2RlTmFtZSggb3B0aW9uLnBhcmVudE5vZGUsIFwib3B0Z3JvdXBcIiApICkgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb25cblx0XHRcdFx0XHRcdHZhbHVlID0galF1ZXJ5KCBvcHRpb24gKS52YWwoKTtcblxuXHRcdFx0XHRcdFx0Ly8gV2UgZG9uJ3QgbmVlZCBhbiBhcnJheSBmb3Igb25lIHNlbGVjdHNcblx0XHRcdFx0XHRcdGlmICggb25lICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE11bHRpLVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5XG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBvcHRpb25TZXQsIG9wdGlvbixcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdHZhbHVlcyA9IGpRdWVyeS5tYWtlQXJyYXkoIHZhbHVlICksXG5cdFx0XHRcdFx0aSA9IG9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbmQtYXNzaWduICovXG5cblx0XHRcdFx0XHRpZiAoIG9wdGlvbi5zZWxlY3RlZCA9XG5cdFx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggalF1ZXJ5LnZhbEhvb2tzLm9wdGlvbi5nZXQoIG9wdGlvbiApLCB2YWx1ZXMgKSA+IC0xXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRvcHRpb25TZXQgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tY29uZC1hc3NpZ24gKi9cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEZvcmNlIGJyb3dzZXJzIHRvIGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFsdWUgaXMgc2V0XG5cdFx0XHRcdGlmICggIW9wdGlvblNldCApIHtcblx0XHRcdFx0XHRlbGVtLnNlbGVjdGVkSW5kZXggPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG4vLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlclxualF1ZXJ5LmVhY2goIFsgXCJyYWRpb1wiLCBcImNoZWNrYm94XCIgXSwgZnVuY3Rpb24oKSB7XG5cdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdID0ge1xuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KCBlbGVtICkudmFsKCksIHZhbHVlICkgPiAtMSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0aWYgKCAhc3VwcG9ydC5jaGVja09uICkge1xuXHRcdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdLmdldCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gbnVsbCA/IFwib25cIiA6IGVsZW0udmFsdWU7XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG4vLyBSZXR1cm4galF1ZXJ5IGZvciBhdHRyaWJ1dGVzLW9ubHkgaW5jbHVzaW9uXG5cblxuc3VwcG9ydC5mb2N1c2luID0gXCJvbmZvY3VzaW5cIiBpbiB3aW5kb3c7XG5cblxudmFyIHJmb2N1c01vcnBoID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLFxuXHRzdG9wUHJvcGFnYXRpb25DYWxsYmFjayA9IGZ1bmN0aW9uKCBlICkge1xuXHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH07XG5cbmpRdWVyeS5leHRlbmQoIGpRdWVyeS5ldmVudCwge1xuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkge1xuXG5cdFx0dmFyIGksIGN1ciwgdG1wLCBidWJibGVUeXBlLCBvbnR5cGUsIGhhbmRsZSwgc3BlY2lhbCwgbGFzdEVsZW1lbnQsXG5cdFx0XHRldmVudFBhdGggPSBbIGVsZW0gfHwgZG9jdW1lbnQgXSxcblx0XHRcdHR5cGUgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwidHlwZVwiICkgPyBldmVudC50eXBlIDogZXZlbnQsXG5cdFx0XHRuYW1lc3BhY2VzID0gaGFzT3duLmNhbGwoIGV2ZW50LCBcIm5hbWVzcGFjZVwiICkgPyBldmVudC5uYW1lc3BhY2Uuc3BsaXQoIFwiLlwiICkgOiBbXTtcblxuXHRcdGN1ciA9IGxhc3RFbGVtZW50ID0gdG1wID0gZWxlbSA9IGVsZW0gfHwgZG9jdW1lbnQ7XG5cblx0XHQvLyBEb24ndCBkbyBldmVudHMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGZvY3VzL2JsdXIgbW9ycGhzIHRvIGZvY3VzaW4vb3V0OyBlbnN1cmUgd2UncmUgbm90IGZpcmluZyB0aGVtIHJpZ2h0IG5vd1xuXHRcdGlmICggcmZvY3VzTW9ycGgudGVzdCggdHlwZSArIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIHR5cGUuaW5kZXhPZiggXCIuXCIgKSA+IC0xICkge1xuXG5cdFx0XHQvLyBOYW1lc3BhY2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eXBlIGluIGhhbmRsZSgpXG5cdFx0XHRuYW1lc3BhY2VzID0gdHlwZS5zcGxpdCggXCIuXCIgKTtcblx0XHRcdHR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7XG5cdFx0XHRuYW1lc3BhY2VzLnNvcnQoKTtcblx0XHR9XG5cdFx0b250eXBlID0gdHlwZS5pbmRleE9mKCBcIjpcIiApIDwgMCAmJiBcIm9uXCIgKyB0eXBlO1xuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nXG5cdFx0ZXZlbnQgPSBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/XG5cdFx0XHRldmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCB0eXBlLCB0eXBlb2YgZXZlbnQgPT09IFwib2JqZWN0XCIgJiYgZXZlbnQgKTtcblxuXHRcdC8vIFRyaWdnZXIgYml0bWFzazogJiAxIGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5IChhbHdheXMgdHJ1ZSlcblx0XHRldmVudC5pc1RyaWdnZXIgPSBvbmx5SGFuZGxlcnMgPyAyIDogMztcblx0XHRldmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oIFwiLlwiICk7XG5cdFx0ZXZlbnQucm5hbWVzcGFjZSA9IGV2ZW50Lm5hbWVzcGFjZSA/XG5cdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKCBcIlxcXFwuKD86LipcXFxcLnwpXCIgKSArIFwiKFxcXFwufCQpXCIgKSA6XG5cdFx0XHRudWxsO1xuXG5cdFx0Ly8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2VkXG5cdFx0ZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkO1xuXHRcdGlmICggIWV2ZW50LnRhcmdldCApIHtcblx0XHRcdGV2ZW50LnRhcmdldCA9IGVsZW07XG5cdFx0fVxuXG5cdFx0Ly8gQ2xvbmUgYW55IGluY29taW5nIGRhdGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdFxuXHRcdGRhdGEgPSBkYXRhID09IG51bGwgP1xuXHRcdFx0WyBldmVudCBdIDpcblx0XHRcdGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApO1xuXG5cdFx0Ly8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lc1xuXHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBldmVudCBwcm9wYWdhdGlvbiBwYXRoIGluIGFkdmFuY2UsIHBlciBXM0MgZXZlbnRzIHNwZWMgKCM5OTUxKVxuXHRcdC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpXG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFzcGVjaWFsLm5vQnViYmxlICYmICFpc1dpbmRvdyggZWxlbSApICkge1xuXG5cdFx0XHRidWJibGVUeXBlID0gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgfHwgdHlwZTtcblx0XHRcdGlmICggIXJmb2N1c01vcnBoLnRlc3QoIGJ1YmJsZVR5cGUgKyB0eXBlICkgKSB7XG5cdFx0XHRcdGN1ciA9IGN1ci5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXHRcdFx0Zm9yICggOyBjdXI7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggY3VyICk7XG5cdFx0XHRcdHRtcCA9IGN1cjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT25seSBhZGQgd2luZG93IGlmIHdlIGdvdCB0byBkb2N1bWVudCAoZS5nLiwgbm90IHBsYWluIG9iaiBvciBkZXRhY2hlZCBET00pXG5cdFx0XHRpZiAoIHRtcCA9PT0gKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQgKSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0bXAucGFyZW50V2luZG93IHx8IHdpbmRvdyApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBhdGhcblx0XHRpID0gMDtcblx0XHR3aGlsZSAoICggY3VyID0gZXZlbnRQYXRoWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0bGFzdEVsZW1lbnQgPSBjdXI7XG5cdFx0XHRldmVudC50eXBlID0gaSA+IDEgP1xuXHRcdFx0XHRidWJibGVUeXBlIDpcblx0XHRcdFx0c3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlO1xuXG5cdFx0XHQvLyBqUXVlcnkgaGFuZGxlclxuXHRcdFx0aGFuZGxlID0gKCBkYXRhUHJpdi5nZXQoIGN1ciwgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSAmJlxuXHRcdFx0XHRkYXRhUHJpdi5nZXQoIGN1ciwgXCJoYW5kbGVcIiApO1xuXHRcdFx0aWYgKCBoYW5kbGUgKSB7XG5cdFx0XHRcdGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE5hdGl2ZSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5cGUgXTtcblx0XHRcdGlmICggaGFuZGxlICYmIGhhbmRsZS5hcHBseSAmJiBhY2NlcHREYXRhKCBjdXIgKSApIHtcblx0XHRcdFx0ZXZlbnQucmVzdWx0ID0gaGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdFx0aWYgKCBldmVudC5yZXN1bHQgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZXZlbnQudHlwZSA9IHR5cGU7XG5cblx0XHQvLyBJZiBub2JvZHkgcHJldmVudGVkIHRoZSBkZWZhdWx0IGFjdGlvbiwgZG8gaXQgbm93XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHtcblxuXHRcdFx0aWYgKCAoICFzcGVjaWFsLl9kZWZhdWx0IHx8XG5cdFx0XHRcdHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoIGV2ZW50UGF0aC5wb3AoKSwgZGF0YSApID09PSBmYWxzZSApICYmXG5cdFx0XHRcdGFjY2VwdERhdGEoIGVsZW0gKSApIHtcblxuXHRcdFx0XHQvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGV2ZW50LlxuXHRcdFx0XHQvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mgd2hlcmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAoIzYxNzApXG5cdFx0XHRcdGlmICggb250eXBlICYmIGlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFpc1dpbmRvdyggZWxlbSApICkge1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgcmUtdHJpZ2dlciBhbiBvbkZPTyBldmVudCB3aGVuIHdlIGNhbGwgaXRzIEZPTygpIG1ldGhvZFxuXHRcdFx0XHRcdHRtcCA9IGVsZW1bIG9udHlwZSBdO1xuXG5cdFx0XHRcdFx0aWYgKCB0bXAgKSB7XG5cdFx0XHRcdFx0XHRlbGVtWyBvbnR5cGUgXSA9IG51bGw7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJldmVudCByZS10cmlnZ2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJlYWR5IGJ1YmJsZWQgaXQgYWJvdmVcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdHlwZTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZWxlbVsgdHlwZSBdKCk7XG5cblx0XHRcdFx0XHRpZiAoIGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRcdFx0XHRsYXN0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBzdG9wUHJvcGFnYXRpb25DYWxsYmFjayApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gdG1wO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0Ly8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lXG5cdC8vIFVzZWQgb25seSBmb3IgYGZvY3VzKGluIHwgb3V0KWAgZXZlbnRzXG5cdHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQgKSB7XG5cdFx0dmFyIGUgPSBqUXVlcnkuZXh0ZW5kKFxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCgpLFxuXHRcdFx0ZXZlbnQsXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdGlzU2ltdWxhdGVkOiB0cnVlXG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBlLCBudWxsLCBlbGVtICk7XG5cdH1cblxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApO1xuXHRcdH0gKTtcblx0fSxcblx0dHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBlbGVtID0gdGhpc1sgMCBdO1xuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgZWxlbSwgdHJ1ZSApO1xuXHRcdH1cblx0fVxufSApO1xuXG5cbi8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00NFxuLy8gRmlyZWZveCBkb2Vzbid0IGhhdmUgZm9jdXMoaW4gfCBvdXQpIGV2ZW50c1xuLy8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc3ODdcbi8vXG4vLyBTdXBwb3J0OiBDaHJvbWUgPD00OCAtIDQ5LCBTYWZhcmkgPD05LjAgLSA5LjFcbi8vIGZvY3VzKGluIHwgb3V0KSBldmVudHMgZmlyZSBhZnRlciBmb2N1cyAmIGJsdXIgZXZlbnRzLFxuLy8gd2hpY2ggaXMgc3BlYyB2aW9sYXRpb24gLSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50cy1mb2N1c2V2ZW50LWV2ZW50LW9yZGVyXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ0OTg1N1xuaWYgKCAhc3VwcG9ydC5mb2N1c2luICkge1xuXHRqUXVlcnkuZWFjaCggeyBmb2N1czogXCJmb2N1c2luXCIsIGJsdXI6IFwiZm9jdXNvdXRcIiB9LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXG5cdFx0Ly8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXRcblx0XHR2YXIgaGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdGpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICkgKTtcblx0XHR9O1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0ge1xuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMsXG5cdFx0XHRcdFx0YXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0aWYgKCAhYXR0YWNoZXMgKSB7XG5cdFx0XHRcdFx0ZG9jLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4LCAoIGF0dGFjaGVzIHx8IDAgKSArIDEgKTtcblx0XHRcdH0sXG5cdFx0XHR0ZWFyZG93bjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKSAtIDE7XG5cblx0XHRcdFx0aWYgKCAhYXR0YWNoZXMgKSB7XG5cdFx0XHRcdFx0ZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcblx0XHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4LCBhdHRhY2hlcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fSApO1xufVxudmFyIGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uO1xuXG52YXIgbm9uY2UgPSBEYXRlLm5vdygpO1xuXG52YXIgcnF1ZXJ5ID0gKCAvXFw/LyApO1xuXG5cblxuLy8gQ3Jvc3MtYnJvd3NlciB4bWwgcGFyc2luZ1xualF1ZXJ5LnBhcnNlWE1MID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdHZhciB4bWw7XG5cdGlmICggIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seVxuXHQvLyBJRSB0aHJvd3Mgb24gcGFyc2VGcm9tU3RyaW5nIHdpdGggaW52YWxpZCBpbnB1dC5cblx0dHJ5IHtcblx0XHR4bWwgPSAoIG5ldyB3aW5kb3cuRE9NUGFyc2VyKCkgKS5wYXJzZUZyb21TdHJpbmcoIGRhdGEsIFwidGV4dC94bWxcIiApO1xuXHR9IGNhdGNoICggZSApIHtcblx0XHR4bWwgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRpZiAoICF4bWwgfHwgeG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcInBhcnNlcmVycm9yXCIgKS5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmVycm9yKCBcIkludmFsaWQgWE1MOiBcIiArIGRhdGEgKTtcblx0fVxuXHRyZXR1cm4geG1sO1xufTtcblxuXG52YXJcblx0cmJyYWNrZXQgPSAvXFxbXFxdJC8sXG5cdHJDUkxGID0gL1xccj9cXG4vZyxcblx0cnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLFxuXHRyc3VibWl0dGFibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7XG5cbmZ1bmN0aW9uIGJ1aWxkUGFyYW1zKCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHtcblx0dmFyIG5hbWU7XG5cblx0aWYgKCBBcnJheS5pc0FycmF5KCBvYmogKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBhcnJheSBpdGVtLlxuXHRcdGpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkge1xuXHRcdFx0aWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHtcblxuXHRcdFx0XHQvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuXG5cdFx0XHRcdGFkZCggcHJlZml4LCB2ICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguXG5cdFx0XHRcdGJ1aWxkUGFyYW1zKFxuXHRcdFx0XHRcdHByZWZpeCArIFwiW1wiICsgKCB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9IG51bGwgPyBpIDogXCJcIiApICsgXCJdXCIsXG5cdFx0XHRcdFx0dixcblx0XHRcdFx0XHR0cmFkaXRpb25hbCxcblx0XHRcdFx0XHRhZGRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0fSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIHRvVHlwZSggb2JqICkgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uXG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4ICsgXCJbXCIgKyBuYW1lICsgXCJdXCIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBTZXJpYWxpemUgc2NhbGFyIGl0ZW0uXG5cdFx0YWRkKCBwcmVmaXgsIG9iaiApO1xuXHR9XG59XG5cbi8vIFNlcmlhbGl6ZSBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mXG4vLyBrZXkvdmFsdWVzIGludG8gYSBxdWVyeSBzdHJpbmdcbmpRdWVyeS5wYXJhbSA9IGZ1bmN0aW9uKCBhLCB0cmFkaXRpb25hbCApIHtcblx0dmFyIHByZWZpeCxcblx0XHRzID0gW10sXG5cdFx0YWRkID0gZnVuY3Rpb24oIGtleSwgdmFsdWVPckZ1bmN0aW9uICkge1xuXG5cdFx0XHQvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5kIHVzZSBpdHMgcmV0dXJuIHZhbHVlXG5cdFx0XHR2YXIgdmFsdWUgPSBpc0Z1bmN0aW9uKCB2YWx1ZU9yRnVuY3Rpb24gKSA/XG5cdFx0XHRcdHZhbHVlT3JGdW5jdGlvbigpIDpcblx0XHRcdFx0dmFsdWVPckZ1bmN0aW9uO1xuXG5cdFx0XHRzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJQ29tcG9uZW50KCBrZXkgKSArIFwiPVwiICtcblx0XHRcdFx0ZW5jb2RlVVJJQ29tcG9uZW50KCB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICk7XG5cdFx0fTtcblxuXHRpZiAoIGEgPT0gbnVsbCApIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuXG5cdGlmICggQXJyYXkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50c1xuXHRcdGpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpIHtcblx0XHRcdGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7XG5cdFx0fSApO1xuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSBcIm9sZFwiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlclxuXHRcdC8vIGRpZCBpdCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LlxuXHRcdGZvciAoIHByZWZpeCBpbiBhICkge1xuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uXG5cdHJldHVybiBzLmpvaW4oIFwiJlwiICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNlcmlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7XG5cdH0sXG5cdHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBDYW4gYWRkIHByb3BIb29rIGZvciBcImVsZW1lbnRzXCIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzXG5cdFx0XHR2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCggdGhpcywgXCJlbGVtZW50c1wiICk7XG5cdFx0XHRyZXR1cm4gZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpcztcblx0XHR9IClcblx0XHQuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciB0eXBlID0gdGhpcy50eXBlO1xuXG5cdFx0XHQvLyBVc2UgLmlzKCBcIjpkaXNhYmxlZFwiICkgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3Ncblx0XHRcdHJldHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCBcIjpkaXNhYmxlZFwiICkgJiZcblx0XHRcdFx0cnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJlxuXHRcdFx0XHQoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7XG5cdFx0fSApXG5cdFx0Lm1hcCggZnVuY3Rpb24oIGksIGVsZW0gKSB7XG5cdFx0XHR2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7XG5cblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHR9ICkuZ2V0KCk7XG5cdH1cbn0gKTtcblxuXG52YXJcblx0cjIwID0gLyUyMC9nLFxuXHRyaGFzaCA9IC8jLiokLyxcblx0cmFudGlDYWNoZSA9IC8oWz8mXSlfPVteJl0qLyxcblx0cmhlYWRlcnMgPSAvXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKikkL21nLFxuXG5cdC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvblxuXHRybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLFxuXHRybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLyxcblx0cnByb3RvY29sID0gL15cXC9cXC8vLFxuXG5cdC8qIFByZWZpbHRlcnNcblx0ICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSlcblx0ICogMikgVGhlc2UgYXJlIGNhbGxlZDpcblx0ICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydFxuXHQgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpXG5cdCAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0cHJlZmlsdGVycyA9IHt9LFxuXG5cdC8qIFRyYW5zcG9ydHMgYmluZGluZ3Ncblx0ICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0dHJhbnNwb3J0cyA9IHt9LFxuXG5cdC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxuXHRhbGxUeXBlcyA9IFwiKi9cIi5jb25jYXQoIFwiKlwiICksXG5cblx0Ly8gQW5jaG9yIHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9yaWdpbkFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiYVwiICk7XG5cdG9yaWdpbkFuY2hvci5ocmVmID0gbG9jYXRpb24uaHJlZjtcblxuLy8gQmFzZSBcImNvbnN0cnVjdG9yXCIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydFxuZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7XG5cblx0Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBcIipcIlxuXHRyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHtcblxuXHRcdGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247XG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcblx0XHR9XG5cblx0XHR2YXIgZGF0YVR5cGUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblxuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbIDAgXSA9PT0gXCIrXCIgKSB7XG5cdFx0XHRcdFx0ZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8IFwiKlwiO1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXG5cdFx0XHRcdG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0aW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkge1xuXHRcdFx0XHRyZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyAjOTg4N1xuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XG5cdHZhciBrZXksIGRlZXAsXG5cdFx0ZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9O1xuXG5cdGZvciAoIGtleSBpbiBzcmMgKSB7XG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHQoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoIGRlZXAgPSB7fSApICkgKVsga2V5IF0gPSBzcmNbIGtleSBdO1xuXHRcdH1cblx0fVxuXHRpZiAoIGRlZXAgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0O1xufVxuXG4vKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6XG4gKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKVxuICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7XG5cblx0dmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBlLFxuXHRcdGNvbnRlbnRzID0gcy5jb250ZW50cyxcblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcztcblxuXHQvLyBSZW1vdmUgYXV0byBkYXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2Vzc1xuXHR3aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSBcIipcIiApIHtcblx0XHRkYXRhVHlwZXMuc2hpZnQoKTtcblx0XHRpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGVcblx0aWYgKCBjdCApIHtcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xuXHRcdFx0aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHtcblx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xuXHRcdGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTtcblx0fSBlbHNlIHtcblxuXHRcdC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXNcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcblx0XHRcdGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArIFwiIFwiICsgZGF0YVR5cGVzWyAwIF0gXSApIHtcblx0XHRcdFx0ZmluYWxEYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhZmlyc3REYXRhVHlwZSApIHtcblx0XHRcdFx0Zmlyc3REYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gT3IganVzdCB1c2UgZmlyc3Qgb25lXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTtcblx0fVxuXG5cdC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGVcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcblx0Ly8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuXHRpZiAoIGZpbmFsRGF0YVR5cGUgKSB7XG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcblx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7XG5cdFx0fVxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcblx0fVxufVxuXG4vKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlXG4gKiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkge1xuXHR2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldixcblx0XHRjb252ZXJ0ZXJzID0ge30sXG5cblx0XHQvLyBXb3JrIHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBjb252ZXJzaW9uXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTtcblxuXHQvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXNcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcblx0XHRmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHtcblx0XHRcdGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07XG5cdFx0fVxuXHR9XG5cblx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlXG5cdHdoaWxlICggY3VycmVudCApIHtcblxuXHRcdGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkge1xuXHRcdFx0anFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcblx0XHRpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7XG5cdFx0XHRyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTtcblx0XHR9XG5cblx0XHRwcmV2ID0gY3VycmVudDtcblx0XHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0XHRpZiAoIGN1cnJlbnQgKSB7XG5cblx0XHRcdC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG9cblx0XHRcdGlmICggY3VycmVudCA9PT0gXCIqXCIgKSB7XG5cblx0XHRcdFx0Y3VycmVudCA9IHByZXY7XG5cblx0XHRcdC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnRcblx0XHRcdH0gZWxzZSBpZiAoIHByZXYgIT09IFwiKlwiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXJcblx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyBcIiogXCIgKyBjdXJyZW50IF07XG5cblx0XHRcdFx0Ly8gSWYgbm9uZSBmb3VuZCwgc2VlayBhIHBhaXJcblx0XHRcdFx0aWYgKCAhY29udiApIHtcblx0XHRcdFx0XHRmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnRcblx0XHRcdFx0XHRcdHRtcCA9IGNvbnYyLnNwbGl0KCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCB0bXBbIDEgXSA9PT0gY3VycmVudCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXRcblx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIHRtcFsgMCBdIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJzWyBcIiogXCIgKyB0bXBbIDAgXSBdO1xuXHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHMudGhyb3dzICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogXCJwYXJzZXJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllc1xuXHRhY3RpdmU6IDAsXG5cblx0Ly8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdFxuXHRsYXN0TW9kaWZpZWQ6IHt9LFxuXHRldGFnOiB7fSxcblxuXHRhamF4U2V0dGluZ3M6IHtcblx0XHR1cmw6IGxvY2F0aW9uLmhyZWYsXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBsb2NhdGlvbi5wcm90b2NvbCApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblxuXHRcdC8qXG5cdFx0dGltZW91dDogMCxcblx0XHRkYXRhOiBudWxsLFxuXHRcdGRhdGFUeXBlOiBudWxsLFxuXHRcdHVzZXJuYW1lOiBudWxsLFxuXHRcdHBhc3N3b3JkOiBudWxsLFxuXHRcdGNhY2hlOiBudWxsLFxuXHRcdHRocm93czogZmFsc2UsXG5cdFx0dHJhZGl0aW9uYWw6IGZhbHNlLFxuXHRcdGhlYWRlcnM6IHt9LFxuXHRcdCovXG5cblx0XHRhY2NlcHRzOiB7XG5cdFx0XHRcIipcIjogYWxsVHlwZXMsXG5cdFx0XHR0ZXh0OiBcInRleHQvcGxhaW5cIixcblx0XHRcdGh0bWw6IFwidGV4dC9odG1sXCIsXG5cdFx0XHR4bWw6IFwiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbFwiLFxuXHRcdFx0anNvbjogXCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHRcIlxuXHRcdH0sXG5cblx0XHRjb250ZW50czoge1xuXHRcdFx0eG1sOiAvXFxieG1sXFxiLyxcblx0XHRcdGh0bWw6IC9cXGJodG1sLyxcblx0XHRcdGpzb246IC9cXGJqc29uXFxiL1xuXHRcdH0sXG5cblx0XHRyZXNwb25zZUZpZWxkczoge1xuXHRcdFx0eG1sOiBcInJlc3BvbnNlWE1MXCIsXG5cdFx0XHR0ZXh0OiBcInJlc3BvbnNlVGV4dFwiLFxuXHRcdFx0anNvbjogXCJyZXNwb25zZUpTT05cIlxuXHRcdH0sXG5cblx0XHQvLyBEYXRhIGNvbnZlcnRlcnNcblx0XHQvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwgXCIqXCIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG5cdFx0Y29udmVydGVyczoge1xuXG5cdFx0XHQvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHRcblx0XHRcdFwiKiB0ZXh0XCI6IFN0cmluZyxcblxuXHRcdFx0Ly8gVGV4dCB0byBodG1sICh0cnVlID0gbm8gdHJhbnNmb3JtYXRpb24pXG5cdFx0XHRcInRleHQgaHRtbFwiOiB0cnVlLFxuXG5cdFx0XHQvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uXG5cdFx0XHRcInRleHQganNvblwiOiBKU09OLnBhcnNlLFxuXG5cdFx0XHQvLyBQYXJzZSB0ZXh0IGFzIHhtbFxuXHRcdFx0XCJ0ZXh0IHhtbFwiOiBqUXVlcnkucGFyc2VYTUxcblx0XHR9LFxuXG5cdFx0Ly8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDpcblx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmXG5cdFx0Ly8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmVcblx0XHQvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZClcblx0XHRmbGF0T3B0aW9uczoge1xuXHRcdFx0dXJsOiB0cnVlLFxuXHRcdFx0Y29udGV4dDogdHJ1ZVxuXHRcdH1cblx0fSxcblxuXHQvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldFxuXHQvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuXG5cdC8vIElmIHRhcmdldCBpcyBvbWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuXG5cdGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7XG5cdFx0cmV0dXJuIHNldHRpbmdzID9cblxuXHRcdFx0Ly8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3Rcblx0XHRcdGFqYXhFeHRlbmQoIGFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApLCBzZXR0aW5ncyApIDpcblxuXHRcdFx0Ly8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5nc1xuXHRcdFx0YWpheEV4dGVuZCggalF1ZXJ5LmFqYXhTZXR0aW5ncywgdGFyZ2V0ICk7XG5cdH0sXG5cblx0YWpheFByZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksXG5cdGFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLFxuXG5cdC8vIE1haW4gbWV0aG9kXG5cdGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZVxuXHRcdGlmICggdHlwZW9mIHVybCA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdG9wdGlvbnMgPSB1cmw7XG5cdFx0XHR1cmwgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gRm9yY2Ugb3B0aW9ucyB0byBiZSBhbiBvYmplY3Rcblx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRcdHZhciB0cmFuc3BvcnQsXG5cblx0XHRcdC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW1cblx0XHRcdGNhY2hlVVJMLFxuXG5cdFx0XHQvLyBSZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcsXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXG5cblx0XHRcdC8vIHRpbWVvdXQgaGFuZGxlXG5cdFx0XHR0aW1lb3V0VGltZXIsXG5cblx0XHRcdC8vIFVybCBjbGVhbnVwIHZhclxuXHRcdFx0dXJsQW5jaG9yLFxuXG5cdFx0XHQvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVzIGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24pXG5cdFx0XHRjb21wbGV0ZWQsXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZFxuXHRcdFx0ZmlyZUdsb2JhbHMsXG5cblx0XHRcdC8vIExvb3AgdmFyaWFibGVcblx0XHRcdGksXG5cblx0XHRcdC8vIHVuY2FjaGVkIHBhcnQgb2YgdGhlIHVybFxuXHRcdFx0dW5jYWNoZWQsXG5cblx0XHRcdC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3Rcblx0XHRcdHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLFxuXG5cdFx0XHQvLyBDYWxsYmFja3MgY29udGV4dFxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXG5cblx0XHRcdC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMgaXMgY2FsbGJhY2tDb250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNvbGxlY3Rpb25cblx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJlxuXHRcdFx0XHQoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOlxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudCxcblxuXHRcdFx0Ly8gRGVmZXJyZWRzXG5cdFx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblxuXHRcdFx0Ly8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSlcblx0XHRcdHJlcXVlc3RIZWFkZXJzID0ge30sXG5cdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sXG5cblx0XHRcdC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZVxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXG5cblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHRcdGlmICggIXJlc3BvbnNlSGVhZGVycyApIHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzID0ge307XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgKyBcIiBcIiBdID1cblx0XHRcdFx0XHRcdFx0XHRcdCggcmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgKyBcIiBcIiBdIHx8IFtdIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdCggbWF0Y2hbIDIgXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgKyBcIiBcIiBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaC5qb2luKCBcIiwgXCIgKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gPVxuXHRcdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEgd2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzXG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApO1xuXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiApICsgXCJcIiApXG5cdFx0XHQucmVwbGFjZSggcnByb3RvY29sLCBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiApO1xuXG5cdFx0Ly8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgIzEyMDA0XG5cdFx0cy50eXBlID0gb3B0aW9ucy5tZXRob2QgfHwgb3B0aW9ucy50eXBlIHx8IHMubWV0aG9kIHx8IHMudHlwZTtcblxuXHRcdC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3Rcblx0XHRzLmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8fCBcIipcIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLlxuXHRcdGlmICggcy5jcm9zc0RvbWFpbiA9PSBudWxsICkge1xuXHRcdFx0dXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxNVxuXHRcdFx0Ly8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1hbGZvcm1lZCxcblx0XHRcdC8vIGUuZy4gaHR0cDovL2V4YW1wbGUuY29tOjgweC9cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gcy51cmw7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25seVxuXHRcdFx0XHQvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVybCBpcyByZWxhdGl2ZVxuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHVybEFuY2hvci5ocmVmO1xuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gb3JpZ2luQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgb3JpZ2luQW5jaG9yLmhvc3QgIT09XG5cdFx0XHRcdFx0dXJsQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgdXJsQW5jaG9yLmhvc3Q7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBjcm9zc0RvbWFpbixcblx0XHRcdFx0Ly8gaXQgY2FuIGJlIHJlamVjdGVkIGJ5IHRoZSB0cmFuc3BvcnQgaWYgaXQgaXMgaW52YWxpZFxuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcblx0XHRpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHByZWZpbHRlcnNcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlXG5cdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0YXJ0XCIgKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHQvLyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgXCJcIiApO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBoYXNoIHNvIHdlIGNhbiBwdXQgaXQgYmFja1xuXHRcdFx0dW5jYWNoZWQgPSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3RoICk7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICYmICggcy5wcm9jZXNzRGF0YSB8fCB0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICkgKSB7XG5cdFx0XHRcdGNhY2hlVVJMICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGE7XG5cblx0XHRcdFx0Ly8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeVxuXHRcdFx0XHRkZWxldGUgcy5kYXRhO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgb3IgdXBkYXRlIGFudGktY2FjaGUgcGFyYW0gaWYgbmVlZGVkXG5cdFx0XHRpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRjYWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJhbnRpQ2FjaGUsIFwiJDFcIiApO1xuXHRcdFx0XHR1bmNhY2hlZCA9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBcIl89XCIgKyAoIG5vbmNlKysgKSArIHVuY2FjaGVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQdXQgaGFzaCBhbmQgYW50aS1jYWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgKGdoLTE3MzIpXG5cdFx0XHRzLnVybCA9IGNhY2hlVVJMICsgdW5jYWNoZWQ7XG5cblx0XHQvLyBDaGFuZ2UgJyUyMCcgdG8gJysnIGlmIHRoaXMgaXMgZW5jb2RlZCBmb3JtIGJvZHkgY29udGVudCAoZ2gtMjY1OClcblx0XHR9IGVsc2UgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJlxuXHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKS5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgKSB7XG5cdFx0XHRzLmRhdGEgPSBzLmRhdGEucmVwbGFjZSggcjIwLCBcIitcIiApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTW9kaWZpZWQtU2luY2VcIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Ob25lLU1hdGNoXCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50XG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiLCBzLmNvbnRlbnRUeXBlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZVxuXHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXG5cdFx0XHRcIkFjY2VwdFwiLFxuXHRcdFx0cy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSA/XG5cdFx0XHRcdHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdICtcblx0XHRcdFx0XHQoIHMuZGF0YVR5cGVzWyAwIF0gIT09IFwiKlwiID8gXCIsIFwiICsgYWxsVHlwZXMgKyBcIjsgcT0wLjAxXCIgOiBcIlwiICkgOlxuXHRcdFx0XHRzLmFjY2VwdHNbIFwiKlwiIF1cblx0XHQpO1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uXG5cdFx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnRcblx0XHRpZiAoIHMuYmVmb3JlU2VuZCAmJlxuXHRcdFx0KCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQgKSApIHtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuXG5cdFx0XHRyZXR1cm4ganFYSFIuYWJvcnQoKTtcblx0XHR9XG5cblx0XHQvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb25cblx0XHRzdHJBYm9ydCA9IFwiYWJvcnRcIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkc1xuXHRcdGNvbXBsZXRlRGVmZXJyZWQuYWRkKCBzLmNvbXBsZXRlICk7XG5cdFx0anFYSFIuZG9uZSggcy5zdWNjZXNzICk7XG5cdFx0anFYSFIuZmFpbCggcy5lcnJvciApO1xuXG5cdFx0Ly8gR2V0IHRyYW5zcG9ydFxuXHRcdHRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0XG5cdFx0aWYgKCAhdHJhbnNwb3J0ICkge1xuXHRcdFx0ZG9uZSggLTEsIFwiTm8gVHJhbnNwb3J0XCIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IDE7XG5cblx0XHRcdC8vIFNlbmQgZ2xvYmFsIGV2ZW50XG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4U2VuZFwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYWpheFNlbmQsIHN0b3AgdGhlcmVcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRpbWVvdXRcblx0XHRcdGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkge1xuXHRcdFx0XHR0aW1lb3V0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0anFYSFIuYWJvcnQoIFwidGltZW91dFwiICk7XG5cdFx0XHRcdH0sIHMudGltZW91dCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb21wbGV0ZWQgPSBmYWxzZTtcblx0XHRcdFx0dHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBSZXRocm93IHBvc3QtY29tcGxldGlvbiBleGNlcHRpb25zXG5cdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBQcm9wYWdhdGUgb3RoZXJzIGFzIHJlc3VsdHNcblx0XHRcdFx0ZG9uZSggLTEsIGUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5nIGlzIGRvbmVcblx0XHRmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHtcblx0XHRcdHZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCByZXNwb25zZSwgbW9kaWZpZWQsXG5cdFx0XHRcdHN0YXR1c1RleHQgPSBuYXRpdmVTdGF0dXNUZXh0O1xuXG5cdFx0XHQvLyBJZ25vcmUgcmVwZWF0IGludm9jYXRpb25zXG5cdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb21wbGV0ZWQgPSB0cnVlO1xuXG5cdFx0XHQvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuXHRcdFx0aWYgKCB0aW1lb3V0VGltZXIgKSB7XG5cdFx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvblxuXHRcdFx0Ly8gKG5vIG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0IHdpbGwgYmUgdXNlZClcblx0XHRcdHRyYW5zcG9ydCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0Ly8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTZXQgcmVhZHlTdGF0ZVxuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IHN0YXR1cyA+IDAgPyA0IDogMDtcblxuXHRcdFx0Ly8gRGV0ZXJtaW5lIGlmIHN1Y2Nlc3NmdWxcblx0XHRcdGlzU3VjY2VzcyA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0O1xuXG5cdFx0XHQvLyBHZXQgcmVzcG9uc2UgZGF0YVxuXHRcdFx0aWYgKCByZXNwb25zZXMgKSB7XG5cdFx0XHRcdHJlc3BvbnNlID0gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb252ZXJ0IG5vIG1hdHRlciB3aGF0ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVsZHMgYXJlIGFsd2F5cyBzZXQpXG5cdFx0XHRyZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApO1xuXG5cdFx0XHQvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZ1xuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cblx0XHRcdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRcdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJMYXN0LU1vZGlmaWVkXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcImV0YWdcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGlmIG5vIGNvbnRlbnRcblx0XHRcdFx0aWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09IFwiSEVBRFwiICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vY29udGVudFwiO1xuXG5cdFx0XHRcdC8vIGlmIG5vdCBtb2RpZmllZFxuXHRcdFx0XHR9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub3Rtb2RpZmllZFwiO1xuXG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTtcblx0XHRcdFx0XHRzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRlcnJvciA9IHJlc3BvbnNlLmVycm9yO1xuXHRcdFx0XHRcdGlzU3VjY2VzcyA9ICFlcnJvcjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBFeHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dCBhbmQgbm9ybWFsaXplIGZvciBub24tYWJvcnRzXG5cdFx0XHRcdGVycm9yID0gc3RhdHVzVGV4dDtcblx0XHRcdFx0aWYgKCBzdGF0dXMgfHwgIXN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwiZXJyb3JcIjtcblx0XHRcdFx0XHRpZiAoIHN0YXR1cyA8IDAgKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXMgPSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgZGF0YSBmb3IgdGhlIGZha2UgeGhyIG9iamVjdFxuXHRcdFx0anFYSFIuc3RhdHVzID0gc3RhdHVzO1xuXHRcdFx0anFYSFIuc3RhdHVzVGV4dCA9ICggbmF0aXZlU3RhdHVzVGV4dCB8fCBzdGF0dXNUZXh0ICkgKyBcIlwiO1xuXG5cdFx0XHQvLyBTdWNjZXNzL0Vycm9yXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTtcblx0XHRcdHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBpc1N1Y2Nlc3MgPyBcImFqYXhTdWNjZXNzXCIgOiBcImFqYXhFcnJvclwiLFxuXHRcdFx0XHRcdFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbXBsZXRlXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4Q29tcGxldGVcIiwgWyBqcVhIUiwgcyBdICk7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBnbG9iYWwgQUpBWCBjb3VudGVyXG5cdFx0XHRcdGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0b3BcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpxWEhSO1xuXHR9LFxuXG5cdGdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCBcImpzb25cIiApO1xuXHR9LFxuXG5cdGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgXCJzY3JpcHRcIiApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiZ2V0XCIsIFwicG9zdFwiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7XG5cdGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHtcblxuXHRcdC8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBkYXRhICkgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBjYWxsYmFjaztcblx0XHRcdGNhbGxiYWNrID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlIHVybCBjYW4gYmUgYW4gb3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVzdCBoYXZlIC51cmwpXG5cdFx0cmV0dXJuIGpRdWVyeS5hamF4KCBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdHR5cGU6IG1ldGhvZCxcblx0XHRcdGRhdGFUeXBlOiB0eXBlLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IGNhbGxiYWNrXG5cdFx0fSwgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7XG5cdH07XG59ICk7XG5cblxualF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHtcblx0cmV0dXJuIGpRdWVyeS5hamF4KCB7XG5cdFx0dXJsOiB1cmwsXG5cblx0XHQvLyBNYWtlIHRoaXMgZXhwbGljaXQsIHNpbmNlIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgdGhyb3VnaCBhamF4U2V0dXAgKCMxMTI2NClcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxuXHRcdGNhY2hlOiB0cnVlLFxuXHRcdGFzeW5jOiBmYWxzZSxcblx0XHRnbG9iYWw6IGZhbHNlLFxuXG5cdFx0Ly8gT25seSBldmFsdWF0ZSB0aGUgcmVzcG9uc2UgaWYgaXQgaXMgc3VjY2Vzc2Z1bCAoZ2gtNDEyNilcblx0XHQvLyBkYXRhRmlsdGVyIGlzIG5vdCBpbnZva2VkIGZvciBmYWlsdXJlIHJlc3BvbnNlcywgc28gdXNpbmcgaXQgaW5zdGVhZFxuXHRcdC8vIG9mIHRoZSBkZWZhdWx0IGNvbnZlcnRlciBpcyBrbHVkZ3kgYnV0IGl0IHdvcmtzLlxuXHRcdGNvbnZlcnRlcnM6IHtcblx0XHRcdFwidGV4dCBzY3JpcHRcIjogZnVuY3Rpb24oKSB7fVxuXHRcdH0sXG5cdFx0ZGF0YUZpbHRlcjogZnVuY3Rpb24oIHJlc3BvbnNlICkge1xuXHRcdFx0alF1ZXJ5Lmdsb2JhbEV2YWwoIHJlc3BvbnNlLCBvcHRpb25zICk7XG5cdFx0fVxuXHR9ICk7XG59O1xuXG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0d3JhcEFsbDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIHdyYXA7XG5cblx0XHRpZiAoIHRoaXNbIDAgXSApIHtcblx0XHRcdGlmICggaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0XHRodG1sID0gaHRtbC5jYWxsKCB0aGlzWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmRcblx0XHRcdHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSggdHJ1ZSApO1xuXG5cdFx0XHRpZiAoIHRoaXNbIDAgXS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR3cmFwLmluc2VydEJlZm9yZSggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHdyYXAubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGVsZW0gPSB0aGlzO1xuXG5cdFx0XHRcdHdoaWxlICggZWxlbS5maXJzdEVsZW1lbnRDaGlsZCApIHtcblx0XHRcdFx0XHRlbGVtID0gZWxlbS5maXJzdEVsZW1lbnRDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBlbGVtO1xuXHRcdFx0fSApLmFwcGVuZCggdGhpcyApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBodG1sICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkud3JhcElubmVyKCBodG1sLmNhbGwoIHRoaXMsIGkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSxcblx0XHRcdFx0Y29udGVudHMgPSBzZWxmLmNvbnRlbnRzKCk7XG5cblx0XHRcdGlmICggY29udGVudHMubGVuZ3RoICkge1xuXHRcdFx0XHRjb250ZW50cy53cmFwQWxsKCBodG1sICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNlbGYuYXBwZW5kKCBodG1sICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdHdyYXA6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciBodG1sSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIGh0bWwgKTtcblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0alF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaHRtbElzRnVuY3Rpb24gPyBodG1sLmNhbGwoIHRoaXMsIGkgKSA6IGh0bWwgKTtcblx0XHR9ICk7XG5cdH0sXG5cblx0dW53cmFwOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dGhpcy5wYXJlbnQoIHNlbGVjdG9yICkubm90KCBcImJvZHlcIiApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApO1xuXHRcdH0gKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufSApO1xuXG5cbmpRdWVyeS5leHByLnBzZXVkb3MuaGlkZGVuID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiAhalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlKCBlbGVtICk7XG59O1xualF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiAhISggZWxlbS5vZmZzZXRXaWR0aCB8fCBlbGVtLm9mZnNldEhlaWdodCB8fCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICk7XG59O1xuXG5cblxuXG5qUXVlcnkuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkge1xuXHR0cnkge1xuXHRcdHJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7XG5cdH0gY2F0Y2ggKCBlICkge31cbn07XG5cbnZhciB4aHJTdWNjZXNzU3RhdHVzID0ge1xuXG5cdFx0Ly8gRmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAsIGFzc3VtZSAyMDBcblx0XHQwOiAyMDAsXG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdC8vICMxNDUwOiBzb21ldGltZXMgSUUgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNFxuXHRcdDEyMjM6IDIwNFxuXHR9LFxuXHR4aHJTdXBwb3J0ZWQgPSBqUXVlcnkuYWpheFNldHRpbmdzLnhocigpO1xuXG5zdXBwb3J0LmNvcnMgPSAhIXhoclN1cHBvcnRlZCAmJiAoIFwid2l0aENyZWRlbnRpYWxzXCIgaW4geGhyU3VwcG9ydGVkICk7XG5zdXBwb3J0LmFqYXggPSB4aHJTdXBwb3J0ZWQgPSAhIXhoclN1cHBvcnRlZDtcblxualF1ZXJ5LmFqYXhUcmFuc3BvcnQoIGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHR2YXIgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2s7XG5cblx0Ly8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdFxuXHRpZiAoIHN1cHBvcnQuY29ycyB8fCB4aHJTdXBwb3J0ZWQgJiYgIW9wdGlvbnMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0dmFyIGksXG5cdFx0XHRcdFx0eGhyID0gb3B0aW9ucy54aHIoKTtcblxuXHRcdFx0XHR4aHIub3Blbihcblx0XHRcdFx0XHRvcHRpb25zLnR5cGUsXG5cdFx0XHRcdFx0b3B0aW9ucy51cmwsXG5cdFx0XHRcdFx0b3B0aW9ucy5hc3luYyxcblx0XHRcdFx0XHRvcHRpb25zLnVzZXJuYW1lLFxuXHRcdFx0XHRcdG9wdGlvbnMucGFzc3dvcmRcblx0XHRcdFx0KTtcblxuXHRcdFx0XHQvLyBBcHBseSBjdXN0b20gZmllbGRzIGlmIHByb3ZpZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0Zm9yICggaSBpbiBvcHRpb25zLnhockZpZWxkcyApIHtcblx0XHRcdFx0XHRcdHhoclsgaSBdID0gb3B0aW9ucy54aHJGaWVsZHNbIGkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBPdmVycmlkZSBtaW1lIHR5cGUgaWYgbmVlZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHtcblx0XHRcdFx0XHR4aHIub3ZlcnJpZGVNaW1lVHlwZSggb3B0aW9ucy5taW1lVHlwZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXJcblx0XHRcdFx0Ly8gRm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEgcHJlZmxpZ2h0IGFyZVxuXHRcdFx0XHQvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJlLlxuXHRcdFx0XHQvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVuIHVzaW5nIGFqYXhTZXR1cClcblx0XHRcdFx0Ly8gRm9yIHNhbWUtZG9tYWluIHJlcXVlc3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuXG5cdFx0XHRcdGlmICggIW9wdGlvbnMuY3Jvc3NEb21haW4gJiYgIWhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gKSB7XG5cdFx0XHRcdFx0aGVhZGVyc1sgXCJYLVJlcXVlc3RlZC1XaXRoXCIgXSA9IFwiWE1MSHR0cFJlcXVlc3RcIjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFNldCBoZWFkZXJzXG5cdFx0XHRcdGZvciAoIGkgaW4gaGVhZGVycyApIHtcblx0XHRcdFx0XHR4aHIuc2V0UmVxdWVzdEhlYWRlciggaSwgaGVhZGVyc1sgaSBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDYWxsYmFja1xuXHRcdFx0XHRjYWxsYmFjayA9IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrID0gZXJyb3JDYWxsYmFjayA9IHhoci5vbmxvYWQgPVxuXHRcdFx0XHRcdFx0XHRcdHhoci5vbmVycm9yID0geGhyLm9uYWJvcnQgPSB4aHIub250aW1lb3V0ID1cblx0XHRcdFx0XHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdGlmICggdHlwZSA9PT0gXCJhYm9ydFwiICkge1xuXHRcdFx0XHRcdFx0XHRcdHhoci5hYm9ydCgpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCB0eXBlID09PSBcImVycm9yXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdFx0XHRcdC8vIE9uIGEgbWFudWFsIG5hdGl2ZSBhYm9ydCwgSUU5IHRocm93c1xuXHRcdFx0XHRcdFx0XHRcdC8vIGVycm9ycyBvbiBhbnkgcHJvcGVydHkgYWNjZXNzIHRoYXQgaXMgbm90IHJlYWR5U3RhdGVcblx0XHRcdFx0XHRcdFx0XHRpZiAoIHR5cGVvZiB4aHIuc3RhdHVzICE9PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoIDAsIFwiZXJyb3JcIiApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBGaWxlOiBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyAwOyBzZWUgIzg2MDUsICMxNDIwN1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHJTdWNjZXNzU3RhdHVzWyB4aHIuc3RhdHVzIF0gfHwgeGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0LFxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSUU5IGhhcyBubyBYSFIyIGJ1dCB0aHJvd3Mgb24gYmluYXJ5ICh0cmFjLTExNDI2KVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gRm9yIFhIUjIgbm9uLXRleHQsIGxldCB0aGUgY2FsbGVyIGhhbmRsZSBpdCAoZ2gtMjQ5OClcblx0XHRcdFx0XHRcdFx0XHRcdCggeGhyLnJlc3BvbnNlVHlwZSB8fCBcInRleHRcIiApICE9PSBcInRleHRcIiAgfHxcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ICE9PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBiaW5hcnk6IHhoci5yZXNwb25zZSB9IDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyB0ZXh0OiB4aHIucmVzcG9uc2VUZXh0IH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKClcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHQvLyBMaXN0ZW4gdG8gZXZlbnRzXG5cdFx0XHRcdHhoci5vbmxvYWQgPSBjYWxsYmFjaygpO1xuXHRcdFx0XHRlcnJvckNhbGxiYWNrID0geGhyLm9uZXJyb3IgPSB4aHIub250aW1lb3V0ID0gY2FsbGJhY2soIFwiZXJyb3JcIiApO1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDkgb25seVxuXHRcdFx0XHQvLyBVc2Ugb25yZWFkeXN0YXRlY2hhbmdlIHRvIHJlcGxhY2Ugb25hYm9ydFxuXHRcdFx0XHQvLyB0byBoYW5kbGUgdW5jYXVnaHQgYWJvcnRzXG5cdFx0XHRcdGlmICggeGhyLm9uYWJvcnQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR4aHIub25hYm9ydCA9IGVycm9yQ2FsbGJhY2s7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdFx0XHQvLyBDaGVjayByZWFkeVN0YXRlIGJlZm9yZSB0aW1lb3V0IGFzIGl0IGNoYW5nZXNcblx0XHRcdFx0XHRcdGlmICggeGhyLnJlYWR5U3RhdGUgPT09IDQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQWxsb3cgb25lcnJvciB0byBiZSBjYWxsZWQgZmlyc3QsXG5cdFx0XHRcdFx0XHRcdC8vIGJ1dCB0aGF0IHdpbGwgbm90IGhhbmRsZSBhIG5hdGl2ZSBhYm9ydFxuXHRcdFx0XHRcdFx0XHQvLyBBbHNvLCBzYXZlIGVycm9yQ2FsbGJhY2sgdG8gYSB2YXJpYWJsZVxuXHRcdFx0XHRcdFx0XHQvLyBhcyB4aHIub25lcnJvciBjYW5ub3QgYmUgYWNjZXNzZWRcblx0XHRcdFx0XHRcdFx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvckNhbGxiYWNrKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBjYWxsYmFjayggXCJhYm9ydFwiICk7XG5cblx0XHRcdFx0dHJ5IHtcblxuXHRcdFx0XHRcdC8vIERvIHNlbmQgdGhlIHJlcXVlc3QgKHRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbilcblx0XHRcdFx0XHR4aHIuc2VuZCggb3B0aW9ucy5oYXNDb250ZW50ICYmIG9wdGlvbnMuZGF0YSB8fCBudWxsICk7XG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0Ly8gIzE0NjgzOiBPbmx5IHJldGhyb3cgaWYgdGhpcyBoYXNuJ3QgYmVlbiBub3RpZmllZCBhcyBhbiBlcnJvciB5ZXRcblx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG4vLyBQcmV2ZW50IGF1dG8tZXhlY3V0aW9uIG9mIHNjcmlwdHMgd2hlbiBubyBleHBsaWNpdCBkYXRhVHlwZSB3YXMgcHJvdmlkZWQgKFNlZSBnaC0yNDMyKVxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cy5jb250ZW50cy5zY3JpcHQgPSBmYWxzZTtcblx0fVxufSApO1xuXG4vLyBJbnN0YWxsIHNjcmlwdCBkYXRhVHlwZVxualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRhY2NlcHRzOiB7XG5cdFx0c2NyaXB0OiBcInRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgXCIgK1xuXHRcdFx0XCJhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHRcIlxuXHR9LFxuXHRjb250ZW50czoge1xuXHRcdHNjcmlwdDogL1xcYig/OmphdmF8ZWNtYSlzY3JpcHRcXGIvXG5cdH0sXG5cdGNvbnZlcnRlcnM6IHtcblx0XHRcInRleHQgc2NyaXB0XCI6IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0alF1ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTtcblx0XHRcdHJldHVybiB0ZXh0O1xuXHRcdH1cblx0fVxufSApO1xuXG4vLyBIYW5kbGUgY2FjaGUncyBzcGVjaWFsIGNhc2UgYW5kIGNyb3NzRG9tYWluXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cdGlmICggcy5jYWNoZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdHMuY2FjaGUgPSBmYWxzZTtcblx0fVxuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cy50eXBlID0gXCJHRVRcIjtcblx0fVxufSApO1xuXG4vLyBCaW5kIHNjcmlwdCB0YWcgaGFjayB0cmFuc3BvcnRcbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblxuXHQvLyBUaGlzIHRyYW5zcG9ydCBvbmx5IGRlYWxzIHdpdGggY3Jvc3MgZG9tYWluIG9yIGZvcmNlZC1ieS1hdHRycyByZXF1ZXN0c1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gfHwgcy5zY3JpcHRBdHRycyApIHtcblx0XHR2YXIgc2NyaXB0LCBjYWxsYmFjaztcblx0XHRyZXR1cm4ge1xuXHRcdFx0c2VuZDogZnVuY3Rpb24oIF8sIGNvbXBsZXRlICkge1xuXHRcdFx0XHRzY3JpcHQgPSBqUXVlcnkoIFwiPHNjcmlwdD5cIiApXG5cdFx0XHRcdFx0LmF0dHIoIHMuc2NyaXB0QXR0cnMgfHwge30gKVxuXHRcdFx0XHRcdC5wcm9wKCB7IGNoYXJzZXQ6IHMuc2NyaXB0Q2hhcnNldCwgc3JjOiBzLnVybCB9IClcblx0XHRcdFx0XHQub24oIFwibG9hZCBlcnJvclwiLCBjYWxsYmFjayA9IGZ1bmN0aW9uKCBldnQgKSB7XG5cdFx0XHRcdFx0XHRzY3JpcHQucmVtb3ZlKCk7XG5cdFx0XHRcdFx0XHRjYWxsYmFjayA9IG51bGw7XG5cdFx0XHRcdFx0XHRpZiAoIGV2dCApIHtcblx0XHRcdFx0XHRcdFx0Y29tcGxldGUoIGV2dC50eXBlID09PSBcImVycm9yXCIgPyA0MDQgOiAyMDAsIGV2dC50eXBlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSApO1xuXG5cdFx0XHRcdC8vIFVzZSBuYXRpdmUgRE9NIG1hbmlwdWxhdGlvbiB0byBhdm9pZCBvdXIgZG9tTWFuaXAgQUpBWCB0cmlja2VyeVxuXHRcdFx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHRbIDAgXSApO1xuXHRcdFx0fSxcblx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG52YXIgb2xkQ2FsbGJhY2tzID0gW10sXG5cdHJqc29ucCA9IC8oPSlcXD8oPz0mfCQpfFxcP1xcPy87XG5cbi8vIERlZmF1bHQganNvbnAgc2V0dGluZ3NcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0anNvbnA6IFwiY2FsbGJhY2tcIixcblx0anNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNhbGxiYWNrID0gb2xkQ2FsbGJhY2tzLnBvcCgpIHx8ICggalF1ZXJ5LmV4cGFuZG8gKyBcIl9cIiArICggbm9uY2UrKyApICk7XG5cdFx0dGhpc1sgY2FsbGJhY2sgXSA9IHRydWU7XG5cdFx0cmV0dXJuIGNhbGxiYWNrO1xuXHR9XG59ICk7XG5cbi8vIERldGVjdCwgbm9ybWFsaXplIG9wdGlvbnMgYW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBqc29ucCByZXF1ZXN0c1xualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwianNvbiBqc29ucFwiLCBmdW5jdGlvbiggcywgb3JpZ2luYWxTZXR0aW5ncywganFYSFIgKSB7XG5cblx0dmFyIGNhbGxiYWNrTmFtZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNlQ29udGFpbmVyLFxuXHRcdGpzb25Qcm9wID0gcy5qc29ucCAhPT0gZmFsc2UgJiYgKCByanNvbnAudGVzdCggcy51cmwgKSA/XG5cdFx0XHRcInVybFwiIDpcblx0XHRcdHR5cGVvZiBzLmRhdGEgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKVxuXHRcdFx0XHRcdC5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgJiZcblx0XHRcdFx0cmpzb25wLnRlc3QoIHMuZGF0YSApICYmIFwiZGF0YVwiXG5cdFx0KTtcblxuXHQvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgXCJqc29ucFwiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0XG5cdGlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gXCJqc29ucFwiICkge1xuXG5cdFx0Ly8gR2V0IGNhbGxiYWNrIG5hbWUsIHJlbWVtYmVyaW5nIHByZWV4aXN0aW5nIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdFxuXHRcdGNhbGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID9cblx0XHRcdHMuanNvbnBDYWxsYmFjaygpIDpcblx0XHRcdHMuanNvbnBDYWxsYmFjaztcblxuXHRcdC8vIEluc2VydCBjYWxsYmFjayBpbnRvIHVybCBvciBmb3JtIGRhdGFcblx0XHRpZiAoIGpzb25Qcm9wICkge1xuXHRcdFx0c1sganNvblByb3AgXSA9IHNbIGpzb25Qcm9wIF0ucmVwbGFjZSggcmpzb25wLCBcIiQxXCIgKyBjYWxsYmFja05hbWUgKTtcblx0XHR9IGVsc2UgaWYgKCBzLmpzb25wICE9PSBmYWxzZSApIHtcblx0XHRcdHMudXJsICs9ICggcnF1ZXJ5LnRlc3QoIHMudXJsICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmpzb25wICsgXCI9XCIgKyBjYWxsYmFja05hbWU7XG5cdFx0fVxuXG5cdFx0Ly8gVXNlIGRhdGEgY29udmVydGVyIHRvIHJldHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvblxuXHRcdHMuY29udmVydGVyc1sgXCJzY3JpcHQganNvblwiIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggIXJlc3BvbnNlQ29udGFpbmVyICkge1xuXHRcdFx0XHRqUXVlcnkuZXJyb3IoIGNhbGxiYWNrTmFtZSArIFwiIHdhcyBub3QgY2FsbGVkXCIgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdO1xuXHRcdH07XG5cblx0XHQvLyBGb3JjZSBqc29uIGRhdGFUeXBlXG5cdFx0cy5kYXRhVHlwZXNbIDAgXSA9IFwianNvblwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja1xuXHRcdG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTtcblx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IGFyZ3VtZW50cztcblx0XHR9O1xuXG5cdFx0Ly8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpXG5cdFx0anFYSFIuYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gSWYgcHJldmlvdXMgdmFsdWUgZGlkbid0IGV4aXN0IC0gcmVtb3ZlIGl0XG5cdFx0XHRpZiAoIG92ZXJ3cml0dGVuID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdGpRdWVyeSggd2luZG93ICkucmVtb3ZlUHJvcCggY2FsbGJhY2tOYW1lICk7XG5cblx0XHRcdC8vIE90aGVyd2lzZSByZXN0b3JlIHByZWV4aXN0aW5nIHZhbHVlXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gb3ZlcndyaXR0ZW47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNhdmUgYmFjayBhcyBmcmVlXG5cdFx0XHRpZiAoIHNbIGNhbGxiYWNrTmFtZSBdICkge1xuXG5cdFx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHJlLXVzaW5nIHRoZSBvcHRpb25zIGRvZXNuJ3Qgc2NyZXcgdGhpbmdzIGFyb3VuZFxuXHRcdFx0XHRzLmpzb25wQ2FsbGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHRcdFx0Ly8gU2F2ZSB0aGUgY2FsbGJhY2sgbmFtZSBmb3IgZnV0dXJlIHVzZVxuXHRcdFx0XHRvbGRDYWxsYmFja3MucHVzaCggY2FsbGJhY2tOYW1lICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENhbGwgaWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUgYSByZXNwb25zZVxuXHRcdFx0aWYgKCByZXNwb25zZUNvbnRhaW5lciAmJiBpc0Z1bmN0aW9uKCBvdmVyd3JpdHRlbiApICkge1xuXHRcdFx0XHRvdmVyd3JpdHRlbiggcmVzcG9uc2VDb250YWluZXJbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3cml0dGVuID0gdW5kZWZpbmVkO1xuXHRcdH0gKTtcblxuXHRcdC8vIERlbGVnYXRlIHRvIHNjcmlwdFxuXHRcdHJldHVybiBcInNjcmlwdFwiO1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFN1cHBvcnQ6IFNhZmFyaSA4IG9ubHlcbi8vIEluIFNhZmFyaSA4IGRvY3VtZW50cyBjcmVhdGVkIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnRcbi8vIGNvbGxhcHNlIHNpYmxpbmcgZm9ybXM6IHRoZSBzZWNvbmQgb25lIGJlY29tZXMgYSBjaGlsZCBvZiB0aGUgZmlyc3Qgb25lLlxuLy8gQmVjYXVzZSBvZiB0aGF0LCB0aGlzIHNlY3VyaXR5IG1lYXN1cmUgaGFzIHRvIGJlIGRpc2FibGVkIGluIFNhZmFyaSA4LlxuLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzMzN1xuc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoIGZ1bmN0aW9uKCkge1xuXHR2YXIgYm9keSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggXCJcIiApLmJvZHk7XG5cdGJvZHkuaW5uZXJIVE1MID0gXCI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPlwiO1xuXHRyZXR1cm4gYm9keS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMjtcbn0gKSgpO1xuXG5cbi8vIEFyZ3VtZW50IFwiZGF0YVwiIHNob3VsZCBiZSBzdHJpbmcgb2YgaHRtbFxuLy8gY29udGV4dCAob3B0aW9uYWwpOiBJZiBzcGVjaWZpZWQsIHRoZSBmcmFnbWVudCB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhpcyBjb250ZXh0LFxuLy8gZGVmYXVsdHMgdG8gZG9jdW1lbnRcbi8vIGtlZXBTY3JpcHRzIChvcHRpb25hbCk6IElmIHRydWUsIHdpbGwgaW5jbHVkZSBzY3JpcHRzIHBhc3NlZCBpbiB0aGUgaHRtbCBzdHJpbmdcbmpRdWVyeS5wYXJzZUhUTUwgPSBmdW5jdGlvbiggZGF0YSwgY29udGV4dCwga2VlcFNjcmlwdHMgKSB7XG5cdGlmICggdHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGtlZXBTY3JpcHRzID0gY29udGV4dDtcblx0XHRjb250ZXh0ID0gZmFsc2U7XG5cdH1cblxuXHR2YXIgYmFzZSwgcGFyc2VkLCBzY3JpcHRzO1xuXG5cdGlmICggIWNvbnRleHQgKSB7XG5cblx0XHQvLyBTdG9wIHNjcmlwdHMgb3IgaW5saW5lIGV2ZW50IGhhbmRsZXJzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW1tZWRpYXRlbHlcblx0XHQvLyBieSB1c2luZyBkb2N1bWVudC5pbXBsZW1lbnRhdGlvblxuXHRcdGlmICggc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgKSB7XG5cdFx0XHRjb250ZXh0ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCBcIlwiICk7XG5cblx0XHRcdC8vIFNldCB0aGUgYmFzZSBocmVmIGZvciB0aGUgY3JlYXRlZCBkb2N1bWVudFxuXHRcdFx0Ly8gc28gYW55IHBhcnNlZCBlbGVtZW50cyB3aXRoIFVSTHNcblx0XHRcdC8vIGFyZSBiYXNlZCBvbiB0aGUgZG9jdW1lbnQncyBVUkwgKGdoLTI5NjUpXG5cdFx0XHRiYXNlID0gY29udGV4dC5jcmVhdGVFbGVtZW50KCBcImJhc2VcIiApO1xuXHRcdFx0YmFzZS5ocmVmID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZjtcblx0XHRcdGNvbnRleHQuaGVhZC5hcHBlbmRDaGlsZCggYmFzZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb250ZXh0ID0gZG9jdW1lbnQ7XG5cdFx0fVxuXHR9XG5cblx0cGFyc2VkID0gcnNpbmdsZVRhZy5leGVjKCBkYXRhICk7XG5cdHNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107XG5cblx0Ly8gU2luZ2xlIHRhZ1xuXHRpZiAoIHBhcnNlZCApIHtcblx0XHRyZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsgMSBdICkgXTtcblx0fVxuXG5cdHBhcnNlZCA9IGJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzICk7XG5cblx0aWYgKCBzY3JpcHRzICYmIHNjcmlwdHMubGVuZ3RoICkge1xuXHRcdGpRdWVyeSggc2NyaXB0cyApLnJlbW92ZSgpO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIHBhcnNlZC5jaGlsZE5vZGVzICk7XG59O1xuXG5cbi8qKlxuICogTG9hZCBhIHVybCBpbnRvIGEgcGFnZVxuICovXG5qUXVlcnkuZm4ubG9hZCA9IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywgY2FsbGJhY2sgKSB7XG5cdHZhciBzZWxlY3RvciwgdHlwZSwgcmVzcG9uc2UsXG5cdFx0c2VsZiA9IHRoaXMsXG5cdFx0b2ZmID0gdXJsLmluZGV4T2YoIFwiIFwiICk7XG5cblx0aWYgKCBvZmYgPiAtMSApIHtcblx0XHRzZWxlY3RvciA9IHN0cmlwQW5kQ29sbGFwc2UoIHVybC5zbGljZSggb2ZmICkgKTtcblx0XHR1cmwgPSB1cmwuc2xpY2UoIDAsIG9mZiApO1xuXHR9XG5cblx0Ly8gSWYgaXQncyBhIGZ1bmN0aW9uXG5cdGlmICggaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7XG5cblx0XHQvLyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFja1xuXHRcdGNhbGxiYWNrID0gcGFyYW1zO1xuXHRcdHBhcmFtcyA9IHVuZGVmaW5lZDtcblxuXHQvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nXG5cdH0gZWxzZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2YgcGFyYW1zID09PSBcIm9iamVjdFwiICkge1xuXHRcdHR5cGUgPSBcIlBPU1RcIjtcblx0fVxuXG5cdC8vIElmIHdlIGhhdmUgZWxlbWVudHMgdG8gbW9kaWZ5LCBtYWtlIHRoZSByZXF1ZXN0XG5cdGlmICggc2VsZi5sZW5ndGggPiAwICkge1xuXHRcdGpRdWVyeS5hamF4KCB7XG5cdFx0XHR1cmw6IHVybCxcblxuXHRcdFx0Ly8gSWYgXCJ0eXBlXCIgdmFyaWFibGUgaXMgdW5kZWZpbmVkLCB0aGVuIFwiR0VUXCIgbWV0aG9kIHdpbGwgYmUgdXNlZC5cblx0XHRcdC8vIE1ha2UgdmFsdWUgb2YgdGhpcyBmaWVsZCBleHBsaWNpdCBzaW5jZVxuXHRcdFx0Ly8gdXNlciBjYW4gb3ZlcnJpZGUgaXQgdGhyb3VnaCBhamF4U2V0dXAgbWV0aG9kXG5cdFx0XHR0eXBlOiB0eXBlIHx8IFwiR0VUXCIsXG5cdFx0XHRkYXRhVHlwZTogXCJodG1sXCIsXG5cdFx0XHRkYXRhOiBwYXJhbXNcblx0XHR9ICkuZG9uZSggZnVuY3Rpb24oIHJlc3BvbnNlVGV4dCApIHtcblxuXHRcdFx0Ly8gU2F2ZSByZXNwb25zZSBmb3IgdXNlIGluIGNvbXBsZXRlIGNhbGxiYWNrXG5cdFx0XHRyZXNwb25zZSA9IGFyZ3VtZW50cztcblxuXHRcdFx0c2VsZi5odG1sKCBzZWxlY3RvciA/XG5cblx0XHRcdFx0Ly8gSWYgYSBzZWxlY3RvciB3YXMgc3BlY2lmaWVkLCBsb2NhdGUgdGhlIHJpZ2h0IGVsZW1lbnRzIGluIGEgZHVtbXkgZGl2XG5cdFx0XHRcdC8vIEV4Y2x1ZGUgc2NyaXB0cyB0byBhdm9pZCBJRSAnUGVybWlzc2lvbiBEZW5pZWQnIGVycm9yc1xuXHRcdFx0XHRqUXVlcnkoIFwiPGRpdj5cIiApLmFwcGVuZCggalF1ZXJ5LnBhcnNlSFRNTCggcmVzcG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UgdXNlIHRoZSBmdWxsIHJlc3VsdFxuXHRcdFx0XHRyZXNwb25zZVRleHQgKTtcblxuXHRcdC8vIElmIHRoZSByZXF1ZXN0IHN1Y2NlZWRzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJkYXRhXCIsIFwic3RhdHVzXCIsIFwianFYSFJcIlxuXHRcdC8vIGJ1dCB0aGV5IGFyZSBpZ25vcmVkIGJlY2F1c2UgcmVzcG9uc2Ugd2FzIHNldCBhYm92ZS5cblx0XHQvLyBJZiBpdCBmYWlscywgdGhpcyBmdW5jdGlvbiBnZXRzIFwianFYSFJcIiwgXCJzdGF0dXNcIiwgXCJlcnJvclwiXG5cdFx0fSApLmFsd2F5cyggY2FsbGJhY2sgJiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7XG5cdFx0XHRzZWxmLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRjYWxsYmFjay5hcHBseSggdGhpcywgcmVzcG9uc2UgfHwgWyBqcVhIUi5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApO1xuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdHJldHVybiB0aGlzO1xufTtcblxuXG5cblxuLy8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVudHNcbmpRdWVyeS5lYWNoKCBbXG5cdFwiYWpheFN0YXJ0XCIsXG5cdFwiYWpheFN0b3BcIixcblx0XCJhamF4Q29tcGxldGVcIixcblx0XCJhamF4RXJyb3JcIixcblx0XCJhamF4U3VjY2Vzc1wiLFxuXHRcImFqYXhTZW5kXCJcbl0sIGZ1bmN0aW9uKCBpLCB0eXBlICkge1xuXHRqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZSwgZm4gKTtcblx0fTtcbn0gKTtcblxuXG5cblxualF1ZXJ5LmV4cHIucHNldWRvcy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gZWxlbSA9PT0gZm4uZWxlbTtcblx0fSApLmxlbmd0aDtcbn07XG5cblxuXG5cbmpRdWVyeS5vZmZzZXQgPSB7XG5cdHNldE9mZnNldDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGkgKSB7XG5cdFx0dmFyIGN1clBvc2l0aW9uLCBjdXJMZWZ0LCBjdXJDU1NUb3AsIGN1clRvcCwgY3VyT2Zmc2V0LCBjdXJDU1NMZWZ0LCBjYWxjdWxhdGVQb3NpdGlvbixcblx0XHRcdHBvc2l0aW9uID0galF1ZXJ5LmNzcyggZWxlbSwgXCJwb3NpdGlvblwiICksXG5cdFx0XHRjdXJFbGVtID0galF1ZXJ5KCBlbGVtICksXG5cdFx0XHRwcm9wcyA9IHt9O1xuXG5cdFx0Ly8gU2V0IHBvc2l0aW9uIGZpcnN0LCBpbi1jYXNlIHRvcC9sZWZ0IGFyZSBzZXQgZXZlbiBvbiBzdGF0aWMgZWxlbVxuXHRcdGlmICggcG9zaXRpb24gPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRlbGVtLnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuXHRcdH1cblxuXHRcdGN1ck9mZnNldCA9IGN1ckVsZW0ub2Zmc2V0KCk7XG5cdFx0Y3VyQ1NTVG9wID0galF1ZXJ5LmNzcyggZWxlbSwgXCJ0b3BcIiApO1xuXHRcdGN1ckNTU0xlZnQgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImxlZnRcIiApO1xuXHRcdGNhbGN1bGF0ZVBvc2l0aW9uID0gKCBwb3NpdGlvbiA9PT0gXCJhYnNvbHV0ZVwiIHx8IHBvc2l0aW9uID09PSBcImZpeGVkXCIgKSAmJlxuXHRcdFx0KCBjdXJDU1NUb3AgKyBjdXJDU1NMZWZ0ICkuaW5kZXhPZiggXCJhdXRvXCIgKSA+IC0xO1xuXG5cdFx0Ly8gTmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXJcblx0XHQvLyB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUgb3IgZml4ZWRcblx0XHRpZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkge1xuXHRcdFx0Y3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7XG5cdFx0XHRjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7XG5cdFx0XHRjdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAwO1xuXHRcdFx0Y3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8fCAwO1xuXHRcdH1cblxuXHRcdGlmICggaXNGdW5jdGlvbiggb3B0aW9ucyApICkge1xuXG5cdFx0XHQvLyBVc2UgalF1ZXJ5LmV4dGVuZCBoZXJlIHRvIGFsbG93IG1vZGlmaWNhdGlvbiBvZiBjb29yZGluYXRlcyBhcmd1bWVudCAoZ2gtMTg0OClcblx0XHRcdG9wdGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGpRdWVyeS5leHRlbmQoIHt9LCBjdXJPZmZzZXQgKSApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7XG5cdFx0fVxuXHRcdGlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7XG5cdFx0XHRwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZzZXQubGVmdCApICsgY3VyTGVmdDtcblx0XHR9XG5cblx0XHRpZiAoIFwidXNpbmdcIiBpbiBvcHRpb25zICkge1xuXHRcdFx0b3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1ckVsZW0uY3NzKCBwcm9wcyApO1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdC8vIG9mZnNldCgpIHJlbGF0ZXMgYW4gZWxlbWVudCdzIGJvcmRlciBib3ggdG8gdGhlIGRvY3VtZW50IG9yaWdpblxuXHRvZmZzZXQ6IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdFx0Ly8gUHJlc2VydmUgY2hhaW5pbmcgZm9yIHNldHRlclxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiBvcHRpb25zID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHR0aGlzIDpcblx0XHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0XHRqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApO1xuXHRcdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0dmFyIHJlY3QsIHdpbixcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF07XG5cblx0XHRpZiAoICFlbGVtICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB6ZXJvcyBmb3IgZGlzY29ubmVjdGVkIGFuZCBoaWRkZW4gKGRpc3BsYXk6IG5vbmUpIGVsZW1lbnRzIChnaC0yMzEwKVxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHRcdC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGFcblx0XHQvLyBkaXNjb25uZWN0ZWQgbm9kZSBpbiBJRSB0aHJvd3MgYW4gZXJyb3Jcblx0XHRpZiAoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cdFx0fVxuXG5cdFx0Ly8gR2V0IGRvY3VtZW50LXJlbGF0aXZlIHBvc2l0aW9uIGJ5IGFkZGluZyB2aWV3cG9ydCBzY3JvbGwgdG8gdmlld3BvcnQtcmVsYXRpdmUgZ0JDUlxuXHRcdHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdHdpbiA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldztcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiByZWN0LnRvcCArIHdpbi5wYWdlWU9mZnNldCxcblx0XHRcdGxlZnQ6IHJlY3QubGVmdCArIHdpbi5wYWdlWE9mZnNldFxuXHRcdH07XG5cdH0sXG5cblx0Ly8gcG9zaXRpb24oKSByZWxhdGVzIGFuIGVsZW1lbnQncyBtYXJnaW4gYm94IHRvIGl0cyBvZmZzZXQgcGFyZW50J3MgcGFkZGluZyBib3hcblx0Ly8gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgYmVoYXZpb3Igb2YgQ1NTIGFic29sdXRlIHBvc2l0aW9uaW5nXG5cdHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoICF0aGlzWyAwIF0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFyIG9mZnNldFBhcmVudCwgb2Zmc2V0LCBkb2MsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0cGFyZW50T2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblxuXHRcdC8vIHBvc2l0aW9uOmZpeGVkIGVsZW1lbnRzIGFyZSBvZmZzZXQgZnJvbSB0aGUgdmlld3BvcnQsIHdoaWNoIGl0c2VsZiBhbHdheXMgaGFzIHplcm8gb2Zmc2V0XG5cdFx0aWYgKCBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSA9PT0gXCJmaXhlZFwiICkge1xuXG5cdFx0XHQvLyBBc3N1bWUgcG9zaXRpb246Zml4ZWQgaW1wbGllcyBhdmFpbGFiaWxpdHkgb2YgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG5cdFx0XHRvZmZzZXQgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cblx0XHRcdC8vIEFjY291bnQgZm9yIHRoZSAqcmVhbCogb2Zmc2V0IHBhcmVudCwgd2hpY2ggY2FuIGJlIHRoZSBkb2N1bWVudCBvciBpdHMgcm9vdCBlbGVtZW50XG5cdFx0XHQvLyB3aGVuIGEgc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1lbnQgaXMgaWRlbnRpZmllZFxuXHRcdFx0ZG9jID0gZWxlbS5vd25lckRvY3VtZW50O1xuXHRcdFx0b2Zmc2V0UGFyZW50ID0gZWxlbS5vZmZzZXRQYXJlbnQgfHwgZG9jLmRvY3VtZW50RWxlbWVudDtcblx0XHRcdHdoaWxlICggb2Zmc2V0UGFyZW50ICYmXG5cdFx0XHRcdCggb2Zmc2V0UGFyZW50ID09PSBkb2MuYm9keSB8fCBvZmZzZXRQYXJlbnQgPT09IGRvYy5kb2N1bWVudEVsZW1lbnQgKSAmJlxuXHRcdFx0XHRqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXG5cdFx0XHRcdG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0UGFyZW50ICE9PSBlbGVtICYmIG9mZnNldFBhcmVudC5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSBib3JkZXJzIGludG8gaXRzIG9mZnNldCwgc2luY2UgdGhleSBhcmUgb3V0c2lkZSBpdHMgY29udGVudCBvcmlnaW5cblx0XHRcdFx0cGFyZW50T2Zmc2V0ID0galF1ZXJ5KCBvZmZzZXRQYXJlbnQgKS5vZmZzZXQoKTtcblx0XHRcdFx0cGFyZW50T2Zmc2V0LnRvcCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwiYm9yZGVyVG9wV2lkdGhcIiwgdHJ1ZSApO1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQubGVmdCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwiYm9yZGVyTGVmdFdpZHRoXCIsIHRydWUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQgZWxlbWVudCBtYXJnaW5zXG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogb2Zmc2V0LnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpblRvcFwiLCB0cnVlICksXG5cdFx0XHRsZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9mZnNldC5sZWZ0IC0galF1ZXJ5LmNzcyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIsIHRydWUgKVxuXHRcdH07XG5cdH0sXG5cblx0Ly8gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZG9jdW1lbnRFbGVtZW50IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG5cdC8vIDEpIEZvciB0aGUgZWxlbWVudCBpbnNpZGUgdGhlIGlmcmFtZSB3aXRob3V0IG9mZnNldFBhcmVudCwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm5cblx0Ly8gICAgZG9jdW1lbnRFbGVtZW50IG9mIHRoZSBwYXJlbnQgd2luZG93XG5cdC8vIDIpIEZvciB0aGUgaGlkZGVuIG9yIGRldGFjaGVkIGVsZW1lbnRcblx0Ly8gMykgRm9yIGJvZHkgb3IgaHRtbCBlbGVtZW50LCBpLmUuIGluIGNhc2Ugb2YgdGhlIGh0bWwgbm9kZSAtIGl0IHdpbGwgcmV0dXJuIGl0c2VsZlxuXHQvL1xuXHQvLyBidXQgdGhvc2UgZXhjZXB0aW9ucyB3ZXJlIG5ldmVyIHByZXNlbnRlZCBhcyBhIHJlYWwgbGlmZSB1c2UtY2FzZXNcblx0Ly8gYW5kIG1pZ2h0IGJlIGNvbnNpZGVyZWQgYXMgbW9yZSBwcmVmZXJhYmxlIHJlc3VsdHMuXG5cdC8vXG5cdC8vIFRoaXMgbG9naWMsIGhvd2V2ZXIsIGlzIG5vdCBndWFyYW50ZWVkIGFuZCBjYW4gY2hhbmdlIGF0IGFueSBwb2ludCBpbiB0aGUgZnV0dXJlXG5cdG9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudDtcblxuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiYgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcInBvc2l0aW9uXCIgKSA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2N1bWVudEVsZW1lbnQ7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbi8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgc2Nyb2xsTGVmdDogXCJwYWdlWE9mZnNldFwiLCBzY3JvbGxUb3A6IFwicGFnZVlPZmZzZXRcIiB9LCBmdW5jdGlvbiggbWV0aG9kLCBwcm9wICkge1xuXHR2YXIgdG9wID0gXCJwYWdlWU9mZnNldFwiID09PSBwcm9wO1xuXG5cdGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHtcblxuXHRcdFx0Ly8gQ29hbGVzY2UgZG9jdW1lbnRzIGFuZCB3aW5kb3dzXG5cdFx0XHR2YXIgd2luO1xuXHRcdFx0aWYgKCBpc1dpbmRvdyggZWxlbSApICkge1xuXHRcdFx0XHR3aW4gPSBlbGVtO1xuXHRcdFx0fSBlbHNlIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0d2luID0gZWxlbS5kZWZhdWx0Vmlldztcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07XG5cdFx0XHR9XG5cblx0XHRcdGlmICggd2luICkge1xuXHRcdFx0XHR3aW4uc2Nyb2xsVG8oXG5cdFx0XHRcdFx0IXRvcCA/IHZhbCA6IHdpbi5wYWdlWE9mZnNldCxcblx0XHRcdFx0XHR0b3AgPyB2YWwgOiB3aW4ucGFnZVlPZmZzZXRcblx0XHRcdFx0KTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbVsgbWV0aG9kIF0gPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSwgbWV0aG9kLCB2YWwsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fTtcbn0gKTtcblxuLy8gU3VwcG9ydDogU2FmYXJpIDw9NyAtIDkuMSwgQ2hyb21lIDw9MzcgLSA0OVxuLy8gQWRkIHRoZSB0b3AvbGVmdCBjc3NIb29rcyB1c2luZyBqUXVlcnkuZm4ucG9zaXRpb25cbi8vIFdlYmtpdCBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA4NFxuLy8gQmxpbmsgYnVnOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD01ODkzNDdcbi8vIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyBwZXJjZW50IHdoZW4gc3BlY2lmaWVkIGZvciB0b3AvbGVmdC9ib3R0b20vcmlnaHQ7XG4vLyByYXRoZXIgdGhhbiBtYWtlIHRoZSBjc3MgbW9kdWxlIGRlcGVuZCBvbiB0aGUgb2Zmc2V0IG1vZHVsZSwganVzdCBjaGVjayBmb3IgaXQgaGVyZVxualF1ZXJ5LmVhY2goIFsgXCJ0b3BcIiwgXCJsZWZ0XCIgXSwgZnVuY3Rpb24oIGksIHByb3AgKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgcHJvcCBdID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnBpeGVsUG9zaXRpb24sXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRcdFx0Y29tcHV0ZWQgPSBjdXJDU1MoIGVsZW0sIHByb3AgKTtcblxuXHRcdFx0XHQvLyBJZiBjdXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFjayB0byBvZmZzZXRcblx0XHRcdFx0cmV0dXJuIHJudW1ub25weC50ZXN0KCBjb21wdXRlZCApID9cblx0XHRcdFx0XHRqUXVlcnkoIGVsZW0gKS5wb3NpdGlvbigpWyBwcm9wIF0gKyBcInB4XCIgOlxuXHRcdFx0XHRcdGNvbXB1dGVkO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn0gKTtcblxuXG4vLyBDcmVhdGUgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGgsIGhlaWdodCwgd2lkdGgsIG91dGVySGVpZ2h0IGFuZCBvdXRlcldpZHRoIG1ldGhvZHNcbmpRdWVyeS5lYWNoKCB7IEhlaWdodDogXCJoZWlnaHRcIiwgV2lkdGg6IFwid2lkdGhcIiB9LCBmdW5jdGlvbiggbmFtZSwgdHlwZSApIHtcblx0alF1ZXJ5LmVhY2goIHsgcGFkZGluZzogXCJpbm5lclwiICsgbmFtZSwgY29udGVudDogdHlwZSwgXCJcIjogXCJvdXRlclwiICsgbmFtZSB9LFxuXHRcdGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkge1xuXG5cdFx0Ly8gTWFyZ2luIGlzIG9ubHkgZm9yIG91dGVySGVpZ2h0LCBvdXRlcldpZHRoXG5cdFx0alF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSBcImJvb2xlYW5cIiApLFxuXHRcdFx0XHRleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/IFwibWFyZ2luXCIgOiBcImJvcmRlclwiICk7XG5cblx0XHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIGRvYztcblxuXHRcdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyAkKCB3aW5kb3cgKS5vdXRlcldpZHRoL0hlaWdodCByZXR1cm4gdy9oIGluY2x1ZGluZyBzY3JvbGxiYXJzIChnaC0xNzI5KVxuXHRcdFx0XHRcdHJldHVybiBmdW5jTmFtZS5pbmRleE9mKCBcIm91dGVyXCIgKSA9PT0gMCA/XG5cdFx0XHRcdFx0XHRlbGVtWyBcImlubmVyXCIgKyBuYW1lIF0gOlxuXHRcdFx0XHRcdFx0ZWxlbS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIFwiY2xpZW50XCIgKyBuYW1lIF07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBHZXQgZG9jdW1lbnQgd2lkdGggb3IgaGVpZ2h0XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDtcblxuXHRcdFx0XHRcdC8vIEVpdGhlciBzY3JvbGxbV2lkdGgvSGVpZ2h0XSBvciBvZmZzZXRbV2lkdGgvSGVpZ2h0XSBvciBjbGllbnRbV2lkdGgvSGVpZ2h0XSxcblx0XHRcdFx0XHQvLyB3aGljaGV2ZXIgaXMgZ3JlYXRlc3Rcblx0XHRcdFx0XHRyZXR1cm4gTWF0aC5tYXgoXG5cdFx0XHRcdFx0XHRlbGVtLmJvZHlbIFwic2Nyb2xsXCIgKyBuYW1lIF0sIGRvY1sgXCJzY3JvbGxcIiArIG5hbWUgXSxcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJvZmZzZXRcIiArIG5hbWUgXSwgZG9jWyBcIm9mZnNldFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZG9jWyBcImNsaWVudFwiICsgbmFtZSBdXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID9cblxuXHRcdFx0XHRcdC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXRcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBleHRyYSApIDpcblxuXHRcdFx0XHRcdC8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnRcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSApO1xuXHRcdFx0fSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFibGUgKTtcblx0XHR9O1xuXHR9ICk7XG59ICk7XG5cblxualF1ZXJ5LmVhY2goICggXCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBcIiArXG5cdFwibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgXCIgK1xuXHRcImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnVcIiApLnNwbGl0KCBcIiBcIiApLFxuXHRmdW5jdGlvbiggaSwgbmFtZSApIHtcblxuXHQvLyBIYW5kbGUgZXZlbnQgYmluZGluZ1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgP1xuXHRcdFx0dGhpcy5vbiggbmFtZSwgbnVsbCwgZGF0YSwgZm4gKSA6XG5cdFx0XHR0aGlzLnRyaWdnZXIoIG5hbWUgKTtcblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7XG5cdFx0cmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7XG5cdH1cbn0gKTtcblxuXG5cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdGJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub2ZmKCB0eXBlcywgbnVsbCwgZm4gKTtcblx0fSxcblxuXHRkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0dW5kZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZm4gKSB7XG5cblx0XHQvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApXG5cdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgP1xuXHRcdFx0dGhpcy5vZmYoIHNlbGVjdG9yLCBcIioqXCIgKSA6XG5cdFx0XHR0aGlzLm9mZiggdHlwZXMsIHNlbGVjdG9yIHx8IFwiKipcIiwgZm4gKTtcblx0fVxufSApO1xuXG4vLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnlcbi8vIGFyZ3VtZW50cy5cbi8vIGpRdWVyeS5wcm94eSBpcyBkZXByZWNhdGVkIHRvIHByb21vdGUgc3RhbmRhcmRzIChzcGVjaWZpY2FsbHkgRnVuY3Rpb24jYmluZClcbi8vIEhvd2V2ZXIsIGl0IGlzIG5vdCBzbGF0ZWQgZm9yIHJlbW92YWwgYW55IHRpbWUgc29vblxualF1ZXJ5LnByb3h5ID0gZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkge1xuXHR2YXIgdG1wLCBhcmdzLCBwcm94eTtcblxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcInN0cmluZ1wiICkge1xuXHRcdHRtcCA9IGZuWyBjb250ZXh0IF07XG5cdFx0Y29udGV4dCA9IGZuO1xuXHRcdGZuID0gdG1wO1xuXHR9XG5cblx0Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWNcblx0Ly8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHVuZGVmaW5lZC5cblx0aWYgKCAhaXNGdW5jdGlvbiggZm4gKSApIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Ly8gU2ltdWxhdGVkIGJpbmRcblx0YXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApO1xuXHRwcm94eSA9IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBmbi5hcHBseSggY29udGV4dCB8fCB0aGlzLCBhcmdzLmNvbmNhdCggc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApO1xuXHR9O1xuXG5cdC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZFxuXHRwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKztcblxuXHRyZXR1cm4gcHJveHk7XG59O1xuXG5qUXVlcnkuaG9sZFJlYWR5ID0gZnVuY3Rpb24oIGhvbGQgKSB7XG5cdGlmICggaG9sZCApIHtcblx0XHRqUXVlcnkucmVhZHlXYWl0Kys7XG5cdH0gZWxzZSB7XG5cdFx0alF1ZXJ5LnJlYWR5KCB0cnVlICk7XG5cdH1cbn07XG5qUXVlcnkuaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5qUXVlcnkucGFyc2VKU09OID0gSlNPTi5wYXJzZTtcbmpRdWVyeS5ub2RlTmFtZSA9IG5vZGVOYW1lO1xualF1ZXJ5LmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xualF1ZXJ5LmlzV2luZG93ID0gaXNXaW5kb3c7XG5qUXVlcnkuY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xualF1ZXJ5LnR5cGUgPSB0b1R5cGU7XG5cbmpRdWVyeS5ub3cgPSBEYXRlLm5vdztcblxualF1ZXJ5LmlzTnVtZXJpYyA9IGZ1bmN0aW9uKCBvYmogKSB7XG5cblx0Ly8gQXMgb2YgalF1ZXJ5IDMuMCwgaXNOdW1lcmljIGlzIGxpbWl0ZWQgdG9cblx0Ly8gc3RyaW5ncyBhbmQgbnVtYmVycyAocHJpbWl0aXZlcyBvciBvYmplY3RzKVxuXHQvLyB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIGZpbml0ZSBudW1iZXJzIChnaC0yNjYyKVxuXHR2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTtcblx0cmV0dXJuICggdHlwZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlID09PSBcInN0cmluZ1wiICkgJiZcblxuXHRcdC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzIChcIlwiKVxuXHRcdC8vIC4uLmJ1dCBtaXNpbnRlcnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMgKFwiMHguLi5cIilcblx0XHQvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0byBOYU5cblx0XHQhaXNOYU4oIG9iaiAtIHBhcnNlRmxvYXQoIG9iaiApICk7XG59O1xuXG5cblxuXG4vLyBSZWdpc3RlciBhcyBhIG5hbWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggb3RoZXJcbi8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3QgdmlhIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXRcbi8vIHVuZGVyc3RhbmRzIGFub255bW91cyBBTUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdFxuLy8gd2F5IHRvIHJlZ2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZVxuLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlXG4vLyBmaWxlIG5hbWUuIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHNcbi8vIHRvIGNhbGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnksIGl0IHdpbGwgd29yay5cblxuLy8gTm90ZSB0aGF0IGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LCBsaWJyYXJpZXMgdGhhdCBhcmUgbm90IGpRdWVyeSBzaG91bGRcbi8vIGRlY2xhcmUgdGhlbXNlbHZlcyBhcyBhbm9ueW1vdXMgbW9kdWxlcywgYW5kIGF2b2lkIHNldHRpbmcgYSBnbG9iYWwgaWYgYW5cbi8vIEFNRCBsb2FkZXIgaXMgcHJlc2VudC4galF1ZXJ5IGlzIGEgc3BlY2lhbCBjYXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJlanMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9uXG5cbmlmICggdHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQgKSB7XG5cdGRlZmluZSggXCJqcXVlcnlcIiwgW10sIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnk7XG5cdH0gKTtcbn1cblxuXG5cblxudmFyXG5cblx0Ly8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF9qUXVlcnkgPSB3aW5kb3cualF1ZXJ5LFxuXG5cdC8vIE1hcCBvdmVyIHRoZSAkIGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF8kID0gd2luZG93LiQ7XG5cbmpRdWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7XG5cdGlmICggd2luZG93LiQgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cuJCA9IF8kO1xuXHR9XG5cblx0aWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cualF1ZXJ5ID0gX2pRdWVyeTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnk7XG59O1xuXG4vLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGluIEFNRFxuLy8gKCM3MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNTU3KVxuLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAoIzEzNTY2KVxuaWYgKCAhbm9HbG9iYWwgKSB7XG5cdHdpbmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9IGpRdWVyeTtcbn1cblxuXG5cblxucmV0dXJuIGpRdWVyeTtcbn0gKTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0TGlrZTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyksXG4gICAgYmFzZVVuc2V0ID0gcmVxdWlyZSgnLi9fYmFzZVVuc2V0JyksXG4gICAgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgY3VzdG9tT21pdENsb25lID0gcmVxdWlyZSgnLi9fY3VzdG9tT21pdENsb25lJyksXG4gICAgZmxhdFJlc3QgPSByZXF1aXJlKCcuL19mbGF0UmVzdCcpLFxuICAgIGdldEFsbEtleXNJbiA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXNJbicpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlXG4gKiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IHBhdGhzIG9mIGBvYmplY3RgIHRoYXQgYXJlIG5vdCBvbWl0dGVkLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBjb25zaWRlcmFibHkgc2xvd2VyIHRoYW4gYF8ucGlja2AuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIG9taXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAqXG4gKiBfLm9taXQob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAqIC8vID0+IHsgJ2InOiAnMicgfVxuICovXG52YXIgb21pdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHZhciBpc0RlZXAgPSBmYWxzZTtcbiAgcGF0aHMgPSBhcnJheU1hcChwYXRocywgZnVuY3Rpb24ocGF0aCkge1xuICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgIGlzRGVlcCB8fCAoaXNEZWVwID0gcGF0aC5sZW5ndGggPiAxKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSk7XG4gIGNvcHlPYmplY3Qob2JqZWN0LCBnZXRBbGxLZXlzSW4ob2JqZWN0KSwgcmVzdWx0KTtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJlc3VsdCA9IGJhc2VDbG9uZShyZXN1bHQsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX0ZMQVRfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9tT21pdENsb25lKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBiYXNlVW5zZXQocmVzdWx0LCBwYXRoc1tsZW5ndGhdKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gb21pdDtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5T2JqZWN0O1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2U7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBzdHJpbmdUb1BhdGggPSByZXF1aXJlKCcuL19zdHJpbmdUb1BhdGgnKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0UGF0aDtcbiIsInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9LZXk7XG4iLCJ2YXIgYXJyYXlGaWx0ZXIgPSByZXF1aXJlKCcuL19hcnJheUZpbHRlcicpLFxuICAgIGJhc2VGaWx0ZXIgPSByZXF1aXJlKCcuL19iYXNlRmlsdGVyJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgYWxsIGVsZW1lbnRzXG4gKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gKiBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiAqKk5vdGU6KiogVW5saWtlIGBfLnJlbW92ZWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICogQHNlZSBfLnJlamVjdFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAqIF07XG4gKlxuICogXy5maWx0ZXIodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsICdhY3RpdmUnKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAqL1xuZnVuY3Rpb24gZmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmaWx0ZXI7XG4iLCIvKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCBhbGwgZmFsc2V5IHZhbHVlcyByZW1vdmVkLiBUaGUgdmFsdWVzIGBmYWxzZWAsIGBudWxsYCxcbiAqIGAwYCwgYFwiXCJgLCBgdW5kZWZpbmVkYCwgYW5kIGBOYU5gIGFyZSBmYWxzZXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5jb21wYWN0KFswLCAxLCBmYWxzZSwgMiwgJycsIDNdKTtcbiAqIC8vID0+IFsxLCAyLCAzXVxuICovXG5mdW5jdGlvbiBjb21wYWN0KGFycmF5KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXNJbmRleCA9IDAsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhY3Q7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VNYXAgPSByZXF1aXJlKCcuL19iYXNlTWFwJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1XG4gKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICpcbiAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAqIGBmaWxsYCwgYGludmVydGAsIGBwYXJzZUludGAsIGByYW5kb21gLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZXBlYXRgLFxuICogYHNhbXBsZVNpemVgLCBgc2xpY2VgLCBgc29tZWAsIGBzb3J0QnlgLCBgc3BsaXRgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAqICAgcmV0dXJuIG4gKiBuO1xuICogfVxuICpcbiAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAqIC8vID0+IFsxNiwgNjRdXG4gKlxuICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICogLy8gPT4gWzE2LCA2NF0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JyB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnIH1cbiAqIF07XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICovXG5mdW5jdGlvbiBtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlNYXAgOiBiYXNlTWFwO1xuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXA7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIiwidmFyIGxpc3RDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlQ2xlYXInKSxcbiAgICBsaXN0Q2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVEZWxldGUnKSxcbiAgICBsaXN0Q2FjaGVHZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVHZXQnKSxcbiAgICBsaXN0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVIYXMnKSxcbiAgICBsaXN0Q2FjaGVTZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpc3RDYWNoZTtcbiIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iLCIvKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgaXNLZXlhYmxlID0gcmVxdWlyZSgnLi9faXNLZXlhYmxlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgZGF0YSBmb3IgYG1hcGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgOiBkYXRhLm1hcDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXBEYXRhO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnblZhbHVlO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0aWYgKCFtb2R1bGUud2VicGFja1BvbHlmaWxsKSB7XG5cdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge307XG5cdFx0bW9kdWxlLnBhdGhzID0gW107XG5cdFx0Ly8gbW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XG5cdFx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwibG9hZGVkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmw7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJpZFwiLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdG1vZHVsZS53ZWJwYWNrUG9seWZpbGwgPSAxO1xuXHR9XG5cdHJldHVybiBtb2R1bGU7XG59O1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG4iLCJ2YXIgRGF0YVZpZXcgPSByZXF1aXJlKCcuL19EYXRhVmlldycpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIFByb21pc2UgPSByZXF1aXJlKCcuL19Qcm9taXNlJyksXG4gICAgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgV2Vha01hcCA9IHJlcXVpcmUoJy4vX1dlYWtNYXAnKSxcbiAgICBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4vKipcbiAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG52YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgZ2V0VGFnID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIGN0b3JTdHJpbmcgPSBDdG9yID8gdG9Tb3VyY2UoQ3RvcikgOiAnJztcblxuICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgY2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6IHJldHVybiBkYXRhVmlld1RhZztcbiAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgY2FzZSBzZXRDdG9yU3RyaW5nOiByZXR1cm4gc2V0VGFnO1xuICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRUYWc7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IDAsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICB9XG4gIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0O1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpZGVudGl0eTtcbiIsInZhciBiYXNlTWF0Y2hlcyA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzJyksXG4gICAgYmFzZU1hdGNoZXNQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgcHJvcGVydHkgPSByZXF1aXJlKCcuL3Byb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXRlcmF0ZWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IFt2YWx1ZT1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgaXRlcmF0ZWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSkge1xuICAvLyBEb24ndCBzdG9yZSB0aGUgYHR5cGVvZmAgcmVzdWx0IGluIGEgdmFyaWFibGUgdG8gYXZvaWQgYSBKSVQgYnVnIGluIFNhZmFyaSA5LlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gaWRlbnRpdHk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBpc0FycmF5KHZhbHVlKVxuICAgICAgPyBiYXNlTWF0Y2hlc1Byb3BlcnR5KHZhbHVlWzBdLCB2YWx1ZVsxXSlcbiAgICAgIDogYmFzZU1hdGNoZXModmFsdWUpO1xuICB9XG4gIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUl0ZXJhdGVlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmNhblVzZURPTSA9IGV4cG9ydHMuc2xpZGVzT25MZWZ0ID0gZXhwb3J0cy5zbGlkZXNPblJpZ2h0ID0gZXhwb3J0cy5zaWJsaW5nRGlyZWN0aW9uID0gZXhwb3J0cy5nZXRUb3RhbFNsaWRlcyA9IGV4cG9ydHMuZ2V0UG9zdENsb25lcyA9IGV4cG9ydHMuZ2V0UHJlQ2xvbmVzID0gZXhwb3J0cy5nZXRUcmFja0xlZnQgPSBleHBvcnRzLmdldFRyYWNrQW5pbWF0ZUNTUyA9IGV4cG9ydHMuZ2V0VHJhY2tDU1MgPSBleHBvcnRzLmNoZWNrU3BlY0tleXMgPSBleHBvcnRzLmdldFNsaWRlQ291bnQgPSBleHBvcnRzLmNoZWNrTmF2aWdhYmxlID0gZXhwb3J0cy5nZXROYXZpZ2FibGVJbmRleGVzID0gZXhwb3J0cy5zd2lwZUVuZCA9IGV4cG9ydHMuc3dpcGVNb3ZlID0gZXhwb3J0cy5zd2lwZVN0YXJ0ID0gZXhwb3J0cy5rZXlIYW5kbGVyID0gZXhwb3J0cy5jaGFuZ2VTbGlkZSA9IGV4cG9ydHMuc2xpZGVIYW5kbGVyID0gZXhwb3J0cy5pbml0aWFsaXplZFN0YXRlID0gZXhwb3J0cy5leHRyYWN0T2JqZWN0ID0gZXhwb3J0cy5jYW5Hb05leHQgPSBleHBvcnRzLmdldFN3aXBlRGlyZWN0aW9uID0gZXhwb3J0cy5nZXRIZWlnaHQgPSBleHBvcnRzLmdldFdpZHRoID0gZXhwb3J0cy5sYXp5U2xpZGVzT25SaWdodCA9IGV4cG9ydHMubGF6eVNsaWRlc09uTGVmdCA9IGV4cG9ydHMubGF6eUVuZEluZGV4ID0gZXhwb3J0cy5sYXp5U3RhcnRJbmRleCA9IGV4cG9ydHMuZ2V0UmVxdWlyZWRMYXp5U2xpZGVzID0gZXhwb3J0cy5nZXRPbkRlbWFuZExhenlTbGlkZXMgPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmVhY3REb20gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdC1kb21cIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHsgb3duS2V5cyA9IG93bktleXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTsgfSkpOyB9IG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBnZXRPbkRlbWFuZExhenlTbGlkZXMgPSBmdW5jdGlvbiBnZXRPbkRlbWFuZExhenlTbGlkZXMoc3BlYykge1xuICB2YXIgb25EZW1hbmRTbGlkZXMgPSBbXTtcbiAgdmFyIHN0YXJ0SW5kZXggPSBsYXp5U3RhcnRJbmRleChzcGVjKTtcbiAgdmFyIGVuZEluZGV4ID0gbGF6eUVuZEluZGV4KHNwZWMpO1xuXG4gIGZvciAodmFyIHNsaWRlSW5kZXggPSBzdGFydEluZGV4OyBzbGlkZUluZGV4IDwgZW5kSW5kZXg7IHNsaWRlSW5kZXgrKykge1xuICAgIGlmIChzcGVjLmxhenlMb2FkZWRMaXN0LmluZGV4T2Yoc2xpZGVJbmRleCkgPCAwKSB7XG4gICAgICBvbkRlbWFuZFNsaWRlcy5wdXNoKHNsaWRlSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvbkRlbWFuZFNsaWRlcztcbn07IC8vIHJldHVybiBsaXN0IG9mIHNsaWRlcyB0aGF0IG5lZWQgdG8gYmUgcHJlc2VudFxuXG5cbmV4cG9ydHMuZ2V0T25EZW1hbmRMYXp5U2xpZGVzID0gZ2V0T25EZW1hbmRMYXp5U2xpZGVzO1xuXG52YXIgZ2V0UmVxdWlyZWRMYXp5U2xpZGVzID0gZnVuY3Rpb24gZ2V0UmVxdWlyZWRMYXp5U2xpZGVzKHNwZWMpIHtcbiAgdmFyIHJlcXVpcmVkU2xpZGVzID0gW107XG4gIHZhciBzdGFydEluZGV4ID0gbGF6eVN0YXJ0SW5kZXgoc3BlYyk7XG4gIHZhciBlbmRJbmRleCA9IGxhenlFbmRJbmRleChzcGVjKTtcblxuICBmb3IgKHZhciBzbGlkZUluZGV4ID0gc3RhcnRJbmRleDsgc2xpZGVJbmRleCA8IGVuZEluZGV4OyBzbGlkZUluZGV4KyspIHtcbiAgICByZXF1aXJlZFNsaWRlcy5wdXNoKHNsaWRlSW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHJlcXVpcmVkU2xpZGVzO1xufTsgLy8gc3RhcnRJbmRleCB0aGF0IG5lZWRzIHRvIGJlIHByZXNlbnRcblxuXG5leHBvcnRzLmdldFJlcXVpcmVkTGF6eVNsaWRlcyA9IGdldFJlcXVpcmVkTGF6eVNsaWRlcztcblxudmFyIGxhenlTdGFydEluZGV4ID0gZnVuY3Rpb24gbGF6eVN0YXJ0SW5kZXgoc3BlYykge1xuICByZXR1cm4gc3BlYy5jdXJyZW50U2xpZGUgLSBsYXp5U2xpZGVzT25MZWZ0KHNwZWMpO1xufTtcblxuZXhwb3J0cy5sYXp5U3RhcnRJbmRleCA9IGxhenlTdGFydEluZGV4O1xuXG52YXIgbGF6eUVuZEluZGV4ID0gZnVuY3Rpb24gbGF6eUVuZEluZGV4KHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMuY3VycmVudFNsaWRlICsgbGF6eVNsaWRlc09uUmlnaHQoc3BlYyk7XG59O1xuXG5leHBvcnRzLmxhenlFbmRJbmRleCA9IGxhenlFbmRJbmRleDtcblxudmFyIGxhenlTbGlkZXNPbkxlZnQgPSBmdW5jdGlvbiBsYXp5U2xpZGVzT25MZWZ0KHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMuY2VudGVyTW9kZSA/IE1hdGguZmxvb3Ioc3BlYy5zbGlkZXNUb1Nob3cgLyAyKSArIChwYXJzZUludChzcGVjLmNlbnRlclBhZGRpbmcpID4gMCA/IDEgOiAwKSA6IDA7XG59O1xuXG5leHBvcnRzLmxhenlTbGlkZXNPbkxlZnQgPSBsYXp5U2xpZGVzT25MZWZ0O1xuXG52YXIgbGF6eVNsaWRlc09uUmlnaHQgPSBmdW5jdGlvbiBsYXp5U2xpZGVzT25SaWdodChzcGVjKSB7XG4gIHJldHVybiBzcGVjLmNlbnRlck1vZGUgPyBNYXRoLmZsb29yKChzcGVjLnNsaWRlc1RvU2hvdyAtIDEpIC8gMikgKyAxICsgKHBhcnNlSW50KHNwZWMuY2VudGVyUGFkZGluZykgPiAwID8gMSA6IDApIDogc3BlYy5zbGlkZXNUb1Nob3c7XG59OyAvLyBnZXQgd2lkdGggb2YgYW4gZWxlbWVudFxuXG5cbmV4cG9ydHMubGF6eVNsaWRlc09uUmlnaHQgPSBsYXp5U2xpZGVzT25SaWdodDtcblxudmFyIGdldFdpZHRoID0gZnVuY3Rpb24gZ2V0V2lkdGgoZWxlbSkge1xuICByZXR1cm4gZWxlbSAmJiBlbGVtLm9mZnNldFdpZHRoIHx8IDA7XG59O1xuXG5leHBvcnRzLmdldFdpZHRoID0gZ2V0V2lkdGg7XG5cbnZhciBnZXRIZWlnaHQgPSBmdW5jdGlvbiBnZXRIZWlnaHQoZWxlbSkge1xuICByZXR1cm4gZWxlbSAmJiBlbGVtLm9mZnNldEhlaWdodCB8fCAwO1xufTtcblxuZXhwb3J0cy5nZXRIZWlnaHQgPSBnZXRIZWlnaHQ7XG5cbnZhciBnZXRTd2lwZURpcmVjdGlvbiA9IGZ1bmN0aW9uIGdldFN3aXBlRGlyZWN0aW9uKHRvdWNoT2JqZWN0KSB7XG4gIHZhciB2ZXJ0aWNhbFN3aXBpbmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICB2YXIgeERpc3QsIHlEaXN0LCByLCBzd2lwZUFuZ2xlO1xuICB4RGlzdCA9IHRvdWNoT2JqZWN0LnN0YXJ0WCAtIHRvdWNoT2JqZWN0LmN1clg7XG4gIHlEaXN0ID0gdG91Y2hPYmplY3Quc3RhcnRZIC0gdG91Y2hPYmplY3QuY3VyWTtcbiAgciA9IE1hdGguYXRhbjIoeURpc3QsIHhEaXN0KTtcbiAgc3dpcGVBbmdsZSA9IE1hdGgucm91bmQociAqIDE4MCAvIE1hdGguUEkpO1xuXG4gIGlmIChzd2lwZUFuZ2xlIDwgMCkge1xuICAgIHN3aXBlQW5nbGUgPSAzNjAgLSBNYXRoLmFicyhzd2lwZUFuZ2xlKTtcbiAgfVxuXG4gIGlmIChzd2lwZUFuZ2xlIDw9IDQ1ICYmIHN3aXBlQW5nbGUgPj0gMCB8fCBzd2lwZUFuZ2xlIDw9IDM2MCAmJiBzd2lwZUFuZ2xlID49IDMxNSkge1xuICAgIHJldHVybiBcImxlZnRcIjtcbiAgfVxuXG4gIGlmIChzd2lwZUFuZ2xlID49IDEzNSAmJiBzd2lwZUFuZ2xlIDw9IDIyNSkge1xuICAgIHJldHVybiBcInJpZ2h0XCI7XG4gIH1cblxuICBpZiAodmVydGljYWxTd2lwaW5nID09PSB0cnVlKSB7XG4gICAgaWYgKHN3aXBlQW5nbGUgPj0gMzUgJiYgc3dpcGVBbmdsZSA8PSAxMzUpIHtcbiAgICAgIHJldHVybiBcInVwXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcImRvd25cIjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gXCJ2ZXJ0aWNhbFwiO1xufTsgLy8gd2hldGhlciBvciBub3Qgd2UgY2FuIGdvIG5leHRcblxuXG5leHBvcnRzLmdldFN3aXBlRGlyZWN0aW9uID0gZ2V0U3dpcGVEaXJlY3Rpb247XG5cbnZhciBjYW5Hb05leHQgPSBmdW5jdGlvbiBjYW5Hb05leHQoc3BlYykge1xuICB2YXIgY2FuR28gPSB0cnVlO1xuXG4gIGlmICghc3BlYy5pbmZpbml0ZSkge1xuICAgIGlmIChzcGVjLmNlbnRlck1vZGUgJiYgc3BlYy5jdXJyZW50U2xpZGUgPj0gc3BlYy5zbGlkZUNvdW50IC0gMSkge1xuICAgICAgY2FuR28gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHNwZWMuc2xpZGVDb3VudCA8PSBzcGVjLnNsaWRlc1RvU2hvdyB8fCBzcGVjLmN1cnJlbnRTbGlkZSA+PSBzcGVjLnNsaWRlQ291bnQgLSBzcGVjLnNsaWRlc1RvU2hvdykge1xuICAgICAgY2FuR28gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2FuR287XG59OyAvLyBnaXZlbiBhbiBvYmplY3QgYW5kIGEgbGlzdCBvZiBrZXlzLCByZXR1cm4gbmV3IG9iamVjdCB3aXRoIGdpdmVuIGtleXNcblxuXG5leHBvcnRzLmNhbkdvTmV4dCA9IGNhbkdvTmV4dDtcblxudmFyIGV4dHJhY3RPYmplY3QgPSBmdW5jdGlvbiBleHRyYWN0T2JqZWN0KHNwZWMsIGtleXMpIHtcbiAgdmFyIG5ld09iamVjdCA9IHt9O1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBuZXdPYmplY3Rba2V5XSA9IHNwZWNba2V5XTtcbiAgfSk7XG4gIHJldHVybiBuZXdPYmplY3Q7XG59OyAvLyBnZXQgaW5pdGlhbGl6ZWQgc3RhdGVcblxuXG5leHBvcnRzLmV4dHJhY3RPYmplY3QgPSBleHRyYWN0T2JqZWN0O1xuXG52YXIgaW5pdGlhbGl6ZWRTdGF0ZSA9IGZ1bmN0aW9uIGluaXRpYWxpemVkU3RhdGUoc3BlYykge1xuICAvLyBzcGVjIGFsc28gY29udGFpbnMgbGlzdFJlZiwgdHJhY2tSZWZcbiAgdmFyIHNsaWRlQ291bnQgPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5jb3VudChzcGVjLmNoaWxkcmVuKTtcblxuICB2YXIgbGlzdFdpZHRoID0gTWF0aC5jZWlsKGdldFdpZHRoKF9yZWFjdERvbS5kZWZhdWx0LmZpbmRET01Ob2RlKHNwZWMubGlzdFJlZikpKTtcbiAgdmFyIHRyYWNrV2lkdGggPSBNYXRoLmNlaWwoZ2V0V2lkdGgoX3JlYWN0RG9tLmRlZmF1bHQuZmluZERPTU5vZGUoc3BlYy50cmFja1JlZikpKTtcbiAgdmFyIHNsaWRlV2lkdGg7XG5cbiAgaWYgKCFzcGVjLnZlcnRpY2FsKSB7XG4gICAgdmFyIGNlbnRlclBhZGRpbmdBZGogPSBzcGVjLmNlbnRlck1vZGUgJiYgcGFyc2VJbnQoc3BlYy5jZW50ZXJQYWRkaW5nKSAqIDI7XG5cbiAgICBpZiAodHlwZW9mIHNwZWMuY2VudGVyUGFkZGluZyA9PT0gXCJzdHJpbmdcIiAmJiBzcGVjLmNlbnRlclBhZGRpbmcuc2xpY2UoLTEpID09PSBcIiVcIikge1xuICAgICAgY2VudGVyUGFkZGluZ0FkaiAqPSBsaXN0V2lkdGggLyAxMDA7XG4gICAgfVxuXG4gICAgc2xpZGVXaWR0aCA9IE1hdGguY2VpbCgobGlzdFdpZHRoIC0gY2VudGVyUGFkZGluZ0FkaikgLyBzcGVjLnNsaWRlc1RvU2hvdyk7XG4gIH0gZWxzZSB7XG4gICAgc2xpZGVXaWR0aCA9IGxpc3RXaWR0aDtcbiAgfVxuXG4gIHZhciBzbGlkZUhlaWdodCA9IF9yZWFjdERvbS5kZWZhdWx0LmZpbmRET01Ob2RlKHNwZWMubGlzdFJlZikgJiYgZ2V0SGVpZ2h0KF9yZWFjdERvbS5kZWZhdWx0LmZpbmRET01Ob2RlKHNwZWMubGlzdFJlZikucXVlcnlTZWxlY3RvcignW2RhdGEtaW5kZXg9XCIwXCJdJykpO1xuICB2YXIgbGlzdEhlaWdodCA9IHNsaWRlSGVpZ2h0ICogc3BlYy5zbGlkZXNUb1Nob3c7XG4gIHZhciBjdXJyZW50U2xpZGUgPSBzcGVjLmN1cnJlbnRTbGlkZSA9PT0gdW5kZWZpbmVkID8gc3BlYy5pbml0aWFsU2xpZGUgOiBzcGVjLmN1cnJlbnRTbGlkZTtcblxuICBpZiAoc3BlYy5ydGwgJiYgc3BlYy5jdXJyZW50U2xpZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIGN1cnJlbnRTbGlkZSA9IHNsaWRlQ291bnQgLSAxIC0gc3BlYy5pbml0aWFsU2xpZGU7XG4gIH1cblxuICB2YXIgbGF6eUxvYWRlZExpc3QgPSBzcGVjLmxhenlMb2FkZWRMaXN0IHx8IFtdO1xuICB2YXIgc2xpZGVzVG9Mb2FkID0gZ2V0T25EZW1hbmRMYXp5U2xpZGVzKHtcbiAgICBjdXJyZW50U2xpZGU6IGN1cnJlbnRTbGlkZSxcbiAgICBsYXp5TG9hZGVkTGlzdDogbGF6eUxvYWRlZExpc3RcbiAgfSwgc3BlYyk7XG4gIGxhenlMb2FkZWRMaXN0LmNvbmNhdChzbGlkZXNUb0xvYWQpO1xuICB2YXIgc3RhdGUgPSB7XG4gICAgc2xpZGVDb3VudDogc2xpZGVDb3VudCxcbiAgICBzbGlkZVdpZHRoOiBzbGlkZVdpZHRoLFxuICAgIGxpc3RXaWR0aDogbGlzdFdpZHRoLFxuICAgIHRyYWNrV2lkdGg6IHRyYWNrV2lkdGgsXG4gICAgY3VycmVudFNsaWRlOiBjdXJyZW50U2xpZGUsXG4gICAgc2xpZGVIZWlnaHQ6IHNsaWRlSGVpZ2h0LFxuICAgIGxpc3RIZWlnaHQ6IGxpc3RIZWlnaHQsXG4gICAgbGF6eUxvYWRlZExpc3Q6IGxhenlMb2FkZWRMaXN0XG4gIH07XG5cbiAgaWYgKHNwZWMuYXV0b3BsYXlpbmcgPT09IG51bGwgJiYgc3BlYy5hdXRvcGxheSkge1xuICAgIHN0YXRlW1wiYXV0b3BsYXlpbmdcIl0gPSBcInBsYXlpbmdcIjtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn07XG5cbmV4cG9ydHMuaW5pdGlhbGl6ZWRTdGF0ZSA9IGluaXRpYWxpemVkU3RhdGU7XG5cbnZhciBzbGlkZUhhbmRsZXIgPSBmdW5jdGlvbiBzbGlkZUhhbmRsZXIoc3BlYykge1xuICB2YXIgd2FpdEZvckFuaW1hdGUgPSBzcGVjLndhaXRGb3JBbmltYXRlLFxuICAgICAgYW5pbWF0aW5nID0gc3BlYy5hbmltYXRpbmcsXG4gICAgICBmYWRlID0gc3BlYy5mYWRlLFxuICAgICAgaW5maW5pdGUgPSBzcGVjLmluZmluaXRlLFxuICAgICAgaW5kZXggPSBzcGVjLmluZGV4LFxuICAgICAgc2xpZGVDb3VudCA9IHNwZWMuc2xpZGVDb3VudCxcbiAgICAgIGxhenlMb2FkZWRMaXN0ID0gc3BlYy5sYXp5TG9hZGVkTGlzdCxcbiAgICAgIGxhenlMb2FkID0gc3BlYy5sYXp5TG9hZCxcbiAgICAgIGN1cnJlbnRTbGlkZSA9IHNwZWMuY3VycmVudFNsaWRlLFxuICAgICAgY2VudGVyTW9kZSA9IHNwZWMuY2VudGVyTW9kZSxcbiAgICAgIHNsaWRlc1RvU2Nyb2xsID0gc3BlYy5zbGlkZXNUb1Njcm9sbCxcbiAgICAgIHNsaWRlc1RvU2hvdyA9IHNwZWMuc2xpZGVzVG9TaG93LFxuICAgICAgdXNlQ1NTID0gc3BlYy51c2VDU1M7XG4gIGlmICh3YWl0Rm9yQW5pbWF0ZSAmJiBhbmltYXRpbmcpIHJldHVybiB7fTtcbiAgdmFyIGFuaW1hdGlvblNsaWRlID0gaW5kZXgsXG4gICAgICBmaW5hbFNsaWRlLFxuICAgICAgYW5pbWF0aW9uTGVmdCxcbiAgICAgIGZpbmFsTGVmdDtcbiAgdmFyIHN0YXRlID0ge30sXG4gICAgICBuZXh0U3RhdGUgPSB7fTtcblxuICBpZiAoZmFkZSkge1xuICAgIGlmICghaW5maW5pdGUgJiYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzbGlkZUNvdW50KSkgcmV0dXJuIHt9O1xuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgYW5pbWF0aW9uU2xpZGUgPSBpbmRleCArIHNsaWRlQ291bnQ7XG4gICAgfSBlbHNlIGlmIChpbmRleCA+PSBzbGlkZUNvdW50KSB7XG4gICAgICBhbmltYXRpb25TbGlkZSA9IGluZGV4IC0gc2xpZGVDb3VudDtcbiAgICB9XG5cbiAgICBpZiAobGF6eUxvYWQgJiYgbGF6eUxvYWRlZExpc3QuaW5kZXhPZihhbmltYXRpb25TbGlkZSkgPCAwKSB7XG4gICAgICBsYXp5TG9hZGVkTGlzdC5wdXNoKGFuaW1hdGlvblNsaWRlKTtcbiAgICB9XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIGFuaW1hdGluZzogdHJ1ZSxcbiAgICAgIGN1cnJlbnRTbGlkZTogYW5pbWF0aW9uU2xpZGUsXG4gICAgICBsYXp5TG9hZGVkTGlzdDogbGF6eUxvYWRlZExpc3RcbiAgICB9O1xuICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgIGFuaW1hdGluZzogZmFsc2VcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGZpbmFsU2xpZGUgPSBhbmltYXRpb25TbGlkZTtcblxuICAgIGlmIChhbmltYXRpb25TbGlkZSA8IDApIHtcbiAgICAgIGZpbmFsU2xpZGUgPSBhbmltYXRpb25TbGlkZSArIHNsaWRlQ291bnQ7XG4gICAgICBpZiAoIWluZmluaXRlKSBmaW5hbFNsaWRlID0gMDtlbHNlIGlmIChzbGlkZUNvdW50ICUgc2xpZGVzVG9TY3JvbGwgIT09IDApIGZpbmFsU2xpZGUgPSBzbGlkZUNvdW50IC0gc2xpZGVDb3VudCAlIHNsaWRlc1RvU2Nyb2xsO1xuICAgIH0gZWxzZSBpZiAoIWNhbkdvTmV4dChzcGVjKSAmJiBhbmltYXRpb25TbGlkZSA+IGN1cnJlbnRTbGlkZSkge1xuICAgICAgYW5pbWF0aW9uU2xpZGUgPSBmaW5hbFNsaWRlID0gY3VycmVudFNsaWRlO1xuICAgIH0gZWxzZSBpZiAoY2VudGVyTW9kZSAmJiBhbmltYXRpb25TbGlkZSA+PSBzbGlkZUNvdW50KSB7XG4gICAgICBhbmltYXRpb25TbGlkZSA9IGluZmluaXRlID8gc2xpZGVDb3VudCA6IHNsaWRlQ291bnQgLSAxO1xuICAgICAgZmluYWxTbGlkZSA9IGluZmluaXRlID8gMCA6IHNsaWRlQ291bnQgLSAxO1xuICAgIH0gZWxzZSBpZiAoYW5pbWF0aW9uU2xpZGUgPj0gc2xpZGVDb3VudCkge1xuICAgICAgZmluYWxTbGlkZSA9IGFuaW1hdGlvblNsaWRlIC0gc2xpZGVDb3VudDtcbiAgICAgIGlmICghaW5maW5pdGUpIGZpbmFsU2xpZGUgPSBzbGlkZUNvdW50IC0gc2xpZGVzVG9TaG93O2Vsc2UgaWYgKHNsaWRlQ291bnQgJSBzbGlkZXNUb1Njcm9sbCAhPT0gMCkgZmluYWxTbGlkZSA9IDA7XG4gICAgfVxuXG4gICAgYW5pbWF0aW9uTGVmdCA9IGdldFRyYWNrTGVmdChfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICBzbGlkZUluZGV4OiBhbmltYXRpb25TbGlkZVxuICAgIH0pKTtcbiAgICBmaW5hbExlZnQgPSBnZXRUcmFja0xlZnQoX29iamVjdFNwcmVhZCh7fSwgc3BlYywge1xuICAgICAgc2xpZGVJbmRleDogZmluYWxTbGlkZVxuICAgIH0pKTtcblxuICAgIGlmICghaW5maW5pdGUpIHtcbiAgICAgIGlmIChhbmltYXRpb25MZWZ0ID09PSBmaW5hbExlZnQpIGFuaW1hdGlvblNsaWRlID0gZmluYWxTbGlkZTtcbiAgICAgIGFuaW1hdGlvbkxlZnQgPSBmaW5hbExlZnQ7XG4gICAgfVxuXG4gICAgbGF6eUxvYWQgJiYgbGF6eUxvYWRlZExpc3QuY29uY2F0KGdldE9uRGVtYW5kTGF6eVNsaWRlcyhfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICBjdXJyZW50U2xpZGU6IGFuaW1hdGlvblNsaWRlXG4gICAgfSkpKTtcblxuICAgIGlmICghdXNlQ1NTKSB7XG4gICAgICBzdGF0ZSA9IHtcbiAgICAgICAgY3VycmVudFNsaWRlOiBmaW5hbFNsaWRlLFxuICAgICAgICB0cmFja1N0eWxlOiBnZXRUcmFja0NTUyhfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICAgICAgbGVmdDogZmluYWxMZWZ0XG4gICAgICAgIH0pKSxcbiAgICAgICAgbGF6eUxvYWRlZExpc3Q6IGxhenlMb2FkZWRMaXN0XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZSA9IHtcbiAgICAgICAgYW5pbWF0aW5nOiB0cnVlLFxuICAgICAgICBjdXJyZW50U2xpZGU6IGZpbmFsU2xpZGUsXG4gICAgICAgIHRyYWNrU3R5bGU6IGdldFRyYWNrQW5pbWF0ZUNTUyhfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICAgICAgbGVmdDogYW5pbWF0aW9uTGVmdFxuICAgICAgICB9KSksXG4gICAgICAgIGxhenlMb2FkZWRMaXN0OiBsYXp5TG9hZGVkTGlzdFxuICAgICAgfTtcbiAgICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgYW5pbWF0aW5nOiBmYWxzZSxcbiAgICAgICAgY3VycmVudFNsaWRlOiBmaW5hbFNsaWRlLFxuICAgICAgICB0cmFja1N0eWxlOiBnZXRUcmFja0NTUyhfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICAgICAgbGVmdDogZmluYWxMZWZ0XG4gICAgICAgIH0pKSxcbiAgICAgICAgc3dpcGVMZWZ0OiBudWxsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IHN0YXRlLFxuICAgIG5leHRTdGF0ZTogbmV4dFN0YXRlXG4gIH07XG59O1xuXG5leHBvcnRzLnNsaWRlSGFuZGxlciA9IHNsaWRlSGFuZGxlcjtcblxudmFyIGNoYW5nZVNsaWRlID0gZnVuY3Rpb24gY2hhbmdlU2xpZGUoc3BlYywgb3B0aW9ucykge1xuICB2YXIgaW5kZXhPZmZzZXQsIHByZXZpb3VzSW50LCBzbGlkZU9mZnNldCwgdW5ldmVuT2Zmc2V0LCB0YXJnZXRTbGlkZTtcbiAgdmFyIHNsaWRlc1RvU2Nyb2xsID0gc3BlYy5zbGlkZXNUb1Njcm9sbCxcbiAgICAgIHNsaWRlc1RvU2hvdyA9IHNwZWMuc2xpZGVzVG9TaG93LFxuICAgICAgc2xpZGVDb3VudCA9IHNwZWMuc2xpZGVDb3VudCxcbiAgICAgIGN1cnJlbnRTbGlkZSA9IHNwZWMuY3VycmVudFNsaWRlLFxuICAgICAgbGF6eUxvYWQgPSBzcGVjLmxhenlMb2FkLFxuICAgICAgaW5maW5pdGUgPSBzcGVjLmluZmluaXRlO1xuICB1bmV2ZW5PZmZzZXQgPSBzbGlkZUNvdW50ICUgc2xpZGVzVG9TY3JvbGwgIT09IDA7XG4gIGluZGV4T2Zmc2V0ID0gdW5ldmVuT2Zmc2V0ID8gMCA6IChzbGlkZUNvdW50IC0gY3VycmVudFNsaWRlKSAlIHNsaWRlc1RvU2Nyb2xsO1xuXG4gIGlmIChvcHRpb25zLm1lc3NhZ2UgPT09IFwicHJldmlvdXNcIikge1xuICAgIHNsaWRlT2Zmc2V0ID0gaW5kZXhPZmZzZXQgPT09IDAgPyBzbGlkZXNUb1Njcm9sbCA6IHNsaWRlc1RvU2hvdyAtIGluZGV4T2Zmc2V0O1xuICAgIHRhcmdldFNsaWRlID0gY3VycmVudFNsaWRlIC0gc2xpZGVPZmZzZXQ7XG5cbiAgICBpZiAobGF6eUxvYWQgJiYgIWluZmluaXRlKSB7XG4gICAgICBwcmV2aW91c0ludCA9IGN1cnJlbnRTbGlkZSAtIHNsaWRlT2Zmc2V0O1xuICAgICAgdGFyZ2V0U2xpZGUgPSBwcmV2aW91c0ludCA9PT0gLTEgPyBzbGlkZUNvdW50IC0gMSA6IHByZXZpb3VzSW50O1xuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRpb25zLm1lc3NhZ2UgPT09IFwibmV4dFwiKSB7XG4gICAgc2xpZGVPZmZzZXQgPSBpbmRleE9mZnNldCA9PT0gMCA/IHNsaWRlc1RvU2Nyb2xsIDogaW5kZXhPZmZzZXQ7XG4gICAgdGFyZ2V0U2xpZGUgPSBjdXJyZW50U2xpZGUgKyBzbGlkZU9mZnNldDtcblxuICAgIGlmIChsYXp5TG9hZCAmJiAhaW5maW5pdGUpIHtcbiAgICAgIHRhcmdldFNsaWRlID0gKGN1cnJlbnRTbGlkZSArIHNsaWRlc1RvU2Nyb2xsKSAlIHNsaWRlQ291bnQgKyBpbmRleE9mZnNldDtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlID09PSBcImRvdHNcIikge1xuICAgIC8vIENsaWNrIG9uIGRvdHNcbiAgICB0YXJnZXRTbGlkZSA9IG9wdGlvbnMuaW5kZXggKiBvcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuXG4gICAgaWYgKHRhcmdldFNsaWRlID09PSBvcHRpb25zLmN1cnJlbnRTbGlkZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMubWVzc2FnZSA9PT0gXCJjaGlsZHJlblwiKSB7XG4gICAgLy8gQ2xpY2sgb24gdGhlIHNsaWRlc1xuICAgIHRhcmdldFNsaWRlID0gb3B0aW9ucy5pbmRleDtcblxuICAgIGlmICh0YXJnZXRTbGlkZSA9PT0gb3B0aW9ucy5jdXJyZW50U2xpZGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChpbmZpbml0ZSkge1xuICAgICAgdmFyIGRpcmVjdGlvbiA9IHNpYmxpbmdEaXJlY3Rpb24oX29iamVjdFNwcmVhZCh7fSwgc3BlYywge1xuICAgICAgICB0YXJnZXRTbGlkZTogdGFyZ2V0U2xpZGVcbiAgICAgIH0pKTtcblxuICAgICAgaWYgKHRhcmdldFNsaWRlID4gb3B0aW9ucy5jdXJyZW50U2xpZGUgJiYgZGlyZWN0aW9uID09PSBcImxlZnRcIikge1xuICAgICAgICB0YXJnZXRTbGlkZSA9IHRhcmdldFNsaWRlIC0gc2xpZGVDb3VudDtcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0U2xpZGUgPCBvcHRpb25zLmN1cnJlbnRTbGlkZSAmJiBkaXJlY3Rpb24gPT09IFwicmlnaHRcIikge1xuICAgICAgICB0YXJnZXRTbGlkZSA9IHRhcmdldFNsaWRlICsgc2xpZGVDb3VudDtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlID09PSBcImluZGV4XCIpIHtcbiAgICB0YXJnZXRTbGlkZSA9IE51bWJlcihvcHRpb25zLmluZGV4KTtcblxuICAgIGlmICh0YXJnZXRTbGlkZSA9PT0gb3B0aW9ucy5jdXJyZW50U2xpZGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRTbGlkZTtcbn07XG5cbmV4cG9ydHMuY2hhbmdlU2xpZGUgPSBjaGFuZ2VTbGlkZTtcblxudmFyIGtleUhhbmRsZXIgPSBmdW5jdGlvbiBrZXlIYW5kbGVyKGUsIGFjY2Vzc2liaWxpdHksIHJ0bCkge1xuICBpZiAoZS50YXJnZXQudGFnTmFtZS5tYXRjaChcIlRFWFRBUkVBfElOUFVUfFNFTEVDVFwiKSB8fCAhYWNjZXNzaWJpbGl0eSkgcmV0dXJuIFwiXCI7XG4gIGlmIChlLmtleUNvZGUgPT09IDM3KSByZXR1cm4gcnRsID8gXCJuZXh0XCIgOiBcInByZXZpb3VzXCI7XG4gIGlmIChlLmtleUNvZGUgPT09IDM5KSByZXR1cm4gcnRsID8gXCJwcmV2aW91c1wiIDogXCJuZXh0XCI7XG4gIHJldHVybiBcIlwiO1xufTtcblxuZXhwb3J0cy5rZXlIYW5kbGVyID0ga2V5SGFuZGxlcjtcblxudmFyIHN3aXBlU3RhcnQgPSBmdW5jdGlvbiBzd2lwZVN0YXJ0KGUsIHN3aXBlLCBkcmFnZ2FibGUpIHtcbiAgZS50YXJnZXQudGFnTmFtZSA9PT0gXCJJTUdcIiAmJiBlLnByZXZlbnREZWZhdWx0KCk7XG4gIGlmICghc3dpcGUgfHwgIWRyYWdnYWJsZSAmJiBlLnR5cGUuaW5kZXhPZihcIm1vdXNlXCIpICE9PSAtMSkgcmV0dXJuIFwiXCI7XG4gIHJldHVybiB7XG4gICAgZHJhZ2dpbmc6IHRydWUsXG4gICAgdG91Y2hPYmplY3Q6IHtcbiAgICAgIHN0YXJ0WDogZS50b3VjaGVzID8gZS50b3VjaGVzWzBdLnBhZ2VYIDogZS5jbGllbnRYLFxuICAgICAgc3RhcnRZOiBlLnRvdWNoZXMgPyBlLnRvdWNoZXNbMF0ucGFnZVkgOiBlLmNsaWVudFksXG4gICAgICBjdXJYOiBlLnRvdWNoZXMgPyBlLnRvdWNoZXNbMF0ucGFnZVggOiBlLmNsaWVudFgsXG4gICAgICBjdXJZOiBlLnRvdWNoZXMgPyBlLnRvdWNoZXNbMF0ucGFnZVkgOiBlLmNsaWVudFlcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnRzLnN3aXBlU3RhcnQgPSBzd2lwZVN0YXJ0O1xuXG52YXIgc3dpcGVNb3ZlID0gZnVuY3Rpb24gc3dpcGVNb3ZlKGUsIHNwZWMpIHtcbiAgLy8gc3BlYyBhbHNvIGNvbnRhaW5zLCB0cmFja1JlZiBhbmQgc2xpZGVJbmRleFxuICB2YXIgc2Nyb2xsaW5nID0gc3BlYy5zY3JvbGxpbmcsXG4gICAgICBhbmltYXRpbmcgPSBzcGVjLmFuaW1hdGluZyxcbiAgICAgIHZlcnRpY2FsID0gc3BlYy52ZXJ0aWNhbCxcbiAgICAgIHN3aXBlVG9TbGlkZSA9IHNwZWMuc3dpcGVUb1NsaWRlLFxuICAgICAgdmVydGljYWxTd2lwaW5nID0gc3BlYy52ZXJ0aWNhbFN3aXBpbmcsXG4gICAgICBydGwgPSBzcGVjLnJ0bCxcbiAgICAgIGN1cnJlbnRTbGlkZSA9IHNwZWMuY3VycmVudFNsaWRlLFxuICAgICAgZWRnZUZyaWN0aW9uID0gc3BlYy5lZGdlRnJpY3Rpb24sXG4gICAgICBlZGdlRHJhZ2dlZCA9IHNwZWMuZWRnZURyYWdnZWQsXG4gICAgICBvbkVkZ2UgPSBzcGVjLm9uRWRnZSxcbiAgICAgIHN3aXBlZCA9IHNwZWMuc3dpcGVkLFxuICAgICAgc3dpcGluZyA9IHNwZWMuc3dpcGluZyxcbiAgICAgIHNsaWRlQ291bnQgPSBzcGVjLnNsaWRlQ291bnQsXG4gICAgICBzbGlkZXNUb1Njcm9sbCA9IHNwZWMuc2xpZGVzVG9TY3JvbGwsXG4gICAgICBpbmZpbml0ZSA9IHNwZWMuaW5maW5pdGUsXG4gICAgICB0b3VjaE9iamVjdCA9IHNwZWMudG91Y2hPYmplY3QsXG4gICAgICBzd2lwZUV2ZW50ID0gc3BlYy5zd2lwZUV2ZW50LFxuICAgICAgbGlzdEhlaWdodCA9IHNwZWMubGlzdEhlaWdodCxcbiAgICAgIGxpc3RXaWR0aCA9IHNwZWMubGlzdFdpZHRoO1xuICBpZiAoc2Nyb2xsaW5nKSByZXR1cm47XG4gIGlmIChhbmltYXRpbmcpIHJldHVybiBlLnByZXZlbnREZWZhdWx0KCk7XG4gIGlmICh2ZXJ0aWNhbCAmJiBzd2lwZVRvU2xpZGUgJiYgdmVydGljYWxTd2lwaW5nKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIHZhciBzd2lwZUxlZnQsXG4gICAgICBzdGF0ZSA9IHt9O1xuICB2YXIgY3VyTGVmdCA9IGdldFRyYWNrTGVmdChzcGVjKTtcbiAgdG91Y2hPYmplY3QuY3VyWCA9IGUudG91Y2hlcyA/IGUudG91Y2hlc1swXS5wYWdlWCA6IGUuY2xpZW50WDtcbiAgdG91Y2hPYmplY3QuY3VyWSA9IGUudG91Y2hlcyA/IGUudG91Y2hlc1swXS5wYWdlWSA6IGUuY2xpZW50WTtcbiAgdG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPSBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyh0b3VjaE9iamVjdC5jdXJYIC0gdG91Y2hPYmplY3Quc3RhcnRYLCAyKSkpO1xuICB2YXIgdmVydGljYWxTd2lwZUxlbmd0aCA9IE1hdGgucm91bmQoTWF0aC5zcXJ0KE1hdGgucG93KHRvdWNoT2JqZWN0LmN1clkgLSB0b3VjaE9iamVjdC5zdGFydFksIDIpKSk7XG5cbiAgaWYgKCF2ZXJ0aWNhbFN3aXBpbmcgJiYgIXN3aXBpbmcgJiYgdmVydGljYWxTd2lwZUxlbmd0aCA+IDEwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbGluZzogdHJ1ZVxuICAgIH07XG4gIH1cblxuICBpZiAodmVydGljYWxTd2lwaW5nKSB0b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA9IHZlcnRpY2FsU3dpcGVMZW5ndGg7XG4gIHZhciBwb3NpdGlvbk9mZnNldCA9ICghcnRsID8gMSA6IC0xKSAqICh0b3VjaE9iamVjdC5jdXJYID4gdG91Y2hPYmplY3Quc3RhcnRYID8gMSA6IC0xKTtcbiAgaWYgKHZlcnRpY2FsU3dpcGluZykgcG9zaXRpb25PZmZzZXQgPSB0b3VjaE9iamVjdC5jdXJZID4gdG91Y2hPYmplY3Quc3RhcnRZID8gMSA6IC0xO1xuICB2YXIgZG90Q291bnQgPSBNYXRoLmNlaWwoc2xpZGVDb3VudCAvIHNsaWRlc1RvU2Nyb2xsKTtcbiAgdmFyIHN3aXBlRGlyZWN0aW9uID0gZ2V0U3dpcGVEaXJlY3Rpb24oc3BlYy50b3VjaE9iamVjdCwgdmVydGljYWxTd2lwaW5nKTtcbiAgdmFyIHRvdWNoU3dpcGVMZW5ndGggPSB0b3VjaE9iamVjdC5zd2lwZUxlbmd0aDtcblxuICBpZiAoIWluZmluaXRlKSB7XG4gICAgaWYgKGN1cnJlbnRTbGlkZSA9PT0gMCAmJiBzd2lwZURpcmVjdGlvbiA9PT0gXCJyaWdodFwiIHx8IGN1cnJlbnRTbGlkZSArIDEgPj0gZG90Q291bnQgJiYgc3dpcGVEaXJlY3Rpb24gPT09IFwibGVmdFwiIHx8ICFjYW5Hb05leHQoc3BlYykgJiYgc3dpcGVEaXJlY3Rpb24gPT09IFwibGVmdFwiKSB7XG4gICAgICB0b3VjaFN3aXBlTGVuZ3RoID0gdG91Y2hPYmplY3Quc3dpcGVMZW5ndGggKiBlZGdlRnJpY3Rpb247XG5cbiAgICAgIGlmIChlZGdlRHJhZ2dlZCA9PT0gZmFsc2UgJiYgb25FZGdlKSB7XG4gICAgICAgIG9uRWRnZShzd2lwZURpcmVjdGlvbik7XG4gICAgICAgIHN0YXRlW1wiZWRnZURyYWdnZWRcIl0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghc3dpcGVkICYmIHN3aXBlRXZlbnQpIHtcbiAgICBzd2lwZUV2ZW50KHN3aXBlRGlyZWN0aW9uKTtcbiAgICBzdGF0ZVtcInN3aXBlZFwiXSA9IHRydWU7XG4gIH1cblxuICBpZiAoIXZlcnRpY2FsKSB7XG4gICAgaWYgKCFydGwpIHtcbiAgICAgIHN3aXBlTGVmdCA9IGN1ckxlZnQgKyB0b3VjaFN3aXBlTGVuZ3RoICogcG9zaXRpb25PZmZzZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlTGVmdCA9IGN1ckxlZnQgLSB0b3VjaFN3aXBlTGVuZ3RoICogcG9zaXRpb25PZmZzZXQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN3aXBlTGVmdCA9IGN1ckxlZnQgKyB0b3VjaFN3aXBlTGVuZ3RoICogKGxpc3RIZWlnaHQgLyBsaXN0V2lkdGgpICogcG9zaXRpb25PZmZzZXQ7XG4gIH1cblxuICBpZiAodmVydGljYWxTd2lwaW5nKSB7XG4gICAgc3dpcGVMZWZ0ID0gY3VyTGVmdCArIHRvdWNoU3dpcGVMZW5ndGggKiBwb3NpdGlvbk9mZnNldDtcbiAgfVxuXG4gIHN0YXRlID0gX29iamVjdFNwcmVhZCh7fSwgc3RhdGUsIHtcbiAgICB0b3VjaE9iamVjdDogdG91Y2hPYmplY3QsXG4gICAgc3dpcGVMZWZ0OiBzd2lwZUxlZnQsXG4gICAgdHJhY2tTdHlsZTogZ2V0VHJhY2tDU1MoX29iamVjdFNwcmVhZCh7fSwgc3BlYywge1xuICAgICAgbGVmdDogc3dpcGVMZWZ0XG4gICAgfSkpXG4gIH0pO1xuXG4gIGlmIChNYXRoLmFicyh0b3VjaE9iamVjdC5jdXJYIC0gdG91Y2hPYmplY3Quc3RhcnRYKSA8IE1hdGguYWJzKHRvdWNoT2JqZWN0LmN1clkgLSB0b3VjaE9iamVjdC5zdGFydFkpICogMC44KSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgaWYgKHRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID4gMTApIHtcbiAgICBzdGF0ZVtcInN3aXBpbmdcIl0gPSB0cnVlO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn07XG5cbmV4cG9ydHMuc3dpcGVNb3ZlID0gc3dpcGVNb3ZlO1xuXG52YXIgc3dpcGVFbmQgPSBmdW5jdGlvbiBzd2lwZUVuZChlLCBzcGVjKSB7XG4gIHZhciBkcmFnZ2luZyA9IHNwZWMuZHJhZ2dpbmcsXG4gICAgICBzd2lwZSA9IHNwZWMuc3dpcGUsXG4gICAgICB0b3VjaE9iamVjdCA9IHNwZWMudG91Y2hPYmplY3QsXG4gICAgICBsaXN0V2lkdGggPSBzcGVjLmxpc3RXaWR0aCxcbiAgICAgIHRvdWNoVGhyZXNob2xkID0gc3BlYy50b3VjaFRocmVzaG9sZCxcbiAgICAgIHZlcnRpY2FsU3dpcGluZyA9IHNwZWMudmVydGljYWxTd2lwaW5nLFxuICAgICAgbGlzdEhlaWdodCA9IHNwZWMubGlzdEhlaWdodCxcbiAgICAgIGN1cnJlbnRTbGlkZSA9IHNwZWMuY3VycmVudFNsaWRlLFxuICAgICAgc3dpcGVUb1NsaWRlID0gc3BlYy5zd2lwZVRvU2xpZGUsXG4gICAgICBzY3JvbGxpbmcgPSBzcGVjLnNjcm9sbGluZyxcbiAgICAgIG9uU3dpcGUgPSBzcGVjLm9uU3dpcGU7XG5cbiAgaWYgKCFkcmFnZ2luZykge1xuICAgIGlmIChzd2lwZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHZhciBtaW5Td2lwZSA9IHZlcnRpY2FsU3dpcGluZyA/IGxpc3RIZWlnaHQgLyB0b3VjaFRocmVzaG9sZCA6IGxpc3RXaWR0aCAvIHRvdWNoVGhyZXNob2xkO1xuICB2YXIgc3dpcGVEaXJlY3Rpb24gPSBnZXRTd2lwZURpcmVjdGlvbih0b3VjaE9iamVjdCwgdmVydGljYWxTd2lwaW5nKTsgLy8gcmVzZXQgdGhlIHN0YXRlIG9mIHRvdWNoIHJlbGF0ZWQgc3RhdGUgdmFyaWFibGVzLlxuXG4gIHZhciBzdGF0ZSA9IHtcbiAgICBkcmFnZ2luZzogZmFsc2UsXG4gICAgZWRnZURyYWdnZWQ6IGZhbHNlLFxuICAgIHNjcm9sbGluZzogZmFsc2UsXG4gICAgc3dpcGluZzogZmFsc2UsXG4gICAgc3dpcGVkOiBmYWxzZSxcbiAgICBzd2lwZUxlZnQ6IG51bGwsXG4gICAgdG91Y2hPYmplY3Q6IHt9XG4gIH07XG5cbiAgaWYgKHNjcm9sbGluZykge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGlmICghdG91Y2hPYmplY3Quc3dpcGVMZW5ndGgpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBpZiAodG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPiBtaW5Td2lwZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmIChvblN3aXBlKSB7XG4gICAgICBvblN3aXBlKHN3aXBlRGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICB2YXIgc2xpZGVDb3VudCwgbmV3U2xpZGU7XG5cbiAgICBzd2l0Y2ggKHN3aXBlRGlyZWN0aW9uKSB7XG4gICAgICBjYXNlIFwibGVmdFwiOlxuICAgICAgY2FzZSBcInVwXCI6XG4gICAgICAgIG5ld1NsaWRlID0gY3VycmVudFNsaWRlICsgZ2V0U2xpZGVDb3VudChzcGVjKTtcbiAgICAgICAgc2xpZGVDb3VudCA9IHN3aXBlVG9TbGlkZSA/IGNoZWNrTmF2aWdhYmxlKHNwZWMsIG5ld1NsaWRlKSA6IG5ld1NsaWRlO1xuICAgICAgICBzdGF0ZVtcImN1cnJlbnREaXJlY3Rpb25cIl0gPSAwO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInJpZ2h0XCI6XG4gICAgICBjYXNlIFwiZG93blwiOlxuICAgICAgICBuZXdTbGlkZSA9IGN1cnJlbnRTbGlkZSAtIGdldFNsaWRlQ291bnQoc3BlYyk7XG4gICAgICAgIHNsaWRlQ291bnQgPSBzd2lwZVRvU2xpZGUgPyBjaGVja05hdmlnYWJsZShzcGVjLCBuZXdTbGlkZSkgOiBuZXdTbGlkZTtcbiAgICAgICAgc3RhdGVbXCJjdXJyZW50RGlyZWN0aW9uXCJdID0gMTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHNsaWRlQ291bnQgPSBjdXJyZW50U2xpZGU7XG4gICAgfVxuXG4gICAgc3RhdGVbXCJ0cmlnZ2VyU2xpZGVIYW5kbGVyXCJdID0gc2xpZGVDb3VudDtcbiAgfSBlbHNlIHtcbiAgICAvLyBBZGp1c3QgdGhlIHRyYWNrIGJhY2sgdG8gaXQncyBvcmlnaW5hbCBwb3NpdGlvbi5cbiAgICB2YXIgY3VycmVudExlZnQgPSBnZXRUcmFja0xlZnQoc3BlYyk7XG4gICAgc3RhdGVbXCJ0cmFja1N0eWxlXCJdID0gZ2V0VHJhY2tBbmltYXRlQ1NTKF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHtcbiAgICAgIGxlZnQ6IGN1cnJlbnRMZWZ0XG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcblxuZXhwb3J0cy5zd2lwZUVuZCA9IHN3aXBlRW5kO1xuXG52YXIgZ2V0TmF2aWdhYmxlSW5kZXhlcyA9IGZ1bmN0aW9uIGdldE5hdmlnYWJsZUluZGV4ZXMoc3BlYykge1xuICB2YXIgbWF4ID0gc3BlYy5pbmZpbml0ZSA/IHNwZWMuc2xpZGVDb3VudCAqIDIgOiBzcGVjLnNsaWRlQ291bnQ7XG4gIHZhciBicmVha3BvaW50ID0gc3BlYy5pbmZpbml0ZSA/IHNwZWMuc2xpZGVzVG9TaG93ICogLTEgOiAwO1xuICB2YXIgY291bnRlciA9IHNwZWMuaW5maW5pdGUgPyBzcGVjLnNsaWRlc1RvU2hvdyAqIC0xIDogMDtcbiAgdmFyIGluZGV4ZXMgPSBbXTtcblxuICB3aGlsZSAoYnJlYWtwb2ludCA8IG1heCkge1xuICAgIGluZGV4ZXMucHVzaChicmVha3BvaW50KTtcbiAgICBicmVha3BvaW50ID0gY291bnRlciArIHNwZWMuc2xpZGVzVG9TY3JvbGw7XG4gICAgY291bnRlciArPSBNYXRoLm1pbihzcGVjLnNsaWRlc1RvU2Nyb2xsLCBzcGVjLnNsaWRlc1RvU2hvdyk7XG4gIH1cblxuICByZXR1cm4gaW5kZXhlcztcbn07XG5cbmV4cG9ydHMuZ2V0TmF2aWdhYmxlSW5kZXhlcyA9IGdldE5hdmlnYWJsZUluZGV4ZXM7XG5cbnZhciBjaGVja05hdmlnYWJsZSA9IGZ1bmN0aW9uIGNoZWNrTmF2aWdhYmxlKHNwZWMsIGluZGV4KSB7XG4gIHZhciBuYXZpZ2FibGVzID0gZ2V0TmF2aWdhYmxlSW5kZXhlcyhzcGVjKTtcbiAgdmFyIHByZXZOYXZpZ2FibGUgPSAwO1xuXG4gIGlmIChpbmRleCA+IG5hdmlnYWJsZXNbbmF2aWdhYmxlcy5sZW5ndGggLSAxXSkge1xuICAgIGluZGV4ID0gbmF2aWdhYmxlc1tuYXZpZ2FibGVzLmxlbmd0aCAtIDFdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIG4gaW4gbmF2aWdhYmxlcykge1xuICAgICAgaWYgKGluZGV4IDwgbmF2aWdhYmxlc1tuXSkge1xuICAgICAgICBpbmRleCA9IHByZXZOYXZpZ2FibGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBwcmV2TmF2aWdhYmxlID0gbmF2aWdhYmxlc1tuXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5leHBvcnRzLmNoZWNrTmF2aWdhYmxlID0gY2hlY2tOYXZpZ2FibGU7XG5cbnZhciBnZXRTbGlkZUNvdW50ID0gZnVuY3Rpb24gZ2V0U2xpZGVDb3VudChzcGVjKSB7XG4gIHZhciBjZW50ZXJPZmZzZXQgPSBzcGVjLmNlbnRlck1vZGUgPyBzcGVjLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKHNwZWMuc2xpZGVzVG9TaG93IC8gMikgOiAwO1xuXG4gIGlmIChzcGVjLnN3aXBlVG9TbGlkZSkge1xuICAgIHZhciBzd2lwZWRTbGlkZTtcblxuICAgIHZhciBzbGlja0xpc3QgPSBfcmVhY3REb20uZGVmYXVsdC5maW5kRE9NTm9kZShzcGVjLmxpc3RSZWYpO1xuXG4gICAgdmFyIHNsaWRlcyA9IHNsaWNrTGlzdC5xdWVyeVNlbGVjdG9yQWxsKFwiLnNsaWNrLXNsaWRlXCIpO1xuICAgIEFycmF5LmZyb20oc2xpZGVzKS5ldmVyeShmdW5jdGlvbiAoc2xpZGUpIHtcbiAgICAgIGlmICghc3BlYy52ZXJ0aWNhbCkge1xuICAgICAgICBpZiAoc2xpZGUub2Zmc2V0TGVmdCAtIGNlbnRlck9mZnNldCArIGdldFdpZHRoKHNsaWRlKSAvIDIgPiBzcGVjLnN3aXBlTGVmdCAqIC0xKSB7XG4gICAgICAgICAgc3dpcGVkU2xpZGUgPSBzbGlkZTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzbGlkZS5vZmZzZXRUb3AgKyBnZXRIZWlnaHQoc2xpZGUpIC8gMiA+IHNwZWMuc3dpcGVMZWZ0ICogLTEpIHtcbiAgICAgICAgICBzd2lwZWRTbGlkZSA9IHNsaWRlO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGlmICghc3dpcGVkU2xpZGUpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50SW5kZXggPSBzcGVjLnJ0bCA9PT0gdHJ1ZSA/IHNwZWMuc2xpZGVDb3VudCAtIHNwZWMuY3VycmVudFNsaWRlIDogc3BlYy5jdXJyZW50U2xpZGU7XG4gICAgdmFyIHNsaWRlc1RyYXZlcnNlZCA9IE1hdGguYWJzKHN3aXBlZFNsaWRlLmRhdGFzZXQuaW5kZXggLSBjdXJyZW50SW5kZXgpIHx8IDE7XG4gICAgcmV0dXJuIHNsaWRlc1RyYXZlcnNlZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3BlYy5zbGlkZXNUb1Njcm9sbDtcbiAgfVxufTtcblxuZXhwb3J0cy5nZXRTbGlkZUNvdW50ID0gZ2V0U2xpZGVDb3VudDtcblxudmFyIGNoZWNrU3BlY0tleXMgPSBmdW5jdGlvbiBjaGVja1NwZWNLZXlzKHNwZWMsIGtleXNBcnJheSkge1xuICByZXR1cm4ga2V5c0FycmF5LnJlZHVjZShmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiBzcGVjLmhhc093blByb3BlcnR5KGtleSk7XG4gIH0sIHRydWUpID8gbnVsbCA6IGNvbnNvbGUuZXJyb3IoXCJLZXlzIE1pc3Npbmc6XCIsIHNwZWMpO1xufTtcblxuZXhwb3J0cy5jaGVja1NwZWNLZXlzID0gY2hlY2tTcGVjS2V5cztcblxudmFyIGdldFRyYWNrQ1NTID0gZnVuY3Rpb24gZ2V0VHJhY2tDU1Moc3BlYykge1xuICBjaGVja1NwZWNLZXlzKHNwZWMsIFtcImxlZnRcIiwgXCJ2YXJpYWJsZVdpZHRoXCIsIFwic2xpZGVDb3VudFwiLCBcInNsaWRlc1RvU2hvd1wiLCBcInNsaWRlV2lkdGhcIl0pO1xuICB2YXIgdHJhY2tXaWR0aCwgdHJhY2tIZWlnaHQ7XG4gIHZhciB0cmFja0NoaWxkcmVuID0gc3BlYy5zbGlkZUNvdW50ICsgMiAqIHNwZWMuc2xpZGVzVG9TaG93O1xuXG4gIGlmICghc3BlYy52ZXJ0aWNhbCkge1xuICAgIHRyYWNrV2lkdGggPSBnZXRUb3RhbFNsaWRlcyhzcGVjKSAqIHNwZWMuc2xpZGVXaWR0aDtcbiAgfSBlbHNlIHtcbiAgICB0cmFja0hlaWdodCA9IHRyYWNrQ2hpbGRyZW4gKiBzcGVjLnNsaWRlSGVpZ2h0O1xuICB9XG5cbiAgdmFyIHN0eWxlID0ge1xuICAgIG9wYWNpdHk6IDEsXG4gICAgdHJhbnNpdGlvbjogXCJcIixcbiAgICBXZWJraXRUcmFuc2l0aW9uOiBcIlwiXG4gIH07XG5cbiAgaWYgKHNwZWMudXNlVHJhbnNmb3JtKSB7XG4gICAgdmFyIFdlYmtpdFRyYW5zZm9ybSA9ICFzcGVjLnZlcnRpY2FsID8gXCJ0cmFuc2xhdGUzZChcIiArIHNwZWMubGVmdCArIFwicHgsIDBweCwgMHB4KVwiIDogXCJ0cmFuc2xhdGUzZCgwcHgsIFwiICsgc3BlYy5sZWZ0ICsgXCJweCwgMHB4KVwiO1xuICAgIHZhciB0cmFuc2Zvcm0gPSAhc3BlYy52ZXJ0aWNhbCA/IFwidHJhbnNsYXRlM2QoXCIgKyBzcGVjLmxlZnQgKyBcInB4LCAwcHgsIDBweClcIiA6IFwidHJhbnNsYXRlM2QoMHB4LCBcIiArIHNwZWMubGVmdCArIFwicHgsIDBweClcIjtcbiAgICB2YXIgbXNUcmFuc2Zvcm0gPSAhc3BlYy52ZXJ0aWNhbCA/IFwidHJhbnNsYXRlWChcIiArIHNwZWMubGVmdCArIFwicHgpXCIgOiBcInRyYW5zbGF0ZVkoXCIgKyBzcGVjLmxlZnQgKyBcInB4KVwiO1xuICAgIHN0eWxlID0gX29iamVjdFNwcmVhZCh7fSwgc3R5bGUsIHtcbiAgICAgIFdlYmtpdFRyYW5zZm9ybTogV2Via2l0VHJhbnNmb3JtLFxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm0sXG4gICAgICBtc1RyYW5zZm9ybTogbXNUcmFuc2Zvcm1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3BlYy52ZXJ0aWNhbCkge1xuICAgICAgc3R5bGVbXCJ0b3BcIl0gPSBzcGVjLmxlZnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlW1wibGVmdFwiXSA9IHNwZWMubGVmdDtcbiAgICB9XG4gIH1cblxuICBpZiAoc3BlYy5mYWRlKSBzdHlsZSA9IHtcbiAgICBvcGFjaXR5OiAxXG4gIH07XG4gIGlmICh0cmFja1dpZHRoKSBzdHlsZS53aWR0aCA9IHRyYWNrV2lkdGg7XG4gIGlmICh0cmFja0hlaWdodCkgc3R5bGUuaGVpZ2h0ID0gdHJhY2tIZWlnaHQ7IC8vIEZhbGxiYWNrIGZvciBJRThcblxuICBpZiAod2luZG93ICYmICF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciAmJiB3aW5kb3cuYXR0YWNoRXZlbnQpIHtcbiAgICBpZiAoIXNwZWMudmVydGljYWwpIHtcbiAgICAgIHN0eWxlLm1hcmdpbkxlZnQgPSBzcGVjLmxlZnQgKyBcInB4XCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLm1hcmdpblRvcCA9IHNwZWMubGVmdCArIFwicHhcIjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59O1xuXG5leHBvcnRzLmdldFRyYWNrQ1NTID0gZ2V0VHJhY2tDU1M7XG5cbnZhciBnZXRUcmFja0FuaW1hdGVDU1MgPSBmdW5jdGlvbiBnZXRUcmFja0FuaW1hdGVDU1Moc3BlYykge1xuICBjaGVja1NwZWNLZXlzKHNwZWMsIFtcImxlZnRcIiwgXCJ2YXJpYWJsZVdpZHRoXCIsIFwic2xpZGVDb3VudFwiLCBcInNsaWRlc1RvU2hvd1wiLCBcInNsaWRlV2lkdGhcIiwgXCJzcGVlZFwiLCBcImNzc0Vhc2VcIl0pO1xuICB2YXIgc3R5bGUgPSBnZXRUcmFja0NTUyhzcGVjKTsgLy8gdXNlQ1NTIGlzIHRydWUgYnkgZGVmYXVsdCBzbyBpdCBjYW4gYmUgdW5kZWZpbmVkXG5cbiAgaWYgKHNwZWMudXNlVHJhbnNmb3JtKSB7XG4gICAgc3R5bGUuV2Via2l0VHJhbnNpdGlvbiA9IFwiLXdlYmtpdC10cmFuc2Zvcm0gXCIgKyBzcGVjLnNwZWVkICsgXCJtcyBcIiArIHNwZWMuY3NzRWFzZTtcbiAgICBzdHlsZS50cmFuc2l0aW9uID0gXCJ0cmFuc2Zvcm0gXCIgKyBzcGVjLnNwZWVkICsgXCJtcyBcIiArIHNwZWMuY3NzRWFzZTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3BlYy52ZXJ0aWNhbCkge1xuICAgICAgc3R5bGUudHJhbnNpdGlvbiA9IFwidG9wIFwiICsgc3BlYy5zcGVlZCArIFwibXMgXCIgKyBzcGVjLmNzc0Vhc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLnRyYW5zaXRpb24gPSBcImxlZnQgXCIgKyBzcGVjLnNwZWVkICsgXCJtcyBcIiArIHNwZWMuY3NzRWFzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59O1xuXG5leHBvcnRzLmdldFRyYWNrQW5pbWF0ZUNTUyA9IGdldFRyYWNrQW5pbWF0ZUNTUztcblxudmFyIGdldFRyYWNrTGVmdCA9IGZ1bmN0aW9uIGdldFRyYWNrTGVmdChzcGVjKSB7XG4gIGlmIChzcGVjLnVuc2xpY2spIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGNoZWNrU3BlY0tleXMoc3BlYywgW1wic2xpZGVJbmRleFwiLCBcInRyYWNrUmVmXCIsIFwiaW5maW5pdGVcIiwgXCJjZW50ZXJNb2RlXCIsIFwic2xpZGVDb3VudFwiLCBcInNsaWRlc1RvU2hvd1wiLCBcInNsaWRlc1RvU2Nyb2xsXCIsIFwic2xpZGVXaWR0aFwiLCBcImxpc3RXaWR0aFwiLCBcInZhcmlhYmxlV2lkdGhcIiwgXCJzbGlkZUhlaWdodFwiXSk7XG4gIHZhciBzbGlkZUluZGV4ID0gc3BlYy5zbGlkZUluZGV4LFxuICAgICAgdHJhY2tSZWYgPSBzcGVjLnRyYWNrUmVmLFxuICAgICAgaW5maW5pdGUgPSBzcGVjLmluZmluaXRlLFxuICAgICAgY2VudGVyTW9kZSA9IHNwZWMuY2VudGVyTW9kZSxcbiAgICAgIHNsaWRlQ291bnQgPSBzcGVjLnNsaWRlQ291bnQsXG4gICAgICBzbGlkZXNUb1Nob3cgPSBzcGVjLnNsaWRlc1RvU2hvdyxcbiAgICAgIHNsaWRlc1RvU2Nyb2xsID0gc3BlYy5zbGlkZXNUb1Njcm9sbCxcbiAgICAgIHNsaWRlV2lkdGggPSBzcGVjLnNsaWRlV2lkdGgsXG4gICAgICBsaXN0V2lkdGggPSBzcGVjLmxpc3RXaWR0aCxcbiAgICAgIHZhcmlhYmxlV2lkdGggPSBzcGVjLnZhcmlhYmxlV2lkdGgsXG4gICAgICBzbGlkZUhlaWdodCA9IHNwZWMuc2xpZGVIZWlnaHQsXG4gICAgICBmYWRlID0gc3BlYy5mYWRlLFxuICAgICAgdmVydGljYWwgPSBzcGVjLnZlcnRpY2FsO1xuICB2YXIgc2xpZGVPZmZzZXQgPSAwO1xuICB2YXIgdGFyZ2V0TGVmdDtcbiAgdmFyIHRhcmdldFNsaWRlO1xuICB2YXIgdmVydGljYWxPZmZzZXQgPSAwO1xuXG4gIGlmIChmYWRlIHx8IHNwZWMuc2xpZGVDb3VudCA9PT0gMSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHNsaWRlc1RvT2Zmc2V0ID0gMDtcblxuICBpZiAoaW5maW5pdGUpIHtcbiAgICBzbGlkZXNUb09mZnNldCA9IC1nZXRQcmVDbG9uZXMoc3BlYyk7IC8vIGJyaW5nIGFjdGl2ZSBzbGlkZSB0byB0aGUgYmVnaW5uaW5nIG9mIHZpc3VhbCBhcmVhXG4gICAgLy8gaWYgbmV4dCBzY3JvbGwgZG9lc24ndCBoYXZlIGVub3VnaCBjaGlsZHJlbiwganVzdCByZWFjaCB0aWxsIHRoZSBlbmQgb2Ygb3JpZ2luYWwgc2xpZGVzIGluc3RlYWQgb2Ygc2hpZnRpbmcgc2xpZGVzVG9TY3JvbGwgY2hpbGRyZW5cblxuICAgIGlmIChzbGlkZUNvdW50ICUgc2xpZGVzVG9TY3JvbGwgIT09IDAgJiYgc2xpZGVJbmRleCArIHNsaWRlc1RvU2Nyb2xsID4gc2xpZGVDb3VudCkge1xuICAgICAgc2xpZGVzVG9PZmZzZXQgPSAtKHNsaWRlSW5kZXggPiBzbGlkZUNvdW50ID8gc2xpZGVzVG9TaG93IC0gKHNsaWRlSW5kZXggLSBzbGlkZUNvdW50KSA6IHNsaWRlQ291bnQgJSBzbGlkZXNUb1Njcm9sbCk7XG4gICAgfSAvLyBzaGlmdCBjdXJyZW50IHNsaWRlIHRvIGNlbnRlciBvZiB0aGUgZnJhbWVcblxuXG4gICAgaWYgKGNlbnRlck1vZGUpIHtcbiAgICAgIHNsaWRlc1RvT2Zmc2V0ICs9IHBhcnNlSW50KHNsaWRlc1RvU2hvdyAvIDIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoc2xpZGVDb3VudCAlIHNsaWRlc1RvU2Nyb2xsICE9PSAwICYmIHNsaWRlSW5kZXggKyBzbGlkZXNUb1Njcm9sbCA+IHNsaWRlQ291bnQpIHtcbiAgICAgIHNsaWRlc1RvT2Zmc2V0ID0gc2xpZGVzVG9TaG93IC0gc2xpZGVDb3VudCAlIHNsaWRlc1RvU2Nyb2xsO1xuICAgIH1cblxuICAgIGlmIChjZW50ZXJNb2RlKSB7XG4gICAgICBzbGlkZXNUb09mZnNldCA9IHBhcnNlSW50KHNsaWRlc1RvU2hvdyAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIHNsaWRlT2Zmc2V0ID0gc2xpZGVzVG9PZmZzZXQgKiBzbGlkZVdpZHRoO1xuICB2ZXJ0aWNhbE9mZnNldCA9IHNsaWRlc1RvT2Zmc2V0ICogc2xpZGVIZWlnaHQ7XG5cbiAgaWYgKCF2ZXJ0aWNhbCkge1xuICAgIHRhcmdldExlZnQgPSBzbGlkZUluZGV4ICogc2xpZGVXaWR0aCAqIC0xICsgc2xpZGVPZmZzZXQ7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0TGVmdCA9IHNsaWRlSW5kZXggKiBzbGlkZUhlaWdodCAqIC0xICsgdmVydGljYWxPZmZzZXQ7XG4gIH1cblxuICBpZiAodmFyaWFibGVXaWR0aCA9PT0gdHJ1ZSkge1xuICAgIHZhciB0YXJnZXRTbGlkZUluZGV4O1xuXG4gICAgdmFyIHRyYWNrRWxlbSA9IF9yZWFjdERvbS5kZWZhdWx0LmZpbmRET01Ob2RlKHRyYWNrUmVmKTtcblxuICAgIHRhcmdldFNsaWRlSW5kZXggPSBzbGlkZUluZGV4ICsgZ2V0UHJlQ2xvbmVzKHNwZWMpO1xuICAgIHRhcmdldFNsaWRlID0gdHJhY2tFbGVtICYmIHRyYWNrRWxlbS5jaGlsZE5vZGVzW3RhcmdldFNsaWRlSW5kZXhdO1xuICAgIHRhcmdldExlZnQgPSB0YXJnZXRTbGlkZSA/IHRhcmdldFNsaWRlLm9mZnNldExlZnQgKiAtMSA6IDA7XG5cbiAgICBpZiAoY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgdGFyZ2V0U2xpZGVJbmRleCA9IGluZmluaXRlID8gc2xpZGVJbmRleCArIGdldFByZUNsb25lcyhzcGVjKSA6IHNsaWRlSW5kZXg7XG4gICAgICB0YXJnZXRTbGlkZSA9IHRyYWNrRWxlbSAmJiB0cmFja0VsZW0uY2hpbGRyZW5bdGFyZ2V0U2xpZGVJbmRleF07XG4gICAgICB0YXJnZXRMZWZ0ID0gMDtcblxuICAgICAgZm9yICh2YXIgc2xpZGUgPSAwOyBzbGlkZSA8IHRhcmdldFNsaWRlSW5kZXg7IHNsaWRlKyspIHtcbiAgICAgICAgdGFyZ2V0TGVmdCAtPSB0cmFja0VsZW0gJiYgdHJhY2tFbGVtLmNoaWxkcmVuW3NsaWRlXSAmJiB0cmFja0VsZW0uY2hpbGRyZW5bc2xpZGVdLm9mZnNldFdpZHRoO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRMZWZ0IC09IHBhcnNlSW50KHNwZWMuY2VudGVyUGFkZGluZyk7XG4gICAgICB0YXJnZXRMZWZ0ICs9IHRhcmdldFNsaWRlICYmIChsaXN0V2lkdGggLSB0YXJnZXRTbGlkZS5vZmZzZXRXaWR0aCkgLyAyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRMZWZ0O1xufTtcblxuZXhwb3J0cy5nZXRUcmFja0xlZnQgPSBnZXRUcmFja0xlZnQ7XG5cbnZhciBnZXRQcmVDbG9uZXMgPSBmdW5jdGlvbiBnZXRQcmVDbG9uZXMoc3BlYykge1xuICBpZiAoc3BlYy51bnNsaWNrIHx8ICFzcGVjLmluZmluaXRlKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoc3BlYy52YXJpYWJsZVdpZHRoKSB7XG4gICAgcmV0dXJuIHNwZWMuc2xpZGVDb3VudDtcbiAgfVxuXG4gIHJldHVybiBzcGVjLnNsaWRlc1RvU2hvdyArIChzcGVjLmNlbnRlck1vZGUgPyAxIDogMCk7XG59O1xuXG5leHBvcnRzLmdldFByZUNsb25lcyA9IGdldFByZUNsb25lcztcblxudmFyIGdldFBvc3RDbG9uZXMgPSBmdW5jdGlvbiBnZXRQb3N0Q2xvbmVzKHNwZWMpIHtcbiAgaWYgKHNwZWMudW5zbGljayB8fCAhc3BlYy5pbmZpbml0ZSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHNwZWMuc2xpZGVDb3VudDtcbn07XG5cbmV4cG9ydHMuZ2V0UG9zdENsb25lcyA9IGdldFBvc3RDbG9uZXM7XG5cbnZhciBnZXRUb3RhbFNsaWRlcyA9IGZ1bmN0aW9uIGdldFRvdGFsU2xpZGVzKHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMuc2xpZGVDb3VudCA9PT0gMSA/IDEgOiBnZXRQcmVDbG9uZXMoc3BlYykgKyBzcGVjLnNsaWRlQ291bnQgKyBnZXRQb3N0Q2xvbmVzKHNwZWMpO1xufTtcblxuZXhwb3J0cy5nZXRUb3RhbFNsaWRlcyA9IGdldFRvdGFsU2xpZGVzO1xuXG52YXIgc2libGluZ0RpcmVjdGlvbiA9IGZ1bmN0aW9uIHNpYmxpbmdEaXJlY3Rpb24oc3BlYykge1xuICBpZiAoc3BlYy50YXJnZXRTbGlkZSA+IHNwZWMuY3VycmVudFNsaWRlKSB7XG4gICAgaWYgKHNwZWMudGFyZ2V0U2xpZGUgPiBzcGVjLmN1cnJlbnRTbGlkZSArIHNsaWRlc09uUmlnaHQoc3BlYykpIHtcbiAgICAgIHJldHVybiBcImxlZnRcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJyaWdodFwiO1xuICB9IGVsc2Uge1xuICAgIGlmIChzcGVjLnRhcmdldFNsaWRlIDwgc3BlYy5jdXJyZW50U2xpZGUgLSBzbGlkZXNPbkxlZnQoc3BlYykpIHtcbiAgICAgIHJldHVybiBcInJpZ2h0XCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwibGVmdFwiO1xuICB9XG59O1xuXG5leHBvcnRzLnNpYmxpbmdEaXJlY3Rpb24gPSBzaWJsaW5nRGlyZWN0aW9uO1xuXG52YXIgc2xpZGVzT25SaWdodCA9IGZ1bmN0aW9uIHNsaWRlc09uUmlnaHQoX3JlZikge1xuICB2YXIgc2xpZGVzVG9TaG93ID0gX3JlZi5zbGlkZXNUb1Nob3csXG4gICAgICBjZW50ZXJNb2RlID0gX3JlZi5jZW50ZXJNb2RlLFxuICAgICAgcnRsID0gX3JlZi5ydGwsXG4gICAgICBjZW50ZXJQYWRkaW5nID0gX3JlZi5jZW50ZXJQYWRkaW5nO1xuXG4gIC8vIHJldHVybnMgbm8gb2Ygc2xpZGVzIG9uIHRoZSByaWdodCBvZiBhY3RpdmUgc2xpZGVcbiAgaWYgKGNlbnRlck1vZGUpIHtcbiAgICB2YXIgcmlnaHQgPSAoc2xpZGVzVG9TaG93IC0gMSkgLyAyICsgMTtcbiAgICBpZiAocGFyc2VJbnQoY2VudGVyUGFkZGluZykgPiAwKSByaWdodCArPSAxO1xuICAgIGlmIChydGwgJiYgc2xpZGVzVG9TaG93ICUgMiA9PT0gMCkgcmlnaHQgKz0gMTtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH1cblxuICBpZiAocnRsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gc2xpZGVzVG9TaG93IC0gMTtcbn07XG5cbmV4cG9ydHMuc2xpZGVzT25SaWdodCA9IHNsaWRlc09uUmlnaHQ7XG5cbnZhciBzbGlkZXNPbkxlZnQgPSBmdW5jdGlvbiBzbGlkZXNPbkxlZnQoX3JlZjIpIHtcbiAgdmFyIHNsaWRlc1RvU2hvdyA9IF9yZWYyLnNsaWRlc1RvU2hvdyxcbiAgICAgIGNlbnRlck1vZGUgPSBfcmVmMi5jZW50ZXJNb2RlLFxuICAgICAgcnRsID0gX3JlZjIucnRsLFxuICAgICAgY2VudGVyUGFkZGluZyA9IF9yZWYyLmNlbnRlclBhZGRpbmc7XG5cbiAgLy8gcmV0dXJucyBubyBvZiBzbGlkZXMgb24gdGhlIGxlZnQgb2YgYWN0aXZlIHNsaWRlXG4gIGlmIChjZW50ZXJNb2RlKSB7XG4gICAgdmFyIGxlZnQgPSAoc2xpZGVzVG9TaG93IC0gMSkgLyAyICsgMTtcbiAgICBpZiAocGFyc2VJbnQoY2VudGVyUGFkZGluZykgPiAwKSBsZWZ0ICs9IDE7XG4gICAgaWYgKCFydGwgJiYgc2xpZGVzVG9TaG93ICUgMiA9PT0gMCkgbGVmdCArPSAxO1xuICAgIHJldHVybiBsZWZ0O1xuICB9XG5cbiAgaWYgKHJ0bCkge1xuICAgIHJldHVybiBzbGlkZXNUb1Nob3cgLSAxO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59O1xuXG5leHBvcnRzLnNsaWRlc09uTGVmdCA9IHNsaWRlc09uTGVmdDtcblxudmFyIGNhblVzZURPTSA9IGZ1bmN0aW9uIGNhblVzZURPTSgpIHtcbiAgcmV0dXJuICEhKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbn07XG5cbmV4cG9ydHMuY2FuVXNlRE9NID0gY2FuVXNlRE9NOyIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpO1xuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gKiBgdW5kZWZpbmVkYCwgdGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGluIGl0cyBwbGFjZS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuNy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAqXG4gKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICogLy8gPT4gM1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICogLy8gPT4gM1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAqIC8vID0+ICdkZWZhdWx0J1xuICovXG5mdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKHZvaWQgMCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1VuZGVmaW5lZChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVW5kZWZpbmVkO1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlUGlja0J5ID0gcmVxdWlyZSgnLi9fYmFzZVBpY2tCeScpLFxuICAgIGdldEFsbEtleXNJbiA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXNJbicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBgb2JqZWN0YCBwcm9wZXJ0aWVzIGBwcmVkaWNhdGVgIHJldHVybnNcbiAqIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAqXG4gKiBfLnBpY2tCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHBpY2tCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgdmFyIHByb3BzID0gYXJyYXlNYXAoZ2V0QWxsS2V5c0luKG9iamVjdCksIGZ1bmN0aW9uKHByb3ApIHtcbiAgICByZXR1cm4gW3Byb3BdO1xuICB9KTtcbiAgcHJlZGljYXRlID0gYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSk7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcHJvcHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSwgcGF0aFswXSk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBpY2tCeTtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBzdGFja0NsZWFyID0gcmVxdWlyZSgnLi9fc3RhY2tDbGVhcicpLFxuICAgIHN0YWNrRGVsZXRlID0gcmVxdWlyZSgnLi9fc3RhY2tEZWxldGUnKSxcbiAgICBzdGFja0dldCA9IHJlcXVpcmUoJy4vX3N0YWNrR2V0JyksXG4gICAgc3RhY2tIYXMgPSByZXF1aXJlKCcuL19zdGFja0hhcycpLFxuICAgIHN0YWNrU2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU3RhY2soZW50cmllcykge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YWNrO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsInZhciBtYXBDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVDbGVhcicpLFxuICAgIG1hcENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVEZWxldGUnKSxcbiAgICBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksXG4gICAgbWFwQ2FjaGVIYXMgPSByZXF1aXJlKCcuL19tYXBDYWNoZUhhcycpLFxuICAgIG1hcENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iLCJ2YXIgYmFzZUlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9fYmFzZUlzQXJndW1lbnRzJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKSxcbiAgICBzdHViRmFsc2UgPSByZXF1aXJlKCcuL3N0dWJGYWxzZScpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNCdWZmZXI7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbm9kZVV0aWw7XG4iLCJ2YXIgYXJyYXlGaWx0ZXIgPSByZXF1aXJlKCcuL19hcnJheUZpbHRlcicpLFxuICAgIHN0dWJBcnJheSA9IHJlcXVpcmUoJy4vc3R1YkFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzO1xuIiwiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UHVzaDtcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5c0luO1xuIiwidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuIiwidmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlSXNEZWVwUHJvcCA9IC9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sXG4gICAgcmVJc1BsYWluUHJvcCA9IC9eXFx3KiQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAob2JqZWN0ICE9IG51bGwgJiYgdmFsdWUgaW4gT2JqZWN0KG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5O1xuIiwiLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcbiIsIi8qKlxuICogRXZFbWl0dGVyIHYxLjEuMFxuICogTGlsJyBldmVudCBlbWl0dGVyXG4gKiBNSVQgTGljZW5zZVxuICovXG5cbi8qIGpzaGludCB1bnVzZWQ6IHRydWUsIHVuZGVmOiB0cnVlLCBzdHJpY3Q6IHRydWUgKi9cblxuKCBmdW5jdGlvbiggZ2xvYmFsLCBmYWN0b3J5ICkge1xuICAvLyB1bml2ZXJzYWwgbW9kdWxlIGRlZmluaXRpb25cbiAgLyoganNoaW50IHN0cmljdDogZmFsc2UgKi8gLyogZ2xvYmFscyBkZWZpbmUsIG1vZHVsZSwgd2luZG93ICovXG4gIGlmICggdHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgKSB7XG4gICAgLy8gQU1EIC0gUmVxdWlyZUpTXG4gICAgZGVmaW5lKCBmYWN0b3J5ICk7XG4gIH0gZWxzZSBpZiAoIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMgKSB7XG4gICAgLy8gQ29tbW9uSlMgLSBCcm93c2VyaWZ5LCBXZWJwYWNrXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gQnJvd3NlciBnbG9iYWxzXG4gICAgZ2xvYmFsLkV2RW1pdHRlciA9IGZhY3RvcnkoKTtcbiAgfVxuXG59KCB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBFdkVtaXR0ZXIoKSB7fVxuXG52YXIgcHJvdG8gPSBFdkVtaXR0ZXIucHJvdG90eXBlO1xuXG5wcm90by5vbiA9IGZ1bmN0aW9uKCBldmVudE5hbWUsIGxpc3RlbmVyICkge1xuICBpZiAoICFldmVudE5hbWUgfHwgIWxpc3RlbmVyICkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBzZXQgZXZlbnRzIGhhc2hcbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cyB8fCB7fTtcbiAgLy8gc2V0IGxpc3RlbmVycyBhcnJheVxuICB2YXIgbGlzdGVuZXJzID0gZXZlbnRzWyBldmVudE5hbWUgXSA9IGV2ZW50c1sgZXZlbnROYW1lIF0gfHwgW107XG4gIC8vIG9ubHkgYWRkIG9uY2VcbiAgaWYgKCBsaXN0ZW5lcnMuaW5kZXhPZiggbGlzdGVuZXIgKSA9PSAtMSApIHtcbiAgICBsaXN0ZW5lcnMucHVzaCggbGlzdGVuZXIgKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxucHJvdG8ub25jZSA9IGZ1bmN0aW9uKCBldmVudE5hbWUsIGxpc3RlbmVyICkge1xuICBpZiAoICFldmVudE5hbWUgfHwgIWxpc3RlbmVyICkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBhZGQgZXZlbnRcbiAgdGhpcy5vbiggZXZlbnROYW1lLCBsaXN0ZW5lciApO1xuICAvLyBzZXQgb25jZSBmbGFnXG4gIC8vIHNldCBvbmNlRXZlbnRzIGhhc2hcbiAgdmFyIG9uY2VFdmVudHMgPSB0aGlzLl9vbmNlRXZlbnRzID0gdGhpcy5fb25jZUV2ZW50cyB8fCB7fTtcbiAgLy8gc2V0IG9uY2VMaXN0ZW5lcnMgb2JqZWN0XG4gIHZhciBvbmNlTGlzdGVuZXJzID0gb25jZUV2ZW50c1sgZXZlbnROYW1lIF0gPSBvbmNlRXZlbnRzWyBldmVudE5hbWUgXSB8fCB7fTtcbiAgLy8gc2V0IGZsYWdcbiAgb25jZUxpc3RlbmVyc1sgbGlzdGVuZXIgXSA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5wcm90by5vZmYgPSBmdW5jdGlvbiggZXZlbnROYW1lLCBsaXN0ZW5lciApIHtcbiAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50cyAmJiB0aGlzLl9ldmVudHNbIGV2ZW50TmFtZSBdO1xuICBpZiAoICFsaXN0ZW5lcnMgfHwgIWxpc3RlbmVycy5sZW5ndGggKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBpbmRleCA9IGxpc3RlbmVycy5pbmRleE9mKCBsaXN0ZW5lciApO1xuICBpZiAoIGluZGV4ICE9IC0xICkge1xuICAgIGxpc3RlbmVycy5zcGxpY2UoIGluZGV4LCAxICk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbnByb3RvLmVtaXRFdmVudCA9IGZ1bmN0aW9uKCBldmVudE5hbWUsIGFyZ3MgKSB7XG4gIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHMgJiYgdGhpcy5fZXZlbnRzWyBldmVudE5hbWUgXTtcbiAgaWYgKCAhbGlzdGVuZXJzIHx8ICFsaXN0ZW5lcnMubGVuZ3RoICkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBjb3B5IG92ZXIgdG8gYXZvaWQgaW50ZXJmZXJlbmNlIGlmIC5vZmYoKSBpbiBsaXN0ZW5lclxuICBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMuc2xpY2UoMCk7XG4gIGFyZ3MgPSBhcmdzIHx8IFtdO1xuICAvLyBvbmNlIHN0dWZmXG4gIHZhciBvbmNlTGlzdGVuZXJzID0gdGhpcy5fb25jZUV2ZW50cyAmJiB0aGlzLl9vbmNlRXZlbnRzWyBldmVudE5hbWUgXTtcblxuICBmb3IgKCB2YXIgaT0wOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrICkge1xuICAgIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyc1tpXVxuICAgIHZhciBpc09uY2UgPSBvbmNlTGlzdGVuZXJzICYmIG9uY2VMaXN0ZW5lcnNbIGxpc3RlbmVyIF07XG4gICAgaWYgKCBpc09uY2UgKSB7XG4gICAgICAvLyByZW1vdmUgbGlzdGVuZXJcbiAgICAgIC8vIHJlbW92ZSBiZWZvcmUgdHJpZ2dlciB0byBwcmV2ZW50IHJlY3Vyc2lvblxuICAgICAgdGhpcy5vZmYoIGV2ZW50TmFtZSwgbGlzdGVuZXIgKTtcbiAgICAgIC8vIHVuc2V0IG9uY2UgZmxhZ1xuICAgICAgZGVsZXRlIG9uY2VMaXN0ZW5lcnNbIGxpc3RlbmVyIF07XG4gICAgfVxuICAgIC8vIHRyaWdnZXIgbGlzdGVuZXJcbiAgICBsaXN0ZW5lci5hcHBseSggdGhpcywgYXJncyApO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5wcm90by5hbGxPZmYgPSBmdW5jdGlvbigpIHtcbiAgZGVsZXRlIHRoaXMuX2V2ZW50cztcbiAgZGVsZXRlIHRoaXMuX29uY2VFdmVudHM7XG59O1xuXG5yZXR1cm4gRXZFbWl0dGVyO1xuXG59KSk7XG4iLCIvKiFcbiAqIGdldFNpemUgdjIuMC4zXG4gKiBtZWFzdXJlIHNpemUgb2YgZWxlbWVudHNcbiAqIE1JVCBsaWNlbnNlXG4gKi9cblxuLyoganNoaW50IGJyb3dzZXI6IHRydWUsIHN0cmljdDogdHJ1ZSwgdW5kZWY6IHRydWUsIHVudXNlZDogdHJ1ZSAqL1xuLyogZ2xvYmFscyBjb25zb2xlOiBmYWxzZSAqL1xuXG4oIGZ1bmN0aW9uKCB3aW5kb3csIGZhY3RvcnkgKSB7XG4gIC8qIGpzaGludCBzdHJpY3Q6IGZhbHNlICovIC8qIGdsb2JhbHMgZGVmaW5lLCBtb2R1bGUgKi9cbiAgaWYgKCB0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCApIHtcbiAgICAvLyBBTURcbiAgICBkZWZpbmUoIGZhY3RvcnkgKTtcbiAgfSBlbHNlIGlmICggdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cyApIHtcbiAgICAvLyBDb21tb25KU1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuICB9IGVsc2Uge1xuICAgIC8vIGJyb3dzZXIgZ2xvYmFsXG4gICAgd2luZG93LmdldFNpemUgPSBmYWN0b3J5KCk7XG4gIH1cblxufSkoIHdpbmRvdywgZnVuY3Rpb24gZmFjdG9yeSgpIHtcbid1c2Ugc3RyaWN0JztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG4vLyBnZXQgYSBudW1iZXIgZnJvbSBhIHN0cmluZywgbm90IGEgcGVyY2VudGFnZVxuZnVuY3Rpb24gZ2V0U3R5bGVTaXplKCB2YWx1ZSApIHtcbiAgdmFyIG51bSA9IHBhcnNlRmxvYXQoIHZhbHVlICk7XG4gIC8vIG5vdCBhIHBlcmNlbnQgbGlrZSAnMTAwJScsIGFuZCBhIG51bWJlclxuICB2YXIgaXNWYWxpZCA9IHZhbHVlLmluZGV4T2YoJyUnKSA9PSAtMSAmJiAhaXNOYU4oIG51bSApO1xuICByZXR1cm4gaXNWYWxpZCAmJiBudW07XG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG52YXIgbG9nRXJyb3IgPSB0eXBlb2YgY29uc29sZSA9PSAndW5kZWZpbmVkJyA/IG5vb3AgOlxuICBmdW5jdGlvbiggbWVzc2FnZSApIHtcbiAgICBjb25zb2xlLmVycm9yKCBtZXNzYWdlICk7XG4gIH07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG1lYXN1cmVtZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG52YXIgbWVhc3VyZW1lbnRzID0gW1xuICAncGFkZGluZ0xlZnQnLFxuICAncGFkZGluZ1JpZ2h0JyxcbiAgJ3BhZGRpbmdUb3AnLFxuICAncGFkZGluZ0JvdHRvbScsXG4gICdtYXJnaW5MZWZ0JyxcbiAgJ21hcmdpblJpZ2h0JyxcbiAgJ21hcmdpblRvcCcsXG4gICdtYXJnaW5Cb3R0b20nLFxuICAnYm9yZGVyTGVmdFdpZHRoJyxcbiAgJ2JvcmRlclJpZ2h0V2lkdGgnLFxuICAnYm9yZGVyVG9wV2lkdGgnLFxuICAnYm9yZGVyQm90dG9tV2lkdGgnXG5dO1xuXG52YXIgbWVhc3VyZW1lbnRzTGVuZ3RoID0gbWVhc3VyZW1lbnRzLmxlbmd0aDtcblxuZnVuY3Rpb24gZ2V0WmVyb1NpemUoKSB7XG4gIHZhciBzaXplID0ge1xuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMCxcbiAgICBpbm5lcldpZHRoOiAwLFxuICAgIGlubmVySGVpZ2h0OiAwLFxuICAgIG91dGVyV2lkdGg6IDAsXG4gICAgb3V0ZXJIZWlnaHQ6IDBcbiAgfTtcbiAgZm9yICggdmFyIGk9MDsgaSA8IG1lYXN1cmVtZW50c0xlbmd0aDsgaSsrICkge1xuICAgIHZhciBtZWFzdXJlbWVudCA9IG1lYXN1cmVtZW50c1tpXTtcbiAgICBzaXplWyBtZWFzdXJlbWVudCBdID0gMDtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZ2V0U3R5bGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuLyoqXG4gKiBnZXRTdHlsZSwgZ2V0IHN0eWxlIG9mIGVsZW1lbnQsIGNoZWNrIGZvciBGaXJlZm94IGJ1Z1xuICogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ4Mzk3XG4gKi9cbmZ1bmN0aW9uIGdldFN0eWxlKCBlbGVtICkge1xuICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKCBlbGVtICk7XG4gIGlmICggIXN0eWxlICkge1xuICAgIGxvZ0Vycm9yKCAnU3R5bGUgcmV0dXJuZWQgJyArIHN0eWxlICtcbiAgICAgICcuIEFyZSB5b3UgcnVubmluZyB0aGlzIGNvZGUgaW4gYSBoaWRkZW4gaWZyYW1lIG9uIEZpcmVmb3g/ICcgK1xuICAgICAgJ1NlZSBodHRwczovL2JpdC5seS9nZXRzaXplYnVnMScgKTtcbiAgfVxuICByZXR1cm4gc3R5bGU7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNldHVwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbnZhciBpc1NldHVwID0gZmFsc2U7XG5cbnZhciBpc0JveFNpemVPdXRlcjtcblxuLyoqXG4gKiBzZXR1cFxuICogY2hlY2sgaXNCb3hTaXplck91dGVyXG4gKiBkbyBvbiBmaXJzdCBnZXRTaXplKCkgcmF0aGVyIHRoYW4gb24gcGFnZSBsb2FkIGZvciBGaXJlZm94IGJ1Z1xuICovXG5mdW5jdGlvbiBzZXR1cCgpIHtcbiAgLy8gc2V0dXAgb25jZVxuICBpZiAoIGlzU2V0dXAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlzU2V0dXAgPSB0cnVlO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGJveCBzaXppbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuICAvKipcbiAgICogQ2hyb21lICYgU2FmYXJpIG1lYXN1cmUgdGhlIG91dGVyLXdpZHRoIG9uIHN0eWxlLndpZHRoIG9uIGJvcmRlci1ib3ggZWxlbXNcbiAgICogSUUxMSAmIEZpcmVmb3g8MjkgbWVhc3VyZXMgdGhlIGlubmVyLXdpZHRoXG4gICAqL1xuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5zdHlsZS53aWR0aCA9ICcyMDBweCc7XG4gIGRpdi5zdHlsZS5wYWRkaW5nID0gJzFweCAycHggM3B4IDRweCc7XG4gIGRpdi5zdHlsZS5ib3JkZXJTdHlsZSA9ICdzb2xpZCc7XG4gIGRpdi5zdHlsZS5ib3JkZXJXaWR0aCA9ICcxcHggMnB4IDNweCA0cHgnO1xuICBkaXYuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnO1xuXG4gIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoIGRpdiApO1xuICB2YXIgc3R5bGUgPSBnZXRTdHlsZSggZGl2ICk7XG4gIC8vIHJvdW5kIHZhbHVlIGZvciBicm93c2VyIHpvb20uIGRlc2FuZHJvL21hc29ucnkjOTI4XG4gIGlzQm94U2l6ZU91dGVyID0gTWF0aC5yb3VuZCggZ2V0U3R5bGVTaXplKCBzdHlsZS53aWR0aCApICkgPT0gMjAwO1xuICBnZXRTaXplLmlzQm94U2l6ZU91dGVyID0gaXNCb3hTaXplT3V0ZXI7XG5cbiAgYm9keS5yZW1vdmVDaGlsZCggZGl2ICk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGdldFNpemUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuZnVuY3Rpb24gZ2V0U2l6ZSggZWxlbSApIHtcbiAgc2V0dXAoKTtcblxuICAvLyB1c2UgcXVlcnlTZWxldG9yIGlmIGVsZW0gaXMgc3RyaW5nXG4gIGlmICggdHlwZW9mIGVsZW0gPT0gJ3N0cmluZycgKSB7XG4gICAgZWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIGVsZW0gKTtcbiAgfVxuXG4gIC8vIGRvIG5vdCBwcm9jZWVkIG9uIG5vbi1vYmplY3RzXG4gIGlmICggIWVsZW0gfHwgdHlwZW9mIGVsZW0gIT0gJ29iamVjdCcgfHwgIWVsZW0ubm9kZVR5cGUgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHN0eWxlID0gZ2V0U3R5bGUoIGVsZW0gKTtcblxuICAvLyBpZiBoaWRkZW4sIGV2ZXJ5dGhpbmcgaXMgMFxuICBpZiAoIHN0eWxlLmRpc3BsYXkgPT0gJ25vbmUnICkge1xuICAgIHJldHVybiBnZXRaZXJvU2l6ZSgpO1xuICB9XG5cbiAgdmFyIHNpemUgPSB7fTtcbiAgc2l6ZS53aWR0aCA9IGVsZW0ub2Zmc2V0V2lkdGg7XG4gIHNpemUuaGVpZ2h0ID0gZWxlbS5vZmZzZXRIZWlnaHQ7XG5cbiAgdmFyIGlzQm9yZGVyQm94ID0gc2l6ZS5pc0JvcmRlckJveCA9IHN0eWxlLmJveFNpemluZyA9PSAnYm9yZGVyLWJveCc7XG5cbiAgLy8gZ2V0IGFsbCBtZWFzdXJlbWVudHNcbiAgZm9yICggdmFyIGk9MDsgaSA8IG1lYXN1cmVtZW50c0xlbmd0aDsgaSsrICkge1xuICAgIHZhciBtZWFzdXJlbWVudCA9IG1lYXN1cmVtZW50c1tpXTtcbiAgICB2YXIgdmFsdWUgPSBzdHlsZVsgbWVhc3VyZW1lbnQgXTtcbiAgICB2YXIgbnVtID0gcGFyc2VGbG9hdCggdmFsdWUgKTtcbiAgICAvLyBhbnkgJ2F1dG8nLCAnbWVkaXVtJyB2YWx1ZSB3aWxsIGJlIDBcbiAgICBzaXplWyBtZWFzdXJlbWVudCBdID0gIWlzTmFOKCBudW0gKSA/IG51bSA6IDA7XG4gIH1cblxuICB2YXIgcGFkZGluZ1dpZHRoID0gc2l6ZS5wYWRkaW5nTGVmdCArIHNpemUucGFkZGluZ1JpZ2h0O1xuICB2YXIgcGFkZGluZ0hlaWdodCA9IHNpemUucGFkZGluZ1RvcCArIHNpemUucGFkZGluZ0JvdHRvbTtcbiAgdmFyIG1hcmdpbldpZHRoID0gc2l6ZS5tYXJnaW5MZWZ0ICsgc2l6ZS5tYXJnaW5SaWdodDtcbiAgdmFyIG1hcmdpbkhlaWdodCA9IHNpemUubWFyZ2luVG9wICsgc2l6ZS5tYXJnaW5Cb3R0b207XG4gIHZhciBib3JkZXJXaWR0aCA9IHNpemUuYm9yZGVyTGVmdFdpZHRoICsgc2l6ZS5ib3JkZXJSaWdodFdpZHRoO1xuICB2YXIgYm9yZGVySGVpZ2h0ID0gc2l6ZS5ib3JkZXJUb3BXaWR0aCArIHNpemUuYm9yZGVyQm90dG9tV2lkdGg7XG5cbiAgdmFyIGlzQm9yZGVyQm94U2l6ZU91dGVyID0gaXNCb3JkZXJCb3ggJiYgaXNCb3hTaXplT3V0ZXI7XG5cbiAgLy8gb3ZlcndyaXRlIHdpZHRoIGFuZCBoZWlnaHQgaWYgd2UgY2FuIGdldCBpdCBmcm9tIHN0eWxlXG4gIHZhciBzdHlsZVdpZHRoID0gZ2V0U3R5bGVTaXplKCBzdHlsZS53aWR0aCApO1xuICBpZiAoIHN0eWxlV2lkdGggIT09IGZhbHNlICkge1xuICAgIHNpemUud2lkdGggPSBzdHlsZVdpZHRoICtcbiAgICAgIC8vIGFkZCBwYWRkaW5nIGFuZCBib3JkZXIgdW5sZXNzIGl0J3MgYWxyZWFkeSBpbmNsdWRpbmcgaXRcbiAgICAgICggaXNCb3JkZXJCb3hTaXplT3V0ZXIgPyAwIDogcGFkZGluZ1dpZHRoICsgYm9yZGVyV2lkdGggKTtcbiAgfVxuXG4gIHZhciBzdHlsZUhlaWdodCA9IGdldFN0eWxlU2l6ZSggc3R5bGUuaGVpZ2h0ICk7XG4gIGlmICggc3R5bGVIZWlnaHQgIT09IGZhbHNlICkge1xuICAgIHNpemUuaGVpZ2h0ID0gc3R5bGVIZWlnaHQgK1xuICAgICAgLy8gYWRkIHBhZGRpbmcgYW5kIGJvcmRlciB1bmxlc3MgaXQncyBhbHJlYWR5IGluY2x1ZGluZyBpdFxuICAgICAgKCBpc0JvcmRlckJveFNpemVPdXRlciA/IDAgOiBwYWRkaW5nSGVpZ2h0ICsgYm9yZGVySGVpZ2h0ICk7XG4gIH1cblxuICBzaXplLmlubmVyV2lkdGggPSBzaXplLndpZHRoIC0gKCBwYWRkaW5nV2lkdGggKyBib3JkZXJXaWR0aCApO1xuICBzaXplLmlubmVySGVpZ2h0ID0gc2l6ZS5oZWlnaHQgLSAoIHBhZGRpbmdIZWlnaHQgKyBib3JkZXJIZWlnaHQgKTtcblxuICBzaXplLm91dGVyV2lkdGggPSBzaXplLndpZHRoICsgbWFyZ2luV2lkdGg7XG4gIHNpemUub3V0ZXJIZWlnaHQgPSBzaXplLmhlaWdodCArIG1hcmdpbkhlaWdodDtcblxuICByZXR1cm4gc2l6ZTtcbn1cblxucmV0dXJuIGdldFNpemU7XG5cbn0pO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnblZhbHVlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiIsInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRpbWVzO1xuIiwidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyQXJnO1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXMpO1xuICogLy8gPT4gW1tdLCBbXV1cbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXNbMF0gPT09IGFycmF5c1sxXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBzdHViQXJyYXkoKSB7XG4gIHJldHVybiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViQXJyYXk7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5cztcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVpbnQ4QXJyYXk7XG4iLCJ2YXIgZmxhdHRlbiA9IHJlcXVpcmUoJy4vZmxhdHRlbicpLFxuICAgIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSxcbiAgICBzZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX3NldFRvU3RyaW5nJyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggZmxhdHRlbnMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gZmxhdFJlc3QoZnVuYykge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0UmVzdDtcbiIsInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBpbmRleCA9IC0xO1xuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlclJlc3Q7XG4iLCJ2YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksXG4gICAgc2hvcnRPdXQgPSByZXF1aXJlKCcuL19zaG9ydE91dCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwidmFyIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgY3JlYXRlQmFzZUVhY2ggPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRWFjaCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICovXG52YXIgYmFzZUVhY2ggPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRWFjaDtcbiIsInZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbERlZXAnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDtcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlTb21lID0gcmVxdWlyZSgnLi9fYXJyYXlTb21lJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICBpZiAoc3RhY2tlZCAmJiBzdGFjay5nZXQob3RoZXIpKSB7XG4gICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gIH1cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSB0cnVlLFxuICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gIHN0YWNrLnNldChvdGhlciwgYXJyYXkpO1xuXG4gIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICB2YXIgYXJyVmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgIH1cbiAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBpZiAoc2Vlbikge1xuICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAoYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgIGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10oYXJyYXkpO1xuICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQXJyYXlzO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlICYmICFpc09iamVjdCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpY3RDb21wYXJhYmxlO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYG1hdGNoZXNQcm9wZXJ0eWAgZm9yIHNvdXJjZSB2YWx1ZXMgc3VpdGFibGVcbiAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShrZXksIHNyY1ZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgKHNyY1ZhbHVlICE9PSB1bmRlZmluZWQgfHwgKGtleSBpbiBPYmplY3Qob2JqZWN0KSkpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlO1xuIiwidmFyIGJhc2VIYXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VIYXNJbicpLFxuICAgIGhhc1BhdGggPSByZXF1aXJlKCcuL19oYXNQYXRoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYS5iJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsIFsnYScsICdiJ10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaGFzSW4ob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNJbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY2hlY2tEQ0UoKSB7XG4gIC8qIGdsb2JhbCBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gKi9cbiAgaWYgKFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSAhPT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGlzIGJyYW5jaCBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWRcbiAgICAvLyBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIG9ubHkgaW4gZGV2ZWxvcG1lbnQuXG4gICAgLy8gVGhlcmVmb3JlIGlmIHRoZSBicmFuY2ggaXMgc3RpbGwgaGVyZSwgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdhc24ndFxuICAgIC8vIHByb3Blcmx5IGFwcGxpZWQuXG4gICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBtZXNzYWdlLiBSZWFjdCBEZXZUb29scyByZWxpZXMgb24gaXQuIEFsc28gbWFrZSBzdXJlXG4gICAgLy8gdGhpcyBtZXNzYWdlIGRvZXNuJ3Qgb2NjdXIgZWxzZXdoZXJlIGluIHRoaXMgZnVuY3Rpb24sIG9yIGl0IHdpbGwgY2F1c2VcbiAgICAvLyBhIGZhbHNlIHBvc2l0aXZlLlxuICAgIHRocm93IG5ldyBFcnJvcignXl9eJyk7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY29kZSBhYm92ZSBoYXMgYmVlbiBkZWFkIGNvZGUgZWxpbWluYXRlZCAoRENFJ2QpLlxuICAgIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShjaGVja0RDRSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIERldlRvb2xzIHNob3VsZG4ndCBjcmFzaCBSZWFjdCwgbm8gbWF0dGVyIHdoYXQuXG4gICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlcG9ydCBpbiBjYXNlIHdlIGJyZWFrIHRoaXMgY29kZS5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gRENFIGNoZWNrIHNob3VsZCBoYXBwZW4gYmVmb3JlIFJlYWN0RE9NIGJ1bmRsZSBleGVjdXRlcyBzbyB0aGF0XG4gIC8vIERldlRvb2xzIGNhbiByZXBvcnQgYmFkIG1pbmlmaWNhdGlvbiBkdXJpbmcgaW5qZWN0aW9uLlxuICBjaGVja0RDRSgpO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciBhIGNvbGxlY3Rpb25cbiAqXG4gKiBAcGFyYW0gY29sbGVjdGlvblxuICogQHBhcmFtIGZuXG4gKi9cbmZ1bmN0aW9uIGVhY2goY29sbGVjdGlvbiwgZm4pIHtcbiAgICB2YXIgaSAgICAgID0gMCxcbiAgICAgICAgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGgsXG4gICAgICAgIGNvbnQ7XG5cbiAgICBmb3IoaTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnQgPSBmbihjb2xsZWN0aW9uW2ldLCBpKTtcbiAgICAgICAgaWYoY29udCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrOyAvL2FsbG93IGVhcmx5IGV4aXRcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGRldGVybWluaW5nIHdoZXRoZXIgdGFyZ2V0IG9iamVjdCBpcyBhbiBhcnJheVxuICpcbiAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB1bmRlciB0ZXN0XG4gKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIGlmIGFycmF5LCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheSh0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh0YXJnZXQpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciB0YXJnZXQgb2JqZWN0IGlzIGEgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IHRoZSBvYmplY3QgdW5kZXIgdGVzdFxuICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBmdW5jdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbic7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGlzRnVuY3Rpb24gOiBpc0Z1bmN0aW9uLFxuICAgIGlzQXJyYXkgOiBpc0FycmF5LFxuICAgIGVhY2ggOiBlYWNoXG59O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0JyksXG4gICAgYmFzZVNldCA9IHJlcXVpcmUoJy4vX2Jhc2VTZXQnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICB2YWx1ZSA9IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcblxuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrQnk7XG4iLCJ2YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9JbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9OdW1iZXI7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBhZiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FmJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyaWVfRmVicnVhcmllX01hYXJ0X0FwcmlsX01laV9KdW5pZV9KdWxpZV9BdWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NcnRfQXByX01laV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1NvbmRhZ19NYWFuZGFnX0RpbnNkYWdfV29lbnNkYWdfRG9uZGVyZGFnX1ZyeWRhZ19TYXRlcmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTb25fTWFhX0Rpbl9Xb2VfRG9uX1ZyeV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NvX01hX0RpX1dvX0RvX1ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvdm18bm0vaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9ebm0kL2kudGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3ZtJyA6ICdWTSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ25tJyA6ICdOTSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tWYW5kYWcgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW03DtHJlIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbR2lzdGVyIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFhc10gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvb3IgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBnZWxlZGUnLFxuICAgICAgICAgICAgcyA6ICdcXCduIHBhYXIgc2Vrb25kZXMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vrb25kZXMnLFxuICAgICAgICAgICAgbSA6ICdcXCduIG1pbnV1dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGUnLFxuICAgICAgICAgICAgaCA6ICdcXCduIHV1cicsXG4gICAgICAgICAgICBoaCA6ICclZCB1cmUnLFxuICAgICAgICAgICAgZCA6ICdcXCduIGRhZycsXG4gICAgICAgICAgICBkZCA6ICclZCBkYWUnLFxuICAgICAgICAgICAgTSA6ICdcXCduIG1hYW5kJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1hYW5kZScsXG4gICAgICAgICAgICB5IDogJ1xcJ24gamFhcicsXG4gICAgICAgICAgICB5eSA6ICclZCBqYWFyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCkgPyAnc3RlJyA6ICdkZScpOyAvLyBUaGFua3MgdG8gSm9yaXMgUsO2bGluZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qanVwaXRlclxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTWFhbmRhZyBpcyBkaWUgZWVyc3RlIGRhZyB2YW4gZGllIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBEaWUgd2VlayB3YXQgZGllIDRkZSBKYW51YXJpZSBiZXZhdCBpcyBkaWUgZWVyc3RlIHdlZWsgdmFuIGRpZSBqYWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ9mhJyxcbiAgICAgICAgJzInOiAn2aInLFxuICAgICAgICAnMyc6ICfZoycsXG4gICAgICAgICc0JzogJ9mkJyxcbiAgICAgICAgJzUnOiAn2aUnLFxuICAgICAgICAnNic6ICfZpicsXG4gICAgICAgICc3JzogJ9mnJyxcbiAgICAgICAgJzgnOiAn2agnLFxuICAgICAgICAnOSc6ICfZqScsXG4gICAgICAgICcwJzogJ9mgJ1xuICAgIH0sIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAn2aInOiAnMicsXG4gICAgICAgICfZoyc6ICczJyxcbiAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAn2aUnOiAnNScsXG4gICAgICAgICfZpic6ICc2JyxcbiAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAn2agnOiAnOCcsXG4gICAgICAgICfZqSc6ICc5JyxcbiAgICAgICAgJ9mgJzogJzAnXG4gICAgfSwgcGx1cmFsRm9ybSA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBuID09PSAwID8gMCA6IG4gPT09IDEgPyAxIDogbiA9PT0gMiA/IDIgOiBuICUgMTAwID49IDMgJiYgbiAlIDEwMCA8PSAxMCA/IDMgOiBuICUgMTAwID49IDExID8gNCA6IDU7XG4gICAgfSwgcGx1cmFscyA9IHtcbiAgICAgICAgcyA6IFsn2KPZgtmEINmF2YYg2KvYp9mG2YrYqScsICfYq9in2YbZitipINmI2KfYrdiv2KknLCBbJ9ir2KfZhtmK2KrYp9mGJywgJ9ir2KfZhtmK2KrZitmGJ10sICclZCDYq9mI2KfZhicsICclZCDYq9in2YbZitipJywgJyVkINir2KfZhtmK2KknXSxcbiAgICAgICAgbSA6IFsn2KPZgtmEINmF2YYg2K/ZgtmK2YLYqScsICfYr9mC2YrZgtipINmI2KfYrdiv2KknLCBbJ9iv2YLZitmC2KrYp9mGJywgJ9iv2YLZitmC2KrZitmGJ10sICclZCDYr9mC2KfYptmCJywgJyVkINiv2YLZitmC2KknLCAnJWQg2K/ZgtmK2YLYqSddLFxuICAgICAgICBoIDogWyfYo9mC2YQg2YXZhiDYs9in2LnYqScsICfYs9in2LnYqSDZiNin2K3Yr9ipJywgWyfYs9in2LnYqtin2YYnLCAn2LPYp9i52KrZitmGJ10sICclZCDYs9in2LnYp9iqJywgJyVkINiz2KfYudipJywgJyVkINiz2KfYudipJ10sXG4gICAgICAgIGQgOiBbJ9ij2YLZhCDZhdmGINmK2YjZhScsICfZitmI2YUg2YjYp9it2K8nLCBbJ9mK2YjZhdin2YYnLCAn2YrZiNmF2YrZhiddLCAnJWQg2KPZitin2YUnLCAnJWQg2YrZiNmF2YvYpycsICclZCDZitmI2YUnXSxcbiAgICAgICAgTSA6IFsn2KPZgtmEINmF2YYg2LTZh9ixJywgJ9i02YfYsSDZiNin2K3YrycsIFsn2LTZh9ix2KfZhicsICfYtNmH2LHZitmGJ10sICclZCDYo9i02YfYsScsICclZCDYtNmH2LHYpycsICclZCDYtNmH2LEnXSxcbiAgICAgICAgeSA6IFsn2KPZgtmEINmF2YYg2LnYp9mFJywgJ9i52KfZhSDZiNin2K3YrycsIFsn2LnYp9mF2KfZhicsICfYudin2YXZitmGJ10sICclZCDYo9i52YjYp9mFJywgJyVkINi52KfZhdmL2KcnLCAnJWQg2LnYp9mFJ11cbiAgICB9LCBwbHVyYWxpemUgPSBmdW5jdGlvbiAodSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgdmFyIGYgPSBwbHVyYWxGb3JtKG51bWJlciksXG4gICAgICAgICAgICAgICAgc3RyID0gcGx1cmFsc1t1XVtwbHVyYWxGb3JtKG51bWJlcildO1xuICAgICAgICAgICAgaWYgKGYgPT09IDIpIHtcbiAgICAgICAgICAgICAgICBzdHIgPSBzdHJbd2l0aG91dFN1ZmZpeCA/IDAgOiAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICAgICAgfTtcbiAgICB9LCBtb250aHMgPSBbXG4gICAgICAgICfZitmG2KfZitixJyxcbiAgICAgICAgJ9mB2KjYsdin2YrYsScsXG4gICAgICAgICfZhdin2LHYsycsXG4gICAgICAgICfYo9io2LHZitmEJyxcbiAgICAgICAgJ9mF2KfZitmIJyxcbiAgICAgICAgJ9mK2YjZhtmK2YgnLFxuICAgICAgICAn2YrZiNmE2YrZiCcsXG4gICAgICAgICfYo9i62LPYt9izJyxcbiAgICAgICAgJ9iz2KjYqtmF2KjYsScsXG4gICAgICAgICfYo9mD2KrZiNio2LEnLFxuICAgICAgICAn2YbZiNmB2YXYqNixJyxcbiAgICAgICAgJ9iv2YrYs9mF2KjYsSdcbiAgICBdO1xuXG4gICAgdmFyIGFyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXInLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnRC9cXHUyMDBGTS9cXHUyMDBGWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LV82YUvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn2KjYudivICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIHNzIDogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBtIDogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBtbSA6IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgaCA6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgaGggOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGQgOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIGRkIDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBNIDogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICBNTSA6IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgeSA6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICAgICAgeXkgOiBwbHVyYWxpemUoJ3knKVxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBhckR6ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItZHonLCB7XG4gICAgICAgIG1vbnRocyA6ICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9is2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9in2K3Yr1/Yp9ir2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfYo9itX9il2Ktf2KvZhNinX9ij2LFf2K7ZhV/YrNmFX9iz2KgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzIDogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzIDogJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgbSA6ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tIDogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaCA6ICfYs9in2LnYqScsXG4gICAgICAgICAgICBoaCA6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQgOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkIDogJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgIE0gOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NIDogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHkgOiAn2LPZhtipJyxcbiAgICAgICAgICAgIHl5IDogJyVkINiz2YbZiNin2KonXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyRHo7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBhckt3ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXIta3cnLCB7XG4gICAgICAgIG1vbnRocyA6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfYp9mE2KPYrdivX9in2YTYpdiq2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn2KfYrdivX9in2KrZhtmK2YZf2KvZhNin2KvYp9ihX9in2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgcyA6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzcyA6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG0gOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbSA6ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGggOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGggOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkIDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZCA6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNIDogJ9i02YfYsScsXG4gICAgICAgICAgICBNTSA6ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5IDogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9mG2YjYp9iqJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyS3c7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJzEnLFxuICAgICAgICAnMic6ICcyJyxcbiAgICAgICAgJzMnOiAnMycsXG4gICAgICAgICc0JzogJzQnLFxuICAgICAgICAnNSc6ICc1JyxcbiAgICAgICAgJzYnOiAnNicsXG4gICAgICAgICc3JzogJzcnLFxuICAgICAgICAnOCc6ICc4JyxcbiAgICAgICAgJzknOiAnOScsXG4gICAgICAgICcwJzogJzAnXG4gICAgfSwgcGx1cmFsRm9ybSA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBuID09PSAwID8gMCA6IG4gPT09IDEgPyAxIDogbiA9PT0gMiA/IDIgOiBuICUgMTAwID49IDMgJiYgbiAlIDEwMCA8PSAxMCA/IDMgOiBuICUgMTAwID49IDExID8gNCA6IDU7XG4gICAgfSwgcGx1cmFscyA9IHtcbiAgICAgICAgcyA6IFsn2KPZgtmEINmF2YYg2KvYp9mG2YrYqScsICfYq9in2YbZitipINmI2KfYrdiv2KknLCBbJ9ir2KfZhtmK2KrYp9mGJywgJ9ir2KfZhtmK2KrZitmGJ10sICclZCDYq9mI2KfZhicsICclZCDYq9in2YbZitipJywgJyVkINir2KfZhtmK2KknXSxcbiAgICAgICAgbSA6IFsn2KPZgtmEINmF2YYg2K/ZgtmK2YLYqScsICfYr9mC2YrZgtipINmI2KfYrdiv2KknLCBbJ9iv2YLZitmC2KrYp9mGJywgJ9iv2YLZitmC2KrZitmGJ10sICclZCDYr9mC2KfYptmCJywgJyVkINiv2YLZitmC2KknLCAnJWQg2K/ZgtmK2YLYqSddLFxuICAgICAgICBoIDogWyfYo9mC2YQg2YXZhiDYs9in2LnYqScsICfYs9in2LnYqSDZiNin2K3Yr9ipJywgWyfYs9in2LnYqtin2YYnLCAn2LPYp9i52KrZitmGJ10sICclZCDYs9in2LnYp9iqJywgJyVkINiz2KfYudipJywgJyVkINiz2KfYudipJ10sXG4gICAgICAgIGQgOiBbJ9ij2YLZhCDZhdmGINmK2YjZhScsICfZitmI2YUg2YjYp9it2K8nLCBbJ9mK2YjZhdin2YYnLCAn2YrZiNmF2YrZhiddLCAnJWQg2KPZitin2YUnLCAnJWQg2YrZiNmF2YvYpycsICclZCDZitmI2YUnXSxcbiAgICAgICAgTSA6IFsn2KPZgtmEINmF2YYg2LTZh9ixJywgJ9i02YfYsSDZiNin2K3YrycsIFsn2LTZh9ix2KfZhicsICfYtNmH2LHZitmGJ10sICclZCDYo9i02YfYsScsICclZCDYtNmH2LHYpycsICclZCDYtNmH2LEnXSxcbiAgICAgICAgeSA6IFsn2KPZgtmEINmF2YYg2LnYp9mFJywgJ9i52KfZhSDZiNin2K3YrycsIFsn2LnYp9mF2KfZhicsICfYudin2YXZitmGJ10sICclZCDYo9i52YjYp9mFJywgJyVkINi52KfZhdmL2KcnLCAnJWQg2LnYp9mFJ11cbiAgICB9LCBwbHVyYWxpemUgPSBmdW5jdGlvbiAodSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgdmFyIGYgPSBwbHVyYWxGb3JtKG51bWJlciksXG4gICAgICAgICAgICAgICAgc3RyID0gcGx1cmFsc1t1XVtwbHVyYWxGb3JtKG51bWJlcildO1xuICAgICAgICAgICAgaWYgKGYgPT09IDIpIHtcbiAgICAgICAgICAgICAgICBzdHIgPSBzdHJbd2l0aG91dFN1ZmZpeCA/IDAgOiAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICAgICAgfTtcbiAgICB9LCBtb250aHMgPSBbXG4gICAgICAgICfZitmG2KfZitixJyxcbiAgICAgICAgJ9mB2KjYsdin2YrYsScsXG4gICAgICAgICfZhdin2LHYsycsXG4gICAgICAgICfYo9io2LHZitmEJyxcbiAgICAgICAgJ9mF2KfZitmIJyxcbiAgICAgICAgJ9mK2YjZhtmK2YgnLFxuICAgICAgICAn2YrZiNmE2YrZiCcsXG4gICAgICAgICfYo9i62LPYt9izJyxcbiAgICAgICAgJ9iz2KjYqtmF2KjYsScsXG4gICAgICAgICfYo9mD2KrZiNio2LEnLFxuICAgICAgICAn2YbZiNmB2YXYqNixJyxcbiAgICAgICAgJ9iv2YrYs9mF2KjYsSdcbiAgICBdO1xuXG4gICAgdmFyIGFyTHkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1seScsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdEL1xcdTIwMEZNL1xcdTIwMEZZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfYqNi52K8gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgcyA6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgc3MgOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIG0gOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIG1tIDogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBoIDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBoaCA6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgZCA6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgZGQgOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIE0gOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIE1NIDogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICB5IDogcGx1cmFsaXplKCd5JyksXG4gICAgICAgICAgICB5eSA6IHBsdXJhbGl6ZSgneScpXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyTHk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBhck1hID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItbWEnLCB7XG4gICAgICAgIG1vbnRocyA6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfYp9mE2KPYrdivX9in2YTYpdiq2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn2KfYrdivX9in2KrZhtmK2YZf2KvZhNin2KvYp9ihX9in2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgcyA6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzcyA6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG0gOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbSA6ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGggOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGggOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkIDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZCA6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNIDogJ9i02YfYsScsXG4gICAgICAgICAgICBNTSA6ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5IDogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9mG2YjYp9iqJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJNYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn2aEnLFxuICAgICAgICAnMic6ICfZoicsXG4gICAgICAgICczJzogJ9mjJyxcbiAgICAgICAgJzQnOiAn2aQnLFxuICAgICAgICAnNSc6ICfZpScsXG4gICAgICAgICc2JzogJ9mmJyxcbiAgICAgICAgJzcnOiAn2acnLFxuICAgICAgICAnOCc6ICfZqCcsXG4gICAgICAgICc5JzogJ9mpJyxcbiAgICAgICAgJzAnOiAn2aAnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn2aEnOiAnMScsXG4gICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAn2aQnOiAnNCcsXG4gICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAn2acnOiAnNycsXG4gICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAn2aAnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGFyU2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1zYScsIHtcbiAgICAgICAgbW9udGhzIDogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzIDogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzIDogJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgbSA6ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tIDogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaCA6ICfYs9in2LnYqScsXG4gICAgICAgICAgICBoaCA6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQgOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkIDogJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgIE0gOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NIDogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHkgOiAn2LPZhtipJyxcbiAgICAgICAgICAgIHl5IDogJyVkINiz2YbZiNin2KonXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyU2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBhclRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItdG4nLCB7XG4gICAgICAgIG1vbnRoczogJ9is2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzIDogJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgbTogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW06ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGg6ICfYs9in2LnYqScsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZDogJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgIE06ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU06ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5OiAn2LPZhtipJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPZhtmI2KfYqidcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhclRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6ICctaW5jaScsXG4gICAgICAgIDU6ICctaW5jaScsXG4gICAgICAgIDg6ICctaW5jaScsXG4gICAgICAgIDcwOiAnLWluY2knLFxuICAgICAgICA4MDogJy1pbmNpJyxcbiAgICAgICAgMjogJy1uY2knLFxuICAgICAgICA3OiAnLW5jaScsXG4gICAgICAgIDIwOiAnLW5jaScsXG4gICAgICAgIDUwOiAnLW5jaScsXG4gICAgICAgIDM6ICctw7xuY8O8JyxcbiAgICAgICAgNDogJy3DvG5jw7wnLFxuICAgICAgICAxMDA6ICctw7xuY8O8JyxcbiAgICAgICAgNjogJy1uY8SxJyxcbiAgICAgICAgOTogJy11bmN1JyxcbiAgICAgICAgMTA6ICctdW5jdScsXG4gICAgICAgIDMwOiAnLXVuY3UnLFxuICAgICAgICA2MDogJy3EsW5jxLEnLFxuICAgICAgICA5MDogJy3EsW5jxLEnXG4gICAgfTtcblxuICAgIHZhciBheiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2F6Jywge1xuICAgICAgICBtb250aHMgOiAneWFudmFyX2ZldnJhbF9tYXJ0X2FwcmVsX21heV9peXVuX2l5dWxfYXZxdXN0X3NlbnR5YWJyX29rdHlhYnJfbm95YWJyX2Rla2Ficicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAneWFuX2Zldl9tYXJfYXByX21heV9peW5faXlsX2F2cV9zZW5fb2t0X25veV9kZWsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0JhemFyX0JhemFyIGVydMmZc2lfw4fJmXLFn8mZbmLJmSBheMWfYW3EsV/Dh8mZcsWfyZluYsmZX0PDvG3JmSBheMWfYW3EsV9Dw7xtyZlfxZ7JmW5iyZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnQmF6X0J6RV/Dh0F4X8OHyZlyX0NBeF9Dw7xtX8WeyZluJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdCel9CRV/Dh0Ffw4fJmV9DQV9Dw7xfxZ7JmScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW2J1Z8O8biBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tzYWJhaCBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdbZ8mZbMmZbiBoyZlmdMmZXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tkw7xuyZluXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdba2XDp8mZbiBoyZlmdMmZXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgc29ucmEnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDJmXZ2yZlsJyxcbiAgICAgICAgICAgIHMgOiAnYmlybmXDp8mZIHNhbml5yZknLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2FuaXnJmScsXG4gICAgICAgICAgICBtIDogJ2JpciBkyZlxaXHJmScsXG4gICAgICAgICAgICBtbSA6ICclZCBkyZlxaXHJmScsXG4gICAgICAgICAgICBoIDogJ2JpciBzYWF0JyxcbiAgICAgICAgICAgIGhoIDogJyVkIHNhYXQnLFxuICAgICAgICAgICAgZCA6ICdiaXIgZ8O8bicsXG4gICAgICAgICAgICBkZCA6ICclZCBnw7xuJyxcbiAgICAgICAgICAgIE0gOiAnYmlyIGF5JyxcbiAgICAgICAgICAgIE1NIDogJyVkIGF5JyxcbiAgICAgICAgICAgIHkgOiAnYmlyIGlsJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGlsJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZ2VjyZl8c8mZaMmZcnxnw7xuZMO8enxheMWfYW0vLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14oZ8O8bmTDvHp8YXjFn2FtKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZ2VjyZknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3PJmWjJmXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2fDvG5kw7x6JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdheMWfYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKMSxbmPEsXxpbmNpfG5jaXzDvG5jw7x8bmPEsXx1bmN1KS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7ICAvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm9cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3EsW5jxLEnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyICUgMTAwIC0gYSxcbiAgICAgICAgICAgICAgICBjID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXo7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHBsdXJhbCh3b3JkLCBudW0pIHtcbiAgICAgICAgdmFyIGZvcm1zID0gd29yZC5zcGxpdCgnXycpO1xuICAgICAgICByZXR1cm4gbnVtICUgMTAgPT09IDEgJiYgbnVtICUgMTAwICE9PSAxMSA/IGZvcm1zWzBdIDogKG51bSAlIDEwID49IDIgJiYgbnVtICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49IDIwKSA/IGZvcm1zWzFdIDogZm9ybXNbMl0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAnc3MnOiB3aXRob3V0U3VmZml4ID8gJ9GB0LXQutGD0L3QtNCwX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcgOiAn0YHQtdC60YPQvdC00YNf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgICdtbSc6IHdpdGhvdXRTdWZmaXggPyAn0YXQstGW0LvRltC90LBf0YXQstGW0LvRltC90Ytf0YXQstGW0LvRltC9JyA6ICfRhdCy0ZbQu9GW0L3Rg1/RhdCy0ZbQu9GW0L3Ri1/RhdCy0ZbQu9GW0L0nLFxuICAgICAgICAgICAgJ2hoJzogd2l0aG91dFN1ZmZpeCA/ICfQs9Cw0LTQt9GW0L3QsF/Qs9Cw0LTQt9GW0L3Ri1/Qs9Cw0LTQt9GW0L0nIDogJ9Cz0LDQtNC30ZbQvdGDX9Cz0LDQtNC30ZbQvdGLX9Cz0LDQtNC30ZbQvScsXG4gICAgICAgICAgICAnZGQnOiAn0LTQt9C10L3RjF/QtNC90ZZf0LTQt9GR0L0nLFxuICAgICAgICAgICAgJ01NJzogJ9C80LXRgdGP0YZf0LzQtdGB0Y/RhtGLX9C80LXRgdGP0YbQsNGeJyxcbiAgICAgICAgICAgICd5eSc6ICfQs9C+0LRf0LPQsNC00Ytf0LPQsNC00L7RnidcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfRhdCy0ZbQu9GW0L3QsCcgOiAn0YXQstGW0LvRltC90YMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ2gnKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQs9Cw0LTQt9GW0L3QsCcgOiAn0LPQsNC00LfRltC90YMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHBsdXJhbChmb3JtYXRba2V5XSwgK251bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdiZScsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0YHRgtGD0LTQt9C10L3Rj1/Qu9GO0YLQsNCz0LBf0YHQsNC60LDQstGW0LrQsF/QutGA0LDRgdCw0LLRltC60LBf0YLRgNCw0Z7QvdGPX9GH0Y3RgNCy0LXQvdGPX9C70ZbQv9C10L3Rj1/QttC90ZbRntC90Y9f0LLQtdGA0LDRgdC90Y9f0LrQsNGB0YLRgNGL0YfQvdGW0LrQsF/Qu9GW0YHRgtCw0L/QsNC00LBf0YHQvdC10LbQvdGPJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9GB0YLRg9C00LfQtdC90Yxf0LvRjtGC0Ytf0YHQsNC60LDQstGW0Lpf0LrRgNCw0YHQsNCy0ZbQul/RgtGA0LDQstC10L3RjF/Rh9GN0YDQstC10L3RjF/Qu9GW0L/QtdC90Yxf0LbQvdGW0LLQtdC90Yxf0LLQtdGA0LDRgdC10L3RjF/QutCw0YHRgtGA0YvRh9C90ZbQul/Qu9GW0YHRgtCw0L/QsNC0X9GB0L3QtdC20LDQvdGMJy5zcGxpdCgnXycpXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9GB0YLRg9C0X9C70Y7Rgl/RgdCw0Lpf0LrRgNCw0YFf0YLRgNCw0LJf0YfRjdGA0LJf0LvRltC/X9C20L3RltCyX9Cy0LXRgF/QutCw0YHRgl/Qu9GW0YHRgl/RgdC90LXQticuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfQvdGP0LTQt9C10LvRjl/Qv9Cw0L3Rj9C00LfQtdC70LDQul/QsNGe0YLQvtGA0LDQul/RgdC10YDQsNC00YNf0YfQsNGG0LLQtdGAX9C/0Y/RgtC90ZbRhtGDX9GB0YPQsdC+0YLRgycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfQvdGP0LTQt9C10LvRj1/Qv9Cw0L3Rj9C00LfQtdC70LDQul/QsNGe0YLQvtGA0LDQul/RgdC10YDQsNC00LBf0YfQsNGG0LLQtdGAX9C/0Y/RgtC90ZbRhtCwX9GB0YPQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvXFxbID9b0KPRg9GeXSA/KD860LzRltC90YPQu9GD0Y580L3QsNGB0YLRg9C/0L3Rg9GOKT8gP1xcXSA/ZGRkZC9cbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQvdC0X9C/0L1f0LDRgl/RgdGAX9GH0YZf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQvdC0X9C/0L1f0LDRgl/RgdGAX9GH0YZf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVkg0LMuJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSDQsy4sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkg0LMuLCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Ch0ZHQvdC90Y8g0Z5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0JfQsNGe0YLRgNCwINGeXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Cj0YfQvtGA0LAg0Z5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdb0KNdIGRkZGQgW9GeXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0KMg0LzRltC90YPQu9GD0Y5dIGRkZGQgW9GeXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQoyDQvNGW0L3Rg9C70YtdIGRkZGQgW9GeXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9C/0YDQsNC3ICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0YLQsNC80YMnLFxuICAgICAgICAgICAgcyA6ICfQvdC10LrQsNC70YzQutGWINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGggOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaGggOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZCA6ICfQtNC30LXQvdGMJyxcbiAgICAgICAgICAgIGRkIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE0gOiAn0LzQtdGB0Y/RhicsXG4gICAgICAgICAgICBNTSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5IDogJ9Cz0L7QtCcsXG4gICAgICAgICAgICB5eSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9C90L7Rh9GLfNGA0LDQvdGW0YbRi3zQtNC90Y980LLQtdGH0LDRgNCwLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQsNGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQvdC+0YfRiyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YDQsNC90ZbRhtGLJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQtNC90Y8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cy0LXRh9Cw0YDQsCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0ZZ80Yt80LPQsCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChudW1iZXIgJSAxMCA9PT0gMiB8fCBudW1iZXIgJSAxMCA9PT0gMykgJiYgKG51bWJlciAlIDEwMCAhPT0gMTIgJiYgbnVtYmVyICUgMTAwICE9PSAxMykgPyBudW1iZXIgKyAnLdGWJyA6IG51bWJlciArICct0YsnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9CwJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBiZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGJnID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYmcnLCB7XG4gICAgICAgIG1vbnRocyA6ICfRj9C90YPQsNGA0Lhf0YTQtdCy0YDRg9Cw0YDQuF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQstGA0Lhf0L7QutGC0L7QvNCy0YDQuF/QvdC+0LXQvNCy0YDQuF/QtNC10LrQtdC80LLRgNC4Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfRj9C90YBf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCzX9GB0LXQv1/QvtC60YJf0L3QvtC1X9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn0L3QtdC00LXQu9GPX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDRj9C00LBf0YfQtdGC0LLRitGA0YLRitC6X9C/0LXRgtGK0Lpf0YHRitCx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9C90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDRj1/Rh9C10YJf0L/QtdGCX9GB0YrQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnRC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vQlNC90LXRgSDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0KPRgtGA0LUg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9CyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vQktGH0LXRgNCwINCyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC40LfQvNC40L3QsNC70LDRgtCwXSBkZGRkIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQuNC30LzQuNC90LDQu9C40Y9dIGRkZGQgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfRgdC70LXQtCAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ9C/0YDQtdC00LggJXMnLFxuICAgICAgICAgICAgcyA6ICfQvdGP0LrQvtC70LrQviDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBzcyA6ICclZCDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBtIDogJ9C80LjQvdGD0YLQsCcsXG4gICAgICAgICAgICBtbSA6ICclZCDQvNC40L3Rg9GC0LgnLFxuICAgICAgICAgICAgaCA6ICfRh9Cw0YEnLFxuICAgICAgICAgICAgaGggOiAnJWQg0YfQsNGB0LAnLFxuICAgICAgICAgICAgZCA6ICfQtNC10L0nLFxuICAgICAgICAgICAgZGQgOiAnJWQg0LTQvdC4JyxcbiAgICAgICAgICAgIE0gOiAn0LzQtdGB0LXRhicsXG4gICAgICAgICAgICBNTSA6ICclZCDQvNC10YHQtdGG0LAnLFxuICAgICAgICAgICAgeSA6ICfQs9C+0LTQuNC90LAnLFxuICAgICAgICAgICAgeXkgOiAnJWQg0LPQvtC00LjQvdC4J1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC10LJ80LXQvXzRgtC4fNCy0Lh80YDQuHzQvNC4KS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdERpZ2l0ID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgbGFzdDJEaWdpdHMgPSBudW1iZXIgJSAxMDA7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQvSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID4gMTAgJiYgbGFzdDJEaWdpdHMgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QstC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YDQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gNyB8fCBsYXN0RGlnaXQgPT09IDgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QvNC4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJnO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYm0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibScsIHtcbiAgICAgICAgbW9udGhzIDogJ1phbnd1eWVrYWxvX0Zld3VydXlla2Fsb19NYXJpc2lrYWxvX0F3aXJpbGlrYWxvX03Jm2thbG9fWnV3yZtua2Fsb19adWx1eWVrYWxvX1V0aWthbG9fU8mbdGFuYnVydWthbG9fyZRrdXTJlGJ1cnVrYWxvX05vd2FuYnVydWthbG9fRGVzYW5idXJ1a2Fsbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnWmFuX0Zld19NYXJfQXdpX03Jm19adXdfWnVsX1V0aV9TyZt0X8mUa3VfTm93X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnS2FyaV9OdMmbbsmbbl9UYXJhdGFfQXJhYmFfQWxhbWlzYV9KdW1hX1NpYmlyaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdLYXJfTnTJm19UYXJfQXJhX0FsYV9KdW1fU2liJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdLYV9OdF9UYV9Bcl9BbF9KdV9TaScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ01NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIFtsyZtyyZtdIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVkgW2zJm3LJm10gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbQmkgbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tTaW5pIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbZG9uIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS3VudSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW3TJm23Jm25lbiBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBryZRuyZQnLFxuICAgICAgICAgICAgcGFzdCA6ICdhIGLJmyAlcyBiyZQnLFxuICAgICAgICAgICAgcyA6ICdzYW5nYSBkYW1hIGRhbWEnLFxuICAgICAgICAgICAgc3MgOiAnc2Vrb25kaSAlZCcsXG4gICAgICAgICAgICBtIDogJ21pbml0aSBrZWxlbicsXG4gICAgICAgICAgICBtbSA6ICdtaW5pdGkgJWQnLFxuICAgICAgICAgICAgaCA6ICdsyZtyyZsga2VsZW4nLFxuICAgICAgICAgICAgaGggOiAnbMmbcsmbICVkJyxcbiAgICAgICAgICAgIGQgOiAndGlsZSBrZWxlbicsXG4gICAgICAgICAgICBkZCA6ICd0aWxlICVkJyxcbiAgICAgICAgICAgIE0gOiAna2FsbyBrZWxlbicsXG4gICAgICAgICAgICBNTSA6ICdrYWxvICVkJyxcbiAgICAgICAgICAgIHkgOiAnc2FuIGtlbGVuJyxcbiAgICAgICAgICAgIHl5IDogJ3NhbiAlZCdcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm07XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+CnpycsXG4gICAgICAgICcyJzogJ+CnqCcsXG4gICAgICAgICczJzogJ+CnqScsXG4gICAgICAgICc0JzogJ+CnqicsXG4gICAgICAgICc1JzogJ+CnqycsXG4gICAgICAgICc2JzogJ+CnrCcsXG4gICAgICAgICc3JzogJ+CnrScsXG4gICAgICAgICc4JzogJ+CnricsXG4gICAgICAgICc5JzogJ+CnrycsXG4gICAgICAgICcwJzogJ+CnpidcbiAgICB9LFxuICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+Cnpyc6ICcxJyxcbiAgICAgICAgJ+CnqCc6ICcyJyxcbiAgICAgICAgJ+CnqSc6ICczJyxcbiAgICAgICAgJ+Cnqic6ICc0JyxcbiAgICAgICAgJ+Cnqyc6ICc1JyxcbiAgICAgICAgJ+CnrCc6ICc2JyxcbiAgICAgICAgJ+CnrSc6ICc3JyxcbiAgICAgICAgJ+Cnric6ICc4JyxcbiAgICAgICAgJ+Cnryc6ICc5JyxcbiAgICAgICAgJ+Cnpic6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgYm4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibicsIHtcbiAgICAgICAgbW9udGhzIDogJ+CmnOCmvuCmqOCngeCnn+CmvuCmsOCngF/gpqvgp4fgpqzgp43gprDgp4Hgp5/gpr7gprDgpr9f4Kau4Ka+4Kaw4KeN4KaaX+Cmj+CmquCnjeCmsOCmv+Cmsl/gpq7gp4df4Kac4KeB4KaoX+CmnOCngeCmsuCmvuCmh1/gpobgppfgprjgp43gpp9f4Ka44KeH4Kaq4KeN4Kaf4KeH4Kau4KeN4Kas4KawX+CmheCmleCnjeCmn+Cni+CmrOCmsF/gpqjgpq3gp4fgpq7gp43gpqzgprBf4Kah4Ka/4Ka44KeH4Kau4KeN4Kas4KawJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgppzgpr7gpqjgp4Ff4Kar4KeH4KasX+CmruCmvuCmsOCnjeCmml/gpo/gpqrgp43gprBf4Kau4KeHX+CmnOCngeCmqF/gppzgp4HgprJf4KaG4KaXX+CmuOCnh+CmquCnjeCmn1/gpoXgppXgp43gpp/gp4tf4Kao4Kat4KeHX+CmoeCmv+CmuOCnhycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn4Kaw4Kas4Ka/4Kas4Ka+4KawX+CmuOCni+CmruCmrOCmvuCmsF/gpq7gppngp43gppfgprLgpqzgpr7gprBf4Kas4KeB4Kan4Kas4Ka+4KawX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv+CmrOCmvuCmsF/gprbgp4HgppXgp43gprDgpqzgpr7gprBf4Ka24Kao4Ka/4Kas4Ka+4KawJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaX4KayX+CmrOCngeCmp1/gpqzgp4Pgprngprjgp43gpqrgpqTgpr9f4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4Kaw4Kas4Ka/X+CmuOCni+Cmrl/gpq7gppngp43gppdf4Kas4KeB4KanX+CmrOCng+CmueCmg1/gprbgp4HgppXgp43gprBf4Ka24Kao4Ka/Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcyDgprjgpq7gp58nLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+CmhuCmnF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4KaG4KaX4Ka+4Kau4KeA4KaV4Ka+4KayXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgppfgpqTgppXgpr7gprJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgppfgpqRdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgpqrgprDgp4cnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgpobgppfgp4cnLFxuICAgICAgICAgICAgcyA6ICfgppXgp5/gp4fgppUg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOCmuOCnh+CmleCnh+CmqOCnjeCmoScsXG4gICAgICAgICAgICBtIDogJ+Cmj+CmlSDgpq7gpr/gpqjgpr/gpp8nLFxuICAgICAgICAgICAgbW0gOiAnJWQg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIGggOiAn4KaP4KaVIOCmmOCmqOCnjeCmn+CmvicsXG4gICAgICAgICAgICBoaCA6ICclZCDgppjgpqjgp43gpp/gpr4nLFxuICAgICAgICAgICAgZCA6ICfgpo/gppUg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOCmpuCmv+CmqCcsXG4gICAgICAgICAgICBNIDogJ+Cmj+CmlSDgpq7gpr7gprgnLFxuICAgICAgICAgICAgTU0gOiAnJWQg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIHkgOiAn4KaP4KaVIOCmrOCmm+CmsCcsXG4gICAgICAgICAgICB5eSA6ICclZCDgpqzgppvgprAnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgp6fgp6jgp6ngp6rgp6vgp6zgp63gp67gp6/gp6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gprDgpr7gpqR84Ka44KaV4Ka+4KayfOCmpuCngeCmquCngeCmsHzgpqzgpr/gppXgpr7gprJ84Kaw4Ka+4KakLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgobWVyaWRpZW0gPT09ICfgprDgpr7gpqQnICYmIGhvdXIgPj0gNCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4Kam4KeB4Kaq4KeB4KawJyAmJiBob3VyIDwgNSkgfHxcbiAgICAgICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgpqzgpr/gppXgpr7gprInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmuOCmleCmvuCmsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kam4KeB4Kaq4KeB4KawJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpqzgpr/gppXgpr7gprInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmsOCmvuCmpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgvKEnLFxuICAgICAgICAnMic6ICfgvKInLFxuICAgICAgICAnMyc6ICfgvKMnLFxuICAgICAgICAnNCc6ICfgvKQnLFxuICAgICAgICAnNSc6ICfgvKUnLFxuICAgICAgICAnNic6ICfgvKYnLFxuICAgICAgICAnNyc6ICfgvKcnLFxuICAgICAgICAnOCc6ICfgvKgnLFxuICAgICAgICAnOSc6ICfgvKknLFxuICAgICAgICAnMCc6ICfgvKAnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgvKEnOiAnMScsXG4gICAgICAgICfgvKInOiAnMicsXG4gICAgICAgICfgvKMnOiAnMycsXG4gICAgICAgICfgvKQnOiAnNCcsXG4gICAgICAgICfgvKUnOiAnNScsXG4gICAgICAgICfgvKYnOiAnNicsXG4gICAgICAgICfgvKcnOiAnNycsXG4gICAgICAgICfgvKgnOiAnOCcsXG4gICAgICAgICfgvKknOiAnOScsXG4gICAgICAgICfgvKAnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGJvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm8nLCB7XG4gICAgICAgIG1vbnRocyA6ICfgvZ/gvrPgvIvgvZbgvIvgvZHgvYTgvIvgvZTgvbxf4L2f4L6z4LyL4L2W4LyL4L2C4L2J4L2y4L2m4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9guC9puC9tOC9mOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZ7gvbLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2j4L6U4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC+suC9tOC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZHgvbTgvZPgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2i4L6S4L6x4L2R4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC9guC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2F4L2y4L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9guC9ieC9suC9puC8i+C9lCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4L2f4L6z4LyL4L2W4LyL4L2R4L2E4LyL4L2U4L28X+C9n+C+s+C8i+C9luC8i+C9guC9ieC9suC9puC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvYLgvabgvbTgvZjgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2e4L2y4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9o+C+lOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZHgvrLgvbTgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2R4L204L2T4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9ouC+kuC+seC9keC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZHgvYLgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9guC9heC9suC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvYLgvYngvbLgvabgvIvgvZQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+C9guC9n+C9oOC8i+C9ieC9suC8i+C9mOC8i1/gvYLgvZ/gvaDgvIvgvZ/gvrPgvIvgvZbgvItf4L2C4L2f4L2g4LyL4L2Y4L2y4L2C4LyL4L2R4L2Y4L2i4LyLX+C9guC9n+C9oOC8i+C9o+C+t+C9guC8i+C9lOC8i1/gvYLgvZ/gvaDgvIvgvZXgvbTgvaLgvIvgvZbgvbRf4L2C4L2f4L2g4LyL4L2U4LyL4L2m4L2E4L2m4LyLX+C9guC9n+C9oOC8i+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgvYngvbLgvIvgvZjgvItf4L2f4L6z4LyL4L2W4LyLX+C9mOC9suC9guC8i+C9keC9mOC9ouC8i1/gvaPgvrfgvYLgvIvgvZTgvItf4L2V4L204L2i4LyL4L2W4L20X+C9lOC8i+C9puC9hOC9puC8i1/gvabgvqTgvbrgvZPgvIvgvZTgvIsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+C9ieC9suC8i+C9mOC8i1/gvZ/gvrPgvIvgvZbgvItf4L2Y4L2y4L2C4LyL4L2R4L2Y4L2i4LyLX+C9o+C+t+C9guC8i+C9lOC8i1/gvZXgvbTgvaLgvIvgvZbgvbRf4L2U4LyL4L2m4L2E4L2m4LyLX+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C9keC9suC8i+C9ouC9suC9hF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4L2m4L2E4LyL4L2J4L2y4L2TXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb4L2W4L2R4L204L2T4LyL4L2V4L6y4L2C4LyL4L2i4L6X4L264L2m4LyL4L2YXSwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4L2B4LyL4L2m4L2EXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4L2W4L2R4L204L2T4LyL4L2V4L6y4L2C4LyL4L2Y4L2Q4L2g4LyL4L2YXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4L2j4LyLJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4L2m4L6U4L2T4LyL4L2jJyxcbiAgICAgICAgICAgIHMgOiAn4L2j4L2Y4LyL4L2m4L2EJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOC9puC+kOC9ouC8i+C9huC8jScsXG4gICAgICAgICAgICBtIDogJ+C9puC+kOC9ouC8i+C9mOC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBtbSA6ICclZCDgvabgvpDgvaLgvIvgvZgnLFxuICAgICAgICAgICAgaCA6ICfgvYbgvbTgvIvgvZrgvbzgvZHgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgaGggOiAnJWQg4L2G4L204LyL4L2a4L284L2RJyxcbiAgICAgICAgICAgIGQgOiAn4L2J4L2y4L2T4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOC9ieC9suC9k+C8iycsXG4gICAgICAgICAgICBNIDogJ+C9n+C+s+C8i+C9luC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBNTSA6ICclZCDgvZ/gvrPgvIvgvZYnLFxuICAgICAgICAgICAgeSA6ICfgvaPgvbzgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgeXkgOiAnJWQg4L2j4L28J1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Lyh4Lyi4Lyj4Lyk4Lyl4Lym4Lyn4Lyo4Lyp4LygXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4L2Y4L2a4L2T4LyL4L2Y4L28fOC9nuC9vOC9guC9puC8i+C9gOC9pnzgvYngvbLgvZPgvIvgvYLgvbTgvYR84L2R4L2C4L284L2E4LyL4L2R4L2CfOC9mOC9muC9k+C8i+C9mOC9vC8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG1lcmlkaWVtID09PSAn4L2Y4L2a4L2T4LyL4L2Y4L28JyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCcgJiYgaG91ciA8IDUpIHx8XG4gICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4L2R4L2C4L284L2E4LyL4L2R4L2CJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2Y4L2a4L2T4LyL4L2Y4L28JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZ7gvbzgvYLgvabgvIvgvYDgvaYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2R4L2C4L284L2E4LyL4L2R4L2CJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZjgvZrgvZPgvIvgvZjgvbwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBibztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAnbW0nOiAnbXVudXRlbm4nLFxuICAgICAgICAgICAgJ01NJzogJ21peicsXG4gICAgICAgICAgICAnZGQnOiAnZGV2ZXpoJ1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgbXV0YXRpb24oZm9ybWF0W2tleV0sIG51bWJlcik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwZWNpYWxNdXRhdGlvbkZvclllYXJzKG51bWJlcikge1xuICAgICAgICBzd2l0Y2ggKGxhc3ROdW1iZXIobnVtYmVyKSkge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIGJsb2F6JztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgdmxvYXonO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxhc3ROdW1iZXIobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdE51bWJlcihudW1iZXIgJSAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbXV0YXRpb24odGV4dCwgbnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBzb2Z0TXV0YXRpb24odGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNvZnRNdXRhdGlvbih0ZXh0KSB7XG4gICAgICAgIHZhciBtdXRhdGlvblRhYmxlID0ge1xuICAgICAgICAgICAgJ20nOiAndicsXG4gICAgICAgICAgICAnYic6ICd2JyxcbiAgICAgICAgICAgICdkJzogJ3onXG4gICAgICAgIH07XG4gICAgICAgIGlmIChtdXRhdGlvblRhYmxlW3RleHQuY2hhckF0KDApXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXV0YXRpb25UYWJsZVt0ZXh0LmNoYXJBdCgwKV0gKyB0ZXh0LnN1YnN0cmluZygxKTtcbiAgICB9XG5cbiAgICB2YXIgYnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdicicsIHtcbiAgICAgICAgbW9udGhzIDogJ0dlbnZlcl9DXFwnaHdldnJlcl9NZXVyemhfRWJyZWxfTWFlX01lemhldmVuX0dvdWVyZV9Fb3N0X0d3ZW5nb2xvX0hlcmVfRHVfS2VyenUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0dlbl9DXFwnaHdlX01ldV9FYnJfTWFlX0V2ZV9Hb3VfRW9zX0d3ZV9IZXJfRHVfS2VyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTdWxfTHVuX01ldXJ6aF9NZXJjXFwnaGVyX1lhb3VfR3dlbmVyX1NhZG9ybicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdWxfTHVuX01ldV9NZXJfWWFvX0d3ZV9TYWQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X0x1X01lX01lcl9ZYV9Hd19TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoW2VdbW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaFtlXW1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgW2Egdml6XSBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW2Egdml6XSBNTU1NIFlZWVkgaFtlXW1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIFthIHZpel0gTU1NTSBZWVlZIGhbZV1tbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hpeml2IGRhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tXYXJjXFwnaG9hemggZGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2RhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tEZWNcXCdoIGRhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtwYXNldCBkYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2EtYmVubiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIFxcJ3pvJyxcbiAgICAgICAgICAgIHMgOiAndW4gbmViZXVkIHNlZ29uZGVubm/DuScsXG4gICAgICAgICAgICBzcyA6ICclZCBlaWxlbm4nLFxuICAgICAgICAgICAgbSA6ICd1ciB2dW51dGVubicsXG4gICAgICAgICAgICBtbSA6IHJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbixcbiAgICAgICAgICAgIGggOiAndW4gZXVyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGV1cicsXG4gICAgICAgICAgICBkIDogJ3VuIGRldmV6aCcsXG4gICAgICAgICAgICBkZCA6IHJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbixcbiAgICAgICAgICAgIE0gOiAndXIgbWl6JyxcbiAgICAgICAgICAgIE1NIDogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgeSA6ICd1ciBibG9heicsXG4gICAgICAgICAgICB5eSA6IHNwZWNpYWxNdXRhdGlvbkZvclllYXJzXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShhw7F8dmV0KS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gKG51bWJlciA9PT0gMSkgPyAnYcOxJyA6ICd2ZXQnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZG5hIG1pbnV0YScgOiAnamVkbmUgbWludXRlJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRhbiBzYXQnIDogJ2plZG5vZyBzYXRhJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0JztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2RhbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWMnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBicyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JzJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ25lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSAgOiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgIDogJ1tzdXRyYSB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdbanXEjWVyIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbHVdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsaV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCAgIDogJ3ByaWplICVzJyxcbiAgICAgICAgICAgIHMgICAgICA6ICdwYXIgc2VrdW5kaScsXG4gICAgICAgICAgICBzcyAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtICAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoICAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkICAgICAgOiAnZGFuJyxcbiAgICAgICAgICAgIGRkICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gICAgICA6ICdtamVzZWMnLFxuICAgICAgICAgICAgTU0gICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSAgICAgIDogJ2dvZGludScsXG4gICAgICAgICAgICB5eSAgICAgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBicztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY2EnLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICdnZW5lcl9mZWJyZXJfbWFyw6dfYWJyaWxfbWFpZ19qdW55X2p1bGlvbF9hZ29zdF9zZXRlbWJyZV9vY3R1YnJlX25vdmVtYnJlX2Rlc2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgZm9ybWF0OiAnZGUgZ2VuZXJfZGUgZmVicmVyX2RlIG1hcsOnX2RcXCdhYnJpbF9kZSBtYWlnX2RlIGp1bnlfZGUganVsaW9sX2RcXCdhZ29zdF9kZSBzZXRlbWJyZV9kXFwnb2N0dWJyZV9kZSBub3ZlbWJyZV9kZSBkZXNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvRFtvRF0/KFxccykrTU1NTS9cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnZ2VuLl9mZWJyLl9tYXLDp19hYnIuX21haWdfanVueV9qdWwuX2FnLl9zZXQuX29jdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnZGl1bWVuZ2VfZGlsbHVuc19kaW1hcnRzX2RpbWVjcmVzX2Rpam91c19kaXZlbmRyZXNfZGlzc2FidGUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZGcuX2RsLl9kdC5fZGMuX2RqLl9kdi5fZHMuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkZ19kbF9kdF9kY19kal9kdl9kcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIGxsIDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbCA6ICdEIE1NTSBZWVlZLCBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gW2RlXSBZWVlZIFthIGxlc10gSDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ2RkZCBEIE1NTSBZWVlZLCBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXZ1aSBhICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbZGVtw6AgYSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1thaGlyIGEgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbZWxdIGRkZGQgW3Bhc3NhdCBhICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdkXFwnYXF1w60gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdmYSAlcycsXG4gICAgICAgICAgICBzIDogJ3VucyBzZWdvbnMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vnb25zJyxcbiAgICAgICAgICAgIG0gOiAndW4gbWludXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRzJyxcbiAgICAgICAgICAgIGggOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yZXMnLFxuICAgICAgICAgICAgZCA6ICd1biBkaWEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGllcycsXG4gICAgICAgICAgICBNIDogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNvcycsXG4gICAgICAgICAgICB5IDogJ3VuIGFueScsXG4gICAgICAgICAgICB5eSA6ICclZCBhbnlzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0ocnxufHR8w6h8YSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gKG51bWJlciA9PT0gMSkgPyAncicgOlxuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDIpID8gJ24nIDpcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSAzKSA/ICdyJyA6XG4gICAgICAgICAgICAgICAgKG51bWJlciA9PT0gNCkgPyAndCcgOiAnw6gnO1xuICAgICAgICAgICAgaWYgKHBlcmlvZCA9PT0gJ3cnIHx8IHBlcmlvZCA9PT0gJ1cnKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2EnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHMgPSAnbGVkZW5fw7pub3JfYsWZZXplbl9kdWJlbl9rdsSbdGVuX8SNZXJ2ZW5fxI1lcnZlbmVjX3NycGVuX3rDocWZw61fxZnDrWplbl9saXN0b3BhZF9wcm9zaW5lYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnbGVkX8O6bm9fYsWZZV9kdWJfa3bEm1/EjXZuX8SNdmNfc3JwX3rDocWZX8WZw61qX2xpc19wcm8nLnNwbGl0KCdfJyk7XG5cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbL15sZWQvaSwgL17Dum5vL2ksIC9eYsWZZS9pLCAvXmR1Yi9pLCAvXmt2xJsvaSwgL14oxI12bnzEjWVydmVuJHzEjWVydm5hKS9pLCAvXijEjXZjfMSNZXJ2ZW5lY3zEjWVydmVuY2UpL2ksIC9ec3JwL2ksIC9eesOhxZkvaSwgL17FmcOtai9pLCAvXmxpcy9pLCAvXnByby9pXTtcbiAgICAvLyBOT1RFOiAnxI1lcnZlbicgaXMgc3Vic3RyaW5nIG9mICfEjWVydmVuZWMnOyB0aGVyZWZvcmUgJ8SNZXJ2ZW5lYycgbXVzdCBwcmVjZWRlICfEjWVydmVuJyBpbiB0aGUgcmVnZXggdG8gYmUgZnVsbHkgbWF0Y2hlZC5cbiAgICAvLyBPdGhlcndpc2UgcGFyc2VyIG1hdGNoZXMgJzEuIMSNZXJ2ZW5lYycgYXMgJzEuIMSNZXJ2ZW4nICsgJ2VjJy5cbiAgICB2YXIgbW9udGhzUmVnZXggPSAvXihsZWRlbnzDum5vcnxixZllemVufGR1YmVufGt2xJt0ZW58xI1lcnZlbmVjfMSNZXJ2ZW5jZXzEjWVydmVufMSNZXJ2bmF8c3JwZW58esOhxZnDrXzFmcOtamVufGxpc3RvcGFkfHByb3NpbmVjfGxlZHzDum5vfGLFmWV8ZHVifGt2xJt8xI12bnzEjXZjfHNycHx6w6HFmXzFmcOtanxsaXN8cHJvKS9pO1xuXG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIChuID4gMSkgJiYgKG4gPCA1KSAmJiAofn4obiAvIDEwKSAhPT0gMSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOiAgLy8gYSBmZXcgc2Vjb25kcyAvIGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAncMOhciBzZWt1bmQnIDogJ3DDoXIgc2VrdW5kYW1pJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzogLy8gOSBzZWNvbmRzIC8gaW4gOSBzZWNvbmRzIC8gOSBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnc2VrdW5keScgOiAnc2VrdW5kJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWt1bmRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ20nOiAgLy8gYSBtaW51dGUgLyBpbiBhIG1pbnV0ZSAvIGEgbWludXRlIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiAoaXNGdXR1cmUgPyAnbWludXR1JyA6ICdtaW51dG91Jyk7XG4gICAgICAgICAgICBjYXNlICdtbSc6IC8vIDkgbWludXRlcyAvIGluIDkgbWludXRlcyAvIDkgbWludXRlcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbnV0eScgOiAnbWludXQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21pbnV0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdoJzogIC8vIGFuIGhvdXIgLyBpbiBhbiBob3VyIC8gYW4gaG91ciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdob2RpbmEnIDogKGlzRnV0dXJlID8gJ2hvZGludScgOiAnaG9kaW5vdScpO1xuICAgICAgICAgICAgY2FzZSAnaGgnOiAvLyA5IGhvdXJzIC8gaW4gOSBob3VycyAvIDkgaG91cnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdob2RpbnknIDogJ2hvZGluJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdob2RpbmFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZCc6ICAvLyBhIGRheSAvIGluIGEgZGF5IC8gYSBkYXkgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdkZW4nIDogJ2RuZW0nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOiAvLyA5IGRheXMgLyBpbiA5IGRheXMgLyA5IGRheXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdkbnknIDogJ2Ruw60nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2RueSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTSc6ICAvLyBhIG1vbnRoIC8gaW4gYSBtb250aCAvIGEgbW9udGggYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdtxJtzw61jJyA6ICdtxJtzw61jZW0nO1xuICAgICAgICAgICAgY2FzZSAnTU0nOiAvLyA5IG1vbnRocyAvIGluIDkgbW9udGhzIC8gOSBtb250aHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtxJtzw61jZScgOiAnbcSbc8OtY8WvJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtxJtzw61jaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneSc6ICAvLyBhIHllYXIgLyBpbiBhIHllYXIgLyBhIHllYXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdyb2snIDogJ3Jva2VtJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzogLy8gOSB5ZWFycyAvIGluIDkgeWVhcnMgLyA5IHllYXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAncm9reScgOiAnbGV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdsZXR5JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY3MgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjcycsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRoc1Nob3J0LFxuICAgICAgICBtb250aHNSZWdleCA6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4IDogbW9udGhzUmVnZXgsXG4gICAgICAgIC8vIE5PVEU6ICfEjWVydmVuJyBpcyBzdWJzdHJpbmcgb2YgJ8SNZXJ2ZW5lYyc7IHRoZXJlZm9yZSAnxI1lcnZlbmVjJyBtdXN0IHByZWNlZGUgJ8SNZXJ2ZW4nIGluIHRoZSByZWdleCB0byBiZSBmdWxseSBtYXRjaGVkLlxuICAgICAgICAvLyBPdGhlcndpc2UgcGFyc2VyIG1hdGNoZXMgJzEuIMSNZXJ2ZW5lYycgYXMgJzEuIMSNZXJ2ZW4nICsgJ2VjJy5cbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXggOiAvXihsZWRlbnxsZWRuYXzDum5vcmF8w7pub3J8YsWZZXplbnxixZllem5hfGR1YmVufGR1Ym5hfGt2xJt0ZW58a3bEm3RuYXzEjWVydmVuZWN8xI1lcnZlbmNlfMSNZXJ2ZW58xI1lcnZuYXxzcnBlbnxzcnBuYXx6w6HFmcOtfMWZw61qZW58xZnDrWpuYXxsaXN0b3BhZHV8bGlzdG9wYWR8cHJvc2luZWN8cHJvc2luY2UpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXggOiAvXihsZWR8w7pub3xixZllfGR1YnxrdsSbfMSNdm58xI12Y3xzcnB8esOhxZl8xZnDrWp8bGlzfHBybykvaSxcbiAgICAgICAgbW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXMgOiAnbmVkxJtsZV9wb25kxJtsw61fw7p0ZXLDvV9zdMWZZWRhX8SNdHZydGVrX3DDoXRla19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnbmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ25lX3BvX8O6dF9zdF/EjXRfcMOhX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgbCA6ICdELiBNLiBZWVlZJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZG5lcyB2XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3rDrXRyYSB2XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IG5lZMSbbGkgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdmUgc3TFmWVkdSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZlIMSNdHZydGVrIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBww6F0ZWsgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHNvYm90dSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdsSNZXJhIHZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3UgbmVkxJtsaSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDqV0gZGRkZCBbdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bG91IHN0xZllZHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBzb2JvdHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3DFmWVkICVzJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGN2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY3YnLCB7XG4gICAgICAgIG1vbnRocyA6ICfQutOR0YDQu9Cw0Ydf0L3QsNGA05HRgV/Qv9GD0Yhf0LDQutCwX9C80LDQuV/Sq9OX0YDRgtC80LVf0YPRgtORX9Kr0YPRgNC70LBf0LDQstOR0L1f0Y7Qv9CwX9GH07PQul/RgNCw0YjRgtCw0LInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9C605HRgF/QvdCw0YBf0L/Rg9GIX9Cw0LrQsF/QvNCw0Llf0qvTl9GAX9GD0YLTkV/Sq9GD0YBf0LDQstC9X9GO0L/QsF/Rh9Oz0Lpf0YDQsNGIJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfQstGL0YDRgdCw0YDQvdC40LrRg9C9X9GC0YPQvdGC0LjQutGD0L1f0YvRgtC70LDRgNC40LrRg9C9X9GO0L3QutGD0L1f0LrTl9Kr0L3QtdGA0L3QuNC60YPQvV/RjdGA0L3QtdC60YPQvV/RiNOR0LzQsNGC0LrRg9C9Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9Cy0YvRgF/RgtGD0L1f0YvRgtC7X9GO0L1f0LrTl9KrX9GN0YDQvV/RiNOR0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9Cy0YBf0YLQvV/Ri9GCX9GO0L1f0LrSq1/RjdGAX9GI0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXScsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR0YXTl9C9XSBEWy3QvNOX0YjTl10sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgWVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR0YXTl9C9XSBEWy3QvNOX0YjTl10sIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0J/QsNGP0L1dIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQq9GA0LDQvV0gTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9OW0L3QtdGAXSBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW9Kq0LjRgtC10YFdIGRkZGQgTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vQmNGA0YLQvdOXXSBkZGRkIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiBmdW5jdGlvbiAob3V0cHV0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGFmZml4ID0gL9GB0LXRhdC10YIkL2kuZXhlYyhvdXRwdXQpID8gJ9GA0LXQvScgOiAv0qvRg9C7JC9pLmV4ZWMob3V0cHV0KSA/ICfRgtCw0L0nIDogJ9GA0LDQvSc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dCArIGFmZml4O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0LrQsNGP0LvQu9CwJyxcbiAgICAgICAgICAgIHMgOiAn0L/Tl9GALdC40Log0qvQtdC60LrRg9C90YInLFxuICAgICAgICAgICAgc3MgOiAnJWQg0qvQtdC60LrRg9C90YInLFxuICAgICAgICAgICAgbSA6ICfQv9OX0YAg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBtbSA6ICclZCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIGggOiAn0L/Tl9GAINGB0LXRhdC10YInLFxuICAgICAgICAgICAgaGggOiAnJWQg0YHQtdGF0LXRgicsXG4gICAgICAgICAgICBkIDogJ9C/05fRgCDQutGD0L0nLFxuICAgICAgICAgICAgZGQgOiAnJWQg0LrRg9C9JyxcbiAgICAgICAgICAgIE0gOiAn0L/Tl9GAINGD0LnTkdGFJyxcbiAgICAgICAgICAgIE1NIDogJyVkINGD0LnTkdGFJyxcbiAgICAgICAgICAgIHkgOiAn0L/Tl9GAINKr0YPQuycsXG4gICAgICAgICAgICB5eSA6ICclZCDSq9GD0LsnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS3QvNOX0YgvLFxuICAgICAgICBvcmRpbmFsIDogJyVkLdC805fRiCcsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGN2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgY3kgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjeScsIHtcbiAgICAgICAgbW9udGhzOiAnSW9uYXdyX0Nod2Vmcm9yX01hd3J0aF9FYnJpbGxfTWFpX01laGVmaW5fR29yZmZlbm5hZl9Bd3N0X01lZGlfSHlkcmVmX1RhY2h3ZWRkX1JoYWdmeXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSW9uX0Nod2VfTWF3X0Vicl9NYWlfTWVoX0dvcl9Bd3NfTWVkX0h5ZF9UYWNoX1JoYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnRHlkZCBTdWxfRHlkZCBMbHVuX0R5ZGQgTWF3cnRoX0R5ZGQgTWVyY2hlcl9EeWRkIElhdV9EeWRkIEd3ZW5lcl9EeWRkIFNhZHdybicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bF9MbHVuX01hd19NZXJfSWF1X0d3ZV9TYWQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTGxfTWFfTWVfSWFfR3dfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIC8vIHRpbWUgZm9ybWF0cyBhcmUgdGhlIHNhbWUgYXMgZW4tZ2JcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIZWRkaXcgYW1dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbWWZvcnkgYW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYW1dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRGRvZSBhbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtkaXdldGhhZiBhbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ21ld24gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHluIMO0bCcsXG4gICAgICAgICAgICBzOiAneWNoeWRpZyBlaWxpYWRhdScsXG4gICAgICAgICAgICBzczogJyVkIGVpbGlhZCcsXG4gICAgICAgICAgICBtOiAnbXVudWQnLFxuICAgICAgICAgICAgbW06ICclZCBtdW51ZCcsXG4gICAgICAgICAgICBoOiAnYXdyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgYXdyJyxcbiAgICAgICAgICAgIGQ6ICdkaXdybm9kJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGl3cm5vZCcsXG4gICAgICAgICAgICBNOiAnbWlzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWlzJyxcbiAgICAgICAgICAgIHk6ICdibHd5ZGR5bicsXG4gICAgICAgICAgICB5eTogJyVkIGZseW5lZGQnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShmZWR8YWlufGFmfGlsfHlkZHxlZHxlZykvLFxuICAgICAgICAvLyB0cmFkaXRpb25hbCBvcmRpbmFsIG51bWJlcnMgYWJvdmUgMzEgYXJlIG5vdCBjb21tb25seSB1c2VkIGluIGNvbGxvcXVpYWwgV2Vsc2hcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gJycsXG4gICAgICAgICAgICAgICAgbG9va3VwID0gW1xuICAgICAgICAgICAgICAgICAgICAnJywgJ2FmJywgJ2lsJywgJ3lkZCcsICd5ZGQnLCAnZWQnLCAnZWQnLCAnZWQnLCAnZmVkJywgJ2ZlZCcsICdmZWQnLCAvLyAxYWYgdG8gMTBmZWRcbiAgICAgICAgICAgICAgICAgICAgJ2VnJywgJ2ZlZCcsICdlZycsICdlZycsICdmZWQnLCAnZWcnLCAnZWcnLCAnZmVkJywgJ2VnJywgJ2ZlZCcgLy8gMTFlZyB0byAyMGZlZFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoYiA+IDIwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGIgPT09IDQwIHx8IGIgPT09IDUwIHx8IGIgPT09IDYwIHx8IGIgPT09IDgwIHx8IGIgPT09IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnZmVkJzsgLy8gbm90IDMwYWluLCA3MGFpbiBvciA5MGFpblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICdhaW4nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYiA+IDApIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBsb29rdXBbYl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGRhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGEnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ3PDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDuHJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc8O4bl9tYW5fdGlyX29uc190b3JfZnJlX2zDuHInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3PDuF9tYV90aV9vbl90b19mcl9sw7gnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgW2QuXSBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbaSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tpIG1vcmdlbiBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ3DDpSBkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW2kgZ8OlciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tpXSBkZGRkW3Mga2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBzaWRlbicsXG4gICAgICAgICAgICBzIDogJ2bDpSBzZWt1bmRlcicsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtIDogJ2V0IG1pbnV0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0dGVyJyxcbiAgICAgICAgICAgIGggOiAnZW4gdGltZScsXG4gICAgICAgICAgICBoaCA6ICclZCB0aW1lcicsXG4gICAgICAgICAgICBkIDogJ2VuIGRhZycsXG4gICAgICAgICAgICBkZCA6ICclZCBkYWdlJyxcbiAgICAgICAgICAgIE0gOiAnZW4gbcOlbmVkJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG3DpW5lZGVyJyxcbiAgICAgICAgICAgIHkgOiAnZXQgw6VyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMOlcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdtJzogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgICdoJzogWydlaW5lIFN0dW5kZScsICdlaW5lciBTdHVuZGUnXSxcbiAgICAgICAgICAgICdkJzogWydlaW4gVGFnJywgJ2VpbmVtIFRhZyddLFxuICAgICAgICAgICAgJ2RkJzogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgICdNJzogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgICdNTSc6IFtudW1iZXIgKyAnIE1vbmF0ZScsIG51bWJlciArICcgTW9uYXRlbiddLFxuICAgICAgICAgICAgJ3knOiBbJ2VpbiBKYWhyJywgJ2VpbmVtIEphaHInXSxcbiAgICAgICAgICAgICd5eSc6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuLl9GZWIuX03DpHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzIDogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAnbSc6IFsnZWluZSBNaW51dGUnLCAnZWluZXIgTWludXRlJ10sXG4gICAgICAgICAgICAnaCc6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICAnZCc6IFsnZWluIFRhZycsICdlaW5lbSBUYWcnXSxcbiAgICAgICAgICAgICdkZCc6IFtudW1iZXIgKyAnIFRhZ2UnLCBudW1iZXIgKyAnIFRhZ2VuJ10sXG4gICAgICAgICAgICAnTSc6IFsnZWluIE1vbmF0JywgJ2VpbmVtIE1vbmF0J10sXG4gICAgICAgICAgICAnTU0nOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgICd5JzogWydlaW4gSmFocicsICdlaW5lbSBKYWhyJ10sXG4gICAgICAgICAgICAneXknOiBbbnVtYmVyICsgJyBKYWhyZScsIG51bWJlciArICcgSmFocmVuJ11cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZUF0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUtYXQnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKw6RubmVyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0rDpG4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1NvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toZXV0ZSB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAndm9yICVzJyxcbiAgICAgICAgICAgIHMgOiAnZWluIHBhYXIgU2VrdW5kZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSA6ICclZCBNaW51dGVuJyxcbiAgICAgICAgICAgIGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZUF0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ20nOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgJ2gnOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgJ2QnOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgJ00nOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICAneSc6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGVDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlLWNoJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbi5fRmViLl9Nw6Ryel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzIDogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVDaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgJ96W3qzegt6q3ofept6D3qknLFxuICAgICAgICAn3orerN6E3rDeg96q3ofept6D3qknLFxuICAgICAgICAn3onep96D3qjel96qJyxcbiAgICAgICAgJ96H3q3eld6w3oPeqd6N3qonLFxuICAgICAgICAn3onerScsXG4gICAgICAgICfelt6r3oLesCcsXG4gICAgICAgICfelt6q3o3ept6H3qgnLFxuICAgICAgICAn3ofer96O3qbekN6w3pPeqicsXG4gICAgICAgICfekN6s3pXesN6T3qzeid6w3oTept6D3qonLFxuICAgICAgICAn3ofert6G3rDek96v3oTept6D3qonLFxuICAgICAgICAn3oLert6I3qzeid6w3oTept6D3qonLFxuICAgICAgICAn3pHeqN6Q3qzeid6w3oTept6D3qonXG4gICAgXSwgd2Vla2RheXMgPSBbXG4gICAgICAgICfeh96n3oveqN6H3rDejN6mJyxcbiAgICAgICAgJ96A3q/eid6mJyxcbiAgICAgICAgJ96H3qbegt6w3o7ep96D3qYnLFxuICAgICAgICAn3oTeqt6L3qYnLFxuICAgICAgICAn3oTeqt6D3qfekN6w3orept6M3qgnLFxuICAgICAgICAn3oDeqt6G3qreg96qJyxcbiAgICAgICAgJ96A3q7egt6o3oDeqN6D3qonXG4gICAgXTtcblxuICAgIHZhciBkdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2R2Jywge1xuICAgICAgICBtb250aHMgOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0IDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5cyA6IHdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ96H3qfei96oX96A3q/eid6mX96H3qbegt6wX96E3qrei96mX96E3qreg96nX96A3qreht6qX96A3q7egt6oJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcblxuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnRC9NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL96J3oZ83oneii8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn3oneiicgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ96J3oYnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ96J3oonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW96J3qjeh96m3oveql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb3onep96L3qbeid6nXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW96H3qjeh96w3pTerF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW96K3qfeh96o3ozeqt6I3qhdIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ96M3qzeg96t3o7ept6H3qggJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfeht6q3oPeqN6C3rAgJXMnLFxuICAgICAgICAgICAgcyA6ICfekN6o3obeqt6C3rDejN6q3obert6F3qzeh96wJyxcbiAgICAgICAgICAgIHNzIDogJ2QlIN6Q3qjeht6q3oLesN6M3qonLFxuICAgICAgICAgICAgbSA6ICfeid6o3oLeqN6T3qzeh96wJyxcbiAgICAgICAgICAgIG1tIDogJ96J3qjegt6o3pPeqiAlZCcsXG4gICAgICAgICAgICBoIDogJ96O3qbekd6o3ofeqN6D3qzeh96wJyxcbiAgICAgICAgICAgIGhoIDogJ96O3qbekd6o3ofeqN6D3qogJWQnLFxuICAgICAgICAgICAgZCA6ICfei96q3ojept6A3qzeh96wJyxcbiAgICAgICAgICAgIGRkIDogJ96L3qreiN6m3pDesCAlZCcsXG4gICAgICAgICAgICBNIDogJ96J3qbegN6s3ofesCcsXG4gICAgICAgICAgICBNTSA6ICfeid6m3pDesCAlZCcsXG4gICAgICAgICAgICB5IDogJ96H3qbegN6m3oPerN6H3rAnLFxuICAgICAgICAgICAgeXkgOiAn3ofept6A3qbeg96qICVkJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA3LCAgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGR2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIH1cblxuXG4gICAgdmFyIGVsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZWwnLCB7XG4gICAgICAgIG1vbnRoc05vbWluYXRpdmVFbCA6ICfOmc6xzr3Ov8+FzqzPgc65zr/Pgl/Ops61zrLPgc6/z4XOrM+BzrnOv8+CX86czqzPgc+EzrnOv8+CX86Rz4DPgc6vzrvOuc6/z4JfzpzOrM65zr/Pgl/Omc6/z43Ovc65zr/Pgl/Omc6/z43Ou865zr/Pgl/Okc+NzrPOv8+Fz4PPhM6/z4JfzqPOtc+Az4TOrc68zrLPgc65zr/Pgl/On866z4TPjs6yz4HOuc6/z4Jfzp3Ov86tzrzOss+BzrnOv8+CX86UzrXOus6tzrzOss+BzrnOv8+CJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNHZW5pdGl2ZUVsIDogJ86ZzrHOvc6/z4XOsc+Bzq/Ov8+FX86mzrXOss+Bzr/Phc6xz4HOr86/z4VfzpzOsc+Bz4TOr86/z4VfzpHPgM+BzrnOu86vzr/PhV/OnM6xzpDOv8+FX86Zzr/Phc69zq/Ov8+FX86Zzr/Phc67zq/Ov8+FX86Rz4XOs86/z43Pg8+Ezr/PhV/Oo861z4DPhM61zrzOss+Bzq/Ov8+FX86fzrrPhM+JzrLPgc6vzr/PhV/Onc6/zrXOvM6yz4HOr86/z4VfzpTOtc66zrXOvM6yz4HOr86/z4UnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRocyA6IGZ1bmN0aW9uIChtb21lbnRUb0Zvcm1hdCwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW1vbWVudFRvRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc05vbWluYXRpdmVFbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ3N0cmluZycgJiYgL0QvLnRlc3QoZm9ybWF0LnN1YnN0cmluZygwLCBmb3JtYXQuaW5kZXhPZignTU1NTScpKSkpIHsgLy8gaWYgdGhlcmUgaXMgYSBkYXkgbnVtYmVyIGJlZm9yZSAnTU1NTSdcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzR2VuaXRpdmVFbFttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc05vbWluYXRpdmVFbFttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnzpnOsc69X86mzrXOsl/OnM6xz4FfzpHPgM+BX86czrHPil/Omc6/z4XOvV/Omc6/z4XOu1/Okc+FzrNfzqPOtc+AX86fzrrPhF/Onc6/zrVfzpTOtc66Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfOms+Fz4HOuc6xzrrOrl/OlM61z4XPhM6tz4HOsV/OpM+Bzq/PhM63X86kzrXPhM6sz4HPhM63X86gzq3OvM+Az4TOt1/OoM6xz4HOsc+DzrrOtc+Fzq5fzqPOrM6yzrLOsc+Ezr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnzprPhc+BX86UzrXPhV/OpM+BzrlfzqTOtc+EX86gzrXOvF/OoM6xz4FfzqPOsc6yJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfOms+FX86UzrVfzqTPgV/OpM61X86gzrVfzqDOsV/Oo86xJy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfOvM68JyA6ICfOnM6cJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnz4DOvCcgOiAnzqDOnCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAoKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKClbMF0gPT09ICfOvCcpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlIDogL1vOoM6cXVxcLj/OnD9cXC4/L2ksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyRWwgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vOo86uzrzOtc+BzrEge31dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW86Rz43Pgc65zr8ge31dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW3t9XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vOp864zrXPgiB7fV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW8+Ezr8gz4DPgc6/zrfOs86/z43OvM61zr3Ov10gZGRkZCBbe31dIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW8+EzrfOvSDPgM+Bzr/Ot86zzr/Pjc68zrXOvc63XSBkZGRkIFt7fV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IGZ1bmN0aW9uIChrZXksIG1vbSkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyRWxba2V5XSxcbiAgICAgICAgICAgICAgICBob3VycyA9IG1vbSAmJiBtb20uaG91cnMoKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG91dHB1dCkpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuYXBwbHkobW9tKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQucmVwbGFjZSgne30nLCAoaG91cnMgJSAxMiA9PT0gMSA/ICfPg8+EzrcnIDogJ8+Dz4TOuc+CJykpO1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnz4POtSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIM+Az4HOuc69JyxcbiAgICAgICAgICAgIHMgOiAnzrvOr86zzrEgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xJyxcbiAgICAgICAgICAgIHNzIDogJyVkIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsScsXG4gICAgICAgICAgICBtIDogJ86tzr3OsSDOu861z4DPhM+MJyxcbiAgICAgICAgICAgIG1tIDogJyVkIM67zrXPgM+EzqwnLFxuICAgICAgICAgICAgaCA6ICfOvM6vzrEgz47Pgc6xJyxcbiAgICAgICAgICAgIGhoIDogJyVkIM+Oz4HOtc+CJyxcbiAgICAgICAgICAgIGQgOiAnzrzOr86xIM68zq3Pgc6xJyxcbiAgICAgICAgICAgIGRkIDogJyVkIM68zq3Pgc61z4InLFxuICAgICAgICAgICAgTSA6ICfOrc69zrHPgiDOvM6uzr3Osc+CJyxcbiAgICAgICAgICAgIE1NIDogJyVkIM68zq7Ovc61z4InLFxuICAgICAgICAgICAgeSA6ICfOrc69zrHPgiDPh8+Bz4zOvc6/z4InLFxuICAgICAgICAgICAgeXkgOiAnJWQgz4fPgc+Mzr3Ouc6xJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Oty8sXG4gICAgICAgIG9yZGluYWw6ICclZM63JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZWw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBlblNHID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tU0cnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZ28nLFxuICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbSA6ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgICAgICBkIDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTSA6ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5IDogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlblNHO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5BdSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWF1Jywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuQXU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBlbkNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tY2EnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEwgOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZCA6ICdhIGRheScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE0gOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeSA6ICdhIHllYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuQ2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBlbkdiID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tZ2InLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZ28nLFxuICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbSA6ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgICAgICBkIDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTSA6ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5IDogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbkdiO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5JZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWllJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZ28nLFxuICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbSA6ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgICAgICBkIDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTSA6ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5IDogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbkllO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5JbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWlsJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbklsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5OeiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLW56Jywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuTno7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBlbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VvJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyb19mZWJydWFyb19tYXJ0b19hcHJpbG9fbWFqb19qdW5pb19qdWxpb19hxa1ndXN0b19zZXB0ZW1icm9fb2t0b2Jyb19ub3ZlbWJyb19kZWNlbWJybycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2HFrWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkaW1hbsSJb19sdW5kb19tYXJkb19tZXJrcmVkb1/EtWHFrWRvX3ZlbmRyZWRvX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkaW1fbHVuX21hcmRfbWVya1/EtWHFrV92ZW5fc2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkaV9sdV9tYV9tZV/EtWFfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdEWy1hIGRlXSBNTU1NLCBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEWy1hIGRlXSBNTU1NLCBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgW2xhXSBEWy1hIGRlXSBNTU1NLCBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvW2FwXVxcLnRcXC5tL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpID09PSAncCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3AudC5tLicgOiAnUC5ULk0uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYS50Lm0uJyA6ICdBLlQuTS4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hvZGlhxa0gamVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW01vcmdhxa0gamVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2plXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tIaWVyYcWtIGplXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbcGFzaW50YV0gZGRkZCBbamVdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdwb3N0ICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnYW50YcWtICVzJyxcbiAgICAgICAgICAgIHMgOiAnc2VrdW5kb2onLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VrdW5kb2onLFxuICAgICAgICAgICAgbSA6ICdtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvaicsXG4gICAgICAgICAgICBoIDogJ2hvcm8nLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yb2onLFxuICAgICAgICAgICAgZCA6ICd0YWdvJywvL25lICdkaXVybm8nLCDEiWFyIGVzdGFzIHV6aXRhIHBvciBwcm9rc2ltdW1vXG4gICAgICAgICAgICBkZCA6ICclZCB0YWdvaicsXG4gICAgICAgICAgICBNIDogJ21vbmF0bycsXG4gICAgICAgICAgICBNTSA6ICclZCBtb25hdG9qJyxcbiAgICAgICAgICAgIHkgOiAnamFybycsXG4gICAgICAgICAgICB5eSA6ICclZCBqYXJvaidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9YS8sXG4gICAgICAgIG9yZGluYWwgOiAnJWRhJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHNTaG9ydERvdCA9ICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMnLnNwbGl0KCdfJyk7XG5cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbL15lbmUvaSwgL15mZWIvaSwgL15tYXIvaSwgL15hYnIvaSwgL15tYXkvaSwgL15qdW4vaSwgL15qdWwvaSwgL15hZ28vaSwgL15zZXAvaSwgL15vY3QvaSwgL15ub3YvaSwgL15kaWMvaV07XG4gICAgdmFyIG1vbnRoc1JlZ2V4ID0gL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaTtcblxuICAgIHZhciBlcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzJywge1xuICAgICAgICBtb250aHMgOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleCA6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4IDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4IDogL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleCA6IC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2hhY2UgJXMnLFxuICAgICAgICAgICAgcyA6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG0gOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaCA6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkIDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgTSA6ICd1biBtZXMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeSA6ICd1biBhw7FvJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGHDsW9zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsIDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID0gJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBtb250aHNQYXJzZSA9IFsvXmVuZS9pLCAvXmZlYi9pLCAvXm1hci9pLCAvXmFici9pLCAvXm1heS9pLCAvXmp1bi9pLCAvXmp1bC9pLCAvXmFnby9pLCAvXnNlcC9pLCAvXm9jdC9pLCAvXm5vdi9pLCAvXmRpYy9pXTtcbiAgICB2YXIgbW9udGhzUmVnZXggPSAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pO1xuXG4gICAgdmFyIGVzRG8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcy1kbycsIHtcbiAgICAgICAgbW9udGhzIDogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVyIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzIDogJ3Vub3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoIDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNIDogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5IDogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYcOxb3MnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTCuicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzRG87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHNTaG9ydERvdCA9ICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMnLnNwbGl0KCdfJyk7XG5cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbL15lbmUvaSwgL15mZWIvaSwgL15tYXIvaSwgL15hYnIvaSwgL15tYXkvaSwgL15qdW4vaSwgL15qdWwvaSwgL15hZ28vaSwgL15zZXAvaSwgL15vY3QvaSwgL15ub3YvaSwgL15kaWMvaV07XG4gICAgdmFyIG1vbnRoc1JlZ2V4ID0gL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaTtcblxuICAgIHZhciBlc1VzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXMtdXMnLCB7XG4gICAgICAgIG1vbnRocyA6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90W20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvXihlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXMgOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZG9fbHVfbWFfbWlfanVfdmlfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnTU0vREQvWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2hhY2UgJXMnLFxuICAgICAgICAgICAgcyA6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG0gOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaCA6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkIDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgTSA6ICd1biBtZXMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeSA6ICd1biBhw7FvJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGHDsW9zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsIDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlc1VzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3MnIDogWydtw7VuZSBzZWt1bmRpJywgJ23DtW5pIHNla3VuZCcsICdwYWFyIHNla3VuZGl0J10sXG4gICAgICAgICAgICAnc3MnOiBbbnVtYmVyICsgJ3Nla3VuZGknLCBudW1iZXIgKyAnc2VrdW5kaXQnXSxcbiAgICAgICAgICAgICdtJyA6IFsnw7xoZSBtaW51dGknLCAnw7xrcyBtaW51dCddLFxuICAgICAgICAgICAgJ21tJzogW251bWJlciArICcgbWludXRpJywgbnVtYmVyICsgJyBtaW51dGl0J10sXG4gICAgICAgICAgICAnaCcgOiBbJ8O8aGUgdHVubmknLCAndHVuZCBhZWdhJywgJ8O8a3MgdHVuZCddLFxuICAgICAgICAgICAgJ2hoJzogW251bWJlciArICcgdHVubmknLCBudW1iZXIgKyAnIHR1bmRpJ10sXG4gICAgICAgICAgICAnZCcgOiBbJ8O8aGUgcMOkZXZhJywgJ8O8a3MgcMOkZXYnXSxcbiAgICAgICAgICAgICdNJyA6IFsna3V1IGFqYScsICdrdXUgYWVnYScsICfDvGtzIGt1dSddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcga3V1JywgbnVtYmVyICsgJyBrdXVkJ10sXG4gICAgICAgICAgICAneScgOiBbJ8O8aGUgYWFzdGEnLCAnYWFzdGEnLCAnw7xrcyBhYXN0YSddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgYWFzdGEnLCBudW1iZXIgKyAnIGFhc3RhdCddXG4gICAgICAgIH07XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0W2tleV1bMl0gPyBmb3JtYXRba2V5XVsyXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGV0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXQnLCB7XG4gICAgICAgIG1vbnRocyAgICAgICAgOiAnamFhbnVhcl92ZWVicnVhcl9tw6RydHNfYXByaWxsX21haV9qdXVuaV9qdXVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9vYmVyX25vdmVtYmVyX2RldHNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgICA6ICdqYWFuX3ZlZWJyX23DpHJ0c19hcHJfbWFpX2p1dW5pX2p1dWxpX2F1Z19zZXB0X29rdF9ub3ZfZGV0cycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgICAgICA6ICdww7xoYXDDpGV2X2VzbWFzcMOkZXZfdGVpc2lww6Rldl9rb2xtYXDDpGV2X25lbGphcMOkZXZfcmVlZGVfbGF1cMOkZXYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnUF9FX1RfS19OX1JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gICA6ICdQX0VfVF9LX05fUl9MJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUICAgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMICAgIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgICA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMICA6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgIDogJ1tUw6RuYSxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgIDogJ1tIb21tZSxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1tKw6RyZ21pbmVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW0VpbGUsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbRWVsbWluZV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgcMOkcmFzdCcsXG4gICAgICAgICAgICBwYXN0ICAgOiAnJXMgdGFnYXNpJyxcbiAgICAgICAgICAgIHMgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzcyAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCAgICAgOiAnJWQgcMOkZXZhJyxcbiAgICAgICAgICAgIE0gICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTSAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5ICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBldDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGV1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXUnLCB7XG4gICAgICAgIG1vbnRocyA6ICd1cnRhcnJpbGFfb3RzYWlsYV9tYXJ0eG9hX2FwaXJpbGFfbWFpYXR6YV9la2FpbmFfdXp0YWlsYV9hYnV6dHVhX2lyYWlsYV91cnJpYV9hemFyb2FfYWJlbmR1YScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAndXJ0Ll9vdHMuX21hci5fYXBpLl9tYWkuX2VrYS5fdXp0Ll9hYnUuX2lyYS5fdXJyLl9hemEuX2FiZS4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdpZ2FuZGVhX2FzdGVsZWhlbmFfYXN0ZWFydGVhX2FzdGVhemtlbmFfb3N0ZWd1bmFfb3N0aXJhbGFfbGFydW5iYXRhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2lnLl9hbC5fYXIuX2F6Ll9vZy5fb2wuX2xyLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnaWdfYWxfYXJfYXpfb2dfb2xfbHInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXScsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbScsXG4gICAgICAgICAgICBsIDogJ1lZWVktTS1EJyxcbiAgICAgICAgICAgIGxsIDogJ1lZWVlba29dIE1NTSBEW2FdJyxcbiAgICAgICAgICAgIGxsbCA6ICdZWVlZW2tvXSBNTU0gRFthXSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ2RkZCwgWVlZWVtrb10gTU1NIERbYV0gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbZ2F1cl0gTFRbZXRhbl0nLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbYmloYXJdIExUW2V0YW5dJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgTFRbZXRhbl0nLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbYXR6b10gTFRbZXRhbl0nLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW2F1cnJla29dIGRkZGQgTFRbZXRhbl0nLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIGJhcnJ1JyxcbiAgICAgICAgICAgIHBhc3QgOiAnZHVlbGEgJXMnLFxuICAgICAgICAgICAgcyA6ICdzZWd1bmRvIGJhdHp1aycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvJyxcbiAgICAgICAgICAgIG0gOiAnbWludXR1IGJhdCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dHUnLFxuICAgICAgICAgICAgaCA6ICdvcmR1IGJhdCcsXG4gICAgICAgICAgICBoaCA6ICclZCBvcmR1JyxcbiAgICAgICAgICAgIGQgOiAnZWd1biBiYXQnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZWd1bicsXG4gICAgICAgICAgICBNIDogJ2hpbGFiZXRlIGJhdCcsXG4gICAgICAgICAgICBNTSA6ICclZCBoaWxhYmV0ZScsXG4gICAgICAgICAgICB5IDogJ3VydGUgYmF0JyxcbiAgICAgICAgICAgIHl5IDogJyVkIHVydGUnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ9uxJyxcbiAgICAgICAgJzInOiAn27InLFxuICAgICAgICAnMyc6ICfbsycsXG4gICAgICAgICc0JzogJ9u0JyxcbiAgICAgICAgJzUnOiAn27UnLFxuICAgICAgICAnNic6ICfbticsXG4gICAgICAgICc3JzogJ9u3JyxcbiAgICAgICAgJzgnOiAn27gnLFxuICAgICAgICAnOSc6ICfbuScsXG4gICAgICAgICcwJzogJ9uwJ1xuICAgIH0sIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ9uxJzogJzEnLFxuICAgICAgICAn27InOiAnMicsXG4gICAgICAgICfbsyc6ICczJyxcbiAgICAgICAgJ9u0JzogJzQnLFxuICAgICAgICAn27UnOiAnNScsXG4gICAgICAgICfbtic6ICc2JyxcbiAgICAgICAgJ9u3JzogJzcnLFxuICAgICAgICAn27gnOiAnOCcsXG4gICAgICAgICfbuSc6ICc5JyxcbiAgICAgICAgJ9uwJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBmYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZhJywge1xuICAgICAgICBtb250aHMgOiAn2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn24zaqVxcdTIwMGPYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh1xcdTIwMGPYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrFxcdTIwMGPYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfbjNqpXFx1MjAwY9i02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mHXFx1MjAwY9i02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7ZhtisXFx1MjAwY9i02YbYqNmHX9is2YXYudmHX9i02YbYqNmHJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfbjF/Yr1/Ys1/ahl/Zvl/YrF/YtCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2YLYqNmEINin2LIg2LjZh9ixfNio2LnYryDYp9iyINi42YfYsS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC/YqNi52K8g2KfYsiDYuNmH2LEvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mC2KjZhCDYp9iyINi42YfYsSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KjYudivINin2LIg2LjZh9ixJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vYp9mF2LHZiNiyINiz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vZgdix2K/YpyDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9iv24zYsdmI2LIg2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW9m+24zYtF0gW9iz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn2K/YsSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzINm+24zYtCcsXG4gICAgICAgICAgICBzIDogJ9qG2YbYryDYq9in2YbbjNmHJyxcbiAgICAgICAgICAgIHNzIDogJ9ir2KfZhtuM2YcgZCUnLFxuICAgICAgICAgICAgbSA6ICfbjNqpINiv2YLbjNmC2YcnLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K/ZgtuM2YLZhycsXG4gICAgICAgICAgICBoIDogJ9uM2qkg2LPYp9i52KonLFxuICAgICAgICAgICAgaGggOiAnJWQg2LPYp9i52KonLFxuICAgICAgICAgICAgZCA6ICfbjNqpINix2YjYsicsXG4gICAgICAgICAgICBkZCA6ICclZCDYsdmI2LInLFxuICAgICAgICAgICAgTSA6ICfbjNqpINmF2KfZhycsXG4gICAgICAgICAgICBNTSA6ICclZCDZhdin2YcnLFxuICAgICAgICAgICAgeSA6ICfbjNqpINiz2KfZhCcsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9in2YQnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vbsC3buV0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfdmFLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZNmFJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBudW1iZXJzUGFzdCA9ICdub2xsYSB5a3NpIGtha3NpIGtvbG1lIG5lbGrDpCB2aWlzaSBrdXVzaSBzZWl0c2Vtw6RuIGthaGRla3NhbiB5aGRla3PDpG4nLnNwbGl0KCcgJyksXG4gICAgICAgIG51bWJlcnNGdXR1cmUgPSBbXG4gICAgICAgICAgICAnbm9sbGEnLCAneWhkZW4nLCAna2FoZGVuJywgJ2tvbG1lbicsICduZWxqw6RuJywgJ3ZpaWRlbicsICdrdXVkZW4nLFxuICAgICAgICAgICAgbnVtYmVyc1Bhc3RbN10sIG51bWJlcnNQYXN0WzhdLCBudW1iZXJzUGFzdFs5XVxuICAgICAgICBdO1xuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ211dXRhbWFuIHNla3VubmluJyA6ICdtdXV0YW1hIHNla3VudGknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdzZWt1bm5pbicgOiAnc2VrdW50aWEnO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ21pbnV1dGluJyA6ICdtaW51dXR0aSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAnbWludXV0aW4nIDogJ21pbnV1dHRpYSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAndHVubmluJyA6ICd0dW50aSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAndHVubmluJyA6ICd0dW50aWEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3DDpGl2w6RuJyA6ICdww6RpdsOkJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICdww6RpdsOkbicgOiAncMOkaXbDpMOkJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdrdXVrYXVkZW4nIDogJ2t1dWthdXNpJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICdrdXVrYXVkZW4nIDogJ2t1dWthdXR0YSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAndnVvZGVuJyA6ICd2dW9zaSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAndnVvZGVuJyA6ICd2dW90dGEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHZlcmJhbE51bWJlcihudW1iZXIsIGlzRnV0dXJlKSArICcgJyArIHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gdmVyYmFsTnVtYmVyKG51bWJlciwgaXNGdXR1cmUpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciA8IDEwID8gKGlzRnV0dXJlID8gbnVtYmVyc0Z1dHVyZVtudW1iZXJdIDogbnVtYmVyc1Bhc3RbbnVtYmVyXSkgOiBudW1iZXI7XG4gICAgfVxuXG4gICAgdmFyIGZpID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZmknLCB7XG4gICAgICAgIG1vbnRocyA6ICd0YW1taWt1dV9oZWxtaWt1dV9tYWFsaXNrdXVfaHVodGlrdXVfdG91a29rdXVfa2Vzw6RrdXVfaGVpbsOka3V1X2Vsb2t1dV9zeXlza3V1X2xva2FrdXVfbWFycmFza3V1X2pvdWx1a3V1Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICd0YW1taV9oZWxtaV9tYWFsaXNfaHVodGlfdG91a29fa2Vzw6RfaGVpbsOkX2Vsb19zeXlzX2xva2FfbWFycmFzX2pvdWx1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzdW5udW50YWlfbWFhbmFudGFpX3RpaXN0YWlfa2Vza2l2aWlra29fdG9yc3RhaV9wZXJqYW50YWlfbGF1YW50YWknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc3VfbWFfdGlfa2VfdG9fcGVfbGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRG8gTU1NTVt0YV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBISC5tbScsXG4gICAgICAgICAgICBsIDogJ0QuTS5ZWVlZJyxcbiAgICAgICAgICAgIGxsIDogJ0RvIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIGxsbCA6ICdEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdkZGQsIERvIE1NTSBZWVlZLCBba2xvXSBISC5tbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1t0w6Ruw6TDpG5dIFtrbG9dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW2h1b21lbm5hXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtrbG9dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW2VpbGVuXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbdmlpbWVdIGRkZGRbbmFdIFtrbG9dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBww6TDpHN0w6QnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBzaXR0ZW4nLFxuICAgICAgICAgICAgcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBmbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZvJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyX2ZlYnJ1YXJfbWFyc19hcHLDrWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzdW5udWRhZ3VyX23DoW5hZGFndXJfdMO9c2RhZ3VyX21pa3VkYWd1cl9ow7NzZGFndXJfZnLDrWdnamFkYWd1cl9sZXlnYXJkYWd1cicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzdW5fbcOhbl90w71zX21pa19ow7NzX2Zyw61fbGV5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdzdV9tw6FfdMO9X21pX2jDs19mcl9sZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRC4gTU1NTSwgWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vDjSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vDjSBtb3JnaW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW8ONIGdqw6FyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3PDrcOwc3R1XSBkZGRkIFtrbF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3VtICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgc8Otw7BhbmknLFxuICAgICAgICAgICAgcyA6ICdmw6Egc2VrdW5kJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZGlyJyxcbiAgICAgICAgICAgIG0gOiAnZWluIG1pbnV0dHVyJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0dGlyJyxcbiAgICAgICAgICAgIGggOiAnZWluIHTDrW1pJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHTDrW1hcicsXG4gICAgICAgICAgICBkIDogJ2VpbiBkYWd1cicsXG4gICAgICAgICAgICBkZCA6ICclZCBkYWdhcicsXG4gICAgICAgICAgICBNIDogJ2VpbiBtw6FuYcOwdXInLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOhbmHDsGlyJyxcbiAgICAgICAgICAgIHkgOiAnZWl0dCDDoXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgw6FyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmcicsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZGlfbHVfbWFfbWVfamVfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0F1am91cmTigJlodWkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0RlbWFpbiDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0hpZXIgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2Rlcm5pZXIgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdkYW5zICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaWwgeSBhICVzJyxcbiAgICAgICAgICAgIHMgOiAncXVlbHF1ZXMgc2Vjb25kZXMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kZXMnLFxuICAgICAgICAgICAgbSA6ICd1bmUgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICd1bmUgaGV1cmUnLFxuICAgICAgICAgICAgaGggOiAnJWQgaGV1cmVzJyxcbiAgICAgICAgICAgIGQgOiAndW4gam91cicsXG4gICAgICAgICAgICBkZCA6ICclZCBqb3VycycsXG4gICAgICAgICAgICBNIDogJ3VuIG1vaXMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9pcycsXG4gICAgICAgICAgICB5IDogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFucydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyfCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFJldHVybiAnZScgd2hlbiBkYXkgb2YgbW9udGggPiAxLiBNb3ZlIHRoaXMgY2FzZSBpbnNpZGVcbiAgICAgICAgICAgICAgICAvLyBibG9jayBmb3IgbWFzY3VsaW5lIHdvcmRzIGJlbG93LlxuICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMzM3NVxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIG1hc2N1bGluZSBncmFtbWF0aWNhbCBnZW5kZXI6IG1vaXMsIHRyaW1lc3RyZSwgam91clxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJ2UnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggZmVtaW5pbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBzZW1haW5lXG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ3JlJyA6ICdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZnJDYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZyLWNhJywge1xuICAgICAgICBtb250aHMgOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgcyA6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtIDogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaCA6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZCA6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8ZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyQ2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBmckNoID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnItY2gnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RpX2x1X21hX21lX2plX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tBdWpvdXJk4oCZaHVpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tEZW1haW4gw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tIaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtkZXJuaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFucyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2lsIHkgYSAlcycsXG4gICAgICAgICAgICBzIDogJ3F1ZWxxdWVzIHNlY29uZGVzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGVzJyxcbiAgICAgICAgICAgIG0gOiAndW5lIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAndW5lIGhldXJlJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhldXJlcycsXG4gICAgICAgICAgICBkIDogJ3VuIGpvdXInLFxuICAgICAgICAgICAgZGQgOiAnJWQgam91cnMnLFxuICAgICAgICAgICAgTSA6ICd1biBtb2lzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vaXMnLFxuICAgICAgICAgICAgeSA6ICd1biBhbicsXG4gICAgICAgICAgICB5eSA6ICclZCBhbnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlcnxlKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBtYXNjdWxpbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBtb2lzLCB0cmltZXN0cmUsIGpvdXJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICdlJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIGZlbWluaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogc2VtYWluZVxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdyZScgOiAnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmckNoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnRXaXRoRG90cyA9ICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21haV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID0gJ2phbl9mZWJfbXJ0X2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIGZ5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnknLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW5uZXdhcmlzX2ZlYnJld2FyaXNfbWFhcnRfYXByaWxfbWFhaWVfanVueV9qdWx5X2F1Z3VzdHVzX3NlcHRpbWJlcl9va3RvYmVyX25vdmltYmVyX2Rlc2ltYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzbmVpbl9tb2FuZGVpX3RpaXNkZWlfd29hbnNkZWlfdG9uZ2Vyc2RlaV9mcmVlZF9zbmVvbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzaS5fbW8uX3RpLl93by5fdG8uX2ZyLl9zby4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NpX01vX1RpX1dvX1RvX0ZyX1NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hqb2VkIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vYXJuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1c3RlciBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbw7RmcsO7bmVdIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvZXIgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBseW4nLFxuICAgICAgICAgICAgcyA6ICdpbiBwZWFyIHNla29uZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla29uZGVuJyxcbiAgICAgICAgICAgIG0gOiAnaWVuIG1pbsO6dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVuJyxcbiAgICAgICAgICAgIGggOiAnaWVuIG9lcmUnLFxuICAgICAgICAgICAgaGggOiAnJWQgb2VyZW4nLFxuICAgICAgICAgICAgZCA6ICdpZW4gZGVpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2VuJyxcbiAgICAgICAgICAgIE0gOiAnaWVuIG1vYW5uZScsXG4gICAgICAgICAgICBNTSA6ICclZCBtb2FubmVuJyxcbiAgICAgICAgICAgIHkgOiAnaWVuIGppZXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgamllcnJlbidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICgobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjApID8gJ3N0ZScgOiAnZGUnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgJ0VhbsOhaXInLCAnRmVhYmhyYScsICdNw6FydGEnLCAnQWlicmXDoW4nLCAnQmVhbHRhaW5lJywgJ03DqWl0aGVhbWgnLCAnScO6aWwnLCAnTMO6bmFzYScsICdNZcOhbiBGw7NtaGFpcicsICdEZWFpcmVhZGggRsOzbWhhaXInLCAnU2FtaGFpbicsICdOb2xsYWlnJ1xuICAgIF07XG5cbiAgICB2YXIgbW9udGhzU2hvcnQgPSBbJ0VhbsOhJywgJ0ZlYWInLCAnTcOhcnQnLCAnQWlicicsICdCZWFsJywgJ03DqWl0JywgJ0nDumlsJywgJ0zDum5hJywgJ01lw6FuJywgJ0RlYWknLCAnU2FtaCcsICdOb2xsJ107XG5cbiAgICB2YXIgd2Vla2RheXMgPSBbJ0TDqSBEb21obmFpZ2gnLCAnRMOpIEx1YWluJywgJ0TDqSBNw6FpcnQnLCAnRMOpIEPDqWFkYW9pbicsICdEw6lhcmRhb2luJywgJ0TDqSBoQW9pbmUnLCAnRMOpIFNhdGhhcm4nXTtcblxuICAgIHZhciB3ZWVrZGF5c1Nob3J0ID0gWydEb20nLCAnTHVhJywgJ03DoWknLCAnQ8OpYScsICdEw6lhJywgJ2hBbycsICdTYXQnXTtcblxuICAgIHZhciB3ZWVrZGF5c01pbiA9IFsnRG8nLCAnTHUnLCAnTcOhJywgJ0NlJywgJ0TDqScsICdoQScsICdTYSddO1xuXG4gICAgdmFyIGdhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ2EnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzU2hvcnQsXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogd2Vla2RheXNTaG9ydCxcbiAgICAgICAgd2Vla2RheXNNaW46IHdlZWtkYXlzTWluLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSW5uaXUgYWddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQW3DoXJhY2ggYWddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWddIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSW5uw6kgYWlnXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3NlbyBjYWl0ZV0gW2FnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgw7Mgc2hpbicsXG4gICAgICAgICAgICBzOiAnY8O6cGxhIHNvaWNpbmQnLFxuICAgICAgICAgICAgc3M6ICclZCBzb2ljaW5kJyxcbiAgICAgICAgICAgIG06ICduw7NpbcOpYWQnLFxuICAgICAgICAgICAgbW06ICclZCBuw7NpbcOpYWQnLFxuICAgICAgICAgICAgaDogJ3VhaXIgYW4gY2hsb2lnJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdWFpciBhbiBjaGxvaWcnLFxuICAgICAgICAgICAgZDogJ2zDoScsXG4gICAgICAgICAgICBkZDogJyVkIGzDoScsXG4gICAgICAgICAgICBNOiAnbcOtJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOtJyxcbiAgICAgICAgICAgIHk6ICdibGlhaW4nLFxuICAgICAgICAgICAgeXk6ICclZCBibGlhaW4nXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShkfG5hfG1oKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSBudW1iZXIgPT09IDEgPyAnZCcgOiBudW1iZXIgJSAxMCA9PT0gMiA/ICduYScgOiAnbWgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICdBbSBGYW9pbGxlYWNoJywgJ0FuIEdlYXJyYW4nLCAnQW0gTcOgcnQnLCAnQW4gR2libGVhbicsICdBbiBDw6hpdGVhbicsICdBbiB0LcOSZ21oaW9zJywgJ0FuIHQtSXVjaGFyJywgJ0FuIEzDuW5hc3RhbCcsICdBbiB0LVN1bHRhaW4nLCAnQW4gRMOgbWhhaXInLCAnQW4gdC1TYW1oYWluJywgJ0FuIETDuWJobGFjaGQnXG4gICAgXTtcblxuICAgIHZhciBtb250aHNTaG9ydCA9IFsnRmFvaScsICdHZWFyJywgJ03DoHJ0JywgJ0dpYmwnLCAnQ8OoaXQnLCAnw5JnbWgnLCAnSXVjaCcsICdMw7luJywgJ1N1bHQnLCAnRMOgbWgnLCAnU2FtaCcsICdEw7liaCddO1xuXG4gICAgdmFyIHdlZWtkYXlzID0gWydEaWTDsm1obmFpY2gnLCAnRGlsdWFpbicsICdEaW3DoGlydCcsICdEaWNpYWRhaW4nLCAnRGlhcmRhb2luJywgJ0RpaGFvaW5lJywgJ0Rpc2F0aGFpcm5lJ107XG5cbiAgICB2YXIgd2Vla2RheXNTaG9ydCA9IFsnRGlkJywgJ0RpbCcsICdEaW0nLCAnRGljJywgJ0RpYScsICdEaWgnLCAnRGlzJ107XG5cbiAgICB2YXIgd2Vla2RheXNNaW4gPSBbJ0TDsicsICdMdScsICdNw6AnLCAnQ2knLCAnQXInLCAnSGEnLCAnU2EnXTtcblxuICAgIHZhciBnZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dkJywge1xuICAgICAgICBtb250aHMgOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0IDogbW9udGhzU2hvcnQsXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6IHdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogd2Vla2RheXNTaG9ydCxcbiAgICAgICAgd2Vla2RheXNNaW4gOiB3ZWVrZGF5c01pbixcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0FuLWRpdWdoIGFpZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbQS1tw6BpcmVhY2ggYWlnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthaWddIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0FuLWTDqCBhaWddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW3NlbyBjaGFpZGhdIFthaWddIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdhbm4gYW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdiaG8gY2hpb25uICVzJyxcbiAgICAgICAgICAgIHMgOiAnYmVhZ2FuIGRpb2dhbicsXG4gICAgICAgICAgICBzcyA6ICclZCBkaW9nYW4nLFxuICAgICAgICAgICAgbSA6ICdtaW9uYWlkJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pb25haWRlYW4nLFxuICAgICAgICAgICAgaCA6ICd1YWlyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHVhaXJlYW4nLFxuICAgICAgICAgICAgZCA6ICdsYXRoYScsXG4gICAgICAgICAgICBkZCA6ICclZCBsYXRoYScsXG4gICAgICAgICAgICBNIDogJ23DrG9zJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG3DrG9zYW4nLFxuICAgICAgICAgICAgeSA6ICdibGlhZGhuYScsXG4gICAgICAgICAgICB5eSA6ICclZCBibGlhZGhuYSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfShkfG5hfG1oKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gbnVtYmVyID09PSAxID8gJ2QnIDogbnVtYmVyICUgMTAgPT09IDIgPyAnbmEnIDogJ21oJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdkO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZ2wgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnbCcsIHtcbiAgICAgICAgbW9udGhzIDogJ3hhbmVpcm9fZmVicmVpcm9fbWFyem9fYWJyaWxfbWFpb194dcOxb194dWxsb19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZWNlbWJybycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAneGFuLl9mZWIuX21hci5fYWJyLl9tYWkuX3h1w7EuX3h1bC5fYWdvLl9zZXQuX291dC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkb21pbmdvX2x1bnNfbWFydGVzX23DqXJjb3Jlc194b3Zlc192ZW5yZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb20uX2x1bi5fbWFyLl9tw6lyLl94b3YuX3Zlbi5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX23DqV94b192ZV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG94ZSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ8OhcycgOiAnw6EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7HDoSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ8OhcycgOiAnw6EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgWycgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnw6FzJyA6ICdhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tvbnRlICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnw6EnIDogJ2EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tvXSBkZGRkIFtwYXNhZG8gJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICfDoXMnIDogJ2EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ci5pbmRleE9mKCd1bicpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnbicgKyBzdHI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAnZW4gJyArIHN0cjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0IDogJ2hhaSAlcycsXG4gICAgICAgICAgICBzIDogJ3VucyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGggOiAndW5oYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNIDogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5IDogJ3VuIGFubycsXG4gICAgICAgICAgICB5eSA6ICclZCBhbm9zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsIDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBnbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdzJzogWyd0aG9kZGUgc2Vjb25kYW5pbScsICd0aG9kZGUgc2Vjb25kJ10sXG4gICAgICAgICAgICAnc3MnOiBbbnVtYmVyICsgJyBzZWNvbmRhbmltJywgbnVtYmVyICsgJyBzZWNvbmQnXSxcbiAgICAgICAgICAgICdtJzogWydla2EgbWludGFuJywgJ2VrIG1pbnV0ZSddLFxuICAgICAgICAgICAgJ21tJzogW251bWJlciArICcgbWludGFuaW0nLCBudW1iZXIgKyAnIG1pbnRhbSddLFxuICAgICAgICAgICAgJ2gnOiBbJ2VrYSB2b3JhbicsICdlayB2b3InXSxcbiAgICAgICAgICAgICdoaCc6IFtudW1iZXIgKyAnIHZvcmFuaW0nLCBudW1iZXIgKyAnIHZvcmFtJ10sXG4gICAgICAgICAgICAnZCc6IFsnZWthIGRpc2FuJywgJ2VrIGRpcyddLFxuICAgICAgICAgICAgJ2RkJzogW251bWJlciArICcgZGlzYW5pbScsIG51bWJlciArICcgZGlzJ10sXG4gICAgICAgICAgICAnTSc6IFsnZWthIG1ob2luZWFuJywgJ2VrIG1ob2lubyddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgbWhvaW5lYW5pbScsIG51bWJlciArICcgbWhvaW5lJ10sXG4gICAgICAgICAgICAneSc6IFsnZWthIHZvcnNhbicsICdlayB2b3JvcyddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgdm9yc2FuaW0nLCBudW1iZXIgKyAnIHZvcnNhbSddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZ29tTGF0biA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dvbS1sYXRuJywge1xuICAgICAgICBtb250aHMgOiAnSmFuZXJfRmVicmVyX01hcnNfQWJyaWxfTWFpX0p1bl9KdWxhaV9BZ29zdF9TZXRlbWJyX090dWJyX05vdmVtYnJfRGV6ZW1icicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuLl9GZWIuX01hcnNfQWJyLl9NYWlfSnVuX0p1bC5fQWdvLl9TZXQuX090dS5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnQWl0YXJfU29tYXJfTW9uZ2xsYXJfQnVkdmFyX0JyZXN0YXJfU3VrcmFyX1NvblxcJ3Zhcicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdBaXQuX1NvbS5fTW9uLl9CdWQuX0JyZS5fU3VrLl9Tb24uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdBaV9TbV9Nb19CdV9Ccl9TdV9Tbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzIFt2YXp0YV0nLFxuICAgICAgICAgICAgTCA6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU1bYWNoZWFdIERvLCBZWVlZLCBBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZLCBBIGg6bW0gW3ZhenRhXSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0Fpel0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tGYWxlYW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW0lldGEgdG9dIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLYWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0ZhdGxvXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWRpbScsXG4gICAgICAgICAgICBzIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfShlcikvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSBvcmRpbmFsICdlcicgb25seSBhcHBsaWVzIHRvIGRheSBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICdlcic7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9yYXRpfHNva2FsbGl8ZG9ucGFyYW18c2FuamUvLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncmF0aScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3Nva2FsbGknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnZG9ucGFyYW0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPiAxMiA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc2FuamUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JhdGknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Nva2FsbGknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RvbnBhcmFtJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzYW5qZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAncmF0aSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBnb21MYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgJzEnOiAn4KunJyxcbiAgICAgICAgICAgICcyJzogJ+CrqCcsXG4gICAgICAgICAgICAnMyc6ICfgq6knLFxuICAgICAgICAgICAgJzQnOiAn4KuqJyxcbiAgICAgICAgICAgICc1JzogJ+CrqycsXG4gICAgICAgICAgICAnNic6ICfgq6wnLFxuICAgICAgICAgICAgJzcnOiAn4KutJyxcbiAgICAgICAgICAgICc4JzogJ+CrricsXG4gICAgICAgICAgICAnOSc6ICfgq68nLFxuICAgICAgICAgICAgJzAnOiAn4KumJ1xuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KunJzogJzEnLFxuICAgICAgICAgICAgJ+CrqCc6ICcyJyxcbiAgICAgICAgICAgICfgq6knOiAnMycsXG4gICAgICAgICAgICAn4KuqJzogJzQnLFxuICAgICAgICAgICAgJ+Crqyc6ICc1JyxcbiAgICAgICAgICAgICfgq6wnOiAnNicsXG4gICAgICAgICAgICAn4KutJzogJzcnLFxuICAgICAgICAgICAgJ+Crric6ICc4JyxcbiAgICAgICAgICAgICfgq68nOiAnOScsXG4gICAgICAgICAgICAn4KumJzogJzAnXG4gICAgICAgIH07XG5cbiAgICB2YXIgZ3UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdndScsIHtcbiAgICAgICAgbW9udGhzOiAn4Kqc4Kq+4Kqo4KuN4Kqv4KuB4KqG4Kqw4KuAX+Cqq+Crh+CqrOCrjeCqsOCrgeCqhuCqsOCrgF/gqq7gqr7gqrDgq43gqppf4KqP4Kqq4KuN4Kqw4Kq/4KqyX+CqruCrh1/gqpzgq4Lgqqhf4Kqc4KuB4Kqy4Kq+4KqIX+CqkeCql+CquOCrjeCqn1/gqrjgqqrgq43gqp/gq4fgqq7gq43gqqzgqrBf4KqR4KqV4KuN4Kqf4KuN4Kqs4KqwX+CqqOCqteCrh+CqruCrjeCqrOCqsF/gqqHgqr/gqrjgq4fgqq7gq43gqqzgqrAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4Kqc4Kq+4Kqo4KuN4Kqv4KuBLl/gqqvgq4fgqqzgq43gqrDgq4EuX+CqruCqvuCqsOCrjeCqml/gqo/gqqrgq43gqrDgqr8uX+CqruCrh1/gqpzgq4Lgqqhf4Kqc4KuB4Kqy4Kq+Ll/gqpHgqpcuX+CquOCqquCrjeCqn+Crhy5f4KqR4KqV4KuN4Kqf4KuNLl/gqqjgqrXgq4cuX+CqoeCqv+CquOCrhy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4Kqw4Kq14Kq/4Kq14Kq+4KqwX+CquOCri+CqruCqteCqvuCqsF/gqq7gqoLgqpfgqrPgqrXgqr7gqrBf4Kqs4KuB4Kqn4KuN4Kq14Kq+4KqwX+Cql+CrgeCqsOCrgeCqteCqvuCqsF/gqrbgq4HgqpXgq43gqrDgqrXgqr7gqrBf4Kq24Kqo4Kq/4Kq14Kq+4KqwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Kqw4Kq14Kq/X+CquOCri+Cqrl/gqq7gqoLgqpfgqrNf4Kqs4KuB4Kqn4KuNX+Cql+CrgeCqsOCrgV/gqrbgq4HgqpXgq43gqrBf4Kq24Kqo4Kq/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CqsF/gqrjgq4tf4Kqu4KqCX+CqrOCrgV/gqpfgq4Ff4Kq24KuBX+Cqticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Kq14Kq+4KqX4KuN4Kqv4KuHJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgqobgqpxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KqV4Kq+4Kqy4KuHXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KqX4KqH4KqV4Kq+4Kqy4KuHXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgqqrgqr7gqpvgqrLgqr5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgqq7gqr4nLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCqquCrh+CqueCqsuCqvicsXG4gICAgICAgICAgICBzOiAn4KqF4Kqu4KuB4KqVIOCqquCqs+CriycsXG4gICAgICAgICAgICBzczogJyVkIOCquOCrh+CqleCqguCqoScsXG4gICAgICAgICAgICBtOiAn4KqP4KqVIOCqruCqv+CqqOCqv+CqnycsXG4gICAgICAgICAgICBtbTogJyVkIOCqruCqv+CqqOCqv+CqnycsXG4gICAgICAgICAgICBoOiAn4KqP4KqVIOCqleCqsuCqvuCqlScsXG4gICAgICAgICAgICBoaDogJyVkIOCqleCqsuCqvuCqlScsXG4gICAgICAgICAgICBkOiAn4KqP4KqVIOCqpuCqv+CqteCquCcsXG4gICAgICAgICAgICBkZDogJyVkIOCqpuCqv+CqteCquCcsXG4gICAgICAgICAgICBNOiAn4KqP4KqVIOCqruCqueCqv+CqqOCriycsXG4gICAgICAgICAgICBNTTogJyVkIOCqruCqueCqv+CqqOCriycsXG4gICAgICAgICAgICB5OiAn4KqP4KqVIOCqteCqsOCrjeCqtycsXG4gICAgICAgICAgICB5eTogJyVkIOCqteCqsOCrjeCqtydcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Crp+CrqOCrqeCrquCrq+CrrOCrreCrruCrr+Crpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gR3VqYXJhdGkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gR3VqYXJhdGkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gqrDgqr7gqqR84Kqs4Kqq4KuL4KqwfOCquOCqteCqvuCqsHzgqrjgqr7gqoLgqpwvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgqrDgqr7gqqQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqrjgqrXgqr7gqrAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kqs4Kqq4KuL4KqwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqrjgqr7gqoLgqpwnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kqw4Kq+4KqkJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrjgqrXgqr7gqrAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CqrOCqquCri+CqsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kq44Kq+4KqC4KqcJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrDgqr7gqqQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGd1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoZScsIHtcbiAgICAgICAgbW9udGhzIDogJ9eZ16DXldeQ16hf16TXkdeo15XXkNeoX9ee16jXpV/XkNek16jXmdecX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXldeh15hf16HXpNeY157XkdeoX9eQ15XXp9eY15XXkdeoX9eg15XXkdee15HXqF/Xk9em157XkdeoJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfXmdeg15XXs1/XpNeR16jXs1/Xnteo16Vf15DXpNeo17Nf157XkNeZX9eZ15XXoNeZX9eZ15XXnNeZX9eQ15XXktezX9eh16TXmNezX9eQ15XXp9ezX9eg15XXkdezX9eT16bXntezJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfXqNeQ16nXldefX9ep16DXmV/Xqdec15nXqdeZX9eo15HXmdei15lf15fXnteZ16nXmV/XqdeZ16nXmV/XqdeR16onLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn15DXs1/XkdezX9eS17Nf15PXs1/XlNezX9eV17Nf16nXsycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn15Bf15Ff15Jf15Nf15Rf15Vf16knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFvXkV1NTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW9eRXU1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW9eRXU1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsIDogJ0QvTS9ZWVlZJyxcbiAgICAgICAgICAgIGxsIDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsIDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdkZGQsIEQgTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb15TXmdeV150g15HWvl1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vXnteX16gg15HWvl1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvXkdep16LXlF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb15DXqtee15XXnCDXkda+XUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vXkdeZ15XXnV0gZGRkZCBb15TXkNeX16jXldefINeR16nXoteUXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn15HXoteV15MgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfXnNek16DXmSAlcycsXG4gICAgICAgICAgICBzIDogJ9ee16HXpNeoINep16DXmdeV16onLFxuICAgICAgICAgICAgc3MgOiAnJWQg16nXoNeZ15XXqicsXG4gICAgICAgICAgICBtIDogJ9eT16fXlCcsXG4gICAgICAgICAgICBtbSA6ICclZCDXk9en15XXqicsXG4gICAgICAgICAgICBoIDogJ9ep16LXlCcsXG4gICAgICAgICAgICBoaCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn16nXoteq15nXmdedJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg16nXoteV16onO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGQgOiAn15nXldedJyxcbiAgICAgICAgICAgIGRkIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXmdeV157XmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXmdee15nXnSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTSA6ICfXl9eV15PXqScsXG4gICAgICAgICAgICBNTSA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn15fXldeT16nXmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXl9eV15PXqdeZ150nO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHkgOiAn16nXoNeUJyxcbiAgICAgICAgICAgIHl5IDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXqdeg16rXmdeZ150nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyICUgMTAgPT09IDAgJiYgbnVtYmVyICE9PSAxMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdeg15QnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdeg15nXnSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/XkNeX15RcItemfNec16TXoNeUXCLXpnzXkNeX16jXmSDXlNem15TXqNeZ15nXnXzXnNek16DXmSDXlNem15TXqNeZ15nXnXzXnNek16DXldeqINeR15XXp9eofNeR15HXlden16h815HXoteo15EvaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNeQ15fXlFwi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815HXoteo15EpJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfXnNek16DXldeqINeR15XXp9eoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfXkdeR15XXp9eoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn15zXpNeg15RcItemJyA6ICfXnNek16DXmSDXlNem15TXqNeZ15nXnSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ9eQ15fXlFwi16YnIDogJ9eQ15fXqNeZINeU16bXlNeo15nXmdedJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfXkdei16jXkSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBoZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4KWnJyxcbiAgICAgICAgJzInOiAn4KWoJyxcbiAgICAgICAgJzMnOiAn4KWpJyxcbiAgICAgICAgJzQnOiAn4KWqJyxcbiAgICAgICAgJzUnOiAn4KWrJyxcbiAgICAgICAgJzYnOiAn4KWsJyxcbiAgICAgICAgJzcnOiAn4KWtJyxcbiAgICAgICAgJzgnOiAn4KWuJyxcbiAgICAgICAgJzknOiAn4KWvJyxcbiAgICAgICAgJzAnOiAn4KWmJ1xuICAgIH0sXG4gICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4KWnJzogJzEnLFxuICAgICAgICAn4KWoJzogJzInLFxuICAgICAgICAn4KWpJzogJzMnLFxuICAgICAgICAn4KWqJzogJzQnLFxuICAgICAgICAn4KWrJzogJzUnLFxuICAgICAgICAn4KWsJzogJzYnLFxuICAgICAgICAn4KWtJzogJzcnLFxuICAgICAgICAn4KWuJzogJzgnLFxuICAgICAgICAn4KWvJzogJzknLFxuICAgICAgICAn4KWmJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBoaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hpJywge1xuICAgICAgICBtb250aHMgOiAn4KSc4KSo4KS14KSw4KWAX+Ckq+CkvOCksOCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWI4KSyX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+CkuOCljeCkpF/gpLjgpL/gpKTgpK7gpY3gpKzgpLBf4KSF4KSV4KWN4KSf4KWC4KSs4KSwX+CkqOCkteCkruCljeCkrOCksF/gpKbgpL/gpLjgpK7gpY3gpKzgpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+CknOCkqC5f4KSr4KS84KSwLl/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWILl/gpK7gpIhf4KSc4KWC4KSoX+CknOClgeCksi5f4KSF4KSXLl/gpLjgpL/gpKQuX+CkheCkleCljeCkn+Clgi5f4KSo4KS1Ll/gpKbgpL/gpLguJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+CksuCkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4KSw4KS14KS/X+CkuOCli+Ckrl/gpK7gpILgpJfgpLJf4KSs4KWB4KSnX+Ckl+ClgeCksOClgl/gpLbgpYHgpJXgpY3gpLBf4KS24KSo4KS/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgpLBf4KS44KWLX+CkruCkgl/gpKzgpYFf4KSX4KWBX+CktuClgV/gpLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzIOCkrOCknOClhycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgpKzgpJzgpYcnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4KSG4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgpJXgpLJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+CkleCksl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+CkquCkv+Ckm+CksuClh10gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOCkruClh+CkgicsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOCkquCkueCksuClhycsXG4gICAgICAgICAgICBzIDogJ+CkleClgeCkmyDgpLngpYAg4KSV4KWN4KS34KSjJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOCkuOClh+CkleCkguCkoScsXG4gICAgICAgICAgICBtIDogJ+Ckj+CklSDgpK7gpL/gpKjgpJ8nLFxuICAgICAgICAgICAgbW0gOiAnJWQg4KSu4KS/4KSo4KSfJyxcbiAgICAgICAgICAgIGggOiAn4KSP4KSVIOCkmOCkguCkn+CkvicsXG4gICAgICAgICAgICBoaCA6ICclZCDgpJjgpILgpJ/gpYcnLFxuICAgICAgICAgICAgZCA6ICfgpI/gpJUg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOCkpuCkv+CkqCcsXG4gICAgICAgICAgICBNIDogJ+Ckj+CklSDgpK7gpLngpYDgpKjgpYcnLFxuICAgICAgICAgICAgTU0gOiAnJWQg4KSu4KS54KWA4KSo4KWHJyxcbiAgICAgICAgICAgIHkgOiAn4KSP4KSVIOCkteCksOCljeCktycsXG4gICAgICAgICAgICB5eSA6ICclZCDgpLXgpLDgpY3gpLcnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIEhpbmRpIG5vdGF0aW9uIGZvciBtZXJpZGllbXMgYXJlIHF1aXRlIGZ1enp5IGluIHByYWN0aWNlLiBXaGlsZSB0aGVyZSBleGlzdHNcbiAgICAgICAgLy8gYSByaWdpZCBub3Rpb24gb2YgYSAnUGFoYXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIEhpbmRpLlxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4KSw4KS+4KSkfOCkuOClgeCkrOCkuXzgpKbgpYvgpKrgpLngpLB84KS24KS+4KSuLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CksOCkvuCkpCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkuOClgeCkrOCkuScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKbgpYvgpKrgpLngpLAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CktuCkvuCkricpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSkJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpYHgpKzgpLknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCli+CkquCkueCksCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS24KS+4KSuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBoaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkbmEgbWludXRhJyA6ICdqZWRuZSBtaW51dGUnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZGFuIHNhdCcgOiAnamVkbm9nIHNhdGEnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW4nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlYyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2EnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGhyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaHInLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ3NpamXEjW5qYV92ZWxqYcSNZV9vxb51amthX3RyYXZuamFfc3ZpYm5qYV9saXBuamFfc3JwbmphX2tvbG92b3phX3J1am5hX2xpc3RvcGFkYV9zdHVkZW5vZ2FfcHJvc2luY2EnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAnc2lqZcSNYW5qX3ZlbGphxI1hX2/FvnVqYWtfdHJhdmFual9zdmliYW5qX2xpcGFual9zcnBhbmpfa29sb3Zvel9ydWphbl9saXN0b3BhZF9zdHVkZW5pX3Byb3NpbmFjJy5zcGxpdCgnXycpXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ3Npai5fdmVsai5fb8W+dS5fdHJhLl9zdmkuX2xpcC5fc3JwLl9rb2wuX3J1ai5fbGlzLl9zdHUuX3Byby4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ25lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSAgOiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgIDogJ1tzdXRyYSB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdbanXEjWVyIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbHVdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsaV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCAgIDogJ3ByaWplICVzJyxcbiAgICAgICAgICAgIHMgICAgICA6ICdwYXIgc2VrdW5kaScsXG4gICAgICAgICAgICBzcyAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtICAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoICAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkICAgICAgOiAnZGFuJyxcbiAgICAgICAgICAgIGRkICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gICAgICA6ICdtamVzZWMnLFxuICAgICAgICAgICAgTU0gICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSAgICAgIDogJ2dvZGludScsXG4gICAgICAgICAgICB5eSAgICAgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBocjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHdlZWtFbmRpbmdzID0gJ3Zhc8Ohcm5hcCBow6l0ZsWRbiBrZWRkZW4gc3plcmTDoW4gY3PDvHTDtnJ0w7Zrw7ZuIHDDqW50ZWtlbiBzem9tYmF0b24nLnNwbGl0KCcgJyk7XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgbnVtID0gbnVtYmVyO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4KSA/ICduw6low6FueSBtw6Fzb2RwZXJjJyA6ICduw6low6FueSBtw6Fzb2RwZXJjZSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4KSA/ICcgbcOhc29kcGVyYycgOiAnIG3DoXNvZHBlcmNlJztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBwZXJjJyA6ICcgcGVyY2UnKTtcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIHBlcmMnIDogJyBwZXJjZScpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOzcmEnIDogJyDDs3LDoWphJyk7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDs3JhJyA6ICcgw7Nyw6FqYScpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIG5hcCcgOiAnIG5hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBuYXAnIDogJyBuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIGjDs25hcCcgOiAnIGjDs25hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBow7NuYXAnIDogJyBow7NuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOpdicgOiAnIMOpdmUnKTtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOpdicgOiAnIMOpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdlZWsoaXNGdXR1cmUpIHtcbiAgICAgICAgcmV0dXJuIChpc0Z1dHVyZSA/ICcnIDogJ1ttw7psdF0gJykgKyAnWycgKyB3ZWVrRW5kaW5nc1t0aGlzLmRheSgpXSArICddIExUWy1rb3JdJztcbiAgICB9XG5cbiAgICB2YXIgaHUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdodScsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnXDoXJfZmVicnXDoXJfbcOhcmNpdXNfw6FwcmlsaXNfbcOhanVzX2rDum5pdXNfasO6bGl1c19hdWd1c3p0dXNfc3plcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tw6FyY1/DoXByX23DoWpfasO6bl9qw7psX2F1Z19zemVwdF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAndmFzw6FybmFwX2jDqXRmxZFfa2VkZF9zemVyZGFfY3PDvHTDtnJ0w7ZrX3DDqW50ZWtfc3pvbWJhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICd2YXNfaMOpdF9rZWRkX3N6ZV9jc8O8dF9ww6luX3N6bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAndl9oX2tfc3plX2NzX3Bfc3pvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLk1NLkRELicsXG4gICAgICAgICAgICBMTCA6ICdZWVlZLiBNTU1NIEQuJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZLiBNTU1NIEQuIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZLiBNTU1NIEQuLCBkZGRkIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9kZXxkdS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMSkudG9Mb3dlckNhc2UoKSA9PT0gJ3UnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA9PT0gdHJ1ZSA/ICdkZScgOiAnREUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA9PT0gdHJ1ZSA/ICdkdScgOiAnRFUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW21hXSBMVFsta29yXScsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tob2xuYXBdIExUWy1rb3JdJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3ZWVrLmNhbGwodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSA6ICdbdGVnbmFwXSBMVFsta29yXScsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2Vlay5jYWxsKHRoaXMsIGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgbcO6bHZhJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMnLFxuICAgICAgICAgICAgcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBoeUFtID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaHktYW0nLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9Ww1bjWgtW21b7VodaA1atf1oPVpdW/1oDVvtWh1oDVq1/VtNWh1oDVv9WrX9Wh1brWgNWr1azVq1/VtNWh1bXVq9W91atf1bDVuNaC1bbVq9W91atf1bDVuNaC1azVq9W91atf1oXVo9W41b3Vv9W41b3Vq1/VvdWl1brVv9Wl1bTVotWl1oDVq1/VsNW41a/Vv9Wl1bTVotWl1oDVq1/VttW41bXVpdW01aLVpdaA1atf1aTVpdWv1b/VpdW01aLVpdaA1asnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn1bDVuNaC1bbVvtWh1oBf1oPVpdW/1oDVvtWh1oBf1bTVodaA1b9f1aHVutaA1avVrF/VtNWh1bXVq9W9X9Ww1bjWgtW21avVvV/VsNW41oLVrNWr1b1f1oXVo9W41b3Vv9W41b1f1b3VpdW61b/VpdW01aLVpdaAX9Ww1bjVr9W/1aXVtNWi1aXWgF/VttW41bXVpdW01aLVpdaAX9Wk1aXVr9W/1aXVtNWi1aXWgCcuc3BsaXQoJ18nKVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICfVsNW21b5f1oPVv9aAX9W01oDVv1/VodW61oBf1bTVtdW9X9Ww1bbVvV/VsNWs1b1f1oXVo9W9X9W91brVv1/VsNWv1b9f1bbVtNWiX9Wk1a/Vvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn1a/Vq9aA1aHVr9WrX9Wl1oDVr9W41oLVt9Wh1aLVqdWrX9Wl1oDVpdaE1bfVodWi1anVq1/VudW41oDVpdaE1bfVodWi1anVq1/VsNWr1bbVo9W31aHVotWp1atf1bjWgtaA1aLVodWpX9W31aHVotWh1aknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn1a/WgNWvX9Wl1oDVr1/VpdaA1oRf1bnWgNaEX9Ww1bbVo1/VuNaC1oDVol/Vt9Wi1aknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9Wv1oDVr1/VpdaA1a9f1aXWgNaEX9W51oDWhF/VsNW21aNf1bjWgtaA1aJf1bfVotWpJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVkg1akuJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSDVqS4sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkg1akuLCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Wh1bXVvdaF1oBdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb1b7VodWy1ahdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb1aXWgNWl1a9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFvWhdaA1agg1arVodW01ahdIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW9Wh1bbWgdWh1a5dIGRkZGQgW9aF1oDVqCDVqtWh1bTVqF0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzINWw1aXVv9W4JyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg1aHVvNWh1bsnLFxuICAgICAgICAgICAgcyA6ICfVtNWrINaE1aHVttWrINW+1aHVtdaA1a/VtdWh1bYnLFxuICAgICAgICAgICAgc3MgOiAnJWQg1b7VodW11oDVr9W11aHVticsXG4gICAgICAgICAgICBtIDogJ9aA1bjVutWlJyxcbiAgICAgICAgICAgIG1tIDogJyVkINaA1bjVutWlJyxcbiAgICAgICAgICAgIGggOiAn1arVodW0JyxcbiAgICAgICAgICAgIGhoIDogJyVkINWq1aHVtCcsXG4gICAgICAgICAgICBkIDogJ9aF1oAnLFxuICAgICAgICAgICAgZGQgOiAnJWQg1oXWgCcsXG4gICAgICAgICAgICBNIDogJ9Wh1bTVq9W9JyxcbiAgICAgICAgICAgIE1NIDogJyVkINWh1bTVq9W9JyxcbiAgICAgICAgICAgIHkgOiAn1b/VodaA1asnLFxuICAgICAgICAgICAgeXkgOiAnJWQg1b/VodaA1asnXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Vo9Wr1bfVpdaA1b7VoXzVodW81aHVvtW41b/VvtWhfNaB1aXWgNWl1a/VvtWhfNWl1oDVpdWv1bjVtdWh1bYvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijWgdWl1oDVpdWv1b7VoXzVpdaA1aXVr9W41bXVodW2KSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Wj1avVt9Wl1oDVvtWhJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfVodW81aHVvtW41b/VvtWhJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfWgdWl1oDVpdWv1b7VoSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1aXWgNWl1a/VuNW11aHVtic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfXxcXGR7MSwyfS0o1avVtnzWgNWkKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERG8nOlxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Vq9W2JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3WgNWkJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBoeUFtO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaWQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpZCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWd0X1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnTWluZ2d1X1NlbmluX1NlbGFzYV9SYWJ1X0thbWlzX0p1bWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ01pbl9TZW5fU2VsX1JhYl9LYW1fSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnTWdfU25fU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHNpYW5nfHNvcmV8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncGFnaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzaWFuZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29yZScgfHwgbWVyaWRpZW0gPT09ICdtYWxhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BhZ2knO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzaWFuZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NvcmUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21hbGFtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tIYXJpIGluaSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbQmVzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tLZW1hcmluIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtsYWx1IHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyB5YW5nIGxhbHUnLFxuICAgICAgICAgICAgcyA6ICdiZWJlcmFwYSBkZXRpaycsXG4gICAgICAgICAgICBzcyA6ICclZCBkZXRpaycsXG4gICAgICAgICAgICBtIDogJ3NlbWVuaXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWVuaXQnLFxuICAgICAgICAgICAgaCA6ICdzZWphbScsXG4gICAgICAgICAgICBoaCA6ICclZCBqYW0nLFxuICAgICAgICAgICAgZCA6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQgOiAnJWQgaGFyaScsXG4gICAgICAgICAgICBNIDogJ3NlYnVsYW4nLFxuICAgICAgICAgICAgTU0gOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeSA6ICdzZXRhaHVuJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHRhaHVuJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgaWYgKG4gJSAxMDAgPT09IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChuICUgMTAgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbm9ra3JhciBzZWvDum5kdXInIDogJ25va2tydW0gc2Vrw7puZHVtJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3Nla8O6bmR1cicgOiAnc2Vrw7puZHVtJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnc2Vrw7puZGEnO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbcOtbsO6dGEnIDogJ23DrW7DunR1JztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ23DrW7DunR1cicgOiAnbcOtbsO6dHVtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOtbsO6dGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DrW7DunR1JztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2tsdWtrdXN0dW5kaXInIDogJ2tsdWtrdXN0dW5kdW0nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdrbHVra3VzdHVuZCc7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RhZ3VyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ2RhZycgOiAnZGVnaSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2RhZ2FyJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ2RhZ2EnIDogJ2TDtmd1bScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2RhZ3VyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdkYWcnIDogJ2RlZ2knKTtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnbcOhbnXDsHVyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ23DoW51w7AnIDogJ23DoW51w7BpJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOhbnXDsGlyJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ23DoW51w7BpJyA6ICdtw6FudcOwdW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw6FudcOwdXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ23DoW51w7AnIDogJ23DoW51w7BpJyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcmknO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnw6FyJyA6ICfDoXJ1bScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnw6FyJyA6ICfDoXJpJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpcycsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbsO6YXJfZmVicsO6YXJfbWFyc19hcHLDrWxfbWHDrV9qw7puw61fasO6bMOtX8OhZ8O6c3Rfc2VwdGVtYmVyX29rdMOzYmVyX27Ds3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21hw61fasO6bl9qw7psX8OhZ8O6X3NlcF9va3RfbsOzdl9kZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ3N1bm51ZGFndXJfbcOhbnVkYWd1cl/DvnJpw7BqdWRhZ3VyX21pw7B2aWt1ZGFndXJfZmltbXR1ZGFndXJfZsO2c3R1ZGFndXJfbGF1Z2FyZGFndXInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc3VuX23DoW5fw75yaV9tacOwX2ZpbV9mw7ZzX2xhdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTcOhX8Oecl9NaV9GaV9Gw7ZfTGEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgW2tsLl0gSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBba2wuXSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW8OtIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW8OhIG1vcmd1biBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbw60gZ8OmciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tzw63DsGFzdGFdIGRkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VmdGlyICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnZnlyaXIgJXMgc8Otw7BhbicsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogJ2tsdWtrdXN0dW5kJyxcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBpdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2l0Jywge1xuICAgICAgICBtb250aHMgOiAnZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnZG9tZW5pY2FfbHVuZWTDrF9tYXJ0ZWTDrF9tZXJjb2xlZMOsX2dpb3ZlZMOsX3ZlbmVyZMOsX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX21lX2dpX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW09nZ2kgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEb21hbmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthbGxlXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0llcmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbGEgc2NvcnNhXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgICAgIHJldHVybiAoKC9eWzAtOV0uKyQvKS50ZXN0KHMpID8gJ3RyYScgOiAnaW4nKSArICcgJyArIHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdCA6ICclcyBmYScsXG4gICAgICAgICAgICBzIDogJ2FsY3VuaSBzZWNvbmRpJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGknLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGggOiAndW5cXCdvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgb3JlJyxcbiAgICAgICAgICAgIGQgOiAndW4gZ2lvcm5vJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGdpb3JuaScsXG4gICAgICAgICAgICBNIDogJ3VuIG1lc2UnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzaScsXG4gICAgICAgICAgICB5IDogJ3VuIGFubm8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5uaSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGl0Q2ggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpdC1jaCcsIHtcbiAgICAgICAgbW9udGhzIDogJ2dlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ2RvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkb19sdV9tYV9tZV9naV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tPZ2dpIGFsbGVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRG9tYW5pIGFsbGVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJZXJpIGFsbGVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbG8gc2NvcnNvXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCgvXlswLTldLiskLykudGVzdChzKSA/ICd0cmEnIDogJ2luJykgKyAnICcgKyBzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgZmEnLFxuICAgICAgICAgICAgcyA6ICdhbGN1bmkgc2Vjb25kaScsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRpJyxcbiAgICAgICAgICAgIG0gOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoIDogJ3VuXFwnb3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIG9yZScsXG4gICAgICAgICAgICBkIDogJ3VuIGdpb3JubycsXG4gICAgICAgICAgICBkZCA6ICclZCBnaW9ybmknLFxuICAgICAgICAgICAgTSA6ICd1biBtZXNlJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2knLFxuICAgICAgICAgICAgeSA6ICd1biBhbm5vJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFubmknXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXRDaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGphID0gbW9tZW50LmRlZmluZUxvY2FsZSgnamEnLCB7XG4gICAgICAgIG1vbnRocyA6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+aXpeabnOaXpV/mnIjmm5zml6Vf54Gr5puc5pelX+awtOabnOaXpV/mnKjmm5zml6Vf6YeR5puc5pelX+Wcn+abnOaXpScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+aXpV/mnIhf54GrX+awtF/mnKhf6YeRX+Wcnycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWeW5tE3mnIhE5pelIGRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbCA6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIGxsIDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGwgOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnWVlZWeW5tE3mnIhE5pelKGRkZCkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/ljYjliY185Y2I5b6ML2ksXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+WNiOW+jCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Y2I5YmNJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfljYjlvownO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+S7iuaXpV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb5piO5pelXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSA8IHRoaXMud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+adpemAsV1kZGRkIExUJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vmmKjml6VdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLndlZWsoKSA8IG5vdy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5YWI6YCxXWRkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3ml6UvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXPlvownLFxuICAgICAgICAgICAgcGFzdCA6ICclc+WJjScsXG4gICAgICAgICAgICBzIDogJ+aVsOenkicsXG4gICAgICAgICAgICBzcyA6ICclZOenkicsXG4gICAgICAgICAgICBtIDogJzHliIYnLFxuICAgICAgICAgICAgbW0gOiAnJWTliIYnLFxuICAgICAgICAgICAgaCA6ICcx5pmC6ZaTJyxcbiAgICAgICAgICAgIGhoIDogJyVk5pmC6ZaTJyxcbiAgICAgICAgICAgIGQgOiAnMeaXpScsXG4gICAgICAgICAgICBkZCA6ICclZOaXpScsXG4gICAgICAgICAgICBNIDogJzHjg7bmnIgnLFxuICAgICAgICAgICAgTU0gOiAnJWTjg7bmnIgnLFxuICAgICAgICAgICAgeSA6ICcx5bm0JyxcbiAgICAgICAgICAgIHl5IDogJyVk5bm0J1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gamE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBqdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2p2Jywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm9wZW1iZXJfRGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3NfU2VwX09rdF9Ob3BfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdNaW5nZ3VfU2VuZW5fU2Vsb3NvX1JlYnVfS2VtaXNfSmVtdXdhaF9TZXB0dScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdNaW5fU2VuX1NlbF9SZWJfS2VtX0plbV9TZXAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ01nX1NuX1NsX1JiX0ttX0ptX1NwJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZW5qaW5nfHNpeWFuZ3xzb250ZW58bmRhbHUvLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAnZW5qaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NpeWFuZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29udGVuJyB8fCBtZXJpZGllbSA9PT0gJ25kYWx1Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZW5qaW5nJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc2l5YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc29udGVuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICduZGFsdSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbRGludGVuIHB1bmlrbyBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbTWJlbmphbmcgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tLYWxhIHdpbmdpIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtrZXBlbmdrZXIgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd3b250ZW4gaW5nICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgaW5na2FuZyBrZXBlbmdrZXInLFxuICAgICAgICAgICAgcyA6ICdzYXdldGF3aXMgZGV0aWsnLFxuICAgICAgICAgICAgc3MgOiAnJWQgZGV0aWsnLFxuICAgICAgICAgICAgbSA6ICdzZXR1bmdnYWwgbWVuaXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWVuaXQnLFxuICAgICAgICAgICAgaCA6ICdzZXR1bmdnYWwgamFtJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGphbScsXG4gICAgICAgICAgICBkIDogJ3NlZGludGVuJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRpbnRlbicsXG4gICAgICAgICAgICBNIDogJ3Nld3VsYW4nLFxuICAgICAgICAgICAgTU0gOiAnJWQgd3VsYW4nLFxuICAgICAgICAgICAgeSA6ICdzZXRhdW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgdGF1bidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ganY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBrYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2thJywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn4YOY4YOQ4YOc4YOV4YOQ4YOg4YOYX+GDl+GDlOGDkeGDlOGDoOGDleGDkOGDmuGDmF/hg5vhg5Dhg6Dhg6Lhg5hf4YOQ4YOe4YOg4YOY4YOa4YOYX+GDm+GDkOGDmOGDoeGDmF/hg5jhg5Xhg5zhg5jhg6Hhg5hf4YOY4YOV4YOa4YOY4YOh4YOYX+GDkOGDkuGDleGDmOGDoeGDouGDnV/hg6Hhg5Thg6Xhg6Lhg5Thg5vhg5Hhg5Thg6Dhg5hf4YOd4YOl4YOi4YOd4YOb4YOR4YOU4YOg4YOYX+GDnOGDneGDlOGDm+GDkeGDlOGDoOGDmF/hg5Phg5Thg5nhg5Thg5vhg5Hhg5Thg6Dhg5gnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBmb3JtYXQ6ICfhg5jhg5Dhg5zhg5Xhg5Dhg6Dhg6Ff4YOX4YOU4YOR4YOU4YOg4YOV4YOQ4YOa4YOhX+GDm+GDkOGDoOGDouGDoV/hg5Dhg57hg6Dhg5jhg5rhg5jhg6Ff4YOb4YOQ4YOY4YOh4YOhX+GDmOGDleGDnOGDmOGDoeGDoV/hg5jhg5Xhg5rhg5jhg6Hhg6Ff4YOQ4YOS4YOV4YOY4YOh4YOi4YOhX+GDoeGDlOGDpeGDouGDlOGDm+GDkeGDlOGDoOGDoV/hg53hg6Xhg6Lhg53hg5vhg5Hhg5Thg6Dhg6Ff4YOc4YOd4YOU4YOb4YOR4YOU4YOg4YOhX+GDk+GDlOGDmeGDlOGDm+GDkeGDlOGDoOGDoScuc3BsaXQoJ18nKVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICfhg5jhg5Dhg5xf4YOX4YOU4YORX+GDm+GDkOGDoF/hg5Dhg57hg6Bf4YOb4YOQ4YOYX+GDmOGDleGDnF/hg5jhg5Xhg5pf4YOQ4YOS4YOVX+GDoeGDlOGDpV/hg53hg6Xhg6Jf4YOc4YOd4YOUX+GDk+GDlOGDmScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn4YOZ4YOV4YOY4YOg4YOQX+GDneGDoOGDqOGDkOGDkeGDkOGDl+GDmF/hg6Hhg5Dhg5vhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOd4YOX4YOu4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDruGDo+GDl+GDqOGDkOGDkeGDkOGDl+GDmF/hg57hg5Dhg6Dhg5Dhg6Hhg5nhg5Thg5Xhg5hf4YOo4YOQ4YOR4YOQ4YOX4YOYJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgZm9ybWF0OiAn4YOZ4YOV4YOY4YOg4YOQ4YOhX+GDneGDoOGDqOGDkOGDkeGDkOGDl+GDoV/hg6Hhg5Dhg5vhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOd4YOX4YOu4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDruGDo+GDl+GDqOGDkOGDkeGDkOGDl+GDoV/hg57hg5Dhg6Dhg5Dhg6Hhg5nhg5Thg5Xhg6Ff4YOo4YOQ4YOR4YOQ4YOX4YOhJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC8o4YOs4YOY4YOc4YOQfOGDqOGDlOGDm+GDk+GDlOGDkikvXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4YOZ4YOV4YOYX+GDneGDoOGDqF/hg6Hhg5Dhg5tf4YOd4YOX4YOuX+GDruGDo+GDl1/hg57hg5Dhg6Bf4YOo4YOQ4YORJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfhg5nhg5Vf4YOd4YOgX+GDoeGDkF/hg53hg5df4YOu4YOjX+GDnuGDkF/hg6jhg5AnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4YOT4YOm4YOU4YOhXSBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vhg67hg5Xhg5Dhg5pdIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+GDkuGDo+GDqOGDmOGDnF0gTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+GDqOGDlOGDm+GDk+GDlOGDkl0gZGRkZCBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4YOs4YOY4YOc4YOQXSBkZGRkIExULeGDluGDlCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgICAgIHJldHVybiAoLyjhg6zhg5Dhg5vhg5h84YOs4YOj4YOX4YOYfOGDoeGDkOGDkOGDl+GDmHzhg6zhg5Thg5rhg5gpLykudGVzdChzKSA/XG4gICAgICAgICAgICAgICAgICAgIHMucmVwbGFjZSgv4YOYJC8sICfhg6jhg5gnKSA6XG4gICAgICAgICAgICAgICAgICAgIHMgKyAn4YOo4YOYJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0IDogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoKC8o4YOs4YOQ4YOb4YOYfOGDrOGDo+GDl+GDmHzhg6Hhg5Dhg5Dhg5fhg5h84YOT4YOm4YOUfOGDl+GDleGDlCkvKS50ZXN0KHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoLyjhg5h84YOUKSQvLCAn4YOY4YOhIOGDrOGDmOGDnCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKC/hg6zhg5Thg5rhg5gvKS50ZXN0KHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL+GDrOGDlOGDmuGDmCQvLCAn4YOs4YOa4YOY4YOhIOGDrOGDmOGDnCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzIDogJ+GDoOGDkOGDm+GDk+GDlOGDnOGDmOGDm+GDlCDhg6zhg5Dhg5vhg5gnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4YOs4YOQ4YOb4YOYJyxcbiAgICAgICAgICAgIG0gOiAn4YOs4YOj4YOX4YOYJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOGDrOGDo+GDl+GDmCcsXG4gICAgICAgICAgICBoIDogJ+GDoeGDkOGDkOGDl+GDmCcsXG4gICAgICAgICAgICBoaCA6ICclZCDhg6Hhg5Dhg5Dhg5fhg5gnLFxuICAgICAgICAgICAgZCA6ICfhg5Phg6bhg5QnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4YOT4YOm4YOUJyxcbiAgICAgICAgICAgIE0gOiAn4YOX4YOV4YOUJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOGDl+GDleGDlCcsXG4gICAgICAgICAgICB5IDogJ+GDrOGDlOGDmuGDmCcsXG4gICAgICAgICAgICB5eSA6ICclZCDhg6zhg5Thg5rhg5gnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC8wfDEt4YOa4YOYfOGDm+GDlC1cXGR7MSwyfXxcXGR7MSwyfS3hg5QvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct4YOa4YOYJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgobnVtYmVyIDwgMjApIHx8IChudW1iZXIgPD0gMTAwICYmIChudW1iZXIgJSAyMCA9PT0gMCkpIHx8IChudW1iZXIgJSAxMDAgPT09IDApKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfhg5vhg5QtJyArIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLeGDlCc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLFxuICAgICAgICAgICAgZG95IDogN1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMDogJy3RiNGWJyxcbiAgICAgICAgMTogJy3RiNGWJyxcbiAgICAgICAgMjogJy3RiNGWJyxcbiAgICAgICAgMzogJy3RiNGWJyxcbiAgICAgICAgNDogJy3RiNGWJyxcbiAgICAgICAgNTogJy3RiNGWJyxcbiAgICAgICAgNjogJy3RiNGLJyxcbiAgICAgICAgNzogJy3RiNGWJyxcbiAgICAgICAgODogJy3RiNGWJyxcbiAgICAgICAgOTogJy3RiNGLJyxcbiAgICAgICAgMTA6ICct0YjRiycsXG4gICAgICAgIDIwOiAnLdGI0YsnLFxuICAgICAgICAzMDogJy3RiNGLJyxcbiAgICAgICAgNDA6ICct0YjRiycsXG4gICAgICAgIDUwOiAnLdGI0ZYnLFxuICAgICAgICA2MDogJy3RiNGLJyxcbiAgICAgICAgNzA6ICct0YjRlicsXG4gICAgICAgIDgwOiAnLdGI0ZYnLFxuICAgICAgICA5MDogJy3RiNGLJyxcbiAgICAgICAgMTAwOiAnLdGI0ZYnXG4gICAgfTtcblxuICAgIHZhciBrayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2trJywge1xuICAgICAgICBtb250aHMgOiAn0pvQsNKj0YLQsNGAX9Cw0pvQv9Cw0L1f0L3QsNGD0YDRi9C3X9GB05nRg9GW0YBf0LzQsNC80YvRgF/QvNCw0YPRgdGL0Lxf0YjRltC70LTQtV/RgtCw0LzRi9C3X9Kb0YvRgNC60q/QudC10Lpf0pvQsNC30LDQvV/Sm9Cw0YDQsNGI0LBf0LbQtdC70YLQvtKb0YHQsNC9Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfSm9Cw0qNf0LDSm9C/X9C90LDRg1/RgdOZ0YNf0LzQsNC8X9C80LDRg1/RiNGW0Ltf0YLQsNC8X9Kb0YvRgF/Sm9Cw0Ldf0pvQsNGAX9C20LXQuycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn0LbQtdC60YHQtdC90LHRll/QtNKv0LnRgdC10L3QsdGWX9GB0LXQudGB0LXQvdCx0ZZf0YHTmdGA0YHQtdC90LHRll/QsdC10LnRgdC10L3QsdGWX9C20rHQvNCwX9GB0LXQvdCx0ZYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0LbQtdC6X9C00q/QuV/RgdC10Llf0YHTmdGAX9Cx0LXQuV/QttKx0Lxf0YHQtdC9Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQttC6X9C00Llf0YHQuV/RgdGAX9Cx0Llf0LbQvF/RgdC9Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb0JHSr9Cz0ZbQvSDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vQldGA0YLQtdKjINGB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9GB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9Ca0LXRiNC1INGB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vTqNGC0LrQtdC9INCw0L/RgtCw0L3Ri9KjXSBkZGRkIFvRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg0ZbRiNGW0L3QtNC1JyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0LHSsdGA0YvQvScsXG4gICAgICAgICAgICBzIDogJ9Cx0ZbRgNC90LXRiNC1INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzcyA6ICclZCDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbSA6ICfQsdGW0YAg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBtbSA6ICclZCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIGggOiAn0LHRltGAINGB0LDSk9Cw0YInLFxuICAgICAgICAgICAgaGggOiAnJWQg0YHQsNKT0LDRgicsXG4gICAgICAgICAgICBkIDogJ9Cx0ZbRgCDQutKv0L0nLFxuICAgICAgICAgICAgZGQgOiAnJWQg0LrSr9C9JyxcbiAgICAgICAgICAgIE0gOiAn0LHRltGAINCw0LknLFxuICAgICAgICAgICAgTU0gOiAnJWQg0LDQuScsXG4gICAgICAgICAgICB5IDogJ9Cx0ZbRgCDQttGL0LsnLFxuICAgICAgICAgICAgeXkgOiAnJWQg0LbRi9C7J1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNGI0ZZ80YjRiykvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBraztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4Z+hJyxcbiAgICAgICAgJzInOiAn4Z+iJyxcbiAgICAgICAgJzMnOiAn4Z+jJyxcbiAgICAgICAgJzQnOiAn4Z+kJyxcbiAgICAgICAgJzUnOiAn4Z+lJyxcbiAgICAgICAgJzYnOiAn4Z+mJyxcbiAgICAgICAgJzcnOiAn4Z+nJyxcbiAgICAgICAgJzgnOiAn4Z+oJyxcbiAgICAgICAgJzknOiAn4Z+pJyxcbiAgICAgICAgJzAnOiAn4Z+gJ1xuICAgIH0sIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+GfoSc6ICcxJyxcbiAgICAgICAgJ+Gfoic6ICcyJyxcbiAgICAgICAgJ+Gfoyc6ICczJyxcbiAgICAgICAgJ+GfpCc6ICc0JyxcbiAgICAgICAgJ+GfpSc6ICc1JyxcbiAgICAgICAgJ+Gfpic6ICc2JyxcbiAgICAgICAgJ+Gfpyc6ICc3JyxcbiAgICAgICAgJ+GfqCc6ICc4JyxcbiAgICAgICAgJ+GfqSc6ICc5JyxcbiAgICAgICAgJ+GfoCc6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIga20gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrbScsIHtcbiAgICAgICAgbW9udGhzOiAn4Z6Y4Z6A4Z6a4Z62X+GegOGeu+GemOGfkuGel+GfiF/hnpjhnrjhnpPhnrZf4Z6Y4Z+B4Z6f4Z62X+Gep+Gen+Gel+Getl/hnpjhnrfhnpDhnrvhnpPhnrZf4Z6A4Z6A4Z+S4Z6A4Z6K4Z62X+Gen+GeuOGeoOGetl/hnoDhnonhn5LhnonhnrZf4Z6P4Z674Z6b4Z62X+GenOGet+GeheGfkuGehuGet+GegOGetl/hnpLhn5LhnpPhnrwnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4Z6Y4Z6A4Z6a4Z62X+GegOGeu+GemOGfkuGel+GfiF/hnpjhnrjhnpPhnrZf4Z6Y4Z+B4Z6f4Z62X+Gep+Gen+Gel+Getl/hnpjhnrfhnpDhnrvhnpPhnrZf4Z6A4Z6A4Z+S4Z6A4Z6K4Z62X+Gen+GeuOGeoOGetl/hnoDhnonhn5LhnonhnrZf4Z6P4Z674Z6b4Z62X+GenOGet+GeheGfkuGehuGet+GegOGetl/hnpLhn5LhnpPhnrwnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4Z6i4Z624Z6R4Z634Z6P4Z+S4Z6ZX+GeheGfkOGek+GfkuGekV/hnqLhnoThn5LhnoLhnrbhnppf4Z6W4Z674Z6SX+GeluGfkuGemuGeoOGen+GfkuGelOGej+Get+GfjV/hnp/hnrvhnoDhn5Lhnppf4Z6f4Z+F4Z6a4Z+NJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Z6i4Z62X+GehV/hnqJf4Z6WX+GeluGfkuGeml/hnp/hnrtf4Z6fJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+GeouGetl/hnoVf4Z6iX+Gell/hnpbhn5Lhnppf4Z6f4Z67X+Genycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+GeluGfkuGemuGeueGegHzhnpvhn5LhnoThnrbhnoUvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+Gem+GfkuGehOGetuGehSc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfhnpbhn5LhnprhnrnhnoAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+Gem+GfkuGehOGetuGehSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+GekOGfkuGehOGfg+Gek+GfgeGfhyDhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4Z6f4Z+S4Z6i4Z+C4Z6AIOGemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4Z6Y4Z+S4Z6f4Z634Z6b4Z6Y4Z634Z6JIOGemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvhnp/hnpThn5Lhno/hnrbhnqDhn43hnpjhnrvhnpNdIFvhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+GekeGfgOGejycsXG4gICAgICAgICAgICBwYXN0OiAnJXPhnpjhnrvhnpMnLFxuICAgICAgICAgICAgczogJ+GelOGfieGeu+Gek+GfkuGemOGetuGek+GenOGet+Gek+GetuGekeGeuCcsXG4gICAgICAgICAgICBzczogJyVkIOGenOGet+Gek+GetuGekeGeuCcsXG4gICAgICAgICAgICBtOiAn4Z6Y4Z694Z6Z4Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIGg6ICfhnpjhnr3hnpnhnpjhn4nhn4ThnoQnLFxuICAgICAgICAgICAgaGg6ICclZCDhnpjhn4nhn4ThnoQnLFxuICAgICAgICAgICAgZDogJ+GemOGeveGemeGekOGfkuGehOGfgycsXG4gICAgICAgICAgICBkZDogJyVkIOGekOGfkuGehOGfgycsXG4gICAgICAgICAgICBNOiAn4Z6Y4Z694Z6Z4Z6B4Z+CJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Z6B4Z+CJyxcbiAgICAgICAgICAgIHk6ICfhnpjhnr3hnpnhnobhn5LhnpPhnrbhn4YnLFxuICAgICAgICAgICAgeXk6ICclZCDhnobhn5LhnpPhnrbhn4YnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAv4Z6R4Z64XFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsIDogJ+GekeGeuCVkJyxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+GfoeGfouGfo+GfpOGfpeGfpuGfp+GfqOGfqeGfoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBrbTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4LOnJyxcbiAgICAgICAgJzInOiAn4LOoJyxcbiAgICAgICAgJzMnOiAn4LOpJyxcbiAgICAgICAgJzQnOiAn4LOqJyxcbiAgICAgICAgJzUnOiAn4LOrJyxcbiAgICAgICAgJzYnOiAn4LOsJyxcbiAgICAgICAgJzcnOiAn4LOtJyxcbiAgICAgICAgJzgnOiAn4LOuJyxcbiAgICAgICAgJzknOiAn4LOvJyxcbiAgICAgICAgJzAnOiAn4LOmJ1xuICAgIH0sXG4gICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4LOnJzogJzEnLFxuICAgICAgICAn4LOoJzogJzInLFxuICAgICAgICAn4LOpJzogJzMnLFxuICAgICAgICAn4LOqJzogJzQnLFxuICAgICAgICAn4LOrJzogJzUnLFxuICAgICAgICAn4LOsJzogJzYnLFxuICAgICAgICAn4LOtJzogJzcnLFxuICAgICAgICAn4LOuJzogJzgnLFxuICAgICAgICAn4LOvJzogJzknLFxuICAgICAgICAn4LOmJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBrbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2tuJywge1xuICAgICAgICBtb250aHMgOiAn4LKc4LKo4LK14LKw4LK/X+Cyq+CzhuCyrOCzjeCysOCyteCysOCyv1/gsq7gsr7gsrDgs43gsprgs41f4LKP4LKq4LON4LKw4LK/4LKy4LONX+CyruCzhuCzlV/gspzgs4Lgsqjgs41f4LKc4LOB4LKy4LOG4LOWX+CyhuCyl+CyuOCzjeCyn+CzjV/gsrjgs4bgsqrgs43gsp/gs4bgsoLgsqzgsrDgs41f4LKF4LKV4LON4LKf4LOG4LOC4LOV4LKs4LKw4LONX+CyqOCyteCzhuCyguCyrOCysOCzjV/gsqHgsr/gsrjgs4bgsoLgsqzgsrDgs40nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+CynOCyqF/gsqvgs4bgsqzgs43gsrBf4LKu4LK+4LKw4LON4LKa4LONX+Cyj+CyquCzjeCysOCyv+CysuCzjV/gsq7gs4bgs5Vf4LKc4LOC4LKo4LONX+CynOCzgeCysuCzhuCzll/gsobgspfgsrjgs43gsp/gs41f4LK44LOG4LKq4LON4LKf4LOG4LKCX+CyheCyleCzjeCyn+CzhuCzguCzlV/gsqjgsrXgs4bgsoJf4LKh4LK/4LK44LOG4LKCJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgsq3gsr7gsqjgs4HgsrXgsr7gsrBf4LK44LOG4LOC4LOV4LKu4LK14LK+4LKwX+CyruCyguCyl+Cys+CyteCyvuCysF/gsqzgs4HgsqfgsrXgsr7gsrBf4LKX4LOB4LKw4LOB4LK14LK+4LKwX+CytuCzgeCyleCzjeCysOCyteCyvuCysF/gsrbgsqjgsr/gsrXgsr7gsrAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4LKt4LK+4LKo4LOBX+CyuOCzhuCzguCzleCyrl/gsq7gsoLgspfgsrNf4LKs4LOB4LKnX+Cyl+CzgeCysOCzgV/gsrbgs4HgspXgs43gsrBf4LK24LKo4LK/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgsq3gsr5f4LK44LOG4LOC4LOVX+CyruCygl/gsqzgs4Ff4LKX4LOBX+CytuCzgV/gsrYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgsofgsoLgsqbgs4FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CyqOCyvuCys+Czhl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4LKo4LK/4LKo4LON4LKo4LOGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4LKV4LOG4LOC4LKo4LOG4LKvXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4LKo4LKC4LKk4LKwJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4LK54LK/4LKC4LKm4LOGJyxcbiAgICAgICAgICAgIHMgOiAn4LKV4LOG4LKy4LK14LOBIOCyleCzjeCyt+Cyo+Cyl+Cys+CzgScsXG4gICAgICAgICAgICBzcyA6ICclZCDgsrjgs4bgspXgs4bgsoLgsqHgs4HgspfgsrPgs4EnLFxuICAgICAgICAgICAgbSA6ICfgspLgsoLgsqbgs4Eg4LKo4LK/4LKu4LK/4LK3JyxcbiAgICAgICAgICAgIG1tIDogJyVkIOCyqOCyv+CyruCyv+CytycsXG4gICAgICAgICAgICBoIDogJ+CykuCyguCypuCzgSDgspfgsoLgsp/gs4YnLFxuICAgICAgICAgICAgaGggOiAnJWQg4LKX4LKC4LKf4LOGJyxcbiAgICAgICAgICAgIGQgOiAn4LKS4LKC4LKm4LOBIOCypuCyv+CyqCcsXG4gICAgICAgICAgICBkZCA6ICclZCDgsqbgsr/gsqgnLFxuICAgICAgICAgICAgTSA6ICfgspLgsoLgsqbgs4Eg4LKk4LK/4LKC4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCypOCyv+CyguCyl+Cys+CzgScsXG4gICAgICAgICAgICB5IDogJ+CykuCyguCypuCzgSDgsrXgsrDgs43gsrcnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4LK14LKw4LON4LK3J1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4LOn4LOo4LOp4LOq4LOr4LOs4LOt4LOu4LOv4LOmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LKw4LK+4LKk4LON4LKw4LK/fOCyrOCzhuCys+Cyv+Cyl+CzjeCyl+Czhnzgsq7gsqfgs43gsq/gsr7gsrngs43gsqh84LK44LKC4LKc4LOGLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CysOCyvuCypOCzjeCysOCyvycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CyrOCzhuCys+Cyv+Cyl+CzjeCyl+CzhicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsq7gsqfgs43gsq/gsr7gsrngs43gsqgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CyuOCyguCynOCzhicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKw4LK+4LKk4LON4LKw4LK/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsqzgs4bgsrPgsr/gspfgs43gspfgs4YnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CyruCyp+CzjeCyr+CyvuCyueCzjeCyqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LK44LKC4LKc4LOGJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsrDgsr7gsqTgs43gsrDgsr8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o4LKo4LOG4LOVKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+CyqOCzhuCzlSc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGtuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIga28gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrbycsIHtcbiAgICAgICAgbW9udGhzIDogJzHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICcx7JuUXzLsm5RfM+yblF807JuUXzXsm5RfNuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn7J287JqU7J28X+yblOyalOydvF/tmZTsmpTsnbxf7IiY7JqU7J28X+uqqeyalOydvF/quIjsmpTsnbxf7Yag7JqU7J28Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+ydvF/sm5Rf7ZmUX+yImF/rqqlf6riIX+2GoCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS5NTS5ERC4nLFxuICAgICAgICAgICAgTEwgOiAnWVlZWeuFhCBNTU1NIETsnbwnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVnrhYQgTU1NTSBE7J28IEEgaDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVnrhYQgTU1NTSBE7J28IGRkZGQgQSBoOm1tJyxcbiAgICAgICAgICAgIGwgOiAnWVlZWS5NTS5ERC4nLFxuICAgICAgICAgICAgbGwgOiAnWVlZWeuFhCBNTU1NIETsnbwnLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVnrhYQgTU1NTSBE7J28IEEgaDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ1lZWVnrhYQgTU1NTSBE7J28IGRkZGQgQSBoOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAn7Jik64qYIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAn64K07J28IExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICfslrTsoJwgTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAn7KeA64Kc7KO8IGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIO2bhCcsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOyghCcsXG4gICAgICAgICAgICBzIDogJ+uqhyDstIgnLFxuICAgICAgICAgICAgc3MgOiAnJWTstIgnLFxuICAgICAgICAgICAgbSA6ICcx67aEJyxcbiAgICAgICAgICAgIG1tIDogJyVk67aEJyxcbiAgICAgICAgICAgIGggOiAn7ZWcIOyLnOqwhCcsXG4gICAgICAgICAgICBoaCA6ICclZOyLnOqwhCcsXG4gICAgICAgICAgICBkIDogJ+2VmOujqCcsXG4gICAgICAgICAgICBkZCA6ICclZOydvCcsXG4gICAgICAgICAgICBNIDogJ+2VnCDri6wnLFxuICAgICAgICAgICAgTU0gOiAnJWTri6wnLFxuICAgICAgICAgICAgeSA6ICfsnbwg64WEJyxcbiAgICAgICAgICAgIHl5IDogJyVk64WEJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9KOydvHzsm5R87KO8KS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfsnbwnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+yblCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn7KO8JztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlIDogL+yYpOyghHzsmKTtm4QvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4gPT09ICfsmKTtm4QnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzVXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIDwgMTIgPyAn7Jik7KCEJyA6ICfsmKTtm4QnO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga287XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ9mhJyxcbiAgICAgICAgJzInOiAn2aInLFxuICAgICAgICAnMyc6ICfZoycsXG4gICAgICAgICc0JzogJ9mkJyxcbiAgICAgICAgJzUnOiAn2aUnLFxuICAgICAgICAnNic6ICfZpicsXG4gICAgICAgICc3JzogJ9mnJyxcbiAgICAgICAgJzgnOiAn2agnLFxuICAgICAgICAnOSc6ICfZqScsXG4gICAgICAgICcwJzogJ9mgJ1xuICAgIH0sIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAn2aInOiAnMicsXG4gICAgICAgICfZoyc6ICczJyxcbiAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAn2aUnOiAnNScsXG4gICAgICAgICfZpic6ICc2JyxcbiAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAn2agnOiAnOCcsXG4gICAgICAgICfZqSc6ICc5JyxcbiAgICAgICAgJ9mgJzogJzAnXG4gICAgfSxcbiAgICBtb250aHMgPSBbXG4gICAgICAgICfaqdin2YbZiNmG24wg2K/ZiNmI25XZhScsXG4gICAgICAgICfYtNmI2KjYp9iqJyxcbiAgICAgICAgJ9im2KfYstin2LEnLFxuICAgICAgICAn2YbbjNiz2KfZhicsXG4gICAgICAgICfYptin24zYp9ixJyxcbiAgICAgICAgJ9it2YjYstuV24zYsdin2YYnLFxuICAgICAgICAn2KrbldmF2YXZiNiyJyxcbiAgICAgICAgJ9im2KfYqCcsXG4gICAgICAgICfYptuV24zZhNmI2YjZhCcsXG4gICAgICAgICfYqti02LHbjNmG24wg24zbldmD25XZhScsXG4gICAgICAgICfYqti02LHbjNmG24wg2K/ZiNmI25XZhScsXG4gICAgICAgICfZg9in2YbZiNmG24wg24zbldqp25XZhSdcbiAgICBdO1xuXG5cbiAgICB2YXIga3UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrdScsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXMgOiAn24zZh+KAjNmD2LTZh+KAjNmF2YXZh+KAjF/Yr9mI2YjYtNmH4oCM2YXZhdmH4oCMX9iz247YtNmH4oCM2YXZhdmH4oCMX9qG2YjYp9ix2LTZh+KAjNmF2YXZh+KAjF/ZvtuO2YbYrNi02YfigIzZhdmF2YfigIxf2YfZh+KAjNuM2YbbjF/YtNmH4oCM2YXZhdmH4oCMJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9uM2YfigIzZg9i02YfigIzZhV/Yr9mI2YjYtNmH4oCM2YVf2LPbjti02YfigIzZhV/ahtmI2KfYsdi02YfigIzZhV/ZvtuO2YbYrNi02YfigIzZhV/Zh9mH4oCM24zZhtuMX9i02YfigIzZhdmF2YfigIwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9uMX9ivX9izX9qGX9m+X9mHX9i0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YptuO2YjYp9ix2YfigIx82KjZh+KAjNuM2KfZhtuMLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL9im247ZiNin2LHZh+KAjC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KjZh+KAjNuM2KfZhtuMJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYptuO2YjYp9ix2YfigIwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9im2YfigIzZhdix24Yg2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9io2YfigIzbjNin2YbbjCDZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9iv2YjbjtmG244g2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW9mD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn2YTZh+KAjCAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzJyxcbiAgICAgICAgICAgIHMgOiAn2obZh+KAjNmG2K8g2obYsdmD2YfigIzbjNmH4oCM2YMnLFxuICAgICAgICAgICAgc3MgOiAn2obYsdmD2YfigIwgJWQnLFxuICAgICAgICAgICAgbSA6ICfbjNmH4oCM2YMg2K7ZiNmE2YfigIzZgycsXG4gICAgICAgICAgICBtbSA6ICclZCDYrtmI2YTZh+KAjNmDJyxcbiAgICAgICAgICAgIGggOiAn24zZh+KAjNmDINmD2KfYqtqY2YXbjtixJyxcbiAgICAgICAgICAgIGhoIDogJyVkINmD2KfYqtqY2YXbjtixJyxcbiAgICAgICAgICAgIGQgOiAn24zZh+KAjNmDINqV24bamCcsXG4gICAgICAgICAgICBkZCA6ICclZCDalduG2pgnLFxuICAgICAgICAgICAgTSA6ICfbjNmH4oCM2YMg2YXYp9mG2q8nLFxuICAgICAgICAgICAgTU0gOiAnJWQg2YXYp9mG2q8nLFxuICAgICAgICAgICAgeSA6ICfbjNmH4oCM2YMg2LPYp9q1JyxcbiAgICAgICAgICAgIHl5IDogJyVkINiz2KfatSdcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga3U7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMDogJy3Rh9KvJyxcbiAgICAgICAgMTogJy3Rh9C4JyxcbiAgICAgICAgMjogJy3Rh9C4JyxcbiAgICAgICAgMzogJy3Rh9KvJyxcbiAgICAgICAgNDogJy3Rh9KvJyxcbiAgICAgICAgNTogJy3Rh9C4JyxcbiAgICAgICAgNjogJy3Rh9GLJyxcbiAgICAgICAgNzogJy3Rh9C4JyxcbiAgICAgICAgODogJy3Rh9C4JyxcbiAgICAgICAgOTogJy3Rh9GDJyxcbiAgICAgICAgMTA6ICct0YfRgycsXG4gICAgICAgIDIwOiAnLdGH0YsnLFxuICAgICAgICAzMDogJy3Rh9GDJyxcbiAgICAgICAgNDA6ICct0YfRiycsXG4gICAgICAgIDUwOiAnLdGH0q8nLFxuICAgICAgICA2MDogJy3Rh9GLJyxcbiAgICAgICAgNzA6ICct0YfQuCcsXG4gICAgICAgIDgwOiAnLdGH0LgnLFxuICAgICAgICA5MDogJy3Rh9GDJyxcbiAgICAgICAgMTAwOiAnLdGH0q8nXG4gICAgfTtcblxuICAgIHZhciBreSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2t5Jywge1xuICAgICAgICBtb250aHMgOiAn0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfRj9C90LJf0YTQtdCyX9C80LDRgNGCX9Cw0L/RgF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn0JbQtdC60YjQtdC80LHQuF/QlNKv0LnRiNOp0LzQsdKvX9Co0LXQudGI0LXQvNCx0Lhf0KjQsNGA0YjQtdC80LHQuF/QkdC10LnRiNC10LzQsdC4X9CW0YPQvNCwX9CY0YjQtdC80LHQuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQltC10Lpf0JTSr9C5X9Co0LXQuV/QqNCw0YBf0JHQtdC5X9CW0YPQvF/QmNGI0LUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9CW0Lpf0JTQuV/QqNC5X9Co0YBf0JHQuV/QltC8X9CY0YgnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vQkdKv0LPSr9C9INGB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vQrdGA0YLQtdKjINGB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb0JrQtdGH0Y3RjSDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9Oo0YLQutOp0L0g0LDQv9GC0LDQvdGL0L1dIGRkZGQgW9C60q/QvdKvXSBb0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDQuNGH0LjQvdC00LUnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDQvNGD0YDRg9C9JyxcbiAgICAgICAgICAgIHMgOiAn0LHQuNGA0L3QtdGH0LUg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzIDogJyVkINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtIDogJ9Cx0LjRgCDQvNKv0L3TqdGCJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC80q/QvdOp0YInLFxuICAgICAgICAgICAgaCA6ICfQsdC40YAg0YHQsNCw0YInLFxuICAgICAgICAgICAgaGggOiAnJWQg0YHQsNCw0YInLFxuICAgICAgICAgICAgZCA6ICfQsdC40YAg0LrSr9C9JyxcbiAgICAgICAgICAgIGRkIDogJyVkINC60q/QvScsXG4gICAgICAgICAgICBNIDogJ9Cx0LjRgCDQsNC5JyxcbiAgICAgICAgICAgIE1NIDogJyVkINCw0LknLFxuICAgICAgICAgICAgeSA6ICfQsdC40YAg0LbRi9C7JyxcbiAgICAgICAgICAgIHl5IDogJyVkINC20YvQuydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRh9C4fNGH0Yt80YfSr3zRh9GDKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbbnVtYmVyXSB8fCBzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGt5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ20nOiBbJ2VuZyBNaW51dHQnLCAnZW5nZXIgTWludXR0J10sXG4gICAgICAgICAgICAnaCc6IFsnZW5nIFN0b25uJywgJ2VuZ2VyIFN0b25uJ10sXG4gICAgICAgICAgICAnZCc6IFsnZWVuIERhZycsICdlbmdlbSBEYWcnXSxcbiAgICAgICAgICAgICdNJzogWydlZSBNb3VudCcsICdlbmdlbSBNb3VudCddLFxuICAgICAgICAgICAgJ3knOiBbJ2VlIEpvZXInLCAnZW5nZW0gSm9lciddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0Z1dHVyZVRpbWUoc3RyaW5nKSB7XG4gICAgICAgIHZhciBudW1iZXIgPSBzdHJpbmcuc3Vic3RyKDAsIHN0cmluZy5pbmRleE9mKCcgJykpO1xuICAgICAgICBpZiAoZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSAnICsgc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnYW4gJyArIHN0cmluZztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc1Bhc3RUaW1lKHN0cmluZykge1xuICAgICAgICB2YXIgbnVtYmVyID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZignICcpKTtcbiAgICAgICAgaWYgKGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ZpcnUgJyArIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ3ZpcnVuICcgKyBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd29yZCBiZWZvcmUgdGhlIGdpdmVuIG51bWJlciBsb3NlcyB0aGUgJy1uJyBlbmRpbmcuXG4gICAgICogZS5nLiAnYW4gMTAgRGVlZycgYnV0ICdhIDUgRGVlZydcbiAgICAgKlxuICAgICAqIEBwYXJhbSBudW1iZXIge2ludGVnZXJ9XG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgZnVuY3Rpb24gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikge1xuICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIsIDEwKTtcbiAgICAgICAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgLy8gTmVnYXRpdmUgTnVtYmVyIC0tPiBhbHdheXMgdHJ1ZVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTApIHtcbiAgICAgICAgICAgIC8vIE9ubHkgMSBkaWdpdFxuICAgICAgICAgICAgaWYgKDQgPD0gbnVtYmVyICYmIG51bWJlciA8PSA3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTAwKSB7XG4gICAgICAgICAgICAvLyAyIGRpZ2l0c1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLCBmaXJzdERpZ2l0ID0gbnVtYmVyIC8gMTA7XG4gICAgICAgICAgICBpZiAobGFzdERpZ2l0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihmaXJzdERpZ2l0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobGFzdERpZ2l0KTtcbiAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCAxMDAwMCkge1xuICAgICAgICAgICAgLy8gMyBvciA0IGRpZ2l0cyAtLT4gcmVjdXJzaXZlbHkgY2hlY2sgZmlyc3QgZGlnaXRcbiAgICAgICAgICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEFueXRoaW5nIGxhcmdlciB0aGFuIDQgZGlnaXRzOiByZWN1cnNpdmVseSBjaGVjayBmaXJzdCBuLTMgZGlnaXRzXG4gICAgICAgICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDAwO1xuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxiID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbGInLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcl9GZWJydWFyX03DpGVyel9BYnLDq2xsX01lZV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbi5fRmVici5fTXJ6Ll9BYnIuX01lZV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnU29ubmRlZ19Nw6lpbmRlZ19Ew6tuc2NoZGVnX03Dq3R0d29jaF9Eb25uZXNjaGRlZ19GcmVpZGVnX1NhbXNjaGRlZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvLl9Nw6kuX0TDqy5fTcOrLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTb19Nw6lfRMOrX03Dq19Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbSBbQXVlcl0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcyBbQXVlcl0nLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhdXQgdW1dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW011ZXIgdW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbR8Orc2NodGVyIHVtXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vIERpZmZlcmVudCBkYXRlIHN0cmluZyBmb3IgJ0TDq25zY2hkZWcnIChUdWVzZGF5KSBhbmQgJ0Rvbm5lc2NoZGVnJyAoVGh1cnNkYXkpIGR1ZSB0byBwaG9ub2xvZ2ljYWwgcnVsZVxuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW0xlc2NodGVuXSBkZGRkIFt1bV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbTGVzY2h0ZV0gZGRkZCBbdW1dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6IHByb2Nlc3NGdXR1cmVUaW1lLFxuICAgICAgICAgICAgcGFzdCA6IHByb2Nlc3NQYXN0VGltZSxcbiAgICAgICAgICAgIHMgOiAnZSBwdWVyIFNla29ubmVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIFNla29ubmVuJyxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiAnJWQgTWludXR0ZW4nLFxuICAgICAgICAgICAgaCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaCA6ICclZCBTdG9ubmVuJyxcbiAgICAgICAgICAgIGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQgOiAnJWQgRGVlZycsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogJyVkIE3DqWludCcsXG4gICAgICAgICAgICB5IDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5IDogJyVkIEpvZXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGxvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbG8nLCB7XG4gICAgICAgIG1vbnRocyA6ICfguqHgurHguofguoHguq3guplf4LqB4Lq44Lqh4Lqe4LqyX+C6oeC6teC6meC6sl/gu4DguqHguqrgurJf4Lqe4Lq24LqU4Lqq4Lqw4Lqe4LqyX+C6oeC6tOC6luC6uOC6meC6sl/guoHgu43guqXgurDguoHgurvgupRf4Lqq4Lq04LqH4Lqr4LqyX+C6geC6seC6meC6jeC6sl/gupXgurjguqXgurJf4Lqe4Lqw4LqI4Lq04LqBX+C6l+C6seC6meC6p+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4Lqh4Lqx4LqH4LqB4Lqt4LqZX+C6geC6uOC6oeC6nuC6sl/guqHgurXgupngurJf4LuA4Lqh4Lqq4LqyX+C6nuC6tuC6lOC6quC6sOC6nuC6sl/guqHgurTgupbgurjgupngurJf4LqB4LuN4Lql4Lqw4LqB4Lq74LqUX+C6quC6tOC6h+C6q+C6sl/guoHgurHgupnguo3gurJf4LqV4Lq44Lql4LqyX+C6nuC6sOC6iOC6tOC6gV/gupfgurHgupnguqfgurInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+C6reC6suC6l+C6tOC6lF/guojgurHguplf4Lqt4Lqx4LqH4LqE4Lqy4LqZX+C6nuC6uOC6lF/gup7gurDguqvgurHgupRf4Lqq4Lq44LqBX+C7gOC6quC6u+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgupfgurTgupRf4LqI4Lqx4LqZX+C6reC6seC6h+C6hOC6suC6mV/gup7gurjgupRf4Lqe4Lqw4Lqr4Lqx4LqUX+C6quC6uOC6gV/gu4DguqrgurvgurInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+C6l1/guohf4Lqt4LqEX+C6nl/gup7guqtf4Lqq4LqBX+C6qicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ+C6p+C6seC6mWRkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gupXguq3gupngu4Dguorgurvgu4ngurJ84LqV4Lqt4LqZ4LuB4Lql4LqHLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfgupXguq3gupngu4HguqXguocnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C6leC6reC6meC7gOC6iuC6u+C7ieC6sic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LqV4Lqt4LqZ4LuB4Lql4LqHJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vguqHgurfgu4ngupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+C6oeC6t+C7ieC6reC6t+C7iOC6meC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+C6p+C6seC6mV1kZGRkW+C7nOC7ieC6suC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4Lqh4Lq34LuJ4Lqn4Lqy4LqZ4LqZ4Lq14LuJ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4Lqn4Lqx4LqZXWRkZGRb4LuB4Lql4LuJ4Lqn4LqZ4Lq14LuJ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn4Lqt4Lq14LqBICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXPgupzgu4jgurLgupnguqHgurInLFxuICAgICAgICAgICAgcyA6ICfguprgu43gu4jgu4Dgupfgurvgu4jgurLgu4PgupTguqfgurTgupngurLgupfgurUnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4Lqn4Lq04LqZ4Lqy4LqX4Lq1JyAsXG4gICAgICAgICAgICBtIDogJzEg4LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIG1tIDogJyVkIOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBoIDogJzEg4LqK4Lq74LuI4Lqn4LuC4Lqh4LqHJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOC6iuC6u+C7iOC6p+C7guC6oeC6hycsXG4gICAgICAgICAgICBkIDogJzEg4Lqh4Lq34LuJJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOC6oeC6t+C7iScsXG4gICAgICAgICAgICBNIDogJzEg4LuA4LqU4Lq34Lqt4LqZJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOC7gOC6lOC6t+C6reC6mScsXG4gICAgICAgICAgICB5IDogJzEg4Lqb4Lq1JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOC6m+C6tSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogLyjgupfgurXgu4gpXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuICfgupfgurXgu4gnICsgbnVtYmVyO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbG87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB1bml0cyA9IHtcbiAgICAgICAgJ3NzJyA6ICdzZWt1bmTEl19zZWt1bmTFvmnFs19zZWt1bmRlcycsXG4gICAgICAgICdtJyA6ICdtaW51dMSXX21pbnV0xJdzX21pbnV0xJknLFxuICAgICAgICAnbW0nOiAnbWludXTEl3NfbWludcSNacWzX21pbnV0ZXMnLFxuICAgICAgICAnaCcgOiAndmFsYW5kYV92YWxhbmRvc192YWxhbmTEhScsXG4gICAgICAgICdoaCc6ICd2YWxhbmRvc192YWxhbmTFs192YWxhbmRhcycsXG4gICAgICAgICdkJyA6ICdkaWVuYV9kaWVub3NfZGllbsSFJyxcbiAgICAgICAgJ2RkJzogJ2RpZW5vc19kaWVuxbNfZGllbmFzJyxcbiAgICAgICAgJ00nIDogJ23El251b19txJduZXNpb19txJduZXPErycsXG4gICAgICAgICdNTSc6ICdtxJduZXNpYWlfbcSXbmVzacWzX23El25lc2l1cycsXG4gICAgICAgICd5JyA6ICdtZXRhaV9tZXTFs19tZXR1cycsXG4gICAgICAgICd5eSc6ICdtZXRhaV9tZXTFs19tZXR1cydcbiAgICB9O1xuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVNlY29uZHMobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gJ2tlbGlvcyBzZWt1bmTEl3MnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ2tlbGnFsyBzZWt1bmTFvmnFsycgOiAna2VsaWFzIHNla3VuZGVzJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVTaW5ndWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtcyhrZXkpWzBdIDogKGlzRnV0dXJlID8gZm9ybXMoa2V5KVsxXSA6IGZvcm1zKGtleSlbMl0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzcGVjaWFsKG51bWJlcikge1xuICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDAgfHwgKG51bWJlciA+IDEwICYmIG51bWJlciA8IDIwKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZm9ybXMoa2V5KSB7XG4gICAgICAgIHJldHVybiB1bml0c1trZXldLnNwbGl0KCdfJyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIHRyYW5zbGF0ZVNpbmd1bGFyKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5WzBdLCBpc0Z1dHVyZSk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChzcGVjaWFsKG51bWJlcikgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgZm9ybXMoa2V5KVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChzcGVjaWFsKG51bWJlcikgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGx0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbHQnLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ3NhdXNpb192YXNhcmlvX2tvdm9fYmFsYW5kxb5pb19nZWd1xb7El3NfYmlyxb5lbGlvX2xpZXBvc19ydWdwasWrxI1pb19ydWdzxJdqb19zcGFsaW9fbGFwa3JpxI1pb19ncnVvZMW+aW8nLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAnc2F1c2lzX3Zhc2FyaXNfa292YXNfYmFsYW5kaXNfZ2VndcW+xJdfYmlyxb5lbGlzX2xpZXBhX3J1Z3Bqxat0aXNfcnVnc8SXamlzX3NwYWxpc19sYXBrcml0aXNfZ3J1b2Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NP3xNTU1NPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrRFtvRF0/L1xuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICdzYXVfdmFzX2tvdl9iYWxfZ2VnX2Jpcl9saWVfcmdwX3Jnc19zcGFfbGFwX2dyZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdzZWttYWRpZW7Er19waXJtYWRpZW7Er19hbnRyYWRpZW7Er190cmXEjWlhZGllbsSvX2tldHZpcnRhZGllbsSvX3Blbmt0YWRpZW7Er1/FoWXFoXRhZGllbsSvJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ3Nla21hZGllbmlzX3Bpcm1hZGllbmlzX2FudHJhZGllbmlzX3RyZcSNaWFkaWVuaXNfa2V0dmlydGFkaWVuaXNfcGVua3RhZGllbmlzX8WhZcWhdGFkaWVuaXMnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL2RkZGQgSEg6bW0vXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU2VrX1Bpcl9BbnRfVHJlX0tldF9QZW5fxaBlxaEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NfUF9BX1RfS19Qbl/FoCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXScsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZGQsIEhIOm1tIFt2YWwuXScsXG4gICAgICAgICAgICBsIDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgbGwgOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dJyxcbiAgICAgICAgICAgIGxsbCA6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIEhIOm1tIFt2YWwuXScsXG4gICAgICAgICAgICBsbGxsIDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkLCBISDptbSBbdmFsLl0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbxaBpYW5kaWVuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tSeXRval0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tWYWthcl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW1ByYcSXanVzxK9dIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3BvICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAncHJpZcWhICVzJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGVTZWNvbmRzLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS1vamkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICctb2ppJztcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbHQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB1bml0cyA9IHtcbiAgICAgICAgJ3NzJzogJ3Nla3VuZGVzX3Nla3VuZMSTbV9zZWt1bmRlX3Nla3VuZGVzJy5zcGxpdCgnXycpLFxuICAgICAgICAnbSc6ICdtaW7Fq3Rlc19taW7Fq3TEk21fbWluxat0ZV9taW7Fq3Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ21tJzogJ21pbsWrdGVzX21pbsWrdMSTbV9taW7Fq3RlX21pbsWrdGVzJy5zcGxpdCgnXycpLFxuICAgICAgICAnaCc6ICdzdHVuZGFzX3N0dW5kxIFtX3N0dW5kYV9zdHVuZGFzJy5zcGxpdCgnXycpLFxuICAgICAgICAnaGgnOiAnc3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ2QnOiAnZGllbmFzX2RpZW7EgW1fZGllbmFfZGllbmFzJy5zcGxpdCgnXycpLFxuICAgICAgICAnZGQnOiAnZGllbmFzX2RpZW7EgW1fZGllbmFfZGllbmFzJy5zcGxpdCgnXycpLFxuICAgICAgICAnTSc6ICdtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lzX23Ek25lxaFpJy5zcGxpdCgnXycpLFxuICAgICAgICAnTU0nOiAnbcSTbmXFoWFfbcSTbmXFoWllbV9txJNuZXNpc19txJNuZcWhaScuc3BsaXQoJ18nKSxcbiAgICAgICAgJ3knOiAnZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpJy5zcGxpdCgnXycpLFxuICAgICAgICAneXknOiAnZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpJy5zcGxpdCgnXycpXG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gd2l0aG91dFN1ZmZpeCBib29sZWFuIHRydWUgPSBhIGxlbmd0aCBvZiB0aW1lOyBmYWxzZSA9IGJlZm9yZS9hZnRlciBhIHBlcmlvZCBvZiB0aW1lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvcm1hdChmb3JtcywgbnVtYmVyLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAvLyBFLmcuIFwiMjEgbWluxat0ZVwiLCBcIjMgbWluxat0ZXNcIi5cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMSAmJiBudW1iZXIgJSAxMDAgIT09IDExID8gZm9ybXNbMl0gOiBmb3Jtc1szXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEUuZy4gXCIyMSBtaW7Fq3Rlc1wiIGFzIGluIFwicMSTYyAyMSBtaW7Fq3Rlc1wiLlxuICAgICAgICAgICAgLy8gRS5nLiBcIjMgbWluxat0xJNtXCIgYXMgaW4gXCJwxJNjIDMgbWluxat0xJNtXCIuXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgJiYgbnVtYmVyICUgMTAwICE9PSAxMSA/IGZvcm1zWzBdIDogZm9ybXNbMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgZm9ybWF0KHVuaXRzW2tleV0sIG51bWJlciwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0KHVuaXRzW2tleV0sIG51bWJlciwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlU2Vjb25kcyhudW1iZXIsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZGHFvmFzIHNla3VuZGVzJyA6ICdkYcW+xIFtIHNla3VuZMSTbSc7XG4gICAgfVxuXG4gICAgdmFyIGx2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbHYnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW52xIFyaXNfZmVicnXEgXJpc19tYXJ0c19hcHLEq2xpc19tYWlqc19qxatuaWpzX2rFq2xpanNfYXVndXN0c19zZXB0ZW1icmlzX29rdG9icmlzX25vdmVtYnJpc19kZWNlbWJyaXMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYWlfasWrbl9qxatsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ3N2xJN0ZGllbmFfcGlybWRpZW5hX290cmRpZW5hX3RyZcWhZGllbmFfY2V0dXJ0ZGllbmFfcGlla3RkaWVuYV9zZXN0ZGllbmEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU3ZfUF9PX1RfQ19Qa19TJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdl9QX09fVF9DX1BrX1MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWS4nLFxuICAgICAgICAgICAgTEwgOiAnWVlZWS4gW2dhZGFdIEQuIE1NTU0nLFxuICAgICAgICAgICAgTExMIDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NLCBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NLCBkZGRkLCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vFoG9kaWVuIHB1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tSxKt0IHB1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbVmFrYXIgcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tQYWfEgWp1xaHEgV0gZGRkZCBbcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdwxJNjICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAncGlybXMgJXMnLFxuICAgICAgICAgICAgcyA6IHJlbGF0aXZlU2Vjb25kcyxcbiAgICAgICAgICAgIHNzIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG0gOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBtbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoIDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgaGggOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZCA6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIGRkIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE0gOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBNTSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5IDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgeXkgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbHY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0cmFuc2xhdG9yID0ge1xuICAgICAgICB3b3JkczogeyAvL0RpZmZlcmVudCBncmFtbWF0aWNhbCBjYXNlc1xuICAgICAgICAgICAgc3M6IFsnc2VrdW5kJywgJ3Nla3VuZGEnLCAnc2VrdW5kaSddLFxuICAgICAgICAgICAgbTogWydqZWRhbiBtaW51dCcsICdqZWRub2cgbWludXRhJ10sXG4gICAgICAgICAgICBtbTogWydtaW51dCcsICdtaW51dGEnLCAnbWludXRhJ10sXG4gICAgICAgICAgICBoOiBbJ2plZGFuIHNhdCcsICdqZWRub2cgc2F0YSddLFxuICAgICAgICAgICAgaGg6IFsnc2F0JywgJ3NhdGEnLCAnc2F0aSddLFxuICAgICAgICAgICAgZGQ6IFsnZGFuJywgJ2RhbmEnLCAnZGFuYSddLFxuICAgICAgICAgICAgTU06IFsnbWplc2VjJywgJ21qZXNlY2EnLCAnbWplc2VjaSddLFxuICAgICAgICAgICAgeXk6IFsnZ29kaW5hJywgJ2dvZGluZScsICdnb2RpbmEnXVxuICAgICAgICB9LFxuICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBmdW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyID09PSAxID8gd29yZEtleVswXSA6IChudW1iZXIgPj0gMiAmJiBudW1iZXIgPD0gNCA/IHdvcmRLZXlbMV0gOiB3b3JkS2V5WzJdKTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgdHJhbnNsYXRvci5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKG51bWJlciwgd29yZEtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIG1lID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWUnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bl9qdWxfYXZndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqX2p1bl9qdWxfYXZnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzanV0cmEgdV0gTFQnLFxuXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgIDogJ1tqdcSNZSB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFdlZWtEYXlzID0gW1xuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtuZWRqZWxqZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BvbmVkamVsamthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbdXRvcmthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtzcmlqZWRlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbxI1ldHZydGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCAgIDogJ3ByaWplICVzJyxcbiAgICAgICAgICAgIHMgICAgICA6ICduZWtvbGlrbyBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbSAgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkICAgICAgOiAnZGFuJyxcbiAgICAgICAgICAgIGRkICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTSAgICAgIDogJ21qZXNlYycsXG4gICAgICAgICAgICBNTSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgICAgICA6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXkgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1pID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWknLCB7XG4gICAgICAgIG1vbnRoczogJ0tvaGktdMSBdGVfSHVpLXRhbmd1cnVfUG91dMWrLXRlLXJhbmdpX1BhZW5nYS13aMSBd2jEgV9IYXJhdHVhX1BpcGlyaV9IxY1uZ29pbmdvaV9IZXJlLXR1cmkta8WNa8SBX01haHVydV9XaGlyaW5nYS3EgS1udWt1X1doaXJpbmdhLcSBLXJhbmdpX0hha2loZWEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnS29oaV9IdWlfUG91X1BhZV9IYXJhX1BpcGlfSMWNbmdvaV9IZXJlX01haHVfV2hpLW51X1doaS1yYV9IYWtpJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDN9L2ksXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsM30vaSxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDN9L2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwyfS9pLFxuICAgICAgICB3ZWVrZGF5czogJ1LEgXRhcHVfTWFuZV9UxatyZWlfV2VuZXJlaV9UxIFpdGVfUGFyYWlyZV9IxIF0YXJlaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1RhX01hX1TFq19XZV9UxIFpX1BhX0jEgScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdUYV9NYV9UxatfV2VfVMSBaV9QYV9IxIEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW2ldIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBbaV0gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2kgdGVpZSBtYWhhbmEsIGldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbYXBvcG8gaV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtpXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2luYW5haGkgaV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFt3aGFrYW11dHVuZ2EgaV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2kgcm90byBpICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBpIG11YScsXG4gICAgICAgICAgICBzOiAndGUgaMSTa29uYSBydWFydWEnLFxuICAgICAgICAgICAgc3M6ICclZCBoxJNrb25hJyxcbiAgICAgICAgICAgIG06ICdoZSBtZW5ldGknLFxuICAgICAgICAgICAgbW06ICclZCBtZW5ldGknLFxuICAgICAgICAgICAgaDogJ3RlIGhhb3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaGFvcmEnLFxuICAgICAgICAgICAgZDogJ2hlIHJhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgcmEnLFxuICAgICAgICAgICAgTTogJ2hlIG1hcmFtYScsXG4gICAgICAgICAgICBNTTogJyVkIG1hcmFtYScsXG4gICAgICAgICAgICB5OiAnaGUgdGF1JyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGF1J1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21rJywge1xuICAgICAgICBtb250aHMgOiAn0ZjQsNC90YPQsNGA0Lhf0YTQtdCy0YDRg9Cw0YDQuF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDRmF/RmNGD0L3QuF/RmNGD0LvQuF/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LLRgNC4X9C+0LrRgtC+0LzQstGA0Lhf0L3QvtC10LzQstGA0Lhf0LTQtdC60LXQvNCy0YDQuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0ZjQsNC9X9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9C90LXQtNC10LvQsF/Qv9C+0L3QtdC00LXQu9C90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNCwX9GH0LXRgtCy0YDRgtC+0Lpf0L/QtdGC0L7Qul/RgdCw0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNC1X9GH0LXRgl/Qv9C10YJf0YHQsNCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQvWVf0L9vX9Cy0YJf0YHRgF/Rh9C1X9C/0LVf0YFhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CU0LXQvdC10YEg0LLQvl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0KPRgtGA0LUg0LLQvl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW9CS0L5dIGRkZGQgW9Cy0L5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9CS0YfQtdGA0LAg0LLQvl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQmNC30LzQuNC90LDRgtCw0YLQsF0gZGRkZCBb0LLQvl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQmNC30LzQuNC90LDRgtC40L7Rgl0gZGRkZCBb0LLQvl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn0L/QvtGB0LvQtSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ9C/0YDQtdC0ICVzJyxcbiAgICAgICAgICAgIHMgOiAn0L3QtdC60L7Qu9C60YMg0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgc3MgOiAnJWQg0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgbSA6ICfQvNC40L3Rg9GC0LAnLFxuICAgICAgICAgICAgbW0gOiAnJWQg0LzQuNC90YPRgtC4JyxcbiAgICAgICAgICAgIGggOiAn0YfQsNGBJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGH0LDRgdCwJyxcbiAgICAgICAgICAgIGQgOiAn0LTQtdC9JyxcbiAgICAgICAgICAgIGRkIDogJyVkINC00LXQvdCwJyxcbiAgICAgICAgICAgIE0gOiAn0LzQtdGB0LXRhicsXG4gICAgICAgICAgICBNTSA6ICclZCDQvNC10YHQtdGG0LgnLFxuICAgICAgICAgICAgeSA6ICfQs9C+0LTQuNC90LAnLFxuICAgICAgICAgICAgeXkgOiAnJWQg0LPQvtC00LjQvdC4J1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC10LJ80LXQvXzRgtC4fNCy0Lh80YDQuHzQvNC4KS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdERpZ2l0ID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgbGFzdDJEaWdpdHMgPSBudW1iZXIgJSAxMDA7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQvSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID4gMTAgJiYgbGFzdDJEaWdpdHMgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QstC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YDQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gNyB8fCBsYXN0RGlnaXQgPT09IDgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QvNC4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1rO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtbCcsIHtcbiAgICAgICAgbW9udGhzIDogJ+C0nOC0qOC1geC0teC0sOC0v1/gtKvgtYbgtKzgtY3gtLDgtYHgtLXgtLDgtL9f4LSu4LS+4LW84LSa4LWN4LSa4LWNX+C0j+C0quC1jeC0sOC0v+C1vV/gtK7gtYfgtK/gtY1f4LSc4LWC4LW6X+C0nOC1guC0suC1iF/gtJPgtJfgtLjgtY3gtLHgtY3gtLHgtY1f4LS44LWG4LSq4LWN4LSx4LWN4LSx4LSC4LSs4LW8X+C0kuC0leC1jeC0n+C1i+C0rOC1vF/gtKjgtLXgtILgtKzgtbxf4LSh4LS/4LS44LSC4LSs4LW8Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgtJzgtKjgtYEuX+C0q+C1huC0rOC1jeC0sOC1gS5f4LSu4LS+4LW8Ll/gtI/gtKrgtY3gtLDgtL8uX+C0ruC1h+C0r+C1jV/gtJzgtYLgtbpf4LSc4LWC4LSy4LWILl/gtJPgtJcuX+C0uOC1huC0quC1jeC0seC1jeC0sS5f4LSS4LSV4LWN4LSf4LWLLl/gtKjgtLXgtIIuX+C0oeC0v+C0uOC0gi4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgtJ7gtL7gtK/gtLHgtL7gtLTgtY3gtJpf4LSk4LS/4LSZ4LWN4LSV4LSz4LS+4LS04LWN4LSaX+C0muC1iuC0teC1jeC0teC0vuC0tOC1jeC0ml/gtKzgtYHgtKfgtKjgtL7gtLTgtY3gtJpf4LS14LWN4LSv4LS+4LS04LS+4LS04LWN4LSaX+C0teC1huC0s+C1jeC0s+C0v+C0r+C0vuC0tOC1jeC0ml/gtLbgtKjgtL/gtK/gtL7gtLTgtY3gtJonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4LSe4LS+4LSv4LW8X+C0pOC0v+C0meC1jeC0leC1vl/gtJrgtYrgtLXgtY3gtLVf4LSs4LWB4LSn4LW7X+C0teC1jeC0r+C0vuC0tOC0gl/gtLXgtYbgtLPgtY3gtLPgtL9f4LS24LSo4LS/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgtJ7gtL5f4LSk4LS/X+C0muC1il/gtKzgtYFf4LS14LWN4LSv4LS+X+C0teC1hl/gtLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tIC3gtKjgtYEnLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcyAt4LSo4LWBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSAt4LSo4LWBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C0h+C0qOC1jeC0qOC1jV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4LSo4LS+4LSz4LWGXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgtIfgtKjgtY3gtKjgtLLgtYZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgtJXgtLTgtL/gtJ7gtY3gtJ5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0nLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgtK7gtYHgtbvgtKrgtY0nLFxuICAgICAgICAgICAgcyA6ICfgtIXgtb3gtKog4LSo4LS/4LSu4LS/4LS34LSZ4LWN4LSZ4LW+JyxcbiAgICAgICAgICAgIHNzIDogJyVkIOC0uOC1huC0leC1jeC0leC1u+C0oeC1jScsXG4gICAgICAgICAgICBtIDogJ+C0kuC0sOC1gSDgtK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLFxuICAgICAgICAgICAgbW0gOiAnJWQg4LSu4LS/4LSo4LS/4LSx4LWN4LSx4LWNJyxcbiAgICAgICAgICAgIGggOiAn4LSS4LSw4LWBIOC0ruC0o+C0v+C0leC1jeC0leC1guC1vCcsXG4gICAgICAgICAgICBoaCA6ICclZCDgtK7gtKPgtL/gtJXgtY3gtJXgtYLgtbwnLFxuICAgICAgICAgICAgZCA6ICfgtJLgtLDgtYEg4LSm4LS/4LS14LS44LSCJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOC0puC0v+C0teC0uOC0gicsXG4gICAgICAgICAgICBNIDogJ+C0kuC0sOC1gSDgtK7gtL7gtLjgtIInLFxuICAgICAgICAgICAgTU0gOiAnJWQg4LSu4LS+4LS44LSCJyxcbiAgICAgICAgICAgIHkgOiAn4LSS4LSw4LWBIOC0teC1vOC0t+C0gicsXG4gICAgICAgICAgICB5eSA6ICclZCDgtLXgtbzgtLfgtIInXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gtLDgtL7gtKTgtY3gtLDgtL984LSw4LS+4LS14LS/4LSy4LWGfOC0ieC0muC1jeC0miDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY184LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCfOC0sOC0vuC0pOC1jeC0sOC0vy9pLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChtZXJpZGllbSA9PT0gJ+C0sOC0vuC0pOC1jeC0sOC0vycgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+C0ieC0muC1jeC0miDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0nIHx8XG4gICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSw4LS+4LSk4LWN4LSw4LS/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtLXgtL/gtLLgtYYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0ieC0muC1jeC0miDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSw4LS+4LSk4LWN4LSw4LS/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1sO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfRhdGN0LTRhdGN0L0g0YHQtdC60YPQvdC0JyA6ICfRhdGN0LTRhdGN0L0g0YHQtdC60YPQvdC00YvQvSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRgdC10LrRg9C90LQnIDogJyDRgdC10LrRg9C90LTRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINC80LjQvdGD0YInIDogJyDQvNC40L3Rg9GC0YvQvScpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRhtCw0LMnIDogJyDRhtCw0LPQuNC50L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg06nQtNOp0YAnIDogJyDTqdC00YDQuNC50L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0YHQsNGAJyA6ICcg0YHQsNGA0YvQvScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDQttC40LsnIDogJyDQttC40LvQuNC50L0nKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBtbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21uJywge1xuICAgICAgICBtb250aHMgOiAn0J3RjdCz0LTSr9Cz0Y3RjdGAINGB0LDRgF/QpdC+0ZHRgNC00YPQs9Cw0LDRgCDRgdCw0YBf0JPRg9GA0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JTTqdGA06nQstC00q/Qs9GN0Y3RgCDRgdCw0YBf0KLQsNCy0LTRg9Cz0LDQsNGAINGB0LDRgF/Ql9GD0YDQs9Cw0LTRg9Cz0LDQsNGAINGB0LDRgF/QlNC+0LvQtNGD0LPQsNCw0YAg0YHQsNGAX9Cd0LDQudC80LTRg9Cz0LDQsNGAINGB0LDRgF/QldGB0LTSr9Cz0Y3RjdGAINGB0LDRgF/QkNGA0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JDRgNCy0LDQvSDQvdGN0LPQtNKv0LPRjdGN0YAg0YHQsNGAX9CQ0YDQstCw0L0g0YXQvtGR0YDQtNGD0LPQsNCw0YAg0YHQsNGAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICcxINGB0LDRgF8yINGB0LDRgF8zINGB0LDRgF80INGB0LDRgF81INGB0LDRgF82INGB0LDRgF83INGB0LDRgF84INGB0LDRgF85INGB0LDRgF8xMCDRgdCw0YBfMTEg0YHQsNGAXzEyINGB0LDRgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ9Cd0Y/QvF/QlNCw0LLQsNCwX9Cc0Y/Qs9C80LDRgF/Qm9GF0LDQs9Cy0LBf0J/Sr9GA0Y3Qsl/QkdCw0LDRgdCw0L1f0JHRj9C80LHQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQndGP0Lxf0JTQsNCyX9Cc0Y/Qs1/Qm9GF0LBf0J/Sr9GAX9CR0LDQsF/QkdGP0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9Cd0Y9f0JTQsF/QnNGPX9Cb0YVf0J/Sr1/QkdCwX9CR0Y8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZINC+0L3RiyBNTU1N0YvQvSBEJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZINC+0L3RiyBNTU1N0YvQvSBEIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgWVlZWSDQvtC90YsgTU1NTdGL0L0gRCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9Ku06h80q7QpS9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfSrtClJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfSrtOoJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfSrtClJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vTqNC906nTqdC006nRgF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0JzQsNGA0LPQsNCw0YhdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vQmNGA0Y3RhV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vTqNGH0LjQs9C006nRgF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9Oo0L3Qs9Op0YDRgdOp0L1dIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzINC00LDRgNCw0LAnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDTqdC80L3TqScsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9INOp0LTTqdGALyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDTqdC006nRgCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1uO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgpacnLFxuICAgICAgICAnMic6ICfgpagnLFxuICAgICAgICAnMyc6ICfgpaknLFxuICAgICAgICAnNCc6ICfgpaonLFxuICAgICAgICAnNSc6ICfgpasnLFxuICAgICAgICAnNic6ICfgpawnLFxuICAgICAgICAnNyc6ICfgpa0nLFxuICAgICAgICAnOCc6ICfgpa4nLFxuICAgICAgICAnOSc6ICfgpa8nLFxuICAgICAgICAnMCc6ICfgpaYnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICfgpaYnOiAnMCdcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lTXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKVxuICAgIHtcbiAgICAgICAgdmFyIG91dHB1dCA9ICcnO1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzJzogb3V0cHV0ID0gJ+CkleCkvuCkueClgCDgpLjgpYfgpJXgpILgpKYnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzcyc6IG91dHB1dCA9ICclZCDgpLjgpYfgpJXgpILgpKYnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtJzogb3V0cHV0ID0gJ+Ckj+CklSDgpK7gpL/gpKjgpL/gpJ8nOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtbSc6IG91dHB1dCA9ICclZCDgpK7gpL/gpKjgpL/gpJ/gpYcnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoJzogb3V0cHV0ID0gJ+Ckj+CklSDgpKTgpL7gpLgnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoaCc6IG91dHB1dCA9ICclZCDgpKTgpL7gpLgnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkJzogb3V0cHV0ID0gJ+Ckj+CklSDgpKbgpL/gpLXgpLgnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkZCc6IG91dHB1dCA9ICclZCDgpKbgpL/gpLXgpLgnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzogb3V0cHV0ID0gJ+Ckj+CklSDgpK7gpLngpL/gpKjgpL4nOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNTSc6IG91dHB1dCA9ICclZCDgpK7gpLngpL/gpKjgpYcnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5Jzogb3V0cHV0ID0gJ+Ckj+CklSDgpLXgpLDgpY3gpLcnOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5eSc6IG91dHB1dCA9ICclZCDgpLXgpLDgpY3gpLfgpYcnOyBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncyc6IG91dHB1dCA9ICfgpJXgpL7gpLngpYAg4KS44KWH4KSV4KSC4KSm4KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3MnOiBvdXRwdXQgPSAnJWQg4KS44KWH4KSV4KSC4KSm4KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbSc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KSu4KS/4KSo4KS/4KSf4KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW0nOiBvdXRwdXQgPSAnJWQg4KSu4KS/4KSo4KS/4KSf4KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KSk4KS+4KS44KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGgnOiBvdXRwdXQgPSAnJWQg4KSk4KS+4KS44KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KSm4KS/4KS14KS44KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGQnOiBvdXRwdXQgPSAnJWQg4KSm4KS/4KS14KS44KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KSu4KS54KS/4KSo4KWN4KSv4KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTU0nOiBvdXRwdXQgPSAnJWQg4KSu4KS54KS/4KSo4KWN4KSv4KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6IG91dHB1dCA9ICfgpI/gpJXgpL4g4KS14KSw4KWN4KS34KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneXknOiBvdXRwdXQgPSAnJWQg4KS14KSw4KWN4KS34KS+4KSCJzsgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dC5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgIH1cblxuICAgIHZhciBtciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21yJywge1xuICAgICAgICBtb250aHMgOiAn4KSc4KS+4KSo4KWH4KS14KS+4KSw4KWAX+Ckq+Clh+CkrOCljeCksOClgeCkteCkvuCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSP4KSq4KWN4KSw4KS/4KSyX+CkruClh1/gpJzgpYLgpKhf4KSc4KWB4KSy4KWIX+CkkeCkl+CkuOCljeCkn1/gpLjgpKrgpY3gpJ/gpYfgpILgpKzgpLBf4KSR4KSV4KWN4KSf4KWL4KSs4KSwX+CkqOCli+CkteCljeCkueClh+CkguCkrOCksF/gpKHgpL/gpLjgpYfgpILgpKzgpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4KSc4KS+4KSo4KWHLl/gpKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkmi5f4KSP4KSq4KWN4KSw4KS/Ll/gpK7gpYcuX+CknOClguCkqC5f4KSc4KWB4KSy4KWILl/gpJHgpJcuX+CkuOCkquCljeCkn+Clh+Ckgi5f4KSR4KSV4KWN4KSf4KWLLl/gpKjgpYvgpLXgpY3gpLngpYfgpIIuX+CkoeCkv+CkuOClh+Ckgi4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+Cks+CkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4KSw4KS14KS/X+CkuOCli+Ckrl/gpK7gpILgpJfgpLNf4KSs4KWB4KSnX+Ckl+ClgeCksOClgl/gpLbgpYHgpJXgpY3gpLBf4KS24KSo4KS/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgpLBf4KS44KWLX+CkruCkgl/gpKzgpYFf4KSX4KWBX+CktuClgV/gpLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgpLXgpL7gpJzgpKTgpL4nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4KSG4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgpIngpKbgpY3gpK/gpL5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+CkleCkvuCksl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KSu4KS+4KSX4KWA4KSyXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+CkruCkp+CljeCkr+ClhycsXG4gICAgICAgICAgICBwYXN0OiAnJXPgpKrgpYLgpLDgpY3gpLXgpYAnLFxuICAgICAgICAgICAgczogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBtOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGg6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgZDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBNOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIHk6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZU1yXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKTgpY3gpLDgpYB84KS44KSV4KS+4KSz4KWAfOCkpuClgeCkquCkvuCksOClgHzgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYAvLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSw4KS+4KSk4KWN4KSw4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KSV4KS+4KSz4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuClgeCkquCkvuCksOClgCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KS+4KSv4KSC4KSV4KS+4KSz4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCljeCksOClgCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KSV4KS+4KSz4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpYHgpKrgpL7gpLDgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkvuCkr+CkguCkleCkvuCks+ClgCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KWN4KSw4KWAJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21zJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0FoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RlbmdhaGFyaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BldGFuZyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tFc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xlcGFzIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyB5YW5nIGxlcGFzJyxcbiAgICAgICAgICAgIHMgOiAnYmViZXJhcGEgc2FhdCcsXG4gICAgICAgICAgICBzcyA6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG0gOiAnc2VtaW5pdCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW5pdCcsXG4gICAgICAgICAgICBoIDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGphbScsXG4gICAgICAgICAgICBkIDogJ3NlaGFyaScsXG4gICAgICAgICAgICBkZCA6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE0gOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTSA6ICclZCBidWxhbicsXG4gICAgICAgICAgICB5IDogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgdGFodW4nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1zO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbXNNeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21zLW15Jywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0FoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RlbmdhaGFyaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BldGFuZyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tFc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xlcGFzIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyB5YW5nIGxlcGFzJyxcbiAgICAgICAgICAgIHMgOiAnYmViZXJhcGEgc2FhdCcsXG4gICAgICAgICAgICBzcyA6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG0gOiAnc2VtaW5pdCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW5pdCcsXG4gICAgICAgICAgICBoIDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGphbScsXG4gICAgICAgICAgICBkIDogJ3NlaGFyaScsXG4gICAgICAgICAgICBkZCA6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE0gOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTSA6ICclZCBidWxhbicsXG4gICAgICAgICAgICB5IDogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgdGFodW4nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1zTXk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ210Jywge1xuICAgICAgICBtb250aHMgOiAnSmFubmFyX0ZyYXJfTWFyenVfQXByaWxfTWVqanVfxKB1bmp1X0x1bGp1X0F3d2lzc3VfU2V0dGVtYnJ1X090dHVicnVfTm92ZW1icnVfRGnEi2VtYnJ1Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRnJhX01hcl9BcHJfTWVqX8SgdW5fTHVsX0F3d19TZXRfT3R0X05vdl9EacSLJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdJbC3EpmFkZF9JdC1UbmVqbl9JdC1UbGlldGFfTC1FcmJnxKdhX0lsLcSmYW1pc19JbC3EoGltZ8SnYV9Jcy1TaWJ0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ8SmYWRfVG5lX1RsaV9FcmJfxKZhbV/EoGltX1NpYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnxKZhX1RuX1RsX0VyX8SmYV/EoGlfU2knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tJbGx1bSBmaWwtXUxUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0fEp2FkYSBmaWwtXUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2ZpbC1dTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbSWwtYmllcmHEpyBmaWwtXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xpIGfEp2FkZGFdIFtmaWwtXUxUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdm4oCZICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgaWx1JyxcbiAgICAgICAgICAgIHMgOiAnZnRpdCBzZWtvbmRpJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla29uZGknLFxuICAgICAgICAgICAgbSA6ICdtaW51dGEnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGggOiAnc2llZ8SnYScsXG4gICAgICAgICAgICBoaCA6ICclZCBzaWVnxKdhdCcsXG4gICAgICAgICAgICBkIDogJ8ShdXJuYXRhJyxcbiAgICAgICAgICAgIGRkIDogJyVkIMShcmFuZXQnLFxuICAgICAgICAgICAgTSA6ICd4YWhhcicsXG4gICAgICAgICAgICBNTSA6ICclZCB4aHVyJyxcbiAgICAgICAgICAgIHkgOiAnc2VuYScsXG4gICAgICAgICAgICB5eSA6ICclZCBzbmknXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+GBgScsXG4gICAgICAgICcyJzogJ+GBgicsXG4gICAgICAgICczJzogJ+GBgycsXG4gICAgICAgICc0JzogJ+GBhCcsXG4gICAgICAgICc1JzogJ+GBhScsXG4gICAgICAgICc2JzogJ+GBhicsXG4gICAgICAgICc3JzogJ+GBhycsXG4gICAgICAgICc4JzogJ+GBiCcsXG4gICAgICAgICc5JzogJ+GBiScsXG4gICAgICAgICcwJzogJ+GBgCdcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfhgYEnOiAnMScsXG4gICAgICAgICfhgYInOiAnMicsXG4gICAgICAgICfhgYMnOiAnMycsXG4gICAgICAgICfhgYQnOiAnNCcsXG4gICAgICAgICfhgYUnOiAnNScsXG4gICAgICAgICfhgYYnOiAnNicsXG4gICAgICAgICfhgYcnOiAnNycsXG4gICAgICAgICfhgYgnOiAnOCcsXG4gICAgICAgICfhgYknOiAnOScsXG4gICAgICAgICfhgYAnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIG15ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXknLCB7XG4gICAgICAgIG1vbnRoczogJ+GAh+GAlOGAuuGAlOGAneGAq+GAm+GArl/hgJbhgLHhgJbhgLHhgKzhgLrhgJ3hgKvhgJvhgK5f4YCZ4YCQ4YC6X+GAp+GAleGAvOGArl/hgJnhgLFf4YCH4YC94YCU4YC6X+GAh+GAsOGAnOGAreGAr+GAhOGAul/hgJ7hgLzhgILhgK/hgJDhgLpf4YCF4YCA4YC64YCQ4YCE4YC64YCY4YCsX+GAoeGAseGArOGAgOGAuuGAkOGAreGAr+GAmOGArF/hgJThgK3hgK/hgJ3hgIThgLrhgJjhgKxf4YCS4YCu4YCH4YCE4YC64YCY4YCsJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ+GAh+GAlOGAul/hgJbhgLFf4YCZ4YCQ4YC6X+GAleGAvOGArl/hgJnhgLFf4YCH4YC94YCU4YC6X+GAnOGAreGAr+GAhOGAul/hgJ7hgLxf4YCF4YCA4YC6X+GAoeGAseGArOGAgOGAul/hgJThgK3hgK9f4YCS4YCuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ+GAkOGAlOGAhOGAuuGAueGAguGAlOGAveGAsV/hgJDhgJThgIThgLrhgLnhgJzhgKxf4YCh4YCE4YC64YC54YCC4YCrX+GAl+GAr+GAkuGAueGAk+GAn+GAsOGAuF/hgIDhgLzhgKzhgJ7hgJXhgJDhgLHhgLhf4YCe4YCx4YCs4YCA4YC84YCsX+GAheGAlOGAsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+GAlOGAveGAsV/hgJzhgKxf4YCC4YCrX+GAn+GAsOGAuF/hgIDhgLzhgKxf4YCe4YCx4YCsX+GAlOGAsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfhgJThgL3hgLFf4YCc4YCsX+GAguGAq1/hgJ/hgLDhgLhf4YCA4YC84YCsX+GAnuGAseGArF/hgJThgLEnLnNwbGl0KCdfJyksXG5cbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4YCa4YCU4YCxLl0gTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhgJnhgJThgIDhgLrhgJbhgLzhgJThgLpdIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+GAmeGAlOGAsS7hgIBdIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+GAleGAvOGAruGAuOGAgeGAsuGAt+GAnuGAseGArF0gZGRkZCBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn4YCc4YCs4YCZ4YCK4YC64YC3ICVzIOGAmeGAvuGArCcsXG4gICAgICAgICAgICBwYXN0OiAn4YCc4YC94YCU4YC64YCB4YCy4YC34YCe4YCx4YCsICVzIOGAgCcsXG4gICAgICAgICAgICBzOiAn4YCF4YCA4YC54YCA4YCU4YC6LuGAoeGAlOGAiuGAuuGAuOGAhOGAmuGAuicsXG4gICAgICAgICAgICBzcyA6ICclZCDhgIXhgIDhgLnhgIDhgJThgLfhgLonLFxuICAgICAgICAgICAgbTogJ+GAkOGAheGAuuGAmeGAreGAlOGAheGAuicsXG4gICAgICAgICAgICBtbTogJyVkIOGAmeGAreGAlOGAheGAuicsXG4gICAgICAgICAgICBoOiAn4YCQ4YCF4YC64YCU4YCs4YCb4YCuJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4YCU4YCs4YCb4YCuJyxcbiAgICAgICAgICAgIGQ6ICfhgJDhgIXhgLrhgJvhgIDhgLonLFxuICAgICAgICAgICAgZGQ6ICclZCDhgJvhgIDhgLonLFxuICAgICAgICAgICAgTTogJ+GAkOGAheGAuuGAnCcsXG4gICAgICAgICAgICBNTTogJyVkIOGAnCcsXG4gICAgICAgICAgICB5OiAn4YCQ4YCF4YC64YCU4YC+4YCF4YC6JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4YCU4YC+4YCF4YC6J1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4YGB4YGC4YGD4YGE4YGF4YGG4YGH4YGI4YGJ4YGAXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG15O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbmIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCduYicsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbi5fZmViLl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnc8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzw7guX21hLl90aS5fb24uX3RvLl9mci5fbMO4Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tpIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaSBtb3JnZW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpIGfDpXIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tmb3JyaWdlXSBkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgc2lkZW4nLFxuICAgICAgICAgICAgcyA6ICdub2VuIHNla3VuZGVyJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG0gOiAnZXR0IG1pbnV0dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dHRlcicsXG4gICAgICAgICAgICBoIDogJ2VuIHRpbWUnLFxuICAgICAgICAgICAgaGggOiAnJWQgdGltZXInLFxuICAgICAgICAgICAgZCA6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnZXInLFxuICAgICAgICAgICAgTSA6ICdlbiBtw6VuZWQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOlbmVkZXInLFxuICAgICAgICAgICAgeSA6ICdldHQgw6VyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMOlcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBuYjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4KWnJyxcbiAgICAgICAgJzInOiAn4KWoJyxcbiAgICAgICAgJzMnOiAn4KWpJyxcbiAgICAgICAgJzQnOiAn4KWqJyxcbiAgICAgICAgJzUnOiAn4KWrJyxcbiAgICAgICAgJzYnOiAn4KWsJyxcbiAgICAgICAgJzcnOiAn4KWtJyxcbiAgICAgICAgJzgnOiAn4KWuJyxcbiAgICAgICAgJzknOiAn4KWvJyxcbiAgICAgICAgJzAnOiAn4KWmJ1xuICAgIH0sXG4gICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4KWnJzogJzEnLFxuICAgICAgICAn4KWoJzogJzInLFxuICAgICAgICAn4KWpJzogJzMnLFxuICAgICAgICAn4KWqJzogJzQnLFxuICAgICAgICAn4KWrJzogJzUnLFxuICAgICAgICAn4KWsJzogJzYnLFxuICAgICAgICAn4KWtJzogJzcnLFxuICAgICAgICAn4KWuJzogJzgnLFxuICAgICAgICAn4KWvJzogJzknLFxuICAgICAgICAn4KWmJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBuZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25lJywge1xuICAgICAgICBtb250aHMgOiAn4KSc4KSo4KS14KSw4KWAX+Ckq+Clh+CkrOCljeCksOClgeCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KS/4KSyX+CkruCkiF/gpJzgpYHgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+Ckt+CljeCkn1/gpLjgpYfgpKrgpY3gpJ/gpYfgpK7gpY3gpKzgpLBf4KSF4KSV4KWN4KSf4KWL4KSs4KSwX+CkqOCli+CkreClh+CkruCljeCkrOCksF/gpKHgpL/gpLjgpYfgpK7gpY3gpKzgpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+CknOCkqC5f4KSr4KWH4KSs4KWN4KSw4KWBLl/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KS/Ll/gpK7gpIhf4KSc4KWB4KSoX+CknOClgeCksuCkvuCkiC5f4KSF4KSXLl/gpLjgpYfgpKrgpY3gpJ8uX+CkheCkleCljeCkn+Cliy5f4KSo4KWL4KSt4KWHLl/gpKHgpL/gpLjgpYcuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn4KSG4KSH4KSk4KSs4KS+4KSwX+CkuOCli+CkruCkrOCkvuCksF/gpK7gpJngpY3gpJfgpLLgpKzgpL7gpLBf4KSs4KWB4KSn4KSs4KS+4KSwX+CkrOCkv+CkueCkv+CkrOCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpKzgpL7gpLBf4KS24KSo4KS/4KSs4KS+4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CkhuCkh+CkpC5f4KS44KWL4KSuLl/gpK7gpJngpY3gpJfgpLIuX+CkrOClgeCkpy5f4KSs4KS/4KS54KS/Ll/gpLbgpYHgpJXgpY3gpLAuX+CktuCkqOCkvy4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+Ckhi5f4KS44KWLLl/gpK7gpIIuX+CkrOClgS5f4KSs4KS/Ll/gpLbgpYEuX+Ckti4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQeCkleCliyBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMVFMgOiAnQeCkleCliyBoOm1tOnNzIOCkrOCknOClhycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEHgpJXgpYsgaDptbSDgpKzgpJzgpYcnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKTgpL984KSs4KS/4KS54KS+4KSofOCkpuCkv+CkieCkgeCkuOCli3zgpLjgpL7gpIHgpJ0vLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSw4KS+4KSk4KS/Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSs4KS/4KS54KS+4KSoJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuCkv+CkieCkgeCkuOCliycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KS+4KSB4KSdJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpL8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkrOCkv+CkueCkvuCkqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KS/4KSJ4KSB4KS44KWLJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpL7gpIHgpJ0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCkvyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4KSG4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgpK3gpYvgpLLgpL9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vgpIbgpIngpIHgpKbgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4KS54KS/4KSc4KWLXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4KSX4KSP4KSV4KWLXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclc+CkruCkvicsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOCkheCkl+CkvuCkoeCkvycsXG4gICAgICAgICAgICBzIDogJ+CkleClh+CkueClgCDgpJXgpY3gpLfgpKMnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4KS44KWH4KSV4KWH4KSj4KWN4KShJyxcbiAgICAgICAgICAgIG0gOiAn4KSP4KSVIOCkruCkv+CkqOClh+CknycsXG4gICAgICAgICAgICBtbSA6ICclZCDgpK7gpL/gpKjgpYfgpJ8nLFxuICAgICAgICAgICAgaCA6ICfgpI/gpJUg4KSY4KSj4KWN4KSf4KS+JyxcbiAgICAgICAgICAgIGhoIDogJyVkIOCkmOCko+CljeCkn+CkvicsXG4gICAgICAgICAgICBkIDogJ+Ckj+CklSDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIE0gOiAn4KSP4KSVIOCkruCkueCkv+CkqOCkvicsXG4gICAgICAgICAgICBNTSA6ICclZCDgpK7gpLngpL/gpKjgpL4nLFxuICAgICAgICAgICAgeSA6ICfgpI/gpJUg4KSs4KSw4KWN4KS3JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCkrOCksOCljeCktydcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID0gJ2phbi5fZmViLl9tcnQuX2Fwci5fbWVpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0V2l0aG91dERvdHMgPSAnamFuX2ZlYl9tcnRfYXByX21laV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyk7XG5cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbL15qYW4vaSwgL15mZWIvaSwgL15tYWFydHxtcnQuPyQvaSwgL15hcHIvaSwgL15tZWkkL2ksIC9eanVuW2kuXT8kL2ksIC9eanVsW2kuXT8kL2ksIC9eYXVnL2ksIC9ec2VwL2ksIC9eb2t0L2ksIC9ebm92L2ksIC9eZGVjL2ldO1xuICAgIHZhciBtb250aHNSZWdleCA9IC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaTtcblxuICAgIHZhciBubCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25sJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98bWVpfGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgd2Vla2RheXMgOiAnem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICd6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3pvX21hX2RpX3dvX2RvX3ZyX3phJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW3ZhbmRhYWcgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dpc3RlcmVuIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1thZmdlbG9wZW5dIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvdmVyICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgZ2VsZWRlbicsXG4gICAgICAgICAgICBzIDogJ2VlbiBwYWFyIHNlY29uZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGVuJyxcbiAgICAgICAgICAgIG0gOiAnw6nDqW4gbWludXV0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZW4nLFxuICAgICAgICAgICAgaCA6ICfDqcOpbiB1dXInLFxuICAgICAgICAgICAgaGggOiAnJWQgdXVyJyxcbiAgICAgICAgICAgIGQgOiAnw6nDqW4gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2VuJyxcbiAgICAgICAgICAgIE0gOiAnw6nDqW4gbWFhbmQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWFhbmRlbicsXG4gICAgICAgICAgICB5IDogJ8Opw6luIGphYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgamFhcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICgobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjApID8gJ3N0ZScgOiAnZGUnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID0gJ2phbi5fZmViLl9tcnQuX2Fwci5fbWVpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0V2l0aG91dERvdHMgPSAnamFuX2ZlYl9tcnRfYXByX21laV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyk7XG5cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbL15qYW4vaSwgL15mZWIvaSwgL15tYWFydHxtcnQuPyQvaSwgL15hcHIvaSwgL15tZWkkL2ksIC9eanVuW2kuXT8kL2ksIC9eanVsW2kuXT8kL2ksIC9eYXVnL2ksIC9ec2VwL2ksIC9eb2t0L2ksIC9ebm92L2ksIC9eZGVjL2ldO1xuICAgIHZhciBtb250aHNSZWdleCA9IC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaTtcblxuICAgIHZhciBubEJlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmwtYmUnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aG91dERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14oamFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xtZWl8anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2ksXG5cbiAgICAgICAgbW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcblxuICAgICAgICB3ZWVrZGF5cyA6ICd6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3pvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnem9fbWFfZGlfd29fZG9fdnJfemEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbdmFuZGFhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2lzdGVyZW4gb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ292ZXIgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBnZWxlZGVuJyxcbiAgICAgICAgICAgIHMgOiAnZWVuIHBhYXIgc2Vjb25kZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kZW4nLFxuICAgICAgICAgICAgbSA6ICfDqcOpbiBtaW51dXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlbicsXG4gICAgICAgICAgICBoIDogJ8Opw6luIHV1cicsXG4gICAgICAgICAgICBoaCA6ICclZCB1dXInLFxuICAgICAgICAgICAgZCA6ICfDqcOpbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnZW4nLFxuICAgICAgICAgICAgTSA6ICfDqcOpbiBtYWFuZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtYWFuZGVuJyxcbiAgICAgICAgICAgIHkgOiAnw6nDqW4gamFhcicsXG4gICAgICAgICAgICB5eSA6ICclZCBqYWFyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCkgPyAnc3RlJyA6ICdkZScpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBubEJlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbm4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubicsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzdW5kYWdfbcOlbmRhZ190eXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xhdXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc3VuX23DpW5fdHlzX29uc190b3JfZnJlX2xhdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc3VfbcOlX3R5X29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0kgZGFnIGtsb2trYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tJIG1vcmdvbiBrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2xva2thXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0kgZ8OlciBrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0bDuHJlZ8OlYW5kZV0gZGRkZCBba2xva2thXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHNpZGFuJyxcbiAgICAgICAgICAgIHMgOiAnbm9rcmUgc2VrdW5kJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZCcsXG4gICAgICAgICAgICBtIDogJ2VpdCBtaW51dHQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXR0JyxcbiAgICAgICAgICAgIGggOiAnZWluIHRpbWUnLFxuICAgICAgICAgICAgaGggOiAnJWQgdGltYXInLFxuICAgICAgICAgICAgZCA6ICdlaW4gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIE0gOiAnZWluIG3DpW5hZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtw6VuYWRlcicsXG4gICAgICAgICAgICB5IDogJ2VpdCDDpXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgw6VyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5uO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgqacnLFxuICAgICAgICAnMic6ICfgqagnLFxuICAgICAgICAnMyc6ICfgqaknLFxuICAgICAgICAnNCc6ICfgqaonLFxuICAgICAgICAnNSc6ICfgqasnLFxuICAgICAgICAnNic6ICfgqawnLFxuICAgICAgICAnNyc6ICfgqa0nLFxuICAgICAgICAnOCc6ICfgqa4nLFxuICAgICAgICAnOSc6ICfgqa8nLFxuICAgICAgICAnMCc6ICfgqaYnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgqacnOiAnMScsXG4gICAgICAgICfgqagnOiAnMicsXG4gICAgICAgICfgqaknOiAnMycsXG4gICAgICAgICfgqaonOiAnNCcsXG4gICAgICAgICfgqasnOiAnNScsXG4gICAgICAgICfgqawnOiAnNicsXG4gICAgICAgICfgqa0nOiAnNycsXG4gICAgICAgICfgqa4nOiAnOCcsXG4gICAgICAgICfgqa8nOiAnOScsXG4gICAgICAgICfgqaYnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIHBhSW4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwYS1pbicsIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIG1vbnRocyBuYW1lIGFzIHBlciBOYW5ha3NoYWhpIENhbGVuZGFyIGJ1dCB0aGV5IGFyZSBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBQdW5qYWJpLlxuICAgICAgICBtb250aHMgOiAn4Kic4Kio4Ki14Kiw4KmAX+Coq+CovOCosOCoteCosOCpgF/gqK7gqL7gqLDgqJpf4KiF4Kiq4KmN4Kiw4KmI4KiyX+CoruCoiF/gqJzgqYLgqKhf4Kic4KmB4Kiy4Ki+4KiIX+CoheCol+CouOCopF/gqLjgqKTgqbDgqKzgqLBf4KiF4KiV4Kik4KmC4Kis4KiwX+CoqOCoteCpsOCorOCosF/gqKbgqLjgqbDgqKzgqLAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+ConOCoqOCoteCosOCpgF/gqKvgqLzgqLDgqLXgqLDgqYBf4Kiu4Ki+4Kiw4KiaX+CoheCoquCpjeCosOCpiOCosl/gqK7gqIhf4Kic4KmC4KioX+ConOCpgeCosuCovuCoiF/gqIXgqJfgqLjgqKRf4Ki44Kik4Kmw4Kis4KiwX+CoheColeCopOCpguCorOCosF/gqKjgqLXgqbDgqKzgqLBf4Kim4Ki44Kmw4Kis4KiwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgqJDgqKTgqLXgqL7gqLBf4Ki44KmL4Kiu4Ki14Ki+4KiwX+CoruCpsOCol+CosuCoteCovuCosF/gqKzgqYHgqKfgqLXgqL7gqLBf4Ki14KmA4Kiw4Ki14Ki+4KiwX+CouOCovOCpgeCpseColeCosOCoteCovuCosF/gqLjgqLzgqKjgqYDgqJrgqLDgqLXgqL7gqLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4KiQ4KikX+CouOCpi+Corl/gqK7gqbDgqJfgqLJf4Kis4KmB4KinX+CoteCpgOCosF/gqLjgqLzgqYHgqJXgqLBf4Ki44Ki84Kio4KmAJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgqJDgqKRf4Ki44KmL4KiuX+CoruCpsOCol+Cosl/gqKzgqYHgqKdf4Ki14KmA4KiwX+CouOCovOCpgeColeCosF/gqLjgqLzgqKjgqYAnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tIOCoteConOCphycsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzIOCoteConOCphycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4Ki14Kic4KmHJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgqLXgqJzgqYcnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4KiF4KicXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgqJXgqLJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vgqIXgqJfgqLLgqL5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+ColeCosl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+CoquCov+Com+CosuCph10gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOCoteCov+CpseComicsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOCoquCov+Com+CosuCphycsXG4gICAgICAgICAgICBzIDogJ+ColeCpgeConSDgqLjgqJXgqL/gqbDgqJ8nLFxuICAgICAgICAgICAgc3MgOiAnJWQg4Ki44KiV4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIG0gOiAn4KiH4KiVIOCoruCov+CpsOConycsXG4gICAgICAgICAgICBtbSA6ICclZCDgqK7gqL/gqbDgqJ8nLFxuICAgICAgICAgICAgaCA6ICfgqIfgqbHgqJUg4KiY4Kmw4Kif4Ki+JyxcbiAgICAgICAgICAgIGhoIDogJyVkIOComOCpsOCon+CphycsXG4gICAgICAgICAgICBkIDogJ+Coh+CpseColSDgqKbgqL/gqKgnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4Kim4Ki/4KioJyxcbiAgICAgICAgICAgIE0gOiAn4KiH4Kmx4KiVIOCoruCoueCpgOCoqOCovicsXG4gICAgICAgICAgICBNTSA6ICclZCDgqK7gqLngqYDgqKjgqYcnLFxuICAgICAgICAgICAgeSA6ICfgqIfgqbHgqJUg4Ki44Ki+4KiyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCouOCovuCosidcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cpp+CpqOCpqeCpquCpq+CprOCpreCpruCpr+Cppl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gUHVuamFiaSBub3RhdGlvbiBmb3IgbWVyaWRpZW1zIGFyZSBxdWl0ZSBmdXp6eSBpbiBwcmFjdGljZS4gV2hpbGUgdGhlcmUgZXhpc3RzXG4gICAgICAgIC8vIGEgcmlnaWQgbm90aW9uIG9mIGEgJ1BhaGFyJyBpdCBpcyBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBQdW5qYWJpLlxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kiw4Ki+4KikfOCouOCoteCph+CosHzgqKbgqYHgqKrgqLngqL/gqLB84Ki44Ki84Ki+4KiuLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CosOCovuCopCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CouOCoteCph+CosCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqKbgqYHgqKrgqLngqL/gqLAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CouOCovOCovuCoricpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kiw4Ki+4KikJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLjgqLXgqYfgqLAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CopuCpgeCoquCoueCov+CosCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ki44Ki84Ki+4KiuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLDgqL7gqKQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYUluO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzTm9taW5hdGl2ZSA9ICdzdHljemXFhF9sdXR5X21hcnplY19rd2llY2llxYRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllxYRfd3J6ZXNpZcWEX3Bhxbpkemllcm5pa19saXN0b3BhZF9ncnVkemllxYQnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1N1YmplY3RpdmUgPSAnc3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21hamFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplxZtuaWFfcGHFumR6aWVybmlrYV9saXN0b3BhZGFfZ3J1ZG5pYScuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICByZXR1cm4gKG4gJSAxMCA8IDUpICYmIChuICUgMTAgPiAxKSAmJiAoKH5+KG4gLyAxMCkgJSAxMCkgIT09IDEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla3VuZCcpO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWludXRhJyA6ICdtaW51dMSZJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbnV0eScgOiAnbWludXQnKTtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ICA/ICdnb2R6aW5hJyAgOiAnZ29kemluxJknO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZ29kemlueScgOiAnZ29kemluJyk7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaWVzacSFY2UnIDogJ21pZXNpxJljeScpO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbGF0YScgOiAnbGF0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcGwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwbCcsIHtcbiAgICAgICAgbW9udGhzIDogZnVuY3Rpb24gKG1vbWVudFRvRm9ybWF0LCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50VG9Gb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzTm9taW5hdGl2ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnJykge1xuICAgICAgICAgICAgICAgIC8vIEhhY2s6IGlmIGZvcm1hdCBlbXB0eSB3ZSBrbm93IHRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZVxuICAgICAgICAgICAgICAgIC8vIFJlZ0V4cCBieSBtb21lbnQuIEdpdmUgdGhlbiBiYWNrIGJvdGggdmFsaWQgZm9ybXMgb2YgbW9udGhzXG4gICAgICAgICAgICAgICAgLy8gaW4gUmVnRXhwIHJlYWR5IGZvcm1hdC5cbiAgICAgICAgICAgICAgICByZXR1cm4gJygnICsgbW9udGhzU3ViamVjdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXSArICd8JyArIG1vbnRoc05vbWluYXRpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV0gKyAnKSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC9EIE1NTU0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTdWJqZWN0aXZlW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzTm9taW5hdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnc3R5X2x1dF9tYXJfa3dpX21hal9jemVfbGlwX3NpZV93cnpfcGHFul9saXNfZ3J1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICduaWVkemllbGFfcG9uaWVkemlhxYJla193dG9yZWtfxZtyb2RhX2N6d2FydGVrX3BpxIV0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ25kel9wb25fd3RfxZtyX2N6d19wdF9zb2InLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ05kX1BuX1d0X8Wacl9Del9QdF9Tbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbRHppxZsgb10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tKdXRybyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIG5pZWR6aWVsxJkgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1dlIHd0b3JlayBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyDFm3JvZMSZIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHNvYm90xJkgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXXSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbV2N6b3JhaiBvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgsSFIG5pZWR6aWVsxJkgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgsSFIMWbcm9kxJkgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgsSFIHNvYm90xJkgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYJ5XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgdGVtdScsXG4gICAgICAgICAgICBzIDogJ2tpbGthIHNla3VuZCcsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiAnMSBkemllxYQnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZG5pJyxcbiAgICAgICAgICAgIE0gOiAnbWllc2nEhWMnLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogJ3JvaycsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgcHQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwdCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbmVpcm9fRmV2ZXJlaXJvX01hcsOnb19BYnJpbF9NYWlvX0p1bmhvX0p1bGhvX0Fnb3N0b19TZXRlbWJyb19PdXR1YnJvX05vdmVtYnJvX0RlemVtYnJvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnRG9taW5nb19TZWd1bmRhLWZlaXJhX1RlcsOnYS1mZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnRG9fMsKqXzPCql80wqpfNcKqXzbCql9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmRheSgpID09PSAwIHx8IHRoaXMuZGF5KCkgPT09IDYpID9cbiAgICAgICAgICAgICAgICAgICAgJ1vDmmx0aW1vXSBkZGRkIFvDoHNdIExUJyA6IC8vIFNhdHVyZGF5ICsgU3VuZGF5XG4gICAgICAgICAgICAgICAgICAgICdbw5psdGltYV0gZGRkZCBbw6BzXSBMVCc7IC8vIE1vbmRheSAtIEZyaWRheVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaMOhICVzJyxcbiAgICAgICAgICAgIHMgOiAnc2VndW5kb3MnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbSA6ICd1bSBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoIDogJ3VtYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW0gZGlhJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRpYXMnLFxuICAgICAgICAgICAgTSA6ICd1bSBtw6pzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW0gYW5vJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFub3MnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBwdEJyID0gbW9tZW50LmRlZmluZUxvY2FsZSgncHQtYnInLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW5laXJvX0ZldmVyZWlyb19NYXLDp29fQWJyaWxfTWFpb19KdW5ob19KdWxob19BZ29zdG9fU2V0ZW1icm9fT3V0dWJyb19Ob3ZlbWJyb19EZXplbWJybycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19TZXRfT3V0X05vdl9EZXonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0RvbWluZ29fU2VndW5kYS1mZWlyYV9UZXLDp2EtZmVpcmFfUXVhcnRhLWZlaXJhX1F1aW50YS1mZWlyYV9TZXh0YS1mZWlyYV9Tw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0RvbV9TZWdfVGVyX1F1YV9RdWlfU2V4X1PDoWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0RvXzLCql8zwqpfNMKqXzXCql82wqpfU8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIb2plIMOgc10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBbWFuaMOjIMOgc10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbT250ZW0gw6BzXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5kYXkoKSA9PT0gMCB8fCB0aGlzLmRheSgpID09PSA2KSA/XG4gICAgICAgICAgICAgICAgICAgICdbw5psdGltb10gZGRkZCBbw6BzXSBMVCcgOiAvLyBTYXR1cmRheSArIFN1bmRheVxuICAgICAgICAgICAgICAgICAgICAnW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQnOyAvLyBNb25kYXkgLSBGcmlkYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdlbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2jDoSAlcycsXG4gICAgICAgICAgICBzIDogJ3BvdWNvcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtIDogJ3VtIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGggOiAndW1hIGhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZCA6ICd1bSBkaWEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGlhcycsXG4gICAgICAgICAgICBNIDogJ3VtIG3DqnMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeSA6ICd1bSBhbm8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5vcydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsIDogJyVkwronXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHRCcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgICAgICdzcyc6ICdzZWN1bmRlJyxcbiAgICAgICAgICAgICAgICAnbW0nOiAnbWludXRlJyxcbiAgICAgICAgICAgICAgICAnaGgnOiAnb3JlJyxcbiAgICAgICAgICAgICAgICAnZGQnOiAnemlsZScsXG4gICAgICAgICAgICAgICAgJ01NJzogJ2x1bmknLFxuICAgICAgICAgICAgICAgICd5eSc6ICdhbmknXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VwYXJhdG9yID0gJyAnO1xuICAgICAgICBpZiAobnVtYmVyICUgMTAwID49IDIwIHx8IChudW1iZXIgPj0gMTAwICYmIG51bWJlciAlIDEwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9ICcgZGUgJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyICsgc2VwYXJhdG9yICsgZm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIHJvID0gbW9tZW50LmRlZmluZUxvY2FsZSgncm8nLCB7XG4gICAgICAgIG1vbnRocyA6ICdpYW51YXJpZV9mZWJydWFyaWVfbWFydGllX2FwcmlsaWVfbWFpX2l1bmllX2l1bGllX2F1Z3VzdF9zZXB0ZW1icmllX29jdG9tYnJpZV9ub2llbWJyaWVfZGVjZW1icmllJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdpYW4uX2ZlYnIuX21hcnQuX2Fwci5fbWFpX2l1bi5faXVsLl9hdWcuX3NlcHQuX29jdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkdW1pbmljxINfbHVuaV9tYXLIm2lfbWllcmN1cmlfam9pX3ZpbmVyaV9zw6JtYsSDdMSDJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0R1bV9MdW5fTWFyX01pZV9Kb2lfVmluX1PDom0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0R1X0x1X01hX01pX0pvX1ZpX1PDoicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1themkgbGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbcOiaW5lIGxhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2xhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2llcmkgbGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2Zvc3RhXSBkZGRkIFtsYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAncGVzdGUgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDDrm4gdXJtxIMnLFxuICAgICAgICAgICAgcyA6ICdjw6J0ZXZhIHNlY3VuZGUnLFxuICAgICAgICAgICAgc3MgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dCcsXG4gICAgICAgICAgICBtbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoIDogJ28gb3LEgycsXG4gICAgICAgICAgICBoaCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkIDogJ28gemknLFxuICAgICAgICAgICAgZGQgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTSA6ICdvIGx1bsSDJyxcbiAgICAgICAgICAgIE1NIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHkgOiAndW4gYW4nLFxuICAgICAgICAgICAgeXkgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IChudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMCkgPyBmb3Jtc1sxXSA6IGZvcm1zWzJdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3NzJzogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICAnbW0nOiB3aXRob3V0U3VmZml4ID8gJ9C80LjQvdGD0YLQsF/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgicgOiAn0LzQuNC90YPRgtGDX9C80LjQvdGD0YLRi1/QvNC40L3Rg9GCJyxcbiAgICAgICAgICAgICdoaCc6ICfRh9Cw0YFf0YfQsNGB0LBf0YfQsNGB0L7QsicsXG4gICAgICAgICAgICAnZGQnOiAn0LTQtdC90Yxf0LTQvdGPX9C00L3QtdC5JyxcbiAgICAgICAgICAgICdNTSc6ICfQvNC10YHRj9GGX9C80LXRgdGP0YbQsF/QvNC10YHRj9GG0LXQsicsXG4gICAgICAgICAgICAneXknOiAn0LPQvtC0X9Cz0L7QtNCwX9C70LXRgidcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQvNC40L3Rg9GC0LAnIDogJ9C80LjQvdGD0YLRgyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbL17Rj9C90LIvaSwgL17RhNC10LIvaSwgL17QvNCw0YAvaSwgL17QsNC/0YAvaSwgL17QvNCwW9C50Y9dL2ksIC9e0LjRjtC9L2ksIC9e0LjRjtC7L2ksIC9e0LDQstCzL2ksIC9e0YHQtdC9L2ksIC9e0L7QutGCL2ksIC9e0L3QvtGPL2ksIC9e0LTQtdC6L2ldO1xuXG4gICAgLy8gaHR0cDovL25ldy5ncmFtb3RhLnJ1L3NwcmF2a2EvcnVsZXMvMTM5LXByb3AgOiDCpyAxMDNcbiAgICAvLyDQodC+0LrRgNCw0YnQtdC90LjRjyDQvNC10YHRj9GG0LXQsjogaHR0cDovL25ldy5ncmFtb3RhLnJ1L3NwcmF2a2EvYnVyby9zZWFyY2gtYW5zd2VyP3M9MjQyNjM3XG4gICAgLy8gQ0xEUiBkYXRhOiAgICAgICAgICBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NsZHIvY2hhcnRzLzI4L3N1bW1hcnkvcnUuaHRtbCMxNzUzXG4gICAgdmFyIHJ1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgncnUnLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9GP0L3QstCw0YDRj1/RhNC10LLRgNCw0LvRj1/QvNCw0YDRgtCwX9Cw0L/RgNC10LvRj1/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCz0YPRgdGC0LBf0YHQtdC90YLRj9Cx0YDRj1/QvtC60YLRj9Cx0YDRj1/QvdC+0Y/QsdGA0Y9f0LTQtdC60LDQsdGA0Y8nLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMJy5zcGxpdCgnXycpXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDoge1xuICAgICAgICAgICAgLy8g0L/QviBDTERSINC40LzQtdC90L3QviBcItC40Y7Quy5cIiDQuCBcItC40Y7QvS5cIiwg0L3QviDQutCw0LrQvtC5INGB0LzRi9GB0Lsg0LzQtdC90Y/RgtGMINCx0YPQutCy0YMg0L3QsCDRgtC+0YfQutGDID9cbiAgICAgICAgICAgIGZvcm1hdDogJ9GP0L3Qsi5f0YTQtdCy0YAuX9C80LDRgC5f0LDQv9GALl/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCzLl/RgdC10L3Rgi5f0L7QutGCLl/QvdC+0Y/QsS5f0LTQtdC6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfRj9C90LIuX9GE0LXQstGALl/QvNCw0YDRgl/QsNC/0YAuX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouJy5zcGxpdCgnXycpXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzIDoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9Cy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNCwX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtCwX9GB0YPQsdCx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgZm9ybWF0OiAn0LLQvtGB0LrRgNC10YHQtdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00YNf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0YNf0YHRg9Cx0LHQvtGC0YMnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL1xcWyA/W9CS0LJdID8oPzrQv9GA0L7RiNC70YPRjnzRgdC70LXQtNGD0Y7RidGD0Y580Y3RgtGDKT8gP1xcXSA/ZGRkZC9cbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIC8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGPINGBINC/0LDQtNC10LbQsNC80LgsINC/0L4g0YLRgNC4INCx0YPQutCy0YssINC00LvRjyDQvdC10LrQvtGC0L7RgNGL0YUsINC/0L4gNCDQsdGD0LrQstGLLCDRgdC+0LrRgNCw0YnQtdC90LjRjyDRgSDRgtC+0YfQutC+0Lkg0Lgg0LHQtdC3INGC0L7Rh9C60LhcbiAgICAgICAgbW9udGhzUmVnZXg6IC9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXFwuP3zRhNC10LLRgNCw0Ltb0YzRj1180YTQtdCy0YA/XFwuP3zQvNCw0YDRgtCwP3zQvNCw0YBcXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXFwuP3zQvNCwW9C50Y9dfNC40Y7QvVvRjNGPXXzQuNGO0L1cXC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcXC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcXC4/fNGB0LXQvdGC0Y/QsdGAW9GM0Y9dfNGB0LXQvdGCP1xcLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglxcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cXC4/fNC00LXQutCw0LHRgFvRjNGPXXzQtNC10LpcXC4/KS9pLFxuXG4gICAgICAgIC8vINC60L7Qv9C40Y8g0L/RgNC10LTRi9C00YPRidC10LPQvlxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiAvXijRj9C90LLQsNGAW9GM0Y9dfNGP0L3QslxcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1xcLj980LzQsNGA0YLQsD980LzQsNGAXFwuP3zQsNC/0YDQtdC7W9GM0Y9dfNCw0L/RgFxcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XFwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XFwuP3zQsNCy0LPRg9GB0YLQsD980LDQstCzXFwuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cXC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcXC4/fNC90L7Rj9Cx0YBb0YzRj1180L3QvtGP0LE/XFwuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XFwuPykvaSxcblxuICAgICAgICAvLyDQv9C+0LvQvdGL0LUg0L3QsNC30LLQsNC90LjRjyDRgSDQv9Cw0LTQtdC20LDQvNC4XG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvXijRj9C90LLQsNGAW9GP0YxdfNGE0LXQstGA0LDQu1vRj9GMXXzQvNCw0YDRgtCwP3zQsNC/0YDQtdC7W9GP0YxdfNC80LBb0Y/QuV180LjRjtC9W9GP0YxdfNC40Y7Qu1vRj9GMXXzQsNCy0LPRg9GB0YLQsD980YHQtdC90YLRj9Cx0YBb0Y/RjF180L7QutGC0Y/QsdGAW9GP0YxdfNC90L7Rj9Cx0YBb0Y/RjF180LTQtdC60LDQsdGAW9GP0YxdKS9pLFxuXG4gICAgICAgIC8vINCS0YvRgNCw0LbQtdC90LjQtSwg0LrQvtGC0L7RgNC+0LUg0YHQvtC+0YLQstC10YHRgtCy0YPQtdGCINGC0L7Qu9GM0LrQviDRgdC+0LrRgNCw0YnRkdC90L3Ri9C8INGE0L7RgNC80LDQvFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvXijRj9C90LJcXC580YTQtdCy0YA/XFwufNC80LDRgFvRgi5dfNCw0L/RgFxcLnzQvNCwW9GP0LldfNC40Y7QvVvRjNGPLl180LjRjtC7W9GM0Y8uXXzQsNCy0LNcXC580YHQtdC90YI/XFwufNC+0LrRglxcLnzQvdC+0Y/QsT9cXC580LTQtdC6XFwuKS9pLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZINCzLicsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg0LMuLCBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkg0LMuLCBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0KHQtdCz0L7QtNC90Y8sINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9CX0LDQstGC0YDQsCwg0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JLRh9C10YDQsCwg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy53ZWVrKCkgIT09IHRoaXMud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQtdC00YPRjtGJ0LXQtV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0YHQu9C10LTRg9GO0YnQuNC5XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDRgdC70LXQtNGD0Y7RidGD0Y5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF5KCkgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CS0L5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JJdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy53ZWVrKCkgIT09IHRoaXMud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC/0YDQvtGI0LvQvtC1XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQv9GA0L7RiNC70YvQuV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9GD0Y5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF5KCkgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CS0L5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JJdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9GH0LXRgNC10LcgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDQvdCw0LfQsNC0JyxcbiAgICAgICAgICAgIHMgOiAn0L3QtdGB0LrQvtC70YzQutC+INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzcyA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGggOiAn0YfQsNGBJyxcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiAn0LTQtdC90YwnLFxuICAgICAgICAgICAgZGQgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTSA6ICfQvNC10YHRj9GGJyxcbiAgICAgICAgICAgIE1NIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHkgOiAn0LPQvtC0JyxcbiAgICAgICAgICAgIHl5IDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0L3QvtGH0Lh80YPRgtGA0LB80LTQvdGPfNCy0LXRh9C10YDQsC9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o0LTQvdGPfNCy0LXRh9C10YDQsCkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9C4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRg9GC0YDQsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LTQvdGPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQstC10YfQtdGA0LAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC5fNCz0L580Y8pLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC5JztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQvic7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGPJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBydTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgJ9is2YbZiNix2YonLFxuICAgICAgICAn2YHZitio2LHZiNix2YonLFxuICAgICAgICAn2YXYp9ix2oYnLFxuICAgICAgICAn2KfZvtix2YrZhCcsXG4gICAgICAgICfZhdim2YonLFxuICAgICAgICAn2KzZiNmGJyxcbiAgICAgICAgJ9is2YjZhNin2KHZkCcsXG4gICAgICAgICfYotqv2LPZvScsXG4gICAgICAgICfYs9mK2b7ZvdmF2KjYsScsXG4gICAgICAgICfYotqq2b3ZiNio2LEnLFxuICAgICAgICAn2YbZiNmF2KjYsScsXG4gICAgICAgICfaitiz2YXYqNixJ1xuICAgIF07XG4gICAgdmFyIGRheXMgPSBbXG4gICAgICAgICfYotqG2LEnLFxuICAgICAgICAn2LPZiNmF2LEnLFxuICAgICAgICAn2Kfasdin2LHZiCcsXG4gICAgICAgICfYp9ix2KjYuScsXG4gICAgICAgICfYrtmF2YrYsycsXG4gICAgICAgICfYrNmF2LknLFxuICAgICAgICAn2ofZhtqH2LEnXG4gICAgXTtcblxuICAgIHZhciBzZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NkJywge1xuICAgICAgICBtb250aHMgOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0IDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5cyA6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiBkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbiA6IGRheXMsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRk2IwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Ytdio2K182LTYp9mFLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtdio2K0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnO1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9in2oRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9iz2oDYp9q72YpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9in2rPZitmGINmH2YHYqtmKINiq2YpdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9qq2KfZhNmH2YddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1var9iy2LHZitmEINmH2YHYqtmKXSBkZGRkIFvYqtmKXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg2b7ZiNihJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg2KfasycsXG4gICAgICAgICAgICBzIDogJ9qG2YbYryDYs9mK2qrZhtqKJyxcbiAgICAgICAgICAgIHNzIDogJyVkINiz2YraqtmG2oonLFxuICAgICAgICAgICAgbSA6ICfZh9qqINmF2YbZvScsXG4gICAgICAgICAgICBtbSA6ICclZCDZhdmG2b0nLFxuICAgICAgICAgICAgaCA6ICfZh9qqINqq2YTYp9qqJyxcbiAgICAgICAgICAgIGhoIDogJyVkINqq2YTYp9qqJyxcbiAgICAgICAgICAgIGQgOiAn2YfaqiDaj9mK2YbZh9mGJyxcbiAgICAgICAgICAgIGRkIDogJyVkINqP2YrZhtmH2YYnLFxuICAgICAgICAgICAgTSA6ICfZh9qqINmF2YfZitmG2YgnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2YXZh9mK2YbYpycsXG4gICAgICAgICAgICB5IDogJ9mH2qog2LPYp9mEJyxcbiAgICAgICAgICAgIHl5IDogJyVkINiz2KfZhCdcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHNlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2UnLCB7XG4gICAgICAgIG1vbnRocyA6ICdvxJHEkWFqYWdlbcOhbm51X2d1b3Z2YW3DoW5udV9uanVrxI1hbcOhbm51X2N1b8WLb23DoW5udV9taWVzc2Vtw6FubnVfZ2Vhc3NlbcOhbm51X3N1b2lkbmVtw6FubnVfYm9yZ2Vtw6FubnVfxI1ha8SNYW3DoW5udV9nb2xnZ290bcOhbm51X3Nrw6FibWFtw6FubnVfanVvdmxhbcOhbm51Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdvxJHEkWpfZ3Vvdl9uanVrX2N1b19taWVzX2dlYXNfc3VvaV9ib3JnX8SNYWvEjV9nb2xnX3Nrw6FiX2p1b3YnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ3NvdG5hYmVhaXZpX3Z1b3Nzw6FyZ2FfbWHFi8WLZWLDoXJnYV9nYXNrYXZhaGtrdV9kdW9yYXN0YXRfYmVhcmphZGF0X2zDoXZ2YXJkYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc290bl92dW9zX21hxYtfZ2Fza19kdW9yX2JlYXJfbMOhdicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc192X21fZ19kX2JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ01NTU0gRC4gW2IuXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRC4gW2IuXSBZWVlZIFt0aS5dIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbb3RuZSB0aV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tpaHR0aW4gdGldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdGldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaWt0ZSB0aV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbb3ZkZGl0XSBkZGRkIFt0aV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgZ2Vhxb5lcycsXG4gICAgICAgICAgICBwYXN0IDogJ21hxYtpdCAlcycsXG4gICAgICAgICAgICBzIDogJ21vYWRkZSBzZWt1bmRkYXQnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRkYXQnLFxuICAgICAgICAgICAgbSA6ICdva3RhIG1pbnVodGEnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludWh0YXQnLFxuICAgICAgICAgICAgaCA6ICdva3RhIGRpaW1tdScsXG4gICAgICAgICAgICBoaCA6ICclZCBkaWltbXV0JyxcbiAgICAgICAgICAgIGQgOiAnb2t0YSBiZWFpdmknLFxuICAgICAgICAgICAgZGQgOiAnJWQgYmVhaXZ2aXQnLFxuICAgICAgICAgICAgTSA6ICdva3RhIG3DoW5udScsXG4gICAgICAgICAgICBNTSA6ICclZCBtw6FudXQnLFxuICAgICAgICAgICAgeSA6ICdva3RhIGphaGtpJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGphZ2l0J1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICAvKmpzaGludCAtVzEwMCovXG4gICAgdmFyIHNpID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2knLCB7XG4gICAgICAgIG1vbnRocyA6ICfgtqLgtrHgt4Dgt4/gtrvgt5Jf4La04LeZ4La24La74LeA4LeP4La74LeSX+C2uOC3j+C2u+C3iuC2reC3lF/gtoXgtrTgt4rigI3gtrvgt5rgtr3gt4pf4La44LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4Led4LeD4LeK4Lat4LeUX+C3g+C3kOC2tOC3iuC2reC3kOC2uOC3iuC2tuC2u+C3il/gtpTgtprgt4rgtq3gt53gtrbgtrvgt4pf4Lax4Lec4LeA4LeQ4La44LeK4La24La74LeKX+C2r+C3meC3g+C3kOC2uOC3iuC2tuC2u+C3iicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4Lai4LaxX+C2tOC3meC2tl/gtrjgt4/gtrvgt4pf4LaF4La04LeKX+C2uOC3kOC2uuC3kl/gtqLgt5bgtrHgt5Jf4Lai4LeW4La94LeSX+C2heC2nOC3nV/gt4Pgt5DgtrTgt4pf4LaU4Laa4LeKX+C2seC3nOC3gOC3kF/gtq/gt5ngt4Pgt5AnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+C2ieC2u+C3kuC2r+C3j1/gt4PgtrPgt5Tgtq/gt49f4LaF4Laf4LeE4La74LeU4LeA4LeP4Lav4LePX+C2tuC2r+C3j+C2r+C3j1/gtrbgt4rigI3gtrvgt4Tgt4Pgt4rgtrTgtq3gt5LgtrHgt4rgtq/gt49f4LeD4LeS4Laa4LeU4La74LeP4Lav4LePX+C3g+C3meC2seC3g+C3lOC2u+C3j+C2r+C3jycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgtongtrvgt5Jf4LeD4Laz4LeUX+C2heC2n1/gtrbgtq/gt49f4La24LeK4oCN4La74LeEX+C3g+C3kuC2muC3lF/gt4Pgt5ngtrEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+C2iV/gt4Nf4LaFX+C2tl/gtrbgt4rigI3gtrtf4LeD4LeSX+C3g+C3mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdhIGg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ2EgaDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWSBNTU1NIEQnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVkgTU1NTSBELCBhIGg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZIE1NTU0gRCBb4LeA4LeQ4Lax4LeSXSBkZGRkLCBhIGg6bW06c3MnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4LaF4LavXSBMVFvgtqddJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+C3hOC3meC2p10gTFRb4LanXScsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIExUW+C2p10nLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4LaK4La64LeaXSBMVFvgtqddJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgtrTgt4Pgt5Tgtpzgt5LgtrpdIGRkZGQgTFRb4LanXScsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXPgtprgt5LgtrHgt4onLFxuICAgICAgICAgICAgcGFzdCA6ICclc+C2muC2pyDgtrTgt5ngtrsnLFxuICAgICAgICAgICAgcyA6ICfgtq3gtq3gt4rgtrTgtrsg4Laa4LeS4LeE4LeS4La04La6JyxcbiAgICAgICAgICAgIHNzIDogJ+C2reC2reC3iuC2tOC2uyAlZCcsXG4gICAgICAgICAgICBtIDogJ+C2uOC3kuC2seC3kuC2reC3iuC2reC3lOC3gCcsXG4gICAgICAgICAgICBtbSA6ICfgtrjgt5LgtrHgt5Lgtq3gt4rgtq3gt5QgJWQnLFxuICAgICAgICAgICAgaCA6ICfgtrTgt5DgtronLFxuICAgICAgICAgICAgaGggOiAn4La04LeQ4La6ICVkJyxcbiAgICAgICAgICAgIGQgOiAn4Lav4LeS4Lax4La6JyxcbiAgICAgICAgICAgIGRkIDogJ+C2r+C3kuC2sSAlZCcsXG4gICAgICAgICAgICBNIDogJ+C2uOC3j+C3g+C2uicsXG4gICAgICAgICAgICBNTSA6ICfgtrjgt4/gt4MgJWQnLFxuICAgICAgICAgICAgeSA6ICfgt4Dgt4PgtrsnLFxuICAgICAgICAgICAgeXkgOiAn4LeA4LeD4La7ICVkJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0g4LeA4LeQ4Lax4LeSLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIOC3gOC3kOC2seC3kic7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2UgOiAv4La04LeZ4La7IOC3gOC2u+C3lHzgtrTgt4Pgt4og4LeA4La74LeUfOC2tOC3mS7gt4B84La0LuC3gC4vLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfgtrQu4LeALicgfHwgaW5wdXQgPT09ICfgtrTgt4Pgt4og4LeA4La74LeUJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn4La0LuC3gC4nIDogJ+C2tOC3g+C3iiDgt4Dgtrvgt5QnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfgtrTgt5ku4LeALicgOiAn4La04LeZ4La7IOC3gOC2u+C3lCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRocyA9ICdqYW51w6FyX2ZlYnJ1w6FyX21hcmVjX2FwcsOtbF9tw6FqX2rDum5fasO6bF9hdWd1c3Rfc2VwdGVtYmVyX29rdMOzYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdqYW5fZmViX21hcl9hcHJfbcOhal9qw7puX2rDumxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICByZXR1cm4gKG4gPiAxKSAmJiAobiA8IDUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzogIC8vIGEgZmV3IHNlY29uZHMgLyBpbiBhIGZldyBzZWNvbmRzIC8gYSBmZXcgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ3DDoXIgc2Vrw7puZCcgOiAncMOhciBzZWt1bmRhbWknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOiAvLyA5IHNlY29uZHMgLyBpbiA5IHNlY29uZHMgLyA5IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdzZWt1bmR5JyA6ICdzZWvDum5kJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWt1bmRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ20nOiAgLy8gYSBtaW51dGUgLyBpbiBhIG1pbnV0ZSAvIGEgbWludXRlIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ21pbsO6dGEnIDogKGlzRnV0dXJlID8gJ21pbsO6dHUnIDogJ21pbsO6dG91Jyk7XG4gICAgICAgICAgICBjYXNlICdtbSc6IC8vIDkgbWludXRlcyAvIGluIDkgbWludXRlcyAvIDkgbWludXRlcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbsO6dHknIDogJ21pbsO6dCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbWluw7p0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdoJzogIC8vIGFuIGhvdXIgLyBpbiBhbiBob3VyIC8gYW4gaG91ciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdob2RpbmEnIDogKGlzRnV0dXJlID8gJ2hvZGludScgOiAnaG9kaW5vdScpO1xuICAgICAgICAgICAgY2FzZSAnaGgnOiAvLyA5IGhvdXJzIC8gaW4gOSBob3VycyAvIDkgaG91cnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdob2RpbnknIDogJ2hvZMOtbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnaG9kaW5hbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2QnOiAgLy8gYSBkYXkgLyBpbiBhIGRheSAvIGEgZGF5IGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAnZGXFiCcgOiAnZMWIb20nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOiAvLyA5IGRheXMgLyBpbiA5IGRheXMgLyA5IGRheXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdkbmknIDogJ2Ruw60nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2TFiGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTSc6ICAvLyBhIG1vbnRoIC8gaW4gYSBtb250aCAvIGEgbW9udGggYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdtZXNpYWMnIDogJ21lc2lhY29tJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzogLy8gOSBtb250aHMgLyBpbiA5IG1vbnRocyAvIDkgbW9udGhzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWVzaWFjZScgOiAnbWVzaWFjb3YnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21lc2lhY21pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd5JzogIC8vIGEgeWVhciAvIGluIGEgeWVhciAvIGEgeWVhciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ3JvaycgOiAncm9rb20nO1xuICAgICAgICAgICAgY2FzZSAneXknOiAvLyA5IHllYXJzIC8gaW4gOSB5ZWFycyAvIDkgeWVhcnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdyb2t5JyA6ICdyb2tvdicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAncm9rbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NrJywge1xuICAgICAgICBtb250aHMgOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0IDogbW9udGhzU2hvcnQsXG4gICAgICAgIHdlZWtkYXlzIDogJ25lZGXEvmFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV/FoXR2cnRva19waWF0b2tfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ25lX3BvX3V0X3N0X8WhdF9waV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnbmVfcG9fdXRfc3RfxaF0X3BpX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkbmVzIG9dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbemFqdHJhIG9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgbmVkZcS+dSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHN0cmVkdSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZvIMWhdHZydG9rIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBwaWF0b2sgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHNvYm90dSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdsSNZXJhIG9dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw7ogbmVkZcS+dSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDvV0gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO6IHN0cmVkdSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDvV0gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO6IHNvYm90dSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAncHJlZCAlcycsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ25la2FqIHNla3VuZCcgOiAnbmVrYWogc2VrdW5kYW1pJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ3Nla3VuZG8nIDogJ3Nla3VuZGknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3Nla3VuZGknIDogJ3Nla3VuZGFoJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnc2VrdW5kZScgOiAnc2VrdW5kYWgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2VuYSBtaW51dGEnIDogJ2VubyBtaW51dG8nO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggPyAnbWludXRhJyA6ICdtaW51dG8nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21pbnV0aScgOiAnbWludXRhbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtaW51dGUnIDogJ21pbnV0YW1pJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtaW51dCcgOiAnbWludXRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZW5hIHVyYScgOiAnZW5vIHVybyc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICd1cmEnIDogJ3Vybyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAndXJpJyA6ICd1cmFtYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3VyZScgOiAndXJhbWknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3VyJyA6ICd1cmFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdlbiBkYW4nIDogJ2VuaW0gZG5lbSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkYW4nIDogJ2RuZW0nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RuaScgOiAnZG5ldm9tYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZG5pJyA6ICdkbmV2aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdlbiBtZXNlYycgOiAnZW5pbSBtZXNlY2VtJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjJyA6ICdtZXNlY2VtJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2EnIDogJ21lc2VjZW1hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNlJyA6ICdtZXNlY2knO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjZXYnIDogJ21lc2VjaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdlbm8gbGV0bycgOiAnZW5pbSBsZXRvbSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXRvJyA6ICdsZXRvbSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0aScgOiAnbGV0b21hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0YScgOiAnbGV0aSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0JyA6ICdsZXRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NsJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyX2ZlYnJ1YXJfbWFyZWNfYXByaWxfbWFqX2p1bmlqX2p1bGlqX2F2Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ25lZGVsamFfcG9uZWRlbGpla190b3Jla19zcmVkYV/EjWV0cnRla19wZXRla19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnbmVkLl9wb24uX3Rvci5fc3JlLl/EjWV0Ll9wZXQuX3NvYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ25lX3BvX3RvX3NyX8SNZV9wZV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSAgOiAnW2RhbmVzIG9iXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5ICA6ICdbanV0cmkgb2JdIExUJyxcblxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIFtuZWRlbGpvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW3NyZWRvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW3NvYm90b10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgIDogJ1t2xI1lcmFqIG9iXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbbmVkZWxqb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qb10gW3NyZWRvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbc29ib3RvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmppXSBkZGRkIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnxI1leiAlcycsXG4gICAgICAgICAgICBwYXN0ICAgOiAncHJlZCAlcycsXG4gICAgICAgICAgICBzICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3MgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG0gICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaCAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE0gICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTSAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5ICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHNxID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3EnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW5hcl9TaGt1cnRfTWFyc19QcmlsbF9NYWpfUWVyc2hvcl9Lb3JyaWtfR3VzaHRfU2h0YXRvcl9UZXRvcl9Ow6tudG9yX0RoamV0b3InLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9TaGtfTWFyX1ByaV9NYWpfUWVyX0tvcl9HdXNfU2h0X1RldF9Ow6tuX0Roaicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnRSBEaWVsX0UgSMOrbsOrX0UgTWFydMOrX0UgTcOrcmt1csOrX0UgRW5qdGVfRSBQcmVtdGVfRSBTaHR1bsOrJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0RpZV9Iw6tuX01hcl9Nw6tyX0Vual9QcmVfU2h0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdEX0hfTWFfTcOrX0VfUF9TaCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL1BEfE1ELyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQuY2hhckF0KDApID09PSAnTSc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91cnMgPCAxMiA/ICdQRCcgOiAnTUQnO1xuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbU290IG7Dq10gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbTmVzw6tyIG7Dq10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbbsOrXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tEamUgbsOrXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtlIGthbHVhciBuw6tdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICduw6sgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBtw6sgcGFyw6snLFxuICAgICAgICAgICAgcyA6ICdkaXNhIHNla29uZGEnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vrb25kYScsXG4gICAgICAgICAgICBtIDogJ25qw6sgbWludXTDqycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGEnLFxuICAgICAgICAgICAgaCA6ICduasOrIG9yw6snLFxuICAgICAgICAgICAgaGggOiAnJWQgb3LDqycsXG4gICAgICAgICAgICBkIDogJ25qw6sgZGl0w6snLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGl0w6snLFxuICAgICAgICAgICAgTSA6ICduasOrIG11YWonLFxuICAgICAgICAgICAgTU0gOiAnJWQgbXVhaicsXG4gICAgICAgICAgICB5IDogJ25qw6sgdml0JyxcbiAgICAgICAgICAgIHl5IDogJyVkIHZpdGUnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0cmFuc2xhdG9yID0ge1xuICAgICAgICB3b3JkczogeyAvL0RpZmZlcmVudCBncmFtbWF0aWNhbCBjYXNlc1xuICAgICAgICAgICAgc3M6IFsnc2VrdW5kYScsICdzZWt1bmRlJywgJ3Nla3VuZGknXSxcbiAgICAgICAgICAgIG06IFsnamVkYW4gbWludXQnLCAnamVkbmUgbWludXRlJ10sXG4gICAgICAgICAgICBtbTogWydtaW51dCcsICdtaW51dGUnLCAnbWludXRhJ10sXG4gICAgICAgICAgICBoOiBbJ2plZGFuIHNhdCcsICdqZWRub2cgc2F0YSddLFxuICAgICAgICAgICAgaGg6IFsnc2F0JywgJ3NhdGEnLCAnc2F0aSddLFxuICAgICAgICAgICAgZGQ6IFsnZGFuJywgJ2RhbmEnLCAnZGFuYSddLFxuICAgICAgICAgICAgTU06IFsnbWVzZWMnLCAnbWVzZWNhJywgJ21lc2VjaSddLFxuICAgICAgICAgICAgeXk6IFsnZ29kaW5hJywgJ2dvZGluZScsICdnb2RpbmEnXVxuICAgICAgICB9LFxuICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBmdW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyID09PSAxID8gd29yZEtleVswXSA6IChudW1iZXIgPj0gMiAmJiBudW1iZXIgPD0gNCA/IHdvcmRLZXlbMV0gOiB3b3JkS2V5WzJdKTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgdHJhbnNsYXRvci5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKG51bWJlciwgd29yZEtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHNyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3InLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bl9qdWxfYXZndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqX2p1bl9qdWxfYXZnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGVsamFfcG9uZWRlbGpha191dG9yYWtfc3JlZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyZS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdbanXEjWUgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbbmVkZWxqZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BvbmVkZWxqa2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3NyZWRlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbxI1ldHZydGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCAgIDogJ3ByZSAlcycsXG4gICAgICAgICAgICBzICAgICAgOiAnbmVrb2xpa28gc2VrdW5kaScsXG4gICAgICAgICAgICBzcyAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoICAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZCAgICAgIDogJ2RhbicsXG4gICAgICAgICAgICBkZCAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gICAgICA6ICdtZXNlYycsXG4gICAgICAgICAgICBNTSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgICAgICA6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXkgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHRyYW5zbGF0b3IgPSB7XG4gICAgICAgIHdvcmRzOiB7IC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWyfRgdC10LrRg9C90LTQsCcsICfRgdC10LrRg9C90LTQtScsICfRgdC10LrRg9C90LTQuCddLFxuICAgICAgICAgICAgbTogWyfRmNC10LTQsNC9INC80LjQvdGD0YInLCAn0ZjQtdC00L3QtSDQvNC40L3Rg9GC0LUnXSxcbiAgICAgICAgICAgIG1tOiBbJ9C80LjQvdGD0YInLCAn0LzQuNC90YPRgtC1JywgJ9C80LjQvdGD0YLQsCddLFxuICAgICAgICAgICAgaDogWyfRmNC10LTQsNC9INGB0LDRgicsICfRmNC10LTQvdC+0LMg0YHQsNGC0LAnXSxcbiAgICAgICAgICAgIGhoOiBbJ9GB0LDRgicsICfRgdCw0YLQsCcsICfRgdCw0YLQuCddLFxuICAgICAgICAgICAgZGQ6IFsn0LTQsNC9JywgJ9C00LDQvdCwJywgJ9C00LDQvdCwJ10sXG4gICAgICAgICAgICBNTTogWyfQvNC10YHQtdGGJywgJ9C80LXRgdC10YbQsCcsICfQvNC10YHQtdGG0LgnXSxcbiAgICAgICAgICAgIHl5OiBbJ9Cz0L7QtNC40L3QsCcsICfQs9C+0LTQuNC90LUnLCAn0LPQvtC00LjQvdCwJ11cbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciA9PT0gMSA/IHdvcmRLZXlbMF0gOiAobnVtYmVyID49IDIgJiYgbnVtYmVyIDw9IDQgPyB3b3JkS2V5WzFdIDogd29yZEtleVsyXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgICAgICB2YXIgd29yZEtleSA9IHRyYW5zbGF0b3Iud29yZHNba2V5XTtcbiAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHZhciBzckN5cmwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzci1jeXJsJywge1xuICAgICAgICBtb250aHM6ICfRmNCw0L3Rg9Cw0YBf0YTQtdCx0YDRg9Cw0YBf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LHQsNGAX9C+0LrRgtC+0LHQsNGAX9C90L7QstC10LzQsdCw0YBf0LTQtdGG0LXQvNCx0LDRgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfRmNCw0L0uX9GE0LXQsS5f0LzQsNGALl/QsNC/0YAuX9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQsy5f0YHQtdC/Ll/QvtC60YIuX9C90L7Qsi5f0LTQtdGGLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfQvdC10LTQtdGZ0LBf0L/QvtC90LXQtNC10ZnQsNC6X9GD0YLQvtGA0LDQul/RgdGA0LXQtNCwX9GH0LXRgtCy0YDRgtCw0Lpf0L/QtdGC0LDQul/RgdGD0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQvdC10LQuX9C/0L7QvS5f0YPRgtC+Ll/RgdGA0LUuX9GH0LXRgi5f0L/QtdGCLl/RgdGD0LEuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LVf0L/Qvl/Rg9GCX9GB0YBf0YfQtV/Qv9C1X9GB0YMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQtNCw0L3QsNGBINGDXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9GB0YPRgtGA0LAg0YNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBb0L3QtdC00LXRmdGDXSBb0YNdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvRgdGA0LXQtNGDXSBb0YNdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvRgdGD0LHQvtGC0YNdIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gZGRkZCBb0YNdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW9GY0YPRh9C1INGDXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFdlZWtEYXlzID0gW1xuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9C90LXQtNC10ZnQtV0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvQv9C+0L3QtdC00LXRmdC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0YPRgtC+0YDQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvRgdGA0LXQtNC1XSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9GH0LXRgtCy0YDRgtC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0L/QtdGC0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C1XSBb0YHRg9Cx0L7RgtC1XSBb0YNdIExUJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn0LfQsCAlcycsXG4gICAgICAgICAgICBwYXN0ICAgOiAn0L/RgNC1ICVzJyxcbiAgICAgICAgICAgIHMgICAgICA6ICfQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbSAgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkICAgICAgOiAn0LTQsNC9JyxcbiAgICAgICAgICAgIGRkICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTSAgICAgIDogJ9C80LXRgdC10YYnLFxuICAgICAgICAgICAgTU0gICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5ICAgICAgOiAn0LPQvtC00LjQvdGDJyxcbiAgICAgICAgICAgIHl5ICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3JDeXJsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3MgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzcycsIHtcbiAgICAgICAgbW9udGhzIDogXCJCaGltYmlkdndhbmVfSW5kbG92YW5hX0luZGxvdidsZW5raHVsdV9NYWJhc2FfSW5raHdla2h3ZXRpX0luaGxhYmFfS2hvbHdhbmVfSW5nY2lfSW55b25pX0ltcGhhbGFfTHdldGlfSW5nb25nb25pXCIuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnQmhpX0luYV9JbnVfTWFiX0lua19JbmhfS2hvX0lnY19JbnlfSW1wX0x3ZV9JZ28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0xpc29udGZvX1Vtc29tYnVsdWtvX0xlc2liaWxpX0xlc2l0c2F0ZnVfTGVzaW5lX0xlc2lobGFudV9VbWdjaWJlbG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnTGlzX1VtYl9Mc2JfTGVzX0xzaV9Mc2hfVW1nJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdMaV9Vc19MYl9MdF9Mc19MaF9VZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tOYW11aGxhIG5nYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbS3VzYXNhIG5nYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbbmdhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tJdG9sbyBuZ2FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xlbGlwaGVsaWxlXSBbbmdhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnbmdhICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnd2VudGVrYSBuZ2EgJXMnLFxuICAgICAgICAgICAgcyA6ICdlbWl6dXp3YW5hIGxvbWNhbmUnLFxuICAgICAgICAgICAgc3MgOiAnJWQgbXp1endhbmEnLFxuICAgICAgICAgICAgbSA6ICd1bXp1enUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgZW1penV6dScsXG4gICAgICAgICAgICBoIDogJ2xpaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBlbWFob3JhJyxcbiAgICAgICAgICAgIGQgOiAnbGlsYW5nYScsXG4gICAgICAgICAgICBkZCA6ICclZCBlbWFsYW5nYScsXG4gICAgICAgICAgICBNIDogJ2lueWFuZ2EnLFxuICAgICAgICAgICAgTU0gOiAnJWQgdGlueWFuZ2EnLFxuICAgICAgICAgICAgeSA6ICd1bW55YWthJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGltaW55YWthJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZWt1c2VuaXxlbWluaXxlbnRzYW1iYW1hfGVidXN1a3UvLFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VrdXNlbmknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbWluaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VudHNhbWJhbWEnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VidXN1a3UnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAnZWt1c2VuaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdlbWluaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnZW50c2FtYmFtYScgfHwgbWVyaWRpZW0gPT09ICdlYnVzdWt1Jykge1xuICAgICAgICAgICAgICAgIGlmIChob3VyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsIDogJyVkJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3M7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3N2Jywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ3PDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDtnJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdzw7ZfbcOlX3RpX29uX3RvX2ZyX2zDticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBba2wuXSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICAgICAgbGxsIDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdkZGQgRCBNTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0lkYWddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSW1vcmdvbl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJZ8Olcl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbUMOlXSBkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0ldIGRkZGRbc10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdmw7ZyICVzIHNlZGFuJyxcbiAgICAgICAgICAgIHMgOiAnbsOlZ3JhIHNla3VuZGVyJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG0gOiAnZW4gbWludXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcicsXG4gICAgICAgICAgICBoIDogJ2VuIHRpbW1lJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHRpbW1hcicsXG4gICAgICAgICAgICBkIDogJ2VuIGRhZycsXG4gICAgICAgICAgICBkZCA6ICclZCBkYWdhcicsXG4gICAgICAgICAgICBNIDogJ2VuIG3DpW5hZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtw6VuYWRlcicsXG4gICAgICAgICAgICB5IDogJ2V0dCDDpXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgw6VyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXxhKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ2UnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnYScgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICdhJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ2UnIDogJ2UnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3Y7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzdyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3N3Jywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyaV9GZWJydWFyaV9NYWNoaV9BcHJpbGlfTWVpX0p1bmlfSnVsYWlfQWdvc3RpX1NlcHRlbWJhX09rdG9iYV9Ob3ZlbWJhX0Rlc2VtYmEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9BZ29fU2VwX09rdF9Ob3ZfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdKdW1hcGlsaV9KdW1hdGF0dV9KdW1hbm5lX0p1bWF0YW5vX0FsaGFtaXNpX0lqdW1hYV9KdW1hbW9zaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdKcGxfSnRhdF9Kbm5lX0p0YW5fQWxoX0lqbV9KbW9zJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdKMl9KM19KNF9KNV9BbF9Jal9KMScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW2xlbyBzYWFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW2tlc2hvIHNhYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW3dpa2kgaWpheW9dIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW2phbmFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1t3aWtpIGlsaXlvcGl0YV0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIGJhYWRheWUnLFxuICAgICAgICAgICAgcGFzdCA6ICd0b2tlYSAlcycsXG4gICAgICAgICAgICBzIDogJ2hpdmkgcHVuZGUnLFxuICAgICAgICAgICAgc3MgOiAnc2VrdW5kZSAlZCcsXG4gICAgICAgICAgICBtIDogJ2Rha2lrYSBtb2phJyxcbiAgICAgICAgICAgIG1tIDogJ2Rha2lrYSAlZCcsXG4gICAgICAgICAgICBoIDogJ3NhYSBsaW1vamEnLFxuICAgICAgICAgICAgaGggOiAnbWFzYWEgJWQnLFxuICAgICAgICAgICAgZCA6ICdzaWt1IG1vamEnLFxuICAgICAgICAgICAgZGQgOiAnbWFzaWt1ICVkJyxcbiAgICAgICAgICAgIE0gOiAnbXdlemkgbW1vamEnLFxuICAgICAgICAgICAgTU0gOiAnbWllemkgJWQnLFxuICAgICAgICAgICAgeSA6ICdtd2FrYSBtbW9qYScsXG4gICAgICAgICAgICB5eSA6ICdtaWFrYSAlZCdcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3c7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+CvpycsXG4gICAgICAgICcyJzogJ+CvqCcsXG4gICAgICAgICczJzogJ+CvqScsXG4gICAgICAgICc0JzogJ+CvqicsXG4gICAgICAgICc1JzogJ+CvqycsXG4gICAgICAgICc2JzogJ+CvrCcsXG4gICAgICAgICc3JzogJ+CvrScsXG4gICAgICAgICc4JzogJ+CvricsXG4gICAgICAgICc5JzogJ+CvrycsXG4gICAgICAgICcwJzogJ+CvpidcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgr6cnOiAnMScsXG4gICAgICAgICfgr6gnOiAnMicsXG4gICAgICAgICfgr6knOiAnMycsXG4gICAgICAgICfgr6onOiAnNCcsXG4gICAgICAgICfgr6snOiAnNScsXG4gICAgICAgICfgr6wnOiAnNicsXG4gICAgICAgICfgr60nOiAnNycsXG4gICAgICAgICfgr64nOiAnOCcsXG4gICAgICAgICfgr68nOiAnOScsXG4gICAgICAgICfgr6YnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIHRhID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGEnLCB7XG4gICAgICAgIG1vbnRocyA6ICfgrpzgrqngrrXgrrDgrr9f4K6q4K6/4K6q4K+N4K6w4K614K6w4K6/X+CuruCuvuCusOCvjeCumuCvjV/gro/grqrgr43grrDgrrLgr41f4K6u4K+HX+CunOCvguCuqeCvjV/grpzgr4LgrrLgr4hf4K6G4K6V4K644K+N4K6f4K+NX+CumuCvhuCuquCvjeCun+CvhuCuruCvjeCuquCusOCvjV/groXgrpXgr43grp/gr4fgrr7grqrgrrDgr41f4K6o4K614K6u4K+N4K6q4K6w4K+NX+Cun+Cuv+CumuCuruCvjeCuquCusOCvjScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4K6c4K6p4K614K6w4K6/X+CuquCuv+CuquCvjeCusOCuteCusOCuv1/grq7grr7grrDgr43grprgr41f4K6P4K6q4K+N4K6w4K6y4K+NX+CuruCvh1/grpzgr4Lgrqngr41f4K6c4K+C4K6y4K+IX+CuhuCuleCuuOCvjeCun+CvjV/grprgr4bgrqrgr43grp/gr4bgrq7gr43grqrgrrDgr41f4K6F4K6V4K+N4K6f4K+H4K6+4K6q4K6w4K+NX+CuqOCuteCuruCvjeCuquCusOCvjV/grp/grr/grprgrq7gr43grqrgrrDgr40nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+CunuCuvuCur+Cuv+CuseCvjeCuseCvgeCuleCvjeCuleCuv+CutOCuruCviF/grqTgrr/grpngr43grpXgrp/gr43grpXgrr/grrTgrq7gr4hf4K6a4K+G4K614K+N4K614K6+4K6v4K+N4K6V4K6/4K604K6u4K+IX+CuquCvgeCupOCuqeCvjeCuleCuv+CutOCuruCviF/grrXgrr/grq/grr7grrTgrpXgr43grpXgrr/grrTgrq7gr4hf4K614K+G4K6z4K+N4K6z4K6/4K6V4K+N4K6V4K6/4K604K6u4K+IX+CumuCuqeCuv+CuleCvjeCuleCuv+CutOCuruCviCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgrp7grr7grq/grr/grrHgr4Ff4K6k4K6/4K6Z4K+N4K6V4K6z4K+NX+CumuCvhuCuteCvjeCuteCuvuCur+CvjV/grqrgr4HgrqTgrqngr41f4K614K6/4K6v4K6+4K604K6p4K+NX+CuteCvhuCus+CvjeCus+Cuv1/grprgrqngrr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+CunuCuvl/grqTgrr9f4K6a4K+GX+CuquCvgV/grrXgrr9f4K614K+GX+Cumicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4K6H4K6p4K+N4K6x4K+BXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgrqjgrr7grrPgr4hdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+CuqOCvh+CuseCvjeCuseCvgV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+CuleCun+CuqOCvjeCupCDgrrXgrr7grrDgrq7gr41dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgrofgrrLgr40nLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgrq7gr4Hgrqngr40nLFxuICAgICAgICAgICAgcyA6ICfgrpLgrrDgr4Eg4K6a4K6/4K6yIOCuteCuv+CuqOCuvuCun+Cuv+CuleCus+CvjScsXG4gICAgICAgICAgICBzcyA6ICclZCDgrrXgrr/grqjgrr7grp/grr/grpXgrrPgr40nLFxuICAgICAgICAgICAgbSA6ICfgrpLgrrDgr4Eg4K6o4K6/4K6u4K6/4K6f4K6u4K+NJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOCuqOCuv+CuruCuv+Cun+CumeCvjeCuleCus+CvjScsXG4gICAgICAgICAgICBoIDogJ+CukuCusOCvgSDgrq7grqPgrr8g4K6o4K+H4K6w4K6u4K+NJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOCuruCuo+CuvyDgrqjgr4fgrrDgrq7gr40nLFxuICAgICAgICAgICAgZCA6ICfgrpLgrrDgr4Eg4K6o4K6+4K6z4K+NJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOCuqOCuvuCun+CvjeCuleCus+CvjScsXG4gICAgICAgICAgICBNIDogJ+CukuCusOCvgSDgrq7grr7grqTgrq7gr40nLFxuICAgICAgICAgICAgTU0gOiAnJWQg4K6u4K6+4K6k4K6Z4K+N4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIHkgOiAn4K6S4K6w4K+BIOCuteCusOCvgeCun+CuruCvjScsXG4gICAgICAgICAgICB5eSA6ICclZCDgrobgrqPgr43grp/gr4HgrpXgrrPgr40nXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfeCuteCupOCvgS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+CuteCupOCvgSc7XG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgr6fgr6jgr6ngr6rgr6vgr6zgr63gr67gr6/gr6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHJlZmVyIGh0dHA6Ly90YS53aWtpcGVkaWEub3JnL3MvMWVyMVxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4K6v4K6+4K6u4K6u4K+NfOCuteCviOCuleCuseCviHzgrpXgrr7grrLgr4h84K6o4K6j4K+N4K6q4K6V4K6y4K+NfOCujuCuseCvjeCuquCuvuCun+CvgXzgrq7grr7grrLgr4gvLFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCur+CuvuCuruCuruCvjSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCA2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K614K+I4K6V4K6x4K+IJzsgIC8vIOCuteCviOCuleCuseCviFxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrpXgrr7grrLgr4gnOyAvLyDgrpXgrr7grrLgr4hcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6o4K6j4K+N4K6q4K6V4K6y4K+NJzsgLy8g4K6o4K6j4K+N4K6q4K6V4K6y4K+NXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCujuCuseCvjeCuquCuvuCun+CvgSc7IC8vIOCujuCuseCvjeCuquCuvuCun+CvgVxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq7grr7grrLgr4gnOyAvLyDgrq7grr7grrLgr4hcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6v4K6+4K6u4K6u4K+NJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+Cur+CuvuCuruCuruCvjScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDIgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CuteCviOCuleCuseCviCcgfHwgbWVyaWRpZW0gPT09ICfgrpXgrr7grrLgr4gnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4K6o4K6j4K+N4K6q4K6V4K6y4K+NJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0ZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RlJywge1xuICAgICAgICBtb250aHMgOiAn4LCc4LCo4LC14LCw4LC/X+Cwq+Cwv+CwrOCxjeCwsOCwteCwsOCwv1/gsK7gsL7gsLDgsY3gsJrgsL9f4LCP4LCq4LGN4LCw4LC/4LCy4LGNX+CwruCxh1/gsJzgsYLgsKjgsY1f4LCc4LGB4LCy4LGIX+CwhuCwl+CwuOCxjeCwn+CxgV/gsLjgsYbgsKrgsY3gsJ/gsYbgsILgsKzgsLDgsY1f4LCF4LCV4LGN4LCf4LGL4LCs4LCw4LGNX+CwqOCwteCwguCwrOCwsOCxjV/gsKHgsL/gsLjgsYbgsILgsKzgsLDgsY0nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+CwnOCwqC5f4LCr4LC/4LCs4LGN4LCwLl/gsK7gsL7gsLDgsY3gsJrgsL9f4LCP4LCq4LGN4LCw4LC/Ll/gsK7gsYdf4LCc4LGC4LCo4LGNX+CwnOCxgeCwsuCxiF/gsIbgsJcuX+CwuOCxhuCwquCxjS5f4LCF4LCV4LGN4LCf4LGLLl/gsKjgsLUuX+CwoeCwv+CwuOCxhi4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgsIbgsKbgsL/gsLXgsL7gsLDgsIJf4LC44LGL4LCu4LC14LC+4LCw4LCCX+CwruCwguCwl+Cws+CwteCwvuCwsOCwgl/gsKzgsYHgsKfgsLXgsL7gsLDgsIJf4LCX4LGB4LCw4LGB4LC14LC+4LCw4LCCX+CwtuCxgeCwleCxjeCwsOCwteCwvuCwsOCwgl/gsLbgsKjgsL/gsLXgsL7gsLDgsIInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4LCG4LCm4LC/X+CwuOCxi+Cwrl/gsK7gsILgsJfgsLNf4LCs4LGB4LCnX+Cwl+CxgeCwsOCxgV/gsLbgsYHgsJXgsY3gsLBf4LC24LCo4LC/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgsIZf4LC44LGLX+CwruCwgl/gsKzgsYFf4LCX4LGBX+CwtuCxgV/gsLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgsKjgsYfgsKHgsYFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CwsOCxh+CwquCxgV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4LCo4LC/4LCo4LGN4LCoXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4LCX4LCkXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4LCy4LGLJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4LCV4LGN4LCw4LC/4LCk4LCCJyxcbiAgICAgICAgICAgIHMgOiAn4LCV4LGK4LCo4LGN4LCo4LC/IOCwleCxjeCwt+Cwo+CwvuCwsuCxgScsXG4gICAgICAgICAgICBzcyA6ICclZCDgsLjgsYbgsJXgsKjgsY3gsLLgsYEnLFxuICAgICAgICAgICAgbSA6ICfgsJLgsJUg4LCo4LC/4LCu4LC/4LC34LCCJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOCwqOCwv+CwruCwv+Cwt+CwvuCwsuCxgScsXG4gICAgICAgICAgICBoIDogJ+CwkuCwlSDgsJfgsILgsJ8nLFxuICAgICAgICAgICAgaGggOiAnJWQg4LCX4LCC4LCf4LCy4LGBJyxcbiAgICAgICAgICAgIGQgOiAn4LCS4LCVIOCwsOCxi+CwnOCxgScsXG4gICAgICAgICAgICBkZCA6ICclZCDgsLDgsYvgsJzgsYHgsLLgsYEnLFxuICAgICAgICAgICAgTSA6ICfgsJLgsJUg4LCo4LGG4LCyJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCwqOCxhuCwsuCwsuCxgScsXG4gICAgICAgICAgICB5IDogJ+CwkuCwlSDgsLjgsILgsLXgsKTgsY3gsLjgsLDgsIInLFxuICAgICAgICAgICAgeXkgOiAnJWQg4LC44LCC4LC14LCk4LGN4LC44LCw4LC+4LCy4LGBJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ94LC1LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZOCwtScsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gsLDgsL7gsKTgsY3gsLDgsL984LCJ4LCm4LCv4LCCfOCwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgnzgsLjgsL7gsK/gsILgsKTgsY3gsLDgsIIvLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4LCw4LC+4LCk4LGN4LCw4LC/Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LCJ4LCm4LCv4LCCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LC44LC+4LCv4LCC4LCk4LGN4LCw4LCCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLDgsL7gsKTgsY3gsLDgsL8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwieCwpuCwr+Cwgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLjgsL7gsK/gsILgsKTgsY3gsLDgsIInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwsOCwvuCwpOCxjeCwsOCwvyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdGV0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGV0Jywge1xuICAgICAgICBtb250aHMgOiAnSmFuZWlydV9GZXZlcmVpcnVfTWFyc3VfQWJyaWxfTWFpdV9KdcOxdV9KdWxsdV9BZ3VzdHVfU2V0ZW1icnVfT3V0dWJydV9Ob3ZlbWJydV9EZXplbWJydScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19TZXRfT3V0X05vdl9EZXonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0RvbWluZ3VfU2VndW5kYV9UZXJzYV9LdWFydGFfS2ludGFfU2VzdGFfU2FiYWR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0RvbV9TZWdfVGVyc19LdWFfS2ludF9TZXN0X1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnRG9fU2VnX1RlX0t1X0tpX1Nlc19TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbT2hpbiBpaGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQWJhbiBpaGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbaWhhXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0hvcmlzZWlrIGloYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtzZW1hbmEga290dWtdIFtpaGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2loYSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGxpdWJhJyxcbiAgICAgICAgICAgIHMgOiAnbWludXR1IGJhbHVuJyxcbiAgICAgICAgICAgIHNzIDogJ21pbnV0dSAlZCcsXG4gICAgICAgICAgICBtIDogJ21pbnV0dSBpZGEnLFxuICAgICAgICAgICAgbW0gOiAnbWludXR1ICVkJyxcbiAgICAgICAgICAgIGggOiAnb3JhcyBpZGEnLFxuICAgICAgICAgICAgaGggOiAnb3JhcyAlZCcsXG4gICAgICAgICAgICBkIDogJ2xvcm9uIGlkYScsXG4gICAgICAgICAgICBkZCA6ICdsb3JvbiAlZCcsXG4gICAgICAgICAgICBNIDogJ2Z1bGFuIGlkYScsXG4gICAgICAgICAgICBNTSA6ICdmdWxhbiAlZCcsXG4gICAgICAgICAgICB5IDogJ3RpbmFuIGlkYScsXG4gICAgICAgICAgICB5eSA6ICd0aW5hbiAlZCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMDogJy3Rg9C8JyxcbiAgICAgICAgMTogJy3Rg9C8JyxcbiAgICAgICAgMjogJy3RjtC8JyxcbiAgICAgICAgMzogJy3RjtC8JyxcbiAgICAgICAgNDogJy3Rg9C8JyxcbiAgICAgICAgNTogJy3Rg9C8JyxcbiAgICAgICAgNjogJy3Rg9C8JyxcbiAgICAgICAgNzogJy3Rg9C8JyxcbiAgICAgICAgODogJy3Rg9C8JyxcbiAgICAgICAgOTogJy3Rg9C8JyxcbiAgICAgICAgMTA6ICct0YPQvCcsXG4gICAgICAgIDEyOiAnLdGD0LwnLFxuICAgICAgICAxMzogJy3Rg9C8JyxcbiAgICAgICAgMjA6ICct0YPQvCcsXG4gICAgICAgIDMwOiAnLdGO0LwnLFxuICAgICAgICA0MDogJy3Rg9C8JyxcbiAgICAgICAgNTA6ICct0YPQvCcsXG4gICAgICAgIDYwOiAnLdGD0LwnLFxuICAgICAgICA3MDogJy3Rg9C8JyxcbiAgICAgICAgODA6ICct0YPQvCcsXG4gICAgICAgIDkwOiAnLdGD0LwnLFxuICAgICAgICAxMDA6ICct0YPQvCdcbiAgICB9O1xuXG4gICAgdmFyIHRnID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGcnLCB7XG4gICAgICAgIG1vbnRocyA6ICfRj9C90LLQsNGAX9GE0LXQstGA0LDQu1/QvNCw0YDRgl/QsNC/0YDQtdC7X9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgF/QvtC60YLRj9Cx0YBf0L3QvtGP0LHRgF/QtNC10LrQsNCx0YAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9GP0L3Qsl/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+0Y9f0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfRj9C60YjQsNC90LHQtV/QtNGD0YjQsNC90LHQtV/RgdC10YjQsNC90LHQtV/Rh9C+0YDRiNCw0L3QsdC1X9C/0LDQvdK30YjQsNC90LHQtV/St9GD0LzRitCwX9GI0LDQvdCx0LUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0Y/RiNCxX9C00YjQsV/RgdGI0LFf0YfRiNCxX9C/0YjQsV/St9GD0Lxf0YjQvdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfRj9GIX9C00Yhf0YHRiF/Rh9GIX9C/0Yhf0rfQvF/RiNCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb0JjQvNGA06/QtyDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vQn9Cw0LPQvtKzINGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9CU0LjRgNOv0Lcg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZFvQuF0gW9Kz0LDRhNGC0LDQuCDQvtGP0L3QtNCwINGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGRb0LhdIFvSs9Cw0YTRgtCw0Lgg0LPRg9C30LDRiNGC0LAg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9Cx0LDRitC00LggJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDQv9C10YgnLFxuICAgICAgICAgICAgcyA6ICfRj9C60YfQsNC90LQg0YHQvtC90LjRjycsXG4gICAgICAgICAgICBtIDogJ9GP0Log0LTQsNKb0LjSm9CwJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC00LDSm9C40pvQsCcsXG4gICAgICAgICAgICBoIDogJ9GP0Log0YHQvtCw0YInLFxuICAgICAgICAgICAgaGggOiAnJWQg0YHQvtCw0YInLFxuICAgICAgICAgICAgZCA6ICfRj9C6INGA06/QtycsXG4gICAgICAgICAgICBkZCA6ICclZCDRgNOv0LcnLFxuICAgICAgICAgICAgTSA6ICfRj9C6INC80L7SsycsXG4gICAgICAgICAgICBNTSA6ICclZCDQvNC+0rMnLFxuICAgICAgICAgICAgeSA6ICfRj9C6INGB0L7QuycsXG4gICAgICAgICAgICB5eSA6ICclZCDRgdC+0LsnXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/RiNCw0LF80YHRg9Cx0rN80YDTr9C3fNCx0LXQs9C+0rMvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfRiNCw0LEnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfRgdGD0LHSsycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfRgNOv0LcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ9Cx0LXQs9C+0rMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YjQsNCxJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgdGD0LHSsyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YDTr9C3JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQsdC10LPQvtKzJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRiNCw0LEnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNGD0Lx80Y7QvCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbbnVtYmVyXSB8fCBzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDF0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRnO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdGggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0aCcsIHtcbiAgICAgICAgbW9udGhzIDogJ+C4oeC4geC4o+C4suC4hOC4oV/guIHguLjguKHguKDguLLguJ7guLHguJnguJjguYxf4Lih4Li14LiZ4Liy4LiE4LihX+C5gOC4oeC4qeC4suC4ouC4mV/guJ7guKTguKnguKDguLLguITguKFf4Lih4Li04LiW4Li44LiZ4Liy4Lii4LiZX+C4geC4o+C4geC4juC4suC4hOC4oV/guKrguLTguIfguKvguLLguITguKFf4LiB4Lix4LiZ4Lii4Liy4Lii4LiZX+C4leC4uOC4peC4suC4hOC4oV/guJ7guKTguKjguIjguLTguIHguLLguKLguJlf4LiY4Lix4LiZ4Lin4Liy4LiE4LihJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfguKEu4LiELl/guIEu4LieLl/guKHguLUu4LiELl/guYDguKEu4LiiLl/guJ4u4LiELl/guKHguLQu4LiiLl/guIEu4LiELl/guKou4LiELl/guIEu4LiiLl/guJUu4LiELl/guJ4u4LiiLl/guJgu4LiELicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4quC4muC4lOC4tV/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+C4reC4suC4l+C4tOC4leC4ouC5jF/guIjguLHguJnguJfguKPguYxf4Lit4Lix4LiH4LiE4Liy4LijX+C4nuC4uOC4mF/guJ7guKTguKvguLHguKpf4Lio4Li44LiB4Lij4LmMX+C5gOC4quC4suC4o+C5jCcuc3BsaXQoJ18nKSwgLy8geWVzLCB0aHJlZSBjaGFyYWN0ZXJzIGRpZmZlcmVuY2VcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4Lit4LiyLl/guIguX+C4rS5f4LieLl/guJ7guKQuX+C4qC5f4LiqLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICfguKfguLHguJlkZGRk4LiX4Li14LmIIEQgTU1NTSBZWVlZIOC5gOC4p+C4peC4siBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHfOC4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hy8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfguIHguYjguK3guJnguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4Lin4Lix4LiZ4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4Lie4Lij4Li44LmI4LiH4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZFvguKvguJnguYnguLIg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vguYDguKHguLfguYjguK3guKfguLLguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4Lin4Lix4LiZXWRkZGRb4LiX4Li14LmI4LmB4Lil4LmJ4LinIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ+C4reC4teC4gSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVz4LiX4Li14LmI4LmB4Lil4LmJ4LinJyxcbiAgICAgICAgICAgIHMgOiAn4LmE4Lih4LmI4LiB4Li14LmI4Lin4Li04LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIHNzIDogJyVkIOC4p+C4tOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBtIDogJzEg4LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIG1tIDogJyVkIOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBoIDogJzEg4LiK4Lix4LmI4Lin4LmC4Lih4LiHJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOC4iuC4seC5iOC4p+C5guC4oeC4hycsXG4gICAgICAgICAgICBkIDogJzEg4Lin4Lix4LiZJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOC4p+C4seC4mScsXG4gICAgICAgICAgICBNIDogJzEg4LmA4LiU4Li34Lit4LiZJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOC5gOC4lOC4t+C4reC4mScsXG4gICAgICAgICAgICB5IDogJzEg4Lib4Li1JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOC4m+C4tSdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdGxQaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RsLXBoJywge1xuICAgICAgICBtb250aHMgOiAnRW5lcm9fUGVicmVyb19NYXJzb19BYnJpbF9NYXlvX0h1bnlvX0h1bHlvX0Fnb3N0b19TZXR5ZW1icmVfT2t0dWJyZV9Ob2J5ZW1icmVfRGlzeWVtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdFbmVfUGViX01hcl9BYnJfTWF5X0h1bl9IdWxfQWdvX1NldF9Pa3RfTm9iX0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnTGluZ2dvX0x1bmVzX01hcnRlc19NaXllcmt1bGVzX0h1d2ViZXNfQml5ZXJuZXNfU2FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0xpbl9MdW5fTWFyX01peV9IdXdfQml5X1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnTGlfTHVfTWFfTWlfSHVfQmlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ01NL0QvWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ01NTU0gRCwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gREQsIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ0xUIFtuZ2F5b25nIGFyYXddJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQnVrYXMgbmddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnTFQgW3NhIHN1c3Vub2QgbmFdIGRkZGQnLFxuICAgICAgICAgICAgbGFzdERheTogJ0xUIFtrYWhhcG9uXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ0xUIFtub29uZyBuYWthcmFhbmddIGRkZGQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnc2EgbG9vYiBuZyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFuZyBuYWthbGlwYXMnLFxuICAgICAgICAgICAgcyA6ICdpbGFuZyBzZWd1bmRvJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG8nLFxuICAgICAgICAgICAgbSA6ICdpc2FuZyBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvJyxcbiAgICAgICAgICAgIGggOiAnaXNhbmcgb3JhcycsXG4gICAgICAgICAgICBoaCA6ICclZCBvcmFzJyxcbiAgICAgICAgICAgIGQgOiAnaXNhbmcgYXJhdycsXG4gICAgICAgICAgICBkZCA6ICclZCBhcmF3JyxcbiAgICAgICAgICAgIE0gOiAnaXNhbmcgYnV3YW4nLFxuICAgICAgICAgICAgTU0gOiAnJWQgYnV3YW4nLFxuICAgICAgICAgICAgeSA6ICdpc2FuZyB0YW9uJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHRhb24nXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0bFBoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbnVtYmVyc05vdW5zID0gJ3BhZ2hfd2HigJlfY2hh4oCZX3dlal9sb1NfdmFnaF9qYXZfU29jaF9jaG9yZ2hfSHV0Jy5zcGxpdCgnXycpO1xuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlRnV0dXJlKG91dHB1dCkge1xuICAgICAgICB2YXIgdGltZSA9IG91dHB1dDtcbiAgICAgICAgdGltZSA9IChvdXRwdXQuaW5kZXhPZignamFqJykgIT09IC0xKSA/XG4gICAgICAgIHRpbWUuc2xpY2UoMCwgLTMpICsgJ2xlUycgOlxuICAgICAgICAob3V0cHV0LmluZGV4T2YoJ2phcicpICE9PSAtMSkgP1xuICAgICAgICB0aW1lLnNsaWNlKDAsIC0zKSArICd3YVEnIDpcbiAgICAgICAgKG91dHB1dC5pbmRleE9mKCdESVMnKSAhPT0gLTEpID9cbiAgICAgICAgdGltZS5zbGljZSgwLCAtMykgKyAnbmVtJyA6XG4gICAgICAgIHRpbWUgKyAnIHBJcSc7XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVBhc3Qob3V0cHV0KSB7XG4gICAgICAgIHZhciB0aW1lID0gb3V0cHV0O1xuICAgICAgICB0aW1lID0gKG91dHB1dC5pbmRleE9mKCdqYWonKSAhPT0gLTEpID9cbiAgICAgICAgdGltZS5zbGljZSgwLCAtMykgKyAnSHXigJknIDpcbiAgICAgICAgKG91dHB1dC5pbmRleE9mKCdqYXInKSAhPT0gLTEpID9cbiAgICAgICAgdGltZS5zbGljZSgwLCAtMykgKyAnd2VuJyA6XG4gICAgICAgIChvdXRwdXQuaW5kZXhPZignRElTJykgIT09IC0xKSA/XG4gICAgICAgIHRpbWUuc2xpY2UoMCwgLTMpICsgJ2JlbicgOlxuICAgICAgICB0aW1lICsgJyByZXQnO1xuICAgICAgICByZXR1cm4gdGltZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBudW1iZXJOb3VuID0gbnVtYmVyQXNOb3VuKG51bWJlcik7XG4gICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIGx1cCc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIHR1cCc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIHJlcCc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIGphaic7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIGphcic7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIERJUyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBudW1iZXJBc05vdW4obnVtYmVyKSB7XG4gICAgICAgIHZhciBodW5kcmVkID0gTWF0aC5mbG9vcigobnVtYmVyICUgMTAwMCkgLyAxMDApLFxuICAgICAgICB0ZW4gPSBNYXRoLmZsb29yKChudW1iZXIgJSAxMDApIC8gMTApLFxuICAgICAgICBvbmUgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgd29yZCA9ICcnO1xuICAgICAgICBpZiAoaHVuZHJlZCA+IDApIHtcbiAgICAgICAgICAgIHdvcmQgKz0gbnVtYmVyc05vdW5zW2h1bmRyZWRdICsgJ3ZhdGxoJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGVuID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSAoKHdvcmQgIT09ICcnKSA/ICcgJyA6ICcnKSArIG51bWJlcnNOb3Vuc1t0ZW5dICsgJ21hSCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uZSA+IDApIHtcbiAgICAgICAgICAgIHdvcmQgKz0gKCh3b3JkICE9PSAnJykgPyAnICcgOiAnJykgKyBudW1iZXJzTm91bnNbb25lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHdvcmQgPT09ICcnKSA/ICdwYWdoJyA6IHdvcmQ7XG4gICAgfVxuXG4gICAgdmFyIHRsaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RsaCcsIHtcbiAgICAgICAgbW9udGhzIDogJ3RlcmHigJkgamFyIHdh4oCZX3RlcmHigJkgamFyIGNoYeKAmV90ZXJh4oCZIGphciB3ZWpfdGVyYeKAmSBqYXIgbG9TX3RlcmHigJkgamFyIHZhZ2hfdGVyYeKAmSBqYXIgamF2X3RlcmHigJkgamFyIFNvY2hfdGVyYeKAmSBqYXIgY2hvcmdoX3RlcmHigJkgamFyIEh1dF90ZXJh4oCZIGphciB3YeKAmW1hSF90ZXJh4oCZIGphciB3YeKAmW1hSCB3YeKAmV90ZXJh4oCZIGphciB3YeKAmW1hSCBjaGHigJknLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phciB3YeKAmV9qYXIgY2hh4oCZX2phciB3ZWpfamFyIGxvU19qYXIgdmFnaF9qYXIgamF2X2phciBTb2NoX2phciBjaG9yZ2hfamFyIEh1dF9qYXIgd2HigJltYUhfamFyIHdh4oCZbWFIIHdh4oCZX2phciB3YeKAmW1hSCBjaGHigJknLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnbG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWonLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0RhSGphal0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t3YeKAmWxlU10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdMTEwnLFxuICAgICAgICAgICAgbGFzdERheTogJ1t3YeKAmUh14oCZXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ0xMTCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6IHRyYW5zbGF0ZUZ1dHVyZSxcbiAgICAgICAgICAgIHBhc3QgOiB0cmFuc2xhdGVQYXN0LFxuICAgICAgICAgICAgcyA6ICdwdVMgbHVwJyxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6ICd3YeKAmSB0dXAnLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogJ3dh4oCZIHJlcCcsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiAnd2HigJkgamFqJyxcbiAgICAgICAgICAgIGRkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSA6ICd3YeKAmSBqYXInLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogJ3dh4oCZIERJUycsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRsaDtcblxufSkpKTtcbiIsIlxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMTogJ1xcJ2luY2knLFxuICAgICAgICA1OiAnXFwnaW5jaScsXG4gICAgICAgIDg6ICdcXCdpbmNpJyxcbiAgICAgICAgNzA6ICdcXCdpbmNpJyxcbiAgICAgICAgODA6ICdcXCdpbmNpJyxcbiAgICAgICAgMjogJ1xcJ25jaScsXG4gICAgICAgIDc6ICdcXCduY2knLFxuICAgICAgICAyMDogJ1xcJ25jaScsXG4gICAgICAgIDUwOiAnXFwnbmNpJyxcbiAgICAgICAgMzogJ1xcJ8O8bmPDvCcsXG4gICAgICAgIDQ6ICdcXCfDvG5jw7wnLFxuICAgICAgICAxMDA6ICdcXCfDvG5jw7wnLFxuICAgICAgICA2OiAnXFwnbmPEsScsXG4gICAgICAgIDk6ICdcXCd1bmN1JyxcbiAgICAgICAgMTA6ICdcXCd1bmN1JyxcbiAgICAgICAgMzA6ICdcXCd1bmN1JyxcbiAgICAgICAgNjA6ICdcXCfEsW5jxLEnLFxuICAgICAgICA5MDogJ1xcJ8SxbmPEsSdcbiAgICB9O1xuXG4gICAgdmFyIHRyID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHInLCB7XG4gICAgICAgIG1vbnRocyA6ICdPY2FrX8WedWJhdF9NYXJ0X05pc2FuX01hecSxc19IYXppcmFuX1RlbW11el9BxJ91c3Rvc19FeWzDvGxfRWtpbV9LYXPEsW1fQXJhbMSxaycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnT2NhX8WedWJfTWFyX05pc19NYXlfSGF6X1RlbV9BxJ91X0V5bF9Fa2lfS2FzX0FyYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnUGF6YXJfUGF6YXJ0ZXNpX1NhbMSxX8OHYXLFn2FtYmFfUGVyxZ9lbWJlX0N1bWFfQ3VtYXJ0ZXNpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1Bhel9QdHNfU2FsX8OHYXJfUGVyX0N1bV9DdHMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1B6X1B0X1NhX8OHYV9QZV9DdV9DdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW2J1Z8O8biBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1t5YXLEsW4gc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW2dlbGVjZWtdIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW2TDvG5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tnZcOnZW5dIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBzb25yYScsXG4gICAgICAgICAgICBwYXN0IDogJyVzIMO2bmNlJyxcbiAgICAgICAgICAgIHMgOiAnYmlya2HDpyBzYW5peWUnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2FuaXllJyxcbiAgICAgICAgICAgIG0gOiAnYmlyIGRha2lrYScsXG4gICAgICAgICAgICBtbSA6ICclZCBkYWtpa2EnLFxuICAgICAgICAgICAgaCA6ICdiaXIgc2FhdCcsXG4gICAgICAgICAgICBoaCA6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIGQgOiAnYmlyIGfDvG4nLFxuICAgICAgICAgICAgZGQgOiAnJWQgZ8O8bicsXG4gICAgICAgICAgICBNIDogJ2JpciBheScsXG4gICAgICAgICAgICBNTSA6ICclZCBheScsXG4gICAgICAgICAgICB5IDogJ2JpciB5xLFsJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHnEsWwnXG4gICAgICAgIH0sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEbyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHsgIC8vIHNwZWNpYWwgY2FzZSBmb3IgemVyb1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICdcXCfEsW5jxLEnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBiID0gbnVtYmVyICUgMTAwIC0gYSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSB8fCBzdWZmaXhlc1tjXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICAvLyBBZnRlciB0aGUgeWVhciB0aGVyZSBzaG91bGQgYmUgYSBzbGFzaCBhbmQgdGhlIGFtb3VudCBvZiB5ZWFycyBzaW5jZSBEZWNlbWJlciAyNiwgMTk3OSBpbiBSb21hbiBudW1lcmFscy5cbiAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSB0b28gZGlmZmljdWx0IChtYXliZSBldmVuIGltcG9zc2libGUpIHRvIGFkZC5cbiAgICB2YXIgdHpsID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHpsJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyX0ZldnJhZ2xoX01hcsOnX0F2csOvdV9NYWlfR8O8bl9KdWxpYV9HdXNjaHRfU2V0ZW12YXJfTGlzdG9ww6R0c19Ob2VtdmFyX1plY2VtdmFyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9BdnJfTWFpX0fDvG5fSnVsX0d1c19TZXRfTGlzX05vZV9aZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1PDumxhZGlfTMO6bmXDp2lfTWFpdHppX03DoXJjdXJpX1how7phZGlfVmnDqW5lcsOnaV9Tw6F0dXJpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1PDumxfTMO6bl9NYWlfTcOhcl9YaMO6X1Zpw6lfU8OhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU8O6X0zDul9NYV9Nw6FfWGhfVmlfU8OhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBbZGFsbGFzXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFtkYWxsYXNdIFlZWVkgSEgubW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBbbGldIEQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2RcXCdvfGRcXCdhL2ksXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAnZFxcJ28nID09PSBpbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdkXFwnbycgOiAnRFxcJ08nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdkXFwnYScgOiAnRFxcJ0EnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW294aGkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW2RlbcOgIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbaWVpcmkgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tzw7xyIGVsXSBkZGRkIFtsYXN0ZXUgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvc3ByZWkgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdqYSVzJyxcbiAgICAgICAgICAgIHMgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3MgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5IDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5IDogcHJvY2Vzc1JlbGF0aXZlVGltZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdzJzogWyd2aWVuc2FzIHNlY3VuZHMnLCAnXFwnaWVuc2FzIHNlY3VuZHMnXSxcbiAgICAgICAgICAgICdzcyc6IFtudW1iZXIgKyAnIHNlY3VuZHMnLCAnJyArIG51bWJlciArICcgc2VjdW5kcyddLFxuICAgICAgICAgICAgJ20nOiBbJ1xcJ24gbcOtdXQnLCAnXFwnaWVucyBtw611dCddLFxuICAgICAgICAgICAgJ21tJzogW251bWJlciArICcgbcOtdXRzJywgJycgKyBudW1iZXIgKyAnIG3DrXV0cyddLFxuICAgICAgICAgICAgJ2gnOiBbJ1xcJ24gw75vcmEnLCAnXFwnaWVuc2Egw75vcmEnXSxcbiAgICAgICAgICAgICdoaCc6IFtudW1iZXIgKyAnIMO+b3JhcycsICcnICsgbnVtYmVyICsgJyDDvm9yYXMnXSxcbiAgICAgICAgICAgICdkJzogWydcXCduIHppdWEnLCAnXFwnaWVuc2Egeml1YSddLFxuICAgICAgICAgICAgJ2RkJzogW251bWJlciArICcgeml1YXMnLCAnJyArIG51bWJlciArICcgeml1YXMnXSxcbiAgICAgICAgICAgICdNJzogWydcXCduIG1lcycsICdcXCdpZW5zIG1lcyddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgbWVzZW4nLCAnJyArIG51bWJlciArICcgbWVzZW4nXSxcbiAgICAgICAgICAgICd5JzogWydcXCduIGFyJywgJ1xcJ2llbnMgYXInXSxcbiAgICAgICAgICAgICd5eSc6IFtudW1iZXIgKyAnIGFycycsICcnICsgbnVtYmVyICsgJyBhcnMnXVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyBmb3JtYXRba2V5XVswXSA6ICh3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR6bDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHR6bSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3R6bScsIHtcbiAgICAgICAgbW9udGhzIDogJ+K1ieK1j+K1j+K0sOK1ouK1lF/itLHitZXitLDitaLitZVf4rWO4rSw4rWV4rWaX+K1ieK0seK1lOK1ieK1lF/itY7itLDitaLitaLitZNf4rWi4rWT4rWP4rWi4rWTX+K1ouK1k+K1jeK1ouK1k+K1o1/itZbitZPitZvitZxf4rWb4rWT4rWc4rSw4rWP4rSx4rWJ4rWUX+K0veK1n+K1k+K0seK1lV/itY/itZPitaHitLDitY/itLHitYnitZRf4rS34rWT4rWK4rWP4rSx4rWJ4rWUJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfitYnitY/itY/itLDitaLitZRf4rSx4rWV4rSw4rWi4rWVX+K1juK0sOK1leK1ml/itYnitLHitZTitYnitZRf4rWO4rSw4rWi4rWi4rWTX+K1ouK1k+K1j+K1ouK1k1/itaLitZPitY3itaLitZPitaNf4rWW4rWT4rWb4rWcX+K1m+K1k+K1nOK0sOK1j+K0seK1ieK1lF/itL3itZ/itZPitLHitZVf4rWP4rWT4rWh4rSw4rWP4rSx4rWJ4rWUX+K0t+K1k+K1iuK1j+K0seK1ieK1lCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn4rSw4rWZ4rSw4rWO4rSw4rWZX+K0sOK1ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw4rS94rWU4rSw4rWZX+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHitLDitZlf4rSw4rWZ4rWJ4rS54rWi4rSw4rWZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4rSw4rWZ4rSw4rWO4rSw4rWZX+K0sOK1ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw4rS94rWU4rSw4rWZX+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHitLDitZlf4rSw4rWZ4rWJ4rS54rWi4rSw4rWZJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4rSw4rWZ4rS34rWFIOK0tF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vitLDitZnitL3itLAg4rS0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW+K0tF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vitLDitZritLDitY/itZwg4rS0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW+K0tF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn4rS34rSw4rS34rWFIOK1mSDitaLitLDitY8gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfitaLitLDitY8gJXMnLFxuICAgICAgICAgICAgcyA6ICfitYnitY7itYnitL0nLFxuICAgICAgICAgICAgc3MgOiAnJWQg4rWJ4rWO4rWJ4rS9JyxcbiAgICAgICAgICAgIG0gOiAn4rWO4rWJ4rWP4rWT4rS6JyxcbiAgICAgICAgICAgIG1tIDogJyVkIOK1juK1ieK1j+K1k+K0uicsXG4gICAgICAgICAgICBoIDogJ+K1meK0sOK1hOK0sCcsXG4gICAgICAgICAgICBoaCA6ICclZCDitZzitLDitZnitZnitLDitYTitYnitY8nLFxuICAgICAgICAgICAgZCA6ICfitLDitZnitZknLFxuICAgICAgICAgICAgZGQgOiAnJWQgb+K1meK1meK0sOK1jycsXG4gICAgICAgICAgICBNIDogJ+K0sOK1om/itZPitZQnLFxuICAgICAgICAgICAgTU0gOiAnJWQg4rWJ4rWi4rWi4rWJ4rWU4rWPJyxcbiAgICAgICAgICAgIHkgOiAn4rSw4rWZ4rSz4rSw4rWZJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOK1ieK1meK0s+K0sOK1meK1jydcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR6bTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHR6bUxhdG4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0em0tbGF0bicsIHtcbiAgICAgICAgbW9udGhzIDogJ2lubmF5cl9icsukYXlyy6RfbWFyy6Rzy6RfaWJyaXJfbWF5eXdfeXdueXdfeXdseXd6X8mjd8WhdF/FoXd0YW5iaXJfa3TLpHdicsukX253d2FuYmlyX2R3am5iaXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2lubmF5cl9icsukYXlyy6RfbWFyy6Rzy6RfaWJyaXJfbWF5eXdfeXdueXdfeXdseXd6X8mjd8WhdF/FoXd0YW5iaXJfa3TLpHdicsukX253d2FuYmlyX2R3am5iaXInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ2FzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2nhuI15YXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1thc2RraCBnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2Fza2EgZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtnXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2Fzc2FudCBnXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2ddIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RhZGtoIHMgeWFuICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAneWFuICVzJyxcbiAgICAgICAgICAgIHMgOiAnaW1paycsXG4gICAgICAgICAgICBzcyA6ICclZCBpbWlrJyxcbiAgICAgICAgICAgIG0gOiAnbWludeG4jScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW514biNJyxcbiAgICAgICAgICAgIGggOiAnc2HJm2EnLFxuICAgICAgICAgICAgaGggOiAnJWQgdGFzc2HJm2luJyxcbiAgICAgICAgICAgIGQgOiAnYXNzJyxcbiAgICAgICAgICAgIGRkIDogJyVkIG9zc2FuJyxcbiAgICAgICAgICAgIE0gOiAnYXlvd3InLFxuICAgICAgICAgICAgTU0gOiAnJWQgaXl5aXJuJyxcbiAgICAgICAgICAgIHkgOiAnYXNnYXMnLFxuICAgICAgICAgICAgeXkgOiAnJWQgaXNnYXNuJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHptTGF0bjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbGFuZ3VhZ2UgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdWdDbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VnLWNuJywge1xuICAgICAgICBtb250aHM6ICfZitin2Ybbi9in2LFf2YHbkNuL2LHYp9mEX9mF2KfYsdiqX9im2KfZvtix25DZhF/Zhdin2Ypf2KbZidmK24fZhl/YptmJ2Yrbh9mEX9im2Kfbi9i624fYs9iqX9iz25DZhtiq25XYqNmJ2LFf2KbbhtmD2Krbldio2YnYsV/ZhtmI2YrYp9io2YnYsV/Yr9uQ2YPYp9io2YnYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfZitin2Ybbi9in2LFf2YHbkNuL2LHYp9mEX9mF2KfYsdiqX9im2KfZvtix25DZhF/Zhdin2Ypf2KbZidmK24fZhl/YptmJ2Yrbh9mEX9im2Kfbi9i624fYs9iqX9iz25DZhtiq25XYqNmJ2LFf2KbbhtmD2Krbldio2YnYsV/ZhtmI2YrYp9io2YnYsV/Yr9uQ2YPYp9io2YnYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfZituV2YPYtNuV2YbYqNuVX9iv24jYtNuV2YbYqNuVX9iz25XZiti025XZhtio25Vf2obYp9ix2LTbldmG2KjblV/ZvtuV2YrYtNuV2YbYqNuVX9is24jZhduVX9i025XZhtio25UnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfZituVX9iv24hf2LPblV/ahtinX9m+25Vf2KzbiF/YtNuVJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9mK25Vf2K/biF/Ys9uVX9qG2Kdf2b7blV/YrNuIX9i025UnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnWVlZWS3ZitmJ2YTZiU0t2KbYp9mK2YbZidqtRC3Zg9uI2YbZiScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJ2IwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGTYjCBZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJ2IwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/ZituQ2LHZidmFINmD25DahtuVfNiz25XavtuV2LF82obbiNi02KrZidmGINio24fYsduH2YZ82obbiNi0fNqG24jYtNiq2YnZhiDZg9uQ2YrZidmGfNmD25Xahi8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ9mK25DYsdmJ2YUg2YPbkNqG25UnIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfYs9uV2r7bldixJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn2obbiNi02KrZidmGINio24fYsduH2YYnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhicgfHwgbWVyaWRpZW0gPT09ICfZg9uV2oYnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YrbkNix2YnZhSDZg9uQ2obblSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYs9uV2r7bldixJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfahtuI2LTYqtmJ2YYg2Kjbh9ix24fZhic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YPbldqGJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KjbiNqv24jZhiDYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9im25XYqtuVINiz2KfYptuV2KpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW9mD25DZhNuV2LHZg9mJXSBkZGRkIFvYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9iq24bZhtuI2q/biNmGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vYptin2YTYr9mJ2YbZgtmJXSBkZGRkIFvYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg2YPbkNmK2YnZhicsXG4gICAgICAgICAgICBwYXN0OiAnJXMg2Kjbh9ix24fZhicsXG4gICAgICAgICAgICBzOiAn2YbbldqG2obblSDYs9uQ2YPZiNmG2KonLFxuICAgICAgICAgICAgc3M6ICclZCDYs9uQ2YPZiNmG2KonLFxuICAgICAgICAgICAgbTogJ9io2YnYsSDZhdmJ2Ybbh9iqJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2YXZidmG24fYqicsXG4gICAgICAgICAgICBoOiAn2KjZidixINiz2KfYptuV2KonLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2KbbldiqJyxcbiAgICAgICAgICAgIGQ6ICfYqNmJ2LEg2YPbiNmGJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2YPbiNmGJyxcbiAgICAgICAgICAgIE06ICfYqNmJ2LEg2KbYp9mKJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KbYp9mKJyxcbiAgICAgICAgICAgIHk6ICfYqNmJ2LEg2YrZidmEJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2YrZidmEJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSgt2YPbiNmG2Yl8Ldim2KfZinwt2r7bldm+2KrblSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct2YPbiNmG2YknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3avtuV2b7YqtuVJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIC8vIEdCL1QgNzQwOC0xOTk044CK5pWw5o2u5YWD5ZKM5Lqk5o2i5qC85byPwrfkv6Hmga/kuqTmjaLCt+aXpeacn+WSjOaXtumXtOihqOekuuazleOAi+S4jklTTyA4NjAxOjE5ODjnrYnmlYhcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdWdDbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKHdvcmQsIG51bSkge1xuICAgICAgICB2YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBudW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExID8gZm9ybXNbMF0gOiAobnVtICUgMTAgPj0gMiAmJiBudW0gJSAxMCA8PSA0ICYmIChudW0gJSAxMDAgPCAxMCB8fCBudW0gJSAxMDAgPj0gMjApID8gZm9ybXNbMV0gOiBmb3Jtc1syXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdzcyc6IHdpdGhvdXRTdWZmaXggPyAn0YHQtdC60YPQvdC00LBf0YHQtdC60YPQvdC00Lhf0YHQtdC60YPQvdC0JyA6ICfRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTQuF/RgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgJ21tJzogd2l0aG91dFN1ZmZpeCA/ICfRhdCy0LjQu9C40L3QsF/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0nIDogJ9GF0LLQuNC70LjQvdGDX9GF0LLQuNC70LjQvdC4X9GF0LLQuNC70LjQvScsXG4gICAgICAgICAgICAnaGgnOiB3aXRob3V0U3VmZml4ID8gJ9Cz0L7QtNC40L3QsF/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvScgOiAn0LPQvtC00LjQvdGDX9Cz0L7QtNC40L3QuF/Qs9C+0LTQuNC9JyxcbiAgICAgICAgICAgICdkZCc6ICfQtNC10L3RjF/QtNC90ZZf0LTQvdGW0LInLFxuICAgICAgICAgICAgJ01NJzogJ9C80ZbRgdGP0YbRjF/QvNGW0YHRj9GG0ZZf0LzRltGB0Y/RhtGW0LInLFxuICAgICAgICAgICAgJ3l5JzogJ9GA0ZbQul/RgNC+0LrQuF/RgNC+0LrRltCyJ1xuICAgICAgICB9O1xuICAgICAgICBpZiAoa2V5ID09PSAnbScpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0LLQuNC70LjQvdCwJyA6ICfRhdCy0LjQu9C40L3Rgyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnaCcpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9Cz0L7QtNC40L3QsCcgOiAn0LPQvtC00LjQvdGDJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBwbHVyYWwoZm9ybWF0W2tleV0sICtudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdlZWtkYXlzQ2FzZVJlcGxhY2UobSwgZm9ybWF0KSB7XG4gICAgICAgIHZhciB3ZWVrZGF5cyA9IHtcbiAgICAgICAgICAgICdub21pbmF0aXZlJzogJ9C90LXQtNGW0LvRj1/Qv9C+0L3QtdC00ZbQu9C+0Lpf0LLRltCy0YLQvtGA0L7Qul/RgdC10YDQtdC00LBf0YfQtdGC0LLQtdGAX9C/4oCZ0Y/RgtC90LjRhtGPX9GB0YPQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgICdhY2N1c2F0aXZlJzogJ9C90LXQtNGW0LvRjl/Qv9C+0L3QtdC00ZbQu9C+0Lpf0LLRltCy0YLQvtGA0L7Qul/RgdC10YDQtdC00YNf0YfQtdGC0LLQtdGAX9C/4oCZ0Y/RgtC90LjRhtGOX9GB0YPQsdC+0YLRgycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgICdnZW5pdGl2ZSc6ICfQvdC10LTRltC70ZZf0L/QvtC90LXQtNGW0LvQutCwX9Cy0ZbQstGC0L7RgNC60LBf0YHQtdGA0LXQtNC4X9GH0LXRgtCy0LXRgNCz0LBf0L/igJnRj9GC0L3QuNGG0ZZf0YHRg9Cx0L7RgtC4Jy5zcGxpdCgnXycpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG0gPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5c1snbm9taW5hdGl2ZSddLnNsaWNlKDEsIDcpLmNvbmNhdCh3ZWVrZGF5c1snbm9taW5hdGl2ZSddLnNsaWNlKDAsIDEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5c1snbm9taW5hdGl2ZSddO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5vdW5DYXNlID0gKC8oXFxbW9CS0LLQo9GDXVxcXSkgP2RkZGQvKS50ZXN0KGZvcm1hdCkgP1xuICAgICAgICAgICAgJ2FjY3VzYXRpdmUnIDpcbiAgICAgICAgICAgICgoL1xcWz8oPzrQvNC40L3Rg9C70L7Rl3zQvdCw0YHRgtGD0L/QvdC+0ZcpPyA/XFxdID9kZGRkLykudGVzdChmb3JtYXQpID9cbiAgICAgICAgICAgICAgICAnZ2VuaXRpdmUnIDpcbiAgICAgICAgICAgICAgICAnbm9taW5hdGl2ZScpO1xuICAgICAgICByZXR1cm4gd2Vla2RheXNbbm91bkNhc2VdW20uZGF5KCldO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzSG91cnNGdW5jdGlvbihzdHIpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHIgKyAn0L4nICsgKHRoaXMuaG91cnMoKSA9PT0gMTEgPyAn0LEnIDogJycpICsgJ10gTFQnO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciB1ayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VrJywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICAnZm9ybWF0JzogJ9GB0ZbRh9C90Y9f0LvRjtGC0L7Qs9C+X9Cx0LXRgNC10LfQvdGPX9C60LLRltGC0L3Rj1/RgtGA0LDQstC90Y9f0YfQtdGA0LLQvdGPX9C70LjQv9C90Y9f0YHQtdGA0L/QvdGPX9Cy0LXRgNC10YHQvdGPX9C20L7QstGC0L3Rj1/Qu9C40YHRgtC+0L/QsNC00LBf0LPRgNGD0LTQvdGPJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgJ3N0YW5kYWxvbmUnOiAn0YHRltGH0LXQvdGMX9C70Y7RgtC40Llf0LHQtdGA0LXQt9C10L3RjF/QutCy0ZbRgtC10L3RjF/RgtGA0LDQstC10L3RjF/Rh9C10YDQstC10L3RjF/Qu9C40L/QtdC90Yxf0YHQtdGA0L/QtdC90Yxf0LLQtdGA0LXRgdC10L3RjF/QttC+0LLRgtC10L3RjF/Qu9C40YHRgtC+0L/QsNC0X9Cz0YDRg9C00LXQvdGMJy5zcGxpdCgnXycpXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9GB0ZbRh1/Qu9GO0YJf0LHQtdGAX9C60LLRltGCX9GC0YDQsNCyX9GH0LXRgNCyX9C70LjQv1/RgdC10YDQv1/QstC10YBf0LbQvtCy0YJf0LvQuNGB0YJf0LPRgNGD0LQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogd2Vla2RheXNDYXNlUmVwbGFjZSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVkg0YAuJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSDRgC4sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkg0YAuLCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9Ch0YzQvtCz0L7QtNC90ZYgJyksXG4gICAgICAgICAgICBuZXh0RGF5OiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9CX0LDQstGC0YDQsCAnKSxcbiAgICAgICAgICAgIGxhc3REYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JLRh9C+0YDQsCAnKSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9CjXSBkZGRkIFsnKSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9Cc0LjQvdGD0LvQvtGXXSBkZGRkIFsnKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JzQuNC90YPQu9C+0LPQvl0gZGRkZCBbJykuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn0LfQsCAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzINGC0L7QvNGDJyxcbiAgICAgICAgICAgIHMgOiAn0LTQtdC60ZbQu9GM0LrQsCDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3MgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoIDogJ9Cz0L7QtNC40L3RgycsXG4gICAgICAgICAgICBoaCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkIDogJ9C00LXQvdGMJyxcbiAgICAgICAgICAgIGRkIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE0gOiAn0LzRltGB0Y/RhtGMJyxcbiAgICAgICAgICAgIE1NIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHkgOiAn0YDRltC6JyxcbiAgICAgICAgICAgIHl5IDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbFxuICAgICAgICB9LFxuICAgICAgICAvLyBNLiBFLjogdGhvc2UgdHdvIGFyZSB2aXJ0dWFsbHkgdW51c2VkIGJ1dCBhIHVzZXIgbWlnaHQgd2FudCB0byBpbXBsZW1lbnQgdGhlbSBmb3IgaGlzL2hlciB3ZWJzaXRlIGZvciBzb21lIHJlYXNvblxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0L3QvtGH0ZZ80YDQsNC90LrRg3zQtNC90Y980LLQtdGH0L7RgNCwLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o0LTQvdGPfNCy0LXRh9C+0YDQsCkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9GWJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNCw0L3QutGDJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQtNC90Y8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cy0LXRh9C+0YDQsCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0Ll80LPQvikvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9C+JztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1aztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgJ9is2YbZiNix24wnLFxuICAgICAgICAn2YHYsdmI2LHbjCcsXG4gICAgICAgICfZhdin2LHahicsXG4gICAgICAgICfYp9m+2LHbjNmEJyxcbiAgICAgICAgJ9mF2KbbjCcsXG4gICAgICAgICfYrNmI2YYnLFxuICAgICAgICAn2KzZiNmE2KfYptuMJyxcbiAgICAgICAgJ9in2q/Ys9iqJyxcbiAgICAgICAgJ9iz2KrZhdio2LEnLFxuICAgICAgICAn2Kfaqdiq2YjYqNixJyxcbiAgICAgICAgJ9mG2YjZhdio2LEnLFxuICAgICAgICAn2K/Ys9mF2KjYsSdcbiAgICBdO1xuICAgIHZhciBkYXlzID0gW1xuICAgICAgICAn2KfYqtmI2KfYsScsXG4gICAgICAgICfZvtuM2LEnLFxuICAgICAgICAn2YXZhtqv2YQnLFxuICAgICAgICAn2KjYr9q+JyxcbiAgICAgICAgJ9is2YXYudix2KfYqicsXG4gICAgICAgICfYrNmF2LnbgScsXG4gICAgICAgICfbgdmB2KrbgSdcbiAgICBdO1xuXG4gICAgdmFyIHVyID0gbW9tZW50LmRlZmluZUxvY2FsZSgndXInLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzTWluIDogZGF5cyxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGTYjCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i12KjYrXzYtNin2YUvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i12KjYrSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhSc7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb2KLYrCDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb2qnZhCDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9qv2LDYtNiq24Eg2LHZiNiyINio2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb2q/YsNi02KrbgV0gZGRkZCBb2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDYqNi52K8nLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDZgtio2YQnLFxuICAgICAgICAgICAgcyA6ICfahtmG2K8g2LPbjNqp2YbaiCcsXG4gICAgICAgICAgICBzcyA6ICclZCDYs9uM2qnZhtqIJyxcbiAgICAgICAgICAgIG0gOiAn2KfbjNqpINmF2YbZuScsXG4gICAgICAgICAgICBtbSA6ICclZCDZhdmG2bknLFxuICAgICAgICAgICAgaCA6ICfYp9uM2qkg2q/avtmG2bnbgScsXG4gICAgICAgICAgICBoaCA6ICclZCDar9q+2YbZuduSJyxcbiAgICAgICAgICAgIGQgOiAn2KfbjNqpINiv2YYnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2K/ZhicsXG4gICAgICAgICAgICBNIDogJ9in24zaqSDZhdin24EnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2YXYp9uBJyxcbiAgICAgICAgICAgIHkgOiAn2KfbjNqpINiz2KfZhCcsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9in2YQnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB1eiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3V6Jywge1xuICAgICAgICBtb250aHMgOiAn0Y/QvdCy0LDRgF/RhNC10LLRgNCw0Ltf0LzQsNGA0YJf0LDQv9GA0LXQu1/QvNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YBf0L7QutGC0Y/QsdGAX9C90L7Rj9Cx0YBf0LTQtdC60LDQsdGAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfRj9C90LJf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn0K/QutGI0LDQvdCx0LBf0JTRg9GI0LDQvdCx0LBf0KHQtdGI0LDQvdCx0LBf0KfQvtGA0YjQsNC90LHQsF/Qn9Cw0LnRiNCw0L3QsdCwX9CW0YPQvNCwX9Co0LDQvdCx0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0K/QutGIX9CU0YPRiF/QodC10Yhf0KfQvtGAX9Cf0LDQuV/QltGD0Lxf0KjQsNC9Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQr9C6X9CU0YNf0KHQtV/Qp9C+X9Cf0LBf0JbRg1/QqNCwJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb0JHRg9Cz0YPQvSDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9Ct0YDRgtCw0LPQsF0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9C60YPQvdC4INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb0JrQtdGH0LAg0YHQvtCw0YJdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb0KPRgtCz0LDQvV0gZGRkZCBb0LrRg9C90Lgg0YHQvtCw0YJdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn0K/QutC40L0gJXMg0LjRh9C40LTQsCcsXG4gICAgICAgICAgICBwYXN0IDogJ9CR0LjRgCDQvdC10YfQsCAlcyDQvtC70LTQuNC9JyxcbiAgICAgICAgICAgIHMgOiAn0YTRg9GA0YHQsNGCJyxcbiAgICAgICAgICAgIHNzIDogJyVkINGE0YPRgNGB0LDRgicsXG4gICAgICAgICAgICBtIDogJ9Cx0LjRgCDQtNCw0LrQuNC60LAnLFxuICAgICAgICAgICAgbW0gOiAnJWQg0LTQsNC60LjQutCwJyxcbiAgICAgICAgICAgIGggOiAn0LHQuNGAINGB0L7QsNGCJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGB0L7QsNGCJyxcbiAgICAgICAgICAgIGQgOiAn0LHQuNGAINC60YPQvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQutGD0L0nLFxuICAgICAgICAgICAgTSA6ICfQsdC40YAg0L7QuScsXG4gICAgICAgICAgICBNTSA6ICclZCDQvtC5JyxcbiAgICAgICAgICAgIHkgOiAn0LHQuNGAINC50LjQuycsXG4gICAgICAgICAgICB5eSA6ICclZCDQudC40LsnXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHV6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdXpMYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndXotbGF0bicsIHtcbiAgICAgICAgbW9udGhzIDogJ1lhbnZhcl9GZXZyYWxfTWFydF9BcHJlbF9NYXlfSXl1bl9JeXVsX0F2Z3VzdF9TZW50YWJyX09rdGFicl9Ob3lhYnJfRGVrYWJyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdZYW5fRmV2X01hcl9BcHJfTWF5X0l5dW5fSXl1bF9BdmdfU2VuX09rdF9Ob3lfRGVrJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdZYWtzaGFuYmFfRHVzaGFuYmFfU2VzaGFuYmFfQ2hvcnNoYW5iYV9QYXlzaGFuYmFfSnVtYV9TaGFuYmEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnWWFrX0R1c2hfU2VzaF9DaG9yX1BheV9KdW1fU2hhbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnWWFfRHVfU2VfQ2hvX1BhX0p1X1NoYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ0QgTU1NTSBZWVlZLCBkZGRkIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0J1Z3VuIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbRXJ0YWdhXSBMVCBbZGFdJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2t1bmkgc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tLZWNoYSBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tPXFwndGdhbl0gZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdZYXFpbiAlcyBpY2hpZGEnLFxuICAgICAgICAgICAgcGFzdCA6ICdCaXIgbmVjaGEgJXMgb2xkaW4nLFxuICAgICAgICAgICAgcyA6ICdzb25peWEnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc29uaXlhJyxcbiAgICAgICAgICAgIG0gOiAnYmlyIGRhcWlxYScsXG4gICAgICAgICAgICBtbSA6ICclZCBkYXFpcWEnLFxuICAgICAgICAgICAgaCA6ICdiaXIgc29hdCcsXG4gICAgICAgICAgICBoaCA6ICclZCBzb2F0JyxcbiAgICAgICAgICAgIGQgOiAnYmlyIGt1bicsXG4gICAgICAgICAgICBkZCA6ICclZCBrdW4nLFxuICAgICAgICAgICAgTSA6ICdiaXIgb3knLFxuICAgICAgICAgICAgTU0gOiAnJWQgb3knLFxuICAgICAgICAgICAgeSA6ICdiaXIgeWlsJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHlpbCdcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXpMYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdmkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd2aScsIHtcbiAgICAgICAgbW9udGhzIDogJ3Row6FuZyAxX3Row6FuZyAyX3Row6FuZyAzX3Row6FuZyA0X3Row6FuZyA1X3Row6FuZyA2X3Row6FuZyA3X3Row6FuZyA4X3Row6FuZyA5X3Row6FuZyAxMF90aMOhbmcgMTFfdGjDoW5nIDEyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdUaDAxX1RoMDJfVGgwM19UaDA0X1RoMDVfVGgwNl9UaDA3X1RoMDhfVGgwOV9UaDEwX1RoMTFfVGgxMicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2No4bunIG5o4bqtdF90aOG7qSBoYWlfdGjhu6kgYmFfdGjhu6kgdMawX3Ro4bupIG7Eg21fdGjhu6kgc8OhdV90aOG7qSBi4bqjeScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdDTl9UMl9UM19UNF9UNV9UNl9UNycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9zYXxjaC9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL15jaCQvaS50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnc2EnIDogJ1NBJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnY2gnIDogJ0NIJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBbbsSDbV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFtuxINtXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFtuxINtXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnREQvTS9ZWVlZJyxcbiAgICAgICAgICAgIGxsIDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsIDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdkZGQsIEQgTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIw7RtIG5heSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW05nw6B5IG1haSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3R14bqnbiB04bubaSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0jDtG0gcXVhIGzDumNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbdHXhuqduIHLhu5NpIGzDumNdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIHThu5tpJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgdHLGsOG7m2MnLFxuICAgICAgICAgICAgcyA6ICd2w6BpIGdpw6J5JyxcbiAgICAgICAgICAgIHNzIDogJyVkIGdpw6J5JyAsXG4gICAgICAgICAgICBtIDogJ23hu5l0IHBow7p0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIHBow7p0JyxcbiAgICAgICAgICAgIGggOiAnbeG7mXQgZ2nhu50nLFxuICAgICAgICAgICAgaGggOiAnJWQgZ2nhu50nLFxuICAgICAgICAgICAgZCA6ICdt4buZdCBuZ8OgeScsXG4gICAgICAgICAgICBkZCA6ICclZCBuZ8OgeScsXG4gICAgICAgICAgICBNIDogJ23hu5l0IHRow6FuZycsXG4gICAgICAgICAgICBNTSA6ICclZCB0aMOhbmcnLFxuICAgICAgICAgICAgeSA6ICdt4buZdCBuxINtJyxcbiAgICAgICAgICAgIHl5IDogJyVkIG7Eg20nXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB2aTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHhQc2V1ZG8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd4LXBzZXVkbycsIHtcbiAgICAgICAgbW9udGhzIDogJ0p+w6HDscO6w6F+csO9X0Z+w6licsO6fsOhcsO9X35Nw6FyY35oX8OBcH5yw61sX35Nw6HDvV9+SsO6w7HDqX5fSsO6bH7DvV/DgcO6fmfDunN0fl9Tw6lwfnTDqW1ifsOpcl/Dk35jdMOzYn7DqXJfw5F+w7N2w6ltfmLDqXJffkTDqWPDqX5tYsOpcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSn7DocOxX35Gw6liX35Nw6FyX37DgXByX35Nw6HDvV9+SsO6w7FffkrDumxffsOBw7pnX35Tw6lwX37Dk2N0X37DkcOzdl9+RMOpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ1N+w7rDsWTDoX7DvV9Nw7N+w7Fkw6HDvX5fVMO6w6l+c2TDocO9fl9Xw6lkfsOxw6lzZH7DocO9X1R+aMO6cnN+ZMOhw71ffkZyw61kfsOhw71fU37DoXTDunJ+ZMOhw70nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU37DusOxX35Nw7PDsV9+VMO6w6lfflfDqWRfflRow7pffkZyw61fflPDoXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N+w7pfTcOzfl9Uw7pfflfDqV9UfmhfRnJ+X1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVH7Ds2TDoX7DvSDDoXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1R+w7Ntw7N+cnLDs353IMOhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbw6F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vDnX7DqXN0fsOpcmTDoX7DvSDDoXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMfsOhc3RdIGRkZGQgW8OhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ8OtfsOxICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgw6F+Z8OzJyxcbiAgICAgICAgICAgIHMgOiAnw6EgfmbDqXcgfnPDqWPDs37DsWRzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHN+w6ljw7PDsX5kcycsXG4gICAgICAgICAgICBtIDogJ8OhIH5tw63DsX7DunTDqScsXG4gICAgICAgICAgICBtbSA6ICclZCBtfsOtw7HDun50w6lzJyxcbiAgICAgICAgICAgIGggOiAnw6F+w7EgaMOzfsO6cicsXG4gICAgICAgICAgICBoaCA6ICclZCBofsOzw7pycycsXG4gICAgICAgICAgICBkIDogJ8OhIH5kw6HDvScsXG4gICAgICAgICAgICBkZCA6ICclZCBkfsOhw71zJyxcbiAgICAgICAgICAgIE0gOiAnw6Egfm3Ds8OxfnRoJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1+w7PDsXR+aHMnLFxuICAgICAgICAgICAgeSA6ICfDoSB+w73DqcOhcicsXG4gICAgICAgICAgICB5eSA6ICclZCDDvX7DqcOhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4geFBzZXVkbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHlvID0gbW9tZW50LmRlZmluZUxvY2FsZSgneW8nLCB7XG4gICAgICAgIG1vbnRocyA6ICdT4bq5zIFy4bq5zIFfRcyAcmXMgGxlzIBf4bq4cuG6ucyAbmHMgF9JzIBnYmXMgV9FzIBiaWJpX0/MgGt1zIBkdV9BZ+G6uW1vX0/MgGd1zIFuX093ZXdlX+G7jMyAd2HMgHJhzIBfQmXMgWx1zIFf4buMzIBw4bq5zIDMgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnU+G6ucyBcl9FzIBybF/hurhybl9JzIBnYl9FzIBiaV9PzIBrdcyAX0Fn4bq5X0/MgGd1zIFfT3dlX+G7jMyAd2HMgF9CZcyBbF/hu4zMgHDhurnMgMyAJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdBzIBpzIBrdcyBX0FqZcyBX0nMgHPhurnMgWd1bl/hu4xq4buNzIFydcyBX+G7jGrhu43MgWLhu41f4bq4dGnMgF9BzIBiYcyBbeG6ucyBdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnQcyAacyAa19BamXMgV9JzIBz4bq5zIFf4buManJf4buMamJf4bq4dGnMgF9BzIBiYcyBJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdBzIBpzIBfQWpfScyAc1/hu4xyX+G7jGJf4bq4dF9BzIBiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0/MgG5pzIAgbmldIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+G7jMyAbGEgbmldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW+G7jHPhurnMgCB0b8yBblxcJ2Lhu41dIFtuaV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbQcyAbmEgbmldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW+G7jHPhurnMgCB0b8yBbOG7jcyBXSBbbmldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICduacyBICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMga+G7jWphzIEnLFxuICAgICAgICAgICAgcyA6ICdpzIBz4bq5anXMgSBhYXlhzIEgZGllJyxcbiAgICAgICAgICAgIHNzIDonYWF5YcyBICVkJyxcbiAgICAgICAgICAgIG0gOiAnacyAc+G6uWp1zIEga2FuJyxcbiAgICAgICAgICAgIG1tIDogJ2nMgHPhurlqdcyBICVkJyxcbiAgICAgICAgICAgIGggOiAnd2HMgWthdGkga2FuJyxcbiAgICAgICAgICAgIGhoIDogJ3dhzIFrYXRpICVkJyxcbiAgICAgICAgICAgIGQgOiAn4buNauG7jcyBIGthbicsXG4gICAgICAgICAgICBkZCA6ICfhu41q4buNzIEgJWQnLFxuICAgICAgICAgICAgTSA6ICdvc3XMgCBrYW4nLFxuICAgICAgICAgICAgTU0gOiAnb3N1zIAgJWQnLFxuICAgICAgICAgICAgeSA6ICfhu41kdcyBbiBrYW4nLFxuICAgICAgICAgICAgeXkgOiAn4buNZHXMgW4gJWQnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAv4buNauG7jcyBXFxzXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsIDogJ+G7jWrhu43MgSAlZCcsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4geW87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB6aENuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtY24nLCB7XG4gICAgICAgIG1vbnRocyA6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICflkajml6Vf5ZGo5LiAX+WRqOS6jF/lkajkuIlf5ZGo5ZubX+WRqOS6lF/lkajlha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+aXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWeW5tE3mnIhE5pelQWjngrltbeWIhicsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVnlubRN5pyIROaXpWRkZGRBaOeCuW1t5YiGJyxcbiAgICAgICAgICAgIGwgOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbCA6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICflh4zmmagnIHx8IG1lcmlkaWVtID09PSAn5pep5LiKJyB8fFxuICAgICAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+S4iuWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vICfkuK3ljYgnXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WHjOaZqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfml6nkuIonO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDExMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4iuWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb5LuK5aSpXUxUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+aYjuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb5LiLXWRkZGRMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vmmKjlpKldTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+S4il1kZGRkTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh85ZGoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aciCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5ZGoJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXPlhoUnLFxuICAgICAgICAgICAgcGFzdCA6ICclc+WJjScsXG4gICAgICAgICAgICBzIDogJ+WHoOenkicsXG4gICAgICAgICAgICBzcyA6ICclZCDnp5InLFxuICAgICAgICAgICAgbSA6ICcxIOWIhumSnycsXG4gICAgICAgICAgICBtbSA6ICclZCDliIbpkp8nLFxuICAgICAgICAgICAgaCA6ICcxIOWwj+aXticsXG4gICAgICAgICAgICBoaCA6ICclZCDlsI/ml7YnLFxuICAgICAgICAgICAgZCA6ICcxIOWkqScsXG4gICAgICAgICAgICBkZCA6ICclZCDlpKknLFxuICAgICAgICAgICAgTSA6ICcxIOS4quaciCcsXG4gICAgICAgICAgICBNTSA6ICclZCDkuKrmnIgnLFxuICAgICAgICAgICAgeSA6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eSA6ICclZCDlubQnXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICAvLyBHQi9UIDc0MDgtMTk5NOOAiuaVsOaNruWFg+WSjOS6pOaNouagvOW8j8K35L+h5oGv5Lqk5o2iwrfml6XmnJ/lkozml7bpl7TooajnpLrms5XjgIvkuI5JU08gODYwMToxOTg4562J5pWIXG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHpoQ247XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB6aEhrID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtaGsnLCB7XG4gICAgICAgIG1vbnRocyA6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfpgLHml6Vf6YCx5LiAX+mAseS6jF/pgLHkuIlf6YCx5ZubX+mAseS6lF/pgLHlha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+aXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsIDogJ1lZWVkvTS9EJyxcbiAgICAgICAgICAgIGxsIDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGwgOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIonIHx8IG1lcmlkaWVtID09PSAn5LiK5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4reWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZmuS4iicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WHjOaZqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfml6nkuIonO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDExMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4iuWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb5LuK5aSpXUxUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+aYjuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb5LiLXWRkZGRMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vmmKjlpKldTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+S4il1kZGRkTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCcgOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnIDpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnIDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nIDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnIDpcbiAgICAgICAgICAgICAgICBjYXNlICdXJyA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn6YCxJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0IDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVz5YWnJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXPliY0nLFxuICAgICAgICAgICAgcyA6ICflub7np5InLFxuICAgICAgICAgICAgc3MgOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG0gOiAnMSDliIbpkJgnLFxuICAgICAgICAgICAgbW0gOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGggOiAnMSDlsI/mmYInLFxuICAgICAgICAgICAgaGggOiAnJWQg5bCP5pmCJyxcbiAgICAgICAgICAgIGQgOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQgOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIE0gOiAnMSDlgIvmnIgnLFxuICAgICAgICAgICAgTU0gOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHkgOiAnMSDlubQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg5bm0J1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhIaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHpoVHcgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd6aC10dycsIHtcbiAgICAgICAgbW9udGhzIDogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbCA6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5YeM5pmoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCA5MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aXqeS4iic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiK5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuK3ljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDE4MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4i+WNiCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pma5LiKJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vku4rlpKldIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+aYjuWkqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+S4i11kZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+aYqOWkqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+S4il1kZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOmAsSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnIDpcbiAgICAgICAgICAgICAgICBjYXNlICdEJyA6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJyA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBjYXNlICdNJyA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JyA6XG4gICAgICAgICAgICAgICAgY2FzZSAnVycgOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+mAsSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdCA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclc+WFpycsXG4gICAgICAgICAgICBwYXN0IDogJyVz5YmNJyxcbiAgICAgICAgICAgIHMgOiAn5bm+56eSJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOenkicsXG4gICAgICAgICAgICBtIDogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOWIhumQmCcsXG4gICAgICAgICAgICBoIDogJzEg5bCP5pmCJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkIDogJzEg5aSpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOWkqScsXG4gICAgICAgICAgICBNIDogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOWAi+aciCcsXG4gICAgICAgICAgICB5IDogJzEg5bm0JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOW5tCdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHpoVHc7XG5cbn0pKSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHV0aWxzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLyoqXG4gKiBMb29wcyB0aHJvdWdoIHRoZSBjb2xsZWN0aW9uIGFuZCBjYWxscyB0aGUgY2FsbGJhY2sgZm9yIGVhY2ggZWxlbWVudC4gaWYgdGhlIGNhbGxiYWNrIHJldHVybnMgdHJ1dGh5LCB0aGUgbG9vcCBpcyBicm9rZW4gYW5kIHJldHVybnMgdGhlIHNhbWUgdmFsdWUuXG4gKiBAcHVibGljXG4gKiBAcGFyYW0geyp9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gbG9vcCB0aHJvdWdoLiBOZWVkcyB0byBoYXZlIGEgbGVuZ3RoIHByb3BlcnR5IHNldCBhbmQgaGF2ZSBpbmRpY2VzIHNldCBmcm9tIDAgdG8gbGVuZ3RoIC0gMS5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgZm9yIGVhY2ggZWxlbWVudC4gVGhlIGVsZW1lbnQgd2lsbCBiZSBnaXZlbiBhcyBhIHBhcmFtZXRlciB0byB0aGUgY2FsbGJhY2suIElmIHRoaXMgY2FsbGJhY2sgcmV0dXJucyB0cnV0aHksIHRoZSBsb29wIGlzIGJyb2tlbiBhbmQgdGhlIHNhbWUgdmFsdWUgaXMgcmV0dXJuZWQuXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHZhbHVlIHRoYXQgYSBjYWxsYmFjayBoYXMgcmV0dXJuZWQgKGlmIHRydXRoeSkuIE90aGVyd2lzZSBub3RoaW5nLlxuICovXG51dGlscy5mb3JFYWNoID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2FsbGJhY2spIHtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgY29sbGVjdGlvbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY2FsbGJhY2soY29sbGVjdGlvbltpXSk7XG4gICAgICAgIGlmKHJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIGRldGVjdG9yID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuZGV0ZWN0b3IuaXNJRSA9IGZ1bmN0aW9uKHZlcnNpb24pIHtcbiAgICBmdW5jdGlvbiBpc0FueUllVmVyc2lvbigpIHtcbiAgICAgICAgdmFyIGFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gYWdlbnQuaW5kZXhPZihcIm1zaWVcIikgIT09IC0xIHx8IGFnZW50LmluZGV4T2YoXCJ0cmlkZW50XCIpICE9PSAtMSB8fCBhZ2VudC5pbmRleE9mKFwiIGVkZ2UvXCIpICE9PSAtMTtcbiAgICB9XG5cbiAgICBpZighaXNBbnlJZVZlcnNpb24oKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYoIXZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy9TaGFtZWxlc3NseSBzdG9sZW4gZnJvbSBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9wYWRvbHNleS81Mjc2ODNcbiAgICB2YXIgaWVWZXJzaW9uID0gKGZ1bmN0aW9uKCl7XG4gICAgICAgIHZhciB1bmRlZixcbiAgICAgICAgICAgIHYgPSAzLFxuICAgICAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgIGFsbCA9IGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlcIik7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9IFwiPCEtLVtpZiBndCBJRSBcIiArICgrK3YpICsgXCJdPjxpPjwvaT48IVtlbmRpZl0tLT5cIjtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoYWxsWzBdKTtcblxuICAgICAgICByZXR1cm4gdiA+IDQgPyB2IDogdW5kZWY7XG4gICAgfSgpKTtcblxuICAgIHJldHVybiB2ZXJzaW9uID09PSBpZVZlcnNpb247XG59O1xuXG5kZXRlY3Rvci5pc0xlZ2FjeU9wZXJhID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICEhd2luZG93Lm9wZXJhO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChleCkgeyByZXR1cm4gKGV4ICYmICh0eXBlb2YgZXggPT09ICdvYmplY3QnKSAmJiAnZGVmYXVsdCcgaW4gZXgpID8gZXhbJ2RlZmF1bHQnXSA6IGV4OyB9XG5cbnZhciBQcm9wVHlwZXMgPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgncHJvcC10eXBlcycpKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgUmVhY3RfX2RlZmF1bHQgPSBfaW50ZXJvcERlZmF1bHQoUmVhY3QpO1xudmFyIHdhcm5pbmcgPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgnd2FybmluZycpKTtcbnZhciBDb3VudFVwJDEgPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgnY291bnR1cC5qcycpKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuICAgIGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlO1xuICAgIH0pO1xuICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcblxuICAgIGlmIChpICUgMikge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIH1cblxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTtcbn1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG5cbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gc2VsZjtcbn1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkge1xuICBpZiAoY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICByZXR1cm4gY2FsbDtcbiAgfVxuXG4gIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpO1xufVxuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTtcbn1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gIGlmICghKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcbiAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpO1xufVxuXG52YXIgY3JlYXRlQ291bnRVcEluc3RhbmNlID0gZnVuY3Rpb24gY3JlYXRlQ291bnRVcEluc3RhbmNlKGVsLCBwcm9wcykge1xuICB2YXIgZGVjaW1hbCA9IHByb3BzLmRlY2ltYWwsXG4gICAgICBkZWNpbWFscyA9IHByb3BzLmRlY2ltYWxzLFxuICAgICAgZHVyYXRpb24gPSBwcm9wcy5kdXJhdGlvbixcbiAgICAgIGVhc2luZ0ZuID0gcHJvcHMuZWFzaW5nRm4sXG4gICAgICBlbmQgPSBwcm9wcy5lbmQsXG4gICAgICBmb3JtYXR0aW5nRm4gPSBwcm9wcy5mb3JtYXR0aW5nRm4sXG4gICAgICBwcmVmaXggPSBwcm9wcy5wcmVmaXgsXG4gICAgICBzZXBhcmF0b3IgPSBwcm9wcy5zZXBhcmF0b3IsXG4gICAgICBzdGFydCA9IHByb3BzLnN0YXJ0LFxuICAgICAgc3VmZml4ID0gcHJvcHMuc3VmZml4LFxuICAgICAgdXNlRWFzaW5nID0gcHJvcHMudXNlRWFzaW5nO1xuICByZXR1cm4gbmV3IENvdW50VXAkMShlbCwgc3RhcnQsIGVuZCwgZGVjaW1hbHMsIGR1cmF0aW9uLCB7XG4gICAgZGVjaW1hbDogZGVjaW1hbCxcbiAgICBlYXNpbmdGbjogZWFzaW5nRm4sXG4gICAgZm9ybWF0dGluZ0ZuOiBmb3JtYXR0aW5nRm4sXG4gICAgc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gICAgcHJlZml4OiBwcmVmaXgsXG4gICAgc3VmZml4OiBzdWZmaXgsXG4gICAgdXNlRWFzaW5nOiB1c2VFYXNpbmcsXG4gICAgdXNlR3JvdXBpbmc6ICEhc2VwYXJhdG9yXG4gIH0pO1xufTtcblxudmFyIENvdW50VXAgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKENvdW50VXAsIF9Db21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIENvdW50VXAoKSB7XG4gICAgdmFyIF9nZXRQcm90b3R5cGVPZjI7XG5cbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ291bnRVcCk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoX2dldFByb3RvdHlwZU9mMiA9IF9nZXRQcm90b3R5cGVPZihDb3VudFVwKSkuY2FsbC5hcHBseShfZ2V0UHJvdG90eXBlT2YyLCBbdGhpc10uY29uY2F0KGFyZ3MpKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiY3JlYXRlSW5zdGFuY2VcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHR5cGVvZiBfdGhpcy5wcm9wcy5jaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBXYXJuIHdoZW4gdXNlciBkaWRuJ3QgdXNlIGNvbnRhaW5lclJlZiBhdCBhbGxcbiAgICAgICAgd2FybmluZyhfdGhpcy5jb250YWluZXJSZWYuY3VycmVudCAmJiAoX3RoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCBfdGhpcy5jb250YWluZXJSZWYuY3VycmVudCBpbnN0YW5jZW9mIFNWR1RleHRFbGVtZW50IHx8IF90aGlzLmNvbnRhaW5lclJlZi5jdXJyZW50IGluc3RhbmNlb2YgU1ZHVFNwYW5FbGVtZW50KSwgXCJDb3VsZG4ndCBmaW5kIGF0dGFjaGVkIGVsZW1lbnQgdG8gaG9vayB0aGUgQ291bnRVcCBpbnN0YW5jZSBpbnRvISBUcnkgdG8gYXR0YWNoIFxcXCJjb250YWluZXJSZWZcXFwiIGZyb20gdGhlIHJlbmRlciBwcm9wIHRvIGEgYW4gSFRNTEVsZW1lbnQsIGVnLiA8c3BhbiByZWY9e2NvbnRhaW5lclJlZn0gLz4uXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3JlYXRlQ291bnRVcEluc3RhbmNlKF90aGlzLmNvbnRhaW5lclJlZi5jdXJyZW50LCBfdGhpcy5wcm9wcyk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicGF1c2VSZXN1bWVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZSA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLFxuICAgICAgICAgIHJlc2V0ID0gX2Fzc2VydFRoaXNJbml0aWFsaXplLnJlc2V0LFxuICAgICAgICAgIHN0YXJ0ID0gX2Fzc2VydFRoaXNJbml0aWFsaXplLnJlc3RhcnQsXG4gICAgICAgICAgdXBkYXRlID0gX2Fzc2VydFRoaXNJbml0aWFsaXplLnVwZGF0ZTtcblxuICAgICAgdmFyIG9uUGF1c2VSZXN1bWUgPSBfdGhpcy5wcm9wcy5vblBhdXNlUmVzdW1lO1xuXG4gICAgICBfdGhpcy5pbnN0YW5jZS5wYXVzZVJlc3VtZSgpO1xuXG4gICAgICBvblBhdXNlUmVzdW1lKHtcbiAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgIHVwZGF0ZTogdXBkYXRlXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZXNldFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2Fzc2VydFRoaXNJbml0aWFsaXplMiA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLFxuICAgICAgICAgIHBhdXNlUmVzdW1lID0gX2Fzc2VydFRoaXNJbml0aWFsaXplMi5wYXVzZVJlc3VtZSxcbiAgICAgICAgICBzdGFydCA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTIucmVzdGFydCxcbiAgICAgICAgICB1cGRhdGUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUyLnVwZGF0ZTtcblxuICAgICAgdmFyIG9uUmVzZXQgPSBfdGhpcy5wcm9wcy5vblJlc2V0O1xuXG4gICAgICBfdGhpcy5pbnN0YW5jZS5yZXNldCgpO1xuXG4gICAgICBvblJlc2V0KHtcbiAgICAgICAgcGF1c2VSZXN1bWU6IHBhdXNlUmVzdW1lLFxuICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgIHVwZGF0ZTogdXBkYXRlXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZXN0YXJ0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnJlc2V0KCk7XG5cbiAgICAgIF90aGlzLnN0YXJ0KCk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3RhcnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBwYXVzZVJlc3VtZSA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTMucGF1c2VSZXN1bWUsXG4gICAgICAgICAgcmVzZXQgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUzLnJlc2V0LFxuICAgICAgICAgIHN0YXJ0ID0gX2Fzc2VydFRoaXNJbml0aWFsaXplMy5yZXN0YXJ0LFxuICAgICAgICAgIHVwZGF0ZSA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTMudXBkYXRlO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBkZWxheSA9IF90aGlzJHByb3BzLmRlbGF5LFxuICAgICAgICAgIG9uRW5kID0gX3RoaXMkcHJvcHMub25FbmQsXG4gICAgICAgICAgb25TdGFydCA9IF90aGlzJHByb3BzLm9uU3RhcnQ7XG5cbiAgICAgIHZhciBydW4gPSBmdW5jdGlvbiBydW4oKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5pbnN0YW5jZS5zdGFydChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIG9uRW5kKHtcbiAgICAgICAgICAgIHBhdXNlUmVzdW1lOiBwYXVzZVJlc3VtZSxcbiAgICAgICAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgIHVwZGF0ZTogdXBkYXRlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTsgLy8gRGVsYXkgc3RhcnQgaWYgZGVsYXkgcHJvcCBpcyBwcm9wZXJseSBzZXRcblxuXG4gICAgICBpZiAoZGVsYXkgPiAwKSB7XG4gICAgICAgIF90aGlzLnRpbWVvdXRJZCA9IHNldFRpbWVvdXQocnVuLCBkZWxheSAqIDEwMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnVuKCk7XG4gICAgICB9XG5cbiAgICAgIG9uU3RhcnQoe1xuICAgICAgICBwYXVzZVJlc3VtZTogcGF1c2VSZXN1bWUsXG4gICAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgICAgdXBkYXRlOiB1cGRhdGVcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInVwZGF0ZVwiLCBmdW5jdGlvbiAobmV3RW5kKSB7XG4gICAgICB2YXIgX2Fzc2VydFRoaXNJbml0aWFsaXplNCA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLFxuICAgICAgICAgIHBhdXNlUmVzdW1lID0gX2Fzc2VydFRoaXNJbml0aWFsaXplNC5wYXVzZVJlc3VtZSxcbiAgICAgICAgICByZXNldCA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTQucmVzZXQsXG4gICAgICAgICAgc3RhcnQgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemU0LnJlc3RhcnQ7XG5cbiAgICAgIHZhciBvblVwZGF0ZSA9IF90aGlzLnByb3BzLm9uVXBkYXRlO1xuXG4gICAgICBfdGhpcy5pbnN0YW5jZS51cGRhdGUobmV3RW5kKTtcblxuICAgICAgb25VcGRhdGUoe1xuICAgICAgICBwYXVzZVJlc3VtZTogcGF1c2VSZXN1bWUsXG4gICAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgICAgc3RhcnQ6IHN0YXJ0XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjb250YWluZXJSZWZcIiwgUmVhY3RfX2RlZmF1bHQuY3JlYXRlUmVmKCkpO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvdW50VXAsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczIuY2hpbGRyZW4sXG4gICAgICAgICAgZGVsYXkgPSBfdGhpcyRwcm9wczIuZGVsYXk7XG4gICAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5jcmVhdGVJbnN0YW5jZSgpOyAvLyBEb24ndCBpbnZva2Ugc3RhcnQgaWYgY29tcG9uZW50IGlzIHVzZWQgYXMgYSByZW5kZXIgcHJvcFxuXG4gICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nICYmIGRlbGF5ICE9PSAwKSByZXR1cm47IC8vIE90aGVyd2lzZSBqdXN0IHN0YXJ0IGltbWVkaWF0ZWx5XG5cbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2hvdWxkQ29tcG9uZW50VXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGVuZCA9IF90aGlzJHByb3BzMy5lbmQsXG4gICAgICAgICAgc3RhcnQgPSBfdGhpcyRwcm9wczMuc3RhcnQsXG4gICAgICAgICAgc3VmZml4ID0gX3RoaXMkcHJvcHMzLnN1ZmZpeCxcbiAgICAgICAgICBwcmVmaXggPSBfdGhpcyRwcm9wczMucHJlZml4LFxuICAgICAgICAgIHJlZHJhdyA9IF90aGlzJHByb3BzMy5yZWRyYXcsXG4gICAgICAgICAgZHVyYXRpb24gPSBfdGhpcyRwcm9wczMuZHVyYXRpb24sXG4gICAgICAgICAgc2VwYXJhdG9yID0gX3RoaXMkcHJvcHMzLnNlcGFyYXRvcixcbiAgICAgICAgICBkZWNpbWFscyA9IF90aGlzJHByb3BzMy5kZWNpbWFscyxcbiAgICAgICAgICBkZWNpbWFsID0gX3RoaXMkcHJvcHMzLmRlY2ltYWw7XG4gICAgICB2YXIgaGFzQ2VydGFpblByb3BzQ2hhbmdlZCA9IGR1cmF0aW9uICE9PSBuZXh0UHJvcHMuZHVyYXRpb24gfHwgZW5kICE9PSBuZXh0UHJvcHMuZW5kIHx8IHN0YXJ0ICE9PSBuZXh0UHJvcHMuc3RhcnQgfHwgc3VmZml4ICE9PSBuZXh0UHJvcHMuc3VmZml4IHx8IHByZWZpeCAhPT0gbmV4dFByb3BzLnByZWZpeCB8fCBzZXBhcmF0b3IgIT09IG5leHRQcm9wcy5zZXBhcmF0b3IgfHwgZGVjaW1hbHMgIT09IG5leHRQcm9wcy5kZWNpbWFscyB8fCBkZWNpbWFsICE9PSBuZXh0UHJvcHMuZGVjaW1hbDtcbiAgICAgIHJldHVybiBoYXNDZXJ0YWluUHJvcHNDaGFuZ2VkIHx8IHJlZHJhdztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICAgIC8vIElmIGR1cmF0aW9uLCBzdWZmaXgsIHByZWZpeCwgc2VwYXJhdG9yIG9yIHN0YXJ0IGhhcyBjaGFuZ2VkXG4gICAgICAvLyB0aGVyZSdzIG5vIHdheSB0byB1cGRhdGUgdGhlIHZhbHVlcy5cbiAgICAgIC8vIFNvIHdlIG5lZWQgdG8gcmUtY3JlYXRlIHRoZSBDb3VudFVwIGluc3RhbmNlIGluIG9yZGVyIHRvXG4gICAgICAvLyByZXN0YXJ0IGl0LlxuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgZW5kID0gX3RoaXMkcHJvcHM0LmVuZCxcbiAgICAgICAgICBzdGFydCA9IF90aGlzJHByb3BzNC5zdGFydCxcbiAgICAgICAgICBzdWZmaXggPSBfdGhpcyRwcm9wczQuc3VmZml4LFxuICAgICAgICAgIHByZWZpeCA9IF90aGlzJHByb3BzNC5wcmVmaXgsXG4gICAgICAgICAgZHVyYXRpb24gPSBfdGhpcyRwcm9wczQuZHVyYXRpb24sXG4gICAgICAgICAgc2VwYXJhdG9yID0gX3RoaXMkcHJvcHM0LnNlcGFyYXRvcixcbiAgICAgICAgICBkZWNpbWFscyA9IF90aGlzJHByb3BzNC5kZWNpbWFscyxcbiAgICAgICAgICBkZWNpbWFsID0gX3RoaXMkcHJvcHM0LmRlY2ltYWwsXG4gICAgICAgICAgcHJlc2VydmVWYWx1ZSA9IF90aGlzJHByb3BzNC5wcmVzZXJ2ZVZhbHVlO1xuXG4gICAgICBpZiAoZHVyYXRpb24gIT09IHByZXZQcm9wcy5kdXJhdGlvbiB8fCBzdGFydCAhPT0gcHJldlByb3BzLnN0YXJ0IHx8IHN1ZmZpeCAhPT0gcHJldlByb3BzLnN1ZmZpeCB8fCBwcmVmaXggIT09IHByZXZQcm9wcy5wcmVmaXggfHwgc2VwYXJhdG9yICE9PSBwcmV2UHJvcHMuc2VwYXJhdG9yIHx8IGRlY2ltYWxzICE9PSBwcmV2UHJvcHMuZGVjaW1hbHMgfHwgZGVjaW1hbCAhPT0gcHJldlByb3BzLmRlY2ltYWwpIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5yZXNldCgpO1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5jcmVhdGVJbnN0YW5jZSgpO1xuICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICB9IC8vIE9ubHkgZW5kIHZhbHVlIGhhcyBjaGFuZ2VkLCBzbyByZXNldCBhbmQgYW5kIHJlLWFuaW1hdGUgd2l0aCB0aGUgdXBkYXRlZFxuICAgICAgLy8gZW5kIHZhbHVlLlxuXG5cbiAgICAgIGlmIChlbmQgIT09IHByZXZQcm9wcy5lbmQpIHtcbiAgICAgICAgaWYgKCFwcmVzZXJ2ZVZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5pbnN0YW5jZS5yZXNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS51cGRhdGUoZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy50aW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbnN0YW5jZS5yZXNldCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNSA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczUuY2hpbGRyZW4sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM1LmNsYXNzTmFtZSxcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzNS5zdHlsZTtcbiAgICAgIHZhciBjb250YWluZXJSZWYgPSB0aGlzLmNvbnRhaW5lclJlZixcbiAgICAgICAgICBwYXVzZVJlc3VtZSA9IHRoaXMucGF1c2VSZXN1bWUsXG4gICAgICAgICAgcmVzZXQgPSB0aGlzLnJlc2V0LFxuICAgICAgICAgIHJlc3RhcnQgPSB0aGlzLnJlc3RhcnQsXG4gICAgICAgICAgdXBkYXRlID0gdGhpcy51cGRhdGU7XG5cbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBjb3VudFVwUmVmOiBjb250YWluZXJSZWYsXG4gICAgICAgICAgcGF1c2VSZXN1bWU6IHBhdXNlUmVzdW1lLFxuICAgICAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgICAgICBzdGFydDogcmVzdGFydCxcbiAgICAgICAgICB1cGRhdGU6IHVwZGF0ZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIHJlZjogY29udGFpbmVyUmVmLFxuICAgICAgICBzdHlsZTogc3R5bGVcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDb3VudFVwO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ291bnRVcCwgXCJwcm9wVHlwZXNcIiwge1xuICBkZWNpbWFsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBkZWNpbWFsczogUHJvcFR5cGVzLm51bWJlcixcbiAgZGVsYXk6IFByb3BUeXBlcy5udW1iZXIsXG4gIGVhc2luZ0ZuOiBQcm9wVHlwZXMuZnVuYyxcbiAgZW5kOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGZvcm1hdHRpbmdGbjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TdGFydDogUHJvcFR5cGVzLmZ1bmMsXG4gIHByZWZpeDogUHJvcFR5cGVzLnN0cmluZyxcbiAgcmVkcmF3OiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VwYXJhdG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdGFydDogUHJvcFR5cGVzLm51bWJlcixcbiAgc3RhcnRPbk1vdW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgc3VmZml4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgdXNlRWFzaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgcHJlc2VydmVWYWx1ZTogUHJvcFR5cGVzLmJvb2xcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoQ291bnRVcCwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBkZWNpbWFsOiAnLicsXG4gIGRlY2ltYWxzOiAwLFxuICBkZWxheTogbnVsbCxcbiAgZHVyYXRpb246IG51bGwsXG4gIGVhc2luZ0ZuOiBudWxsLFxuICBmb3JtYXR0aW5nRm46IG51bGwsXG4gIG9uRW5kOiBmdW5jdGlvbiBvbkVuZCgpIHt9LFxuICBvblBhdXNlUmVzdW1lOiBmdW5jdGlvbiBvblBhdXNlUmVzdW1lKCkge30sXG4gIG9uUmVzZXQ6IGZ1bmN0aW9uIG9uUmVzZXQoKSB7fSxcbiAgb25TdGFydDogZnVuY3Rpb24gb25TdGFydCgpIHt9LFxuICBvblVwZGF0ZTogZnVuY3Rpb24gb25VcGRhdGUoKSB7fSxcbiAgcHJlZml4OiAnJyxcbiAgcmVkcmF3OiBmYWxzZSxcbiAgc2VwYXJhdG9yOiAnJyxcbiAgc3RhcnQ6IDAsXG4gIHN0YXJ0T25Nb3VudDogdHJ1ZSxcbiAgc3VmZml4OiAnJyxcbiAgc3R5bGU6IHVuZGVmaW5lZCxcbiAgdXNlRWFzaW5nOiB0cnVlLFxuICBwcmVzZXJ2ZVZhbHVlOiBmYWxzZVxufSk7XG5cbi8vIGFuZCBqdXN0IHNldHMgdGhlIGlubmVySFRNTCBvZiB0aGUgZWxlbWVudC5cblxudmFyIE1PQ0tfRUxFTUVOVCA9IHtcbiAgaW5uZXJIVE1MOiBudWxsXG59O1xuXG52YXIgdXNlQ291bnRVcCA9IGZ1bmN0aW9uIHVzZUNvdW50VXAocHJvcHMpIHtcbiAgdmFyIF9wcm9wcyA9IF9vYmplY3RTcHJlYWQyKHt9LCBDb3VudFVwLmRlZmF1bHRQcm9wcywge30sIHByb3BzKTtcblxuICB2YXIgc3RhcnQgPSBfcHJvcHMuc3RhcnQsXG4gICAgICBmb3JtYXR0aW5nRm4gPSBfcHJvcHMuZm9ybWF0dGluZ0ZuO1xuXG4gIHZhciBfdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZSh0eXBlb2YgZm9ybWF0dGluZ0ZuID09PSAnZnVuY3Rpb24nID8gZm9ybWF0dGluZ0ZuKHN0YXJ0KSA6IHN0YXJ0KSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgY291bnQgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0Q291bnQgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBjb3VudFVwUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuXG4gIHZhciBjcmVhdGVJbnN0YW5jZSA9IGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKCkge1xuICAgIHZhciBjb3VudFVwID0gY3JlYXRlQ291bnRVcEluc3RhbmNlKE1PQ0tfRUxFTUVOVCwgX3Byb3BzKTtcbiAgICB2YXIgZm9ybWF0dGluZ0ZuUmVmID0gY291bnRVcC5vcHRpb25zLmZvcm1hdHRpbmdGbjtcblxuICAgIGNvdW50VXAub3B0aW9ucy5mb3JtYXR0aW5nRm4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZm9ybWF0dGluZ0ZuUmVmLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgICAgIHNldENvdW50KHJlc3VsdCk7XG4gICAgfTtcblxuICAgIHJldHVybiBjb3VudFVwO1xuICB9O1xuXG4gIHZhciBnZXRDb3VudFVwID0gZnVuY3Rpb24gZ2V0Q291bnRVcCgpIHtcbiAgICB2YXIgY291bnRVcCA9IGNvdW50VXBSZWYuY3VycmVudDtcblxuICAgIGlmIChjb3VudFVwICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY291bnRVcDtcbiAgICB9XG5cbiAgICB2YXIgbmV3Q291bnRVcCA9IGNyZWF0ZUluc3RhbmNlKCk7XG4gICAgY291bnRVcFJlZi5jdXJyZW50ID0gbmV3Q291bnRVcDtcbiAgICByZXR1cm4gbmV3Q291bnRVcDtcbiAgfTtcblxuICB2YXIgcmVzZXQgPSBmdW5jdGlvbiByZXNldCgpIHtcbiAgICB2YXIgb25SZXNldCA9IF9wcm9wcy5vblJlc2V0O1xuICAgIGdldENvdW50VXAoKS5yZXNldCgpO1xuICAgIG9uUmVzZXQoe1xuICAgICAgcGF1c2VSZXN1bWU6IHBhdXNlUmVzdW1lLFxuICAgICAgc3RhcnQ6IHJlc3RhcnQsXG4gICAgICB1cGRhdGU6IHVwZGF0ZVxuICAgIH0pO1xuICB9O1xuXG4gIHZhciByZXN0YXJ0ID0gZnVuY3Rpb24gcmVzdGFydCgpIHtcbiAgICB2YXIgb25TdGFydCA9IF9wcm9wcy5vblN0YXJ0LFxuICAgICAgICBvbkVuZCA9IF9wcm9wcy5vbkVuZDtcbiAgICBnZXRDb3VudFVwKCkucmVzZXQoKTtcbiAgICBnZXRDb3VudFVwKCkuc3RhcnQoZnVuY3Rpb24gKCkge1xuICAgICAgb25FbmQoe1xuICAgICAgICBwYXVzZVJlc3VtZTogcGF1c2VSZXN1bWUsXG4gICAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgICAgc3RhcnQ6IHJlc3RhcnQsXG4gICAgICAgIHVwZGF0ZTogdXBkYXRlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBvblN0YXJ0KHtcbiAgICAgIHBhdXNlUmVzdW1lOiBwYXVzZVJlc3VtZSxcbiAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgIHVwZGF0ZTogdXBkYXRlXG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIHBhdXNlUmVzdW1lID0gZnVuY3Rpb24gcGF1c2VSZXN1bWUoKSB7XG4gICAgdmFyIG9uUGF1c2VSZXN1bWUgPSBfcHJvcHMub25QYXVzZVJlc3VtZTtcbiAgICBnZXRDb3VudFVwKCkucGF1c2VSZXN1bWUoKTtcbiAgICBvblBhdXNlUmVzdW1lKHtcbiAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgIHN0YXJ0OiByZXN0YXJ0LFxuICAgICAgdXBkYXRlOiB1cGRhdGVcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG5ld0VuZCkge1xuICAgIHZhciBvblVwZGF0ZSA9IF9wcm9wcy5vblVwZGF0ZTtcbiAgICBnZXRDb3VudFVwKCkudXBkYXRlKG5ld0VuZCk7XG4gICAgb25VcGRhdGUoe1xuICAgICAgcGF1c2VSZXN1bWU6IHBhdXNlUmVzdW1lLFxuICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgc3RhcnQ6IHJlc3RhcnRcbiAgICB9KTtcbiAgfTtcblxuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciBkZWxheSA9IF9wcm9wcy5kZWxheSxcbiAgICAgICAgb25TdGFydCA9IF9wcm9wcy5vblN0YXJ0LFxuICAgICAgICBvbkVuZCA9IF9wcm9wcy5vbkVuZCxcbiAgICAgICAgc3RhcnRPbk1vdW50ID0gX3Byb3BzLnN0YXJ0T25Nb3VudDtcblxuICAgIGlmIChzdGFydE9uTW91bnQpIHtcbiAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uU3RhcnQoe1xuICAgICAgICAgIHBhdXNlUmVzdW1lOiBwYXVzZVJlc3VtZSxcbiAgICAgICAgICByZXNldDogcmVzZXQsXG4gICAgICAgICAgdXBkYXRlOiB1cGRhdGVcbiAgICAgICAgfSk7XG4gICAgICAgIGdldENvdW50VXAoKS5zdGFydChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIG9uRW5kKHtcbiAgICAgICAgICAgIHBhdXNlUmVzdW1lOiBwYXVzZVJlc3VtZSxcbiAgICAgICAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgICAgICAgIHN0YXJ0OiByZXN0YXJ0LFxuICAgICAgICAgICAgdXBkYXRlOiB1cGRhdGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBkZWxheSAqIDEwMDApO1xuICAgIH1cblxuICAgIHJldHVybiByZXNldDtcbiAgfSwgW10pO1xuICByZXR1cm4ge1xuICAgIGNvdW50VXA6IGNvdW50LFxuICAgIHN0YXJ0OiByZXN0YXJ0LFxuICAgIHBhdXNlUmVzdW1lOiBwYXVzZVJlc3VtZSxcbiAgICByZXNldDogcmVzZXQsXG4gICAgdXBkYXRlOiB1cGRhdGVcbiAgfTtcbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IENvdW50VXA7XG5leHBvcnRzLnVzZUNvdW50VXAgPSB1c2VDb3VudFVwO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfc2xpZGVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9zbGlkZXJcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgX2RlZmF1bHQgPSBfc2xpZGVyLmRlZmF1bHQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJ2YXIgYmFzZVBpY2sgPSByZXF1aXJlKCcuL19iYXNlUGljaycpLFxuICAgIGZsYXRSZXN0ID0gcmVxdWlyZSgnLi9fZmxhdFJlc3QnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgcGlja2VkIGBvYmplY3RgIHByb3BlcnRpZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAqXG4gKiBfLnBpY2sob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICovXG52YXIgcGljayA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8ge30gOiBiYXNlUGljayhvYmplY3QsIHBhdGhzKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBpY2s7XG4iLCJ2YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICogXTtcbiAqXG4gKiBfLmZpbmRJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdiYXJuZXknOyB9KTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAqIC8vID0+IDFcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gMFxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAqIC8vID0+IDJcbiAqL1xuZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICB9XG4gIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRJbmRleDtcbiIsInZhciBpc0Jyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbnZhciBNYXNvbnJ5ID0gaXNCcm93c2VyID8gd2luZG93Lk1hc29ucnkgfHwgcmVxdWlyZSgnbWFzb25yeS1sYXlvdXQnKSA6IG51bGw7XG52YXIgaW1hZ2VzbG9hZGVkID0gaXNCcm93c2VyID8gcmVxdWlyZSgnaW1hZ2VzbG9hZGVkJykgOiBudWxsO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJ2xvZGFzaC9hc3NpZ24nKTtcbnZhciBlbGVtZW50UmVzaXplRGV0ZWN0b3JNYWtlciA9IHJlcXVpcmUoJ2VsZW1lbnQtcmVzaXplLWRldGVjdG9yJyk7XG52YXIgZGVib3VuY2UgPSByZXF1aXJlKCdsb2Rhc2gvZGVib3VuY2UnKTtcbnZhciBvbWl0ID0gcmVxdWlyZSgnbG9kYXNoL29taXQnKTtcbnZhciBQcm9wVHlwZXMgPSByZXF1aXJlKCdwcm9wLXR5cGVzJyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIGNyZWF0ZVJlYWN0Q2xhc3MgPSByZXF1aXJlKCdjcmVhdGUtcmVhY3QtY2xhc3MnKTtcblxudmFyIHByb3BUeXBlcyA9IHtcbiAgZW5hYmxlUmVzaXphYmxlQ2hpbGRyZW46IFByb3BUeXBlcy5ib29sLFxuICBkaXNhYmxlSW1hZ2VzTG9hZGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25JbWFnZXNMb2FkZWQ6IFByb3BUeXBlcy5mdW5jLFxuICB1cGRhdGVPbkVhY2hJbWFnZUxvYWQ6IFByb3BUeXBlcy5ib29sLFxuICBvcHRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICBpbWFnZXNMb2FkZWRPcHRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICBlbGVtZW50VHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25MYXlvdXRDb21wbGV0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVtb3ZlQ29tcGxldGU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG52YXIgTWFzb25yeUNvbXBvbmVudCA9IGNyZWF0ZVJlYWN0Q2xhc3Moe1xuICBtYXNvbnJ5OiBmYWxzZSxcbiAgZXJkOiB1bmRlZmluZWQsXG4gIGxhdGVzdEtub3duRG9tQ2hpbGRyZW46IFtdLFxuICBkaXNwbGF5TmFtZTogJ01hc29ucnlDb21wb25lbnQnLFxuICBpbWFnZXNMb2FkZWRDYW5jZWxSZWY6IHVuZGVmaW5lZCxcbiAgcHJvcFR5cGVzOiBwcm9wVHlwZXMsXG5cbiAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlUmVzaXphYmxlQ2hpbGRyZW46IGZhbHNlLFxuICAgICAgZGlzYWJsZUltYWdlc0xvYWRlZDogZmFsc2UsXG4gICAgICB1cGRhdGVPbkVhY2hJbWFnZUxvYWQ6IGZhbHNlLFxuICAgICAgb3B0aW9uczoge30sXG4gICAgICBpbWFnZXNMb2FkZWRPcHRpb25zOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJycsXG4gICAgICBlbGVtZW50VHlwZTogJ2RpdicsXG4gICAgICBvbkxheW91dENvbXBsZXRlOiBmdW5jdGlvbigpIHtcbiAgICAgIH0sXG4gICAgICBvblJlbW92ZUNvbXBsZXRlOiBmdW5jdGlvbigpIHtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG4gIGluaXRpYWxpemVNYXNvbnJ5OiBmdW5jdGlvbihmb3JjZSkge1xuICAgIGlmICghdGhpcy5tYXNvbnJ5IHx8IGZvcmNlKSB7XG4gICAgICB0aGlzLm1hc29ucnkgPSBuZXcgTWFzb25yeShcbiAgICAgICAgdGhpcy5tYXNvbnJ5Q29udGFpbmVyLFxuICAgICAgICB0aGlzLnByb3BzLm9wdGlvbnNcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLm9uTGF5b3V0Q29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5tYXNvbnJ5Lm9uKCdsYXlvdXRDb21wbGV0ZScsIHRoaXMucHJvcHMub25MYXlvdXRDb21wbGV0ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVtb3ZlQ29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5tYXNvbnJ5Lm9uKCdyZW1vdmVDb21wbGV0ZScsIHRoaXMucHJvcHMub25SZW1vdmVDb21wbGV0ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGF0ZXN0S25vd25Eb21DaGlsZHJlbiA9IHRoaXMuZ2V0Q3VycmVudERvbUNoaWxkcmVuKCk7XG4gICAgfVxuICB9LFxuXG4gIGdldEN1cnJlbnREb21DaGlsZHJlbjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIG5vZGUgPSB0aGlzLm1hc29ucnlDb250YWluZXI7XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5vcHRpb25zLml0ZW1TZWxlY3RvciA/IG5vZGUucXVlcnlTZWxlY3RvckFsbCh0aGlzLnByb3BzLm9wdGlvbnMuaXRlbVNlbGVjdG9yKSA6IG5vZGUuY2hpbGRyZW47XG4gICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGNoaWxkcmVuKTtcbiAgfSxcblxuICBkaWZmRG9tQ2hpbGRyZW46IGZ1bmN0aW9uKCkge1xuICAgIHZhciBmb3JjZUl0ZW1SZWxvYWQgPSBmYWxzZTtcblxuICAgIHZhciBrbm93bkNoaWxkcmVuU3RpbGxBdHRhY2hlZCA9IHRoaXMubGF0ZXN0S25vd25Eb21DaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgLypcbiAgICAgICAqIHRha2Ugb25seSBlbGVtZW50cyBhdHRhY2hlZCB0byBET01cbiAgICAgICAqIChha2EgdGhlIHBhcmVudCBpcyB0aGUgbWFzb25yeSBjb250YWluZXIsIG5vdCBudWxsKVxuICAgICAgICogb3RoZXJ3aXNlIG1hc29ucnkgd291bGQgdHJ5IHRvIFwicmVtb3ZlIGl0XCIgYWdhaW4gZnJvbSB0aGUgRE9NXG4gICAgICAgKi9cbiAgICAgIHJldHVybiAhIWVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICB9KTtcblxuICAgIC8qXG4gICAgICogSWYgbm90IGFsbCBrbm93biBjaGlsZHJlbiBhcmUgYXR0YWNoZWQgdG8gdGhlIGRvbSAtIHdlIGhhdmUgbm8gb3RoZXIgd2F5IG9mIG5vdGlmeWluZ1xuICAgICAqIG1hc29ucnkgdG8gcmVtb3ZlIHRoZSBvbmVzIG5vdCBzdGlsbCBhdHRhY2hlZCBiZXNpZGVzIGludm9raW5nIGEgY29tcGxldGUgaXRlbSByZWxvYWQuXG4gICAgICogYmFzaWNhbGx5IGFsbCB0aGUgcmVzdCBvZiB0aGUgY29kZSBiZWxvdyBkb2VzIG5vdCBtYXR0ZXIgaW4gdGhhdCBjYXNlLlxuICAgICAqL1xuICAgIGlmIChrbm93bkNoaWxkcmVuU3RpbGxBdHRhY2hlZC5sZW5ndGggIT09IHRoaXMubGF0ZXN0S25vd25Eb21DaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGZvcmNlSXRlbVJlbG9hZCA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnREb21DaGlsZHJlbiA9IHRoaXMuZ2V0Q3VycmVudERvbUNoaWxkcmVuKCk7XG5cbiAgICAvKlxuICAgICAqIFNpbmNlIHdlIGFyZSBsb29raW5nIGZvciBhIGtub3duIGNoaWxkIHdoaWNoIGlzIGFsc28gYXR0YWNoZWQgdG8gdGhlIGRvbSBBTkRcbiAgICAgKiBub3QgYXR0YWNoZWQgdG8gdGhlIGRvbSBhdCB0aGUgc2FtZSB0aW1lIC0gdGhpcyB3b3VsZCAqYWx3YXlzKiBwcm9kdWNlIGFuIGVtcHR5IGFycmF5LlxuICAgICAqL1xuICAgIHZhciByZW1vdmVkID0ga25vd25DaGlsZHJlblN0aWxsQXR0YWNoZWQuZmlsdGVyKGZ1bmN0aW9uKGF0dGFjaGVkS25vd25DaGlsZCkge1xuICAgICAgcmV0dXJuICF+Y3VycmVudERvbUNoaWxkcmVuLmluZGV4T2YoYXR0YWNoZWRLbm93bkNoaWxkKTtcbiAgICB9KTtcblxuICAgIC8qXG4gICAgICogVGhpcyB3b3VsZCBnZXQgYW55IGNoaWxkcmVuIHdoaWNoIGFyZSBhdHRhY2hlZCB0byB0aGUgZG9tIGJ1dCBhcmUgKnVua293biogdG8gdXNcbiAgICAgKiBmcm9tIHByZXZpb3VzIHJlbmRlcnNcbiAgICAgKi9cbiAgICB2YXIgbmV3RG9tQ2hpbGRyZW4gPSBjdXJyZW50RG9tQ2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGN1cnJlbnRDaGlsZCkge1xuICAgICAgcmV0dXJuICF+a25vd25DaGlsZHJlblN0aWxsQXR0YWNoZWQuaW5kZXhPZihjdXJyZW50Q2hpbGQpO1xuICAgIH0pO1xuXG4gICAgdmFyIGJlZ2lubmluZ0luZGV4ID0gMDtcblxuICAgIC8vIGdldCBldmVyeXRoaW5nIGFkZGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIERPTU5vZGUgbGlzdFxuICAgIHZhciBwcmVwZW5kZWQgPSBuZXdEb21DaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24obmV3Q2hpbGQpIHtcbiAgICAgIHZhciBwcmVwZW5kID0gKGJlZ2lubmluZ0luZGV4ID09PSBjdXJyZW50RG9tQ2hpbGRyZW4uaW5kZXhPZihuZXdDaGlsZCkpO1xuXG4gICAgICBpZiAocHJlcGVuZCkge1xuICAgICAgICAvLyBpbmNyZWFzZSB0aGUgaW5kZXhcbiAgICAgICAgYmVnaW5uaW5nSW5kZXgrKztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXBlbmQ7XG4gICAgfSk7XG5cbiAgICAvLyB3ZSBhc3N1bWUgdGhhdCBldmVyeXRoaW5nIGVsc2UgaXMgYXBwZW5kZWRcbiAgICB2YXIgYXBwZW5kZWQgPSBuZXdEb21DaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oZWwpIHtcbiAgICAgIHJldHVybiBwcmVwZW5kZWQuaW5kZXhPZihlbCkgPT09IC0xO1xuICAgIH0pO1xuXG4gICAgLypcbiAgICAgKiBvdGhlcndpc2Ugd2UgcmV2ZXJzZSBpdCBiZWNhdXNlIHNvIHdlJ3JlIGdvaW5nIHRocm91Z2ggdGhlIGxpc3QgcGlja2luZyBvZmYgdGhlIGl0ZW1zIHRoYXRcbiAgICAgKiBoYXZlIGJlZW4gYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdC4gdGhpcyBjb21wbGV4IGxvZ2ljIGlzIHByZXNlcnZlZCBpbiBjYXNlIGl0IG5lZWRzIHRvIGJlXG4gICAgICogaW52b2tlZFxuICAgICAqXG4gICAgICogdmFyIGVuZGluZ0luZGV4ID0gY3VycmVudERvbUNoaWxkcmVuLmxlbmd0aCAtIDE7XG4gICAgICpcbiAgICAgKiBuZXdEb21DaGlsZHJlbi5yZXZlcnNlKCkuZmlsdGVyKGZ1bmN0aW9uKG5ld0NoaWxkLCBpKXtcbiAgICAgKiAgICAgdmFyIGFwcGVuZCA9IGVuZGluZ0luZGV4ID09IGN1cnJlbnREb21DaGlsZHJlbi5pbmRleE9mKG5ld0NoaWxkKTtcbiAgICAgKlxuICAgICAqICAgICBpZiAoYXBwZW5kKSB7XG4gICAgICogICAgICAgICBlbmRpbmdJbmRleC0tO1xuICAgICAqICAgICB9XG4gICAgICpcbiAgICAgKiAgICAgcmV0dXJuIGFwcGVuZDtcbiAgICAgKiB9KTtcbiAgICAgKi9cblxuICAgIC8vIGdldCBldmVyeXRoaW5nIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIERPTU5vZGUgbGlzdFxuICAgIHZhciBtb3ZlZCA9IFtdO1xuXG4gICAgLypcbiAgICAgKiBUaGlzIHdvdWxkIGFsd2F5cyBiZSB0cnVlIChzZWUgYWJvdmUgYWJvdXQgdGhlIGxvZmljIGZvciBcInJlbW92ZWRcIilcbiAgICAgKi9cbiAgICBpZiAocmVtb3ZlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIC8qXG4gICAgICAgKiAnbW92ZWQnIHdpbGwgY29udGFpbiBzb21lIHJhbmRvbSBlbGVtZW50cyAoaWYgYW55KSBzaW5jZSB0aGUgXCJrbm93bkNoaWxkcmVuU3RpbGxBdHRhY2hlZFwiIGlzIGEgZmlsdGVyXG4gICAgICAgKiBvZiB0aGUgXCJrbm93blwiIGNoaWxkcmVuIHdoaWNoIGFyZSBzdGlsbCBhdHRhY2hlZCAtIEFsbCBpbmRleGVzIGNvdWxkIGJhc2ljYWxseSBjaGFuZ2UuIChmb3IgZXhhbXBsZVxuICAgICAgICogaWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgbm90IGF0dGFjaGVkKVxuICAgICAgICogRG9uJ3QgdHJ1c3QgdGhpcyBhcnJheS5cbiAgICAgICAqL1xuICAgICAgbW92ZWQgPSBrbm93bkNoaWxkcmVuU3RpbGxBdHRhY2hlZC5maWx0ZXIoZnVuY3Rpb24oY2hpbGQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleCAhPT0gY3VycmVudERvbUNoaWxkcmVuLmluZGV4T2YoY2hpbGQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXRlc3RLbm93bkRvbUNoaWxkcmVuID0gY3VycmVudERvbUNoaWxkcmVuO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9sZDoga25vd25DaGlsZHJlblN0aWxsQXR0YWNoZWQsIC8vIE5vdCB1c2VkXG4gICAgICBuZXc6IGN1cnJlbnREb21DaGlsZHJlbiwgLy8gTm90IHVzZWRcbiAgICAgIHJlbW92ZWQ6IHJlbW92ZWQsXG4gICAgICBhcHBlbmRlZDogYXBwZW5kZWQsXG4gICAgICBwcmVwZW5kZWQ6IHByZXBlbmRlZCxcbiAgICAgIG1vdmVkOiBtb3ZlZCxcbiAgICAgIGZvcmNlSXRlbVJlbG9hZDogZm9yY2VJdGVtUmVsb2FkXG4gICAgfTtcbiAgfSxcblxuICBwZXJmb3JtTGF5b3V0OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgZGlmZiA9IHRoaXMuZGlmZkRvbUNoaWxkcmVuKCk7XG4gICAgdmFyIHJlbG9hZEl0ZW1zID0gZGlmZi5mb3JjZUl0ZW1SZWxvYWQgfHwgZGlmZi5tb3ZlZC5sZW5ndGggPiAwO1xuXG4gICAgLy8gV291bGQgbmV2ZXIgYmUgdHJ1ZS4gKHNlZSBjb21tZW50cyBvZiAnZGlmZkRvbUNoaWxkcmVuJyBhYm91dCAncmVtb3ZlZCcpXG4gICAgaWYgKGRpZmYucmVtb3ZlZC5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5lbmFibGVSZXNpemFibGVDaGlsZHJlbikge1xuICAgICAgICBkaWZmLnJlbW92ZWQuZm9yRWFjaCh0aGlzLmVyZC5yZW1vdmVBbGxMaXN0ZW5lcnMsIHRoaXMuZXJkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubWFzb25yeS5yZW1vdmUoZGlmZi5yZW1vdmVkKTtcbiAgICAgIHJlbG9hZEl0ZW1zID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlmZi5hcHBlbmRlZC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm1hc29ucnkuYXBwZW5kZWQoZGlmZi5hcHBlbmRlZCk7XG5cbiAgICAgIGlmIChkaWZmLnByZXBlbmRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVsb2FkSXRlbXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5lbmFibGVSZXNpemFibGVDaGlsZHJlbikge1xuICAgICAgICBkaWZmLmFwcGVuZGVkLmZvckVhY2godGhpcy5saXN0ZW5Ub0VsZW1lbnRSZXNpemUsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkaWZmLnByZXBlbmRlZC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm1hc29ucnkucHJlcGVuZGVkKGRpZmYucHJlcGVuZGVkKTtcblxuICAgICAgaWYgKHRoaXMucHJvcHMuZW5hYmxlUmVzaXphYmxlQ2hpbGRyZW4pIHtcbiAgICAgICAgZGlmZi5wcmVwZW5kZWQuZm9yRWFjaCh0aGlzLmxpc3RlblRvRWxlbWVudFJlc2l6ZSwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlbG9hZEl0ZW1zKSB7XG4gICAgICB0aGlzLm1hc29ucnkucmVsb2FkSXRlbXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLm1hc29ucnkubGF5b3V0KCk7XG4gIH0sXG5cbiAgZGVyZWZJbWFnZXNMb2FkZWQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaW1hZ2VzTG9hZGVkQ2FuY2VsUmVmKCk7XG4gICAgdGhpcy5pbWFnZXNMb2FkZWRDYW5jZWxSZWYgPSB1bmRlZmluZWQ7XG4gIH0sXG5cbiAgaW1hZ2VzTG9hZGVkOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5kaXNhYmxlSW1hZ2VzTG9hZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW1hZ2VzTG9hZGVkQ2FuY2VsUmVmKSB7XG4gICAgICB0aGlzLmRlcmVmSW1hZ2VzTG9hZGVkKCk7XG4gICAgfVxuXG4gICAgdmFyIGV2ZW50ID0gdGhpcy5wcm9wcy51cGRhdGVPbkVhY2hJbWFnZUxvYWQgPyAncHJvZ3Jlc3MnIDogJ2Fsd2F5cyc7XG4gICAgdmFyIGhhbmRsZXIgPSBkZWJvdW5jZShcbiAgICAgIGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uSW1hZ2VzTG9hZGVkKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vbkltYWdlc0xvYWRlZChpbnN0YW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tYXNvbnJ5LmxheW91dCgpO1xuICAgICAgfS5iaW5kKHRoaXMpLCAxMDApO1xuXG4gICAgdmFyIGltZ0xvYWQgPSBpbWFnZXNsb2FkZWQodGhpcy5tYXNvbnJ5Q29udGFpbmVyLCB0aGlzLnByb3BzLmltYWdlc0xvYWRlZE9wdGlvbnMpLm9uKGV2ZW50LCBoYW5kbGVyKTtcblxuICAgIHRoaXMuaW1hZ2VzTG9hZGVkQ2FuY2VsUmVmID0gZnVuY3Rpb24oKSB7XG4gICAgICBpbWdMb2FkLm9mZihldmVudCwgaGFuZGxlcik7XG4gICAgICBoYW5kbGVyLmNhbmNlbCgpO1xuICAgIH07XG4gIH0sXG5cbiAgaW5pdGlhbGl6ZVJlc2l6YWJsZUNoaWxkcmVuOiBmdW5jdGlvbigpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMuZW5hYmxlUmVzaXphYmxlQ2hpbGRyZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVyZCA9IGVsZW1lbnRSZXNpemVEZXRlY3Rvck1ha2VyKHtcbiAgICAgIHN0cmF0ZWd5OiAnc2Nyb2xsJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5sYXRlc3RLbm93bkRvbUNoaWxkcmVuLmZvckVhY2godGhpcy5saXN0ZW5Ub0VsZW1lbnRSZXNpemUsIHRoaXMpO1xuICB9LFxuXG4gIGxpc3RlblRvRWxlbWVudFJlc2l6ZTogZnVuY3Rpb24oZWwpIHtcbiAgICB0aGlzLmVyZC5saXN0ZW5UbyhlbCwgZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLm1hc29ucnkubGF5b3V0KClcbiAgICB9LmJpbmQodGhpcykpXG4gIH0sXG5cbiAgZGVzdHJveUVyZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuZXJkKSB7XG4gICAgICB0aGlzLmxhdGVzdEtub3duRG9tQ2hpbGRyZW4uZm9yRWFjaCh0aGlzLmVyZC51bmluc3RhbGwsIHRoaXMuZXJkKTtcbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZU1hc29ucnkoKTtcbiAgICB0aGlzLmluaXRpYWxpemVSZXNpemFibGVDaGlsZHJlbigpO1xuICAgIHRoaXMuaW1hZ2VzTG9hZGVkKCk7XG4gIH0sXG5cbiAgY29tcG9uZW50RGlkVXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnBlcmZvcm1MYXlvdXQoKTtcbiAgICB0aGlzLmltYWdlc0xvYWRlZCgpO1xuICB9LFxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmRlc3Ryb3lFcmQoKTtcblxuICAgIC8vIHVucmVnaXN0ZXIgZXZlbnRzXG4gICAgaWYgKHRoaXMucHJvcHMub25MYXlvdXRDb21wbGV0ZSkge1xuICAgICAgdGhpcy5tYXNvbnJ5Lm9mZignbGF5b3V0Q29tcGxldGUnLCB0aGlzLnByb3BzLm9uTGF5b3V0Q29tcGxldGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLm9uUmVtb3ZlQ29tcGxldGUpIHtcbiAgICAgIHRoaXMubWFzb25yeS5vZmYoJ3JlbW92ZUNvbXBsZXRlJywgdGhpcy5wcm9wcy5vblJlbW92ZUNvbXBsZXRlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbWFnZXNMb2FkZWRDYW5jZWxSZWYpIHtcbiAgICAgIHRoaXMuZGVyZWZJbWFnZXNMb2FkZWQoKTtcbiAgICB9XG4gICAgdGhpcy5tYXNvbnJ5LmRlc3Ryb3koKTtcbiAgfSxcbiAgXG4gIHNldFJlZjogZnVuY3Rpb24obikge1xuICAgIHRoaXMubWFzb25yeUNvbnRhaW5lciA9IG47XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgcHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIE9iamVjdC5rZXlzKHByb3BUeXBlcykpO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KHRoaXMucHJvcHMuZWxlbWVudFR5cGUsIGFzc2lnbih7fSwgcHJvcHMsIHtyZWY6IHRoaXMuc2V0UmVmfSksIHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXNvbnJ5Q29tcG9uZW50O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IE1hc29ucnlDb21wb25lbnQ7XG4iLCIvKipcbiAqIE1lbWl6ZSBvcHRpb25zIG9iamVjdC5cbiAqXG4gKiBAdHlwZWRlZiBNZW1pemVPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhTaXplXSBNYXhpbXVtIHNpemUgb2YgdGhlIGNhY2hlLlxuICovXG5cbi8qKlxuICogSW50ZXJuYWwgY2FjaGUgZW50cnkuXG4gKlxuICogQHR5cGVkZWYgTWVtaXplQ2FjaGVOb2RlXG4gKlxuICogQHByb3BlcnR5IHs/TWVtaXplQ2FjaGVOb2RlfHVuZGVmaW5lZH0gW3ByZXZdIFByZXZpb3VzIG5vZGUuXG4gKiBAcHJvcGVydHkgez9NZW1pemVDYWNoZU5vZGV8dW5kZWZpbmVkfSBbbmV4dF0gTmV4dCBub2RlLlxuICogQHByb3BlcnR5IHtBcnJheTwqPn0gICAgICAgICAgICAgICAgICAgYXJncyAgIEZ1bmN0aW9uIGFyZ3VtZW50cyBmb3IgY2FjaGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5cbiAqIEBwcm9wZXJ0eSB7Kn0gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAgICBGdW5jdGlvbiByZXN1bHQuXG4gKi9cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIG9mIHRoZSBlbmhhbmNlZCBmdW5jdGlvbiBmb3IgY29udHJvbGxpbmcgY2FjaGUuXG4gKlxuICogQHR5cGVkZWYgTWVtaXplTWVtb2l6ZWRGdW5jdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB7KCk9PnZvaWR9IGNsZWFyIENsZWFyIHRoZSBjYWNoZS5cbiAqL1xuXG4vKipcbiAqIEFjY2VwdHMgYSBmdW5jdGlvbiB0byBiZSBtZW1vaXplZCwgYW5kIHJldHVybnMgYSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24sIHdpdGhcbiAqIG9wdGlvbmFsIG9wdGlvbnMuXG4gKlxuICogQHRlbXBsYXRlIHtGdW5jdGlvbn0gRlxuICpcbiAqIEBwYXJhbSB7Rn0gICAgICAgICAgICAgZm4gICAgICAgIEZ1bmN0aW9uIHRvIG1lbW9pemUuXG4gKiBAcGFyYW0ge01lbWl6ZU9wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIG9iamVjdC5cbiAqXG4gKiBAcmV0dXJuIHtGICYgTWVtaXplTWVtb2l6ZWRGdW5jdGlvbn0gTWVtb2l6ZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1lbWl6ZSggZm4sIG9wdGlvbnMgKSB7XG5cdHZhciBzaXplID0gMDtcblxuXHQvKiogQHR5cGUgez9NZW1pemVDYWNoZU5vZGV8dW5kZWZpbmVkfSAqL1xuXHR2YXIgaGVhZDtcblxuXHQvKiogQHR5cGUgez9NZW1pemVDYWNoZU5vZGV8dW5kZWZpbmVkfSAqL1xuXHR2YXIgdGFpbDtcblxuXHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRmdW5jdGlvbiBtZW1vaXplZCggLyogLi4uYXJncyAqLyApIHtcblx0XHR2YXIgbm9kZSA9IGhlYWQsXG5cdFx0XHRsZW4gPSBhcmd1bWVudHMubGVuZ3RoLFxuXHRcdFx0YXJncywgaTtcblxuXHRcdHNlYXJjaENhY2hlOiB3aGlsZSAoIG5vZGUgKSB7XG5cdFx0XHQvLyBQZXJmb3JtIGEgc2hhbGxvdyBlcXVhbGl0eSB0ZXN0IHRvIGNvbmZpcm0gdGhhdCB3aGV0aGVyIHRoZSBub2RlXG5cdFx0XHQvLyB1bmRlciB0ZXN0IGlzIGEgY2FuZGlkYXRlIGZvciB0aGUgYXJndW1lbnRzIHBhc3NlZC4gVHdvIGFycmF5c1xuXHRcdFx0Ly8gYXJlIHNoYWxsb3dseSBlcXVhbCBpZiB0aGVpciBsZW5ndGggbWF0Y2hlcyBhbmQgZWFjaCBlbnRyeSBpc1xuXHRcdFx0Ly8gc3RyaWN0bHkgZXF1YWwgYmV0d2VlbiB0aGUgdHdvIHNldHMuIEF2b2lkIGFic3RyYWN0aW5nIHRvIGFcblx0XHRcdC8vIGZ1bmN0aW9uIHdoaWNoIGNvdWxkIGluY3VyIGFuIGFyZ3VtZW50cyBsZWFraW5nIGRlb3B0aW1pemF0aW9uLlxuXG5cdFx0XHQvLyBDaGVjayB3aGV0aGVyIG5vZGUgYXJndW1lbnRzIG1hdGNoIGFyZ3VtZW50cyBsZW5ndGhcblx0XHRcdGlmICggbm9kZS5hcmdzLmxlbmd0aCAhPT0gYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0bm9kZSA9IG5vZGUubmV4dDtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENoZWNrIHdoZXRoZXIgbm9kZSBhcmd1bWVudHMgbWF0Y2ggYXJndW1lbnRzIHZhbHVlc1xuXHRcdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0aWYgKCBub2RlLmFyZ3NbIGkgXSAhPT0gYXJndW1lbnRzWyBpIF0gKSB7XG5cdFx0XHRcdFx0bm9kZSA9IG5vZGUubmV4dDtcblx0XHRcdFx0XHRjb250aW51ZSBzZWFyY2hDYWNoZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBBdCB0aGlzIHBvaW50IHdlIGNhbiBhc3N1bWUgd2UndmUgZm91bmQgYSBtYXRjaFxuXG5cdFx0XHQvLyBTdXJmYWNlIG1hdGNoZWQgbm9kZSB0byBoZWFkIGlmIG5vdCBhbHJlYWR5XG5cdFx0XHRpZiAoIG5vZGUgIT09IGhlYWQgKSB7XG5cdFx0XHRcdC8vIEFzIHRhaWwsIHNoaWZ0IHRvIHByZXZpb3VzLiBNdXN0IG9ubHkgc2hpZnQgaWYgbm90IGFsc29cblx0XHRcdFx0Ly8gaGVhZCwgc2luY2UgaWYgYm90aCBoZWFkIGFuZCB0YWlsLCB0aGVyZSBpcyBubyBwcmV2aW91cy5cblx0XHRcdFx0aWYgKCBub2RlID09PSB0YWlsICkge1xuXHRcdFx0XHRcdHRhaWwgPSBub2RlLnByZXY7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBZGp1c3Qgc2libGluZ3MgdG8gcG9pbnQgdG8gZWFjaCBvdGhlci4gSWYgbm9kZSB3YXMgdGFpbCxcblx0XHRcdFx0Ly8gdGhpcyBhbHNvIGhhbmRsZXMgbmV3IHRhaWwncyBlbXB0eSBgbmV4dGAgYXNzaWdubWVudC5cblx0XHRcdFx0LyoqIEB0eXBlIHtNZW1pemVDYWNoZU5vZGV9ICovICggbm9kZS5wcmV2ICkubmV4dCA9IG5vZGUubmV4dDtcblx0XHRcdFx0aWYgKCBub2RlLm5leHQgKSB7XG5cdFx0XHRcdFx0bm9kZS5uZXh0LnByZXYgPSBub2RlLnByZXY7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRub2RlLm5leHQgPSBoZWFkO1xuXHRcdFx0XHRub2RlLnByZXYgPSBudWxsO1xuXHRcdFx0XHQvKiogQHR5cGUge01lbWl6ZUNhY2hlTm9kZX0gKi8gKCBoZWFkICkucHJldiA9IG5vZGU7XG5cdFx0XHRcdGhlYWQgPSBub2RlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXR1cm4gaW1tZWRpYXRlbHlcblx0XHRcdHJldHVybiBub2RlLnZhbDtcblx0XHR9XG5cblx0XHQvLyBObyBjYWNoZWQgdmFsdWUgZm91bmQuIENvbnRpbnVlIHRvIGluc2VydGlvbiBwaGFzZTpcblxuXHRcdC8vIENyZWF0ZSBhIGNvcHkgb2YgYXJndW1lbnRzIChhdm9pZCBsZWFraW5nIGRlb3B0aW1pemF0aW9uKVxuXHRcdGFyZ3MgPSBuZXcgQXJyYXkoIGxlbiApO1xuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRhcmdzWyBpIF0gPSBhcmd1bWVudHNbIGkgXTtcblx0XHR9XG5cblx0XHRub2RlID0ge1xuXHRcdFx0YXJnczogYXJncyxcblxuXHRcdFx0Ly8gR2VuZXJhdGUgdGhlIHJlc3VsdCBmcm9tIG9yaWdpbmFsIGZ1bmN0aW9uXG5cdFx0XHR2YWw6IGZuLmFwcGx5KCBudWxsLCBhcmdzICksXG5cdFx0fTtcblxuXHRcdC8vIERvbid0IG5lZWQgdG8gY2hlY2sgd2hldGhlciBub2RlIGlzIGFscmVhZHkgaGVhZCwgc2luY2UgaXQgd291bGRcblx0XHQvLyBoYXZlIGJlZW4gcmV0dXJuZWQgYWJvdmUgYWxyZWFkeSBpZiBpdCB3YXNcblxuXHRcdC8vIFNoaWZ0IGV4aXN0aW5nIGhlYWQgZG93biBsaXN0XG5cdFx0aWYgKCBoZWFkICkge1xuXHRcdFx0aGVhZC5wcmV2ID0gbm9kZTtcblx0XHRcdG5vZGUubmV4dCA9IGhlYWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIElmIG5vIGhlYWQsIGZvbGxvd3MgdGhhdCB0aGVyZSdzIG5vIHRhaWwgKGF0IGluaXRpYWwgb3IgcmVzZXQpXG5cdFx0XHR0YWlsID0gbm9kZTtcblx0XHR9XG5cblx0XHQvLyBUcmltIHRhaWwgaWYgd2UncmUgcmVhY2hlZCBtYXggc2l6ZSBhbmQgYXJlIHBlbmRpbmcgY2FjaGUgaW5zZXJ0aW9uXG5cdFx0aWYgKCBzaXplID09PSAvKiogQHR5cGUge01lbWl6ZU9wdGlvbnN9ICovICggb3B0aW9ucyApLm1heFNpemUgKSB7XG5cdFx0XHR0YWlsID0gLyoqIEB0eXBlIHtNZW1pemVDYWNoZU5vZGV9ICovICggdGFpbCApLnByZXY7XG5cdFx0XHQvKiogQHR5cGUge01lbWl6ZUNhY2hlTm9kZX0gKi8gKCB0YWlsICkubmV4dCA9IG51bGw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNpemUrKztcblx0XHR9XG5cblx0XHRoZWFkID0gbm9kZTtcblxuXHRcdHJldHVybiBub2RlLnZhbDtcblx0fVxuXG5cdG1lbW9pemVkLmNsZWFyID0gZnVuY3Rpb24oKSB7XG5cdFx0aGVhZCA9IG51bGw7XG5cdFx0dGFpbCA9IG51bGw7XG5cdFx0c2l6ZSA9IDA7XG5cdH07XG5cblx0aWYgKCBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnICkge1xuXHRcdC8vIENhY2hlIGlzIG5vdCBleHBvc2VkIGluIHRoZSBwdWJsaWMgQVBJLCBidXQgdXNlZCBpbiB0ZXN0cyB0byBlbnN1cmVcblx0XHQvLyBleHBlY3RlZCBsaXN0IHByb2dyZXNzaW9uXG5cdFx0bWVtb2l6ZWQuZ2V0Q2FjaGUgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBbIGhlYWQsIHRhaWwsIHNpemUgXTtcblx0XHR9O1xuXHR9XG5cblx0Ly8gSWdub3JlIHJlYXNvbjogVGhlcmUncyBub3QgYSBjbGVhciBzb2x1dGlvbiB0byBjcmVhdGUgYW4gaW50ZXJzZWN0aW9uIG9mXG5cdC8vIHRoZSBmdW5jdGlvbiB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcywgd2hlcmUgdGhlIGdvYWwgaXMgdG8gcmV0YWluIHRoZVxuXHQvLyBmdW5jdGlvbiBzaWduYXR1cmUgb2YgdGhlIGluY29taW5nIGFyZ3VtZW50IGFuZCBhZGQgY29udHJvbCBwcm9wZXJ0aWVzXG5cdC8vIG9uIHRoZSByZXR1cm4gdmFsdWUuXG5cblx0Ly8gQHRzLWlnbm9yZVxuXHRyZXR1cm4gbWVtb2l6ZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtaXplO1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGNhc3RGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2Nhc3RGdW5jdGlvbicpLFxuICAgIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xudmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWluID0gTWF0aC5taW47XG5cbi8qKlxuICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAqIGVhY2ggaW52b2NhdGlvbi4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7IChpbmRleCkuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygzLCBTdHJpbmcpO1xuICogLy8gPT4gWycwJywgJzEnLCAnMiddXG4gKlxuICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gKiAvLyA9PiBbMCwgMCwgMCwgMF1cbiAqL1xuZnVuY3Rpb24gdGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgbiA9IHRvSW50ZWdlcihuKTtcbiAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICBsZW5ndGggPSBuYXRpdmVNaW4obiwgTUFYX0FSUkFZX0xFTkdUSCk7XG5cbiAgaXRlcmF0ZWUgPSBjYXN0RnVuY3Rpb24oaXRlcmF0ZWUpO1xuICBuIC09IE1BWF9BUlJBWV9MRU5HVEg7XG5cbiAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdGltZXM7XG4iLCJjb25zdCBlbCA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudDtcbmNvbnN0IGNhdGVnb3J5SWNvbiA9IGVsKCdzdmcnLFxuICAgIHtcbiAgICAgICAgd2lkdGg6IDIwLFxuICAgICAgICBoZWlnaHQ6IDIwXG4gICAgfSxcblxuXG4gICAgZWwoXCJwYXRoXCIsIHsgZmlsbDogXCIjNDc0NzQ1XCIsIGQ6XCJNMC4xLDEwLjdDLTAuMiw3LjQsMS40LDMsNS44LDFDOS43LTAuOSwxNC41LDAuMSwxNywyLjhjLTAuNCwwLTAuOC0wLjEtMS4yLTAuMSBjLTEuNSwwLTIuNywxLjEtMywyLjZjMCwwLjIsMCwwLjQsMCwwLjZjMCwzLjIsMCw2LjQsMCw5LjVjMCwxLjEsMCwyLjMsMCwzLjRjMCwwLjYtMC4zLDEtMC44LDEuMWMtMC42LDAuMi0xLjItMC4yLTEuMy0wLjkgYzAtMC4xLDAtMC4yLDAtMC4yYzAtMS40LDAtMi44LDAtNC4yYzAtMC43LDAtMS41LTAuMS0yLjJjLTAuMy0yLjItMi4xLTQtNC4zLTQuNUM0LDcuNCwxLjgsOC4zLDAuNSwxMC4zIEMwLjQsMTAuNCwwLjMsMTAuNSwwLjEsMTAuN3pcIiB9ICksXG4gICAgZWwoXCJwYXRoXCIsIHsgZmlsbDogXCIjNDc0NzQ1XCIsIGQ6XCJNMTQuNSwxOC45YzAtMC43LDAtMS4zLDAtMS45YzAtMS4xLDAtMi4zLDAtMy40YzAtMC4yLDAuMS0wLjMsMC4zLTAuM2MwLjcsMCwxLjQsMCwyLDAgYzAuNiwwLDEtMC40LDEtMC45YzAtMC42LTAuNC0xLTEtMWMtMC43LDAtMS40LDAtMiwwYy0wLjMsMC0wLjQtMC4xLTAuNC0wLjNjMC0xLjcsMC0zLjUsMC01LjJjMC0wLjcsMC4zLTEuMSwwLjktMS4zIGMwLjUtMC4xLDEuMSwwLjIsMS4yLDAuN2MwLjEsMC4yLDAuMSwwLjQsMC4xLDAuNmMwLjEsMC42LDAuNSwwLjksMS4xLDAuOWMwLjYsMCwxLTAuNSwwLjktMS4yYzAsMCwwLTAuMSwwLTAuMiBjMS4yLDEuNywxLjYsNC43LDAuOCw3LjVDMTguNywxNS42LDE3LjEsMTcuNiwxNC41LDE4Ljl6XCIsIH0gKSxcbiAgICBlbChcInBhdGhcIiwgeyBmaWxsOiBcIiM0NzQ3NDVcIiwgZDpcIk04LjksMTMuNWMwLDIuMS0xLjcsMy43LTMuNywzLjdzLTMuNy0xLjctMy43LTMuOGMwLTIuMSwxLjctMy43LDMuOC0zLjcgQzcuMiw5LjcsOC45LDExLjMsOC45LDEzLjV6XCIgfSApLFxuICAgIGVsKFwicGF0aFwiLCB7IGZpbGw6IFwiIzQ3NDc0NVwiLCBkOlwiTTUuOCwxOS4xYzEuMS0wLjIsMi4xLTAuNiwzLTEuM0M4LjksMTguNSw4LjksMTkuMyw5LDIwQzcuOSwxOS45LDYuOCwxOS42LDUuOCwxOS4xelwifSApXG5cbiAgICApO1xud3AuYmxvY2tzLnVwZGF0ZUNhdGVnb3J5KCAnYmxvY2tzcGFyZScsIHsgaWNvbjogY2F0ZWdvcnlJY29uIH0gKTsiLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbicpLFxuICAgIGJhc2VBc3NpZ25JbiA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25JbicpLFxuICAgIGNsb25lQnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVCdWZmZXInKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBjb3B5U3ltYm9scyA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzJyksXG4gICAgY29weVN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzSW4nKSxcbiAgICBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpLFxuICAgIGdldEFsbEtleXNJbiA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXNJbicpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGluaXRDbG9uZUFycmF5ID0gcmVxdWlyZSgnLi9faW5pdENsb25lQXJyYXknKSxcbiAgICBpbml0Q2xvbmVCeVRhZyA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUJ5VGFnJyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzTWFwID0gcmVxdWlyZSgnLi9pc01hcCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU2V0ID0gcmVxdWlyZSgnLi9pc1NldCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBzdXBwb3J0ZWQgYnkgYF8uY2xvbmVgLiAqL1xudmFyIGNsb25lYWJsZVRhZ3MgPSB7fTtcbmNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG5jbG9uZWFibGVUYWdzW2FycmF5QnVmZmVyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0YVZpZXdUYWddID1cbmNsb25lYWJsZVRhZ3NbYm9vbFRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGVUYWddID1cbmNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9XG5jbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tyZWdleHBUYWddID0gY2xvbmVhYmxlVGFnc1tzZXRUYWddID1cbmNsb25lYWJsZVRhZ3Nbc3RyaW5nVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQxNlRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbmNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIERlZXAgY2xvbmVcbiAqICAyIC0gRmxhdHRlbiBpbmhlcml0ZWQgcHJvcGVydGllc1xuICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgb2JqZWN0LCBzdGFjaykge1xuICB2YXIgcmVzdWx0LFxuICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgIGlzRmxhdCA9IGJpdG1hc2sgJiBDTE9ORV9GTEFUX0ZMQUcsXG4gICAgICBpc0Z1bGwgPSBiaXRtYXNrICYgQ0xPTkVfU1lNQk9MU19GTEFHO1xuXG4gIGlmIChjdXN0b21pemVyKSB7XG4gICAgcmVzdWx0ID0gb2JqZWN0ID8gY3VzdG9taXplcih2YWx1ZSwga2V5LCBvYmplY3QsIHN0YWNrKSA6IGN1c3RvbWl6ZXIodmFsdWUpO1xuICB9XG4gIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gIGlmIChpc0Fycikge1xuICAgIHJlc3VsdCA9IGluaXRDbG9uZUFycmF5KHZhbHVlKTtcbiAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgcmV0dXJuIGNvcHlBcnJheSh2YWx1ZSwgcmVzdWx0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgIGlzRnVuYyA9IHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG5cbiAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY2xvbmVCdWZmZXIodmFsdWUsIGlzRGVlcCk7XG4gICAgfVxuICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgIHJlc3VsdCA9IChpc0ZsYXQgfHwgaXNGdW5jKSA/IHt9IDogaW5pdENsb25lT2JqZWN0KHZhbHVlKTtcbiAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICA/IGNvcHlTeW1ib2xzSW4odmFsdWUsIGJhc2VBc3NpZ25JbihyZXN1bHQsIHZhbHVlKSlcbiAgICAgICAgICA6IGNvcHlTeW1ib2xzKHZhbHVlLCBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjbG9uZWFibGVUYWdzW3RhZ10pIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBpbml0Q2xvbmVCeVRhZyh2YWx1ZSwgdGFnLCBpc0RlZXApO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgcmV0dXJuIGl0cyBjb3JyZXNwb25kaW5nIGNsb25lLlxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldCh2YWx1ZSk7XG4gIGlmIChzdGFja2VkKSB7XG4gICAgcmV0dXJuIHN0YWNrZWQ7XG4gIH1cbiAgc3RhY2suc2V0KHZhbHVlLCByZXN1bHQpO1xuXG4gIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlKSB7XG4gICAgICByZXN1bHQuYWRkKGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3ViVmFsdWUsIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzTWFwKHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgID8gKGlzRmxhdCA/IGdldEFsbEtleXNJbiA6IGdldEFsbEtleXMpXG4gICAgOiAoaXNGbGF0ID8ga2V5c0luIDoga2V5cyk7XG5cbiAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gIGFycmF5RWFjaChwcm9wcyB8fCB2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgIGlmIChwcm9wcykge1xuICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgYXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNsb25lO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUNsZWFyO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICAtLXRoaXMuc2l6ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlRGVsZXRlO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUdldDtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlSGFzO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgICsrdGhpcy5zaXplO1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlU2V0O1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTWFza2VkID0gcmVxdWlyZSgnLi9faXNNYXNrZWQnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmF0aXZlO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiIsInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiIsInZhciBoYXNoQ2xlYXIgPSByZXF1aXJlKCcuL19oYXNoQ2xlYXInKSxcbiAgICBoYXNoRGVsZXRlID0gcmVxdWlyZSgnLi9faGFzaERlbGV0ZScpLFxuICAgIGhhc2hHZXQgPSByZXF1aXJlKCcuL19oYXNoR2V0JyksXG4gICAgaGFzaEhhcyA9IHJlcXVpcmUoJy4vX2hhc2hIYXMnKSxcbiAgICBoYXNoU2V0ID0gcmVxdWlyZSgnLi9faGFzaFNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hEZWxldGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoR2V0O1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEhhcztcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaFNldDtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleWFibGU7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlR2V0O1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVIYXM7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlU2V0O1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RWFjaChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RWFjaDtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ247XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViRmFsc2U7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzVHlwZWRBcnJheTtcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25JbjtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5c0luID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5c0luJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgfVxuICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXNJbjtcbiIsIi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKG9iamVjdCAhPSBudWxsKSB7XG4gICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXNJbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuIiwiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyk7XG5cbi8qKlxuICogQ29waWVzIG93biBhbmQgaW5oZXJpdGVkIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5U3ltYm9sc0luO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBEYXRhVmlldyA9IGdldE5hdGl2ZShyb290LCAnRGF0YVZpZXcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYXRhVmlldztcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgUHJvbWlzZSA9IGdldE5hdGl2ZShyb290LCAnUHJvbWlzZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21pc2U7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFNldCA9IGdldE5hdGl2ZShyb290LCAnU2V0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdXZWFrTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gV2Vha01hcDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQXJyYXk7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKSxcbiAgICBjbG9uZURhdGFWaWV3ID0gcmVxdWlyZSgnLi9fY2xvbmVEYXRhVmlldycpLFxuICAgIGNsb25lUmVnRXhwID0gcmVxdWlyZSgnLi9fY2xvbmVSZWdFeHAnKSxcbiAgICBjbG9uZVN5bWJvbCA9IHJlcXVpcmUoJy4vX2Nsb25lU3ltYm9sJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUJ5VGFnO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEYXRhVmlldztcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgIGZsYWdzIGZyb20gdGhlaXIgY29lcmNlZCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlRmxhZ3MgPSAvXFx3KiQvO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgcmVnZXhwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHJlZ2V4cCBUaGUgcmVnZXhwIHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVSZWdFeHAocmVnZXhwKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgcmVzdWx0Lmxhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVSZWdFeHA7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICByZXR1cm4gc3ltYm9sVmFsdWVPZiA/IE9iamVjdChzeW1ib2xWYWx1ZU9mLmNhbGwoc3ltYm9sKSkgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVN5bWJvbDtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lVHlwZWRBcnJheTtcbiIsInZhciBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZU9iamVjdDtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xudmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgIH1cbiAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuIiwidmFyIGJhc2VJc01hcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hcCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNNYXAobmV3IE1hcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNNYXAgPSBub2RlSXNNYXAgPyBiYXNlVW5hcnkobm9kZUlzTWFwKSA6IGJhc2VJc01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc01hcDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNNYXA7XG4iLCJ2YXIgYmFzZUlzU2V0ID0gcmVxdWlyZSgnLi9fYmFzZUlzU2V0JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2V0O1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1NldGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzU2V0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1NldDtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgbGFzdCA9IHJlcXVpcmUoJy4vbGFzdCcpLFxuICAgIHBhcmVudCA9IHJlcXVpcmUoJy4vX3BhcmVudCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bnNldGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCB0byB1bnNldC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsIHx8IGRlbGV0ZSBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VVbnNldDtcbiIsInZhciBtZW1vaXplQ2FwcGVkID0gcmVxdWlyZSgnLi9fbWVtb2l6ZUNhcHBlZCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgcmVzdWx0LnB1c2goJycpO1xuICB9XG4gIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9QYXRoO1xuIiwidmFyIG1lbW9pemUgPSByZXF1aXJlKCcuL21lbW9pemUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xudmFyIE1BWF9NRU1PSVpFX1NJWkUgPSA1MDA7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICogY2FjaGUgd2hlbiBpdCBleGNlZWRzIGBNQVhfTUVNT0laRV9TSVpFYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYykge1xuICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfSk7XG5cbiAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVDYXBwZWQ7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBiYXNlVG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlVG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU3RyaW5nO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRvU3RyaW5nO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5sYXN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIGxhc3QoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGFzdDtcbiIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VTbGljZSA9IHJlcXVpcmUoJy4vX2Jhc2VTbGljZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHBhdGggVGhlIHBhdGggdG8gZ2V0IHRoZSBwYXJlbnQgdmFsdWUgb2YuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGFyZW50IHZhbHVlLlxuICovXG5mdW5jdGlvbiBwYXJlbnQob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBwYXRoLmxlbmd0aCA8IDIgPyBvYmplY3QgOiBiYXNlR2V0KG9iamVjdCwgYmFzZVNsaWNlKHBhdGgsIDAsIC0xKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICB9XG4gIGVuZCA9IGVuZCA+IGxlbmd0aCA/IGxlbmd0aCA6IGVuZDtcbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuZ3RoO1xuICB9XG4gIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgc3RhcnQgPj4+PSAwO1xuXG4gIHZhciByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTbGljZTtcbiIsInZhciBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAqIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICovXG5mdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QodmFsdWUpID8gdW5kZWZpbmVkIDogdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3VzdG9tT21pdENsb25lO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpO1xuXG4vKipcbiAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZsYXR0ZW4oWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAqL1xuZnVuY3Rpb24gZmxhdHRlbihhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGbGF0dGVuYWJsZTtcbiIsIi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgfVxuICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseTtcbiIsInZhciBjb25zdGFudCA9IHJlcXVpcmUoJy4vY29uc3RhbnQnKSxcbiAgICBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICd3cml0YWJsZSc6IHRydWVcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXRUb1N0cmluZztcbiIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIiwiLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xudmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICBIT1RfU1BBTiA9IDE2O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTm93ID0gRGF0ZS5ub3c7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgdmFyIGNvdW50ID0gMCxcbiAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3J0T3V0O1xuIiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgbD1yZXF1aXJlKFwib2JqZWN0LWFzc2lnblwiKSxuPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IscD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLHE9bj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LHI9bj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsdD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCx1PW4/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LHY9bj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksdz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLHg9bj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIseT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyx6PW4/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsQT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOlxuNjAxMTYsQj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gQyhhKXtmb3IodmFyIGI9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIithLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIithK1wiOyB2aXNpdCBcIitiK1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn1cbnZhciBEPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxFPXt9O2Z1bmN0aW9uIEYoYSxiLGMpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9RTt0aGlzLnVwZGF0ZXI9Y3x8RH1GLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9O0YucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEsYil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmbnVsbCE9YSl0aHJvdyBFcnJvcihDKDg1KSk7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGEsYixcInNldFN0YXRlXCIpfTtGLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihhKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsYSxcImZvcmNlVXBkYXRlXCIpfTtcbmZ1bmN0aW9uIEcoKXt9Ry5wcm90b3R5cGU9Ri5wcm90b3R5cGU7ZnVuY3Rpb24gSChhLGIsYyl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1FO3RoaXMudXBkYXRlcj1jfHxEfXZhciBJPUgucHJvdG90eXBlPW5ldyBHO0kuY29uc3RydWN0b3I9SDtsKEksRi5wcm90b3R5cGUpO0kuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEo9e2N1cnJlbnQ6bnVsbH0sSz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIE0oYSxiLGMpe3ZhciBlLGQ9e30sZz1udWxsLGs9bnVsbDtpZihudWxsIT1iKWZvcihlIGluIHZvaWQgMCE9PWIucmVmJiYoaz1iLnJlZiksdm9pZCAwIT09Yi5rZXkmJihnPVwiXCIrYi5rZXkpLGIpSy5jYWxsKGIsZSkmJiFMLmhhc093blByb3BlcnR5KGUpJiYoZFtlXT1iW2VdKTt2YXIgZj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWYpZC5jaGlsZHJlbj1jO2Vsc2UgaWYoMTxmKXtmb3IodmFyIGg9QXJyYXkoZiksbT0wO208ZjttKyspaFttXT1hcmd1bWVudHNbbSsyXTtkLmNoaWxkcmVuPWh9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGUgaW4gZj1hLmRlZmF1bHRQcm9wcyxmKXZvaWQgMD09PWRbZV0mJihkW2VdPWZbZV0pO3JldHVybnskJHR5cGVvZjpwLHR5cGU6YSxrZXk6ZyxyZWY6ayxwcm9wczpkLF9vd25lcjpKLmN1cnJlbnR9fVxuZnVuY3Rpb24gTihhLGIpe3JldHVybnskJHR5cGVvZjpwLHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTyhhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09cH1mdW5jdGlvbiBlc2NhcGUoYSl7dmFyIGI9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiKyhcIlwiK2EpLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihhKXtyZXR1cm4gYlthXX0pfXZhciBQPS9cXC8rL2csUT1bXTtmdW5jdGlvbiBSKGEsYixjLGUpe2lmKFEubGVuZ3RoKXt2YXIgZD1RLnBvcCgpO2QucmVzdWx0PWE7ZC5rZXlQcmVmaXg9YjtkLmZ1bmM9YztkLmNvbnRleHQ9ZTtkLmNvdW50PTA7cmV0dXJuIGR9cmV0dXJue3Jlc3VsdDphLGtleVByZWZpeDpiLGZ1bmM6Yyxjb250ZXh0OmUsY291bnQ6MH19XG5mdW5jdGlvbiBTKGEpe2EucmVzdWx0PW51bGw7YS5rZXlQcmVmaXg9bnVsbDthLmZ1bmM9bnVsbDthLmNvbnRleHQ9bnVsbDthLmNvdW50PTA7MTA+US5sZW5ndGgmJlEucHVzaChhKX1cbmZ1bmN0aW9uIFQoYSxiLGMsZSl7dmFyIGQ9dHlwZW9mIGE7aWYoXCJ1bmRlZmluZWRcIj09PWR8fFwiYm9vbGVhblwiPT09ZClhPW51bGw7dmFyIGc9ITE7aWYobnVsbD09PWEpZz0hMDtlbHNlIHN3aXRjaChkKXtjYXNlIFwic3RyaW5nXCI6Y2FzZSBcIm51bWJlclwiOmc9ITA7YnJlYWs7Y2FzZSBcIm9iamVjdFwiOnN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIHA6Y2FzZSBxOmc9ITB9fWlmKGcpcmV0dXJuIGMoZSxhLFwiXCI9PT1iP1wiLlwiK1UoYSwwKTpiKSwxO2c9MDtiPVwiXCI9PT1iP1wiLlwiOmIrXCI6XCI7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGs9MDtrPGEubGVuZ3RoO2srKyl7ZD1hW2tdO3ZhciBmPWIrVShkLGspO2crPVQoZCxmLGMsZSl9ZWxzZSBpZihudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBhP2Y9bnVsbDooZj1CJiZhW0JdfHxhW1wiQEBpdGVyYXRvclwiXSxmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBmP2Y6bnVsbCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGYpZm9yKGE9Zi5jYWxsKGEpLGs9XG4wOyEoZD1hLm5leHQoKSkuZG9uZTspZD1kLnZhbHVlLGY9YitVKGQsaysrKSxnKz1UKGQsZixjLGUpO2Vsc2UgaWYoXCJvYmplY3RcIj09PWQpdGhyb3cgYz1cIlwiK2EsRXJyb3IoQygzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09Yz9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGEpLmpvaW4oXCIsIFwiKStcIn1cIjpjLFwiXCIpKTtyZXR1cm4gZ31mdW5jdGlvbiBWKGEsYixjKXtyZXR1cm4gbnVsbD09YT8wOlQoYSxcIlwiLGIsYyl9ZnVuY3Rpb24gVShhLGIpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJm51bGwhPWEua2V5P2VzY2FwZShhLmtleSk6Yi50b1N0cmluZygzNil9ZnVuY3Rpb24gVyhhLGIpe2EuZnVuYy5jYWxsKGEuY29udGV4dCxiLGEuY291bnQrKyl9XG5mdW5jdGlvbiBhYShhLGIsYyl7dmFyIGU9YS5yZXN1bHQsZD1hLmtleVByZWZpeDthPWEuZnVuYy5jYWxsKGEuY29udGV4dCxiLGEuY291bnQrKyk7QXJyYXkuaXNBcnJheShhKT9YKGEsZSxjLGZ1bmN0aW9uKGEpe3JldHVybiBhfSk6bnVsbCE9YSYmKE8oYSkmJihhPU4oYSxkKyghYS5rZXl8fGImJmIua2V5PT09YS5rZXk/XCJcIjooXCJcIithLmtleSkucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKStjKSksZS5wdXNoKGEpKX1mdW5jdGlvbiBYKGEsYixjLGUsZCl7dmFyIGc9XCJcIjtudWxsIT1jJiYoZz0oXCJcIitjKS5yZXBsYWNlKFAsXCIkJi9cIikrXCIvXCIpO2I9UihiLGcsZSxkKTtWKGEsYWEsYik7UyhiKX12YXIgWT17Y3VycmVudDpudWxsfTtmdW5jdGlvbiBaKCl7dmFyIGE9WS5jdXJyZW50O2lmKG51bGw9PT1hKXRocm93IEVycm9yKEMoMzIxKSk7cmV0dXJuIGF9XG52YXIgYmE9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6WSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzp7c3VzcGVuc2U6bnVsbH0sUmVhY3RDdXJyZW50T3duZXI6SixJc1NvbWVSZW5kZXJlckFjdGluZzp7Y3VycmVudDohMX0sYXNzaWduOmx9O2V4cG9ydHMuQ2hpbGRyZW49e21hcDpmdW5jdGlvbihhLGIsYyl7aWYobnVsbD09YSlyZXR1cm4gYTt2YXIgZT1bXTtYKGEsZSxudWxsLGIsYyk7cmV0dXJuIGV9LGZvckVhY2g6ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGw9PWEpcmV0dXJuIGE7Yj1SKG51bGwsbnVsbCxiLGMpO1YoYSxXLGIpO1MoYil9LGNvdW50OmZ1bmN0aW9uKGEpe3JldHVybiBWKGEsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sbnVsbCl9LHRvQXJyYXk6ZnVuY3Rpb24oYSl7dmFyIGI9W107WChhLGIsbnVsbCxmdW5jdGlvbihhKXtyZXR1cm4gYX0pO3JldHVybiBifSxvbmx5OmZ1bmN0aW9uKGEpe2lmKCFPKGEpKXRocm93IEVycm9yKEMoMTQzKSk7cmV0dXJuIGF9fTtcbmV4cG9ydHMuQ29tcG9uZW50PUY7ZXhwb3J0cy5GcmFnbWVudD1yO2V4cG9ydHMuUHJvZmlsZXI9dTtleHBvcnRzLlB1cmVDb21wb25lbnQ9SDtleHBvcnRzLlN0cmljdE1vZGU9dDtleHBvcnRzLlN1c3BlbnNlPXk7ZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1iYTtcbmV4cG9ydHMuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT09YXx8dm9pZCAwPT09YSl0aHJvdyBFcnJvcihDKDI2NyxhKSk7dmFyIGU9bCh7fSxhLnByb3BzKSxkPWEua2V5LGc9YS5yZWYsaz1hLl9vd25lcjtpZihudWxsIT1iKXt2b2lkIDAhPT1iLnJlZiYmKGc9Yi5yZWYsaz1KLmN1cnJlbnQpO3ZvaWQgMCE9PWIua2V5JiYoZD1cIlwiK2Iua2V5KTtpZihhLnR5cGUmJmEudHlwZS5kZWZhdWx0UHJvcHMpdmFyIGY9YS50eXBlLmRlZmF1bHRQcm9wcztmb3IoaCBpbiBiKUsuY2FsbChiLGgpJiYhTC5oYXNPd25Qcm9wZXJ0eShoKSYmKGVbaF09dm9pZCAwPT09YltoXSYmdm9pZCAwIT09Zj9mW2hdOmJbaF0pfXZhciBoPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09aCllLmNoaWxkcmVuPWM7ZWxzZSBpZigxPGgpe2Y9QXJyYXkoaCk7Zm9yKHZhciBtPTA7bTxoO20rKylmW21dPWFyZ3VtZW50c1ttKzJdO2UuY2hpbGRyZW49Zn1yZXR1cm57JCR0eXBlb2Y6cCx0eXBlOmEudHlwZSxcbmtleTpkLHJlZjpnLHByb3BzOmUsX293bmVyOmt9fTtleHBvcnRzLmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj1udWxsKTthPXskJHR5cGVvZjp3LF9jYWxjdWxhdGVDaGFuZ2VkQml0czpiLF9jdXJyZW50VmFsdWU6YSxfY3VycmVudFZhbHVlMjphLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbH07YS5Qcm92aWRlcj17JCR0eXBlb2Y6dixfY29udGV4dDphfTtyZXR1cm4gYS5Db25zdW1lcj1hfTtleHBvcnRzLmNyZWF0ZUVsZW1lbnQ9TTtleHBvcnRzLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oYSl7dmFyIGI9TS5iaW5kKG51bGwsYSk7Yi50eXBlPWE7cmV0dXJuIGJ9O2V4cG9ydHMuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O2V4cG9ydHMuZm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6eCxyZW5kZXI6YX19O2V4cG9ydHMuaXNWYWxpZEVsZW1lbnQ9TztcbmV4cG9ydHMubGF6eT1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6QSxfY3RvcjphLF9zdGF0dXM6LTEsX3Jlc3VsdDpudWxsfX07ZXhwb3J0cy5tZW1vPWZ1bmN0aW9uKGEsYil7cmV0dXJueyQkdHlwZW9mOnosdHlwZTphLGNvbXBhcmU6dm9pZCAwPT09Yj9udWxsOmJ9fTtleHBvcnRzLnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFooKS51c2VDYWxsYmFjayhhLGIpfTtleHBvcnRzLnVzZUNvbnRleHQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWigpLnVzZUNvbnRleHQoYSxiKX07ZXhwb3J0cy51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVzZUVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBaKCkudXNlRWZmZWN0KGEsYil9O2V4cG9ydHMudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFooKS51c2VJbXBlcmF0aXZlSGFuZGxlKGEsYixjKX07XG5leHBvcnRzLnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBaKCkudXNlTGF5b3V0RWZmZWN0KGEsYil9O2V4cG9ydHMudXNlTWVtbz1mdW5jdGlvbihhLGIpe3JldHVybiBaKCkudXNlTWVtbyhhLGIpfTtleHBvcnRzLnVzZVJlZHVjZXI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBaKCkudXNlUmVkdWNlcihhLGIsYyl9O2V4cG9ydHMudXNlUmVmPWZ1bmN0aW9uKGEpe3JldHVybiBaKCkudXNlUmVmKGEpfTtleHBvcnRzLnVzZVN0YXRlPWZ1bmN0aW9uKGEpe3JldHVybiBaKCkudXNlU3RhdGUoYSl9O2V4cG9ydHMudmVyc2lvbj1cIjE2LjEzLjFcIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIF9fREVWX18gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nO1xuXG52YXIgd2FybmluZyA9IGZ1bmN0aW9uKCkge307XG5cbmlmIChfX0RFVl9fKSB7XG4gIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAxID8gbGVuIC0gMSA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDE7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMV0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICtcbiAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9XG5cbiAgd2FybmluZyA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAyID8gbGVuIC0gMiA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDI7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMl0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgK1xuICAgICAgICAgICdtZXNzYWdlIGFyZ3VtZW50J1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIHByaW50V2FybmluZy5hcHBseShudWxsLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuIiwiIWZ1bmN0aW9uKGEsbil7XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShuKTpcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1uKHJlcXVpcmUsZXhwb3J0cyxtb2R1bGUpOmEuQ291bnRVcD1uKCl9KHRoaXMsZnVuY3Rpb24oYSxuLHQpe3ZhciBlPWZ1bmN0aW9uKGEsbix0LGUsaSxyKXtmdW5jdGlvbiBvKGEpe3ZhciBuLHQsZSxpLHIsbyxzPWE8MDtpZihhPU1hdGguYWJzKGEpLnRvRml4ZWQobC5kZWNpbWFscyksYSs9XCJcIixuPWEuc3BsaXQoXCIuXCIpLHQ9blswXSxlPW4ubGVuZ3RoPjE/bC5vcHRpb25zLmRlY2ltYWwrblsxXTpcIlwiLGwub3B0aW9ucy51c2VHcm91cGluZyl7Zm9yKGk9XCJcIixyPTAsbz10Lmxlbmd0aDtyPG87KytyKTAhPT1yJiZyJTM9PT0wJiYoaT1sLm9wdGlvbnMuc2VwYXJhdG9yK2kpLGk9dFtvLXItMV0raTt0PWl9cmV0dXJuIGwub3B0aW9ucy5udW1lcmFscy5sZW5ndGgmJih0PXQucmVwbGFjZSgvWzAtOV0vZyxmdW5jdGlvbihhKXtyZXR1cm4gbC5vcHRpb25zLm51bWVyYWxzWythXX0pLGU9ZS5yZXBsYWNlKC9bMC05XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBsLm9wdGlvbnMubnVtZXJhbHNbK2FdfSkpLChzP1wiLVwiOlwiXCIpK2wub3B0aW9ucy5wcmVmaXgrdCtlK2wub3B0aW9ucy5zdWZmaXh9ZnVuY3Rpb24gcyhhLG4sdCxlKXtyZXR1cm4gdCooLU1hdGgucG93KDIsLTEwKmEvZSkrMSkqMTAyNC8xMDIzK259ZnVuY3Rpb24gdShhKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgYSYmIWlzTmFOKGEpfXZhciBsPXRoaXM7aWYobC52ZXJzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuXCIxLjkuM1wifSxsLm9wdGlvbnM9e3VzZUVhc2luZzohMCx1c2VHcm91cGluZzohMCxzZXBhcmF0b3I6XCIsXCIsZGVjaW1hbDpcIi5cIixlYXNpbmdGbjpzLGZvcm1hdHRpbmdGbjpvLHByZWZpeDpcIlwiLHN1ZmZpeDpcIlwiLG51bWVyYWxzOltdfSxyJiZcIm9iamVjdFwiPT10eXBlb2Ygcilmb3IodmFyIG0gaW4gbC5vcHRpb25zKXIuaGFzT3duUHJvcGVydHkobSkmJm51bGwhPT1yW21dJiYobC5vcHRpb25zW21dPXJbbV0pO1wiXCI9PT1sLm9wdGlvbnMuc2VwYXJhdG9yP2wub3B0aW9ucy51c2VHcm91cGluZz0hMTpsLm9wdGlvbnMuc2VwYXJhdG9yPVwiXCIrbC5vcHRpb25zLnNlcGFyYXRvcjtmb3IodmFyIGQ9MCxjPVtcIndlYmtpdFwiLFwibW96XCIsXCJtc1wiLFwib1wiXSxmPTA7ZjxjLmxlbmd0aCYmIXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7KytmKXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9d2luZG93W2NbZl0rXCJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIl0sd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lPXdpbmRvd1tjW2ZdK1wiQ2FuY2VsQW5pbWF0aW9uRnJhbWVcIl18fHdpbmRvd1tjW2ZdK1wiQ2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lXCJdO3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fCh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEsbil7dmFyIHQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksZT1NYXRoLm1heCgwLDE2LSh0LWQpKSxpPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YSh0K2UpfSxlKTtyZXR1cm4gZD10K2UsaX0pLHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZXx8KHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZT1mdW5jdGlvbihhKXtjbGVhclRpbWVvdXQoYSl9KSxsLmluaXRpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4hIWwuaW5pdGlhbGl6ZWR8fChsLmVycm9yPVwiXCIsbC5kPVwic3RyaW5nXCI9PXR5cGVvZiBhP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOmEsbC5kPyhsLnN0YXJ0VmFsPU51bWJlcihuKSxsLmVuZFZhbD1OdW1iZXIodCksdShsLnN0YXJ0VmFsKSYmdShsLmVuZFZhbCk/KGwuZGVjaW1hbHM9TWF0aC5tYXgoMCxlfHwwKSxsLmRlYz1NYXRoLnBvdygxMCxsLmRlY2ltYWxzKSxsLmR1cmF0aW9uPTFlMypOdW1iZXIoaSl8fDJlMyxsLmNvdW50RG93bj1sLnN0YXJ0VmFsPmwuZW5kVmFsLGwuZnJhbWVWYWw9bC5zdGFydFZhbCxsLmluaXRpYWxpemVkPSEwLCEwKToobC5lcnJvcj1cIltDb3VudFVwXSBzdGFydFZhbCAoXCIrbitcIikgb3IgZW5kVmFsIChcIit0K1wiKSBpcyBub3QgYSBudW1iZXJcIiwhMSkpOihsLmVycm9yPVwiW0NvdW50VXBdIHRhcmdldCBpcyBudWxsIG9yIHVuZGVmaW5lZFwiLCExKSl9LGwucHJpbnRWYWx1ZT1mdW5jdGlvbihhKXt2YXIgbj1sLm9wdGlvbnMuZm9ybWF0dGluZ0ZuKGEpO1wiSU5QVVRcIj09PWwuZC50YWdOYW1lP3RoaXMuZC52YWx1ZT1uOlwidGV4dFwiPT09bC5kLnRhZ05hbWV8fFwidHNwYW5cIj09PWwuZC50YWdOYW1lP3RoaXMuZC50ZXh0Q29udGVudD1uOnRoaXMuZC5pbm5lckhUTUw9bn0sbC5jb3VudD1mdW5jdGlvbihhKXtsLnN0YXJ0VGltZXx8KGwuc3RhcnRUaW1lPWEpLGwudGltZXN0YW1wPWE7dmFyIG49YS1sLnN0YXJ0VGltZTtsLnJlbWFpbmluZz1sLmR1cmF0aW9uLW4sbC5vcHRpb25zLnVzZUVhc2luZz9sLmNvdW50RG93bj9sLmZyYW1lVmFsPWwuc3RhcnRWYWwtbC5vcHRpb25zLmVhc2luZ0ZuKG4sMCxsLnN0YXJ0VmFsLWwuZW5kVmFsLGwuZHVyYXRpb24pOmwuZnJhbWVWYWw9bC5vcHRpb25zLmVhc2luZ0ZuKG4sbC5zdGFydFZhbCxsLmVuZFZhbC1sLnN0YXJ0VmFsLGwuZHVyYXRpb24pOmwuY291bnREb3duP2wuZnJhbWVWYWw9bC5zdGFydFZhbC0obC5zdGFydFZhbC1sLmVuZFZhbCkqKG4vbC5kdXJhdGlvbik6bC5mcmFtZVZhbD1sLnN0YXJ0VmFsKyhsLmVuZFZhbC1sLnN0YXJ0VmFsKSoobi9sLmR1cmF0aW9uKSxsLmNvdW50RG93bj9sLmZyYW1lVmFsPWwuZnJhbWVWYWw8bC5lbmRWYWw/bC5lbmRWYWw6bC5mcmFtZVZhbDpsLmZyYW1lVmFsPWwuZnJhbWVWYWw+bC5lbmRWYWw/bC5lbmRWYWw6bC5mcmFtZVZhbCxsLmZyYW1lVmFsPU1hdGgucm91bmQobC5mcmFtZVZhbCpsLmRlYykvbC5kZWMsbC5wcmludFZhbHVlKGwuZnJhbWVWYWwpLG48bC5kdXJhdGlvbj9sLnJBRj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobC5jb3VudCk6bC5jYWxsYmFjayYmbC5jYWxsYmFjaygpfSxsLnN0YXJ0PWZ1bmN0aW9uKGEpe2wuaW5pdGlhbGl6ZSgpJiYobC5jYWxsYmFjaz1hLGwuckFGPXJlcXVlc3RBbmltYXRpb25GcmFtZShsLmNvdW50KSl9LGwucGF1c2VSZXN1bWU9ZnVuY3Rpb24oKXtsLnBhdXNlZD8obC5wYXVzZWQ9ITEsZGVsZXRlIGwuc3RhcnRUaW1lLGwuZHVyYXRpb249bC5yZW1haW5pbmcsbC5zdGFydFZhbD1sLmZyYW1lVmFsLHJlcXVlc3RBbmltYXRpb25GcmFtZShsLmNvdW50KSk6KGwucGF1c2VkPSEwLGNhbmNlbEFuaW1hdGlvbkZyYW1lKGwuckFGKSl9LGwucmVzZXQ9ZnVuY3Rpb24oKXtsLnBhdXNlZD0hMSxkZWxldGUgbC5zdGFydFRpbWUsbC5pbml0aWFsaXplZD0hMSxsLmluaXRpYWxpemUoKSYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKGwuckFGKSxsLnByaW50VmFsdWUobC5zdGFydFZhbCkpfSxsLnVwZGF0ZT1mdW5jdGlvbihhKXtpZihsLmluaXRpYWxpemUoKSl7aWYoYT1OdW1iZXIoYSksIXUoYSkpcmV0dXJuIHZvaWQobC5lcnJvcj1cIltDb3VudFVwXSB1cGRhdGUoKSAtIG5ldyBlbmRWYWwgaXMgbm90IGEgbnVtYmVyOiBcIithKTtsLmVycm9yPVwiXCIsYSE9PWwuZnJhbWVWYWwmJihjYW5jZWxBbmltYXRpb25GcmFtZShsLnJBRiksbC5wYXVzZWQ9ITEsZGVsZXRlIGwuc3RhcnRUaW1lLGwuc3RhcnRWYWw9bC5mcmFtZVZhbCxsLmVuZFZhbD1hLGwuY291bnREb3duPWwuc3RhcnRWYWw+bC5lbmRWYWwsbC5yQUY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGwuY291bnQpKX19LGwuaW5pdGlhbGl6ZSgpJiZsLnByaW50VmFsdWUobC5zdGFydFZhbCl9O3JldHVybiBlfSk7IiwidmFyIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWx0ZXJgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGaWx0ZXI7XG4iLCJ2YXIgYmFzZUZvciA9IHJlcXVpcmUoJy4vX2Jhc2VGb3InKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yT3duO1xuIiwidmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgaXRlcmFibGUgPSBPYmplY3Qob2JqZWN0KSxcbiAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUZvcjtcbiIsInZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYGJhc2VFYWNoYCBvciBgYmFzZUVhY2hSaWdodGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYywgZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbiAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICByZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpO1xuICAgIH1cbiAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsXG4gICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRWFjaDtcbiIsInZhciBiYXNlSXNNYXRjaCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hdGNoJyksXG4gICAgZ2V0TWF0Y2hEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWF0Y2hEYXRhJyksXG4gICAgbWF0Y2hlc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlTWF0Y2hlcyhzb3VyY2UpIHtcbiAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpO1xuICBpZiAobWF0Y2hEYXRhLmxlbmd0aCA9PSAxICYmIG1hdGNoRGF0YVswXVsyXSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShtYXRjaERhdGFbMF1bMF0sIG1hdGNoRGF0YVswXVsxXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlcztcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXRjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0FycmF5fSBtYXRjaERhdGEgVGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhLCBjdXN0b21pemVyKSB7XG4gIHZhciBpbmRleCA9IG1hdGNoRGF0YS5sZW5ndGgsXG4gICAgICBsZW5ndGggPSBpbmRleCxcbiAgICAgIG5vQ3VzdG9taXplciA9ICFjdXN0b21pemVyO1xuXG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiAhbGVuZ3RoO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICBpZiAoKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKVxuICAgICAgICAgID8gZGF0YVsxXSAhPT0gb2JqZWN0W2RhdGFbMF1dXG4gICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KVxuICAgICAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICB2YXIga2V5ID0gZGF0YVswXSxcbiAgICAgICAgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgc3JjVmFsdWUgPSBkYXRhWzFdO1xuXG4gICAgaWYgKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKSB7XG4gICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YWNrID0gbmV3IFN0YWNrO1xuICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjayk7XG4gICAgICB9XG4gICAgICBpZiAoIShyZXN1bHQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICA6IHJlc3VsdFxuICAgICAgICAgICkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNNYXRjaDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL19lcXVhbEJ5VGFnJyksXG4gICAgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICB9XG4gIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzU2FtZVRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIiwiLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGFkZFxuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAYWxpYXMgcHVzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVBZGQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVIYXM7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5JyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEJ5VGFnO1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBUb0FycmF5O1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUb0FycmF5O1xuIiwidmFyIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLFxuICAgICAgb2JqTGVuZ3RoID0gb2JqUHJvcHMubGVuZ3RoLFxuICAgICAgb3RoUHJvcHMgPSBnZXRBbGxLZXlzKG90aGVyKSxcbiAgICAgIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcblxuICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBpbmRleCA9IG9iakxlbmd0aDtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgaWYgKHN0YWNrZWQgJiYgc3RhY2suZ2V0KG90aGVyKSkge1xuICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICB9XG4gIHZhciByZXN1bHQgPSB0cnVlO1xuICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICB2YXIgc2tpcEN0b3IgPSBpc1BhcnRpYWw7XG4gIHdoaWxlICgrK2luZGV4IDwgb2JqTGVuZ3RoKSB7XG4gICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2tleV07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgb2JqVmFsdWUsIGtleSwgb3RoZXIsIG9iamVjdCwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyAob2JqVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhvYmpWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSlcbiAgICAgICAgICA6IGNvbXBhcmVkXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHNraXBDdG9yIHx8IChza2lwQ3RvciA9IGtleSA9PSAnY29uc3RydWN0b3InKTtcbiAgfVxuICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgIHZhciBvYmpDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yLFxuICAgICAgICBvdGhDdG9yID0gb3RoZXIuY29uc3RydWN0b3I7XG5cbiAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICBpZiAob2JqQ3RvciAhPSBvdGhDdG9yICYmXG4gICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJlxuICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICB0eXBlb2Ygb3RoQ3RvciA9PSAnZnVuY3Rpb24nICYmIG90aEN0b3IgaW5zdGFuY2VvZiBvdGhDdG9yKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsT2JqZWN0cztcbiIsInZhciBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hdGNoRGF0YTtcbiIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyksXG4gICAgZ2V0ID0gcmVxdWlyZSgnLi9nZXQnKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKSxcbiAgICBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksXG4gICAgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAgbWF0Y2hlc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNQcm9wZXJ0eWAgd2hpY2ggZG9lc24ndCBjbG9uZSBgc3JjVmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gIGlmIChpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKHRvS2V5KHBhdGgpLCBzcmNWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBvYmpWYWx1ZSA9IGdldChvYmplY3QsIHBhdGgpO1xuICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzUHJvcGVydHk7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzSW47XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGV4aXN0cyBvbiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYXNGdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjayBwcm9wZXJ0aWVzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzUGF0aChvYmplY3QsIHBhdGgsIGhhc0Z1bmMpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKTtcbiAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgfVxuICBpZiAocmVzdWx0IHx8ICsraW5kZXggIT0gbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBsZW5ndGggPSBvYmplY3QgPT0gbnVsbCA/IDAgOiBvYmplY3QubGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiYgaXNMZW5ndGgobGVuZ3RoKSAmJiBpc0luZGV4KGtleSwgbGVuZ3RoKSAmJlxuICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzUGF0aDtcbiIsInZhciBiYXNlUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHknKSxcbiAgICBiYXNlUHJvcGVydHlEZWVwID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5RGVlcCcpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW1xuICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gKiBdO1xuICpcbiAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAqIC8vID0+IFsyLCAxXVxuICpcbiAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqL1xuZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICByZXR1cm4gaXNLZXkocGF0aCkgPyBiYXNlUHJvcGVydHkodG9LZXkocGF0aCkpIDogYmFzZVByb3BlcnR5RGVlcChwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwcm9wZXJ0eTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUHJvcGVydHlgIHdoaWNoIHN1cHBvcnRzIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5RGVlcChwYXRoKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eURlZXA7XG4iLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXA7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9pbm5lclNsaWRlciA9IHJlcXVpcmUoXCIuL2lubmVyLXNsaWRlclwiKTtcblxudmFyIF9qc29uMm1xID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwianNvbjJtcVwiKSk7XG5cbnZhciBfZGVmYXVsdFByb3BzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9kZWZhdWx0LXByb3BzXCIpKTtcblxudmFyIF9pbm5lclNsaWRlclV0aWxzID0gcmVxdWlyZShcIi4vdXRpbHMvaW5uZXJTbGlkZXJVdGlsc1wiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAnZnVuY3Rpb24nKSB7IG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBzeW0pLmVudW1lcmFibGU7IH0pKTsgfSBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIGVucXVpcmUgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuY2FuVXNlRE9NKSgpICYmIHJlcXVpcmUoXCJlbnF1aXJlLmpzXCIpO1xuXG52YXIgU2xpZGVyID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTbGlkZXIsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFNsaWRlcihwcm9wcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTbGlkZXIpO1xuXG4gICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoU2xpZGVyKS5jYWxsKHRoaXMsIHByb3BzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiaW5uZXJTbGlkZXJSZWZIYW5kbGVyXCIsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgIHJldHVybiBfdGhpcy5pbm5lclNsaWRlciA9IHJlZjtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzbGlja1ByZXZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLmlubmVyU2xpZGVyLnNsaWNrUHJldigpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInNsaWNrTmV4dFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuaW5uZXJTbGlkZXIuc2xpY2tOZXh0KCk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwic2xpY2tHb1RvXCIsIGZ1bmN0aW9uIChzbGlkZSkge1xuICAgICAgdmFyIGRvbnRBbmltYXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcbiAgICAgIHJldHVybiBfdGhpcy5pbm5lclNsaWRlci5zbGlja0dvVG8oc2xpZGUsIGRvbnRBbmltYXRlKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzbGlja1BhdXNlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5pbm5lclNsaWRlci5wYXVzZShcInBhdXNlZFwiKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzbGlja1BsYXlcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLmlubmVyU2xpZGVyLmF1dG9QbGF5KFwicGxheVwiKTtcbiAgICB9KTtcblxuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgYnJlYWtwb2ludDogbnVsbFxuICAgIH07XG4gICAgX3RoaXMuX3Jlc3BvbnNpdmVNZWRpYUhhbmRsZXJzID0gW107XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFNsaWRlciwgW3tcbiAgICBrZXk6IFwibWVkaWFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbWVkaWEocXVlcnksIGhhbmRsZXIpIHtcbiAgICAgIC8vIGphdmFzY3JpcHQgaGFuZGxlciBmb3IgIGNzcyBtZWRpYSBxdWVyeVxuICAgICAgZW5xdWlyZS5yZWdpc3RlcihxdWVyeSwgaGFuZGxlcik7XG5cbiAgICAgIHRoaXMuX3Jlc3BvbnNpdmVNZWRpYUhhbmRsZXJzLnB1c2goe1xuICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgIGhhbmRsZXI6IGhhbmRsZXJcbiAgICAgIH0pO1xuICAgIH0gLy8gaGFuZGxlcyByZXNwb25zaXZlIGJyZWFrcG9pbnRzXG5cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbE1vdW50KCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIC8vIHBlcmZvcm1hbmNlIG1vbml0b3JpbmdcbiAgICAgIC8vaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vY29uc3QgeyB3aHlEaWRZb3VVcGRhdGUgfSA9IHJlcXVpcmUoJ3doeS1kaWQteW91LXVwZGF0ZScpXG4gICAgICAvL3doeURpZFlvdVVwZGF0ZShSZWFjdClcbiAgICAgIC8vfVxuICAgICAgaWYgKHRoaXMucHJvcHMucmVzcG9uc2l2ZSkge1xuICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0aGlzLnByb3BzLnJlc3BvbnNpdmUubWFwKGZ1bmN0aW9uIChicmVha3B0KSB7XG4gICAgICAgICAgcmV0dXJuIGJyZWFrcHQuYnJlYWtwb2ludDtcbiAgICAgICAgfSk7IC8vIHNvcnQgdGhlbSBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIHRoZWlyIG51bWVyaWNhbCB2YWx1ZVxuXG4gICAgICAgIGJyZWFrcG9pbnRzLnNvcnQoZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgICByZXR1cm4geCAtIHk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVha3BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChicmVha3BvaW50LCBpbmRleCkge1xuICAgICAgICAgIC8vIG1lZGlhIHF1ZXJ5IGZvciBlYWNoIGJyZWFrcG9pbnRcbiAgICAgICAgICB2YXIgYlF1ZXJ5O1xuXG4gICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICBiUXVlcnkgPSAoMCwgX2pzb24ybXEuZGVmYXVsdCkoe1xuICAgICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgICAgbWF4V2lkdGg6IGJyZWFrcG9pbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiUXVlcnkgPSAoMCwgX2pzb24ybXEuZGVmYXVsdCkoe1xuICAgICAgICAgICAgICBtaW5XaWR0aDogYnJlYWtwb2ludHNbaW5kZXggLSAxXSArIDEsXG4gICAgICAgICAgICAgIG1heFdpZHRoOiBicmVha3BvaW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IC8vIHdoZW4gbm90IHVzaW5nIHNlcnZlciBzaWRlIHJlbmRlcmluZ1xuXG5cbiAgICAgICAgICAoMCwgX2lubmVyU2xpZGVyVXRpbHMuY2FuVXNlRE9NKSgpICYmIF90aGlzMi5tZWRpYShiUXVlcnksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgLy8gUmVnaXN0ZXIgbWVkaWEgcXVlcnkgZm9yIGZ1bGwgc2NyZWVuLiBOZWVkIHRvIHN1cHBvcnQgcmVzaXplIGZyb20gc21hbGwgdG8gbGFyZ2VcbiAgICAgICAgLy8gY29udmVydCBqYXZhc2NyaXB0IG9iamVjdCB0byBtZWRpYSBxdWVyeSBzdHJpbmdcblxuICAgICAgICB2YXIgcXVlcnkgPSAoMCwgX2pzb24ybXEuZGVmYXVsdCkoe1xuICAgICAgICAgIG1pbldpZHRoOiBicmVha3BvaW50cy5zbGljZSgtMSlbMF1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCBfaW5uZXJTbGlkZXJVdGlscy5jYW5Vc2VET00pKCkgJiYgdGhpcy5tZWRpYShxdWVyeSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBicmVha3BvaW50OiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMuX3Jlc3BvbnNpdmVNZWRpYUhhbmRsZXJzLmZvckVhY2goZnVuY3Rpb24gKG9iaikge1xuICAgICAgICBlbnF1aXJlLnVucmVnaXN0ZXIob2JqLnF1ZXJ5LCBvYmouaGFuZGxlcik7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgc2V0dGluZ3M7XG4gICAgICB2YXIgbmV3UHJvcHM7XG5cbiAgICAgIGlmICh0aGlzLnN0YXRlLmJyZWFrcG9pbnQpIHtcbiAgICAgICAgbmV3UHJvcHMgPSB0aGlzLnByb3BzLnJlc3BvbnNpdmUuZmlsdGVyKGZ1bmN0aW9uIChyZXNwKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3AuYnJlYWtwb2ludCA9PT0gX3RoaXMzLnN0YXRlLmJyZWFrcG9pbnQ7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXR0aW5ncyA9IG5ld1Byb3BzWzBdLnNldHRpbmdzID09PSBcInVuc2xpY2tcIiA/IFwidW5zbGlja1wiIDogX29iamVjdFNwcmVhZCh7fSwgX2RlZmF1bHRQcm9wcy5kZWZhdWx0LCB0aGlzLnByb3BzLCBuZXdQcm9wc1swXS5zZXR0aW5ncyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXR0aW5ncyA9IF9vYmplY3RTcHJlYWQoe30sIF9kZWZhdWx0UHJvcHMuZGVmYXVsdCwgdGhpcy5wcm9wcyk7XG4gICAgICB9IC8vIGZvcmNlIHNjcm9sbGluZyBieSBvbmUgaWYgY2VudGVyTW9kZSBpcyBvblxuXG5cbiAgICAgIGlmIChzZXR0aW5ncy5jZW50ZXJNb2RlKSB7XG4gICAgICAgIGlmIChzZXR0aW5ncy5zbGlkZXNUb1Njcm9sbCA+IDEgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwic2xpZGVzVG9TY3JvbGwgc2hvdWxkIGJlIGVxdWFsIHRvIDEgaW4gY2VudGVyTW9kZSwgeW91IGFyZSB1c2luZyBcIi5jb25jYXQoc2V0dGluZ3Muc2xpZGVzVG9TY3JvbGwpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldHRpbmdzLnNsaWRlc1RvU2Nyb2xsID0gMTtcbiAgICAgIH0gLy8gZm9yY2Ugc2hvd2luZyBvbmUgc2xpZGUgYW5kIHNjcm9sbGluZyBieSBvbmUgaWYgdGhlIGZhZGUgbW9kZSBpcyBvblxuXG5cbiAgICAgIGlmIChzZXR0aW5ncy5mYWRlKSB7XG4gICAgICAgIGlmIChzZXR0aW5ncy5zbGlkZXNUb1Nob3cgPiAxICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcInNsaWRlc1RvU2hvdyBzaG91bGQgYmUgZXF1YWwgdG8gMSB3aGVuIGZhZGUgaXMgdHJ1ZSwgeW91J3JlIHVzaW5nIFwiLmNvbmNhdChzZXR0aW5ncy5zbGlkZXNUb1Nob3cpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZXR0aW5ncy5zbGlkZXNUb1Njcm9sbCA+IDEgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwic2xpZGVzVG9TY3JvbGwgc2hvdWxkIGJlIGVxdWFsIHRvIDEgd2hlbiBmYWRlIGlzIHRydWUsIHlvdSdyZSB1c2luZyBcIi5jb25jYXQoc2V0dGluZ3Muc2xpZGVzVG9TY3JvbGwpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldHRpbmdzLnNsaWRlc1RvU2hvdyA9IDE7XG4gICAgICAgIHNldHRpbmdzLnNsaWRlc1RvU2Nyb2xsID0gMTtcbiAgICAgIH0gLy8gbWFrZXMgc3VyZSB0aGF0IGNoaWxkcmVuIGlzIGFuIGFycmF5LCBldmVuIHdoZW4gdGhlcmUgaXMgb25seSAxIGNoaWxkXG5cblxuICAgICAgdmFyIGNoaWxkcmVuID0gX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4udG9BcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKTsgLy8gQ2hpbGRyZW4gbWF5IGNvbnRhaW4gZmFsc2Ugb3IgbnVsbCwgc28gd2Ugc2hvdWxkIGZpbHRlciB0aGVtXG4gICAgICAvLyBjaGlsZHJlbiBtYXkgYWxzbyBjb250YWluIHN0cmluZyBmaWxsZWQgd2l0aCBzcGFjZXMgKGluIGNlcnRhaW4gY2FzZXMgd2hlcmUgd2UgdXNlIGpzeCBzdHJpbmdzKVxuXG5cbiAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNoaWxkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuICEhY2hpbGQudHJpbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhY2hpbGQ7XG4gICAgICB9KTsgLy8gcm93cyBhbmQgc2xpZGVzUGVyUm93IGxvZ2ljIGlzIGhhbmRsZWQgaGVyZVxuXG4gICAgICBpZiAoc2V0dGluZ3MudmFyaWFibGVXaWR0aCAmJiAoc2V0dGluZ3Mucm93cyA+IDEgfHwgc2V0dGluZ3Muc2xpZGVzUGVyUm93ID4gMSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwidmFyaWFibGVXaWR0aCBpcyBub3Qgc3VwcG9ydGVkIGluIGNhc2Ugb2Ygcm93cyA+IDEgb3Igc2xpZGVzUGVyUm93ID4gMVwiKTtcbiAgICAgICAgc2V0dGluZ3MudmFyaWFibGVXaWR0aCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICAgIHZhciBjdXJyZW50V2lkdGggPSBudWxsO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSArPSBzZXR0aW5ncy5yb3dzICogc2V0dGluZ3Muc2xpZGVzUGVyUm93KSB7XG4gICAgICAgIHZhciBuZXdTbGlkZSA9IFtdO1xuXG4gICAgICAgIGZvciAodmFyIGogPSBpOyBqIDwgaSArIHNldHRpbmdzLnJvd3MgKiBzZXR0aW5ncy5zbGlkZXNQZXJSb3c7IGogKz0gc2V0dGluZ3Muc2xpZGVzUGVyUm93KSB7XG4gICAgICAgICAgdmFyIHJvdyA9IFtdO1xuXG4gICAgICAgICAgZm9yICh2YXIgayA9IGo7IGsgPCBqICsgc2V0dGluZ3Muc2xpZGVzUGVyUm93OyBrICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy52YXJpYWJsZVdpZHRoICYmIGNoaWxkcmVuW2tdLnByb3BzLnN0eWxlKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRXaWR0aCA9IGNoaWxkcmVuW2tdLnByb3BzLnN0eWxlLndpZHRoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoayA+PSBjaGlsZHJlbi5sZW5ndGgpIGJyZWFrO1xuICAgICAgICAgICAgcm93LnB1c2goX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KGNoaWxkcmVuW2tdLCB7XG4gICAgICAgICAgICAgIGtleTogMTAwICogaSArIDEwICogaiArIGssXG4gICAgICAgICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogXCJcIi5jb25jYXQoMTAwIC8gc2V0dGluZ3Muc2xpZGVzUGVyUm93LCBcIiVcIiksXG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV3U2xpZGUucHVzaChfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGtleTogMTAgKiBpICsgalxuICAgICAgICAgIH0sIHJvdykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNldHRpbmdzLnZhcmlhYmxlV2lkdGgpIHtcbiAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgICAga2V5OiBpLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgd2lkdGg6IGN1cnJlbnRXaWR0aFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIG5ld1NsaWRlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGtleTogaVxuICAgICAgICAgIH0sIG5ld1NsaWRlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNldHRpbmdzID09PSBcInVuc2xpY2tcIikge1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gXCJyZWd1bGFyIHNsaWRlciBcIiArICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKTtcbiAgICAgICAgcmV0dXJuIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lXG4gICAgICAgIH0sIG5ld0NoaWxkcmVuKTtcbiAgICAgIH0gZWxzZSBpZiAobmV3Q2hpbGRyZW4ubGVuZ3RoIDw9IHNldHRpbmdzLnNsaWRlc1RvU2hvdykge1xuICAgICAgICBzZXR0aW5ncy51bnNsaWNrID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2lubmVyU2xpZGVyLklubmVyU2xpZGVyLCBfZXh0ZW5kcyh7XG4gICAgICAgIHJlZjogdGhpcy5pbm5lclNsaWRlclJlZkhhbmRsZXJcbiAgICAgIH0sIHNldHRpbmdzKSwgbmV3Q2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTbGlkZXI7XG59KF9yZWFjdC5kZWZhdWx0LkNvbXBvbmVudCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFNsaWRlcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuSW5uZXJTbGlkZXIgPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmVhY3REb20gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdC1kb21cIikpO1xuXG52YXIgX2luaXRpYWxTdGF0ZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaW5pdGlhbC1zdGF0ZVwiKSk7XG5cbnZhciBfbG9kYXNoID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwibG9kYXNoLmRlYm91bmNlXCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfaW5uZXJTbGlkZXJVdGlscyA9IHJlcXVpcmUoXCIuL3V0aWxzL2lubmVyU2xpZGVyVXRpbHNcIik7XG5cbnZhciBfdHJhY2sgPSByZXF1aXJlKFwiLi90cmFja1wiKTtcblxudmFyIF9kb3RzID0gcmVxdWlyZShcIi4vZG90c1wiKTtcblxudmFyIF9hcnJvd3MgPSByZXF1aXJlKFwiLi9hcnJvd3NcIik7XG5cbnZhciBfcmVzaXplT2JzZXJ2ZXJQb2x5ZmlsbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlc2l6ZS1vYnNlcnZlci1wb2x5ZmlsbFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyB2YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gJ2Z1bmN0aW9uJykgeyBvd25LZXlzID0gb3duS2V5cy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgc3ltKS5lbnVtZXJhYmxlOyB9KSk7IH0gb3duS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgSW5uZXJTbGlkZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKElubmVyU2xpZGVyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBJbm5lclNsaWRlcihwcm9wcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJbm5lclNsaWRlcik7XG5cbiAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihJbm5lclNsaWRlcikuY2FsbCh0aGlzLCBwcm9wcykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImxpc3RSZWZIYW5kbGVyXCIsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgIHJldHVybiBfdGhpcy5saXN0ID0gcmVmO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInRyYWNrUmVmSGFuZGxlclwiLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICByZXR1cm4gX3RoaXMudHJhY2sgPSByZWY7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiYWRhcHRIZWlnaHRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLmFkYXB0aXZlSGVpZ2h0ICYmIF90aGlzLmxpc3QpIHtcbiAgICAgICAgdmFyIGVsZW0gPSBfdGhpcy5saXN0LnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1pbmRleD1cXFwiXCIuY29uY2F0KF90aGlzLnN0YXRlLmN1cnJlbnRTbGlkZSwgXCJcXFwiXVwiKSk7XG5cbiAgICAgICAgX3RoaXMubGlzdC5zdHlsZS5oZWlnaHQgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0SGVpZ2h0KShlbGVtKSArIFwicHhcIjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJjb21wb25lbnRXaWxsTW91bnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuc3NySW5pdCgpO1xuXG4gICAgICBfdGhpcy5wcm9wcy5vbkluaXQgJiYgX3RoaXMucHJvcHMub25Jbml0KCk7XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5sYXp5TG9hZCkge1xuICAgICAgICB2YXIgc2xpZGVzVG9Mb2FkID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmdldE9uRGVtYW5kTGF6eVNsaWRlcykoX29iamVjdFNwcmVhZCh7fSwgX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlKSk7XG5cbiAgICAgICAgaWYgKHNsaWRlc1RvTG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKHByZXZTdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgbGF6eUxvYWRlZExpc3Q6IHByZXZTdGF0ZS5sYXp5TG9hZGVkTGlzdC5jb25jYXQoc2xpZGVzVG9Mb2FkKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkxhenlMb2FkKSB7XG4gICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkxhenlMb2FkKHNsaWRlc1RvTG9hZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiY29tcG9uZW50RGlkTW91bnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNwZWMgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgbGlzdFJlZjogX3RoaXMubGlzdCxcbiAgICAgICAgdHJhY2tSZWY6IF90aGlzLnRyYWNrXG4gICAgICB9LCBfdGhpcy5wcm9wcyk7XG5cbiAgICAgIF90aGlzLnVwZGF0ZVN0YXRlKHNwZWMsIHRydWUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMuYWRhcHRIZWlnaHQoKTtcblxuICAgICAgICBfdGhpcy5wcm9wcy5hdXRvcGxheSAmJiBfdGhpcy5hdXRvUGxheShcInVwZGF0ZVwiKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMubGF6eUxvYWQgPT09IFwicHJvZ3Jlc3NpdmVcIikge1xuICAgICAgICBfdGhpcy5sYXp5TG9hZFRpbWVyID0gc2V0SW50ZXJ2YWwoX3RoaXMucHJvZ3Jlc3NpdmVMYXp5TG9hZCwgMTAwMCk7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnJvID0gbmV3IF9yZXNpemVPYnNlcnZlclBvbHlmaWxsLmRlZmF1bHQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMuc3RhdGUuYW5pbWF0aW5nKSB7XG4gICAgICAgICAgX3RoaXMub25XaW5kb3dSZXNpemVkKGZhbHNlKTsgLy8gZG9uJ3Qgc2V0IHRyYWNrU3R5bGUgaGVuY2UgZG9uJ3QgYnJlYWsgYW5pbWF0aW9uXG5cblxuICAgICAgICAgIF90aGlzLmNhbGxiYWNrVGltZXJzLnB1c2goc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMub25XaW5kb3dSZXNpemVkKCk7XG4gICAgICAgICAgfSwgX3RoaXMucHJvcHMuc3BlZWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5vbldpbmRvd1Jlc2l6ZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIF90aGlzLnJvLm9ic2VydmUoX3RoaXMubGlzdCk7XG5cbiAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5zbGljay1zbGlkZVwiKSwgZnVuY3Rpb24gKHNsaWRlKSB7XG4gICAgICAgIHNsaWRlLm9uZm9jdXMgPSBfdGhpcy5wcm9wcy5wYXVzZU9uRm9jdXMgPyBfdGhpcy5vblNsaWRlRm9jdXMgOiBudWxsO1xuICAgICAgICBzbGlkZS5vbmJsdXIgPSBfdGhpcy5wcm9wcy5wYXVzZU9uRm9jdXMgPyBfdGhpcy5vblNsaWRlQmx1ciA6IG51bGw7XG4gICAgICB9KTsgLy8gVG8gc3VwcG9ydCBzZXJ2ZXItc2lkZSByZW5kZXJpbmdcblxuICAgICAgaWYgKCF3aW5kb3cpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgX3RoaXMub25XaW5kb3dSZXNpemVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5hdHRhY2hFdmVudChcIm9ucmVzaXplXCIsIF90aGlzLm9uV2luZG93UmVzaXplZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiY29tcG9uZW50V2lsbFVubW91bnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzLmFuaW1hdGlvbkVuZENhbGxiYWNrKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChfdGhpcy5hbmltYXRpb25FbmRDYWxsYmFjayk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfdGhpcy5sYXp5TG9hZFRpbWVyKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoX3RoaXMubGF6eUxvYWRUaW1lcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChfdGhpcy5jYWxsYmFja1RpbWVycy5sZW5ndGgpIHtcbiAgICAgICAgX3RoaXMuY2FsbGJhY2tUaW1lcnMuZm9yRWFjaChmdW5jdGlvbiAodGltZXIpIHtcbiAgICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgX3RoaXMuY2FsbGJhY2tUaW1lcnMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIF90aGlzLm9uV2luZG93UmVzaXplZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuZGV0YWNoRXZlbnQoXCJvbnJlc2l6ZVwiLCBfdGhpcy5vbldpbmRvd1Jlc2l6ZWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoX3RoaXMuYXV0b3BsYXlUaW1lcikge1xuICAgICAgICBjbGVhckludGVydmFsKF90aGlzLmF1dG9wbGF5VGltZXIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNcIiwgZnVuY3Rpb24gKG5leHRQcm9wcykge1xuICAgICAgdmFyIHNwZWMgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgbGlzdFJlZjogX3RoaXMubGlzdCxcbiAgICAgICAgdHJhY2tSZWY6IF90aGlzLnRyYWNrXG4gICAgICB9LCBuZXh0UHJvcHMsIF90aGlzLnN0YXRlKTtcblxuICAgICAgdmFyIHNldFRyYWNrU3R5bGUgPSBmYWxzZTtcblxuICAgICAgdmFyIF9hcnIgPSBPYmplY3Qua2V5cyhfdGhpcy5wcm9wcyk7XG5cbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBfYXJyLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIga2V5ID0gX2FycltfaV07XG5cbiAgICAgICAgaWYgKCFuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIHNldFRyYWNrU3R5bGUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF90eXBlb2YobmV4dFByb3BzW2tleV0pID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBuZXh0UHJvcHNba2V5XSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dFByb3BzW2tleV0gIT09IF90aGlzLnByb3BzW2tleV0pIHtcbiAgICAgICAgICBzZXRUcmFja1N0eWxlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBfdGhpcy51cGRhdGVTdGF0ZShzcGVjLCBzZXRUcmFja1N0eWxlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGUgPj0gX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4uY291bnQobmV4dFByb3BzLmNoaWxkcmVuKSkge1xuICAgICAgICAgIF90aGlzLmNoYW5nZVNsaWRlKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiaW5kZXhcIixcbiAgICAgICAgICAgIGluZGV4OiBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5jb3VudChuZXh0UHJvcHMuY2hpbGRyZW4pIC0gbmV4dFByb3BzLnNsaWRlc1RvU2hvdyxcbiAgICAgICAgICAgIGN1cnJlbnRTbGlkZTogX3RoaXMuc3RhdGUuY3VycmVudFNsaWRlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dFByb3BzLmF1dG9wbGF5KSB7XG4gICAgICAgICAgX3RoaXMuYXV0b1BsYXkoXCJ1cGRhdGVcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMucGF1c2UoXCJwYXVzZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImNvbXBvbmVudERpZFVwZGF0ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5jaGVja0ltYWdlc0xvYWQoKTtcblxuICAgICAgX3RoaXMucHJvcHMub25SZUluaXQgJiYgX3RoaXMucHJvcHMub25SZUluaXQoKTtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLmxhenlMb2FkKSB7XG4gICAgICAgIHZhciBzbGlkZXNUb0xvYWQgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0T25EZW1hbmRMYXp5U2xpZGVzKShfb2JqZWN0U3ByZWFkKHt9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUpKTtcblxuICAgICAgICBpZiAoc2xpZGVzVG9Mb2FkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZShmdW5jdGlvbiAocHJldlN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBsYXp5TG9hZGVkTGlzdDogcHJldlN0YXRlLmxhenlMb2FkZWRMaXN0LmNvbmNhdChzbGlkZXNUb0xvYWQpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKF90aGlzLnByb3BzLm9uTGF6eUxvYWQpIHtcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uTGF6eUxvYWQoc2xpZGVzVG9Mb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gLy8gaWYgKHRoaXMucHJvcHMub25MYXp5TG9hZCkge1xuICAgICAgLy8gICB0aGlzLnByb3BzLm9uTGF6eUxvYWQoW2xlZnRNb3N0U2xpZGVdKVxuICAgICAgLy8gfVxuXG5cbiAgICAgIF90aGlzLmFkYXB0SGVpZ2h0KCk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwib25XaW5kb3dSZXNpemVkXCIsIGZ1bmN0aW9uIChzZXRUcmFja1N0eWxlKSB7XG4gICAgICBpZiAoX3RoaXMuZGVib3VuY2VkUmVzaXplKSBfdGhpcy5kZWJvdW5jZWRSZXNpemUuY2FuY2VsKCk7XG4gICAgICBfdGhpcy5kZWJvdW5jZWRSZXNpemUgPSAoMCwgX2xvZGFzaC5kZWZhdWx0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5yZXNpemVXaW5kb3coc2V0VHJhY2tTdHlsZSk7XG4gICAgICB9LCA1MCk7XG5cbiAgICAgIF90aGlzLmRlYm91bmNlZFJlc2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInJlc2l6ZVdpbmRvd1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc2V0VHJhY2tTdHlsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcbiAgICAgIGlmICghX3JlYWN0RG9tLmRlZmF1bHQuZmluZERPTU5vZGUoX3RoaXMudHJhY2spKSByZXR1cm47XG5cbiAgICAgIHZhciBzcGVjID0gX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGxpc3RSZWY6IF90aGlzLmxpc3QsXG4gICAgICAgIHRyYWNrUmVmOiBfdGhpcy50cmFja1xuICAgICAgfSwgX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlKTtcblxuICAgICAgX3RoaXMudXBkYXRlU3RhdGUoc3BlYywgc2V0VHJhY2tTdHlsZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuYXV0b3BsYXkpIF90aGlzLmF1dG9QbGF5KFwidXBkYXRlXCIpO2Vsc2UgX3RoaXMucGF1c2UoXCJwYXVzZWRcIik7XG4gICAgICB9KTsgLy8gYW5pbWF0aW5nIHN0YXRlIHNob3VsZCBiZSBjbGVhcmVkIHdoaWxlIHJlc2l6aW5nLCBvdGhlcndpc2UgYXV0b3BsYXkgc3RvcHMgd29ya2luZ1xuXG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgYW5pbWF0aW5nOiBmYWxzZVxuICAgICAgfSk7XG5cbiAgICAgIGNsZWFyVGltZW91dChfdGhpcy5hbmltYXRpb25FbmRDYWxsYmFjayk7XG4gICAgICBkZWxldGUgX3RoaXMuYW5pbWF0aW9uRW5kQ2FsbGJhY2s7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwidXBkYXRlU3RhdGVcIiwgZnVuY3Rpb24gKHNwZWMsIHNldFRyYWNrU3R5bGUsIGNhbGxiYWNrKSB7XG4gICAgICB2YXIgdXBkYXRlZFN0YXRlID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmluaXRpYWxpemVkU3RhdGUpKHNwZWMpO1xuICAgICAgc3BlYyA9IF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHVwZGF0ZWRTdGF0ZSwge1xuICAgICAgICBzbGlkZUluZGV4OiB1cGRhdGVkU3RhdGUuY3VycmVudFNsaWRlXG4gICAgICB9KTtcbiAgICAgIHZhciB0YXJnZXRMZWZ0ID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmdldFRyYWNrTGVmdCkoc3BlYyk7XG4gICAgICBzcGVjID0gX29iamVjdFNwcmVhZCh7fSwgc3BlYywge1xuICAgICAgICBsZWZ0OiB0YXJnZXRMZWZ0XG4gICAgICB9KTtcbiAgICAgIHZhciB0cmFja1N0eWxlID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmdldFRyYWNrQ1NTKShzcGVjKTtcblxuICAgICAgaWYgKHNldFRyYWNrU3R5bGUgfHwgX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4uY291bnQoX3RoaXMucHJvcHMuY2hpbGRyZW4pICE9PSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5jb3VudChzcGVjLmNoaWxkcmVuKSkge1xuICAgICAgICB1cGRhdGVkU3RhdGVbXCJ0cmFja1N0eWxlXCJdID0gdHJhY2tTdHlsZTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuc2V0U3RhdGUodXBkYXRlZFN0YXRlLCBjYWxsYmFjayk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwic3NySW5pdFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMucHJvcHMudmFyaWFibGVXaWR0aCkge1xuICAgICAgICB2YXIgX3RyYWNrV2lkdGggPSAwLFxuICAgICAgICAgICAgX3RyYWNrTGVmdCA9IDA7XG4gICAgICAgIHZhciBjaGlsZHJlbldpZHRocyA9IFtdO1xuICAgICAgICB2YXIgcHJlQ2xvbmVzID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmdldFByZUNsb25lcykoX29iamVjdFNwcmVhZCh7fSwgX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLCB7XG4gICAgICAgICAgc2xpZGVDb3VudDogX3RoaXMucHJvcHMuY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgIH0pKTtcbiAgICAgICAgdmFyIHBvc3RDbG9uZXMgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0UG9zdENsb25lcykoX29iamVjdFNwcmVhZCh7fSwgX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLCB7XG4gICAgICAgICAgc2xpZGVDb3VudDogX3RoaXMucHJvcHMuY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgIH0pKTtcblxuICAgICAgICBfdGhpcy5wcm9wcy5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIGNoaWxkcmVuV2lkdGhzLnB1c2goY2hpbGQucHJvcHMuc3R5bGUud2lkdGgpO1xuICAgICAgICAgIF90cmFja1dpZHRoICs9IGNoaWxkLnByb3BzLnN0eWxlLndpZHRoO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZUNsb25lczsgaSsrKSB7XG4gICAgICAgICAgX3RyYWNrTGVmdCArPSBjaGlsZHJlbldpZHRoc1tjaGlsZHJlbldpZHRocy5sZW5ndGggLSAxIC0gaV07XG4gICAgICAgICAgX3RyYWNrV2lkdGggKz0gY2hpbGRyZW5XaWR0aHNbY2hpbGRyZW5XaWR0aHMubGVuZ3RoIC0gMSAtIGldO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgcG9zdENsb25lczsgX2kyKyspIHtcbiAgICAgICAgICBfdHJhY2tXaWR0aCArPSBjaGlsZHJlbldpZHRoc1tfaTJdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgX3RoaXMuc3RhdGUuY3VycmVudFNsaWRlOyBfaTMrKykge1xuICAgICAgICAgIF90cmFja0xlZnQgKz0gY2hpbGRyZW5XaWR0aHNbX2kzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfdHJhY2tTdHlsZSA9IHtcbiAgICAgICAgICB3aWR0aDogX3RyYWNrV2lkdGggKyBcInB4XCIsXG4gICAgICAgICAgbGVmdDogLV90cmFja0xlZnQgKyBcInB4XCJcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoX3RoaXMucHJvcHMuY2VudGVyTW9kZSkge1xuICAgICAgICAgIHZhciBjdXJyZW50V2lkdGggPSBcIlwiLmNvbmNhdChjaGlsZHJlbldpZHRoc1tfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGVdLCBcInB4XCIpO1xuICAgICAgICAgIF90cmFja1N0eWxlLmxlZnQgPSBcImNhbGMoXCIuY29uY2F0KF90cmFja1N0eWxlLmxlZnQsIFwiICsgKDEwMCUgLSBcIikuY29uY2F0KGN1cnJlbnRXaWR0aCwgXCIpIC8gMiApIFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICB0cmFja1N0eWxlOiBfdHJhY2tTdHlsZVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBjaGlsZHJlbkNvdW50ID0gX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4uY291bnQoX3RoaXMucHJvcHMuY2hpbGRyZW4pO1xuXG4gICAgICB2YXIgc3BlYyA9IF9vYmplY3RTcHJlYWQoe30sIF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZSwge1xuICAgICAgICBzbGlkZUNvdW50OiBjaGlsZHJlbkNvdW50XG4gICAgICB9KTtcblxuICAgICAgdmFyIHNsaWRlQ291bnQgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0UHJlQ2xvbmVzKShzcGVjKSArICgwLCBfaW5uZXJTbGlkZXJVdGlscy5nZXRQb3N0Q2xvbmVzKShzcGVjKSArIGNoaWxkcmVuQ291bnQ7XG4gICAgICB2YXIgdHJhY2tXaWR0aCA9IDEwMCAvIF90aGlzLnByb3BzLnNsaWRlc1RvU2hvdyAqIHNsaWRlQ291bnQ7XG4gICAgICB2YXIgc2xpZGVXaWR0aCA9IDEwMCAvIHNsaWRlQ291bnQ7XG4gICAgICB2YXIgdHJhY2tMZWZ0ID0gLXNsaWRlV2lkdGggKiAoKDAsIF9pbm5lclNsaWRlclV0aWxzLmdldFByZUNsb25lcykoc3BlYykgKyBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGUpICogdHJhY2tXaWR0aCAvIDEwMDtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLmNlbnRlck1vZGUpIHtcbiAgICAgICAgdHJhY2tMZWZ0ICs9ICgxMDAgLSBzbGlkZVdpZHRoICogdHJhY2tXaWR0aCAvIDEwMCkgLyAyO1xuICAgICAgfVxuXG4gICAgICB2YXIgdHJhY2tTdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IHRyYWNrV2lkdGggKyBcIiVcIixcbiAgICAgICAgbGVmdDogdHJhY2tMZWZ0ICsgXCIlXCJcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2xpZGVXaWR0aDogc2xpZGVXaWR0aCArIFwiJVwiLFxuICAgICAgICB0cmFja1N0eWxlOiB0cmFja1N0eWxlXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJjaGVja0ltYWdlc0xvYWRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGltYWdlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuc2xpY2stc2xpZGUgaW1nXCIpO1xuICAgICAgdmFyIGltYWdlc0NvdW50ID0gaW1hZ2VzLmxlbmd0aCxcbiAgICAgICAgICBsb2FkZWRDb3VudCA9IDA7XG4gICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGltYWdlcywgZnVuY3Rpb24gKGltYWdlKSB7XG4gICAgICAgIHZhciBoYW5kbGVyID0gZnVuY3Rpb24gaGFuZGxlcigpIHtcbiAgICAgICAgICByZXR1cm4gKytsb2FkZWRDb3VudCAmJiBsb2FkZWRDb3VudCA+PSBpbWFnZXNDb3VudCAmJiBfdGhpcy5vbldpbmRvd1Jlc2l6ZWQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIWltYWdlLm9uY2xpY2spIHtcbiAgICAgICAgICBpbWFnZS5vbmNsaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGltYWdlLnBhcmVudE5vZGUuZm9jdXMoKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBwcmV2Q2xpY2tIYW5kbGVyID0gaW1hZ2Uub25jbGljaztcblxuICAgICAgICAgIGltYWdlLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwcmV2Q2xpY2tIYW5kbGVyKCk7XG4gICAgICAgICAgICBpbWFnZS5wYXJlbnROb2RlLmZvY3VzKCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaW1hZ2Uub25sb2FkKSB7XG4gICAgICAgICAgaWYgKF90aGlzLnByb3BzLmxhenlMb2FkKSB7XG4gICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIF90aGlzLmFkYXB0SGVpZ2h0KCk7XG5cbiAgICAgICAgICAgICAgX3RoaXMuY2FsbGJhY2tUaW1lcnMucHVzaChzZXRUaW1lb3V0KF90aGlzLm9uV2luZG93UmVzaXplZCwgX3RoaXMucHJvcHMuc3BlZWQpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9IGhhbmRsZXI7XG5cbiAgICAgICAgICAgIGltYWdlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25MYXp5TG9hZEVycm9yICYmIF90aGlzLnByb3BzLm9uTGF6eUxvYWRFcnJvcigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInByb2dyZXNzaXZlTGF6eUxvYWRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNsaWRlc1RvTG9hZCA9IFtdO1xuXG4gICAgICB2YXIgc3BlYyA9IF9vYmplY3RTcHJlYWQoe30sIF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZSk7XG5cbiAgICAgIGZvciAodmFyIGluZGV4ID0gX3RoaXMuc3RhdGUuY3VycmVudFNsaWRlOyBpbmRleCA8IF90aGlzLnN0YXRlLnNsaWRlQ291bnQgKyAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0UG9zdENsb25lcykoc3BlYyk7IGluZGV4KyspIHtcbiAgICAgICAgaWYgKF90aGlzLnN0YXRlLmxhenlMb2FkZWRMaXN0LmluZGV4T2YoaW5kZXgpIDwgMCkge1xuICAgICAgICAgIHNsaWRlc1RvTG9hZC5wdXNoKGluZGV4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBfaW5kZXggPSBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGUgLSAxOyBfaW5kZXggPj0gLSgwLCBfaW5uZXJTbGlkZXJVdGlscy5nZXRQcmVDbG9uZXMpKHNwZWMpOyBfaW5kZXgtLSkge1xuICAgICAgICBpZiAoX3RoaXMuc3RhdGUubGF6eUxvYWRlZExpc3QuaW5kZXhPZihfaW5kZXgpIDwgMCkge1xuICAgICAgICAgIHNsaWRlc1RvTG9hZC5wdXNoKF9pbmRleCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNsaWRlc1RvTG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsYXp5TG9hZGVkTGlzdDogc3RhdGUubGF6eUxvYWRlZExpc3QuY29uY2F0KHNsaWRlc1RvTG9hZClcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoX3RoaXMucHJvcHMub25MYXp5TG9hZCkge1xuICAgICAgICAgIF90aGlzLnByb3BzLm9uTGF6eUxvYWQoc2xpZGVzVG9Mb2FkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKF90aGlzLmxhenlMb2FkVGltZXIpIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKF90aGlzLmxhenlMb2FkVGltZXIpO1xuICAgICAgICAgIGRlbGV0ZSBfdGhpcy5sYXp5TG9hZFRpbWVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwic2xpZGVIYW5kbGVyXCIsIGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgdmFyIGRvbnRBbmltYXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGFzTmF2Rm9yID0gX3RoaXMkcHJvcHMuYXNOYXZGb3IsXG4gICAgICAgICAgYmVmb3JlQ2hhbmdlID0gX3RoaXMkcHJvcHMuYmVmb3JlQ2hhbmdlLFxuICAgICAgICAgIG9uTGF6eUxvYWQgPSBfdGhpcyRwcm9wcy5vbkxhenlMb2FkLFxuICAgICAgICAgIHNwZWVkID0gX3RoaXMkcHJvcHMuc3BlZWQsXG4gICAgICAgICAgYWZ0ZXJDaGFuZ2UgPSBfdGhpcyRwcm9wcy5hZnRlckNoYW5nZTsgLy8gY2FwdHVyZSBjdXJyZW50c2xpZGUgYmVmb3JlIHN0YXRlIGlzIHVwZGF0ZWRcblxuICAgICAgdmFyIGN1cnJlbnRTbGlkZSA9IF90aGlzLnN0YXRlLmN1cnJlbnRTbGlkZTtcblxuICAgICAgdmFyIF9zbGlkZUhhbmRsZXIgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuc2xpZGVIYW5kbGVyKShfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICB9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUsIHtcbiAgICAgICAgdHJhY2tSZWY6IF90aGlzLnRyYWNrLFxuICAgICAgICB1c2VDU1M6IF90aGlzLnByb3BzLnVzZUNTUyAmJiAhZG9udEFuaW1hdGVcbiAgICAgIH0pKSxcbiAgICAgICAgICBzdGF0ZSA9IF9zbGlkZUhhbmRsZXIuc3RhdGUsXG4gICAgICAgICAgbmV4dFN0YXRlID0gX3NsaWRlSGFuZGxlci5uZXh0U3RhdGU7XG5cbiAgICAgIGlmICghc3RhdGUpIHJldHVybjtcbiAgICAgIGJlZm9yZUNoYW5nZSAmJiBiZWZvcmVDaGFuZ2UoY3VycmVudFNsaWRlLCBzdGF0ZS5jdXJyZW50U2xpZGUpO1xuICAgICAgdmFyIHNsaWRlc1RvTG9hZCA9IHN0YXRlLmxhenlMb2FkZWRMaXN0LmZpbHRlcihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnN0YXRlLmxhenlMb2FkZWRMaXN0LmluZGV4T2YodmFsdWUpIDwgMDtcbiAgICAgIH0pO1xuICAgICAgb25MYXp5TG9hZCAmJiBzbGlkZXNUb0xvYWQubGVuZ3RoID4gMCAmJiBvbkxhenlMb2FkKHNsaWRlc1RvTG9hZCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHN0YXRlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzTmF2Rm9yICYmIGFzTmF2Rm9yLmlubmVyU2xpZGVyLnN0YXRlLmN1cnJlbnRTbGlkZSAhPT0gX3RoaXMuc3RhdGUuY3VycmVudFNsaWRlICYmIGFzTmF2Rm9yLmlubmVyU2xpZGVyLnNsaWRlSGFuZGxlcihpbmRleCk7XG4gICAgICAgIGlmICghbmV4dFN0YXRlKSByZXR1cm47XG4gICAgICAgIF90aGlzLmFuaW1hdGlvbkVuZENhbGxiYWNrID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGFuaW1hdGluZyA9IG5leHRTdGF0ZS5hbmltYXRpbmcsXG4gICAgICAgICAgICAgIGZpcnN0QmF0Y2ggPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMobmV4dFN0YXRlLCBbXCJhbmltYXRpbmdcIl0pO1xuXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoZmlyc3RCYXRjaCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuY2FsbGJhY2tUaW1lcnMucHVzaChzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBhbmltYXRpbmc6IGFuaW1hdGluZ1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDEwKSk7XG5cbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlICYmIGFmdGVyQ2hhbmdlKHN0YXRlLmN1cnJlbnRTbGlkZSk7XG4gICAgICAgICAgICBkZWxldGUgX3RoaXMuYW5pbWF0aW9uRW5kQ2FsbGJhY2s7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIHNwZWVkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImNoYW5nZVNsaWRlXCIsIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICB2YXIgZG9udEFuaW1hdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuXG4gICAgICB2YXIgc3BlYyA9IF9vYmplY3RTcHJlYWQoe30sIF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZSk7XG5cbiAgICAgIHZhciB0YXJnZXRTbGlkZSA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5jaGFuZ2VTbGlkZSkoc3BlYywgb3B0aW9ucyk7XG4gICAgICBpZiAodGFyZ2V0U2xpZGUgIT09IDAgJiYgIXRhcmdldFNsaWRlKSByZXR1cm47XG5cbiAgICAgIGlmIChkb250QW5pbWF0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICBfdGhpcy5zbGlkZUhhbmRsZXIodGFyZ2V0U2xpZGUsIGRvbnRBbmltYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLnNsaWRlSGFuZGxlcih0YXJnZXRTbGlkZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiY2xpY2tIYW5kbGVyXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoX3RoaXMuY2xpY2thYmxlID09PSBmYWxzZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmNsaWNrYWJsZSA9IHRydWU7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwia2V5SGFuZGxlclwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIGRpciA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5rZXlIYW5kbGVyKShlLCBfdGhpcy5wcm9wcy5hY2Nlc3NpYmlsaXR5LCBfdGhpcy5wcm9wcy5ydGwpO1xuICAgICAgZGlyICE9PSBcIlwiICYmIF90aGlzLmNoYW5nZVNsaWRlKHtcbiAgICAgICAgbWVzc2FnZTogZGlyXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzZWxlY3RIYW5kbGVyXCIsIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICBfdGhpcy5jaGFuZ2VTbGlkZShvcHRpb25zKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJkaXNhYmxlQm9keVNjcm9sbFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcHJldmVudERlZmF1bHQgPSBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdChlKSB7XG4gICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDtcbiAgICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgICAgfTtcblxuICAgICAgd2luZG93Lm9udG91Y2htb3ZlID0gcHJldmVudERlZmF1bHQ7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiZW5hYmxlQm9keVNjcm9sbFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cub250b3VjaG1vdmUgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInN3aXBlU3RhcnRcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChfdGhpcy5wcm9wcy52ZXJ0aWNhbFN3aXBpbmcpIHtcbiAgICAgICAgX3RoaXMuZGlzYWJsZUJvZHlTY3JvbGwoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXRlID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLnN3aXBlU3RhcnQpKGUsIF90aGlzLnByb3BzLnN3aXBlLCBfdGhpcy5wcm9wcy5kcmFnZ2FibGUpO1xuICAgICAgc3RhdGUgIT09IFwiXCIgJiYgX3RoaXMuc2V0U3RhdGUoc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInN3aXBlTW92ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHN0YXRlID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLnN3aXBlTW92ZSkoZSwgX29iamVjdFNwcmVhZCh7fSwgX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLCB7XG4gICAgICAgIHRyYWNrUmVmOiBfdGhpcy50cmFjayxcbiAgICAgICAgbGlzdFJlZjogX3RoaXMubGlzdCxcbiAgICAgICAgc2xpZGVJbmRleDogX3RoaXMuc3RhdGUuY3VycmVudFNsaWRlXG4gICAgICB9KSk7XG4gICAgICBpZiAoIXN0YXRlKSByZXR1cm47XG5cbiAgICAgIGlmIChzdGF0ZVtcInN3aXBpbmdcIl0pIHtcbiAgICAgICAgX3RoaXMuY2xpY2thYmxlID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHN0YXRlKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzd2lwZUVuZFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHN0YXRlID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLnN3aXBlRW5kKShlLCBfb2JqZWN0U3ByZWFkKHt9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUsIHtcbiAgICAgICAgdHJhY2tSZWY6IF90aGlzLnRyYWNrLFxuICAgICAgICBsaXN0UmVmOiBfdGhpcy5saXN0LFxuICAgICAgICBzbGlkZUluZGV4OiBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGVcbiAgICAgIH0pKTtcbiAgICAgIGlmICghc3RhdGUpIHJldHVybjtcbiAgICAgIHZhciB0cmlnZ2VyU2xpZGVIYW5kbGVyID0gc3RhdGVbXCJ0cmlnZ2VyU2xpZGVIYW5kbGVyXCJdO1xuICAgICAgZGVsZXRlIHN0YXRlW1widHJpZ2dlclNsaWRlSGFuZGxlclwiXTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoc3RhdGUpO1xuXG4gICAgICBpZiAodHJpZ2dlclNsaWRlSGFuZGxlciA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgIF90aGlzLnNsaWRlSGFuZGxlcih0cmlnZ2VyU2xpZGVIYW5kbGVyKTtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLnZlcnRpY2FsU3dpcGluZykge1xuICAgICAgICBfdGhpcy5lbmFibGVCb2R5U2Nyb2xsKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwic2xpY2tQcmV2XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHRoaXMgYW5kIGZlbGxvdyBtZXRob2RzIGFyZSB3cmFwcGVkIGluIHNldFRpbWVvdXRcbiAgICAgIC8vIHRvIG1ha2Ugc3VyZSBpbml0aWFsaXplIHNldFN0YXRlIGhhcyBoYXBwZW5lZCBiZWZvcmVcbiAgICAgIC8vIGFueSBvZiBzdWNoIG1ldGhvZHMgYXJlIGNhbGxlZFxuICAgICAgX3RoaXMuY2FsbGJhY2tUaW1lcnMucHVzaChzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmNoYW5nZVNsaWRlKHtcbiAgICAgICAgICBtZXNzYWdlOiBcInByZXZpb3VzXCJcbiAgICAgICAgfSk7XG4gICAgICB9LCAwKSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwic2xpY2tOZXh0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmNhbGxiYWNrVGltZXJzLnB1c2goc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgbWVzc2FnZTogXCJuZXh0XCJcbiAgICAgICAgfSk7XG4gICAgICB9LCAwKSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwic2xpY2tHb1RvXCIsIGZ1bmN0aW9uIChzbGlkZSkge1xuICAgICAgdmFyIGRvbnRBbmltYXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcbiAgICAgIHNsaWRlID0gTnVtYmVyKHNsaWRlKTtcbiAgICAgIGlmIChpc05hTihzbGlkZSkpIHJldHVybiBcIlwiO1xuXG4gICAgICBfdGhpcy5jYWxsYmFja1RpbWVycy5wdXNoKHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMuY2hhbmdlU2xpZGUoe1xuICAgICAgICAgIG1lc3NhZ2U6IFwiaW5kZXhcIixcbiAgICAgICAgICBpbmRleDogc2xpZGUsXG4gICAgICAgICAgY3VycmVudFNsaWRlOiBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGVcbiAgICAgICAgfSwgZG9udEFuaW1hdGUpO1xuICAgICAgfSwgMCkpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInBsYXlcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG5leHRJbmRleDtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLnJ0bCkge1xuICAgICAgICBuZXh0SW5kZXggPSBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGUgLSBfdGhpcy5wcm9wcy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgoMCwgX2lubmVyU2xpZGVyVXRpbHMuY2FuR29OZXh0KShfb2JqZWN0U3ByZWFkKHt9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUpKSkge1xuICAgICAgICAgIG5leHRJbmRleCA9IF90aGlzLnN0YXRlLmN1cnJlbnRTbGlkZSArIF90aGlzLnByb3BzLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBfdGhpcy5zbGlkZUhhbmRsZXIobmV4dEluZGV4KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJhdXRvUGxheVwiLCBmdW5jdGlvbiAocGxheVR5cGUpIHtcbiAgICAgIGlmIChfdGhpcy5hdXRvcGxheVRpbWVyKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoX3RoaXMuYXV0b3BsYXlUaW1lcik7XG4gICAgICB9XG5cbiAgICAgIHZhciBhdXRvcGxheWluZyA9IF90aGlzLnN0YXRlLmF1dG9wbGF5aW5nO1xuXG4gICAgICBpZiAocGxheVR5cGUgPT09IFwidXBkYXRlXCIpIHtcbiAgICAgICAgaWYgKGF1dG9wbGF5aW5nID09PSBcImhvdmVyZWRcIiB8fCBhdXRvcGxheWluZyA9PT0gXCJmb2N1c2VkXCIgfHwgYXV0b3BsYXlpbmcgPT09IFwicGF1c2VkXCIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGxheVR5cGUgPT09IFwibGVhdmVcIikge1xuICAgICAgICBpZiAoYXV0b3BsYXlpbmcgPT09IFwicGF1c2VkXCIgfHwgYXV0b3BsYXlpbmcgPT09IFwiZm9jdXNlZFwiKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBsYXlUeXBlID09PSBcImJsdXJcIikge1xuICAgICAgICBpZiAoYXV0b3BsYXlpbmcgPT09IFwicGF1c2VkXCIgfHwgYXV0b3BsYXlpbmcgPT09IFwiaG92ZXJlZFwiKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmF1dG9wbGF5VGltZXIgPSBzZXRJbnRlcnZhbChfdGhpcy5wbGF5LCBfdGhpcy5wcm9wcy5hdXRvcGxheVNwZWVkICsgNTApO1xuXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGF1dG9wbGF5aW5nOiBcInBsYXlpbmdcIlxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwicGF1c2VcIiwgZnVuY3Rpb24gKHBhdXNlVHlwZSkge1xuICAgICAgaWYgKF90aGlzLmF1dG9wbGF5VGltZXIpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChfdGhpcy5hdXRvcGxheVRpbWVyKTtcbiAgICAgICAgX3RoaXMuYXV0b3BsYXlUaW1lciA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciBhdXRvcGxheWluZyA9IF90aGlzLnN0YXRlLmF1dG9wbGF5aW5nO1xuXG4gICAgICBpZiAocGF1c2VUeXBlID09PSBcInBhdXNlZFwiKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBhdXRvcGxheWluZzogXCJwYXVzZWRcIlxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAocGF1c2VUeXBlID09PSBcImZvY3VzZWRcIikge1xuICAgICAgICBpZiAoYXV0b3BsYXlpbmcgPT09IFwiaG92ZXJlZFwiIHx8IGF1dG9wbGF5aW5nID09PSBcInBsYXlpbmdcIikge1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGF1dG9wbGF5aW5nOiBcImZvY3VzZWRcIlxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwYXVzZVR5cGUgIGlzICdob3ZlcmVkJ1xuICAgICAgICBpZiAoYXV0b3BsYXlpbmcgPT09IFwicGxheWluZ1wiKSB7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgYXV0b3BsYXlpbmc6IFwiaG92ZXJlZFwiXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJvbkRvdHNPdmVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5hdXRvcGxheSAmJiBfdGhpcy5wYXVzZShcImhvdmVyZWRcIik7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwib25Eb3RzTGVhdmVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnByb3BzLmF1dG9wbGF5ICYmIF90aGlzLnN0YXRlLmF1dG9wbGF5aW5nID09PSBcImhvdmVyZWRcIiAmJiBfdGhpcy5hdXRvUGxheShcImxlYXZlXCIpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcIm9uVHJhY2tPdmVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5hdXRvcGxheSAmJiBfdGhpcy5wYXVzZShcImhvdmVyZWRcIik7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwib25UcmFja0xlYXZlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5hdXRvcGxheSAmJiBfdGhpcy5zdGF0ZS5hdXRvcGxheWluZyA9PT0gXCJob3ZlcmVkXCIgJiYgX3RoaXMuYXV0b1BsYXkoXCJsZWF2ZVwiKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJvblNsaWRlRm9jdXNcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnByb3BzLmF1dG9wbGF5ICYmIF90aGlzLnBhdXNlKFwiZm9jdXNlZFwiKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJvblNsaWRlQmx1clwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMuYXV0b3BsYXkgJiYgX3RoaXMuc3RhdGUuYXV0b3BsYXlpbmcgPT09IFwiZm9jdXNlZFwiICYmIF90aGlzLmF1dG9QbGF5KFwiYmx1clwiKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJyZW5kZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGNsYXNzTmFtZSA9ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShcInNsaWNrLXNsaWRlclwiLCBfdGhpcy5wcm9wcy5jbGFzc05hbWUsIHtcbiAgICAgICAgXCJzbGljay12ZXJ0aWNhbFwiOiBfdGhpcy5wcm9wcy52ZXJ0aWNhbCxcbiAgICAgICAgXCJzbGljay1pbml0aWFsaXplZFwiOiB0cnVlXG4gICAgICB9KTtcblxuICAgICAgdmFyIHNwZWMgPSBfb2JqZWN0U3ByZWFkKHt9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUpO1xuXG4gICAgICB2YXIgdHJhY2tQcm9wcyA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5leHRyYWN0T2JqZWN0KShzcGVjLCBbXCJmYWRlXCIsIFwiY3NzRWFzZVwiLCBcInNwZWVkXCIsIFwiaW5maW5pdGVcIiwgXCJjZW50ZXJNb2RlXCIsIFwiZm9jdXNPblNlbGVjdFwiLCBcImN1cnJlbnRTbGlkZVwiLCBcImxhenlMb2FkXCIsIFwibGF6eUxvYWRlZExpc3RcIiwgXCJydGxcIiwgXCJzbGlkZVdpZHRoXCIsIFwic2xpZGVIZWlnaHRcIiwgXCJsaXN0SGVpZ2h0XCIsIFwidmVydGljYWxcIiwgXCJzbGlkZXNUb1Nob3dcIiwgXCJzbGlkZXNUb1Njcm9sbFwiLCBcInNsaWRlQ291bnRcIiwgXCJ0cmFja1N0eWxlXCIsIFwidmFyaWFibGVXaWR0aFwiLCBcInVuc2xpY2tcIiwgXCJjZW50ZXJQYWRkaW5nXCJdKTtcbiAgICAgIHZhciBwYXVzZU9uSG92ZXIgPSBfdGhpcy5wcm9wcy5wYXVzZU9uSG92ZXI7XG4gICAgICB0cmFja1Byb3BzID0gX29iamVjdFNwcmVhZCh7fSwgdHJhY2tQcm9wcywge1xuICAgICAgICBvbk1vdXNlRW50ZXI6IHBhdXNlT25Ib3ZlciA/IF90aGlzLm9uVHJhY2tPdmVyIDogbnVsbCxcbiAgICAgICAgb25Nb3VzZUxlYXZlOiBwYXVzZU9uSG92ZXIgPyBfdGhpcy5vblRyYWNrTGVhdmUgOiBudWxsLFxuICAgICAgICBvbk1vdXNlT3ZlcjogcGF1c2VPbkhvdmVyID8gX3RoaXMub25UcmFja092ZXIgOiBudWxsLFxuICAgICAgICBmb2N1c09uU2VsZWN0OiBfdGhpcy5wcm9wcy5mb2N1c09uU2VsZWN0ID8gX3RoaXMuc2VsZWN0SGFuZGxlciA6IG51bGxcbiAgICAgIH0pO1xuICAgICAgdmFyIGRvdHM7XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5kb3RzID09PSB0cnVlICYmIF90aGlzLnN0YXRlLnNsaWRlQ291bnQgPj0gX3RoaXMucHJvcHMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgIHZhciBkb3RQcm9wcyA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5leHRyYWN0T2JqZWN0KShzcGVjLCBbXCJkb3RzQ2xhc3NcIiwgXCJzbGlkZUNvdW50XCIsIFwic2xpZGVzVG9TaG93XCIsIFwiY3VycmVudFNsaWRlXCIsIFwic2xpZGVzVG9TY3JvbGxcIiwgXCJjbGlja0hhbmRsZXJcIiwgXCJjaGlsZHJlblwiLCBcImN1c3RvbVBhZ2luZ1wiLCBcImluZmluaXRlXCIsIFwiYXBwZW5kRG90c1wiXSk7XG4gICAgICAgIHZhciBwYXVzZU9uRG90c0hvdmVyID0gX3RoaXMucHJvcHMucGF1c2VPbkRvdHNIb3ZlcjtcbiAgICAgICAgZG90UHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCBkb3RQcm9wcywge1xuICAgICAgICAgIGNsaWNrSGFuZGxlcjogX3RoaXMuY2hhbmdlU2xpZGUsXG4gICAgICAgICAgb25Nb3VzZUVudGVyOiBwYXVzZU9uRG90c0hvdmVyID8gX3RoaXMub25Eb3RzTGVhdmUgOiBudWxsLFxuICAgICAgICAgIG9uTW91c2VPdmVyOiBwYXVzZU9uRG90c0hvdmVyID8gX3RoaXMub25Eb3RzT3ZlciA6IG51bGwsXG4gICAgICAgICAgb25Nb3VzZUxlYXZlOiBwYXVzZU9uRG90c0hvdmVyID8gX3RoaXMub25Eb3RzTGVhdmUgOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgICBkb3RzID0gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfZG90cy5Eb3RzLCBkb3RQcm9wcyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcmV2QXJyb3csIG5leHRBcnJvdztcbiAgICAgIHZhciBhcnJvd1Byb3BzID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmV4dHJhY3RPYmplY3QpKHNwZWMsIFtcImluZmluaXRlXCIsIFwiY2VudGVyTW9kZVwiLCBcImN1cnJlbnRTbGlkZVwiLCBcInNsaWRlQ291bnRcIiwgXCJzbGlkZXNUb1Nob3dcIiwgXCJwcmV2QXJyb3dcIiwgXCJuZXh0QXJyb3dcIl0pO1xuICAgICAgYXJyb3dQcm9wcy5jbGlja0hhbmRsZXIgPSBfdGhpcy5jaGFuZ2VTbGlkZTtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLmFycm93cykge1xuICAgICAgICBwcmV2QXJyb3cgPSBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9hcnJvd3MuUHJldkFycm93LCBhcnJvd1Byb3BzKTtcbiAgICAgICAgbmV4dEFycm93ID0gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfYXJyb3dzLk5leHRBcnJvdywgYXJyb3dQcm9wcyk7XG4gICAgICB9XG5cbiAgICAgIHZhciB2ZXJ0aWNhbEhlaWdodFN0eWxlID0gbnVsbDtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLnZlcnRpY2FsKSB7XG4gICAgICAgIHZlcnRpY2FsSGVpZ2h0U3R5bGUgPSB7XG4gICAgICAgICAgaGVpZ2h0OiBfdGhpcy5zdGF0ZS5saXN0SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHZhciBjZW50ZXJQYWRkaW5nU3R5bGUgPSBudWxsO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChfdGhpcy5wcm9wcy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgY2VudGVyUGFkZGluZ1N0eWxlID0ge1xuICAgICAgICAgICAgcGFkZGluZzogXCIwcHggXCIgKyBfdGhpcy5wcm9wcy5jZW50ZXJQYWRkaW5nXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKF90aGlzLnByb3BzLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICBjZW50ZXJQYWRkaW5nU3R5bGUgPSB7XG4gICAgICAgICAgICBwYWRkaW5nOiBfdGhpcy5wcm9wcy5jZW50ZXJQYWRkaW5nICsgXCIgMHB4XCJcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBsaXN0U3R5bGUgPSBfb2JqZWN0U3ByZWFkKHt9LCB2ZXJ0aWNhbEhlaWdodFN0eWxlLCBjZW50ZXJQYWRkaW5nU3R5bGUpO1xuXG4gICAgICB2YXIgdG91Y2hNb3ZlID0gX3RoaXMucHJvcHMudG91Y2hNb3ZlO1xuICAgICAgdmFyIGxpc3RQcm9wcyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInNsaWNrLWxpc3RcIixcbiAgICAgICAgc3R5bGU6IGxpc3RTdHlsZSxcbiAgICAgICAgb25DbGljazogX3RoaXMuY2xpY2tIYW5kbGVyLFxuICAgICAgICBvbk1vdXNlRG93bjogdG91Y2hNb3ZlID8gX3RoaXMuc3dpcGVTdGFydCA6IG51bGwsXG4gICAgICAgIG9uTW91c2VNb3ZlOiBfdGhpcy5zdGF0ZS5kcmFnZ2luZyAmJiB0b3VjaE1vdmUgPyBfdGhpcy5zd2lwZU1vdmUgOiBudWxsLFxuICAgICAgICBvbk1vdXNlVXA6IHRvdWNoTW92ZSA/IF90aGlzLnN3aXBlRW5kIDogbnVsbCxcbiAgICAgICAgb25Nb3VzZUxlYXZlOiBfdGhpcy5zdGF0ZS5kcmFnZ2luZyAmJiB0b3VjaE1vdmUgPyBfdGhpcy5zd2lwZUVuZCA6IG51bGwsXG4gICAgICAgIG9uVG91Y2hTdGFydDogdG91Y2hNb3ZlID8gX3RoaXMuc3dpcGVTdGFydCA6IG51bGwsXG4gICAgICAgIG9uVG91Y2hNb3ZlOiBfdGhpcy5zdGF0ZS5kcmFnZ2luZyAmJiB0b3VjaE1vdmUgPyBfdGhpcy5zd2lwZU1vdmUgOiBudWxsLFxuICAgICAgICBvblRvdWNoRW5kOiB0b3VjaE1vdmUgPyBfdGhpcy5zd2lwZUVuZCA6IG51bGwsXG4gICAgICAgIG9uVG91Y2hDYW5jZWw6IF90aGlzLnN0YXRlLmRyYWdnaW5nICYmIHRvdWNoTW92ZSA/IF90aGlzLnN3aXBlRW5kIDogbnVsbCxcbiAgICAgICAgb25LZXlEb3duOiBfdGhpcy5wcm9wcy5hY2Nlc3NpYmlsaXR5ID8gX3RoaXMua2V5SGFuZGxlciA6IG51bGxcbiAgICAgIH07XG4gICAgICB2YXIgaW5uZXJTbGlkZXJQcm9wcyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIGRpcjogXCJsdHJcIlxuICAgICAgfTtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLnVuc2xpY2spIHtcbiAgICAgICAgbGlzdFByb3BzID0ge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJzbGljay1saXN0XCJcbiAgICAgICAgfTtcbiAgICAgICAgaW5uZXJTbGlkZXJQcm9wcyA9IHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCBpbm5lclNsaWRlclByb3BzLCAhX3RoaXMucHJvcHMudW5zbGljayA/IHByZXZBcnJvdyA6IFwiXCIsIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgICAgICByZWY6IF90aGlzLmxpc3RSZWZIYW5kbGVyXG4gICAgICB9LCBsaXN0UHJvcHMpLCBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF90cmFjay5UcmFjaywgX2V4dGVuZHMoe1xuICAgICAgICByZWY6IF90aGlzLnRyYWNrUmVmSGFuZGxlclxuICAgICAgfSwgdHJhY2tQcm9wcyksIF90aGlzLnByb3BzLmNoaWxkcmVuKSksICFfdGhpcy5wcm9wcy51bnNsaWNrID8gbmV4dEFycm93IDogXCJcIiwgIV90aGlzLnByb3BzLnVuc2xpY2sgPyBkb3RzIDogXCJcIik7XG4gICAgfSk7XG5cbiAgICBfdGhpcy5saXN0ID0gbnVsbDtcbiAgICBfdGhpcy50cmFjayA9IG51bGw7XG4gICAgX3RoaXMuc3RhdGUgPSBfb2JqZWN0U3ByZWFkKHt9LCBfaW5pdGlhbFN0YXRlLmRlZmF1bHQsIHtcbiAgICAgIGN1cnJlbnRTbGlkZTogX3RoaXMucHJvcHMuaW5pdGlhbFNsaWRlLFxuICAgICAgc2xpZGVDb3VudDogX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4uY291bnQoX3RoaXMucHJvcHMuY2hpbGRyZW4pXG4gICAgfSk7XG4gICAgX3RoaXMuY2FsbGJhY2tUaW1lcnMgPSBbXTtcbiAgICBfdGhpcy5jbGlja2FibGUgPSB0cnVlO1xuICAgIF90aGlzLmRlYm91bmNlZFJlc2l6ZSA9IG51bGw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIElubmVyU2xpZGVyO1xufShfcmVhY3QuZGVmYXVsdC5Db21wb25lbnQpO1xuXG5leHBvcnRzLklubmVyU2xpZGVyID0gSW5uZXJTbGlkZXI7IiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4vKlxuIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVFxuKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYWE9cmVxdWlyZShcInJlYWN0XCIpLG49cmVxdWlyZShcIm9iamVjdC1hc3NpZ25cIikscj1yZXF1aXJlKFwic2NoZWR1bGVyXCIpO2Z1bmN0aW9uIHUoYSl7Zm9yKHZhciBiPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrYSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tjXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrYStcIjsgdmlzaXQgXCIrYitcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9aWYoIWFhKXRocm93IEVycm9yKHUoMjI3KSk7XG5mdW5jdGlvbiBiYShhLGIsYyxkLGUsZixnLGgsayl7dmFyIGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXtiLmFwcGx5KGMsbCl9Y2F0Y2gobSl7dGhpcy5vbkVycm9yKG0pfX12YXIgZGE9ITEsZWE9bnVsbCxmYT0hMSxoYT1udWxsLGlhPXtvbkVycm9yOmZ1bmN0aW9uKGEpe2RhPSEwO2VhPWF9fTtmdW5jdGlvbiBqYShhLGIsYyxkLGUsZixnLGgsayl7ZGE9ITE7ZWE9bnVsbDtiYS5hcHBseShpYSxhcmd1bWVudHMpfWZ1bmN0aW9uIGthKGEsYixjLGQsZSxmLGcsaCxrKXtqYS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoZGEpe2lmKGRhKXt2YXIgbD1lYTtkYT0hMTtlYT1udWxsfWVsc2UgdGhyb3cgRXJyb3IodSgxOTgpKTtmYXx8KGZhPSEwLGhhPWwpfX12YXIgbGE9bnVsbCxtYT1udWxsLG5hPW51bGw7XG5mdW5jdGlvbiBvYShhLGIsYyl7dmFyIGQ9YS50eXBlfHxcInVua25vd24tZXZlbnRcIjthLmN1cnJlbnRUYXJnZXQ9bmEoYyk7a2EoZCxiLHZvaWQgMCxhKTthLmN1cnJlbnRUYXJnZXQ9bnVsbH12YXIgcGE9bnVsbCxxYT17fTtcbmZ1bmN0aW9uIHJhKCl7aWYocGEpZm9yKHZhciBhIGluIHFhKXt2YXIgYj1xYVthXSxjPXBhLmluZGV4T2YoYSk7aWYoISgtMTxjKSl0aHJvdyBFcnJvcih1KDk2LGEpKTtpZighc2FbY10pe2lmKCFiLmV4dHJhY3RFdmVudHMpdGhyb3cgRXJyb3IodSg5NyxhKSk7c2FbY109YjtjPWIuZXZlbnRUeXBlcztmb3IodmFyIGQgaW4gYyl7dmFyIGU9dm9pZCAwO3ZhciBmPWNbZF0sZz1iLGg9ZDtpZih0YS5oYXNPd25Qcm9wZXJ0eShoKSl0aHJvdyBFcnJvcih1KDk5LGgpKTt0YVtoXT1mO3ZhciBrPWYucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7aWYoayl7Zm9yKGUgaW4gaylrLmhhc093blByb3BlcnR5KGUpJiZ1YShrW2VdLGcsaCk7ZT0hMH1lbHNlIGYucmVnaXN0cmF0aW9uTmFtZT8odWEoZi5yZWdpc3RyYXRpb25OYW1lLGcsaCksZT0hMCk6ZT0hMTtpZighZSl0aHJvdyBFcnJvcih1KDk4LGQsYSkpO319fX1cbmZ1bmN0aW9uIHVhKGEsYixjKXtpZih2YVthXSl0aHJvdyBFcnJvcih1KDEwMCxhKSk7dmFbYV09Yjt3YVthXT1iLmV2ZW50VHlwZXNbY10uZGVwZW5kZW5jaWVzfXZhciBzYT1bXSx0YT17fSx2YT17fSx3YT17fTtmdW5jdGlvbiB4YShhKXt2YXIgYj0hMSxjO2ZvcihjIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIGQ9YVtjXTtpZighcWEuaGFzT3duUHJvcGVydHkoYyl8fHFhW2NdIT09ZCl7aWYocWFbY10pdGhyb3cgRXJyb3IodSgxMDIsYykpO3FhW2NdPWQ7Yj0hMH19YiYmcmEoKX12YXIgeWE9IShcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvd3x8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnR8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLHphPW51bGwsQWE9bnVsbCxCYT1udWxsO1xuZnVuY3Rpb24gQ2EoYSl7aWYoYT1tYShhKSl7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIHphKXRocm93IEVycm9yKHUoMjgwKSk7dmFyIGI9YS5zdGF0ZU5vZGU7YiYmKGI9bGEoYiksemEoYS5zdGF0ZU5vZGUsYS50eXBlLGIpKX19ZnVuY3Rpb24gRGEoYSl7QWE/QmE/QmEucHVzaChhKTpCYT1bYV06QWE9YX1mdW5jdGlvbiBFYSgpe2lmKEFhKXt2YXIgYT1BYSxiPUJhO0JhPUFhPW51bGw7Q2EoYSk7aWYoYilmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKUNhKGJbYV0pfX1mdW5jdGlvbiBGYShhLGIpe3JldHVybiBhKGIpfWZ1bmN0aW9uIEdhKGEsYixjLGQsZSl7cmV0dXJuIGEoYixjLGQsZSl9ZnVuY3Rpb24gSGEoKXt9dmFyIElhPUZhLEphPSExLEthPSExO2Z1bmN0aW9uIExhKCl7aWYobnVsbCE9PUFhfHxudWxsIT09QmEpSGEoKSxFYSgpfVxuZnVuY3Rpb24gTWEoYSxiLGMpe2lmKEthKXJldHVybiBhKGIsYyk7S2E9ITA7dHJ5e3JldHVybiBJYShhLGIsYyl9ZmluYWxseXtLYT0hMSxMYSgpfX12YXIgTmE9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLE9hPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksUGE9e30sUWE9e307XG5mdW5jdGlvbiBSYShhKXtpZihPYS5jYWxsKFFhLGEpKXJldHVybiEwO2lmKE9hLmNhbGwoUGEsYSkpcmV0dXJuITE7aWYoTmEudGVzdChhKSlyZXR1cm4gUWFbYV09ITA7UGFbYV09ITA7cmV0dXJuITF9ZnVuY3Rpb24gU2EoYSxiLGMsZCl7aWYobnVsbCE9PWMmJjA9PT1jLnR5cGUpcmV0dXJuITE7c3dpdGNoKHR5cGVvZiBiKXtjYXNlIFwiZnVuY3Rpb25cIjpjYXNlIFwic3ltYm9sXCI6cmV0dXJuITA7Y2FzZSBcImJvb2xlYW5cIjppZihkKXJldHVybiExO2lmKG51bGwhPT1jKXJldHVybiFjLmFjY2VwdHNCb29sZWFuczthPWEudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpO3JldHVyblwiZGF0YS1cIiE9PWEmJlwiYXJpYS1cIiE9PWE7ZGVmYXVsdDpyZXR1cm4hMX19XG5mdW5jdGlvbiBUYShhLGIsYyxkKXtpZihudWxsPT09Ynx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBifHxTYShhLGIsYyxkKSlyZXR1cm4hMDtpZihkKXJldHVybiExO2lmKG51bGwhPT1jKXN3aXRjaChjLnR5cGUpe2Nhc2UgMzpyZXR1cm4hYjtjYXNlIDQ6cmV0dXJuITE9PT1iO2Nhc2UgNTpyZXR1cm4gaXNOYU4oYik7Y2FzZSA2OnJldHVybiBpc05hTihiKXx8MT5ifXJldHVybiExfWZ1bmN0aW9uIHYoYSxiLGMsZCxlLGYpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT1ifHwzPT09Ynx8ND09PWI7dGhpcy5hdHRyaWJ1dGVOYW1lPWQ7dGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9ZTt0aGlzLm11c3RVc2VQcm9wZXJ0eT1jO3RoaXMucHJvcGVydHlOYW1lPWE7dGhpcy50eXBlPWI7dGhpcy5zYW5pdGl6ZVVSTD1mfXZhciBDPXt9O1xuXCJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXtDW2FdPW5ldyB2KGEsMCwhMSxhLG51bGwsITEpfSk7W1tcImFjY2VwdENoYXJzZXRcIixcImFjY2VwdC1jaGFyc2V0XCJdLFtcImNsYXNzTmFtZVwiLFwiY2xhc3NcIl0sW1wiaHRtbEZvclwiLFwiZm9yXCJdLFtcImh0dHBFcXVpdlwiLFwiaHR0cC1lcXVpdlwiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hWzBdO0NbYl09bmV3IHYoYiwxLCExLGFbMV0sbnVsbCwhMSl9KTtbXCJjb250ZW50RWRpdGFibGVcIixcImRyYWdnYWJsZVwiLFwic3BlbGxDaGVja1wiLFwidmFsdWVcIl0uZm9yRWFjaChmdW5jdGlvbihhKXtDW2FdPW5ldyB2KGEsMiwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSl9KTtcbltcImF1dG9SZXZlcnNlXCIsXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCIsXCJmb2N1c2FibGVcIixcInByZXNlcnZlQWxwaGFcIl0uZm9yRWFjaChmdW5jdGlvbihhKXtDW2FdPW5ldyB2KGEsMiwhMSxhLG51bGwsITEpfSk7XCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZm9ybU5vVmFsaWRhdGUgaGlkZGVuIGxvb3Agbm9Nb2R1bGUgbm9WYWxpZGF0ZSBvcGVuIHBsYXlzSW5saW5lIHJlYWRPbmx5IHJlcXVpcmVkIHJldmVyc2VkIHNjb3BlZCBzZWFtbGVzcyBpdGVtU2NvcGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXtDW2FdPW5ldyB2KGEsMywhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSl9KTtcbltcImNoZWNrZWRcIixcIm11bHRpcGxlXCIsXCJtdXRlZFwiLFwic2VsZWN0ZWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXtDW2FdPW5ldyB2KGEsMywhMCxhLG51bGwsITEpfSk7W1wiY2FwdHVyZVwiLFwiZG93bmxvYWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXtDW2FdPW5ldyB2KGEsNCwhMSxhLG51bGwsITEpfSk7W1wiY29sc1wiLFwicm93c1wiLFwic2l6ZVwiLFwic3BhblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSw2LCExLGEsbnVsbCwhMSl9KTtbXCJyb3dTcGFuXCIsXCJzdGFydFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSw1LCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExKX0pO3ZhciBVYT0vW1xcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIFZhKGEpe3JldHVybiBhWzFdLnRvVXBwZXJDYXNlKCl9XG5cImFjY2VudC1oZWlnaHQgYWxpZ25tZW50LWJhc2VsaW5lIGFyYWJpYy1mb3JtIGJhc2VsaW5lLXNoaWZ0IGNhcC1oZWlnaHQgY2xpcC1wYXRoIGNsaXAtcnVsZSBjb2xvci1pbnRlcnBvbGF0aW9uIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyBjb2xvci1wcm9maWxlIGNvbG9yLXJlbmRlcmluZyBkb21pbmFudC1iYXNlbGluZSBlbmFibGUtYmFja2dyb3VuZCBmaWxsLW9wYWNpdHkgZmlsbC1ydWxlIGZsb29kLWNvbG9yIGZsb29kLW9wYWNpdHkgZm9udC1mYW1pbHkgZm9udC1zaXplIGZvbnQtc2l6ZS1hZGp1c3QgZm9udC1zdHJldGNoIGZvbnQtc3R5bGUgZm9udC12YXJpYW50IGZvbnQtd2VpZ2h0IGdseXBoLW5hbWUgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCBnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCBob3Jpei1hZHYteCBob3Jpei1vcmlnaW4teCBpbWFnZS1yZW5kZXJpbmcgbGV0dGVyLXNwYWNpbmcgbGlnaHRpbmctY29sb3IgbWFya2VyLWVuZCBtYXJrZXItbWlkIG1hcmtlci1zdGFydCBvdmVybGluZS1wb3NpdGlvbiBvdmVybGluZS10aGlja25lc3MgcGFpbnQtb3JkZXIgcGFub3NlLTEgcG9pbnRlci1ldmVudHMgcmVuZGVyaW5nLWludGVudCBzaGFwZS1yZW5kZXJpbmcgc3RvcC1jb2xvciBzdG9wLW9wYWNpdHkgc3RyaWtldGhyb3VnaC1wb3NpdGlvbiBzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyBzdHJva2UtZGFzaGFycmF5IHN0cm9rZS1kYXNob2Zmc2V0IHN0cm9rZS1saW5lY2FwIHN0cm9rZS1saW5lam9pbiBzdHJva2UtbWl0ZXJsaW1pdCBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggdGV4dC1hbmNob3IgdGV4dC1kZWNvcmF0aW9uIHRleHQtcmVuZGVyaW5nIHVuZGVybGluZS1wb3NpdGlvbiB1bmRlcmxpbmUtdGhpY2tuZXNzIHVuaWNvZGUtYmlkaSB1bmljb2RlLXJhbmdlIHVuaXRzLXBlci1lbSB2LWFscGhhYmV0aWMgdi1oYW5naW5nIHYtaWRlb2dyYXBoaWMgdi1tYXRoZW1hdGljYWwgdmVjdG9yLWVmZmVjdCB2ZXJ0LWFkdi15IHZlcnQtb3JpZ2luLXggdmVydC1vcmlnaW4teSB3b3JkLXNwYWNpbmcgd3JpdGluZy1tb2RlIHhtbG5zOnhsaW5rIHgtaGVpZ2h0XCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKFVhLFxuVmEpO0NbYl09bmV3IHYoYiwxLCExLGEsbnVsbCwhMSl9KTtcInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShVYSxWYSk7Q1tiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMSl9KTtbXCJ4bWw6YmFzZVwiLFwieG1sOmxhbmdcIixcInhtbDpzcGFjZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShVYSxWYSk7Q1tiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLCExKX0pO1tcInRhYkluZGV4XCIsXCJjcm9zc09yaWdpblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExKX0pO1xuQy54bGlua0hyZWY9bmV3IHYoXCJ4bGlua0hyZWZcIiwxLCExLFwieGxpbms6aHJlZlwiLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCEwKTtbXCJzcmNcIixcImhyZWZcIixcImFjdGlvblwiLFwiZm9ybUFjdGlvblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCEwKX0pO3ZhciBXYT1hYS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtXYS5oYXNPd25Qcm9wZXJ0eShcIlJlYWN0Q3VycmVudERpc3BhdGNoZXJcIil8fChXYS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyPXtjdXJyZW50Om51bGx9KTtXYS5oYXNPd25Qcm9wZXJ0eShcIlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnXCIpfHwoV2EuUmVhY3RDdXJyZW50QmF0Y2hDb25maWc9e3N1c3BlbnNlOm51bGx9KTtcbmZ1bmN0aW9uIFhhKGEsYixjLGQpe3ZhciBlPUMuaGFzT3duUHJvcGVydHkoYik/Q1tiXTpudWxsO3ZhciBmPW51bGwhPT1lPzA9PT1lLnR5cGU6ZD8hMTohKDI8Yi5sZW5ndGgpfHxcIm9cIiE9PWJbMF0mJlwiT1wiIT09YlswXXx8XCJuXCIhPT1iWzFdJiZcIk5cIiE9PWJbMV0/ITE6ITA7Znx8KFRhKGIsYyxlLGQpJiYoYz1udWxsKSxkfHxudWxsPT09ZT9SYShiKSYmKG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOmEuc2V0QXR0cmlidXRlKGIsXCJcIitjKSk6ZS5tdXN0VXNlUHJvcGVydHk/YVtlLnByb3BlcnR5TmFtZV09bnVsbD09PWM/Mz09PWUudHlwZT8hMTpcIlwiOmM6KGI9ZS5hdHRyaWJ1dGVOYW1lLGQ9ZS5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGU9ZS50eXBlLGM9Mz09PWV8fDQ9PT1lJiYhMD09PWM/XCJcIjpcIlwiK2MsZD9hLnNldEF0dHJpYnV0ZU5TKGQsYixjKTphLnNldEF0dHJpYnV0ZShiLGMpKSkpfVxudmFyIFlhPS9eKC4qKVtcXFxcXFwvXS8sRT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLFphPUU/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsJGE9RT9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGFiPUU/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGJiPUU/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LGNiPUU/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGRiPUU/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGViPUU/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsZmI9RT9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLGdiPUU/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLGhiPUU/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLGliPUU/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6XG42MDEyMCxqYj1FP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LGtiPUU/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsbGI9RT9TeW1ib2wuZm9yKFwicmVhY3QuYmxvY2tcIik6NjAxMjEsbWI9XCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIG5iKGEpe2lmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT1tYiYmYVttYl18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH1mdW5jdGlvbiBvYihhKXtpZigtMT09PWEuX3N0YXR1cyl7YS5fc3RhdHVzPTA7dmFyIGI9YS5fY3RvcjtiPWIoKTthLl9yZXN1bHQ9YjtiLnRoZW4oZnVuY3Rpb24oYil7MD09PWEuX3N0YXR1cyYmKGI9Yi5kZWZhdWx0LGEuX3N0YXR1cz0xLGEuX3Jlc3VsdD1iKX0sZnVuY3Rpb24oYil7MD09PWEuX3N0YXR1cyYmKGEuX3N0YXR1cz0yLGEuX3Jlc3VsdD1iKX0pfX1cbmZ1bmN0aW9uIHBiKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGEuZGlzcGxheU5hbWV8fGEubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2UgYWI6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgJGE6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIGNiOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIGJiOnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgaGI6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgaWI6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIn1pZihcIm9iamVjdFwiPT09dHlwZW9mIGEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgZWI6cmV0dXJuXCJDb250ZXh0LkNvbnN1bWVyXCI7Y2FzZSBkYjpyZXR1cm5cIkNvbnRleHQuUHJvdmlkZXJcIjtjYXNlIGdiOnZhciBiPWEucmVuZGVyO2I9Yi5kaXNwbGF5TmFtZXx8Yi5uYW1lfHxcIlwiO3JldHVybiBhLmRpc3BsYXlOYW1lfHwoXCJcIiE9PWI/XCJGb3J3YXJkUmVmKFwiK2IrXCIpXCI6XG5cIkZvcndhcmRSZWZcIik7Y2FzZSBqYjpyZXR1cm4gcGIoYS50eXBlKTtjYXNlIGxiOnJldHVybiBwYihhLnJlbmRlcik7Y2FzZSBrYjppZihhPTE9PT1hLl9zdGF0dXM/YS5fcmVzdWx0Om51bGwpcmV0dXJuIHBiKGEpfXJldHVybiBudWxsfWZ1bmN0aW9uIHFiKGEpe3ZhciBiPVwiXCI7ZG97YTpzd2l0Y2goYS50YWcpe2Nhc2UgMzpjYXNlIDQ6Y2FzZSA2OmNhc2UgNzpjYXNlIDEwOmNhc2UgOTp2YXIgYz1cIlwiO2JyZWFrIGE7ZGVmYXVsdDp2YXIgZD1hLl9kZWJ1Z093bmVyLGU9YS5fZGVidWdTb3VyY2UsZj1wYihhLnR5cGUpO2M9bnVsbDtkJiYoYz1wYihkLnR5cGUpKTtkPWY7Zj1cIlwiO2U/Zj1cIiAoYXQgXCIrZS5maWxlTmFtZS5yZXBsYWNlKFlhLFwiXCIpK1wiOlwiK2UubGluZU51bWJlcitcIilcIjpjJiYoZj1cIiAoY3JlYXRlZCBieSBcIitjK1wiKVwiKTtjPVwiXFxuICAgIGluIFwiKyhkfHxcIlVua25vd25cIikrZn1iKz1jO2E9YS5yZXR1cm59d2hpbGUoYSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiByYihhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgXCJib29sZWFuXCI6Y2FzZSBcIm51bWJlclwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwic3RyaW5nXCI6Y2FzZSBcInVuZGVmaW5lZFwiOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuXCJcIn19ZnVuY3Rpb24gc2IoYSl7dmFyIGI9YS50eXBlO3JldHVybihhPWEubm9kZU5hbWUpJiZcImlucHV0XCI9PT1hLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1ifHxcInJhZGlvXCI9PT1iKX1cbmZ1bmN0aW9uIHRiKGEpe3ZhciBiPXNiKGEpP1wiY2hlY2tlZFwiOlwidmFsdWVcIixjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYiksZD1cIlwiK2FbYl07aWYoIWEuaGFzT3duUHJvcGVydHkoYikmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZ2V0JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5zZXQpe3ZhciBlPWMuZ2V0LGY9Yy5zZXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihhKXtkPVwiXCIrYTtmLmNhbGwodGhpcyxhKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtlbnVtZXJhYmxlOmMuZW51bWVyYWJsZX0pO3JldHVybntnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBkfSxzZXRWYWx1ZTpmdW5jdGlvbihhKXtkPVwiXCIrYX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7YS5fdmFsdWVUcmFja2VyPVxubnVsbDtkZWxldGUgYVtiXX19fX1mdW5jdGlvbiB4YihhKXthLl92YWx1ZVRyYWNrZXJ8fChhLl92YWx1ZVRyYWNrZXI9dGIoYSkpfWZ1bmN0aW9uIHliKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEuX3ZhbHVlVHJhY2tlcjtpZighYilyZXR1cm4hMDt2YXIgYz1iLmdldFZhbHVlKCk7dmFyIGQ9XCJcIjthJiYoZD1zYihhKT9hLmNoZWNrZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiOmEudmFsdWUpO2E9ZDtyZXR1cm4gYSE9PWM/KGIuc2V0VmFsdWUoYSksITApOiExfWZ1bmN0aW9uIHpiKGEsYil7dmFyIGM9Yi5jaGVja2VkO3JldHVybiBuKHt9LGIse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPWM/YzphLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1cbmZ1bmN0aW9uIEFiKGEsYil7dmFyIGM9bnVsbD09Yi5kZWZhdWx0VmFsdWU/XCJcIjpiLmRlZmF1bHRWYWx1ZSxkPW51bGwhPWIuY2hlY2tlZD9iLmNoZWNrZWQ6Yi5kZWZhdWx0Q2hlY2tlZDtjPXJiKG51bGwhPWIudmFsdWU/Yi52YWx1ZTpjKTthLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOmQsaW5pdGlhbFZhbHVlOmMsY29udHJvbGxlZDpcImNoZWNrYm94XCI9PT1iLnR5cGV8fFwicmFkaW9cIj09PWIudHlwZT9udWxsIT1iLmNoZWNrZWQ6bnVsbCE9Yi52YWx1ZX19ZnVuY3Rpb24gQmIoYSxiKXtiPWIuY2hlY2tlZDtudWxsIT1iJiZYYShhLFwiY2hlY2tlZFwiLGIsITEpfVxuZnVuY3Rpb24gQ2IoYSxiKXtCYihhLGIpO3ZhciBjPXJiKGIudmFsdWUpLGQ9Yi50eXBlO2lmKG51bGwhPWMpaWYoXCJudW1iZXJcIj09PWQpe2lmKDA9PT1jJiZcIlwiPT09YS52YWx1ZXx8YS52YWx1ZSE9YylhLnZhbHVlPVwiXCIrY31lbHNlIGEudmFsdWUhPT1cIlwiK2MmJihhLnZhbHVlPVwiXCIrYyk7ZWxzZSBpZihcInN1Ym1pdFwiPT09ZHx8XCJyZXNldFwiPT09ZCl7YS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtyZXR1cm59Yi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpP0RiKGEsYi50eXBlLGMpOmIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikmJkRiKGEsYi50eXBlLHJiKGIuZGVmYXVsdFZhbHVlKSk7bnVsbD09Yi5jaGVja2VkJiZudWxsIT1iLmRlZmF1bHRDaGVja2VkJiYoYS5kZWZhdWx0Q2hlY2tlZD0hIWIuZGVmYXVsdENoZWNrZWQpfVxuZnVuY3Rpb24gRWIoYSxiLGMpe2lmKGIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKXx8Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSl7dmFyIGQ9Yi50eXBlO2lmKCEoXCJzdWJtaXRcIiE9PWQmJlwicmVzZXRcIiE9PWR8fHZvaWQgMCE9PWIudmFsdWUmJm51bGwhPT1iLnZhbHVlKSlyZXR1cm47Yj1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7Y3x8Yj09PWEudmFsdWV8fChhLnZhbHVlPWIpO2EuZGVmYXVsdFZhbHVlPWJ9Yz1hLm5hbWU7XCJcIiE9PWMmJihhLm5hbWU9XCJcIik7YS5kZWZhdWx0Q2hlY2tlZD0hIWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZDtcIlwiIT09YyYmKGEubmFtZT1jKX1cbmZ1bmN0aW9uIERiKGEsYixjKXtpZihcIm51bWJlclwiIT09Ynx8YS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1hKW51bGw9PWM/YS5kZWZhdWx0VmFsdWU9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmEuZGVmYXVsdFZhbHVlIT09XCJcIitjJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitjKX1mdW5jdGlvbiBGYihhKXt2YXIgYj1cIlwiO2FhLkNoaWxkcmVuLmZvckVhY2goYSxmdW5jdGlvbihhKXtudWxsIT1hJiYoYis9YSl9KTtyZXR1cm4gYn1mdW5jdGlvbiBHYihhLGIpe2E9bih7Y2hpbGRyZW46dm9pZCAwfSxiKTtpZihiPUZiKGIuY2hpbGRyZW4pKWEuY2hpbGRyZW49YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIEhiKGEsYixjLGQpe2E9YS5vcHRpb25zO2lmKGIpe2I9e307Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspYltcIiRcIitjW2VdXT0hMDtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKWU9Yi5oYXNPd25Qcm9wZXJ0eShcIiRcIithW2NdLnZhbHVlKSxhW2NdLnNlbGVjdGVkIT09ZSYmKGFbY10uc2VsZWN0ZWQ9ZSksZSYmZCYmKGFbY10uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2M9XCJcIityYihjKTtiPW51bGw7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyl7aWYoYVtlXS52YWx1ZT09PWMpe2FbZV0uc2VsZWN0ZWQ9ITA7ZCYmKGFbZV0uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bnVsbCE9PWJ8fGFbZV0uZGlzYWJsZWR8fChiPWFbZV0pfW51bGwhPT1iJiYoYi5zZWxlY3RlZD0hMCl9fVxuZnVuY3Rpb24gSWIoYSxiKXtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXRocm93IEVycm9yKHUoOTEpKTtyZXR1cm4gbih7fSxiLHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjpcIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBKYihhLGIpe3ZhciBjPWIudmFsdWU7aWYobnVsbD09Yyl7Yz1iLmNoaWxkcmVuO2I9Yi5kZWZhdWx0VmFsdWU7aWYobnVsbCE9Yyl7aWYobnVsbCE9Yil0aHJvdyBFcnJvcih1KDkyKSk7aWYoQXJyYXkuaXNBcnJheShjKSl7aWYoISgxPj1jLmxlbmd0aCkpdGhyb3cgRXJyb3IodSg5MykpO2M9Y1swXX1iPWN9bnVsbD09YiYmKGI9XCJcIik7Yz1ifWEuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOnJiKGMpfX1cbmZ1bmN0aW9uIEtiKGEsYil7dmFyIGM9cmIoYi52YWx1ZSksZD1yYihiLmRlZmF1bHRWYWx1ZSk7bnVsbCE9YyYmKGM9XCJcIitjLGMhPT1hLnZhbHVlJiYoYS52YWx1ZT1jKSxudWxsPT1iLmRlZmF1bHRWYWx1ZSYmYS5kZWZhdWx0VmFsdWUhPT1jJiYoYS5kZWZhdWx0VmFsdWU9YykpO251bGwhPWQmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2QpfWZ1bmN0aW9uIExiKGEpe3ZhciBiPWEudGV4dENvbnRlbnQ7Yj09PWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJlwiXCIhPT1iJiZudWxsIT09YiYmKGEudmFsdWU9Yil9dmFyIE1iPXtodG1sOlwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiLG1hdGhtbDpcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIixzdmc6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifTtcbmZ1bmN0aW9uIE5iKGEpe3N3aXRjaChhKXtjYXNlIFwic3ZnXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO2Nhc2UgXCJtYXRoXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI7ZGVmYXVsdDpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIn19ZnVuY3Rpb24gT2IoYSxiKXtyZXR1cm4gbnVsbD09YXx8XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP05iKGIpOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj09PWEmJlwiZm9yZWlnbk9iamVjdFwiPT09Yj9cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjphfVxudmFyIFBiLFFiPWZ1bmN0aW9uKGEpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKGIsYyxkLGUpe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGEoYixjLGQsZSl9KX06YX0oZnVuY3Rpb24oYSxiKXtpZihhLm5hbWVzcGFjZVVSSSE9PU1iLnN2Z3x8XCJpbm5lckhUTUxcImluIGEpYS5pbm5lckhUTUw9YjtlbHNle1BiPVBifHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1BiLmlubmVySFRNTD1cIjxzdmc+XCIrYi52YWx1ZU9mKCkudG9TdHJpbmcoKStcIjwvc3ZnPlwiO2ZvcihiPVBiLmZpcnN0Q2hpbGQ7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQoYi5maXJzdENoaWxkKX19KTtcbmZ1bmN0aW9uIFJiKGEsYil7aWYoYil7dmFyIGM9YS5maXJzdENoaWxkO2lmKGMmJmM9PT1hLmxhc3RDaGlsZCYmMz09PWMubm9kZVR5cGUpe2Mubm9kZVZhbHVlPWI7cmV0dXJufX1hLnRleHRDb250ZW50PWJ9ZnVuY3Rpb24gU2IoYSxiKXt2YXIgYz17fTtjW2EudG9Mb3dlckNhc2UoKV09Yi50b0xvd2VyQ2FzZSgpO2NbXCJXZWJraXRcIithXT1cIndlYmtpdFwiK2I7Y1tcIk1velwiK2FdPVwibW96XCIrYjtyZXR1cm4gY312YXIgVGI9e2FuaW1hdGlvbmVuZDpTYihcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uRW5kXCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpTYihcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uSXRlcmF0aW9uXCIpLGFuaW1hdGlvbnN0YXJ0OlNiKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25TdGFydFwiKSx0cmFuc2l0aW9uZW5kOlNiKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvbkVuZFwiKX0sVWI9e30sVmI9e307XG55YSYmKFZiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJBbmltYXRpb25FdmVudFwiaW4gd2luZG93fHwoZGVsZXRlIFRiLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFRiLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIFRiLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksXCJUcmFuc2l0aW9uRXZlbnRcImluIHdpbmRvd3x8ZGVsZXRlIFRiLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7ZnVuY3Rpb24gV2IoYSl7aWYoVWJbYV0pcmV0dXJuIFViW2FdO2lmKCFUYlthXSlyZXR1cm4gYTt2YXIgYj1UYlthXSxjO2ZvcihjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSYmYyBpbiBWYilyZXR1cm4gVWJbYV09YltjXTtyZXR1cm4gYX1cbnZhciBYYj1XYihcImFuaW1hdGlvbmVuZFwiKSxZYj1XYihcImFuaW1hdGlvbml0ZXJhdGlvblwiKSxaYj1XYihcImFuaW1hdGlvbnN0YXJ0XCIpLCRiPVdiKFwidHJhbnNpdGlvbmVuZFwiKSxhYz1cImFib3J0IGNhbnBsYXkgY2FucGxheXRocm91Z2ggZHVyYXRpb25jaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgbG9hZGVkZGF0YSBsb2FkZWRtZXRhZGF0YSBsb2Fkc3RhcnQgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2Ugc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmdcIi5zcGxpdChcIiBcIiksYmM9bmV3IChcImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcCk7ZnVuY3Rpb24gY2MoYSl7dmFyIGI9YmMuZ2V0KGEpO3ZvaWQgMD09PWImJihiPW5ldyBNYXAsYmMuc2V0KGEsYikpO3JldHVybiBifVxuZnVuY3Rpb24gZGMoYSl7dmFyIGI9YSxjPWE7aWYoYS5hbHRlcm5hdGUpZm9yKDtiLnJldHVybjspYj1iLnJldHVybjtlbHNle2E9YjtkbyBiPWEsMCE9PShiLmVmZmVjdFRhZyYxMDI2KSYmKGM9Yi5yZXR1cm4pLGE9Yi5yZXR1cm47d2hpbGUoYSl9cmV0dXJuIDM9PT1iLnRhZz9jOm51bGx9ZnVuY3Rpb24gZWMoYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9YS5tZW1vaXplZFN0YXRlO251bGw9PT1iJiYoYT1hLmFsdGVybmF0ZSxudWxsIT09YSYmKGI9YS5tZW1vaXplZFN0YXRlKSk7aWYobnVsbCE9PWIpcmV0dXJuIGIuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBmYyhhKXtpZihkYyhhKSE9PWEpdGhyb3cgRXJyb3IodSgxODgpKTt9XG5mdW5jdGlvbiBnYyhhKXt2YXIgYj1hLmFsdGVybmF0ZTtpZighYil7Yj1kYyhhKTtpZihudWxsPT09Yil0aHJvdyBFcnJvcih1KDE4OCkpO3JldHVybiBiIT09YT9udWxsOmF9Zm9yKHZhciBjPWEsZD1iOzspe3ZhciBlPWMucmV0dXJuO2lmKG51bGw9PT1lKWJyZWFrO3ZhciBmPWUuYWx0ZXJuYXRlO2lmKG51bGw9PT1mKXtkPWUucmV0dXJuO2lmKG51bGwhPT1kKXtjPWQ7Y29udGludWV9YnJlYWt9aWYoZS5jaGlsZD09PWYuY2hpbGQpe2ZvcihmPWUuY2hpbGQ7Zjspe2lmKGY9PT1jKXJldHVybiBmYyhlKSxhO2lmKGY9PT1kKXJldHVybiBmYyhlKSxiO2Y9Zi5zaWJsaW5nfXRocm93IEVycm9yKHUoMTg4KSk7fWlmKGMucmV0dXJuIT09ZC5yZXR1cm4pYz1lLGQ9ZjtlbHNle2Zvcih2YXIgZz0hMSxoPWUuY2hpbGQ7aDspe2lmKGg9PT1jKXtnPSEwO2M9ZTtkPWY7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1lO2M9ZjticmVha31oPWguc2libGluZ31pZighZyl7Zm9yKGg9Zi5jaGlsZDtoOyl7aWYoaD09PVxuYyl7Zz0hMDtjPWY7ZD1lO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZjtjPWU7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpdGhyb3cgRXJyb3IodSgxODkpKTt9fWlmKGMuYWx0ZXJuYXRlIT09ZCl0aHJvdyBFcnJvcih1KDE5MCkpO31pZigzIT09Yy50YWcpdGhyb3cgRXJyb3IodSgxODgpKTtyZXR1cm4gYy5zdGF0ZU5vZGUuY3VycmVudD09PWM/YTpifWZ1bmN0aW9uIGhjKGEpe2E9Z2MoYSk7aWYoIWEpcmV0dXJuIG51bGw7Zm9yKHZhciBiPWE7Oyl7aWYoNT09PWIudGFnfHw2PT09Yi50YWcpcmV0dXJuIGI7aWYoYi5jaGlsZCliLmNoaWxkLnJldHVybj1iLGI9Yi5jaGlsZDtlbHNle2lmKGI9PT1hKWJyZWFrO2Zvcig7IWIuc2libGluZzspe2lmKCFiLnJldHVybnx8Yi5yZXR1cm49PT1hKXJldHVybiBudWxsO2I9Yi5yZXR1cm59Yi5zaWJsaW5nLnJldHVybj1iLnJldHVybjtiPWIuc2libGluZ319cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBpYyhhLGIpe2lmKG51bGw9PWIpdGhyb3cgRXJyb3IodSgzMCkpO2lmKG51bGw9PWEpcmV0dXJuIGI7aWYoQXJyYXkuaXNBcnJheShhKSl7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYS5wdXNoLmFwcGx5KGEsYiksYTthLnB1c2goYik7cmV0dXJuIGF9cmV0dXJuIEFycmF5LmlzQXJyYXkoYik/W2FdLmNvbmNhdChiKTpbYSxiXX1mdW5jdGlvbiBqYyhhLGIsYyl7QXJyYXkuaXNBcnJheShhKT9hLmZvckVhY2goYixjKTphJiZiLmNhbGwoYyxhKX12YXIga2M9bnVsbDtcbmZ1bmN0aW9uIGxjKGEpe2lmKGEpe3ZhciBiPWEuX2Rpc3BhdGNoTGlzdGVuZXJzLGM9YS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheShiKSlmb3IodmFyIGQ9MDtkPGIubGVuZ3RoJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2QrKylvYShhLGJbZF0sY1tkXSk7ZWxzZSBiJiZvYShhLGIsYyk7YS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbDthLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsO2EuaXNQZXJzaXN0ZW50KCl8fGEuY29uc3RydWN0b3IucmVsZWFzZShhKX19ZnVuY3Rpb24gbWMoYSl7bnVsbCE9PWEmJihrYz1pYyhrYyxhKSk7YT1rYztrYz1udWxsO2lmKGEpe2pjKGEsbGMpO2lmKGtjKXRocm93IEVycm9yKHUoOTUpKTtpZihmYSl0aHJvdyBhPWhhLGZhPSExLGhhPW51bGwsYTt9fVxuZnVuY3Rpb24gbmMoYSl7YT1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHx3aW5kb3c7YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGE9YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCk7cmV0dXJuIDM9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphfWZ1bmN0aW9uIG9jKGEpe2lmKCF5YSlyZXR1cm4hMTthPVwib25cIithO3ZhciBiPWEgaW4gZG9jdW1lbnQ7Ynx8KGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxiLnNldEF0dHJpYnV0ZShhLFwicmV0dXJuO1wiKSxiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBiW2FdKTtyZXR1cm4gYn12YXIgcGM9W107ZnVuY3Rpb24gcWMoYSl7YS50b3BMZXZlbFR5cGU9bnVsbDthLm5hdGl2ZUV2ZW50PW51bGw7YS50YXJnZXRJbnN0PW51bGw7YS5hbmNlc3RvcnMubGVuZ3RoPTA7MTA+cGMubGVuZ3RoJiZwYy5wdXNoKGEpfVxuZnVuY3Rpb24gcmMoYSxiLGMsZCl7aWYocGMubGVuZ3RoKXt2YXIgZT1wYy5wb3AoKTtlLnRvcExldmVsVHlwZT1hO2UuZXZlbnRTeXN0ZW1GbGFncz1kO2UubmF0aXZlRXZlbnQ9YjtlLnRhcmdldEluc3Q9YztyZXR1cm4gZX1yZXR1cm57dG9wTGV2ZWxUeXBlOmEsZXZlbnRTeXN0ZW1GbGFnczpkLG5hdGl2ZUV2ZW50OmIsdGFyZ2V0SW5zdDpjLGFuY2VzdG9yczpbXX19XG5mdW5jdGlvbiBzYyhhKXt2YXIgYj1hLnRhcmdldEluc3QsYz1iO2Rve2lmKCFjKXthLmFuY2VzdG9ycy5wdXNoKGMpO2JyZWFrfXZhciBkPWM7aWYoMz09PWQudGFnKWQ9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztlbHNle2Zvcig7ZC5yZXR1cm47KWQ9ZC5yZXR1cm47ZD0zIT09ZC50YWc/bnVsbDpkLnN0YXRlTm9kZS5jb250YWluZXJJbmZvfWlmKCFkKWJyZWFrO2I9Yy50YWc7NSE9PWImJjYhPT1ifHxhLmFuY2VzdG9ycy5wdXNoKGMpO2M9dGMoZCl9d2hpbGUoYyk7Zm9yKGM9MDtjPGEuYW5jZXN0b3JzLmxlbmd0aDtjKyspe2I9YS5hbmNlc3RvcnNbY107dmFyIGU9bmMoYS5uYXRpdmVFdmVudCk7ZD1hLnRvcExldmVsVHlwZTt2YXIgZj1hLm5hdGl2ZUV2ZW50LGc9YS5ldmVudFN5c3RlbUZsYWdzOzA9PT1jJiYoZ3w9NjQpO2Zvcih2YXIgaD1udWxsLGs9MDtrPHNhLmxlbmd0aDtrKyspe3ZhciBsPXNhW2tdO2wmJihsPWwuZXh0cmFjdEV2ZW50cyhkLGIsZixlLGcpKSYmKGg9XG5pYyhoLGwpKX1tYyhoKX19ZnVuY3Rpb24gdWMoYSxiLGMpe2lmKCFjLmhhcyhhKSl7c3dpdGNoKGEpe2Nhc2UgXCJzY3JvbGxcIjp2YyhiLFwic2Nyb2xsXCIsITApO2JyZWFrO2Nhc2UgXCJmb2N1c1wiOmNhc2UgXCJibHVyXCI6dmMoYixcImZvY3VzXCIsITApO3ZjKGIsXCJibHVyXCIsITApO2Muc2V0KFwiYmx1clwiLG51bGwpO2Muc2V0KFwiZm9jdXNcIixudWxsKTticmVhaztjYXNlIFwiY2FuY2VsXCI6Y2FzZSBcImNsb3NlXCI6b2MoYSkmJnZjKGIsYSwhMCk7YnJlYWs7Y2FzZSBcImludmFsaWRcIjpjYXNlIFwic3VibWl0XCI6Y2FzZSBcInJlc2V0XCI6YnJlYWs7ZGVmYXVsdDotMT09PWFjLmluZGV4T2YoYSkmJkYoYSxiKX1jLnNldChhLG51bGwpfX1cbnZhciB3Yyx4Yyx5Yyx6Yz0hMSxBYz1bXSxCYz1udWxsLENjPW51bGwsRGM9bnVsbCxFYz1uZXcgTWFwLEZjPW5ldyBNYXAsR2M9W10sSGM9XCJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjbG9zZSBjYW5jZWwgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdFwiLnNwbGl0KFwiIFwiKSxJYz1cImZvY3VzIGJsdXIgZHJhZ2VudGVyIGRyYWdsZWF2ZSBtb3VzZW92ZXIgbW91c2VvdXQgcG9pbnRlcm92ZXIgcG9pbnRlcm91dCBnb3Rwb2ludGVyY2FwdHVyZSBsb3N0cG9pbnRlcmNhcHR1cmVcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBKYyhhLGIpe3ZhciBjPWNjKGIpO0hjLmZvckVhY2goZnVuY3Rpb24oYSl7dWMoYSxiLGMpfSk7SWMuZm9yRWFjaChmdW5jdGlvbihhKXt1YyhhLGIsYyl9KX1mdW5jdGlvbiBLYyhhLGIsYyxkLGUpe3JldHVybntibG9ja2VkT246YSx0b3BMZXZlbFR5cGU6YixldmVudFN5c3RlbUZsYWdzOmN8MzIsbmF0aXZlRXZlbnQ6ZSxjb250YWluZXI6ZH19XG5mdW5jdGlvbiBMYyhhLGIpe3N3aXRjaChhKXtjYXNlIFwiZm9jdXNcIjpjYXNlIFwiYmx1clwiOkJjPW51bGw7YnJlYWs7Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnbGVhdmVcIjpDYz1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwibW91c2VvdXRcIjpEYz1udWxsO2JyZWFrO2Nhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVyb3V0XCI6RWMuZGVsZXRlKGIucG9pbnRlcklkKTticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6RmMuZGVsZXRlKGIucG9pbnRlcklkKX19ZnVuY3Rpb24gTWMoYSxiLGMsZCxlLGYpe2lmKG51bGw9PT1hfHxhLm5hdGl2ZUV2ZW50IT09ZilyZXR1cm4gYT1LYyhiLGMsZCxlLGYpLG51bGwhPT1iJiYoYj1OYyhiKSxudWxsIT09YiYmeGMoYikpLGE7YS5ldmVudFN5c3RlbUZsYWdzfD1kO3JldHVybiBhfVxuZnVuY3Rpb24gT2MoYSxiLGMsZCxlKXtzd2l0Y2goYil7Y2FzZSBcImZvY3VzXCI6cmV0dXJuIEJjPU1jKEJjLGEsYixjLGQsZSksITA7Y2FzZSBcImRyYWdlbnRlclwiOnJldHVybiBDYz1NYyhDYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJtb3VzZW92ZXJcIjpyZXR1cm4gRGM9TWMoRGMsYSxiLGMsZCxlKSwhMDtjYXNlIFwicG9pbnRlcm92ZXJcIjp2YXIgZj1lLnBvaW50ZXJJZDtFYy5zZXQoZixNYyhFYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSk7cmV0dXJuITA7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6cmV0dXJuIGY9ZS5wb2ludGVySWQsRmMuc2V0KGYsTWMoRmMuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpLCEwfXJldHVybiExfVxuZnVuY3Rpb24gUGMoYSl7dmFyIGI9dGMoYS50YXJnZXQpO2lmKG51bGwhPT1iKXt2YXIgYz1kYyhiKTtpZihudWxsIT09YylpZihiPWMudGFnLDEzPT09Yil7aWYoYj1lYyhjKSxudWxsIT09Yil7YS5ibG9ja2VkT249YjtyLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eShhLnByaW9yaXR5LGZ1bmN0aW9uKCl7eWMoYyl9KTtyZXR1cm59fWVsc2UgaWYoMz09PWImJmMuc3RhdGVOb2RlLmh5ZHJhdGUpe2EuYmxvY2tlZE9uPTM9PT1jLnRhZz9jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cmV0dXJufX1hLmJsb2NrZWRPbj1udWxsfWZ1bmN0aW9uIFFjKGEpe2lmKG51bGwhPT1hLmJsb2NrZWRPbilyZXR1cm4hMTt2YXIgYj1SYyhhLnRvcExldmVsVHlwZSxhLmV2ZW50U3lzdGVtRmxhZ3MsYS5jb250YWluZXIsYS5uYXRpdmVFdmVudCk7aWYobnVsbCE9PWIpe3ZhciBjPU5jKGIpO251bGwhPT1jJiZ4YyhjKTthLmJsb2NrZWRPbj1iO3JldHVybiExfXJldHVybiEwfVxuZnVuY3Rpb24gU2MoYSxiLGMpe1FjKGEpJiZjLmRlbGV0ZShiKX1mdW5jdGlvbiBUYygpe2Zvcih6Yz0hMTswPEFjLmxlbmd0aDspe3ZhciBhPUFjWzBdO2lmKG51bGwhPT1hLmJsb2NrZWRPbil7YT1OYyhhLmJsb2NrZWRPbik7bnVsbCE9PWEmJndjKGEpO2JyZWFrfXZhciBiPVJjKGEudG9wTGV2ZWxUeXBlLGEuZXZlbnRTeXN0ZW1GbGFncyxhLmNvbnRhaW5lcixhLm5hdGl2ZUV2ZW50KTtudWxsIT09Yj9hLmJsb2NrZWRPbj1iOkFjLnNoaWZ0KCl9bnVsbCE9PUJjJiZRYyhCYykmJihCYz1udWxsKTtudWxsIT09Q2MmJlFjKENjKSYmKENjPW51bGwpO251bGwhPT1EYyYmUWMoRGMpJiYoRGM9bnVsbCk7RWMuZm9yRWFjaChTYyk7RmMuZm9yRWFjaChTYyl9ZnVuY3Rpb24gVWMoYSxiKXthLmJsb2NrZWRPbj09PWImJihhLmJsb2NrZWRPbj1udWxsLHpjfHwoemM9ITAsci51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKHIudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksVGMpKSl9XG5mdW5jdGlvbiBWYyhhKXtmdW5jdGlvbiBiKGIpe3JldHVybiBVYyhiLGEpfWlmKDA8QWMubGVuZ3RoKXtVYyhBY1swXSxhKTtmb3IodmFyIGM9MTtjPEFjLmxlbmd0aDtjKyspe3ZhciBkPUFjW2NdO2QuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpfX1udWxsIT09QmMmJlVjKEJjLGEpO251bGwhPT1DYyYmVWMoQ2MsYSk7bnVsbCE9PURjJiZVYyhEYyxhKTtFYy5mb3JFYWNoKGIpO0ZjLmZvckVhY2goYik7Zm9yKGM9MDtjPEdjLmxlbmd0aDtjKyspZD1HY1tjXSxkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8R2MubGVuZ3RoJiYoYz1HY1swXSxudWxsPT09Yy5ibG9ja2VkT24pOylQYyhjKSxudWxsPT09Yy5ibG9ja2VkT24mJkdjLnNoaWZ0KCl9XG52YXIgV2M9e30sWWM9bmV3IE1hcCxaYz1uZXcgTWFwLCRjPVtcImFib3J0XCIsXCJhYm9ydFwiLFhiLFwiYW5pbWF0aW9uRW5kXCIsWWIsXCJhbmltYXRpb25JdGVyYXRpb25cIixaYixcImFuaW1hdGlvblN0YXJ0XCIsXCJjYW5wbGF5XCIsXCJjYW5QbGF5XCIsXCJjYW5wbGF5dGhyb3VnaFwiLFwiY2FuUGxheVRocm91Z2hcIixcImR1cmF0aW9uY2hhbmdlXCIsXCJkdXJhdGlvbkNoYW5nZVwiLFwiZW1wdGllZFwiLFwiZW1wdGllZFwiLFwiZW5jcnlwdGVkXCIsXCJlbmNyeXB0ZWRcIixcImVuZGVkXCIsXCJlbmRlZFwiLFwiZXJyb3JcIixcImVycm9yXCIsXCJnb3Rwb2ludGVyY2FwdHVyZVwiLFwiZ290UG9pbnRlckNhcHR1cmVcIixcImxvYWRcIixcImxvYWRcIixcImxvYWRlZGRhdGFcIixcImxvYWRlZERhdGFcIixcImxvYWRlZG1ldGFkYXRhXCIsXCJsb2FkZWRNZXRhZGF0YVwiLFwibG9hZHN0YXJ0XCIsXCJsb2FkU3RhcnRcIixcImxvc3Rwb2ludGVyY2FwdHVyZVwiLFwibG9zdFBvaW50ZXJDYXB0dXJlXCIsXCJwbGF5aW5nXCIsXCJwbGF5aW5nXCIsXCJwcm9ncmVzc1wiLFwicHJvZ3Jlc3NcIixcInNlZWtpbmdcIixcblwic2Vla2luZ1wiLFwic3RhbGxlZFwiLFwic3RhbGxlZFwiLFwic3VzcGVuZFwiLFwic3VzcGVuZFwiLFwidGltZXVwZGF0ZVwiLFwidGltZVVwZGF0ZVwiLCRiLFwidHJhbnNpdGlvbkVuZFwiLFwid2FpdGluZ1wiLFwid2FpdGluZ1wiXTtmdW5jdGlvbiBhZChhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7Yys9Mil7dmFyIGQ9YVtjXSxlPWFbYysxXSxmPVwib25cIisoZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSkpO2Y9e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmYsY2FwdHVyZWQ6ZitcIkNhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOltkXSxldmVudFByaW9yaXR5OmJ9O1pjLnNldChkLGIpO1ljLnNldChkLGYpO1djW2VdPWZ9fVxuYWQoXCJibHVyIGJsdXIgY2FuY2VsIGNhbmNlbCBjbGljayBjbGljayBjbG9zZSBjbG9zZSBjb250ZXh0bWVudSBjb250ZXh0TWVudSBjb3B5IGNvcHkgY3V0IGN1dCBhdXhjbGljayBhdXhDbGljayBkYmxjbGljayBkb3VibGVDbGljayBkcmFnZW5kIGRyYWdFbmQgZHJhZ3N0YXJ0IGRyYWdTdGFydCBkcm9wIGRyb3AgZm9jdXMgZm9jdXMgaW5wdXQgaW5wdXQgaW52YWxpZCBpbnZhbGlkIGtleWRvd24ga2V5RG93biBrZXlwcmVzcyBrZXlQcmVzcyBrZXl1cCBrZXlVcCBtb3VzZWRvd24gbW91c2VEb3duIG1vdXNldXAgbW91c2VVcCBwYXN0ZSBwYXN0ZSBwYXVzZSBwYXVzZSBwbGF5IHBsYXkgcG9pbnRlcmNhbmNlbCBwb2ludGVyQ2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJEb3duIHBvaW50ZXJ1cCBwb2ludGVyVXAgcmF0ZWNoYW5nZSByYXRlQ2hhbmdlIHJlc2V0IHJlc2V0IHNlZWtlZCBzZWVrZWQgc3VibWl0IHN1Ym1pdCB0b3VjaGNhbmNlbCB0b3VjaENhbmNlbCB0b3VjaGVuZCB0b3VjaEVuZCB0b3VjaHN0YXJ0IHRvdWNoU3RhcnQgdm9sdW1lY2hhbmdlIHZvbHVtZUNoYW5nZVwiLnNwbGl0KFwiIFwiKSwwKTtcbmFkKFwiZHJhZyBkcmFnIGRyYWdlbnRlciBkcmFnRW50ZXIgZHJhZ2V4aXQgZHJhZ0V4aXQgZHJhZ2xlYXZlIGRyYWdMZWF2ZSBkcmFnb3ZlciBkcmFnT3ZlciBtb3VzZW1vdmUgbW91c2VNb3ZlIG1vdXNlb3V0IG1vdXNlT3V0IG1vdXNlb3ZlciBtb3VzZU92ZXIgcG9pbnRlcm1vdmUgcG9pbnRlck1vdmUgcG9pbnRlcm91dCBwb2ludGVyT3V0IHBvaW50ZXJvdmVyIHBvaW50ZXJPdmVyIHNjcm9sbCBzY3JvbGwgdG9nZ2xlIHRvZ2dsZSB0b3VjaG1vdmUgdG91Y2hNb3ZlIHdoZWVsIHdoZWVsXCIuc3BsaXQoXCIgXCIpLDEpO2FkKCRjLDIpO2Zvcih2YXIgYmQ9XCJjaGFuZ2Ugc2VsZWN0aW9uY2hhbmdlIHRleHRJbnB1dCBjb21wb3NpdGlvbnN0YXJ0IGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9udXBkYXRlXCIuc3BsaXQoXCIgXCIpLGNkPTA7Y2Q8YmQubGVuZ3RoO2NkKyspWmMuc2V0KGJkW2NkXSwwKTtcbnZhciBkZD1yLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LGVkPXIudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5LGZkPSEwO2Z1bmN0aW9uIEYoYSxiKXt2YyhiLGEsITEpfWZ1bmN0aW9uIHZjKGEsYixjKXt2YXIgZD1aYy5nZXQoYik7c3dpdGNoKHZvaWQgMD09PWQ/MjpkKXtjYXNlIDA6ZD1nZC5iaW5kKG51bGwsYiwxLGEpO2JyZWFrO2Nhc2UgMTpkPWhkLmJpbmQobnVsbCxiLDEsYSk7YnJlYWs7ZGVmYXVsdDpkPWlkLmJpbmQobnVsbCxiLDEsYSl9Yz9hLmFkZEV2ZW50TGlzdGVuZXIoYixkLCEwKTphLmFkZEV2ZW50TGlzdGVuZXIoYixkLCExKX1mdW5jdGlvbiBnZChhLGIsYyxkKXtKYXx8SGEoKTt2YXIgZT1pZCxmPUphO0phPSEwO3RyeXtHYShlLGEsYixjLGQpfWZpbmFsbHl7KEphPWYpfHxMYSgpfX1mdW5jdGlvbiBoZChhLGIsYyxkKXtlZChkZCxpZC5iaW5kKG51bGwsYSxiLGMsZCkpfVxuZnVuY3Rpb24gaWQoYSxiLGMsZCl7aWYoZmQpaWYoMDxBYy5sZW5ndGgmJi0xPEhjLmluZGV4T2YoYSkpYT1LYyhudWxsLGEsYixjLGQpLEFjLnB1c2goYSk7ZWxzZXt2YXIgZT1SYyhhLGIsYyxkKTtpZihudWxsPT09ZSlMYyhhLGQpO2Vsc2UgaWYoLTE8SGMuaW5kZXhPZihhKSlhPUtjKGUsYSxiLGMsZCksQWMucHVzaChhKTtlbHNlIGlmKCFPYyhlLGEsYixjLGQpKXtMYyhhLGQpO2E9cmMoYSxkLG51bGwsYik7dHJ5e01hKHNjLGEpfWZpbmFsbHl7cWMoYSl9fX19XG5mdW5jdGlvbiBSYyhhLGIsYyxkKXtjPW5jKGQpO2M9dGMoYyk7aWYobnVsbCE9PWMpe3ZhciBlPWRjKGMpO2lmKG51bGw9PT1lKWM9bnVsbDtlbHNle3ZhciBmPWUudGFnO2lmKDEzPT09Zil7Yz1lYyhlKTtpZihudWxsIT09YylyZXR1cm4gYztjPW51bGx9ZWxzZSBpZigzPT09Zil7aWYoZS5zdGF0ZU5vZGUuaHlkcmF0ZSlyZXR1cm4gMz09PWUudGFnP2Uuc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtjPW51bGx9ZWxzZSBlIT09YyYmKGM9bnVsbCl9fWE9cmMoYSxkLGMsYik7dHJ5e01hKHNjLGEpfWZpbmFsbHl7cWMoYSl9cmV0dXJuIG51bGx9XG52YXIgamQ9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZEFyZWE6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLFxuZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0sa2Q9W1wiV2Via2l0XCIsXCJtc1wiLFwiTW96XCIsXCJPXCJdO09iamVjdC5rZXlzKGpkKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2tkLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iK2EuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSk7amRbYl09amRbYV19KX0pO2Z1bmN0aW9uIGxkKGEsYixjKXtyZXR1cm4gbnVsbD09Ynx8XCJib29sZWFuXCI9PT10eXBlb2YgYnx8XCJcIj09PWI/XCJcIjpjfHxcIm51bWJlclwiIT09dHlwZW9mIGJ8fDA9PT1ifHxqZC5oYXNPd25Qcm9wZXJ0eShhKSYmamRbYV0/KFwiXCIrYikudHJpbSgpOmIrXCJweFwifVxuZnVuY3Rpb24gbWQoYSxiKXthPWEuc3R5bGU7Zm9yKHZhciBjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIGQ9MD09PWMuaW5kZXhPZihcIi0tXCIpLGU9bGQoYyxiW2NdLGQpO1wiZmxvYXRcIj09PWMmJihjPVwiY3NzRmxvYXRcIik7ZD9hLnNldFByb3BlcnR5KGMsZSk6YVtjXT1lfX12YXIgbmQ9bih7bWVudWl0ZW06ITB9LHthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9KTtcbmZ1bmN0aW9uIG9kKGEsYil7aWYoYil7aWYobmRbYV0mJihudWxsIT1iLmNoaWxkcmVufHxudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcih1KDEzNyxhLFwiXCIpKTtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXtpZihudWxsIT1iLmNoaWxkcmVuKXRocm93IEVycm9yKHUoNjApKTtpZighKFwib2JqZWN0XCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmXCJfX2h0bWxcImluIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHUoNjEpKTt9aWYobnVsbCE9Yi5zdHlsZSYmXCJvYmplY3RcIiE9PXR5cGVvZiBiLnN0eWxlKXRocm93IEVycm9yKHUoNjIsXCJcIikpO319XG5mdW5jdGlvbiBwZChhLGIpe2lmKC0xPT09YS5pbmRleE9mKFwiLVwiKSlyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGIuaXM7c3dpdGNoKGEpe2Nhc2UgXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2UgXCJjb2xvci1wcm9maWxlXCI6Y2FzZSBcImZvbnQtZmFjZVwiOmNhc2UgXCJmb250LWZhY2Utc3JjXCI6Y2FzZSBcImZvbnQtZmFjZS11cmlcIjpjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2UgXCJmb250LWZhY2UtbmFtZVwiOmNhc2UgXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19dmFyIHFkPU1iLmh0bWw7ZnVuY3Rpb24gcmQoYSxiKXthPTk9PT1hLm5vZGVUeXBlfHwxMT09PWEubm9kZVR5cGU/YTphLm93bmVyRG9jdW1lbnQ7dmFyIGM9Y2MoYSk7Yj13YVtiXTtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyl1YyhiW2RdLGEsYyl9ZnVuY3Rpb24gc2QoKXt9XG5mdW5jdGlvbiB0ZChhKXthPWF8fChcInVuZGVmaW5lZFwiIT09dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCk7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gYS5hY3RpdmVFbGVtZW50fHxhLmJvZHl9Y2F0Y2goYil7cmV0dXJuIGEuYm9keX19ZnVuY3Rpb24gdWQoYSl7Zm9yKDthJiZhLmZpcnN0Q2hpbGQ7KWE9YS5maXJzdENoaWxkO3JldHVybiBhfWZ1bmN0aW9uIHZkKGEsYil7dmFyIGM9dWQoYSk7YT0wO2Zvcih2YXIgZDtjOyl7aWYoMz09PWMubm9kZVR5cGUpe2Q9YStjLnRleHRDb250ZW50Lmxlbmd0aDtpZihhPD1iJiZkPj1iKXJldHVybntub2RlOmMsb2Zmc2V0OmItYX07YT1kfWE6e2Zvcig7Yzspe2lmKGMubmV4dFNpYmxpbmcpe2M9Yy5uZXh0U2libGluZzticmVhayBhfWM9Yy5wYXJlbnROb2RlfWM9dm9pZCAwfWM9dWQoYyl9fVxuZnVuY3Rpb24gd2QoYSxiKXtyZXR1cm4gYSYmYj9hPT09Yj8hMDphJiYzPT09YS5ub2RlVHlwZT8hMTpiJiYzPT09Yi5ub2RlVHlwZT93ZChhLGIucGFyZW50Tm9kZSk6XCJjb250YWluc1wiaW4gYT9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik6ITE6ITF9ZnVuY3Rpb24geGQoKXtmb3IodmFyIGE9d2luZG93LGI9dGQoKTtiIGluc3RhbmNlb2YgYS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgYz1cInN0cmluZ1wiPT09dHlwZW9mIGIuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGQpe2M9ITF9aWYoYylhPWIuY29udGVudFdpbmRvdztlbHNlIGJyZWFrO2I9dGQoYS5kb2N1bWVudCl9cmV0dXJuIGJ9XG5mdW5jdGlvbiB5ZChhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGImJihcImlucHV0XCI9PT1iJiYoXCJ0ZXh0XCI9PT1hLnR5cGV8fFwic2VhcmNoXCI9PT1hLnR5cGV8fFwidGVsXCI9PT1hLnR5cGV8fFwidXJsXCI9PT1hLnR5cGV8fFwicGFzc3dvcmRcIj09PWEudHlwZSl8fFwidGV4dGFyZWFcIj09PWJ8fFwidHJ1ZVwiPT09YS5jb250ZW50RWRpdGFibGUpfXZhciB6ZD1cIiRcIixBZD1cIi8kXCIsQmQ9XCIkP1wiLENkPVwiJCFcIixEZD1udWxsLEVkPW51bGw7ZnVuY3Rpb24gRmQoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjpyZXR1cm4hIWIuYXV0b0ZvY3VzfXJldHVybiExfVxuZnVuY3Rpb24gR2QoYSxiKXtyZXR1cm5cInRleHRhcmVhXCI9PT1hfHxcIm9wdGlvblwiPT09YXx8XCJub3NjcmlwdFwiPT09YXx8XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm51bWJlclwiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwib2JqZWN0XCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfXZhciBIZD1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCxJZD1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDp2b2lkIDA7ZnVuY3Rpb24gSmQoYSl7Zm9yKDtudWxsIT1hO2E9YS5uZXh0U2libGluZyl7dmFyIGI9YS5ub2RlVHlwZTtpZigxPT09Ynx8Mz09PWIpYnJlYWt9cmV0dXJuIGF9XG5mdW5jdGlvbiBLZChhKXthPWEucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKGM9PT16ZHx8Yz09PUNkfHxjPT09QmQpe2lmKDA9PT1iKXJldHVybiBhO2ItLX1lbHNlIGM9PT1BZCYmYisrfWE9YS5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9dmFyIExkPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLE1kPVwiX19yZWFjdEludGVybmFsSW5zdGFuY2UkXCIrTGQsTmQ9XCJfX3JlYWN0RXZlbnRIYW5kbGVycyRcIitMZCxPZD1cIl9fcmVhY3RDb250YWluZXJlJFwiK0xkO1xuZnVuY3Rpb24gdGMoYSl7dmFyIGI9YVtNZF07aWYoYilyZXR1cm4gYjtmb3IodmFyIGM9YS5wYXJlbnROb2RlO2M7KXtpZihiPWNbT2RdfHxjW01kXSl7Yz1iLmFsdGVybmF0ZTtpZihudWxsIT09Yi5jaGlsZHx8bnVsbCE9PWMmJm51bGwhPT1jLmNoaWxkKWZvcihhPUtkKGEpO251bGwhPT1hOyl7aWYoYz1hW01kXSlyZXR1cm4gYzthPUtkKGEpfXJldHVybiBifWE9YztjPWEucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBOYyhhKXthPWFbTWRdfHxhW09kXTtyZXR1cm4hYXx8NSE9PWEudGFnJiY2IT09YS50YWcmJjEzIT09YS50YWcmJjMhPT1hLnRhZz9udWxsOmF9ZnVuY3Rpb24gUGQoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGEuc3RhdGVOb2RlO3Rocm93IEVycm9yKHUoMzMpKTt9ZnVuY3Rpb24gUWQoYSl7cmV0dXJuIGFbTmRdfHxudWxsfVxuZnVuY3Rpb24gUmQoYSl7ZG8gYT1hLnJldHVybjt3aGlsZShhJiY1IT09YS50YWcpO3JldHVybiBhP2E6bnVsbH1cbmZ1bmN0aW9uIFNkKGEsYil7dmFyIGM9YS5zdGF0ZU5vZGU7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGQ9bGEoYyk7aWYoIWQpcmV0dXJuIG51bGw7Yz1kW2JdO2E6c3dpdGNoKGIpe2Nhc2UgXCJvbkNsaWNrXCI6Y2FzZSBcIm9uQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tcIjpjYXNlIFwib25Eb3VibGVDbGlja0NhcHR1cmVcIjpjYXNlIFwib25Nb3VzZURvd25cIjpjYXNlIFwib25Nb3VzZURvd25DYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlVXBcIjpjYXNlIFwib25Nb3VzZVVwQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRW50ZXJcIjooZD0hZC5kaXNhYmxlZCl8fChhPWEudHlwZSxkPSEoXCJidXR0b25cIj09PWF8fFwiaW5wdXRcIj09PWF8fFwic2VsZWN0XCI9PT1hfHxcInRleHRhcmVhXCI9PT1hKSk7YT0hZDticmVhayBhO2RlZmF1bHQ6YT0hMX1pZihhKXJldHVybiBudWxsO2lmKGMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBjKXRocm93IEVycm9yKHUoMjMxLFxuYix0eXBlb2YgYykpO3JldHVybiBjfWZ1bmN0aW9uIFRkKGEsYixjKXtpZihiPVNkKGEsYy5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1tiXSkpYy5fZGlzcGF0Y2hMaXN0ZW5lcnM9aWMoYy5fZGlzcGF0Y2hMaXN0ZW5lcnMsYiksYy5fZGlzcGF0Y2hJbnN0YW5jZXM9aWMoYy5fZGlzcGF0Y2hJbnN0YW5jZXMsYSl9ZnVuY3Rpb24gVWQoYSl7aWYoYSYmYS5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyl7Zm9yKHZhciBiPWEuX3RhcmdldEluc3QsYz1bXTtiOyljLnB1c2goYiksYj1SZChiKTtmb3IoYj1jLmxlbmd0aDswPGItLTspVGQoY1tiXSxcImNhcHR1cmVkXCIsYSk7Zm9yKGI9MDtiPGMubGVuZ3RoO2IrKylUZChjW2JdLFwiYnViYmxlZFwiLGEpfX1cbmZ1bmN0aW9uIFZkKGEsYixjKXthJiZjJiZjLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJihiPVNkKGEsYy5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSkmJihjLl9kaXNwYXRjaExpc3RlbmVycz1pYyhjLl9kaXNwYXRjaExpc3RlbmVycyxiKSxjLl9kaXNwYXRjaEluc3RhbmNlcz1pYyhjLl9kaXNwYXRjaEluc3RhbmNlcyxhKSl9ZnVuY3Rpb24gV2QoYSl7YSYmYS5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZWZChhLl90YXJnZXRJbnN0LG51bGwsYSl9ZnVuY3Rpb24gWGQoYSl7amMoYSxVZCl9dmFyIFlkPW51bGwsWmQ9bnVsbCwkZD1udWxsO1xuZnVuY3Rpb24gYWUoKXtpZigkZClyZXR1cm4gJGQ7dmFyIGEsYj1aZCxjPWIubGVuZ3RoLGQsZT1cInZhbHVlXCJpbiBZZD9ZZC52YWx1ZTpZZC50ZXh0Q29udGVudCxmPWUubGVuZ3RoO2ZvcihhPTA7YTxjJiZiW2FdPT09ZVthXTthKyspO3ZhciBnPWMtYTtmb3IoZD0xO2Q8PWcmJmJbYy1kXT09PWVbZi1kXTtkKyspO3JldHVybiAkZD1lLnNsaWNlKGEsMTxkPzEtZDp2b2lkIDApfWZ1bmN0aW9uIGJlKCl7cmV0dXJuITB9ZnVuY3Rpb24gY2UoKXtyZXR1cm4hMX1cbmZ1bmN0aW9uIEcoYSxiLGMsZCl7dGhpcy5kaXNwYXRjaENvbmZpZz1hO3RoaXMuX3RhcmdldEluc3Q9Yjt0aGlzLm5hdGl2ZUV2ZW50PWM7YT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IodmFyIGUgaW4gYSlhLmhhc093blByb3BlcnR5KGUpJiYoKGI9YVtlXSk/dGhpc1tlXT1iKGMpOlwidGFyZ2V0XCI9PT1lP3RoaXMudGFyZ2V0PWQ6dGhpc1tlXT1jW2VdKTt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD0obnVsbCE9Yy5kZWZhdWx0UHJldmVudGVkP2MuZGVmYXVsdFByZXZlbnRlZDohMT09PWMucmV0dXJuVmFsdWUpP2JlOmNlO3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Y2U7cmV0dXJuIHRoaXN9XG5uKEcucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTpcInVua25vd25cIiE9PXR5cGVvZiBhLnJldHVyblZhbHVlJiYoYS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YmUpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnN0b3BQcm9wYWdhdGlvbj9hLnN0b3BQcm9wYWdhdGlvbigpOlwidW5rbm93blwiIT09dHlwZW9mIGEuY2FuY2VsQnViYmxlJiYoYS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YmUpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7dGhpcy5pc1BlcnNpc3RlbnQ9YmV9LGlzUGVyc2lzdGVudDpjZSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2UsXG5iO2ZvcihiIGluIGEpdGhpc1tiXT1udWxsO3RoaXMubmF0aXZlRXZlbnQ9dGhpcy5fdGFyZ2V0SW5zdD10aGlzLmRpc3BhdGNoQ29uZmlnPW51bGw7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD10aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1jZTt0aGlzLl9kaXNwYXRjaEluc3RhbmNlcz10aGlzLl9kaXNwYXRjaExpc3RlbmVycz1udWxsfX0pO0cuSW50ZXJmYWNlPXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3VycmVudFRhcmdldDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxsLGNhbmNlbGFibGU6bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9O1xuRy5leHRlbmQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe31mdW5jdGlvbiBjKCl7cmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBkPXRoaXM7Yi5wcm90b3R5cGU9ZC5wcm90b3R5cGU7dmFyIGU9bmV3IGI7bihlLGMucHJvdG90eXBlKTtjLnByb3RvdHlwZT1lO2MucHJvdG90eXBlLmNvbnN0cnVjdG9yPWM7Yy5JbnRlcmZhY2U9bih7fSxkLkludGVyZmFjZSxhKTtjLmV4dGVuZD1kLmV4dGVuZDtkZShjKTtyZXR1cm4gY307ZGUoRyk7ZnVuY3Rpb24gZWUoYSxiLGMsZCl7aWYodGhpcy5ldmVudFBvb2wubGVuZ3RoKXt2YXIgZT10aGlzLmV2ZW50UG9vbC5wb3AoKTt0aGlzLmNhbGwoZSxhLGIsYyxkKTtyZXR1cm4gZX1yZXR1cm4gbmV3IHRoaXMoYSxiLGMsZCl9XG5mdW5jdGlvbiBmZShhKXtpZighKGEgaW5zdGFuY2VvZiB0aGlzKSl0aHJvdyBFcnJvcih1KDI3OSkpO2EuZGVzdHJ1Y3RvcigpOzEwPnRoaXMuZXZlbnRQb29sLmxlbmd0aCYmdGhpcy5ldmVudFBvb2wucHVzaChhKX1mdW5jdGlvbiBkZShhKXthLmV2ZW50UG9vbD1bXTthLmdldFBvb2xlZD1lZTthLnJlbGVhc2U9ZmV9dmFyIGdlPUcuZXh0ZW5kKHtkYXRhOm51bGx9KSxoZT1HLmV4dGVuZCh7ZGF0YTpudWxsfSksaWU9WzksMTMsMjcsMzJdLGplPXlhJiZcIkNvbXBvc2l0aW9uRXZlbnRcImluIHdpbmRvdyxrZT1udWxsO3lhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJihrZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO1xudmFyIGxlPXlhJiZcIlRleHRFdmVudFwiaW4gd2luZG93JiYha2UsbWU9eWEmJighamV8fGtlJiY4PGtlJiYxMT49a2UpLG5lPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLG9lPXtiZWZvcmVJbnB1dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvbkJlZm9yZUlucHV0XCIsY2FwdHVyZWQ6XCJvbkJlZm9yZUlucHV0Q2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6W1wiY29tcG9zaXRpb25lbmRcIixcImtleXByZXNzXCIsXCJ0ZXh0SW5wdXRcIixcInBhc3RlXCJdfSxjb21wb3NpdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvbkNvbXBvc2l0aW9uRW5kXCIsY2FwdHVyZWQ6XCJvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNvbXBvc2l0aW9uZW5kIGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpfSxjb21wb3NpdGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQ29tcG9zaXRpb25TdGFydFwiLFxuY2FwdHVyZWQ6XCJvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpcImJsdXIgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKX0sY29tcG9zaXRpb25VcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25Db21wb3NpdGlvblVwZGF0ZVwiLGNhcHR1cmVkOlwib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjb21wb3NpdGlvbnVwZGF0ZSBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKX19LHBlPSExO1xuZnVuY3Rpb24gcWUoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImtleXVwXCI6cmV0dXJuLTEhPT1pZS5pbmRleE9mKGIua2V5Q29kZSk7Y2FzZSBcImtleWRvd25cIjpyZXR1cm4gMjI5IT09Yi5rZXlDb2RlO2Nhc2UgXCJrZXlwcmVzc1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwiYmx1clwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHJlKGEpe2E9YS5kZXRhaWw7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZcImRhdGFcImluIGE/YS5kYXRhOm51bGx9dmFyIHNlPSExO2Z1bmN0aW9uIHRlKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiByZShiKTtjYXNlIFwia2V5cHJlc3NcIjppZigzMiE9PWIud2hpY2gpcmV0dXJuIG51bGw7cGU9ITA7cmV0dXJuIG5lO2Nhc2UgXCJ0ZXh0SW5wdXRcIjpyZXR1cm4gYT1iLmRhdGEsYT09PW5lJiZwZT9udWxsOmE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19XG5mdW5jdGlvbiB1ZShhLGIpe2lmKHNlKXJldHVyblwiY29tcG9zaXRpb25lbmRcIj09PWF8fCFqZSYmcWUoYSxiKT8oYT1hZSgpLCRkPVpkPVlkPW51bGwsc2U9ITEsYSk6bnVsbDtzd2l0Y2goYSl7Y2FzZSBcInBhc3RlXCI6cmV0dXJuIG51bGw7Y2FzZSBcImtleXByZXNzXCI6aWYoIShiLmN0cmxLZXl8fGIuYWx0S2V5fHxiLm1ldGFLZXkpfHxiLmN0cmxLZXkmJmIuYWx0S2V5KXtpZihiLmNoYXImJjE8Yi5jaGFyLmxlbmd0aClyZXR1cm4gYi5jaGFyO2lmKGIud2hpY2gpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYi53aGljaCl9cmV0dXJuIG51bGw7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIG1lJiZcImtvXCIhPT1iLmxvY2FsZT9udWxsOmIuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbnZhciB2ZT17ZXZlbnRUeXBlczpvZSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlO2lmKGplKWI6e3N3aXRjaChhKXtjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOnZhciBmPW9lLmNvbXBvc2l0aW9uU3RhcnQ7YnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpmPW9lLmNvbXBvc2l0aW9uRW5kO2JyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6Zj1vZS5jb21wb3NpdGlvblVwZGF0ZTticmVhayBifWY9dm9pZCAwfWVsc2Ugc2U/cWUoYSxjKSYmKGY9b2UuY29tcG9zaXRpb25FbmQpOlwia2V5ZG93blwiPT09YSYmMjI5PT09Yy5rZXlDb2RlJiYoZj1vZS5jb21wb3NpdGlvblN0YXJ0KTtmPyhtZSYmXCJrb1wiIT09Yy5sb2NhbGUmJihzZXx8ZiE9PW9lLmNvbXBvc2l0aW9uU3RhcnQ/Zj09PW9lLmNvbXBvc2l0aW9uRW5kJiZzZSYmKGU9YWUoKSk6KFlkPWQsWmQ9XCJ2YWx1ZVwiaW4gWWQ/WWQudmFsdWU6WWQudGV4dENvbnRlbnQsc2U9ITApKSxmPWdlLmdldFBvb2xlZChmLFxuYixjLGQpLGU/Zi5kYXRhPWU6KGU9cmUoYyksbnVsbCE9PWUmJihmLmRhdGE9ZSkpLFhkKGYpLGU9Zik6ZT1udWxsOyhhPWxlP3RlKGEsYyk6dWUoYSxjKSk/KGI9aGUuZ2V0UG9vbGVkKG9lLmJlZm9yZUlucHV0LGIsYyxkKSxiLmRhdGE9YSxYZChiKSk6Yj1udWxsO3JldHVybiBudWxsPT09ZT9iOm51bGw9PT1iP2U6W2UsYl19fSx3ZT17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCxcImRhdGV0aW1lLWxvY2FsXCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiB4ZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09Yj8hIXdlW2EudHlwZV06XCJ0ZXh0YXJlYVwiPT09Yj8hMDohMX1cbnZhciB5ZT17Y2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQ2hhbmdlXCIsY2FwdHVyZWQ6XCJvbkNoYW5nZUNhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjaGFuZ2UgY2xpY2sgZm9jdXMgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIil9fTtmdW5jdGlvbiB6ZShhLGIsYyl7YT1HLmdldFBvb2xlZCh5ZS5jaGFuZ2UsYSxiLGMpO2EudHlwZT1cImNoYW5nZVwiO0RhKGMpO1hkKGEpO3JldHVybiBhfXZhciBBZT1udWxsLEJlPW51bGw7ZnVuY3Rpb24gQ2UoYSl7bWMoYSl9ZnVuY3Rpb24gRGUoYSl7dmFyIGI9UGQoYSk7aWYoeWIoYikpcmV0dXJuIGF9ZnVuY3Rpb24gRWUoYSxiKXtpZihcImNoYW5nZVwiPT09YSlyZXR1cm4gYn12YXIgRmU9ITE7eWEmJihGZT1vYyhcImlucHV0XCIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpKTtcbmZ1bmN0aW9uIEdlKCl7QWUmJihBZS5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixIZSksQmU9QWU9bnVsbCl9ZnVuY3Rpb24gSGUoYSl7aWYoXCJ2YWx1ZVwiPT09YS5wcm9wZXJ0eU5hbWUmJkRlKEJlKSlpZihhPXplKEJlLGEsbmMoYSkpLEphKW1jKGEpO2Vsc2V7SmE9ITA7dHJ5e0ZhKENlLGEpfWZpbmFsbHl7SmE9ITEsTGEoKX19fWZ1bmN0aW9uIEllKGEsYixjKXtcImZvY3VzXCI9PT1hPyhHZSgpLEFlPWIsQmU9YyxBZS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixIZSkpOlwiYmx1clwiPT09YSYmR2UoKX1mdW5jdGlvbiBKZShhKXtpZihcInNlbGVjdGlvbmNoYW5nZVwiPT09YXx8XCJrZXl1cFwiPT09YXx8XCJrZXlkb3duXCI9PT1hKXJldHVybiBEZShCZSl9ZnVuY3Rpb24gS2UoYSxiKXtpZihcImNsaWNrXCI9PT1hKXJldHVybiBEZShiKX1mdW5jdGlvbiBMZShhLGIpe2lmKFwiaW5wdXRcIj09PWF8fFwiY2hhbmdlXCI9PT1hKXJldHVybiBEZShiKX1cbnZhciBNZT17ZXZlbnRUeXBlczp5ZSxfaXNJbnB1dEV2ZW50U3VwcG9ydGVkOkZlLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Yj9QZChiKTp3aW5kb3csZj1lLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoXCJzZWxlY3RcIj09PWZ8fFwiaW5wdXRcIj09PWYmJlwiZmlsZVwiPT09ZS50eXBlKXZhciBnPUVlO2Vsc2UgaWYoeGUoZSkpaWYoRmUpZz1MZTtlbHNle2c9SmU7dmFyIGg9SWV9ZWxzZShmPWUubm9kZU5hbWUpJiZcImlucHV0XCI9PT1mLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1lLnR5cGV8fFwicmFkaW9cIj09PWUudHlwZSkmJihnPUtlKTtpZihnJiYoZz1nKGEsYikpKXJldHVybiB6ZShnLGMsZCk7aCYmaChhLGUsYik7XCJibHVyXCI9PT1hJiYoYT1lLl93cmFwcGVyU3RhdGUpJiZhLmNvbnRyb2xsZWQmJlwibnVtYmVyXCI9PT1lLnR5cGUmJkRiKGUsXCJudW1iZXJcIixlLnZhbHVlKX19LE5lPUcuZXh0ZW5kKHt2aWV3Om51bGwsZGV0YWlsOm51bGx9KSxcbk9lPXtBbHQ6XCJhbHRLZXlcIixDb250cm9sOlwiY3RybEtleVwiLE1ldGE6XCJtZXRhS2V5XCIsU2hpZnQ6XCJzaGlmdEtleVwifTtmdW5jdGlvbiBQZShhKXt2YXIgYj10aGlzLm5hdGl2ZUV2ZW50O3JldHVybiBiLmdldE1vZGlmaWVyU3RhdGU/Yi5nZXRNb2RpZmllclN0YXRlKGEpOihhPU9lW2FdKT8hIWJbYV06ITF9ZnVuY3Rpb24gUWUoKXtyZXR1cm4gUGV9XG52YXIgUmU9MCxTZT0wLFRlPSExLFVlPSExLFZlPU5lLmV4dGVuZCh7c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLHBhZ2VYOm51bGwscGFnZVk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpRZSxidXR0b246bnVsbCxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZWxhdGVkVGFyZ2V0fHwoYS5mcm9tRWxlbWVudD09PWEuc3JjRWxlbWVudD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50KX0sbW92ZW1lbnRYOmZ1bmN0aW9uKGEpe2lmKFwibW92ZW1lbnRYXCJpbiBhKXJldHVybiBhLm1vdmVtZW50WDt2YXIgYj1SZTtSZT1hLnNjcmVlblg7cmV0dXJuIFRlP1wibW91c2Vtb3ZlXCI9PT1hLnR5cGU/YS5zY3JlZW5YLWI6MDooVGU9ITAsMCl9LG1vdmVtZW50WTpmdW5jdGlvbihhKXtpZihcIm1vdmVtZW50WVwiaW4gYSlyZXR1cm4gYS5tb3ZlbWVudFk7XG52YXIgYj1TZTtTZT1hLnNjcmVlblk7cmV0dXJuIFVlP1wibW91c2Vtb3ZlXCI9PT1hLnR5cGU/YS5zY3JlZW5ZLWI6MDooVWU9ITAsMCl9fSksV2U9VmUuZXh0ZW5kKHtwb2ludGVySWQ6bnVsbCx3aWR0aDpudWxsLGhlaWdodDpudWxsLHByZXNzdXJlOm51bGwsdGFuZ2VudGlhbFByZXNzdXJlOm51bGwsdGlsdFg6bnVsbCx0aWx0WTpudWxsLHR3aXN0Om51bGwscG9pbnRlclR5cGU6bnVsbCxpc1ByaW1hcnk6bnVsbH0pLFhlPXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOlwib25Nb3VzZUVudGVyXCIsZGVwZW5kZW5jaWVzOltcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl19LG1vdXNlTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6XCJvbk1vdXNlTGVhdmVcIixkZXBlbmRlbmNpZXM6W1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXX0scG9pbnRlckVudGVyOntyZWdpc3RyYXRpb25OYW1lOlwib25Qb2ludGVyRW50ZXJcIixkZXBlbmRlbmNpZXM6W1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl19LHBvaW50ZXJMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZTpcIm9uUG9pbnRlckxlYXZlXCIsXG5kZXBlbmRlbmNpZXM6W1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl19fSxZZT17ZXZlbnRUeXBlczpYZSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9XCJtb3VzZW92ZXJcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWEsZz1cIm1vdXNlb3V0XCI9PT1hfHxcInBvaW50ZXJvdXRcIj09PWE7aWYoZiYmMD09PShlJjMyKSYmKGMucmVsYXRlZFRhcmdldHx8Yy5mcm9tRWxlbWVudCl8fCFnJiYhZilyZXR1cm4gbnVsbDtmPWQud2luZG93PT09ZD9kOihmPWQub3duZXJEb2N1bWVudCk/Zi5kZWZhdWx0Vmlld3x8Zi5wYXJlbnRXaW5kb3c6d2luZG93O2lmKGcpe2lmKGc9YixiPShiPWMucmVsYXRlZFRhcmdldHx8Yy50b0VsZW1lbnQpP3RjKGIpOm51bGwsbnVsbCE9PWIpe3ZhciBoPWRjKGIpO2lmKGIhPT1ofHw1IT09Yi50YWcmJjYhPT1iLnRhZyliPW51bGx9fWVsc2UgZz1udWxsO2lmKGc9PT1iKXJldHVybiBudWxsO2lmKFwibW91c2VvdXRcIj09PWF8fFwibW91c2VvdmVyXCI9PT1cbmEpe3ZhciBrPVZlO3ZhciBsPVhlLm1vdXNlTGVhdmU7dmFyIG09WGUubW91c2VFbnRlcjt2YXIgcD1cIm1vdXNlXCJ9ZWxzZSBpZihcInBvaW50ZXJvdXRcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWEpaz1XZSxsPVhlLnBvaW50ZXJMZWF2ZSxtPVhlLnBvaW50ZXJFbnRlcixwPVwicG9pbnRlclwiO2E9bnVsbD09Zz9mOlBkKGcpO2Y9bnVsbD09Yj9mOlBkKGIpO2w9ay5nZXRQb29sZWQobCxnLGMsZCk7bC50eXBlPXArXCJsZWF2ZVwiO2wudGFyZ2V0PWE7bC5yZWxhdGVkVGFyZ2V0PWY7Yz1rLmdldFBvb2xlZChtLGIsYyxkKTtjLnR5cGU9cCtcImVudGVyXCI7Yy50YXJnZXQ9ZjtjLnJlbGF0ZWRUYXJnZXQ9YTtkPWc7cD1iO2lmKGQmJnApYTp7az1kO209cDtnPTA7Zm9yKGE9azthO2E9UmQoYSkpZysrO2E9MDtmb3IoYj1tO2I7Yj1SZChiKSlhKys7Zm9yKDswPGctYTspaz1SZChrKSxnLS07Zm9yKDswPGEtZzspbT1SZChtKSxhLS07Zm9yKDtnLS07KXtpZihrPT09bXx8az09PW0uYWx0ZXJuYXRlKWJyZWFrIGE7XG5rPVJkKGspO209UmQobSl9az1udWxsfWVsc2Ugaz1udWxsO209aztmb3Ioaz1bXTtkJiZkIT09bTspe2c9ZC5hbHRlcm5hdGU7aWYobnVsbCE9PWcmJmc9PT1tKWJyZWFrO2sucHVzaChkKTtkPVJkKGQpfWZvcihkPVtdO3AmJnAhPT1tOyl7Zz1wLmFsdGVybmF0ZTtpZihudWxsIT09ZyYmZz09PW0pYnJlYWs7ZC5wdXNoKHApO3A9UmQocCl9Zm9yKHA9MDtwPGsubGVuZ3RoO3ArKylWZChrW3BdLFwiYnViYmxlZFwiLGwpO2ZvcihwPWQubGVuZ3RoOzA8cC0tOylWZChkW3BdLFwiY2FwdHVyZWRcIixjKTtyZXR1cm4gMD09PShlJjY0KT9bbF06W2wsY119fTtmdW5jdGlvbiBaZShhLGIpe3JldHVybiBhPT09YiYmKDAhPT1hfHwxL2E9PT0xL2IpfHxhIT09YSYmYiE9PWJ9dmFyICRlPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOlplLGFmPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBiZihhLGIpe2lmKCRlKGEsYikpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhfHxudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBifHxudWxsPT09YilyZXR1cm4hMTt2YXIgYz1PYmplY3Qua2V5cyhhKSxkPU9iamVjdC5rZXlzKGIpO2lmKGMubGVuZ3RoIT09ZC5sZW5ndGgpcmV0dXJuITE7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKylpZighYWYuY2FsbChiLGNbZF0pfHwhJGUoYVtjW2RdXSxiW2NbZF1dKSlyZXR1cm4hMTtyZXR1cm4hMH1cbnZhciBjZj15YSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLGRmPXtzZWxlY3Q6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25TZWxlY3RcIixjYXB0dXJlZDpcIm9uU2VsZWN0Q2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXMga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIil9fSxlZj1udWxsLGZmPW51bGwsZ2Y9bnVsbCxoZj0hMTtcbmZ1bmN0aW9uIGpmKGEsYil7dmFyIGM9Yi53aW5kb3c9PT1iP2IuZG9jdW1lbnQ6OT09PWIubm9kZVR5cGU/YjpiLm93bmVyRG9jdW1lbnQ7aWYoaGZ8fG51bGw9PWVmfHxlZiE9PXRkKGMpKXJldHVybiBudWxsO2M9ZWY7XCJzZWxlY3Rpb25TdGFydFwiaW4gYyYmeWQoYyk/Yz17c3RhcnQ6Yy5zZWxlY3Rpb25TdGFydCxlbmQ6Yy5zZWxlY3Rpb25FbmR9OihjPShjLm93bmVyRG9jdW1lbnQmJmMub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24oKSxjPXthbmNob3JOb2RlOmMuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6Yy5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOmMuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OmMuZm9jdXNPZmZzZXR9KTtyZXR1cm4gZ2YmJmJmKGdmLGMpP251bGw6KGdmPWMsYT1HLmdldFBvb2xlZChkZi5zZWxlY3QsZmYsYSxiKSxhLnR5cGU9XCJzZWxlY3RcIixhLnRhcmdldD1lZixYZChhKSxhKX1cbnZhciBrZj17ZXZlbnRUeXBlczpkZixleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXtlPWZ8fChkLndpbmRvdz09PWQ/ZC5kb2N1bWVudDo5PT09ZC5ub2RlVHlwZT9kOmQub3duZXJEb2N1bWVudCk7aWYoIShmPSFlKSl7YTp7ZT1jYyhlKTtmPXdhLm9uU2VsZWN0O2Zvcih2YXIgZz0wO2c8Zi5sZW5ndGg7ZysrKWlmKCFlLmhhcyhmW2ddKSl7ZT0hMTticmVhayBhfWU9ITB9Zj0hZX1pZihmKXJldHVybiBudWxsO2U9Yj9QZChiKTp3aW5kb3c7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c1wiOmlmKHhlKGUpfHxcInRydWVcIj09PWUuY29udGVudEVkaXRhYmxlKWVmPWUsZmY9YixnZj1udWxsO2JyZWFrO2Nhc2UgXCJibHVyXCI6Z2Y9ZmY9ZWY9bnVsbDticmVhaztjYXNlIFwibW91c2Vkb3duXCI6aGY9ITA7YnJlYWs7Y2FzZSBcImNvbnRleHRtZW51XCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwiZHJhZ2VuZFwiOnJldHVybiBoZj0hMSxqZihjLGQpO2Nhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjppZihjZilicmVhaztcbmNhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6cmV0dXJuIGpmKGMsZCl9cmV0dXJuIG51bGx9fSxsZj1HLmV4dGVuZCh7YW5pbWF0aW9uTmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfSksbWY9Ry5leHRlbmQoe2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuXCJjbGlwYm9hcmREYXRhXCJpbiBhP2EuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSxuZj1OZS5leHRlbmQoe3JlbGF0ZWRUYXJnZXQ6bnVsbH0pO2Z1bmN0aW9uIG9mKGEpe3ZhciBiPWEua2V5Q29kZTtcImNoYXJDb2RlXCJpbiBhPyhhPWEuY2hhckNvZGUsMD09PWEmJjEzPT09YiYmKGE9MTMpKTphPWI7MTA9PT1hJiYoYT0xMyk7cmV0dXJuIDMyPD1hfHwxMz09PWE/YTowfVxudmFyIHBmPXtFc2M6XCJFc2NhcGVcIixTcGFjZWJhcjpcIiBcIixMZWZ0OlwiQXJyb3dMZWZ0XCIsVXA6XCJBcnJvd1VwXCIsUmlnaHQ6XCJBcnJvd1JpZ2h0XCIsRG93bjpcIkFycm93RG93blwiLERlbDpcIkRlbGV0ZVwiLFdpbjpcIk9TXCIsTWVudTpcIkNvbnRleHRNZW51XCIsQXBwczpcIkNvbnRleHRNZW51XCIsU2Nyb2xsOlwiU2Nyb2xsTG9ja1wiLE1velByaW50YWJsZUtleTpcIlVuaWRlbnRpZmllZFwifSxxZj17ODpcIkJhY2tzcGFjZVwiLDk6XCJUYWJcIiwxMjpcIkNsZWFyXCIsMTM6XCJFbnRlclwiLDE2OlwiU2hpZnRcIiwxNzpcIkNvbnRyb2xcIiwxODpcIkFsdFwiLDE5OlwiUGF1c2VcIiwyMDpcIkNhcHNMb2NrXCIsMjc6XCJFc2NhcGVcIiwzMjpcIiBcIiwzMzpcIlBhZ2VVcFwiLDM0OlwiUGFnZURvd25cIiwzNTpcIkVuZFwiLDM2OlwiSG9tZVwiLDM3OlwiQXJyb3dMZWZ0XCIsMzg6XCJBcnJvd1VwXCIsMzk6XCJBcnJvd1JpZ2h0XCIsNDA6XCJBcnJvd0Rvd25cIiw0NTpcIkluc2VydFwiLDQ2OlwiRGVsZXRlXCIsMTEyOlwiRjFcIiwxMTM6XCJGMlwiLDExNDpcIkYzXCIsMTE1OlwiRjRcIixcbjExNjpcIkY1XCIsMTE3OlwiRjZcIiwxMTg6XCJGN1wiLDExOTpcIkY4XCIsMTIwOlwiRjlcIiwxMjE6XCJGMTBcIiwxMjI6XCJGMTFcIiwxMjM6XCJGMTJcIiwxNDQ6XCJOdW1Mb2NrXCIsMTQ1OlwiU2Nyb2xsTG9ja1wiLDIyNDpcIk1ldGFcIn0scmY9TmUuZXh0ZW5kKHtrZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPXBmW2Eua2V5XXx8YS5rZXk7aWYoXCJVbmlkZW50aWZpZWRcIiE9PWIpcmV0dXJuIGJ9cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlPyhhPW9mKGEpLDEzPT09YT9cIkVudGVyXCI6U3RyaW5nLmZyb21DaGFyQ29kZShhKSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9xZlthLmtleUNvZGVdfHxcIlVuaWRlbnRpZmllZFwiOlwiXCJ9LGxvY2F0aW9uOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLHJlcGVhdDpudWxsLGxvY2FsZTpudWxsLGdldE1vZGlmaWVyU3RhdGU6UWUsY2hhckNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09XG5hLnR5cGU/b2YoYSk6MH0sa2V5Q29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/b2YoYSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH19KSxzZj1WZS5leHRlbmQoe2RhdGFUcmFuc2ZlcjpudWxsfSksdGY9TmUuZXh0ZW5kKHt0b3VjaGVzOm51bGwsdGFyZ2V0VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6UWV9KSx1Zj1HLmV4dGVuZCh7cHJvcGVydHlOYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9KSx2Zj1WZS5leHRlbmQoe2RlbHRhWDpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWFwiaW4gYT9hLmRlbHRhWDpcIndoZWVsRGVsdGFYXCJpblxuYT8tYS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJkZWx0YVlcImluIGE/YS5kZWx0YVk6XCJ3aGVlbERlbHRhWVwiaW4gYT8tYS53aGVlbERlbHRhWTpcIndoZWVsRGVsdGFcImluIGE/LWEud2hlZWxEZWx0YTowfSxkZWx0YVo6bnVsbCxkZWx0YU1vZGU6bnVsbH0pLHdmPXtldmVudFR5cGVzOldjLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9WWMuZ2V0KGEpO2lmKCFlKXJldHVybiBudWxsO3N3aXRjaChhKXtjYXNlIFwia2V5cHJlc3NcIjppZigwPT09b2YoYykpcmV0dXJuIG51bGw7Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjphPXJmO2JyZWFrO2Nhc2UgXCJibHVyXCI6Y2FzZSBcImZvY3VzXCI6YT1uZjticmVhaztjYXNlIFwiY2xpY2tcIjppZigyPT09Yy5idXR0b24pcmV0dXJuIG51bGw7Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwiY29udGV4dG1lbnVcIjphPVxuVmU7YnJlYWs7Y2FzZSBcImRyYWdcIjpjYXNlIFwiZHJhZ2VuZFwiOmNhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2V4aXRcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6Y2FzZSBcImRyYWdvdmVyXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6YT1zZjticmVhaztjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjphPXRmO2JyZWFrO2Nhc2UgWGI6Y2FzZSBZYjpjYXNlIFpiOmE9bGY7YnJlYWs7Y2FzZSAkYjphPXVmO2JyZWFrO2Nhc2UgXCJzY3JvbGxcIjphPU5lO2JyZWFrO2Nhc2UgXCJ3aGVlbFwiOmE9dmY7YnJlYWs7Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcInBhc3RlXCI6YT1tZjticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVydXBcIjphPVxuV2U7YnJlYWs7ZGVmYXVsdDphPUd9Yj1hLmdldFBvb2xlZChlLGIsYyxkKTtYZChiKTtyZXR1cm4gYn19O2lmKHBhKXRocm93IEVycm9yKHUoMTAxKSk7cGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoXCJSZXNwb25kZXJFdmVudFBsdWdpbiBTaW1wbGVFdmVudFBsdWdpbiBFbnRlckxlYXZlRXZlbnRQbHVnaW4gQ2hhbmdlRXZlbnRQbHVnaW4gU2VsZWN0RXZlbnRQbHVnaW4gQmVmb3JlSW5wdXRFdmVudFBsdWdpblwiLnNwbGl0KFwiIFwiKSk7cmEoKTt2YXIgeGY9TmM7bGE9UWQ7bWE9eGY7bmE9UGQ7eGEoe1NpbXBsZUV2ZW50UGx1Z2luOndmLEVudGVyTGVhdmVFdmVudFBsdWdpbjpZZSxDaGFuZ2VFdmVudFBsdWdpbjpNZSxTZWxlY3RFdmVudFBsdWdpbjprZixCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOnZlfSk7dmFyIHlmPVtdLHpmPS0xO2Z1bmN0aW9uIEgoYSl7MD56Znx8KGEuY3VycmVudD15Zlt6Zl0seWZbemZdPW51bGwsemYtLSl9XG5mdW5jdGlvbiBJKGEsYil7emYrKzt5Zlt6Zl09YS5jdXJyZW50O2EuY3VycmVudD1ifXZhciBBZj17fSxKPXtjdXJyZW50OkFmfSxLPXtjdXJyZW50OiExfSxCZj1BZjtmdW5jdGlvbiBDZihhLGIpe3ZhciBjPWEudHlwZS5jb250ZXh0VHlwZXM7aWYoIWMpcmV0dXJuIEFmO3ZhciBkPWEuc3RhdGVOb2RlO2lmKGQmJmQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PWIpcmV0dXJuIGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIGU9e30sZjtmb3IoZiBpbiBjKWVbZl09YltmXTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9YixhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWUpO3JldHVybiBlfWZ1bmN0aW9uIEwoYSl7YT1hLmNoaWxkQ29udGV4dFR5cGVzO3JldHVybiBudWxsIT09YSYmdm9pZCAwIT09YX1cbmZ1bmN0aW9uIERmKCl7SChLKTtIKEopfWZ1bmN0aW9uIEVmKGEsYixjKXtpZihKLmN1cnJlbnQhPT1BZil0aHJvdyBFcnJvcih1KDE2OCkpO0koSixiKTtJKEssYyl9ZnVuY3Rpb24gRmYoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2E9Yi5jaGlsZENvbnRleHRUeXBlcztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZC5nZXRDaGlsZENvbnRleHQpcmV0dXJuIGM7ZD1kLmdldENoaWxkQ29udGV4dCgpO2Zvcih2YXIgZSBpbiBkKWlmKCEoZSBpbiBhKSl0aHJvdyBFcnJvcih1KDEwOCxwYihiKXx8XCJVbmtub3duXCIsZSkpO3JldHVybiBuKHt9LGMse30sZCl9ZnVuY3Rpb24gR2YoYSl7YT0oYT1hLnN0YXRlTm9kZSkmJmEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fEFmO0JmPUouY3VycmVudDtJKEosYSk7SShLLEsuY3VycmVudCk7cmV0dXJuITB9XG5mdW5jdGlvbiBIZihhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoIWQpdGhyb3cgRXJyb3IodSgxNjkpKTtjPyhhPUZmKGEsYixCZiksZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dD1hLEgoSyksSChKKSxJKEosYSkpOkgoSyk7SShLLGMpfVxudmFyIElmPXIudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5LEpmPXIudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxLZj1yLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLExmPXIudW5zdGFibGVfcmVxdWVzdFBhaW50LE1mPXIudW5zdGFibGVfbm93LE5mPXIudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsT2Y9ci51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxQZj1yLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LFFmPXIudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksUmY9ci51bnN0YWJsZV9Mb3dQcmlvcml0eSxTZj1yLnVuc3RhYmxlX0lkbGVQcmlvcml0eSxUZj17fSxVZj1yLnVuc3RhYmxlX3Nob3VsZFlpZWxkLFZmPXZvaWQgMCE9PUxmP0xmOmZ1bmN0aW9uKCl7fSxXZj1udWxsLFhmPW51bGwsWWY9ITEsWmY9TWYoKSwkZj0xRTQ+WmY/TWY6ZnVuY3Rpb24oKXtyZXR1cm4gTWYoKS1aZn07XG5mdW5jdGlvbiBhZygpe3N3aXRjaChOZigpKXtjYXNlIE9mOnJldHVybiA5OTtjYXNlIFBmOnJldHVybiA5ODtjYXNlIFFmOnJldHVybiA5NztjYXNlIFJmOnJldHVybiA5NjtjYXNlIFNmOnJldHVybiA5NTtkZWZhdWx0OnRocm93IEVycm9yKHUoMzMyKSk7fX1mdW5jdGlvbiBiZyhhKXtzd2l0Y2goYSl7Y2FzZSA5OTpyZXR1cm4gT2Y7Y2FzZSA5ODpyZXR1cm4gUGY7Y2FzZSA5NzpyZXR1cm4gUWY7Y2FzZSA5NjpyZXR1cm4gUmY7Y2FzZSA5NTpyZXR1cm4gU2Y7ZGVmYXVsdDp0aHJvdyBFcnJvcih1KDMzMikpO319ZnVuY3Rpb24gY2coYSxiKXthPWJnKGEpO3JldHVybiBJZihhLGIpfWZ1bmN0aW9uIGRnKGEsYixjKXthPWJnKGEpO3JldHVybiBKZihhLGIsYyl9ZnVuY3Rpb24gZWcoYSl7bnVsbD09PVdmPyhXZj1bYV0sWGY9SmYoT2YsZmcpKTpXZi5wdXNoKGEpO3JldHVybiBUZn1mdW5jdGlvbiBnZygpe2lmKG51bGwhPT1YZil7dmFyIGE9WGY7WGY9bnVsbDtLZihhKX1mZygpfVxuZnVuY3Rpb24gZmcoKXtpZighWWYmJm51bGwhPT1XZil7WWY9ITA7dmFyIGE9MDt0cnl7dmFyIGI9V2Y7Y2coOTksZnVuY3Rpb24oKXtmb3IoO2E8Yi5sZW5ndGg7YSsrKXt2YXIgYz1iW2FdO2RvIGM9YyghMCk7d2hpbGUobnVsbCE9PWMpfX0pO1dmPW51bGx9Y2F0Y2goYyl7dGhyb3cgbnVsbCE9PVdmJiYoV2Y9V2Yuc2xpY2UoYSsxKSksSmYoT2YsZ2cpLGM7fWZpbmFsbHl7WWY9ITF9fX1mdW5jdGlvbiBoZyhhLGIsYyl7Yy89MTA7cmV0dXJuIDEwNzM3NDE4MjEtKCgoMTA3Mzc0MTgyMS1hK2IvMTApL2N8MCkrMSkqY31mdW5jdGlvbiBpZyhhLGIpe2lmKGEmJmEuZGVmYXVsdFByb3BzKXtiPW4oe30sYik7YT1hLmRlZmF1bHRQcm9wcztmb3IodmFyIGMgaW4gYSl2b2lkIDA9PT1iW2NdJiYoYltjXT1hW2NdKX1yZXR1cm4gYn12YXIgamc9e2N1cnJlbnQ6bnVsbH0sa2c9bnVsbCxsZz1udWxsLG1nPW51bGw7ZnVuY3Rpb24gbmcoKXttZz1sZz1rZz1udWxsfVxuZnVuY3Rpb24gb2coYSl7dmFyIGI9amcuY3VycmVudDtIKGpnKTthLnR5cGUuX2NvbnRleHQuX2N1cnJlbnRWYWx1ZT1ifWZ1bmN0aW9uIHBnKGEsYil7Zm9yKDtudWxsIT09YTspe3ZhciBjPWEuYWx0ZXJuYXRlO2lmKGEuY2hpbGRFeHBpcmF0aW9uVGltZTxiKWEuY2hpbGRFeHBpcmF0aW9uVGltZT1iLG51bGwhPT1jJiZjLmNoaWxkRXhwaXJhdGlvblRpbWU8YiYmKGMuY2hpbGRFeHBpcmF0aW9uVGltZT1iKTtlbHNlIGlmKG51bGwhPT1jJiZjLmNoaWxkRXhwaXJhdGlvblRpbWU8YiljLmNoaWxkRXhwaXJhdGlvblRpbWU9YjtlbHNlIGJyZWFrO2E9YS5yZXR1cm59fWZ1bmN0aW9uIHFnKGEsYil7a2c9YTttZz1sZz1udWxsO2E9YS5kZXBlbmRlbmNpZXM7bnVsbCE9PWEmJm51bGwhPT1hLmZpcnN0Q29udGV4dCYmKGEuZXhwaXJhdGlvblRpbWU+PWImJihyZz0hMCksYS5maXJzdENvbnRleHQ9bnVsbCl9XG5mdW5jdGlvbiBzZyhhLGIpe2lmKG1nIT09YSYmITEhPT1iJiYwIT09Yil7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBifHwxMDczNzQxODIzPT09YiltZz1hLGI9MTA3Mzc0MTgyMztiPXtjb250ZXh0OmEsb2JzZXJ2ZWRCaXRzOmIsbmV4dDpudWxsfTtpZihudWxsPT09bGcpe2lmKG51bGw9PT1rZyl0aHJvdyBFcnJvcih1KDMwOCkpO2xnPWI7a2cuZGVwZW5kZW5jaWVzPXtleHBpcmF0aW9uVGltZTowLGZpcnN0Q29udGV4dDpiLHJlc3BvbmRlcnM6bnVsbH19ZWxzZSBsZz1sZy5uZXh0PWJ9cmV0dXJuIGEuX2N1cnJlbnRWYWx1ZX12YXIgdGc9ITE7ZnVuY3Rpb24gdWcoYSl7YS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEubWVtb2l6ZWRTdGF0ZSxiYXNlUXVldWU6bnVsbCxzaGFyZWQ6e3BlbmRpbmc6bnVsbH0sZWZmZWN0czpudWxsfX1cbmZ1bmN0aW9uIHZnKGEsYil7YT1hLnVwZGF0ZVF1ZXVlO2IudXBkYXRlUXVldWU9PT1hJiYoYi51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEuYmFzZVN0YXRlLGJhc2VRdWV1ZTphLmJhc2VRdWV1ZSxzaGFyZWQ6YS5zaGFyZWQsZWZmZWN0czphLmVmZmVjdHN9KX1mdW5jdGlvbiB3ZyhhLGIpe2E9e2V4cGlyYXRpb25UaW1lOmEsc3VzcGVuc2VDb25maWc6Yix0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9O3JldHVybiBhLm5leHQ9YX1mdW5jdGlvbiB4ZyhhLGIpe2E9YS51cGRhdGVRdWV1ZTtpZihudWxsIT09YSl7YT1hLnNoYXJlZDt2YXIgYz1hLnBlbmRpbmc7bnVsbD09PWM/Yi5uZXh0PWI6KGIubmV4dD1jLm5leHQsYy5uZXh0PWIpO2EucGVuZGluZz1ifX1cbmZ1bmN0aW9uIHlnKGEsYil7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbCE9PWMmJnZnKGMsYSk7YT1hLnVwZGF0ZVF1ZXVlO2M9YS5iYXNlUXVldWU7bnVsbD09PWM/KGEuYmFzZVF1ZXVlPWIubmV4dD1iLGIubmV4dD1iKTooYi5uZXh0PWMubmV4dCxjLm5leHQ9Yil9XG5mdW5jdGlvbiB6ZyhhLGIsYyxkKXt2YXIgZT1hLnVwZGF0ZVF1ZXVlO3RnPSExO3ZhciBmPWUuYmFzZVF1ZXVlLGc9ZS5zaGFyZWQucGVuZGluZztpZihudWxsIT09Zyl7aWYobnVsbCE9PWYpe3ZhciBoPWYubmV4dDtmLm5leHQ9Zy5uZXh0O2cubmV4dD1ofWY9ZztlLnNoYXJlZC5wZW5kaW5nPW51bGw7aD1hLmFsdGVybmF0ZTtudWxsIT09aCYmKGg9aC51cGRhdGVRdWV1ZSxudWxsIT09aCYmKGguYmFzZVF1ZXVlPWcpKX1pZihudWxsIT09Zil7aD1mLm5leHQ7dmFyIGs9ZS5iYXNlU3RhdGUsbD0wLG09bnVsbCxwPW51bGwseD1udWxsO2lmKG51bGwhPT1oKXt2YXIgej1oO2Rve2c9ei5leHBpcmF0aW9uVGltZTtpZihnPGQpe3ZhciBjYT17ZXhwaXJhdGlvblRpbWU6ei5leHBpcmF0aW9uVGltZSxzdXNwZW5zZUNvbmZpZzp6LnN1c3BlbnNlQ29uZmlnLHRhZzp6LnRhZyxwYXlsb2FkOnoucGF5bG9hZCxjYWxsYmFjazp6LmNhbGxiYWNrLG5leHQ6bnVsbH07bnVsbD09PXg/KHA9eD1cbmNhLG09ayk6eD14Lm5leHQ9Y2E7Zz5sJiYobD1nKX1lbHNle251bGwhPT14JiYoeD14Lm5leHQ9e2V4cGlyYXRpb25UaW1lOjEwNzM3NDE4MjMsc3VzcGVuc2VDb25maWc6ei5zdXNwZW5zZUNvbmZpZyx0YWc6ei50YWcscGF5bG9hZDp6LnBheWxvYWQsY2FsbGJhY2s6ei5jYWxsYmFjayxuZXh0Om51bGx9KTtBZyhnLHouc3VzcGVuc2VDb25maWcpO2E6e3ZhciBEPWEsdD16O2c9YjtjYT1jO3N3aXRjaCh0LnRhZyl7Y2FzZSAxOkQ9dC5wYXlsb2FkO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBEKXtrPUQuY2FsbChjYSxrLGcpO2JyZWFrIGF9az1EO2JyZWFrIGE7Y2FzZSAzOkQuZWZmZWN0VGFnPUQuZWZmZWN0VGFnJi00MDk3fDY0O2Nhc2UgMDpEPXQucGF5bG9hZDtnPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBEP0QuY2FsbChjYSxrLGcpOkQ7aWYobnVsbD09PWd8fHZvaWQgMD09PWcpYnJlYWsgYTtrPW4oe30sayxnKTticmVhayBhO2Nhc2UgMjp0Zz0hMH19bnVsbCE9PXouY2FsbGJhY2smJlxuKGEuZWZmZWN0VGFnfD0zMixnPWUuZWZmZWN0cyxudWxsPT09Zz9lLmVmZmVjdHM9W3pdOmcucHVzaCh6KSl9ej16Lm5leHQ7aWYobnVsbD09PXp8fHo9PT1oKWlmKGc9ZS5zaGFyZWQucGVuZGluZyxudWxsPT09ZylicmVhaztlbHNlIHo9Zi5uZXh0PWcubmV4dCxnLm5leHQ9aCxlLmJhc2VRdWV1ZT1mPWcsZS5zaGFyZWQucGVuZGluZz1udWxsfXdoaWxlKDEpfW51bGw9PT14P209azp4Lm5leHQ9cDtlLmJhc2VTdGF0ZT1tO2UuYmFzZVF1ZXVlPXg7QmcobCk7YS5leHBpcmF0aW9uVGltZT1sO2EubWVtb2l6ZWRTdGF0ZT1rfX1cbmZ1bmN0aW9uIENnKGEsYixjKXthPWIuZWZmZWN0cztiLmVmZmVjdHM9bnVsbDtpZihudWxsIT09YSlmb3IoYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgZD1hW2JdLGU9ZC5jYWxsYmFjaztpZihudWxsIT09ZSl7ZC5jYWxsYmFjaz1udWxsO2Q9ZTtlPWM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGQpdGhyb3cgRXJyb3IodSgxOTEsZCkpO2QuY2FsbChlKX19fXZhciBEZz1XYS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxFZz0obmV3IGFhLkNvbXBvbmVudCkucmVmcztmdW5jdGlvbiBGZyhhLGIsYyxkKXtiPWEubWVtb2l6ZWRTdGF0ZTtjPWMoZCxiKTtjPW51bGw9PT1jfHx2b2lkIDA9PT1jP2I6bih7fSxiLGMpO2EubWVtb2l6ZWRTdGF0ZT1jOzA9PT1hLmV4cGlyYXRpb25UaW1lJiYoYS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9Yyl9XG52YXIgSmc9e2lzTW91bnRlZDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLl9yZWFjdEludGVybmFsRmliZXIpP2RjKGEpPT09YTohMX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxGaWJlcjt2YXIgZD1HZygpLGU9RGcuc3VzcGVuc2U7ZD1IZyhkLGEsZSk7ZT13ZyhkLGUpO2UucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZS5jYWxsYmFjaz1jKTt4ZyhhLGUpO0lnKGEsZCl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbEZpYmVyO3ZhciBkPUdnKCksZT1EZy5zdXNwZW5zZTtkPUhnKGQsYSxlKTtlPXdnKGQsZSk7ZS50YWc9MTtlLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGUuY2FsbGJhY2s9Yyk7eGcoYSxlKTtJZyhhLGQpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oYSxiKXthPWEuX3JlYWN0SW50ZXJuYWxGaWJlcjt2YXIgYz1HZygpLGQ9RGcuc3VzcGVuc2U7XG5jPUhnKGMsYSxkKTtkPXdnKGMsZCk7ZC50YWc9Mjt2b2lkIDAhPT1iJiZudWxsIT09YiYmKGQuY2FsbGJhY2s9Yik7eGcoYSxkKTtJZyhhLGMpfX07ZnVuY3Rpb24gS2coYSxiLGMsZCxlLGYsZyl7YT1hLnN0YXRlTm9kZTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5zaG91bGRDb21wb25lbnRVcGRhdGU/YS5zaG91bGRDb21wb25lbnRVcGRhdGUoZCxmLGcpOmIucHJvdG90eXBlJiZiLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD8hYmYoYyxkKXx8IWJmKGUsZik6ITB9XG5mdW5jdGlvbiBMZyhhLGIsYyl7dmFyIGQ9ITEsZT1BZjt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/Zj1zZyhmKTooZT1MKGIpP0JmOkouY3VycmVudCxkPWIuY29udGV4dFR5cGVzLGY9KGQ9bnVsbCE9PWQmJnZvaWQgMCE9PWQpP0NmKGEsZSk6QWYpO2I9bmV3IGIoYyxmKTthLm1lbW9pemVkU3RhdGU9bnVsbCE9PWIuc3RhdGUmJnZvaWQgMCE9PWIuc3RhdGU/Yi5zdGF0ZTpudWxsO2IudXBkYXRlcj1KZzthLnN0YXRlTm9kZT1iO2IuX3JlYWN0SW50ZXJuYWxGaWJlcj1hO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1lLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9Zik7cmV0dXJuIGJ9XG5mdW5jdGlvbiBNZyhhLGIsYyxkKXthPWIuc3RhdGU7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtiLnN0YXRlIT09YSYmSmcuZW5xdWV1ZVJlcGxhY2VTdGF0ZShiLGIuc3RhdGUsbnVsbCl9XG5mdW5jdGlvbiBOZyhhLGIsYyxkKXt2YXIgZT1hLnN0YXRlTm9kZTtlLnByb3BzPWM7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7ZS5yZWZzPUVnO3VnKGEpO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9lLmNvbnRleHQ9c2coZik6KGY9TChiKT9CZjpKLmN1cnJlbnQsZS5jb250ZXh0PUNmKGEsZikpO3pnKGEsYyxlLGQpO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2Y9Yi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJihGZyhhLGIsZixjKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50fHxcbihiPWUuc3RhdGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50JiZlLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLGIhPT1lLnN0YXRlJiZKZy5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsZS5zdGF0ZSxudWxsKSx6ZyhhLGMsZSxkKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50RGlkTW91bnQmJihhLmVmZmVjdFRhZ3w9NCl9dmFyIE9nPUFycmF5LmlzQXJyYXk7XG5mdW5jdGlvbiBQZyhhLGIsYyl7YT1jLnJlZjtpZihudWxsIT09YSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGEmJlwib2JqZWN0XCIhPT10eXBlb2YgYSl7aWYoYy5fb3duZXIpe2M9Yy5fb3duZXI7aWYoYyl7aWYoMSE9PWMudGFnKXRocm93IEVycm9yKHUoMzA5KSk7dmFyIGQ9Yy5zdGF0ZU5vZGV9aWYoIWQpdGhyb3cgRXJyb3IodSgxNDcsYSkpO3ZhciBlPVwiXCIrYTtpZihudWxsIT09YiYmbnVsbCE9PWIucmVmJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5yZWYmJmIucmVmLl9zdHJpbmdSZWY9PT1lKXJldHVybiBiLnJlZjtiPWZ1bmN0aW9uKGEpe3ZhciBiPWQucmVmcztiPT09RWcmJihiPWQucmVmcz17fSk7bnVsbD09PWE/ZGVsZXRlIGJbZV06YltlXT1hfTtiLl9zdHJpbmdSZWY9ZTtyZXR1cm4gYn1pZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IodSgyODQpKTtpZighYy5fb3duZXIpdGhyb3cgRXJyb3IodSgyOTAsYSkpO31yZXR1cm4gYX1cbmZ1bmN0aW9uIFFnKGEsYil7aWYoXCJ0ZXh0YXJlYVwiIT09YS50eXBlKXRocm93IEVycm9yKHUoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGIpLmpvaW4oXCIsIFwiKStcIn1cIjpiLFwiXCIpKTt9XG5mdW5jdGlvbiBSZyhhKXtmdW5jdGlvbiBiKGIsYyl7aWYoYSl7dmFyIGQ9Yi5sYXN0RWZmZWN0O251bGwhPT1kPyhkLm5leHRFZmZlY3Q9YyxiLmxhc3RFZmZlY3Q9Yyk6Yi5maXJzdEVmZmVjdD1iLmxhc3RFZmZlY3Q9YztjLm5leHRFZmZlY3Q9bnVsbDtjLmVmZmVjdFRhZz04fX1mdW5jdGlvbiBjKGMsZCl7aWYoIWEpcmV0dXJuIG51bGw7Zm9yKDtudWxsIT09ZDspYihjLGQpLGQ9ZC5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIGQoYSxiKXtmb3IoYT1uZXcgTWFwO251bGwhPT1iOyludWxsIT09Yi5rZXk/YS5zZXQoYi5rZXksYik6YS5zZXQoYi5pbmRleCxiKSxiPWIuc2libGluZztyZXR1cm4gYX1mdW5jdGlvbiBlKGEsYil7YT1TZyhhLGIpO2EuaW5kZXg9MDthLnNpYmxpbmc9bnVsbDtyZXR1cm4gYX1mdW5jdGlvbiBmKGIsYyxkKXtiLmluZGV4PWQ7aWYoIWEpcmV0dXJuIGM7ZD1iLmFsdGVybmF0ZTtpZihudWxsIT09ZClyZXR1cm4gZD1kLmluZGV4LGQ8Yz8oYi5lZmZlY3RUYWc9XG4yLGMpOmQ7Yi5lZmZlY3RUYWc9MjtyZXR1cm4gY31mdW5jdGlvbiBnKGIpe2EmJm51bGw9PT1iLmFsdGVybmF0ZSYmKGIuZWZmZWN0VGFnPTIpO3JldHVybiBifWZ1bmN0aW9uIGgoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDYhPT1iLnRhZylyZXR1cm4gYj1UZyhjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBrKGEsYixjLGQpe2lmKG51bGwhPT1iJiZiLmVsZW1lbnRUeXBlPT09Yy50eXBlKXJldHVybiBkPWUoYixjLnByb3BzKSxkLnJlZj1QZyhhLGIsYyksZC5yZXR1cm49YSxkO2Q9VWcoYy50eXBlLGMua2V5LGMucHJvcHMsbnVsbCxhLm1vZGUsZCk7ZC5yZWY9UGcoYSxiLGMpO2QucmV0dXJuPWE7cmV0dXJuIGR9ZnVuY3Rpb24gbChhLGIsYyxkKXtpZihudWxsPT09Ynx8NCE9PWIudGFnfHxiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09Yy5jb250YWluZXJJbmZvfHxiLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PVxuYy5pbXBsZW1lbnRhdGlvbilyZXR1cm4gYj1WZyhjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYy5jaGlsZHJlbnx8W10pO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gbShhLGIsYyxkLGYpe2lmKG51bGw9PT1ifHw3IT09Yi50YWcpcmV0dXJuIGI9V2coYyxhLm1vZGUsZCxmKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBwKGEsYixjKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGJ8fFwibnVtYmVyXCI9PT10eXBlb2YgYilyZXR1cm4gYj1UZyhcIlwiK2IsYS5tb2RlLGMpLGIucmV0dXJuPWEsYjtpZihcIm9iamVjdFwiPT09dHlwZW9mIGImJm51bGwhPT1iKXtzd2l0Y2goYi4kJHR5cGVvZil7Y2FzZSBaYTpyZXR1cm4gYz1VZyhiLnR5cGUsYi5rZXksYi5wcm9wcyxudWxsLGEubW9kZSxjKSxjLnJlZj1QZyhhLG51bGwsYiksYy5yZXR1cm49YSxjO2Nhc2UgJGE6cmV0dXJuIGI9VmcoYixhLm1vZGUsYyksYi5yZXR1cm49YSxifWlmKE9nKGIpfHxcbm5iKGIpKXJldHVybiBiPVdnKGIsYS5tb2RlLGMsbnVsbCksYi5yZXR1cm49YSxiO1FnKGEsYil9cmV0dXJuIG51bGx9ZnVuY3Rpb24geChhLGIsYyxkKXt2YXIgZT1udWxsIT09Yj9iLmtleTpudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgY3x8XCJudW1iZXJcIj09PXR5cGVvZiBjKXJldHVybiBudWxsIT09ZT9udWxsOmgoYSxiLFwiXCIrYyxkKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jKXtzd2l0Y2goYy4kJHR5cGVvZil7Y2FzZSBaYTpyZXR1cm4gYy5rZXk9PT1lP2MudHlwZT09PWFiP20oYSxiLGMucHJvcHMuY2hpbGRyZW4sZCxlKTprKGEsYixjLGQpOm51bGw7Y2FzZSAkYTpyZXR1cm4gYy5rZXk9PT1lP2woYSxiLGMsZCk6bnVsbH1pZihPZyhjKXx8bmIoYykpcmV0dXJuIG51bGwhPT1lP251bGw6bShhLGIsYyxkLG51bGwpO1FnKGEsYyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24geihhLGIsYyxkLGUpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgZHx8XCJudW1iZXJcIj09PXR5cGVvZiBkKXJldHVybiBhPVxuYS5nZXQoYyl8fG51bGwsaChiLGEsXCJcIitkLGUpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZCYmbnVsbCE9PWQpe3N3aXRjaChkLiQkdHlwZW9mKXtjYXNlIFphOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxkLnR5cGU9PT1hYj9tKGIsYSxkLnByb3BzLmNoaWxkcmVuLGUsZC5rZXkpOmsoYixhLGQsZSk7Y2FzZSAkYTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsbChiLGEsZCxlKX1pZihPZyhkKXx8bmIoZCkpcmV0dXJuIGE9YS5nZXQoYyl8fG51bGwsbShiLGEsZCxlLG51bGwpO1FnKGIsZCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY2EoZSxnLGgsayl7Zm9yKHZhciBsPW51bGwsdD1udWxsLG09Zyx5PWc9MCxBPW51bGw7bnVsbCE9PW0mJnk8aC5sZW5ndGg7eSsrKXttLmluZGV4Pnk/KEE9bSxtPW51bGwpOkE9bS5zaWJsaW5nO3ZhciBxPXgoZSxtLGhbeV0sayk7aWYobnVsbD09PXEpe251bGw9PT1tJiYobT1BKTticmVha31hJiZcbm0mJm51bGw9PT1xLmFsdGVybmF0ZSYmYihlLG0pO2c9ZihxLGcseSk7bnVsbD09PXQ/bD1xOnQuc2libGluZz1xO3Q9cTttPUF9aWYoeT09PWgubGVuZ3RoKXJldHVybiBjKGUsbSksbDtpZihudWxsPT09bSl7Zm9yKDt5PGgubGVuZ3RoO3krKyltPXAoZSxoW3ldLGspLG51bGwhPT1tJiYoZz1mKG0sZyx5KSxudWxsPT09dD9sPW06dC5zaWJsaW5nPW0sdD1tKTtyZXR1cm4gbH1mb3IobT1kKGUsbSk7eTxoLmxlbmd0aDt5KyspQT16KG0sZSx5LGhbeV0sayksbnVsbCE9PUEmJihhJiZudWxsIT09QS5hbHRlcm5hdGUmJm0uZGVsZXRlKG51bGw9PT1BLmtleT95OkEua2V5KSxnPWYoQSxnLHkpLG51bGw9PT10P2w9QTp0LnNpYmxpbmc9QSx0PUEpO2EmJm0uZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7cmV0dXJuIGx9ZnVuY3Rpb24gRChlLGcsaCxsKXt2YXIgaz1uYihoKTtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2Ygayl0aHJvdyBFcnJvcih1KDE1MCkpO2g9ay5jYWxsKGgpO1xuaWYobnVsbD09aCl0aHJvdyBFcnJvcih1KDE1MSkpO2Zvcih2YXIgbT1rPW51bGwsdD1nLHk9Zz0wLEE9bnVsbCxxPWgubmV4dCgpO251bGwhPT10JiYhcS5kb25lO3krKyxxPWgubmV4dCgpKXt0LmluZGV4Pnk/KEE9dCx0PW51bGwpOkE9dC5zaWJsaW5nO3ZhciBEPXgoZSx0LHEudmFsdWUsbCk7aWYobnVsbD09PUQpe251bGw9PT10JiYodD1BKTticmVha31hJiZ0JiZudWxsPT09RC5hbHRlcm5hdGUmJmIoZSx0KTtnPWYoRCxnLHkpO251bGw9PT1tP2s9RDptLnNpYmxpbmc9RDttPUQ7dD1BfWlmKHEuZG9uZSlyZXR1cm4gYyhlLHQpLGs7aWYobnVsbD09PXQpe2Zvcig7IXEuZG9uZTt5KysscT1oLm5leHQoKSlxPXAoZSxxLnZhbHVlLGwpLG51bGwhPT1xJiYoZz1mKHEsZyx5KSxudWxsPT09bT9rPXE6bS5zaWJsaW5nPXEsbT1xKTtyZXR1cm4ga31mb3IodD1kKGUsdCk7IXEuZG9uZTt5KysscT1oLm5leHQoKSlxPXoodCxlLHkscS52YWx1ZSxsKSxudWxsIT09cSYmKGEmJm51bGwhPT1cbnEuYWx0ZXJuYXRlJiZ0LmRlbGV0ZShudWxsPT09cS5rZXk/eTpxLmtleSksZz1mKHEsZyx5KSxudWxsPT09bT9rPXE6bS5zaWJsaW5nPXEsbT1xKTthJiZ0LmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO3JldHVybiBrfXJldHVybiBmdW5jdGlvbihhLGQsZixoKXt2YXIgaz1cIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLnR5cGU9PT1hYiYmbnVsbD09PWYua2V5O2smJihmPWYucHJvcHMuY2hpbGRyZW4pO3ZhciBsPVwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY7aWYobClzd2l0Y2goZi4kJHR5cGVvZil7Y2FzZSBaYTphOntsPWYua2V5O2ZvcihrPWQ7bnVsbCE9PWs7KXtpZihrLmtleT09PWwpe3N3aXRjaChrLnRhZyl7Y2FzZSA3OmlmKGYudHlwZT09PWFiKXtjKGEsay5zaWJsaW5nKTtkPWUoayxmLnByb3BzLmNoaWxkcmVuKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWJyZWFrO2RlZmF1bHQ6aWYoay5lbGVtZW50VHlwZT09PWYudHlwZSl7YyhhLFxuay5zaWJsaW5nKTtkPWUoayxmLnByb3BzKTtkLnJlZj1QZyhhLGssZik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX19YyhhLGspO2JyZWFrfWVsc2UgYihhLGspO2s9ay5zaWJsaW5nfWYudHlwZT09PWFiPyhkPVdnKGYucHJvcHMuY2hpbGRyZW4sYS5tb2RlLGgsZi5rZXkpLGQucmV0dXJuPWEsYT1kKTooaD1VZyhmLnR5cGUsZi5rZXksZi5wcm9wcyxudWxsLGEubW9kZSxoKSxoLnJlZj1QZyhhLGQsZiksaC5yZXR1cm49YSxhPWgpfXJldHVybiBnKGEpO2Nhc2UgJGE6YTp7Zm9yKGs9Zi5rZXk7bnVsbCE9PWQ7KXtpZihkLmtleT09PWspaWYoND09PWQudGFnJiZkLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09Zi5jb250YWluZXJJbmZvJiZkLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWYuaW1wbGVtZW50YXRpb24pe2MoYSxkLnNpYmxpbmcpO2Q9ZShkLGYuY2hpbGRyZW58fFtdKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWVsc2V7YyhhLGQpO2JyZWFrfWVsc2UgYihhLGQpO2Q9XG5kLnNpYmxpbmd9ZD1WZyhmLGEubW9kZSxoKTtkLnJldHVybj1hO2E9ZH1yZXR1cm4gZyhhKX1pZihcInN0cmluZ1wiPT09dHlwZW9mIGZ8fFwibnVtYmVyXCI9PT10eXBlb2YgZilyZXR1cm4gZj1cIlwiK2YsbnVsbCE9PWQmJjY9PT1kLnRhZz8oYyhhLGQuc2libGluZyksZD1lKGQsZiksZC5yZXR1cm49YSxhPWQpOihjKGEsZCksZD1UZyhmLGEubW9kZSxoKSxkLnJldHVybj1hLGE9ZCksZyhhKTtpZihPZyhmKSlyZXR1cm4gY2EoYSxkLGYsaCk7aWYobmIoZikpcmV0dXJuIEQoYSxkLGYsaCk7bCYmUWcoYSxmKTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGYmJiFrKXN3aXRjaChhLnRhZyl7Y2FzZSAxOmNhc2UgMDp0aHJvdyBhPWEudHlwZSxFcnJvcih1KDE1MixhLmRpc3BsYXlOYW1lfHxhLm5hbWV8fFwiQ29tcG9uZW50XCIpKTt9cmV0dXJuIGMoYSxkKX19dmFyIFhnPVJnKCEwKSxZZz1SZyghMSksWmc9e30sJGc9e2N1cnJlbnQ6Wmd9LGFoPXtjdXJyZW50OlpnfSxiaD17Y3VycmVudDpaZ307XG5mdW5jdGlvbiBjaChhKXtpZihhPT09WmcpdGhyb3cgRXJyb3IodSgxNzQpKTtyZXR1cm4gYX1mdW5jdGlvbiBkaChhLGIpe0koYmgsYik7SShhaCxhKTtJKCRnLFpnKTthPWIubm9kZVR5cGU7c3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDExOmI9KGI9Yi5kb2N1bWVudEVsZW1lbnQpP2IubmFtZXNwYWNlVVJJOk9iKG51bGwsXCJcIik7YnJlYWs7ZGVmYXVsdDphPTg9PT1hP2IucGFyZW50Tm9kZTpiLGI9YS5uYW1lc3BhY2VVUkl8fG51bGwsYT1hLnRhZ05hbWUsYj1PYihiLGEpfUgoJGcpO0koJGcsYil9ZnVuY3Rpb24gZWgoKXtIKCRnKTtIKGFoKTtIKGJoKX1mdW5jdGlvbiBmaChhKXtjaChiaC5jdXJyZW50KTt2YXIgYj1jaCgkZy5jdXJyZW50KTt2YXIgYz1PYihiLGEudHlwZSk7YiE9PWMmJihJKGFoLGEpLEkoJGcsYykpfWZ1bmN0aW9uIGdoKGEpe2FoLmN1cnJlbnQ9PT1hJiYoSCgkZyksSChhaCkpfXZhciBNPXtjdXJyZW50OjB9O1xuZnVuY3Rpb24gaGgoYSl7Zm9yKHZhciBiPWE7bnVsbCE9PWI7KXtpZigxMz09PWIudGFnKXt2YXIgYz1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWMmJihjPWMuZGVoeWRyYXRlZCxudWxsPT09Y3x8Yy5kYXRhPT09QmR8fGMuZGF0YT09PUNkKSlyZXR1cm4gYn1lbHNlIGlmKDE5PT09Yi50YWcmJnZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9PShiLmVmZmVjdFRhZyY2NCkpcmV0dXJuIGJ9ZWxzZSBpZihudWxsIT09Yi5jaGlsZCl7Yi5jaGlsZC5yZXR1cm49YjtiPWIuY2hpbGQ7Y29udGludWV9aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuIG51bGw7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfXJldHVybiBudWxsfWZ1bmN0aW9uIGloKGEsYil7cmV0dXJue3Jlc3BvbmRlcjphLHByb3BzOmJ9fVxudmFyIGpoPVdhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsa2g9V2EuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsbGg9MCxOPW51bGwsTz1udWxsLFA9bnVsbCxtaD0hMTtmdW5jdGlvbiBRKCl7dGhyb3cgRXJyb3IodSgzMjEpKTt9ZnVuY3Rpb24gbmgoYSxiKXtpZihudWxsPT09YilyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoJiZjPGEubGVuZ3RoO2MrKylpZighJGUoYVtjXSxiW2NdKSlyZXR1cm4hMTtyZXR1cm4hMH1cbmZ1bmN0aW9uIG9oKGEsYixjLGQsZSxmKXtsaD1mO049YjtiLm1lbW9pemVkU3RhdGU9bnVsbDtiLnVwZGF0ZVF1ZXVlPW51bGw7Yi5leHBpcmF0aW9uVGltZT0wO2poLmN1cnJlbnQ9bnVsbD09PWF8fG51bGw9PT1hLm1lbW9pemVkU3RhdGU/cGg6cWg7YT1jKGQsZSk7aWYoYi5leHBpcmF0aW9uVGltZT09PWxoKXtmPTA7ZG97Yi5leHBpcmF0aW9uVGltZT0wO2lmKCEoMjU+ZikpdGhyb3cgRXJyb3IodSgzMDEpKTtmKz0xO1A9Tz1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtqaC5jdXJyZW50PXJoO2E9YyhkLGUpfXdoaWxlKGIuZXhwaXJhdGlvblRpbWU9PT1saCl9amguY3VycmVudD1zaDtiPW51bGwhPT1PJiZudWxsIT09Ty5uZXh0O2xoPTA7UD1PPU49bnVsbDttaD0hMTtpZihiKXRocm93IEVycm9yKHUoMzAwKSk7cmV0dXJuIGF9XG5mdW5jdGlvbiB0aCgpe3ZhciBhPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O251bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZT1QPWE6UD1QLm5leHQ9YTtyZXR1cm4gUH1mdW5jdGlvbiB1aCgpe2lmKG51bGw9PT1PKXt2YXIgYT1OLmFsdGVybmF0ZTthPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgYT1PLm5leHQ7dmFyIGI9bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlOlAubmV4dDtpZihudWxsIT09YilQPWIsTz1hO2Vsc2V7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IodSgzMTApKTtPPWE7YT17bWVtb2l6ZWRTdGF0ZTpPLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOk8uYmFzZVN0YXRlLGJhc2VRdWV1ZTpPLmJhc2VRdWV1ZSxxdWV1ZTpPLnF1ZXVlLG5leHQ6bnVsbH07bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlPVA9YTpQPVAubmV4dD1hfXJldHVybiBQfVxuZnVuY3Rpb24gdmgoYSxiKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmJ9XG5mdW5jdGlvbiB3aChhKXt2YXIgYj11aCgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyBFcnJvcih1KDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO3ZhciBkPU8sZT1kLmJhc2VRdWV1ZSxmPWMucGVuZGluZztpZihudWxsIT09Zil7aWYobnVsbCE9PWUpe3ZhciBnPWUubmV4dDtlLm5leHQ9Zi5uZXh0O2YubmV4dD1nfWQuYmFzZVF1ZXVlPWU9ZjtjLnBlbmRpbmc9bnVsbH1pZihudWxsIT09ZSl7ZT1lLm5leHQ7ZD1kLmJhc2VTdGF0ZTt2YXIgaD1nPWY9bnVsbCxrPWU7ZG97dmFyIGw9ay5leHBpcmF0aW9uVGltZTtpZihsPGxoKXt2YXIgbT17ZXhwaXJhdGlvblRpbWU6ay5leHBpcmF0aW9uVGltZSxzdXNwZW5zZUNvbmZpZzprLnN1c3BlbnNlQ29uZmlnLGFjdGlvbjprLmFjdGlvbixlYWdlclJlZHVjZXI6ay5lYWdlclJlZHVjZXIsZWFnZXJTdGF0ZTprLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09aD8oZz1oPW0sZj1kKTpoPWgubmV4dD1tO2w+Ti5leHBpcmF0aW9uVGltZSYmXG4oTi5leHBpcmF0aW9uVGltZT1sLEJnKGwpKX1lbHNlIG51bGwhPT1oJiYoaD1oLm5leHQ9e2V4cGlyYXRpb25UaW1lOjEwNzM3NDE4MjMsc3VzcGVuc2VDb25maWc6ay5zdXNwZW5zZUNvbmZpZyxhY3Rpb246ay5hY3Rpb24sZWFnZXJSZWR1Y2VyOmsuZWFnZXJSZWR1Y2VyLGVhZ2VyU3RhdGU6ay5lYWdlclN0YXRlLG5leHQ6bnVsbH0pLEFnKGwsay5zdXNwZW5zZUNvbmZpZyksZD1rLmVhZ2VyUmVkdWNlcj09PWE/ay5lYWdlclN0YXRlOmEoZCxrLmFjdGlvbik7az1rLm5leHR9d2hpbGUobnVsbCE9PWsmJmshPT1lKTtudWxsPT09aD9mPWQ6aC5uZXh0PWc7JGUoZCxiLm1lbW9pemVkU3RhdGUpfHwocmc9ITApO2IubWVtb2l6ZWRTdGF0ZT1kO2IuYmFzZVN0YXRlPWY7Yi5iYXNlUXVldWU9aDtjLmxhc3RSZW5kZXJlZFN0YXRlPWR9cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxjLmRpc3BhdGNoXX1cbmZ1bmN0aW9uIHhoKGEpe3ZhciBiPXVoKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHUoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9Yy5kaXNwYXRjaCxlPWMucGVuZGluZyxmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZSl7Yy5wZW5kaW5nPW51bGw7dmFyIGc9ZT1lLm5leHQ7ZG8gZj1hKGYsZy5hY3Rpb24pLGc9Zy5uZXh0O3doaWxlKGchPT1lKTskZShmLGIubWVtb2l6ZWRTdGF0ZSl8fChyZz0hMCk7Yi5tZW1vaXplZFN0YXRlPWY7bnVsbD09PWIuYmFzZVF1ZXVlJiYoYi5iYXNlU3RhdGU9Zik7Yy5sYXN0UmVuZGVyZWRTdGF0ZT1mfXJldHVybltmLGRdfVxuZnVuY3Rpb24geWgoYSl7dmFyIGI9dGgoKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSYmKGE9YSgpKTtiLm1lbW9pemVkU3RhdGU9Yi5iYXNlU3RhdGU9YTthPWIucXVldWU9e3BlbmRpbmc6bnVsbCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6dmgsbGFzdFJlbmRlcmVkU3RhdGU6YX07YT1hLmRpc3BhdGNoPXpoLmJpbmQobnVsbCxOLGEpO3JldHVybltiLm1lbW9pemVkU3RhdGUsYV19ZnVuY3Rpb24gQWgoYSxiLGMsZCl7YT17dGFnOmEsY3JlYXRlOmIsZGVzdHJveTpjLGRlcHM6ZCxuZXh0Om51bGx9O2I9Ti51cGRhdGVRdWV1ZTtudWxsPT09Yj8oYj17bGFzdEVmZmVjdDpudWxsfSxOLnVwZGF0ZVF1ZXVlPWIsYi5sYXN0RWZmZWN0PWEubmV4dD1hKTooYz1iLmxhc3RFZmZlY3QsbnVsbD09PWM/Yi5sYXN0RWZmZWN0PWEubmV4dD1hOihkPWMubmV4dCxjLm5leHQ9YSxhLm5leHQ9ZCxiLmxhc3RFZmZlY3Q9YSkpO3JldHVybiBhfVxuZnVuY3Rpb24gQmgoKXtyZXR1cm4gdWgoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIENoKGEsYixjLGQpe3ZhciBlPXRoKCk7Ti5lZmZlY3RUYWd8PWE7ZS5tZW1vaXplZFN0YXRlPUFoKDF8YixjLHZvaWQgMCx2b2lkIDA9PT1kP251bGw6ZCl9ZnVuY3Rpb24gRGgoYSxiLGMsZCl7dmFyIGU9dWgoKTtkPXZvaWQgMD09PWQ/bnVsbDpkO3ZhciBmPXZvaWQgMDtpZihudWxsIT09Tyl7dmFyIGc9Ty5tZW1vaXplZFN0YXRlO2Y9Zy5kZXN0cm95O2lmKG51bGwhPT1kJiZuaChkLGcuZGVwcykpe0FoKGIsYyxmLGQpO3JldHVybn19Ti5lZmZlY3RUYWd8PWE7ZS5tZW1vaXplZFN0YXRlPUFoKDF8YixjLGYsZCl9ZnVuY3Rpb24gRWgoYSxiKXtyZXR1cm4gQ2goNTE2LDQsYSxiKX1mdW5jdGlvbiBGaChhLGIpe3JldHVybiBEaCg1MTYsNCxhLGIpfWZ1bmN0aW9uIEdoKGEsYil7cmV0dXJuIERoKDQsMixhLGIpfVxuZnVuY3Rpb24gSGgoYSxiKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYT1hKCksYihhKSxmdW5jdGlvbigpe2IobnVsbCl9O2lmKG51bGwhPT1iJiZ2b2lkIDAhPT1iKXJldHVybiBhPWEoKSxiLmN1cnJlbnQ9YSxmdW5jdGlvbigpe2IuY3VycmVudD1udWxsfX1mdW5jdGlvbiBJaChhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIERoKDQsMixIaC5iaW5kKG51bGwsYixhKSxjKX1mdW5jdGlvbiBKaCgpe31mdW5jdGlvbiBLaChhLGIpe3RoKCkubWVtb2l6ZWRTdGF0ZT1bYSx2b2lkIDA9PT1iP251bGw6Yl07cmV0dXJuIGF9ZnVuY3Rpb24gTGgoYSxiKXt2YXIgYz11aCgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmbmgoYixkWzFdKSlyZXR1cm4gZFswXTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9XG5mdW5jdGlvbiBNaChhLGIpe3ZhciBjPXVoKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZuaChiLGRbMV0pKXJldHVybiBkWzBdO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1mdW5jdGlvbiBOaChhLGIsYyl7dmFyIGQ9YWcoKTtjZyg5OD5kPzk4OmQsZnVuY3Rpb24oKXthKCEwKX0pO2NnKDk3PGQ/OTc6ZCxmdW5jdGlvbigpe3ZhciBkPWtoLnN1c3BlbnNlO2toLnN1c3BlbnNlPXZvaWQgMD09PWI/bnVsbDpiO3RyeXthKCExKSxjKCl9ZmluYWxseXtraC5zdXNwZW5zZT1kfX0pfVxuZnVuY3Rpb24gemgoYSxiLGMpe3ZhciBkPUdnKCksZT1EZy5zdXNwZW5zZTtkPUhnKGQsYSxlKTtlPXtleHBpcmF0aW9uVGltZTpkLHN1c3BlbnNlQ29uZmlnOmUsYWN0aW9uOmMsZWFnZXJSZWR1Y2VyOm51bGwsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07dmFyIGY9Yi5wZW5kaW5nO251bGw9PT1mP2UubmV4dD1lOihlLm5leHQ9Zi5uZXh0LGYubmV4dD1lKTtiLnBlbmRpbmc9ZTtmPWEuYWx0ZXJuYXRlO2lmKGE9PT1OfHxudWxsIT09ZiYmZj09PU4pbWg9ITAsZS5leHBpcmF0aW9uVGltZT1saCxOLmV4cGlyYXRpb25UaW1lPWxoO2Vsc2V7aWYoMD09PWEuZXhwaXJhdGlvblRpbWUmJihudWxsPT09Znx8MD09PWYuZXhwaXJhdGlvblRpbWUpJiYoZj1iLmxhc3RSZW5kZXJlZFJlZHVjZXIsbnVsbCE9PWYpKXRyeXt2YXIgZz1iLmxhc3RSZW5kZXJlZFN0YXRlLGg9ZihnLGMpO2UuZWFnZXJSZWR1Y2VyPWY7ZS5lYWdlclN0YXRlPWg7aWYoJGUoaCxnKSlyZXR1cm59Y2F0Y2goayl7fWZpbmFsbHl7fUlnKGEsXG5kKX19XG52YXIgc2g9e3JlYWRDb250ZXh0OnNnLHVzZUNhbGxiYWNrOlEsdXNlQ29udGV4dDpRLHVzZUVmZmVjdDpRLHVzZUltcGVyYXRpdmVIYW5kbGU6USx1c2VMYXlvdXRFZmZlY3Q6USx1c2VNZW1vOlEsdXNlUmVkdWNlcjpRLHVzZVJlZjpRLHVzZVN0YXRlOlEsdXNlRGVidWdWYWx1ZTpRLHVzZVJlc3BvbmRlcjpRLHVzZURlZmVycmVkVmFsdWU6USx1c2VUcmFuc2l0aW9uOlF9LHBoPXtyZWFkQ29udGV4dDpzZyx1c2VDYWxsYmFjazpLaCx1c2VDb250ZXh0OnNnLHVzZUVmZmVjdDpFaCx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4gQ2goNCwyLEhoLmJpbmQobnVsbCxiLGEpLGMpfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQ2goNCwyLGEsYil9LHVzZU1lbW86ZnVuY3Rpb24oYSxiKXt2YXIgYz10aCgpO2I9dm9pZCAwPT09Yj9udWxsOmI7YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLFxuYl07cmV0dXJuIGF9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoKCk7Yj12b2lkIDAhPT1jP2MoYik6YjtkLm1lbW9pemVkU3RhdGU9ZC5iYXNlU3RhdGU9YjthPWQucXVldWU9e3BlbmRpbmc6bnVsbCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YSxsYXN0UmVuZGVyZWRTdGF0ZTpifTthPWEuZGlzcGF0Y2g9emguYmluZChudWxsLE4sYSk7cmV0dXJuW2QubWVtb2l6ZWRTdGF0ZSxhXX0sdXNlUmVmOmZ1bmN0aW9uKGEpe3ZhciBiPXRoKCk7YT17Y3VycmVudDphfTtyZXR1cm4gYi5tZW1vaXplZFN0YXRlPWF9LHVzZVN0YXRlOnloLHVzZURlYnVnVmFsdWU6SmgsdXNlUmVzcG9uZGVyOmloLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz15aChhKSxkPWNbMF0sZT1jWzFdO0VoKGZ1bmN0aW9uKCl7dmFyIGM9a2guc3VzcGVuc2U7a2guc3VzcGVuc2U9dm9pZCAwPT09Yj9udWxsOmI7dHJ5e2UoYSl9ZmluYWxseXtraC5zdXNwZW5zZT1cbmN9fSxbYSxiXSk7cmV0dXJuIGR9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oYSl7dmFyIGI9eWgoITEpLGM9YlswXTtiPWJbMV07cmV0dXJuW0toKE5oLmJpbmQobnVsbCxiLGEpLFtiLGFdKSxjXX19LHFoPXtyZWFkQ29udGV4dDpzZyx1c2VDYWxsYmFjazpMaCx1c2VDb250ZXh0OnNnLHVzZUVmZmVjdDpGaCx1c2VJbXBlcmF0aXZlSGFuZGxlOkloLHVzZUxheW91dEVmZmVjdDpHaCx1c2VNZW1vOk1oLHVzZVJlZHVjZXI6d2gsdXNlUmVmOkJoLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHdoKHZoKX0sdXNlRGVidWdWYWx1ZTpKaCx1c2VSZXNwb25kZXI6aWgsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPXdoKHZoKSxkPWNbMF0sZT1jWzFdO0ZoKGZ1bmN0aW9uKCl7dmFyIGM9a2guc3VzcGVuc2U7a2guc3VzcGVuc2U9dm9pZCAwPT09Yj9udWxsOmI7dHJ5e2UoYSl9ZmluYWxseXtraC5zdXNwZW5zZT1jfX0sW2EsYl0pO3JldHVybiBkfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPVxud2godmgpLGM9YlswXTtiPWJbMV07cmV0dXJuW0xoKE5oLmJpbmQobnVsbCxiLGEpLFtiLGFdKSxjXX19LHJoPXtyZWFkQ29udGV4dDpzZyx1c2VDYWxsYmFjazpMaCx1c2VDb250ZXh0OnNnLHVzZUVmZmVjdDpGaCx1c2VJbXBlcmF0aXZlSGFuZGxlOkloLHVzZUxheW91dEVmZmVjdDpHaCx1c2VNZW1vOk1oLHVzZVJlZHVjZXI6eGgsdXNlUmVmOkJoLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHhoKHZoKX0sdXNlRGVidWdWYWx1ZTpKaCx1c2VSZXNwb25kZXI6aWgsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPXhoKHZoKSxkPWNbMF0sZT1jWzFdO0ZoKGZ1bmN0aW9uKCl7dmFyIGM9a2guc3VzcGVuc2U7a2guc3VzcGVuc2U9dm9pZCAwPT09Yj9udWxsOmI7dHJ5e2UoYSl9ZmluYWxseXtraC5zdXNwZW5zZT1jfX0sW2EsYl0pO3JldHVybiBkfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXhoKHZoKSxjPWJbMF07Yj1iWzFdO3JldHVybltMaChOaC5iaW5kKG51bGwsXG5iLGEpLFtiLGFdKSxjXX19LE9oPW51bGwsUGg9bnVsbCxRaD0hMTtmdW5jdGlvbiBSaChhLGIpe3ZhciBjPVNoKDUsbnVsbCxudWxsLDApO2MuZWxlbWVudFR5cGU9XCJERUxFVEVEXCI7Yy50eXBlPVwiREVMRVRFRFwiO2Muc3RhdGVOb2RlPWI7Yy5yZXR1cm49YTtjLmVmZmVjdFRhZz04O251bGwhPT1hLmxhc3RFZmZlY3Q/KGEubGFzdEVmZmVjdC5uZXh0RWZmZWN0PWMsYS5sYXN0RWZmZWN0PWMpOmEuZmlyc3RFZmZlY3Q9YS5sYXN0RWZmZWN0PWN9XG5mdW5jdGlvbiBUaChhLGIpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnZhciBjPWEudHlwZTtiPTEhPT1iLm5vZGVUeXBlfHxjLnRvTG93ZXJDYXNlKCkhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bnVsbDpiO3JldHVybiBudWxsIT09Yj8oYS5zdGF0ZU5vZGU9YiwhMCk6ITE7Y2FzZSA2OnJldHVybiBiPVwiXCI9PT1hLnBlbmRpbmdQcm9wc3x8MyE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLCEwKTohMTtjYXNlIDEzOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITF9fVxuZnVuY3Rpb24gVWgoYSl7aWYoUWgpe3ZhciBiPVBoO2lmKGIpe3ZhciBjPWI7aWYoIVRoKGEsYikpe2I9SmQoYy5uZXh0U2libGluZyk7aWYoIWJ8fCFUaChhLGIpKXthLmVmZmVjdFRhZz1hLmVmZmVjdFRhZyYtMTAyNXwyO1FoPSExO09oPWE7cmV0dXJufVJoKE9oLGMpfU9oPWE7UGg9SmQoYi5maXJzdENoaWxkKX1lbHNlIGEuZWZmZWN0VGFnPWEuZWZmZWN0VGFnJi0xMDI1fDIsUWg9ITEsT2g9YX19ZnVuY3Rpb24gVmgoYSl7Zm9yKGE9YS5yZXR1cm47bnVsbCE9PWEmJjUhPT1hLnRhZyYmMyE9PWEudGFnJiYxMyE9PWEudGFnOylhPWEucmV0dXJuO09oPWF9XG5mdW5jdGlvbiBXaChhKXtpZihhIT09T2gpcmV0dXJuITE7aWYoIVFoKXJldHVybiBWaChhKSxRaD0hMCwhMTt2YXIgYj1hLnR5cGU7aWYoNSE9PWEudGFnfHxcImhlYWRcIiE9PWImJlwiYm9keVwiIT09YiYmIUdkKGIsYS5tZW1vaXplZFByb3BzKSlmb3IoYj1QaDtiOylSaChhLGIpLGI9SmQoYi5uZXh0U2libGluZyk7VmgoYSk7aWYoMTM9PT1hLnRhZyl7YT1hLm1lbW9pemVkU3RhdGU7YT1udWxsIT09YT9hLmRlaHlkcmF0ZWQ6bnVsbDtpZighYSl0aHJvdyBFcnJvcih1KDMxNykpO2E6e2E9YS5uZXh0U2libGluZztmb3IoYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKGM9PT1BZCl7aWYoMD09PWIpe1BoPUpkKGEubmV4dFNpYmxpbmcpO2JyZWFrIGF9Yi0tfWVsc2UgYyE9PXpkJiZjIT09Q2QmJmMhPT1CZHx8YisrfWE9YS5uZXh0U2libGluZ31QaD1udWxsfX1lbHNlIFBoPU9oP0pkKGEuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfVxuZnVuY3Rpb24gWGgoKXtQaD1PaD1udWxsO1FoPSExfXZhciBZaD1XYS5SZWFjdEN1cnJlbnRPd25lcixyZz0hMTtmdW5jdGlvbiBSKGEsYixjLGQpe2IuY2hpbGQ9bnVsbD09PWE/WWcoYixudWxsLGMsZCk6WGcoYixhLmNoaWxkLGMsZCl9ZnVuY3Rpb24gWmgoYSxiLGMsZCxlKXtjPWMucmVuZGVyO3ZhciBmPWIucmVmO3FnKGIsZSk7ZD1vaChhLGIsYyxkLGYsZSk7aWYobnVsbCE9PWEmJiFyZylyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZWZmZWN0VGFnJj0tNTE3LGEuZXhwaXJhdGlvblRpbWU8PWUmJihhLmV4cGlyYXRpb25UaW1lPTApLCRoKGEsYixlKTtiLmVmZmVjdFRhZ3w9MTtSKGEsYixkLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gYWkoYSxiLGMsZCxlLGYpe2lmKG51bGw9PT1hKXt2YXIgZz1jLnR5cGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcmJiFiaShnKSYmdm9pZCAwPT09Zy5kZWZhdWx0UHJvcHMmJm51bGw9PT1jLmNvbXBhcmUmJnZvaWQgMD09PWMuZGVmYXVsdFByb3BzKXJldHVybiBiLnRhZz0xNSxiLnR5cGU9ZyxjaShhLGIsZyxkLGUsZik7YT1VZyhjLnR5cGUsbnVsbCxkLG51bGwsYi5tb2RlLGYpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1nPWEuY2hpbGQ7aWYoZTxmJiYoZT1nLm1lbW9pemVkUHJvcHMsYz1jLmNvbXBhcmUsYz1udWxsIT09Yz9jOmJmLGMoZSxkKSYmYS5yZWY9PT1iLnJlZikpcmV0dXJuICRoKGEsYixmKTtiLmVmZmVjdFRhZ3w9MTthPVNnKGcsZCk7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfVxuZnVuY3Rpb24gY2koYSxiLGMsZCxlLGYpe3JldHVybiBudWxsIT09YSYmYmYoYS5tZW1vaXplZFByb3BzLGQpJiZhLnJlZj09PWIucmVmJiYocmc9ITEsZTxmKT8oYi5leHBpcmF0aW9uVGltZT1hLmV4cGlyYXRpb25UaW1lLCRoKGEsYixmKSk6ZGkoYSxiLGMsZCxmKX1mdW5jdGlvbiBlaShhLGIpe3ZhciBjPWIucmVmO2lmKG51bGw9PT1hJiZudWxsIT09Y3x8bnVsbCE9PWEmJmEucmVmIT09YyliLmVmZmVjdFRhZ3w9MTI4fWZ1bmN0aW9uIGRpKGEsYixjLGQsZSl7dmFyIGY9TChjKT9CZjpKLmN1cnJlbnQ7Zj1DZihiLGYpO3FnKGIsZSk7Yz1vaChhLGIsYyxkLGYsZSk7aWYobnVsbCE9PWEmJiFyZylyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZWZmZWN0VGFnJj0tNTE3LGEuZXhwaXJhdGlvblRpbWU8PWUmJihhLmV4cGlyYXRpb25UaW1lPTApLCRoKGEsYixlKTtiLmVmZmVjdFRhZ3w9MTtSKGEsYixjLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gZmkoYSxiLGMsZCxlKXtpZihMKGMpKXt2YXIgZj0hMDtHZihiKX1lbHNlIGY9ITE7cWcoYixlKTtpZihudWxsPT09Yi5zdGF0ZU5vZGUpbnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5lZmZlY3RUYWd8PTIpLExnKGIsYyxkKSxOZyhiLGMsZCxlKSxkPSEwO2Vsc2UgaWYobnVsbD09PWEpe3ZhciBnPWIuc3RhdGVOb2RlLGg9Yi5tZW1vaXplZFByb3BzO2cucHJvcHM9aDt2YXIgaz1nLmNvbnRleHQsbD1jLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgbCYmbnVsbCE9PWw/bD1zZyhsKToobD1MKGMpP0JmOkouY3VycmVudCxsPUNmKGIsbCkpO3ZhciBtPWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLHA9XCJmdW5jdGlvblwiPT09dHlwZW9mIG18fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlO3B8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcblwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChoIT09ZHx8ayE9PWwpJiZNZyhiLGcsZCxsKTt0Zz0hMTt2YXIgeD1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT14O3pnKGIsZCxnLGUpO2s9Yi5tZW1vaXplZFN0YXRlO2ghPT1kfHx4IT09a3x8Sy5jdXJyZW50fHx0Zz8oXCJmdW5jdGlvblwiPT09dHlwZW9mIG0mJihGZyhiLGMsbSxkKSxrPWIubWVtb2l6ZWRTdGF0ZSksKGg9dGd8fEtnKGIsYyxoLGQseCxrLGwpKT8ocHx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50fHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50JiZnLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSxcImZ1bmN0aW9uXCI9PT1cbnR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5lZmZlY3RUYWd8PTQpKTooXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmVmZmVjdFRhZ3w9NCksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPWspLGcucHJvcHM9ZCxnLnN0YXRlPWssZy5jb250ZXh0PWwsZD1oKTooXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmVmZmVjdFRhZ3w9NCksZD0hMSl9ZWxzZSBnPWIuc3RhdGVOb2RlLHZnKGEsYiksaD1iLm1lbW9pemVkUHJvcHMsZy5wcm9wcz1iLnR5cGU9PT1iLmVsZW1lbnRUeXBlP2g6aWcoYi50eXBlLGgpLGs9Zy5jb250ZXh0LGw9Yy5jb250ZXh0VHlwZSxcIm9iamVjdFwiPT09dHlwZW9mIGwmJm51bGwhPT1sP2w9c2cobCk6KGw9TChjKT9CZjpKLmN1cnJlbnQsbD1DZihiLGwpKSxtPWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLChwPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBtfHxcImZ1bmN0aW9uXCI9PT1cbnR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChoIT09ZHx8ayE9PWwpJiZNZyhiLGcsZCxsKSx0Zz0hMSxrPWIubWVtb2l6ZWRTdGF0ZSxnLnN0YXRlPWssemcoYixkLGcsZSkseD1iLm1lbW9pemVkU3RhdGUsaCE9PWR8fGshPT14fHxLLmN1cnJlbnR8fHRnPyhcImZ1bmN0aW9uXCI9PT10eXBlb2YgbSYmKEZnKGIsYyxtLGQpLHg9Yi5tZW1vaXplZFN0YXRlKSwobT10Z3x8S2coYixjLGgsZCxrLHgsbCkpPyhwfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZXx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGUmJmcuY29tcG9uZW50V2lsbFVwZGF0ZShkLFxueCxsKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShkLHgsbCkpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZSYmKGIuZWZmZWN0VGFnfD00KSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKGIuZWZmZWN0VGFnfD0yNTYpKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZrPT09YS5tZW1vaXplZFN0YXRlfHwoYi5lZmZlY3RUYWd8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZrPT09YS5tZW1vaXplZFN0YXRlfHwoYi5lZmZlY3RUYWd8PTI1NiksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPXgpLGcucHJvcHM9ZCxnLnN0YXRlPXgsZy5jb250ZXh0PWwsZD1tKTpcbihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJms9PT1hLm1lbW9pemVkU3RhdGV8fChiLmVmZmVjdFRhZ3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJms9PT1hLm1lbW9pemVkU3RhdGV8fChiLmVmZmVjdFRhZ3w9MjU2KSxkPSExKTtyZXR1cm4gZ2koYSxiLGMsZCxmLGUpfVxuZnVuY3Rpb24gZ2koYSxiLGMsZCxlLGYpe2VpKGEsYik7dmFyIGc9MCE9PShiLmVmZmVjdFRhZyY2NCk7aWYoIWQmJiFnKXJldHVybiBlJiZIZihiLGMsITEpLCRoKGEsYixmKTtkPWIuc3RhdGVOb2RlO1loLmN1cnJlbnQ9Yjt2YXIgaD1nJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDpkLnJlbmRlcigpO2IuZWZmZWN0VGFnfD0xO251bGwhPT1hJiZnPyhiLmNoaWxkPVhnKGIsYS5jaGlsZCxudWxsLGYpLGIuY2hpbGQ9WGcoYixudWxsLGgsZikpOlIoYSxiLGgsZik7Yi5tZW1vaXplZFN0YXRlPWQuc3RhdGU7ZSYmSGYoYixjLCEwKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBoaShhKXt2YXIgYj1hLnN0YXRlTm9kZTtiLnBlbmRpbmdDb250ZXh0P0VmKGEsYi5wZW5kaW5nQ29udGV4dCxiLnBlbmRpbmdDb250ZXh0IT09Yi5jb250ZXh0KTpiLmNvbnRleHQmJkVmKGEsYi5jb250ZXh0LCExKTtkaChhLGIuY29udGFpbmVySW5mbyl9XG52YXIgaWk9e2RlaHlkcmF0ZWQ6bnVsbCxyZXRyeVRpbWU6MH07XG5mdW5jdGlvbiBqaShhLGIsYyl7dmFyIGQ9Yi5tb2RlLGU9Yi5wZW5kaW5nUHJvcHMsZj1NLmN1cnJlbnQsZz0hMSxoOyhoPTAhPT0oYi5lZmZlY3RUYWcmNjQpKXx8KGg9MCE9PShmJjIpJiYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUpKTtoPyhnPSEwLGIuZWZmZWN0VGFnJj0tNjUpOm51bGwhPT1hJiZudWxsPT09YS5tZW1vaXplZFN0YXRlfHx2b2lkIDA9PT1lLmZhbGxiYWNrfHwhMD09PWUudW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2t8fChmfD0xKTtJKE0sZiYxKTtpZihudWxsPT09YSl7dm9pZCAwIT09ZS5mYWxsYmFjayYmVWgoYik7aWYoZyl7Zz1lLmZhbGxiYWNrO2U9V2cobnVsbCxkLDAsbnVsbCk7ZS5yZXR1cm49YjtpZigwPT09KGIubW9kZSYyKSlmb3IoYT1udWxsIT09Yi5tZW1vaXplZFN0YXRlP2IuY2hpbGQuY2hpbGQ6Yi5jaGlsZCxlLmNoaWxkPWE7bnVsbCE9PWE7KWEucmV0dXJuPWUsYT1hLnNpYmxpbmc7Yz1XZyhnLGQsYyxudWxsKTtjLnJldHVybj1cbmI7ZS5zaWJsaW5nPWM7Yi5tZW1vaXplZFN0YXRlPWlpO2IuY2hpbGQ9ZTtyZXR1cm4gY31kPWUuY2hpbGRyZW47Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGIuY2hpbGQ9WWcoYixudWxsLGQsYyl9aWYobnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSl7YT1hLmNoaWxkO2Q9YS5zaWJsaW5nO2lmKGcpe2U9ZS5mYWxsYmFjaztjPVNnKGEsYS5wZW5kaW5nUHJvcHMpO2MucmV0dXJuPWI7aWYoMD09PShiLm1vZGUmMikmJihnPW51bGwhPT1iLm1lbW9pemVkU3RhdGU/Yi5jaGlsZC5jaGlsZDpiLmNoaWxkLGchPT1hLmNoaWxkKSlmb3IoYy5jaGlsZD1nO251bGwhPT1nOylnLnJldHVybj1jLGc9Zy5zaWJsaW5nO2Q9U2coZCxlKTtkLnJldHVybj1iO2Muc2libGluZz1kO2MuY2hpbGRFeHBpcmF0aW9uVGltZT0wO2IubWVtb2l6ZWRTdGF0ZT1paTtiLmNoaWxkPWM7cmV0dXJuIGR9Yz1YZyhiLGEuY2hpbGQsZS5jaGlsZHJlbixjKTtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gYi5jaGlsZD1cbmN9YT1hLmNoaWxkO2lmKGcpe2c9ZS5mYWxsYmFjaztlPVdnKG51bGwsZCwwLG51bGwpO2UucmV0dXJuPWI7ZS5jaGlsZD1hO251bGwhPT1hJiYoYS5yZXR1cm49ZSk7aWYoMD09PShiLm1vZGUmMikpZm9yKGE9bnVsbCE9PWIubWVtb2l6ZWRTdGF0ZT9iLmNoaWxkLmNoaWxkOmIuY2hpbGQsZS5jaGlsZD1hO251bGwhPT1hOylhLnJldHVybj1lLGE9YS5zaWJsaW5nO2M9V2coZyxkLGMsbnVsbCk7Yy5yZXR1cm49YjtlLnNpYmxpbmc9YztjLmVmZmVjdFRhZ3w9MjtlLmNoaWxkRXhwaXJhdGlvblRpbWU9MDtiLm1lbW9pemVkU3RhdGU9aWk7Yi5jaGlsZD1lO3JldHVybiBjfWIubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBiLmNoaWxkPVhnKGIsYSxlLmNoaWxkcmVuLGMpfVxuZnVuY3Rpb24ga2koYSxiKXthLmV4cGlyYXRpb25UaW1lPGImJihhLmV4cGlyYXRpb25UaW1lPWIpO3ZhciBjPWEuYWx0ZXJuYXRlO251bGwhPT1jJiZjLmV4cGlyYXRpb25UaW1lPGImJihjLmV4cGlyYXRpb25UaW1lPWIpO3BnKGEucmV0dXJuLGIpfWZ1bmN0aW9uIGxpKGEsYixjLGQsZSxmKXt2YXIgZz1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWc/YS5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczpiLHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6ZCx0YWlsOmMsdGFpbEV4cGlyYXRpb246MCx0YWlsTW9kZTplLGxhc3RFZmZlY3Q6Zn06KGcuaXNCYWNrd2FyZHM9YixnLnJlbmRlcmluZz1udWxsLGcucmVuZGVyaW5nU3RhcnRUaW1lPTAsZy5sYXN0PWQsZy50YWlsPWMsZy50YWlsRXhwaXJhdGlvbj0wLGcudGFpbE1vZGU9ZSxnLmxhc3RFZmZlY3Q9Zil9XG5mdW5jdGlvbiBtaShhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLnJldmVhbE9yZGVyLGY9ZC50YWlsO1IoYSxiLGQuY2hpbGRyZW4sYyk7ZD1NLmN1cnJlbnQ7aWYoMCE9PShkJjIpKWQ9ZCYxfDIsYi5lZmZlY3RUYWd8PTY0O2Vsc2V7aWYobnVsbCE9PWEmJjAhPT0oYS5lZmZlY3RUYWcmNjQpKWE6Zm9yKGE9Yi5jaGlsZDtudWxsIT09YTspe2lmKDEzPT09YS50YWcpbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYma2koYSxjKTtlbHNlIGlmKDE5PT09YS50YWcpa2koYSxjKTtlbHNlIGlmKG51bGwhPT1hLmNoaWxkKXthLmNoaWxkLnJldHVybj1hO2E9YS5jaGlsZDtjb250aW51ZX1pZihhPT09YilicmVhayBhO2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8YS5yZXR1cm49PT1iKWJyZWFrIGE7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2E9YS5zaWJsaW5nfWQmPTF9SShNLGQpO2lmKDA9PT0oYi5tb2RlJjIpKWIubWVtb2l6ZWRTdGF0ZT1cbm51bGw7ZWxzZSBzd2l0Y2goZSl7Y2FzZSBcImZvcndhcmRzXCI6Yz1iLmNoaWxkO2ZvcihlPW51bGw7bnVsbCE9PWM7KWE9Yy5hbHRlcm5hdGUsbnVsbCE9PWEmJm51bGw9PT1oaChhKSYmKGU9YyksYz1jLnNpYmxpbmc7Yz1lO251bGw9PT1jPyhlPWIuY2hpbGQsYi5jaGlsZD1udWxsKTooZT1jLnNpYmxpbmcsYy5zaWJsaW5nPW51bGwpO2xpKGIsITEsZSxjLGYsYi5sYXN0RWZmZWN0KTticmVhaztjYXNlIFwiYmFja3dhcmRzXCI6Yz1udWxsO2U9Yi5jaGlsZDtmb3IoYi5jaGlsZD1udWxsO251bGwhPT1lOyl7YT1lLmFsdGVybmF0ZTtpZihudWxsIT09YSYmbnVsbD09PWhoKGEpKXtiLmNoaWxkPWU7YnJlYWt9YT1lLnNpYmxpbmc7ZS5zaWJsaW5nPWM7Yz1lO2U9YX1saShiLCEwLGMsbnVsbCxmLGIubGFzdEVmZmVjdCk7YnJlYWs7Y2FzZSBcInRvZ2V0aGVyXCI6bGkoYiwhMSxudWxsLG51bGwsdm9pZCAwLGIubGFzdEVmZmVjdCk7YnJlYWs7ZGVmYXVsdDpiLm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uICRoKGEsYixjKXtudWxsIT09YSYmKGIuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKTt2YXIgZD1iLmV4cGlyYXRpb25UaW1lOzAhPT1kJiZCZyhkKTtpZihiLmNoaWxkRXhwaXJhdGlvblRpbWU8YylyZXR1cm4gbnVsbDtpZihudWxsIT09YSYmYi5jaGlsZCE9PWEuY2hpbGQpdGhyb3cgRXJyb3IodSgxNTMpKTtpZihudWxsIT09Yi5jaGlsZCl7YT1iLmNoaWxkO2M9U2coYSxhLnBlbmRpbmdQcm9wcyk7Yi5jaGlsZD1jO2ZvcihjLnJldHVybj1iO251bGwhPT1hLnNpYmxpbmc7KWE9YS5zaWJsaW5nLGM9Yy5zaWJsaW5nPVNnKGEsYS5wZW5kaW5nUHJvcHMpLGMucmV0dXJuPWI7Yy5zaWJsaW5nPW51bGx9cmV0dXJuIGIuY2hpbGR9dmFyIG5pLG9pLHBpLHFpO1xubmk9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yi5jaGlsZDtudWxsIT09Yzspe2lmKDU9PT1jLnRhZ3x8Nj09PWMudGFnKWEuYXBwZW5kQ2hpbGQoYy5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PWMudGFnJiZudWxsIT09Yy5jaGlsZCl7Yy5jaGlsZC5yZXR1cm49YztjPWMuY2hpbGQ7Y29udGludWV9aWYoYz09PWIpYnJlYWs7Zm9yKDtudWxsPT09Yy5zaWJsaW5nOyl7aWYobnVsbD09PWMucmV0dXJufHxjLnJldHVybj09PWIpcmV0dXJuO2M9Yy5yZXR1cm59Yy5zaWJsaW5nLnJldHVybj1jLnJldHVybjtjPWMuc2libGluZ319O29pPWZ1bmN0aW9uKCl7fTtcbnBpPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFByb3BzO2lmKGYhPT1kKXt2YXIgZz1iLnN0YXRlTm9kZTtjaCgkZy5jdXJyZW50KTthPW51bGw7c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOmY9emIoZyxmKTtkPXpiKGcsZCk7YT1bXTticmVhaztjYXNlIFwib3B0aW9uXCI6Zj1HYihnLGYpO2Q9R2IoZyxkKTthPVtdO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpmPW4oe30sZix7dmFsdWU6dm9pZCAwfSk7ZD1uKHt9LGQse3ZhbHVlOnZvaWQgMH0pO2E9W107YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6Zj1JYihnLGYpO2Q9SWIoZyxkKTthPVtdO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiIT09dHlwZW9mIGYub25DbGljayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGQub25DbGljayYmKGcub25jbGljaz1zZCl9b2QoYyxkKTt2YXIgaCxrO2M9bnVsbDtmb3IoaCBpbiBmKWlmKCFkLmhhc093blByb3BlcnR5KGgpJiZmLmhhc093blByb3BlcnR5KGgpJiZudWxsIT1mW2hdKWlmKFwic3R5bGVcIj09PVxuaClmb3IoayBpbiBnPWZbaF0sZylnLmhhc093blByb3BlcnR5KGspJiYoY3x8KGM9e30pLGNba109XCJcIik7ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIiE9PWgmJlwiY2hpbGRyZW5cIiE9PWgmJlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1oJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09aCYmXCJhdXRvRm9jdXNcIiE9PWgmJih2YS5oYXNPd25Qcm9wZXJ0eShoKT9hfHwoYT1bXSk6KGE9YXx8W10pLnB1c2goaCxudWxsKSk7Zm9yKGggaW4gZCl7dmFyIGw9ZFtoXTtnPW51bGwhPWY/ZltoXTp2b2lkIDA7aWYoZC5oYXNPd25Qcm9wZXJ0eShoKSYmbCE9PWcmJihudWxsIT1sfHxudWxsIT1nKSlpZihcInN0eWxlXCI9PT1oKWlmKGcpe2ZvcihrIGluIGcpIWcuaGFzT3duUHJvcGVydHkoayl8fGwmJmwuaGFzT3duUHJvcGVydHkoayl8fChjfHwoYz17fSksY1trXT1cIlwiKTtmb3IoayBpbiBsKWwuaGFzT3duUHJvcGVydHkoaykmJmdba10hPT1sW2tdJiYoY3x8KGM9e30pLFxuY1trXT1sW2tdKX1lbHNlIGN8fChhfHwoYT1bXSksYS5wdXNoKGgsYykpLGM9bDtlbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09aD8obD1sP2wuX19odG1sOnZvaWQgMCxnPWc/Zy5fX2h0bWw6dm9pZCAwLG51bGwhPWwmJmchPT1sJiYoYT1hfHxbXSkucHVzaChoLGwpKTpcImNoaWxkcmVuXCI9PT1oP2c9PT1sfHxcInN0cmluZ1wiIT09dHlwZW9mIGwmJlwibnVtYmVyXCIhPT10eXBlb2YgbHx8KGE9YXx8W10pLnB1c2goaCxcIlwiK2wpOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1oJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09aCYmKHZhLmhhc093blByb3BlcnR5KGgpPyhudWxsIT1sJiZyZChlLGgpLGF8fGc9PT1sfHwoYT1bXSkpOihhPWF8fFtdKS5wdXNoKGgsbCkpfWMmJihhPWF8fFtdKS5wdXNoKFwic3R5bGVcIixjKTtlPWE7aWYoYi51cGRhdGVRdWV1ZT1lKWIuZWZmZWN0VGFnfD00fX07XG5xaT1mdW5jdGlvbihhLGIsYyxkKXtjIT09ZCYmKGIuZWZmZWN0VGFnfD00KX07ZnVuY3Rpb24gcmkoYSxiKXtzd2l0Y2goYS50YWlsTW9kZSl7Y2FzZSBcImhpZGRlblwiOmI9YS50YWlsO2Zvcih2YXIgYz1udWxsO251bGwhPT1iOyludWxsIT09Yi5hbHRlcm5hdGUmJihjPWIpLGI9Yi5zaWJsaW5nO251bGw9PT1jP2EudGFpbD1udWxsOmMuc2libGluZz1udWxsO2JyZWFrO2Nhc2UgXCJjb2xsYXBzZWRcIjpjPWEudGFpbDtmb3IodmFyIGQ9bnVsbDtudWxsIT09YzspbnVsbCE9PWMuYWx0ZXJuYXRlJiYoZD1jKSxjPWMuc2libGluZztudWxsPT09ZD9ifHxudWxsPT09YS50YWlsP2EudGFpbD1udWxsOmEudGFpbC5zaWJsaW5nPW51bGw6ZC5zaWJsaW5nPW51bGx9fVxuZnVuY3Rpb24gc2koYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzO3N3aXRjaChiLnRhZyl7Y2FzZSAyOmNhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6cmV0dXJuIG51bGw7Y2FzZSAxOnJldHVybiBMKGIudHlwZSkmJkRmKCksbnVsbDtjYXNlIDM6cmV0dXJuIGVoKCksSChLKSxIKEopLGM9Yi5zdGF0ZU5vZGUsYy5wZW5kaW5nQ29udGV4dCYmKGMuY29udGV4dD1jLnBlbmRpbmdDb250ZXh0LGMucGVuZGluZ0NvbnRleHQ9bnVsbCksbnVsbCE9PWEmJm51bGwhPT1hLmNoaWxkfHwhV2goYil8fChiLmVmZmVjdFRhZ3w9NCksb2koYiksbnVsbDtjYXNlIDU6Z2goYik7Yz1jaChiaC5jdXJyZW50KTt2YXIgZT1iLnR5cGU7aWYobnVsbCE9PWEmJm51bGwhPWIuc3RhdGVOb2RlKXBpKGEsYixlLGQsYyksYS5yZWYhPT1iLnJlZiYmKGIuZWZmZWN0VGFnfD0xMjgpO2Vsc2V7aWYoIWQpe2lmKG51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcih1KDE2NikpO1xucmV0dXJuIG51bGx9YT1jaCgkZy5jdXJyZW50KTtpZihXaChiKSl7ZD1iLnN0YXRlTm9kZTtlPWIudHlwZTt2YXIgZj1iLm1lbW9pemVkUHJvcHM7ZFtNZF09YjtkW05kXT1mO3N3aXRjaChlKXtjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkYoXCJsb2FkXCIsZCk7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGE9MDthPGFjLmxlbmd0aDthKyspRihhY1thXSxkKTticmVhaztjYXNlIFwic291cmNlXCI6RihcImVycm9yXCIsZCk7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RihcImVycm9yXCIsZCk7RihcImxvYWRcIixkKTticmVhaztjYXNlIFwiZm9ybVwiOkYoXCJyZXNldFwiLGQpO0YoXCJzdWJtaXRcIixkKTticmVhaztjYXNlIFwiZGV0YWlsc1wiOkYoXCJ0b2dnbGVcIixkKTticmVhaztjYXNlIFwiaW5wdXRcIjpBYihkLGYpO0YoXCJpbnZhbGlkXCIsZCk7cmQoYyxcIm9uQ2hhbmdlXCIpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpkLl93cmFwcGVyU3RhdGU9XG57d2FzTXVsdGlwbGU6ISFmLm11bHRpcGxlfTtGKFwiaW52YWxpZFwiLGQpO3JkKGMsXCJvbkNoYW5nZVwiKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpKYihkLGYpLEYoXCJpbnZhbGlkXCIsZCkscmQoYyxcIm9uQ2hhbmdlXCIpfW9kKGUsZik7YT1udWxsO2Zvcih2YXIgZyBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWZbZ107XCJjaGlsZHJlblwiPT09Zz9cInN0cmluZ1wiPT09dHlwZW9mIGg/ZC50ZXh0Q29udGVudCE9PWgmJihhPVtcImNoaWxkcmVuXCIsaF0pOlwibnVtYmVyXCI9PT10eXBlb2YgaCYmZC50ZXh0Q29udGVudCE9PVwiXCIraCYmKGE9W1wiY2hpbGRyZW5cIixcIlwiK2hdKTp2YS5oYXNPd25Qcm9wZXJ0eShnKSYmbnVsbCE9aCYmcmQoYyxnKX1zd2l0Y2goZSl7Y2FzZSBcImlucHV0XCI6eGIoZCk7RWIoZCxmLCEwKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjp4YihkKTtMYihkKTticmVhaztjYXNlIFwic2VsZWN0XCI6Y2FzZSBcIm9wdGlvblwiOmJyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIGYub25DbGljayYmXG4oZC5vbmNsaWNrPXNkKX1jPWE7Yi51cGRhdGVRdWV1ZT1jO251bGwhPT1jJiYoYi5lZmZlY3RUYWd8PTQpfWVsc2V7Zz05PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudDthPT09cWQmJihhPU5iKGUpKTthPT09cWQ/XCJzY3JpcHRcIj09PWU/KGE9Zy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGEuaW5uZXJIVE1MPVwiPHNjcmlwdD5cXHgzYy9zY3JpcHQ+XCIsYT1hLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCkpOlwic3RyaW5nXCI9PT10eXBlb2YgZC5pcz9hPWcuY3JlYXRlRWxlbWVudChlLHtpczpkLmlzfSk6KGE9Zy5jcmVhdGVFbGVtZW50KGUpLFwic2VsZWN0XCI9PT1lJiYoZz1hLGQubXVsdGlwbGU/Zy5tdWx0aXBsZT0hMDpkLnNpemUmJihnLnNpemU9ZC5zaXplKSkpOmE9Zy5jcmVhdGVFbGVtZW50TlMoYSxlKTthW01kXT1iO2FbTmRdPWQ7bmkoYSxiLCExLCExKTtiLnN0YXRlTm9kZT1hO2c9cGQoZSxkKTtzd2l0Y2goZSl7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpGKFwibG9hZFwiLFxuYSk7aD1kO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihoPTA7aDxhYy5sZW5ndGg7aCsrKUYoYWNbaF0sYSk7aD1kO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpGKFwiZXJyb3JcIixhKTtoPWQ7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RihcImVycm9yXCIsYSk7RihcImxvYWRcIixhKTtoPWQ7YnJlYWs7Y2FzZSBcImZvcm1cIjpGKFwicmVzZXRcIixhKTtGKFwic3VibWl0XCIsYSk7aD1kO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RihcInRvZ2dsZVwiLGEpO2g9ZDticmVhaztjYXNlIFwiaW5wdXRcIjpBYihhLGQpO2g9emIoYSxkKTtGKFwiaW52YWxpZFwiLGEpO3JkKGMsXCJvbkNoYW5nZVwiKTticmVhaztjYXNlIFwib3B0aW9uXCI6aD1HYihhLGQpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZC5tdWx0aXBsZX07aD1uKHt9LGQse3ZhbHVlOnZvaWQgMH0pO0YoXCJpbnZhbGlkXCIsYSk7cmQoYyxcIm9uQ2hhbmdlXCIpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOkpiKGEsXG5kKTtoPUliKGEsZCk7RihcImludmFsaWRcIixhKTtyZChjLFwib25DaGFuZ2VcIik7YnJlYWs7ZGVmYXVsdDpoPWR9b2QoZSxoKTt2YXIgaz1oO2ZvcihmIGluIGspaWYoay5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGw9a1tmXTtcInN0eWxlXCI9PT1mP21kKGEsbCk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09Zj8obD1sP2wuX19odG1sOnZvaWQgMCxudWxsIT1sJiZRYihhLGwpKTpcImNoaWxkcmVuXCI9PT1mP1wic3RyaW5nXCI9PT10eXBlb2YgbD8oXCJ0ZXh0YXJlYVwiIT09ZXx8XCJcIiE9PWwpJiZSYihhLGwpOlwibnVtYmVyXCI9PT10eXBlb2YgbCYmUmIoYSxcIlwiK2wpOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1mJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09ZiYmXCJhdXRvRm9jdXNcIiE9PWYmJih2YS5oYXNPd25Qcm9wZXJ0eShmKT9udWxsIT1sJiZyZChjLGYpOm51bGwhPWwmJlhhKGEsZixsLGcpKX1zd2l0Y2goZSl7Y2FzZSBcImlucHV0XCI6eGIoYSk7RWIoYSxkLCExKTtcbmJyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOnhiKGEpO0xiKGEpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjpudWxsIT1kLnZhbHVlJiZhLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIityYihkLnZhbHVlKSk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEubXVsdGlwbGU9ISFkLm11bHRpcGxlO2M9ZC52YWx1ZTtudWxsIT1jP0hiKGEsISFkLm11bHRpcGxlLGMsITEpOm51bGwhPWQuZGVmYXVsdFZhbHVlJiZIYihhLCEhZC5tdWx0aXBsZSxkLmRlZmF1bHRWYWx1ZSwhMCk7YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgaC5vbkNsaWNrJiYoYS5vbmNsaWNrPXNkKX1GZChlLGQpJiYoYi5lZmZlY3RUYWd8PTQpfW51bGwhPT1iLnJlZiYmKGIuZWZmZWN0VGFnfD0xMjgpfXJldHVybiBudWxsO2Nhc2UgNjppZihhJiZudWxsIT1iLnN0YXRlTm9kZSlxaShhLGIsYS5tZW1vaXplZFByb3BzLGQpO2Vsc2V7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBkJiZudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IodSgxNjYpKTtcbmM9Y2goYmguY3VycmVudCk7Y2goJGcuY3VycmVudCk7V2goYik/KGM9Yi5zdGF0ZU5vZGUsZD1iLm1lbW9pemVkUHJvcHMsY1tNZF09YixjLm5vZGVWYWx1ZSE9PWQmJihiLmVmZmVjdFRhZ3w9NCkpOihjPSg5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoZCksY1tNZF09YixiLnN0YXRlTm9kZT1jKX1yZXR1cm4gbnVsbDtjYXNlIDEzOkgoTSk7ZD1iLm1lbW9pemVkU3RhdGU7aWYoMCE9PShiLmVmZmVjdFRhZyY2NCkpcmV0dXJuIGIuZXhwaXJhdGlvblRpbWU9YyxiO2M9bnVsbCE9PWQ7ZD0hMTtudWxsPT09YT92b2lkIDAhPT1iLm1lbW9pemVkUHJvcHMuZmFsbGJhY2smJldoKGIpOihlPWEubWVtb2l6ZWRTdGF0ZSxkPW51bGwhPT1lLGN8fG51bGw9PT1lfHwoZT1hLmNoaWxkLnNpYmxpbmcsbnVsbCE9PWUmJihmPWIuZmlyc3RFZmZlY3QsbnVsbCE9PWY/KGIuZmlyc3RFZmZlY3Q9ZSxlLm5leHRFZmZlY3Q9Zik6KGIuZmlyc3RFZmZlY3Q9Yi5sYXN0RWZmZWN0PVxuZSxlLm5leHRFZmZlY3Q9bnVsbCksZS5lZmZlY3RUYWc9OCkpKTtpZihjJiYhZCYmMCE9PShiLm1vZGUmMikpaWYobnVsbD09PWEmJiEwIT09Yi5tZW1vaXplZFByb3BzLnVuc3RhYmxlX2F2b2lkVGhpc0ZhbGxiYWNrfHwwIT09KE0uY3VycmVudCYxKSlTPT09dGkmJihTPXVpKTtlbHNle2lmKFM9PT10aXx8Uz09PXVpKVM9dmk7MCE9PXdpJiZudWxsIT09VCYmKHhpKFQsVSkseWkoVCx3aSkpfWlmKGN8fGQpYi5lZmZlY3RUYWd8PTQ7cmV0dXJuIG51bGw7Y2FzZSA0OnJldHVybiBlaCgpLG9pKGIpLG51bGw7Y2FzZSAxMDpyZXR1cm4gb2coYiksbnVsbDtjYXNlIDE3OnJldHVybiBMKGIudHlwZSkmJkRmKCksbnVsbDtjYXNlIDE5OkgoTSk7ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7ZT0wIT09KGIuZWZmZWN0VGFnJjY0KTtmPWQucmVuZGVyaW5nO2lmKG51bGw9PT1mKWlmKGUpcmkoZCwhMSk7ZWxzZXtpZihTIT09dGl8fG51bGwhPT1hJiYwIT09KGEuZWZmZWN0VGFnJlxuNjQpKWZvcihmPWIuY2hpbGQ7bnVsbCE9PWY7KXthPWhoKGYpO2lmKG51bGwhPT1hKXtiLmVmZmVjdFRhZ3w9NjQ7cmkoZCwhMSk7ZT1hLnVwZGF0ZVF1ZXVlO251bGwhPT1lJiYoYi51cGRhdGVRdWV1ZT1lLGIuZWZmZWN0VGFnfD00KTtudWxsPT09ZC5sYXN0RWZmZWN0JiYoYi5maXJzdEVmZmVjdD1udWxsKTtiLmxhc3RFZmZlY3Q9ZC5sYXN0RWZmZWN0O2ZvcihkPWIuY2hpbGQ7bnVsbCE9PWQ7KWU9ZCxmPWMsZS5lZmZlY3RUYWcmPTIsZS5uZXh0RWZmZWN0PW51bGwsZS5maXJzdEVmZmVjdD1udWxsLGUubGFzdEVmZmVjdD1udWxsLGE9ZS5hbHRlcm5hdGUsbnVsbD09PWE/KGUuY2hpbGRFeHBpcmF0aW9uVGltZT0wLGUuZXhwaXJhdGlvblRpbWU9ZixlLmNoaWxkPW51bGwsZS5tZW1vaXplZFByb3BzPW51bGwsZS5tZW1vaXplZFN0YXRlPW51bGwsZS51cGRhdGVRdWV1ZT1udWxsLGUuZGVwZW5kZW5jaWVzPW51bGwpOihlLmNoaWxkRXhwaXJhdGlvblRpbWU9YS5jaGlsZEV4cGlyYXRpb25UaW1lLFxuZS5leHBpcmF0aW9uVGltZT1hLmV4cGlyYXRpb25UaW1lLGUuY2hpbGQ9YS5jaGlsZCxlLm1lbW9pemVkUHJvcHM9YS5tZW1vaXplZFByb3BzLGUubWVtb2l6ZWRTdGF0ZT1hLm1lbW9pemVkU3RhdGUsZS51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGY9YS5kZXBlbmRlbmNpZXMsZS5kZXBlbmRlbmNpZXM9bnVsbD09PWY/bnVsbDp7ZXhwaXJhdGlvblRpbWU6Zi5leHBpcmF0aW9uVGltZSxmaXJzdENvbnRleHQ6Zi5maXJzdENvbnRleHQscmVzcG9uZGVyczpmLnJlc3BvbmRlcnN9KSxkPWQuc2libGluZztJKE0sTS5jdXJyZW50JjF8Mik7cmV0dXJuIGIuY2hpbGR9Zj1mLnNpYmxpbmd9fWVsc2V7aWYoIWUpaWYoYT1oaChmKSxudWxsIT09YSl7aWYoYi5lZmZlY3RUYWd8PTY0LGU9ITAsYz1hLnVwZGF0ZVF1ZXVlLG51bGwhPT1jJiYoYi51cGRhdGVRdWV1ZT1jLGIuZWZmZWN0VGFnfD00KSxyaShkLCEwKSxudWxsPT09ZC50YWlsJiZcImhpZGRlblwiPT09ZC50YWlsTW9kZSYmIWYuYWx0ZXJuYXRlKXJldHVybiBiPVxuYi5sYXN0RWZmZWN0PWQubGFzdEVmZmVjdCxudWxsIT09YiYmKGIubmV4dEVmZmVjdD1udWxsKSxudWxsfWVsc2UgMiokZigpLWQucmVuZGVyaW5nU3RhcnRUaW1lPmQudGFpbEV4cGlyYXRpb24mJjE8YyYmKGIuZWZmZWN0VGFnfD02NCxlPSEwLHJpKGQsITEpLGIuZXhwaXJhdGlvblRpbWU9Yi5jaGlsZEV4cGlyYXRpb25UaW1lPWMtMSk7ZC5pc0JhY2t3YXJkcz8oZi5zaWJsaW5nPWIuY2hpbGQsYi5jaGlsZD1mKTooYz1kLmxhc3QsbnVsbCE9PWM/Yy5zaWJsaW5nPWY6Yi5jaGlsZD1mLGQubGFzdD1mKX1yZXR1cm4gbnVsbCE9PWQudGFpbD8oMD09PWQudGFpbEV4cGlyYXRpb24mJihkLnRhaWxFeHBpcmF0aW9uPSRmKCkrNTAwKSxjPWQudGFpbCxkLnJlbmRlcmluZz1jLGQudGFpbD1jLnNpYmxpbmcsZC5sYXN0RWZmZWN0PWIubGFzdEVmZmVjdCxkLnJlbmRlcmluZ1N0YXJ0VGltZT0kZigpLGMuc2libGluZz1udWxsLGI9TS5jdXJyZW50LEkoTSxlP2ImMXwyOmImMSksYyk6bnVsbH10aHJvdyBFcnJvcih1KDE1NixcbmIudGFnKSk7fWZ1bmN0aW9uIHppKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSAxOkwoYS50eXBlKSYmRGYoKTt2YXIgYj1hLmVmZmVjdFRhZztyZXR1cm4gYiY0MDk2PyhhLmVmZmVjdFRhZz1iJi00MDk3fDY0LGEpOm51bGw7Y2FzZSAzOmVoKCk7SChLKTtIKEopO2I9YS5lZmZlY3RUYWc7aWYoMCE9PShiJjY0KSl0aHJvdyBFcnJvcih1KDI4NSkpO2EuZWZmZWN0VGFnPWImLTQwOTd8NjQ7cmV0dXJuIGE7Y2FzZSA1OnJldHVybiBnaChhKSxudWxsO2Nhc2UgMTM6cmV0dXJuIEgoTSksYj1hLmVmZmVjdFRhZyxiJjQwOTY/KGEuZWZmZWN0VGFnPWImLTQwOTd8NjQsYSk6bnVsbDtjYXNlIDE5OnJldHVybiBIKE0pLG51bGw7Y2FzZSA0OnJldHVybiBlaCgpLG51bGw7Y2FzZSAxMDpyZXR1cm4gb2coYSksbnVsbDtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBBaShhLGIpe3JldHVybnt2YWx1ZTphLHNvdXJjZTpiLHN0YWNrOnFiKGIpfX1cbnZhciBCaT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha1NldD9XZWFrU2V0OlNldDtmdW5jdGlvbiBDaShhLGIpe3ZhciBjPWIuc291cmNlLGQ9Yi5zdGFjaztudWxsPT09ZCYmbnVsbCE9PWMmJihkPXFiKGMpKTtudWxsIT09YyYmcGIoYy50eXBlKTtiPWIudmFsdWU7bnVsbCE9PWEmJjE9PT1hLnRhZyYmcGIoYS50eXBlKTt0cnl7Y29uc29sZS5lcnJvcihiKX1jYXRjaChlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZTt9KX19ZnVuY3Rpb24gRGkoYSxiKXt0cnl7Yi5wcm9wcz1hLm1lbW9pemVkUHJvcHMsYi5zdGF0ZT1hLm1lbW9pemVkU3RhdGUsYi5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGMpe0VpKGEsYyl9fWZ1bmN0aW9uIEZpKGEpe3ZhciBiPWEucmVmO2lmKG51bGwhPT1iKWlmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXRyeXtiKG51bGwpfWNhdGNoKGMpe0VpKGEsYyl9ZWxzZSBiLmN1cnJlbnQ9bnVsbH1cbmZ1bmN0aW9uIEdpKGEsYil7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmNhc2UgMjI6cmV0dXJuO2Nhc2UgMTppZihiLmVmZmVjdFRhZyYyNTYmJm51bGwhPT1hKXt2YXIgYz1hLm1lbW9pemVkUHJvcHMsZD1hLm1lbW9pemVkU3RhdGU7YT1iLnN0YXRlTm9kZTtiPWEuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoYi5lbGVtZW50VHlwZT09PWIudHlwZT9jOmlnKGIudHlwZSxjKSxkKTthLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPWJ9cmV0dXJuO2Nhc2UgMzpjYXNlIDU6Y2FzZSA2OmNhc2UgNDpjYXNlIDE3OnJldHVybn10aHJvdyBFcnJvcih1KDE2MykpO31cbmZ1bmN0aW9uIEhpKGEsYil7Yj1iLnVwZGF0ZVF1ZXVlO2I9bnVsbCE9PWI/Yi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWIpe3ZhciBjPWI9Yi5uZXh0O2Rve2lmKChjLnRhZyZhKT09PWEpe3ZhciBkPWMuZGVzdHJveTtjLmRlc3Ryb3k9dm9pZCAwO3ZvaWQgMCE9PWQmJmQoKX1jPWMubmV4dH13aGlsZShjIT09Yil9fWZ1bmN0aW9uIElpKGEsYil7Yj1iLnVwZGF0ZVF1ZXVlO2I9bnVsbCE9PWI/Yi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWIpe3ZhciBjPWI9Yi5uZXh0O2Rve2lmKChjLnRhZyZhKT09PWEpe3ZhciBkPWMuY3JlYXRlO2MuZGVzdHJveT1kKCl9Yz1jLm5leHR9d2hpbGUoYyE9PWIpfX1cbmZ1bmN0aW9uIEppKGEsYixjKXtzd2l0Y2goYy50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6Y2FzZSAyMjpJaSgzLGMpO3JldHVybjtjYXNlIDE6YT1jLnN0YXRlTm9kZTtpZihjLmVmZmVjdFRhZyY0KWlmKG51bGw9PT1iKWEuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBkPWMuZWxlbWVudFR5cGU9PT1jLnR5cGU/Yi5tZW1vaXplZFByb3BzOmlnKGMudHlwZSxiLm1lbW9pemVkUHJvcHMpO2EuY29tcG9uZW50RGlkVXBkYXRlKGQsYi5tZW1vaXplZFN0YXRlLGEuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfWI9Yy51cGRhdGVRdWV1ZTtudWxsIT09YiYmQ2coYyxiLGEpO3JldHVybjtjYXNlIDM6Yj1jLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iKXthPW51bGw7aWYobnVsbCE9PWMuY2hpbGQpc3dpdGNoKGMuY2hpbGQudGFnKXtjYXNlIDU6YT1jLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6YT1jLmNoaWxkLnN0YXRlTm9kZX1DZyhjLGIsYSl9cmV0dXJuO1xuY2FzZSA1OmE9Yy5zdGF0ZU5vZGU7bnVsbD09PWImJmMuZWZmZWN0VGFnJjQmJkZkKGMudHlwZSxjLm1lbW9pemVkUHJvcHMpJiZhLmZvY3VzKCk7cmV0dXJuO2Nhc2UgNjpyZXR1cm47Y2FzZSA0OnJldHVybjtjYXNlIDEyOnJldHVybjtjYXNlIDEzOm51bGw9PT1jLm1lbW9pemVkU3RhdGUmJihjPWMuYWx0ZXJuYXRlLG51bGwhPT1jJiYoYz1jLm1lbW9pemVkU3RhdGUsbnVsbCE9PWMmJihjPWMuZGVoeWRyYXRlZCxudWxsIT09YyYmVmMoYykpKSk7cmV0dXJuO2Nhc2UgMTk6Y2FzZSAxNzpjYXNlIDIwOmNhc2UgMjE6cmV0dXJufXRocm93IEVycm9yKHUoMTYzKSk7fVxuZnVuY3Rpb24gS2koYSxiLGMpe1wiZnVuY3Rpb25cIj09PXR5cGVvZiBMaSYmTGkoYik7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAyMjphPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWEmJihhPWEubGFzdEVmZmVjdCxudWxsIT09YSkpe3ZhciBkPWEubmV4dDtjZyg5NzxjPzk3OmMsZnVuY3Rpb24oKXt2YXIgYT1kO2Rve3ZhciBjPWEuZGVzdHJveTtpZih2b2lkIDAhPT1jKXt2YXIgZz1iO3RyeXtjKCl9Y2F0Y2goaCl7RWkoZyxoKX19YT1hLm5leHR9d2hpbGUoYSE9PWQpfSl9YnJlYWs7Y2FzZSAxOkZpKGIpO2M9Yi5zdGF0ZU5vZGU7XCJmdW5jdGlvblwiPT09dHlwZW9mIGMuY29tcG9uZW50V2lsbFVubW91bnQmJkRpKGIsYyk7YnJlYWs7Y2FzZSA1OkZpKGIpO2JyZWFrO2Nhc2UgNDpNaShhLGIsYyl9fVxuZnVuY3Rpb24gTmkoYSl7dmFyIGI9YS5hbHRlcm5hdGU7YS5yZXR1cm49bnVsbDthLmNoaWxkPW51bGw7YS5tZW1vaXplZFN0YXRlPW51bGw7YS51cGRhdGVRdWV1ZT1udWxsO2EuZGVwZW5kZW5jaWVzPW51bGw7YS5hbHRlcm5hdGU9bnVsbDthLmZpcnN0RWZmZWN0PW51bGw7YS5sYXN0RWZmZWN0PW51bGw7YS5wZW5kaW5nUHJvcHM9bnVsbDthLm1lbW9pemVkUHJvcHM9bnVsbDthLnN0YXRlTm9kZT1udWxsO251bGwhPT1iJiZOaShiKX1mdW5jdGlvbiBPaShhKXtyZXR1cm4gNT09PWEudGFnfHwzPT09YS50YWd8fDQ9PT1hLnRhZ31cbmZ1bmN0aW9uIFBpKGEpe2E6e2Zvcih2YXIgYj1hLnJldHVybjtudWxsIT09Yjspe2lmKE9pKGIpKXt2YXIgYz1iO2JyZWFrIGF9Yj1iLnJldHVybn10aHJvdyBFcnJvcih1KDE2MCkpO31iPWMuc3RhdGVOb2RlO3N3aXRjaChjLnRhZyl7Y2FzZSA1OnZhciBkPSExO2JyZWFrO2Nhc2UgMzpiPWIuY29udGFpbmVySW5mbztkPSEwO2JyZWFrO2Nhc2UgNDpiPWIuY29udGFpbmVySW5mbztkPSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IodSgxNjEpKTt9Yy5lZmZlY3RUYWcmMTYmJihSYihiLFwiXCIpLGMuZWZmZWN0VGFnJj0tMTcpO2E6Yjpmb3IoYz1hOzspe2Zvcig7bnVsbD09PWMuc2libGluZzspe2lmKG51bGw9PT1jLnJldHVybnx8T2koYy5yZXR1cm4pKXtjPW51bGw7YnJlYWsgYX1jPWMucmV0dXJufWMuc2libGluZy5yZXR1cm49Yy5yZXR1cm47Zm9yKGM9Yy5zaWJsaW5nOzUhPT1jLnRhZyYmNiE9PWMudGFnJiYxOCE9PWMudGFnOyl7aWYoYy5lZmZlY3RUYWcmMiljb250aW51ZSBiO1xuaWYobnVsbD09PWMuY2hpbGR8fDQ9PT1jLnRhZyljb250aW51ZSBiO2Vsc2UgYy5jaGlsZC5yZXR1cm49YyxjPWMuY2hpbGR9aWYoIShjLmVmZmVjdFRhZyYyKSl7Yz1jLnN0YXRlTm9kZTticmVhayBhfX1kP1FpKGEsYyxiKTpSaShhLGMsYil9XG5mdW5jdGlvbiBRaShhLGIsYyl7dmFyIGQ9YS50YWcsZT01PT09ZHx8Nj09PWQ7aWYoZSlhPWU/YS5zdGF0ZU5vZGU6YS5zdGF0ZU5vZGUuaW5zdGFuY2UsYj84PT09Yy5ub2RlVHlwZT9jLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYik6Yy5pbnNlcnRCZWZvcmUoYSxiKTooOD09PWMubm9kZVR5cGU/KGI9Yy5wYXJlbnROb2RlLGIuaW5zZXJ0QmVmb3JlKGEsYykpOihiPWMsYi5hcHBlbmRDaGlsZChhKSksYz1jLl9yZWFjdFJvb3RDb250YWluZXIsbnVsbCE9PWMmJnZvaWQgMCE9PWN8fG51bGwhPT1iLm9uY2xpY2t8fChiLm9uY2xpY2s9c2QpKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoUWkoYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylRaShhLGIsYyksYT1hLnNpYmxpbmd9XG5mdW5jdGlvbiBSaShhLGIsYyl7dmFyIGQ9YS50YWcsZT01PT09ZHx8Nj09PWQ7aWYoZSlhPWU/YS5zdGF0ZU5vZGU6YS5zdGF0ZU5vZGUuaW5zdGFuY2UsYj9jLmluc2VydEJlZm9yZShhLGIpOmMuYXBwZW5kQ2hpbGQoYSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKFJpKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspUmkoYSxiLGMpLGE9YS5zaWJsaW5nfVxuZnVuY3Rpb24gTWkoYSxiLGMpe2Zvcih2YXIgZD1iLGU9ITEsZixnOzspe2lmKCFlKXtlPWQucmV0dXJuO2E6Zm9yKDs7KXtpZihudWxsPT09ZSl0aHJvdyBFcnJvcih1KDE2MCkpO2Y9ZS5zdGF0ZU5vZGU7c3dpdGNoKGUudGFnKXtjYXNlIDU6Zz0hMTticmVhayBhO2Nhc2UgMzpmPWYuY29udGFpbmVySW5mbztnPSEwO2JyZWFrIGE7Y2FzZSA0OmY9Zi5jb250YWluZXJJbmZvO2c9ITA7YnJlYWsgYX1lPWUucmV0dXJufWU9ITB9aWYoNT09PWQudGFnfHw2PT09ZC50YWcpe2E6Zm9yKHZhciBoPWEsaz1kLGw9YyxtPWs7OylpZihLaShoLG0sbCksbnVsbCE9PW0uY2hpbGQmJjQhPT1tLnRhZyltLmNoaWxkLnJldHVybj1tLG09bS5jaGlsZDtlbHNle2lmKG09PT1rKWJyZWFrIGE7Zm9yKDtudWxsPT09bS5zaWJsaW5nOyl7aWYobnVsbD09PW0ucmV0dXJufHxtLnJldHVybj09PWspYnJlYWsgYTttPW0ucmV0dXJufW0uc2libGluZy5yZXR1cm49bS5yZXR1cm47bT1tLnNpYmxpbmd9Zz8oaD1cbmYsaz1kLnN0YXRlTm9kZSw4PT09aC5ub2RlVHlwZT9oLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoayk6aC5yZW1vdmVDaGlsZChrKSk6Zi5yZW1vdmVDaGlsZChkLnN0YXRlTm9kZSl9ZWxzZSBpZig0PT09ZC50YWcpe2lmKG51bGwhPT1kLmNoaWxkKXtmPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87Zz0hMDtkLmNoaWxkLnJldHVybj1kO2Q9ZC5jaGlsZDtjb250aW51ZX19ZWxzZSBpZihLaShhLGQsYyksbnVsbCE9PWQuY2hpbGQpe2QuY2hpbGQucmV0dXJuPWQ7ZD1kLmNoaWxkO2NvbnRpbnVlfWlmKGQ9PT1iKWJyZWFrO2Zvcig7bnVsbD09PWQuc2libGluZzspe2lmKG51bGw9PT1kLnJldHVybnx8ZC5yZXR1cm49PT1iKXJldHVybjtkPWQucmV0dXJuOzQ9PT1kLnRhZyYmKGU9ITEpfWQuc2libGluZy5yZXR1cm49ZC5yZXR1cm47ZD1kLnNpYmxpbmd9fVxuZnVuY3Rpb24gU2koYSxiKXtzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpjYXNlIDIyOkhpKDMsYik7cmV0dXJuO2Nhc2UgMTpyZXR1cm47Y2FzZSA1OnZhciBjPWIuc3RhdGVOb2RlO2lmKG51bGwhPWMpe3ZhciBkPWIubWVtb2l6ZWRQcm9wcyxlPW51bGwhPT1hP2EubWVtb2l6ZWRQcm9wczpkO2E9Yi50eXBlO3ZhciBmPWIudXBkYXRlUXVldWU7Yi51cGRhdGVRdWV1ZT1udWxsO2lmKG51bGwhPT1mKXtjW05kXT1kO1wiaW5wdXRcIj09PWEmJlwicmFkaW9cIj09PWQudHlwZSYmbnVsbCE9ZC5uYW1lJiZCYihjLGQpO3BkKGEsZSk7Yj1wZChhLGQpO2ZvcihlPTA7ZTxmLmxlbmd0aDtlKz0yKXt2YXIgZz1mW2VdLGg9ZltlKzFdO1wic3R5bGVcIj09PWc/bWQoYyxoKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1nP1FiKGMsaCk6XCJjaGlsZHJlblwiPT09Zz9SYihjLGgpOlhhKGMsZyxoLGIpfXN3aXRjaChhKXtjYXNlIFwiaW5wdXRcIjpDYihjLGQpO2JyZWFrO1xuY2FzZSBcInRleHRhcmVhXCI6S2IoYyxkKTticmVhaztjYXNlIFwic2VsZWN0XCI6Yj1jLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUsYy5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhZC5tdWx0aXBsZSxhPWQudmFsdWUsbnVsbCE9YT9IYihjLCEhZC5tdWx0aXBsZSxhLCExKTpiIT09ISFkLm11bHRpcGxlJiYobnVsbCE9ZC5kZWZhdWx0VmFsdWU/SGIoYywhIWQubXVsdGlwbGUsZC5kZWZhdWx0VmFsdWUsITApOkhiKGMsISFkLm11bHRpcGxlLGQubXVsdGlwbGU/W106XCJcIiwhMSkpfX19cmV0dXJuO2Nhc2UgNjppZihudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IodSgxNjIpKTtiLnN0YXRlTm9kZS5ub2RlVmFsdWU9Yi5tZW1vaXplZFByb3BzO3JldHVybjtjYXNlIDM6Yj1iLnN0YXRlTm9kZTtiLmh5ZHJhdGUmJihiLmh5ZHJhdGU9ITEsVmMoYi5jb250YWluZXJJbmZvKSk7cmV0dXJuO2Nhc2UgMTI6cmV0dXJuO2Nhc2UgMTM6Yz1iO251bGw9PT1iLm1lbW9pemVkU3RhdGU/XG5kPSExOihkPSEwLGM9Yi5jaGlsZCxUaT0kZigpKTtpZihudWxsIT09YylhOmZvcihhPWM7Oyl7aWYoNT09PWEudGFnKWY9YS5zdGF0ZU5vZGUsZD8oZj1mLnN0eWxlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLnNldFByb3BlcnR5P2Yuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJub25lXCIsXCJpbXBvcnRhbnRcIik6Zi5kaXNwbGF5PVwibm9uZVwiKTooZj1hLnN0YXRlTm9kZSxlPWEubWVtb2l6ZWRQcm9wcy5zdHlsZSxlPXZvaWQgMCE9PWUmJm51bGwhPT1lJiZlLmhhc093blByb3BlcnR5KFwiZGlzcGxheVwiKT9lLmRpc3BsYXk6bnVsbCxmLnN0eWxlLmRpc3BsYXk9bGQoXCJkaXNwbGF5XCIsZSkpO2Vsc2UgaWYoNj09PWEudGFnKWEuc3RhdGVOb2RlLm5vZGVWYWx1ZT1kP1wiXCI6YS5tZW1vaXplZFByb3BzO2Vsc2UgaWYoMTM9PT1hLnRhZyYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYmbnVsbD09PWEubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKXtmPWEuY2hpbGQuc2libGluZztmLnJldHVybj1hO2E9XG5mO2NvbnRpbnVlfWVsc2UgaWYobnVsbCE9PWEuY2hpbGQpe2EuY2hpbGQucmV0dXJuPWE7YT1hLmNoaWxkO2NvbnRpbnVlfWlmKGE9PT1jKWJyZWFrO2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8YS5yZXR1cm49PT1jKWJyZWFrIGE7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2E9YS5zaWJsaW5nfVVpKGIpO3JldHVybjtjYXNlIDE5OlVpKGIpO3JldHVybjtjYXNlIDE3OnJldHVybn10aHJvdyBFcnJvcih1KDE2MykpO31mdW5jdGlvbiBVaShhKXt2YXIgYj1hLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iKXthLnVwZGF0ZVF1ZXVlPW51bGw7dmFyIGM9YS5zdGF0ZU5vZGU7bnVsbD09PWMmJihjPWEuc3RhdGVOb2RlPW5ldyBCaSk7Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPVZpLmJpbmQobnVsbCxhLGIpO2MuaGFzKGIpfHwoYy5hZGQoYiksYi50aGVuKGQsZCkpfSl9fVxudmFyIFdpPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwO2Z1bmN0aW9uIFhpKGEsYixjKXtjPXdnKGMsbnVsbCk7Yy50YWc9MztjLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH07dmFyIGQ9Yi52YWx1ZTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7WWl8fChZaT0hMCxaaT1kKTtDaShhLGIpfTtyZXR1cm4gY31cbmZ1bmN0aW9uICRpKGEsYixjKXtjPXdnKGMsbnVsbCk7Yy50YWc9Mzt2YXIgZD1hLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgZT1iLnZhbHVlO2MucGF5bG9hZD1mdW5jdGlvbigpe0NpKGEsYik7cmV0dXJuIGQoZSl9fXZhciBmPWEuc3RhdGVOb2RlO251bGwhPT1mJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5jb21wb25lbnREaWRDYXRjaCYmKGMuY2FsbGJhY2s9ZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCIhPT10eXBlb2YgZCYmKG51bGw9PT1haj9haj1uZXcgU2V0KFt0aGlzXSk6YWouYWRkKHRoaXMpLENpKGEsYikpO3ZhciBjPWIuc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaChiLnZhbHVlLHtjb21wb25lbnRTdGFjazpudWxsIT09Yz9jOlwiXCJ9KX0pO3JldHVybiBjfVxudmFyIGJqPU1hdGguY2VpbCxjaj1XYS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGRqPVdhLlJlYWN0Q3VycmVudE93bmVyLFY9MCxlaj04LGZqPTE2LGdqPTMyLHRpPTAsaGo9MSxpaj0yLHVpPTMsdmk9NCxqaj01LFc9VixUPW51bGwsWD1udWxsLFU9MCxTPXRpLGtqPW51bGwsbGo9MTA3Mzc0MTgyMyxtaj0xMDczNzQxODIzLG5qPW51bGwsd2k9MCxvaj0hMSxUaT0wLHBqPTUwMCxZPW51bGwsWWk9ITEsWmk9bnVsbCxhaj1udWxsLHFqPSExLHJqPW51bGwsc2o9OTAsdGo9bnVsbCx1aj0wLHZqPW51bGwsd2o9MDtmdW5jdGlvbiBHZygpe3JldHVybihXJihmanxnaikpIT09Vj8xMDczNzQxODIxLSgkZigpLzEwfDApOjAhPT13aj93ajp3aj0xMDczNzQxODIxLSgkZigpLzEwfDApfVxuZnVuY3Rpb24gSGcoYSxiLGMpe2I9Yi5tb2RlO2lmKDA9PT0oYiYyKSlyZXR1cm4gMTA3Mzc0MTgyMzt2YXIgZD1hZygpO2lmKDA9PT0oYiY0KSlyZXR1cm4gOTk9PT1kPzEwNzM3NDE4MjM6MTA3Mzc0MTgyMjtpZigoVyZmaikhPT1WKXJldHVybiBVO2lmKG51bGwhPT1jKWE9aGcoYSxjLnRpbWVvdXRNc3wwfHw1RTMsMjUwKTtlbHNlIHN3aXRjaChkKXtjYXNlIDk5OmE9MTA3Mzc0MTgyMzticmVhaztjYXNlIDk4OmE9aGcoYSwxNTAsMTAwKTticmVhaztjYXNlIDk3OmNhc2UgOTY6YT1oZyhhLDVFMywyNTApO2JyZWFrO2Nhc2UgOTU6YT0yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IodSgzMjYpKTt9bnVsbCE9PVQmJmE9PT1VJiYtLWE7cmV0dXJuIGF9XG5mdW5jdGlvbiBJZyhhLGIpe2lmKDUwPHVqKXRocm93IHVqPTAsdmo9bnVsbCxFcnJvcih1KDE4NSkpO2E9eGooYSxiKTtpZihudWxsIT09YSl7dmFyIGM9YWcoKTsxMDczNzQxODIzPT09Yj8oVyZlaikhPT1WJiYoVyYoZmp8Z2opKT09PVY/eWooYSk6KFooYSksVz09PVYmJmdnKCkpOlooYSk7KFcmNCk9PT1WfHw5OCE9PWMmJjk5IT09Y3x8KG51bGw9PT10aj90aj1uZXcgTWFwKFtbYSxiXV0pOihjPXRqLmdldChhKSwodm9pZCAwPT09Y3x8Yz5iKSYmdGouc2V0KGEsYikpKX19XG5mdW5jdGlvbiB4aihhLGIpe2EuZXhwaXJhdGlvblRpbWU8YiYmKGEuZXhwaXJhdGlvblRpbWU9Yik7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbCE9PWMmJmMuZXhwaXJhdGlvblRpbWU8YiYmKGMuZXhwaXJhdGlvblRpbWU9Yik7dmFyIGQ9YS5yZXR1cm4sZT1udWxsO2lmKG51bGw9PT1kJiYzPT09YS50YWcpZT1hLnN0YXRlTm9kZTtlbHNlIGZvcig7bnVsbCE9PWQ7KXtjPWQuYWx0ZXJuYXRlO2QuY2hpbGRFeHBpcmF0aW9uVGltZTxiJiYoZC5jaGlsZEV4cGlyYXRpb25UaW1lPWIpO251bGwhPT1jJiZjLmNoaWxkRXhwaXJhdGlvblRpbWU8YiYmKGMuY2hpbGRFeHBpcmF0aW9uVGltZT1iKTtpZihudWxsPT09ZC5yZXR1cm4mJjM9PT1kLnRhZyl7ZT1kLnN0YXRlTm9kZTticmVha31kPWQucmV0dXJufW51bGwhPT1lJiYoVD09PWUmJihCZyhiKSxTPT09dmkmJnhpKGUsVSkpLHlpKGUsYikpO3JldHVybiBlfVxuZnVuY3Rpb24gemooYSl7dmFyIGI9YS5sYXN0RXhwaXJlZFRpbWU7aWYoMCE9PWIpcmV0dXJuIGI7Yj1hLmZpcnN0UGVuZGluZ1RpbWU7aWYoIUFqKGEsYikpcmV0dXJuIGI7dmFyIGM9YS5sYXN0UGluZ2VkVGltZTthPWEubmV4dEtub3duUGVuZGluZ0xldmVsO2E9Yz5hP2M6YTtyZXR1cm4gMj49YSYmYiE9PWE/MDphfVxuZnVuY3Rpb24gWihhKXtpZigwIT09YS5sYXN0RXhwaXJlZFRpbWUpYS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPTEwNzM3NDE4MjMsYS5jYWxsYmFja1ByaW9yaXR5PTk5LGEuY2FsbGJhY2tOb2RlPWVnKHlqLmJpbmQobnVsbCxhKSk7ZWxzZXt2YXIgYj16aihhKSxjPWEuY2FsbGJhY2tOb2RlO2lmKDA9PT1iKW51bGwhPT1jJiYoYS5jYWxsYmFja05vZGU9bnVsbCxhLmNhbGxiYWNrRXhwaXJhdGlvblRpbWU9MCxhLmNhbGxiYWNrUHJpb3JpdHk9OTApO2Vsc2V7dmFyIGQ9R2coKTsxMDczNzQxODIzPT09Yj9kPTk5OjE9PT1ifHwyPT09Yj9kPTk1OihkPTEwKigxMDczNzQxODIxLWIpLTEwKigxMDczNzQxODIxLWQpLGQ9MD49ZD85OToyNTA+PWQ/OTg6NTI1MD49ZD85Nzo5NSk7aWYobnVsbCE9PWMpe3ZhciBlPWEuY2FsbGJhY2tQcmlvcml0eTtpZihhLmNhbGxiYWNrRXhwaXJhdGlvblRpbWU9PT1iJiZlPj1kKXJldHVybjtjIT09VGYmJktmKGMpfWEuY2FsbGJhY2tFeHBpcmF0aW9uVGltZT1cbmI7YS5jYWxsYmFja1ByaW9yaXR5PWQ7Yj0xMDczNzQxODIzPT09Yj9lZyh5ai5iaW5kKG51bGwsYSkpOmRnKGQsQmouYmluZChudWxsLGEpLHt0aW1lb3V0OjEwKigxMDczNzQxODIxLWIpLSRmKCl9KTthLmNhbGxiYWNrTm9kZT1ifX19XG5mdW5jdGlvbiBCaihhLGIpe3dqPTA7aWYoYilyZXR1cm4gYj1HZygpLENqKGEsYiksWihhKSxudWxsO3ZhciBjPXpqKGEpO2lmKDAhPT1jKXtiPWEuY2FsbGJhY2tOb2RlO2lmKChXJihmanxnaikpIT09Vil0aHJvdyBFcnJvcih1KDMyNykpO0RqKCk7YT09PVQmJmM9PT1VfHxFaihhLGMpO2lmKG51bGwhPT1YKXt2YXIgZD1XO1d8PWZqO3ZhciBlPUZqKCk7ZG8gdHJ5e0dqKCk7YnJlYWt9Y2F0Y2goaCl7SGooYSxoKX13aGlsZSgxKTtuZygpO1c9ZDtjai5jdXJyZW50PWU7aWYoUz09PWhqKXRocm93IGI9a2osRWooYSxjKSx4aShhLGMpLFooYSksYjtpZihudWxsPT09WClzd2l0Y2goZT1hLmZpbmlzaGVkV29yaz1hLmN1cnJlbnQuYWx0ZXJuYXRlLGEuZmluaXNoZWRFeHBpcmF0aW9uVGltZT1jLGQ9UyxUPW51bGwsZCl7Y2FzZSB0aTpjYXNlIGhqOnRocm93IEVycm9yKHUoMzQ1KSk7Y2FzZSBpajpDaihhLDI8Yz8yOmMpO2JyZWFrO2Nhc2UgdWk6eGkoYSxjKTtkPWEubGFzdFN1c3BlbmRlZFRpbWU7XG5jPT09ZCYmKGEubmV4dEtub3duUGVuZGluZ0xldmVsPUlqKGUpKTtpZigxMDczNzQxODIzPT09bGomJihlPVRpK3BqLSRmKCksMTA8ZSkpe2lmKG9qKXt2YXIgZj1hLmxhc3RQaW5nZWRUaW1lO2lmKDA9PT1mfHxmPj1jKXthLmxhc3RQaW5nZWRUaW1lPWM7RWooYSxjKTticmVha319Zj16aihhKTtpZigwIT09ZiYmZiE9PWMpYnJlYWs7aWYoMCE9PWQmJmQhPT1jKXthLmxhc3RQaW5nZWRUaW1lPWQ7YnJlYWt9YS50aW1lb3V0SGFuZGxlPUhkKEpqLmJpbmQobnVsbCxhKSxlKTticmVha31KaihhKTticmVhaztjYXNlIHZpOnhpKGEsYyk7ZD1hLmxhc3RTdXNwZW5kZWRUaW1lO2M9PT1kJiYoYS5uZXh0S25vd25QZW5kaW5nTGV2ZWw9SWooZSkpO2lmKG9qJiYoZT1hLmxhc3RQaW5nZWRUaW1lLDA9PT1lfHxlPj1jKSl7YS5sYXN0UGluZ2VkVGltZT1jO0VqKGEsYyk7YnJlYWt9ZT16aihhKTtpZigwIT09ZSYmZSE9PWMpYnJlYWs7aWYoMCE9PWQmJmQhPT1jKXthLmxhc3RQaW5nZWRUaW1lPVxuZDticmVha30xMDczNzQxODIzIT09bWo/ZD0xMCooMTA3Mzc0MTgyMS1taiktJGYoKToxMDczNzQxODIzPT09bGo/ZD0wOihkPTEwKigxMDczNzQxODIxLWxqKS01RTMsZT0kZigpLGM9MTAqKDEwNzM3NDE4MjEtYyktZSxkPWUtZCwwPmQmJihkPTApLGQ9KDEyMD5kPzEyMDo0ODA+ZD80ODA6MTA4MD5kPzEwODA6MTkyMD5kPzE5MjA6M0UzPmQ/M0UzOjQzMjA+ZD80MzIwOjE5NjAqYmooZC8xOTYwKSktZCxjPGQmJihkPWMpKTtpZigxMDxkKXthLnRpbWVvdXRIYW5kbGU9SGQoSmouYmluZChudWxsLGEpLGQpO2JyZWFrfUpqKGEpO2JyZWFrO2Nhc2Ugamo6aWYoMTA3Mzc0MTgyMyE9PWxqJiZudWxsIT09bmope2Y9bGo7dmFyIGc9bmo7ZD1nLmJ1c3lNaW5EdXJhdGlvbk1zfDA7MD49ZD9kPTA6KGU9Zy5idXN5RGVsYXlNc3wwLGY9JGYoKS0oMTAqKDEwNzM3NDE4MjEtZiktKGcudGltZW91dE1zfDB8fDVFMykpLGQ9Zjw9ZT8wOmUrZC1mKTtpZigxMDxkKXt4aShhLGMpO2EudGltZW91dEhhbmRsZT1cbkhkKEpqLmJpbmQobnVsbCxhKSxkKTticmVha319SmooYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcih1KDMyOSkpO31aKGEpO2lmKGEuY2FsbGJhY2tOb2RlPT09YilyZXR1cm4gQmouYmluZChudWxsLGEpfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIHlqKGEpe3ZhciBiPWEubGFzdEV4cGlyZWRUaW1lO2I9MCE9PWI/YjoxMDczNzQxODIzO2lmKChXJihmanxnaikpIT09Vil0aHJvdyBFcnJvcih1KDMyNykpO0RqKCk7YT09PVQmJmI9PT1VfHxFaihhLGIpO2lmKG51bGwhPT1YKXt2YXIgYz1XO1d8PWZqO3ZhciBkPUZqKCk7ZG8gdHJ5e0tqKCk7YnJlYWt9Y2F0Y2goZSl7SGooYSxlKX13aGlsZSgxKTtuZygpO1c9Yztjai5jdXJyZW50PWQ7aWYoUz09PWhqKXRocm93IGM9a2osRWooYSxiKSx4aShhLGIpLFooYSksYztpZihudWxsIT09WCl0aHJvdyBFcnJvcih1KDI2MSkpO2EuZmluaXNoZWRXb3JrPWEuY3VycmVudC5hbHRlcm5hdGU7YS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPWI7VD1udWxsO0pqKGEpO1ooYSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gTGooKXtpZihudWxsIT09dGope3ZhciBhPXRqO3RqPW51bGw7YS5mb3JFYWNoKGZ1bmN0aW9uKGEsYyl7Q2ooYyxhKTtaKGMpfSk7Z2coKX19XG5mdW5jdGlvbiBNaihhLGIpe3ZhciBjPVc7V3w9MTt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtXPWMsVz09PVYmJmdnKCl9fWZ1bmN0aW9uIE5qKGEsYil7dmFyIGM9VztXJj0tMjtXfD1lajt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtXPWMsVz09PVYmJmdnKCl9fVxuZnVuY3Rpb24gRWooYSxiKXthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRFeHBpcmF0aW9uVGltZT0wO3ZhciBjPWEudGltZW91dEhhbmRsZTstMSE9PWMmJihhLnRpbWVvdXRIYW5kbGU9LTEsSWQoYykpO2lmKG51bGwhPT1YKWZvcihjPVgucmV0dXJuO251bGwhPT1jOyl7dmFyIGQ9Yztzd2l0Y2goZC50YWcpe2Nhc2UgMTpkPWQudHlwZS5jaGlsZENvbnRleHRUeXBlcztudWxsIT09ZCYmdm9pZCAwIT09ZCYmRGYoKTticmVhaztjYXNlIDM6ZWgoKTtIKEspO0goSik7YnJlYWs7Y2FzZSA1OmdoKGQpO2JyZWFrO2Nhc2UgNDplaCgpO2JyZWFrO2Nhc2UgMTM6SChNKTticmVhaztjYXNlIDE5OkgoTSk7YnJlYWs7Y2FzZSAxMDpvZyhkKX1jPWMucmV0dXJufVQ9YTtYPVNnKGEuY3VycmVudCxudWxsKTtVPWI7Uz10aTtraj1udWxsO21qPWxqPTEwNzM3NDE4MjM7bmo9bnVsbDt3aT0wO29qPSExfVxuZnVuY3Rpb24gSGooYSxiKXtkb3t0cnl7bmcoKTtqaC5jdXJyZW50PXNoO2lmKG1oKWZvcih2YXIgYz1OLm1lbW9pemVkU3RhdGU7bnVsbCE9PWM7KXt2YXIgZD1jLnF1ZXVlO251bGwhPT1kJiYoZC5wZW5kaW5nPW51bGwpO2M9Yy5uZXh0fWxoPTA7UD1PPU49bnVsbDttaD0hMTtpZihudWxsPT09WHx8bnVsbD09PVgucmV0dXJuKXJldHVybiBTPWhqLGtqPWIsWD1udWxsO2E6e3ZhciBlPWEsZj1YLnJldHVybixnPVgsaD1iO2I9VTtnLmVmZmVjdFRhZ3w9MjA0ODtnLmZpcnN0RWZmZWN0PWcubGFzdEVmZmVjdD1udWxsO2lmKG51bGwhPT1oJiZcIm9iamVjdFwiPT09dHlwZW9mIGgmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBoLnRoZW4pe3ZhciBrPWg7aWYoMD09PShnLm1vZGUmMikpe3ZhciBsPWcuYWx0ZXJuYXRlO2w/KGcudXBkYXRlUXVldWU9bC51cGRhdGVRdWV1ZSxnLm1lbW9pemVkU3RhdGU9bC5tZW1vaXplZFN0YXRlLGcuZXhwaXJhdGlvblRpbWU9bC5leHBpcmF0aW9uVGltZSk6KGcudXBkYXRlUXVldWU9XG5udWxsLGcubWVtb2l6ZWRTdGF0ZT1udWxsKX12YXIgbT0wIT09KE0uY3VycmVudCYxKSxwPWY7ZG97dmFyIHg7aWYoeD0xMz09PXAudGFnKXt2YXIgej1wLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PXopeD1udWxsIT09ei5kZWh5ZHJhdGVkPyEwOiExO2Vsc2V7dmFyIGNhPXAubWVtb2l6ZWRQcm9wczt4PXZvaWQgMD09PWNhLmZhbGxiYWNrPyExOiEwIT09Y2EudW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2s/ITA6bT8hMTohMH19aWYoeCl7dmFyIEQ9cC51cGRhdGVRdWV1ZTtpZihudWxsPT09RCl7dmFyIHQ9bmV3IFNldDt0LmFkZChrKTtwLnVwZGF0ZVF1ZXVlPXR9ZWxzZSBELmFkZChrKTtpZigwPT09KHAubW9kZSYyKSl7cC5lZmZlY3RUYWd8PTY0O2cuZWZmZWN0VGFnJj0tMjk4MTtpZigxPT09Zy50YWcpaWYobnVsbD09PWcuYWx0ZXJuYXRlKWcudGFnPTE3O2Vsc2V7dmFyIHk9d2coMTA3Mzc0MTgyMyxudWxsKTt5LnRhZz0yO3hnKGcseSl9Zy5leHBpcmF0aW9uVGltZT0xMDczNzQxODIzO1xuYnJlYWsgYX1oPXZvaWQgMDtnPWI7dmFyIEE9ZS5waW5nQ2FjaGU7bnVsbD09PUE/KEE9ZS5waW5nQ2FjaGU9bmV3IFdpLGg9bmV3IFNldCxBLnNldChrLGgpKTooaD1BLmdldChrKSx2b2lkIDA9PT1oJiYoaD1uZXcgU2V0LEEuc2V0KGssaCkpKTtpZighaC5oYXMoZykpe2guYWRkKGcpO3ZhciBxPU9qLmJpbmQobnVsbCxlLGssZyk7ay50aGVuKHEscSl9cC5lZmZlY3RUYWd8PTQwOTY7cC5leHBpcmF0aW9uVGltZT1iO2JyZWFrIGF9cD1wLnJldHVybn13aGlsZShudWxsIT09cCk7aD1FcnJvcigocGIoZy50eXBlKXx8XCJBIFJlYWN0IGNvbXBvbmVudFwiKStcIiBzdXNwZW5kZWQgd2hpbGUgcmVuZGVyaW5nLCBidXQgbm8gZmFsbGJhY2sgVUkgd2FzIHNwZWNpZmllZC5cXG5cXG5BZGQgYSA8U3VzcGVuc2UgZmFsbGJhY2s9Li4uPiBjb21wb25lbnQgaGlnaGVyIGluIHRoZSB0cmVlIHRvIHByb3ZpZGUgYSBsb2FkaW5nIGluZGljYXRvciBvciBwbGFjZWhvbGRlciB0byBkaXNwbGF5LlwiK3FiKGcpKX1TIT09XG5qaiYmKFM9aWopO2g9QWkoaCxnKTtwPWY7ZG97c3dpdGNoKHAudGFnKXtjYXNlIDM6az1oO3AuZWZmZWN0VGFnfD00MDk2O3AuZXhwaXJhdGlvblRpbWU9Yjt2YXIgQj1YaShwLGssYik7eWcocCxCKTticmVhayBhO2Nhc2UgMTprPWg7dmFyIHc9cC50eXBlLHViPXAuc3RhdGVOb2RlO2lmKDA9PT0ocC5lZmZlY3RUYWcmNjQpJiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIHcuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxudWxsIT09dWImJlwiZnVuY3Rpb25cIj09PXR5cGVvZiB1Yi5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1hanx8IWFqLmhhcyh1YikpKSl7cC5lZmZlY3RUYWd8PTQwOTY7cC5leHBpcmF0aW9uVGltZT1iO3ZhciB2Yj0kaShwLGssYik7eWcocCx2Yik7YnJlYWsgYX19cD1wLnJldHVybn13aGlsZShudWxsIT09cCl9WD1QaihYKX1jYXRjaChYYyl7Yj1YYztjb250aW51ZX1icmVha313aGlsZSgxKX1cbmZ1bmN0aW9uIEZqKCl7dmFyIGE9Y2ouY3VycmVudDtjai5jdXJyZW50PXNoO3JldHVybiBudWxsPT09YT9zaDphfWZ1bmN0aW9uIEFnKGEsYil7YTxsaiYmMjxhJiYobGo9YSk7bnVsbCE9PWImJmE8bWomJjI8YSYmKG1qPWEsbmo9Yil9ZnVuY3Rpb24gQmcoYSl7YT53aSYmKHdpPWEpfWZ1bmN0aW9uIEtqKCl7Zm9yKDtudWxsIT09WDspWD1RaihYKX1mdW5jdGlvbiBHaigpe2Zvcig7bnVsbCE9PVgmJiFVZigpOylYPVFqKFgpfWZ1bmN0aW9uIFFqKGEpe3ZhciBiPVJqKGEuYWx0ZXJuYXRlLGEsVSk7YS5tZW1vaXplZFByb3BzPWEucGVuZGluZ1Byb3BzO251bGw9PT1iJiYoYj1QaihhKSk7ZGouY3VycmVudD1udWxsO3JldHVybiBifVxuZnVuY3Rpb24gUGooYSl7WD1hO2Rve3ZhciBiPVguYWx0ZXJuYXRlO2E9WC5yZXR1cm47aWYoMD09PShYLmVmZmVjdFRhZyYyMDQ4KSl7Yj1zaShiLFgsVSk7aWYoMT09PVV8fDEhPT1YLmNoaWxkRXhwaXJhdGlvblRpbWUpe2Zvcih2YXIgYz0wLGQ9WC5jaGlsZDtudWxsIT09ZDspe3ZhciBlPWQuZXhwaXJhdGlvblRpbWUsZj1kLmNoaWxkRXhwaXJhdGlvblRpbWU7ZT5jJiYoYz1lKTtmPmMmJihjPWYpO2Q9ZC5zaWJsaW5nfVguY2hpbGRFeHBpcmF0aW9uVGltZT1jfWlmKG51bGwhPT1iKXJldHVybiBiO251bGwhPT1hJiYwPT09KGEuZWZmZWN0VGFnJjIwNDgpJiYobnVsbD09PWEuZmlyc3RFZmZlY3QmJihhLmZpcnN0RWZmZWN0PVguZmlyc3RFZmZlY3QpLG51bGwhPT1YLmxhc3RFZmZlY3QmJihudWxsIT09YS5sYXN0RWZmZWN0JiYoYS5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9WC5maXJzdEVmZmVjdCksYS5sYXN0RWZmZWN0PVgubGFzdEVmZmVjdCksMTxYLmVmZmVjdFRhZyYmKG51bGwhPT1cbmEubGFzdEVmZmVjdD9hLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1YOmEuZmlyc3RFZmZlY3Q9WCxhLmxhc3RFZmZlY3Q9WCkpfWVsc2V7Yj16aShYKTtpZihudWxsIT09YilyZXR1cm4gYi5lZmZlY3RUYWcmPTIwNDcsYjtudWxsIT09YSYmKGEuZmlyc3RFZmZlY3Q9YS5sYXN0RWZmZWN0PW51bGwsYS5lZmZlY3RUYWd8PTIwNDgpfWI9WC5zaWJsaW5nO2lmKG51bGwhPT1iKXJldHVybiBiO1g9YX13aGlsZShudWxsIT09WCk7Uz09PXRpJiYoUz1qaik7cmV0dXJuIG51bGx9ZnVuY3Rpb24gSWooYSl7dmFyIGI9YS5leHBpcmF0aW9uVGltZTthPWEuY2hpbGRFeHBpcmF0aW9uVGltZTtyZXR1cm4gYj5hP2I6YX1mdW5jdGlvbiBKaihhKXt2YXIgYj1hZygpO2NnKDk5LFNqLmJpbmQobnVsbCxhLGIpKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFNqKGEsYil7ZG8gRGooKTt3aGlsZShudWxsIT09cmopO2lmKChXJihmanxnaikpIT09Vil0aHJvdyBFcnJvcih1KDMyNykpO3ZhciBjPWEuZmluaXNoZWRXb3JrLGQ9YS5maW5pc2hlZEV4cGlyYXRpb25UaW1lO2lmKG51bGw9PT1jKXJldHVybiBudWxsO2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPTA7aWYoYz09PWEuY3VycmVudCl0aHJvdyBFcnJvcih1KDE3NykpO2EuY2FsbGJhY2tOb2RlPW51bGw7YS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPTA7YS5jYWxsYmFja1ByaW9yaXR5PTkwO2EubmV4dEtub3duUGVuZGluZ0xldmVsPTA7dmFyIGU9SWooYyk7YS5maXJzdFBlbmRpbmdUaW1lPWU7ZDw9YS5sYXN0U3VzcGVuZGVkVGltZT9hLmZpcnN0U3VzcGVuZGVkVGltZT1hLmxhc3RTdXNwZW5kZWRUaW1lPWEubmV4dEtub3duUGVuZGluZ0xldmVsPTA6ZDw9YS5maXJzdFN1c3BlbmRlZFRpbWUmJihhLmZpcnN0U3VzcGVuZGVkVGltZT1cbmQtMSk7ZDw9YS5sYXN0UGluZ2VkVGltZSYmKGEubGFzdFBpbmdlZFRpbWU9MCk7ZDw9YS5sYXN0RXhwaXJlZFRpbWUmJihhLmxhc3RFeHBpcmVkVGltZT0wKTthPT09VCYmKFg9VD1udWxsLFU9MCk7MTxjLmVmZmVjdFRhZz9udWxsIT09Yy5sYXN0RWZmZWN0PyhjLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1jLGU9Yy5maXJzdEVmZmVjdCk6ZT1jOmU9Yy5maXJzdEVmZmVjdDtpZihudWxsIT09ZSl7dmFyIGY9VztXfD1najtkai5jdXJyZW50PW51bGw7RGQ9ZmQ7dmFyIGc9eGQoKTtpZih5ZChnKSl7aWYoXCJzZWxlY3Rpb25TdGFydFwiaW4gZyl2YXIgaD17c3RhcnQ6Zy5zZWxlY3Rpb25TdGFydCxlbmQ6Zy5zZWxlY3Rpb25FbmR9O2Vsc2UgYTp7aD0oaD1nLm93bmVyRG9jdW1lbnQpJiZoLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGs9aC5nZXRTZWxlY3Rpb24mJmguZ2V0U2VsZWN0aW9uKCk7aWYoayYmMCE9PWsucmFuZ2VDb3VudCl7aD1rLmFuY2hvck5vZGU7dmFyIGw9ay5hbmNob3JPZmZzZXQsXG5tPWsuZm9jdXNOb2RlO2s9ay5mb2N1c09mZnNldDt0cnl7aC5ub2RlVHlwZSxtLm5vZGVUeXBlfWNhdGNoKHdiKXtoPW51bGw7YnJlYWsgYX12YXIgcD0wLHg9LTEsej0tMSxjYT0wLEQ9MCx0PWcseT1udWxsO2I6Zm9yKDs7KXtmb3IodmFyIEE7Oyl7dCE9PWh8fDAhPT1sJiYzIT09dC5ub2RlVHlwZXx8KHg9cCtsKTt0IT09bXx8MCE9PWsmJjMhPT10Lm5vZGVUeXBlfHwoej1wK2spOzM9PT10Lm5vZGVUeXBlJiYocCs9dC5ub2RlVmFsdWUubGVuZ3RoKTtpZihudWxsPT09KEE9dC5maXJzdENoaWxkKSlicmVhazt5PXQ7dD1BfWZvcig7Oyl7aWYodD09PWcpYnJlYWsgYjt5PT09aCYmKytjYT09PWwmJih4PXApO3k9PT1tJiYrK0Q9PT1rJiYoej1wKTtpZihudWxsIT09KEE9dC5uZXh0U2libGluZykpYnJlYWs7dD15O3k9dC5wYXJlbnROb2RlfXQ9QX1oPS0xPT09eHx8LTE9PT16P251bGw6e3N0YXJ0OngsZW5kOnp9fWVsc2UgaD1udWxsfWg9aHx8e3N0YXJ0OjAsZW5kOjB9fWVsc2UgaD1cbm51bGw7RWQ9e2FjdGl2ZUVsZW1lbnREZXRhY2hlZDpudWxsLGZvY3VzZWRFbGVtOmcsc2VsZWN0aW9uUmFuZ2U6aH07ZmQ9ITE7WT1lO2RvIHRyeXtUaigpfWNhdGNoKHdiKXtpZihudWxsPT09WSl0aHJvdyBFcnJvcih1KDMzMCkpO0VpKFksd2IpO1k9WS5uZXh0RWZmZWN0fXdoaWxlKG51bGwhPT1ZKTtZPWU7ZG8gdHJ5e2ZvcihnPWEsaD1iO251bGwhPT1ZOyl7dmFyIHE9WS5lZmZlY3RUYWc7cSYxNiYmUmIoWS5zdGF0ZU5vZGUsXCJcIik7aWYocSYxMjgpe3ZhciBCPVkuYWx0ZXJuYXRlO2lmKG51bGwhPT1CKXt2YXIgdz1CLnJlZjtudWxsIT09dyYmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiB3P3cobnVsbCk6dy5jdXJyZW50PW51bGwpfX1zd2l0Y2gocSYxMDM4KXtjYXNlIDI6UGkoWSk7WS5lZmZlY3RUYWcmPS0zO2JyZWFrO2Nhc2UgNjpQaShZKTtZLmVmZmVjdFRhZyY9LTM7U2koWS5hbHRlcm5hdGUsWSk7YnJlYWs7Y2FzZSAxMDI0OlkuZWZmZWN0VGFnJj0tMTAyNTticmVhaztjYXNlIDEwMjg6WS5lZmZlY3RUYWcmPVxuLTEwMjU7U2koWS5hbHRlcm5hdGUsWSk7YnJlYWs7Y2FzZSA0OlNpKFkuYWx0ZXJuYXRlLFkpO2JyZWFrO2Nhc2UgODpsPVksTWkoZyxsLGgpLE5pKGwpfVk9WS5uZXh0RWZmZWN0fX1jYXRjaCh3Yil7aWYobnVsbD09PVkpdGhyb3cgRXJyb3IodSgzMzApKTtFaShZLHdiKTtZPVkubmV4dEVmZmVjdH13aGlsZShudWxsIT09WSk7dz1FZDtCPXhkKCk7cT13LmZvY3VzZWRFbGVtO2g9dy5zZWxlY3Rpb25SYW5nZTtpZihCIT09cSYmcSYmcS5vd25lckRvY3VtZW50JiZ3ZChxLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHEpKXtudWxsIT09aCYmeWQocSkmJihCPWguc3RhcnQsdz1oLmVuZCx2b2lkIDA9PT13JiYodz1CKSxcInNlbGVjdGlvblN0YXJ0XCJpbiBxPyhxLnNlbGVjdGlvblN0YXJ0PUIscS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4odyxxLnZhbHVlLmxlbmd0aCkpOih3PShCPXEub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZCLmRlZmF1bHRWaWV3fHx3aW5kb3csdy5nZXRTZWxlY3Rpb24mJlxuKHc9dy5nZXRTZWxlY3Rpb24oKSxsPXEudGV4dENvbnRlbnQubGVuZ3RoLGc9TWF0aC5taW4oaC5zdGFydCxsKSxoPXZvaWQgMD09PWguZW5kP2c6TWF0aC5taW4oaC5lbmQsbCksIXcuZXh0ZW5kJiZnPmgmJihsPWgsaD1nLGc9bCksbD12ZChxLGcpLG09dmQocSxoKSxsJiZtJiYoMSE9PXcucmFuZ2VDb3VudHx8dy5hbmNob3JOb2RlIT09bC5ub2RlfHx3LmFuY2hvck9mZnNldCE9PWwub2Zmc2V0fHx3LmZvY3VzTm9kZSE9PW0ubm9kZXx8dy5mb2N1c09mZnNldCE9PW0ub2Zmc2V0KSYmKEI9Qi5jcmVhdGVSYW5nZSgpLEIuc2V0U3RhcnQobC5ub2RlLGwub2Zmc2V0KSx3LnJlbW92ZUFsbFJhbmdlcygpLGc+aD8ody5hZGRSYW5nZShCKSx3LmV4dGVuZChtLm5vZGUsbS5vZmZzZXQpKTooQi5zZXRFbmQobS5ub2RlLG0ub2Zmc2V0KSx3LmFkZFJhbmdlKEIpKSkpKSk7Qj1bXTtmb3Iodz1xO3c9dy5wYXJlbnROb2RlOykxPT09dy5ub2RlVHlwZSYmQi5wdXNoKHtlbGVtZW50OncsbGVmdDp3LnNjcm9sbExlZnQsXG50b3A6dy5zY3JvbGxUb3B9KTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgcS5mb2N1cyYmcS5mb2N1cygpO2ZvcihxPTA7cTxCLmxlbmd0aDtxKyspdz1CW3FdLHcuZWxlbWVudC5zY3JvbGxMZWZ0PXcubGVmdCx3LmVsZW1lbnQuc2Nyb2xsVG9wPXcudG9wfWZkPSEhRGQ7RWQ9RGQ9bnVsbDthLmN1cnJlbnQ9YztZPWU7ZG8gdHJ5e2ZvcihxPWE7bnVsbCE9PVk7KXt2YXIgdWI9WS5lZmZlY3RUYWc7dWImMzYmJkppKHEsWS5hbHRlcm5hdGUsWSk7aWYodWImMTI4KXtCPXZvaWQgMDt2YXIgdmI9WS5yZWY7aWYobnVsbCE9PXZiKXt2YXIgWGM9WS5zdGF0ZU5vZGU7c3dpdGNoKFkudGFnKXtjYXNlIDU6Qj1YYzticmVhaztkZWZhdWx0OkI9WGN9XCJmdW5jdGlvblwiPT09dHlwZW9mIHZiP3ZiKEIpOnZiLmN1cnJlbnQ9Qn19WT1ZLm5leHRFZmZlY3R9fWNhdGNoKHdiKXtpZihudWxsPT09WSl0aHJvdyBFcnJvcih1KDMzMCkpO0VpKFksd2IpO1k9WS5uZXh0RWZmZWN0fXdoaWxlKG51bGwhPT1ZKTtZPVxubnVsbDtWZigpO1c9Zn1lbHNlIGEuY3VycmVudD1jO2lmKHFqKXFqPSExLHJqPWEsc2o9YjtlbHNlIGZvcihZPWU7bnVsbCE9PVk7KWI9WS5uZXh0RWZmZWN0LFkubmV4dEVmZmVjdD1udWxsLFk9YjtiPWEuZmlyc3RQZW5kaW5nVGltZTswPT09YiYmKGFqPW51bGwpOzEwNzM3NDE4MjM9PT1iP2E9PT12aj91aisrOih1aj0wLHZqPWEpOnVqPTA7XCJmdW5jdGlvblwiPT09dHlwZW9mIFVqJiZVaihjLnN0YXRlTm9kZSxkKTtaKGEpO2lmKFlpKXRocm93IFlpPSExLGE9WmksWmk9bnVsbCxhO2lmKChXJmVqKSE9PVYpcmV0dXJuIG51bGw7Z2coKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBUaigpe2Zvcig7bnVsbCE9PVk7KXt2YXIgYT1ZLmVmZmVjdFRhZzswIT09KGEmMjU2KSYmR2koWS5hbHRlcm5hdGUsWSk7MD09PShhJjUxMil8fHFqfHwocWo9ITAsZGcoOTcsZnVuY3Rpb24oKXtEaigpO3JldHVybiBudWxsfSkpO1k9WS5uZXh0RWZmZWN0fX1cbmZ1bmN0aW9uIERqKCl7aWYoOTAhPT1zail7dmFyIGE9OTc8c2o/OTc6c2o7c2o9OTA7cmV0dXJuIGNnKGEsVmopfX1mdW5jdGlvbiBWaigpe2lmKG51bGw9PT1yailyZXR1cm4hMTt2YXIgYT1yajtyaj1udWxsO2lmKChXJihmanxnaikpIT09Vil0aHJvdyBFcnJvcih1KDMzMSkpO3ZhciBiPVc7V3w9Z2o7Zm9yKGE9YS5jdXJyZW50LmZpcnN0RWZmZWN0O251bGwhPT1hOyl7dHJ5e3ZhciBjPWE7aWYoMCE9PShjLmVmZmVjdFRhZyY1MTIpKXN3aXRjaChjLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpjYXNlIDIyOkhpKDUsYyksSWkoNSxjKX19Y2F0Y2goZCl7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IodSgzMzApKTtFaShhLGQpfWM9YS5uZXh0RWZmZWN0O2EubmV4dEVmZmVjdD1udWxsO2E9Y31XPWI7Z2coKTtyZXR1cm4hMH1cbmZ1bmN0aW9uIFdqKGEsYixjKXtiPUFpKGMsYik7Yj1YaShhLGIsMTA3Mzc0MTgyMyk7eGcoYSxiKTthPXhqKGEsMTA3Mzc0MTgyMyk7bnVsbCE9PWEmJlooYSl9ZnVuY3Rpb24gRWkoYSxiKXtpZigzPT09YS50YWcpV2ooYSxhLGIpO2Vsc2UgZm9yKHZhciBjPWEucmV0dXJuO251bGwhPT1jOyl7aWYoMz09PWMudGFnKXtXaihjLGEsYik7YnJlYWt9ZWxzZSBpZigxPT09Yy50YWcpe3ZhciBkPWMuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1hanx8IWFqLmhhcyhkKSkpe2E9QWkoYixhKTthPSRpKGMsYSwxMDczNzQxODIzKTt4ZyhjLGEpO2M9eGooYywxMDczNzQxODIzKTtudWxsIT09YyYmWihjKTticmVha319Yz1jLnJldHVybn19XG5mdW5jdGlvbiBPaihhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7bnVsbCE9PWQmJmQuZGVsZXRlKGIpO1Q9PT1hJiZVPT09Yz9TPT09dml8fFM9PT11aSYmMTA3Mzc0MTgyMz09PWxqJiYkZigpLVRpPHBqP0VqKGEsVSk6b2o9ITA6QWooYSxjKSYmKGI9YS5sYXN0UGluZ2VkVGltZSwwIT09YiYmYjxjfHwoYS5sYXN0UGluZ2VkVGltZT1jLFooYSkpKX1mdW5jdGlvbiBWaShhLGIpe3ZhciBjPWEuc3RhdGVOb2RlO251bGwhPT1jJiZjLmRlbGV0ZShiKTtiPTA7MD09PWImJihiPUdnKCksYj1IZyhiLGEsbnVsbCkpO2E9eGooYSxiKTtudWxsIT09YSYmWihhKX12YXIgUmo7XG5Saj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yi5leHBpcmF0aW9uVGltZTtpZihudWxsIT09YSl7dmFyIGU9Yi5wZW5kaW5nUHJvcHM7aWYoYS5tZW1vaXplZFByb3BzIT09ZXx8Sy5jdXJyZW50KXJnPSEwO2Vsc2V7aWYoZDxjKXtyZz0hMTtzd2l0Y2goYi50YWcpe2Nhc2UgMzpoaShiKTtYaCgpO2JyZWFrO2Nhc2UgNTpmaChiKTtpZihiLm1vZGUmNCYmMSE9PWMmJmUuaGlkZGVuKXJldHVybiBiLmV4cGlyYXRpb25UaW1lPWIuY2hpbGRFeHBpcmF0aW9uVGltZT0xLG51bGw7YnJlYWs7Y2FzZSAxOkwoYi50eXBlKSYmR2YoYik7YnJlYWs7Y2FzZSA0OmRoKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDpkPWIubWVtb2l6ZWRQcm9wcy52YWx1ZTtlPWIudHlwZS5fY29udGV4dDtJKGpnLGUuX2N1cnJlbnRWYWx1ZSk7ZS5fY3VycmVudFZhbHVlPWQ7YnJlYWs7Y2FzZSAxMzppZihudWxsIT09Yi5tZW1vaXplZFN0YXRlKXtkPWIuY2hpbGQuY2hpbGRFeHBpcmF0aW9uVGltZTtcbmlmKDAhPT1kJiZkPj1jKXJldHVybiBqaShhLGIsYyk7SShNLE0uY3VycmVudCYxKTtiPSRoKGEsYixjKTtyZXR1cm4gbnVsbCE9PWI/Yi5zaWJsaW5nOm51bGx9SShNLE0uY3VycmVudCYxKTticmVhaztjYXNlIDE5OmQ9Yi5jaGlsZEV4cGlyYXRpb25UaW1lPj1jO2lmKDAhPT0oYS5lZmZlY3RUYWcmNjQpKXtpZihkKXJldHVybiBtaShhLGIsYyk7Yi5lZmZlY3RUYWd8PTY0fWU9Yi5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoZS5yZW5kZXJpbmc9bnVsbCxlLnRhaWw9bnVsbCk7SShNLE0uY3VycmVudCk7aWYoIWQpcmV0dXJuIG51bGx9cmV0dXJuICRoKGEsYixjKX1yZz0hMX19ZWxzZSByZz0hMTtiLmV4cGlyYXRpb25UaW1lPTA7c3dpdGNoKGIudGFnKXtjYXNlIDI6ZD1iLnR5cGU7bnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5lZmZlY3RUYWd8PTIpO2E9Yi5wZW5kaW5nUHJvcHM7ZT1DZihiLEouY3VycmVudCk7cWcoYixjKTtlPW9oKG51bGwsXG5iLGQsYSxlLGMpO2IuZWZmZWN0VGFnfD0xO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZSYmbnVsbCE9PWUmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLnJlbmRlciYmdm9pZCAwPT09ZS4kJHR5cGVvZil7Yi50YWc9MTtiLm1lbW9pemVkU3RhdGU9bnVsbDtiLnVwZGF0ZVF1ZXVlPW51bGw7aWYoTChkKSl7dmFyIGY9ITA7R2YoYil9ZWxzZSBmPSExO2IubWVtb2l6ZWRTdGF0ZT1udWxsIT09ZS5zdGF0ZSYmdm9pZCAwIT09ZS5zdGF0ZT9lLnN0YXRlOm51bGw7dWcoYik7dmFyIGc9ZC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT09dHlwZW9mIGcmJkZnKGIsZCxnLGEpO2UudXBkYXRlcj1KZztiLnN0YXRlTm9kZT1lO2UuX3JlYWN0SW50ZXJuYWxGaWJlcj1iO05nKGIsZCxhLGMpO2I9Z2kobnVsbCxiLGQsITAsZixjKX1lbHNlIGIudGFnPTAsUihudWxsLGIsZSxjKSxiPWIuY2hpbGQ7cmV0dXJuIGI7Y2FzZSAxNjphOntlPWIuZWxlbWVudFR5cGU7bnVsbCE9PWEmJihhLmFsdGVybmF0ZT1cbm51bGwsYi5hbHRlcm5hdGU9bnVsbCxiLmVmZmVjdFRhZ3w9Mik7YT1iLnBlbmRpbmdQcm9wcztvYihlKTtpZigxIT09ZS5fc3RhdHVzKXRocm93IGUuX3Jlc3VsdDtlPWUuX3Jlc3VsdDtiLnR5cGU9ZTtmPWIudGFnPVhqKGUpO2E9aWcoZSxhKTtzd2l0Y2goZil7Y2FzZSAwOmI9ZGkobnVsbCxiLGUsYSxjKTticmVhayBhO2Nhc2UgMTpiPWZpKG51bGwsYixlLGEsYyk7YnJlYWsgYTtjYXNlIDExOmI9WmgobnVsbCxiLGUsYSxjKTticmVhayBhO2Nhc2UgMTQ6Yj1haShudWxsLGIsZSxpZyhlLnR5cGUsYSksZCxjKTticmVhayBhfXRocm93IEVycm9yKHUoMzA2LGUsXCJcIikpO31yZXR1cm4gYjtjYXNlIDA6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOmlnKGQsZSksZGkoYSxiLGQsZSxjKTtjYXNlIDE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOmlnKGQsZSksZmkoYSxiLGQsZSxjKTtcbmNhc2UgMzpoaShiKTtkPWIudXBkYXRlUXVldWU7aWYobnVsbD09PWF8fG51bGw9PT1kKXRocm93IEVycm9yKHUoMjgyKSk7ZD1iLnBlbmRpbmdQcm9wcztlPWIubWVtb2l6ZWRTdGF0ZTtlPW51bGwhPT1lP2UuZWxlbWVudDpudWxsO3ZnKGEsYik7emcoYixkLG51bGwsYyk7ZD1iLm1lbW9pemVkU3RhdGUuZWxlbWVudDtpZihkPT09ZSlYaCgpLGI9JGgoYSxiLGMpO2Vsc2V7aWYoZT1iLnN0YXRlTm9kZS5oeWRyYXRlKVBoPUpkKGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCksT2g9YixlPVFoPSEwO2lmKGUpZm9yKGM9WWcoYixudWxsLGQsYyksYi5jaGlsZD1jO2M7KWMuZWZmZWN0VGFnPWMuZWZmZWN0VGFnJi0zfDEwMjQsYz1jLnNpYmxpbmc7ZWxzZSBSKGEsYixkLGMpLFhoKCk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgNTpyZXR1cm4gZmgoYiksbnVsbD09PWEmJlVoKGIpLGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZj1udWxsIT09YT9hLm1lbW9pemVkUHJvcHM6XG5udWxsLGc9ZS5jaGlsZHJlbixHZChkLGUpP2c9bnVsbDpudWxsIT09ZiYmR2QoZCxmKSYmKGIuZWZmZWN0VGFnfD0xNiksZWkoYSxiKSxiLm1vZGUmNCYmMSE9PWMmJmUuaGlkZGVuPyhiLmV4cGlyYXRpb25UaW1lPWIuY2hpbGRFeHBpcmF0aW9uVGltZT0xLGI9bnVsbCk6KFIoYSxiLGcsYyksYj1iLmNoaWxkKSxiO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWEmJlVoKGIpLG51bGw7Y2FzZSAxMzpyZXR1cm4gamkoYSxiLGMpO2Nhc2UgNDpyZXR1cm4gZGgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxkPWIucGVuZGluZ1Byb3BzLG51bGw9PT1hP2IuY2hpbGQ9WGcoYixudWxsLGQsYyk6UihhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOmlnKGQsZSksWmgoYSxiLGQsZSxjKTtjYXNlIDc6cmV0dXJuIFIoYSxiLGIucGVuZGluZ1Byb3BzLGMpLGIuY2hpbGQ7Y2FzZSA4OnJldHVybiBSKGEsXG5iLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gUihhLGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEwOmE6e2Q9Yi50eXBlLl9jb250ZXh0O2U9Yi5wZW5kaW5nUHJvcHM7Zz1iLm1lbW9pemVkUHJvcHM7Zj1lLnZhbHVlO3ZhciBoPWIudHlwZS5fY29udGV4dDtJKGpnLGguX2N1cnJlbnRWYWx1ZSk7aC5fY3VycmVudFZhbHVlPWY7aWYobnVsbCE9PWcpaWYoaD1nLnZhbHVlLGY9JGUoaCxmKT8wOihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5fY2FsY3VsYXRlQ2hhbmdlZEJpdHM/ZC5fY2FsY3VsYXRlQ2hhbmdlZEJpdHMoaCxmKToxMDczNzQxODIzKXwwLDA9PT1mKXtpZihnLmNoaWxkcmVuPT09ZS5jaGlsZHJlbiYmIUsuY3VycmVudCl7Yj0kaChhLGIsYyk7YnJlYWsgYX19ZWxzZSBmb3IoaD1iLmNoaWxkLG51bGwhPT1oJiYoaC5yZXR1cm49Yik7bnVsbCE9PWg7KXt2YXIgaz1oLmRlcGVuZGVuY2llcztpZihudWxsIT09XG5rKXtnPWguY2hpbGQ7Zm9yKHZhciBsPWsuZmlyc3RDb250ZXh0O251bGwhPT1sOyl7aWYobC5jb250ZXh0PT09ZCYmMCE9PShsLm9ic2VydmVkQml0cyZmKSl7MT09PWgudGFnJiYobD13ZyhjLG51bGwpLGwudGFnPTIseGcoaCxsKSk7aC5leHBpcmF0aW9uVGltZTxjJiYoaC5leHBpcmF0aW9uVGltZT1jKTtsPWguYWx0ZXJuYXRlO251bGwhPT1sJiZsLmV4cGlyYXRpb25UaW1lPGMmJihsLmV4cGlyYXRpb25UaW1lPWMpO3BnKGgucmV0dXJuLGMpO2suZXhwaXJhdGlvblRpbWU8YyYmKGsuZXhwaXJhdGlvblRpbWU9Yyk7YnJlYWt9bD1sLm5leHR9fWVsc2UgZz0xMD09PWgudGFnP2gudHlwZT09PWIudHlwZT9udWxsOmguY2hpbGQ6aC5jaGlsZDtpZihudWxsIT09ZylnLnJldHVybj1oO2Vsc2UgZm9yKGc9aDtudWxsIT09Zzspe2lmKGc9PT1iKXtnPW51bGw7YnJlYWt9aD1nLnNpYmxpbmc7aWYobnVsbCE9PWgpe2gucmV0dXJuPWcucmV0dXJuO2c9aDticmVha31nPWcucmV0dXJufWg9XG5nfVIoYSxiLGUuY2hpbGRyZW4sYyk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgOTpyZXR1cm4gZT1iLnR5cGUsZj1iLnBlbmRpbmdQcm9wcyxkPWYuY2hpbGRyZW4scWcoYixjKSxlPXNnKGUsZi51bnN0YWJsZV9vYnNlcnZlZEJpdHMpLGQ9ZChlKSxiLmVmZmVjdFRhZ3w9MSxSKGEsYixkLGMpLGIuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gZT1iLnR5cGUsZj1pZyhlLGIucGVuZGluZ1Byb3BzKSxmPWlnKGUudHlwZSxmKSxhaShhLGIsZSxmLGQsYyk7Y2FzZSAxNTpyZXR1cm4gY2koYSxiLGIudHlwZSxiLnBlbmRpbmdQcm9wcyxkLGMpO2Nhc2UgMTc6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOmlnKGQsZSksbnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5lZmZlY3RUYWd8PTIpLGIudGFnPTEsTChkKT8oYT0hMCxHZihiKSk6YT0hMSxxZyhiLGMpLExnKGIsZCxlKSxOZyhiLGQsZSxjKSxnaShudWxsLFxuYixkLCEwLGEsYyk7Y2FzZSAxOTpyZXR1cm4gbWkoYSxiLGMpfXRocm93IEVycm9yKHUoMTU2LGIudGFnKSk7fTt2YXIgVWo9bnVsbCxMaT1udWxsO2Z1bmN0aW9uIFlqKGEpe2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKXJldHVybiExO3ZhciBiPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZihiLmlzRGlzYWJsZWR8fCFiLnN1cHBvcnRzRmliZXIpcmV0dXJuITA7dHJ5e3ZhciBjPWIuaW5qZWN0KGEpO1VqPWZ1bmN0aW9uKGEpe3RyeXtiLm9uQ29tbWl0RmliZXJSb290KGMsYSx2b2lkIDAsNjQ9PT0oYS5jdXJyZW50LmVmZmVjdFRhZyY2NCkpfWNhdGNoKGUpe319O0xpPWZ1bmN0aW9uKGEpe3RyeXtiLm9uQ29tbWl0RmliZXJVbm1vdW50KGMsYSl9Y2F0Y2goZSl7fX19Y2F0Y2goZCl7fXJldHVybiEwfVxuZnVuY3Rpb24gWmooYSxiLGMsZCl7dGhpcy50YWc9YTt0aGlzLmtleT1jO3RoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGw7dGhpcy5pbmRleD0wO3RoaXMucmVmPW51bGw7dGhpcy5wZW5kaW5nUHJvcHM9Yjt0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbDt0aGlzLm1vZGU9ZDt0aGlzLmVmZmVjdFRhZz0wO3RoaXMubGFzdEVmZmVjdD10aGlzLmZpcnN0RWZmZWN0PXRoaXMubmV4dEVmZmVjdD1udWxsO3RoaXMuY2hpbGRFeHBpcmF0aW9uVGltZT10aGlzLmV4cGlyYXRpb25UaW1lPTA7dGhpcy5hbHRlcm5hdGU9bnVsbH1mdW5jdGlvbiBTaChhLGIsYyxkKXtyZXR1cm4gbmV3IFpqKGEsYixjLGQpfVxuZnVuY3Rpb24gYmkoYSl7YT1hLnByb3RvdHlwZTtyZXR1cm4hKCFhfHwhYS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBYaihhKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYmkoYSk/MTowO2lmKHZvaWQgMCE9PWEmJm51bGwhPT1hKXthPWEuJCR0eXBlb2Y7aWYoYT09PWdiKXJldHVybiAxMTtpZihhPT09amIpcmV0dXJuIDE0fXJldHVybiAyfVxuZnVuY3Rpb24gU2coYSxiKXt2YXIgYz1hLmFsdGVybmF0ZTtudWxsPT09Yz8oYz1TaChhLnRhZyxiLGEua2V5LGEubW9kZSksYy5lbGVtZW50VHlwZT1hLmVsZW1lbnRUeXBlLGMudHlwZT1hLnR5cGUsYy5zdGF0ZU5vZGU9YS5zdGF0ZU5vZGUsYy5hbHRlcm5hdGU9YSxhLmFsdGVybmF0ZT1jKTooYy5wZW5kaW5nUHJvcHM9YixjLmVmZmVjdFRhZz0wLGMubmV4dEVmZmVjdD1udWxsLGMuZmlyc3RFZmZlY3Q9bnVsbCxjLmxhc3RFZmZlY3Q9bnVsbCk7Yy5jaGlsZEV4cGlyYXRpb25UaW1lPWEuY2hpbGRFeHBpcmF0aW9uVGltZTtjLmV4cGlyYXRpb25UaW1lPWEuZXhwaXJhdGlvblRpbWU7Yy5jaGlsZD1hLmNoaWxkO2MubWVtb2l6ZWRQcm9wcz1hLm1lbW9pemVkUHJvcHM7Yy5tZW1vaXplZFN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtjLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWU7Yj1hLmRlcGVuZGVuY2llcztjLmRlcGVuZGVuY2llcz1udWxsPT09Yj9udWxsOntleHBpcmF0aW9uVGltZTpiLmV4cGlyYXRpb25UaW1lLFxuZmlyc3RDb250ZXh0OmIuZmlyc3RDb250ZXh0LHJlc3BvbmRlcnM6Yi5yZXNwb25kZXJzfTtjLnNpYmxpbmc9YS5zaWJsaW5nO2MuaW5kZXg9YS5pbmRleDtjLnJlZj1hLnJlZjtyZXR1cm4gY31cbmZ1bmN0aW9uIFVnKGEsYixjLGQsZSxmKXt2YXIgZz0yO2Q9YTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSliaShhKSYmKGc9MSk7ZWxzZSBpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpZz01O2Vsc2UgYTpzd2l0Y2goYSl7Y2FzZSBhYjpyZXR1cm4gV2coYy5jaGlsZHJlbixlLGYsYik7Y2FzZSBmYjpnPTg7ZXw9NzticmVhaztjYXNlIGJiOmc9ODtlfD0xO2JyZWFrO2Nhc2UgY2I6cmV0dXJuIGE9U2goMTIsYyxiLGV8OCksYS5lbGVtZW50VHlwZT1jYixhLnR5cGU9Y2IsYS5leHBpcmF0aW9uVGltZT1mLGE7Y2FzZSBoYjpyZXR1cm4gYT1TaCgxMyxjLGIsZSksYS50eXBlPWhiLGEuZWxlbWVudFR5cGU9aGIsYS5leHBpcmF0aW9uVGltZT1mLGE7Y2FzZSBpYjpyZXR1cm4gYT1TaCgxOSxjLGIsZSksYS5lbGVtZW50VHlwZT1pYixhLmV4cGlyYXRpb25UaW1lPWYsYTtkZWZhdWx0OmlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgZGI6Zz1cbjEwO2JyZWFrIGE7Y2FzZSBlYjpnPTk7YnJlYWsgYTtjYXNlIGdiOmc9MTE7YnJlYWsgYTtjYXNlIGpiOmc9MTQ7YnJlYWsgYTtjYXNlIGtiOmc9MTY7ZD1udWxsO2JyZWFrIGE7Y2FzZSBsYjpnPTIyO2JyZWFrIGF9dGhyb3cgRXJyb3IodSgxMzAsbnVsbD09YT9hOnR5cGVvZiBhLFwiXCIpKTt9Yj1TaChnLGMsYixlKTtiLmVsZW1lbnRUeXBlPWE7Yi50eXBlPWQ7Yi5leHBpcmF0aW9uVGltZT1mO3JldHVybiBifWZ1bmN0aW9uIFdnKGEsYixjLGQpe2E9U2goNyxhLGQsYik7YS5leHBpcmF0aW9uVGltZT1jO3JldHVybiBhfWZ1bmN0aW9uIFRnKGEsYixjKXthPVNoKDYsYSxudWxsLGIpO2EuZXhwaXJhdGlvblRpbWU9YztyZXR1cm4gYX1cbmZ1bmN0aW9uIFZnKGEsYixjKXtiPVNoKDQsbnVsbCE9PWEuY2hpbGRyZW4/YS5jaGlsZHJlbjpbXSxhLmtleSxiKTtiLmV4cGlyYXRpb25UaW1lPWM7Yi5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86YS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmEuaW1wbGVtZW50YXRpb259O3JldHVybiBifVxuZnVuY3Rpb24gYWsoYSxiLGMpe3RoaXMudGFnPWI7dGhpcy5jdXJyZW50PW51bGw7dGhpcy5jb250YWluZXJJbmZvPWE7dGhpcy5waW5nQ2FjaGU9dGhpcy5wZW5kaW5nQ2hpbGRyZW49bnVsbDt0aGlzLmZpbmlzaGVkRXhwaXJhdGlvblRpbWU9MDt0aGlzLmZpbmlzaGVkV29yaz1udWxsO3RoaXMudGltZW91dEhhbmRsZT0tMTt0aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD1udWxsO3RoaXMuaHlkcmF0ZT1jO3RoaXMuY2FsbGJhY2tOb2RlPW51bGw7dGhpcy5jYWxsYmFja1ByaW9yaXR5PTkwO3RoaXMubGFzdEV4cGlyZWRUaW1lPXRoaXMubGFzdFBpbmdlZFRpbWU9dGhpcy5uZXh0S25vd25QZW5kaW5nTGV2ZWw9dGhpcy5sYXN0U3VzcGVuZGVkVGltZT10aGlzLmZpcnN0U3VzcGVuZGVkVGltZT10aGlzLmZpcnN0UGVuZGluZ1RpbWU9MH1cbmZ1bmN0aW9uIEFqKGEsYil7dmFyIGM9YS5maXJzdFN1c3BlbmRlZFRpbWU7YT1hLmxhc3RTdXNwZW5kZWRUaW1lO3JldHVybiAwIT09YyYmYz49YiYmYTw9Yn1mdW5jdGlvbiB4aShhLGIpe3ZhciBjPWEuZmlyc3RTdXNwZW5kZWRUaW1lLGQ9YS5sYXN0U3VzcGVuZGVkVGltZTtjPGImJihhLmZpcnN0U3VzcGVuZGVkVGltZT1iKTtpZihkPmJ8fDA9PT1jKWEubGFzdFN1c3BlbmRlZFRpbWU9YjtiPD1hLmxhc3RQaW5nZWRUaW1lJiYoYS5sYXN0UGluZ2VkVGltZT0wKTtiPD1hLmxhc3RFeHBpcmVkVGltZSYmKGEubGFzdEV4cGlyZWRUaW1lPTApfVxuZnVuY3Rpb24geWkoYSxiKXtiPmEuZmlyc3RQZW5kaW5nVGltZSYmKGEuZmlyc3RQZW5kaW5nVGltZT1iKTt2YXIgYz1hLmZpcnN0U3VzcGVuZGVkVGltZTswIT09YyYmKGI+PWM/YS5maXJzdFN1c3BlbmRlZFRpbWU9YS5sYXN0U3VzcGVuZGVkVGltZT1hLm5leHRLbm93blBlbmRpbmdMZXZlbD0wOmI+PWEubGFzdFN1c3BlbmRlZFRpbWUmJihhLmxhc3RTdXNwZW5kZWRUaW1lPWIrMSksYj5hLm5leHRLbm93blBlbmRpbmdMZXZlbCYmKGEubmV4dEtub3duUGVuZGluZ0xldmVsPWIpKX1mdW5jdGlvbiBDaihhLGIpe3ZhciBjPWEubGFzdEV4cGlyZWRUaW1lO2lmKDA9PT1jfHxjPmIpYS5sYXN0RXhwaXJlZFRpbWU9Yn1cbmZ1bmN0aW9uIGJrKGEsYixjLGQpe3ZhciBlPWIuY3VycmVudCxmPUdnKCksZz1EZy5zdXNwZW5zZTtmPUhnKGYsZSxnKTthOmlmKGMpe2M9Yy5fcmVhY3RJbnRlcm5hbEZpYmVyO2I6e2lmKGRjKGMpIT09Y3x8MSE9PWMudGFnKXRocm93IEVycm9yKHUoMTcwKSk7dmFyIGg9Yztkb3tzd2l0Y2goaC50YWcpe2Nhc2UgMzpoPWguc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgYjtjYXNlIDE6aWYoTChoLnR5cGUpKXtoPWguc3RhdGVOb2RlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0O2JyZWFrIGJ9fWg9aC5yZXR1cm59d2hpbGUobnVsbCE9PWgpO3Rocm93IEVycm9yKHUoMTcxKSk7fWlmKDE9PT1jLnRhZyl7dmFyIGs9Yy50eXBlO2lmKEwoaykpe2M9RmYoYyxrLGgpO2JyZWFrIGF9fWM9aH1lbHNlIGM9QWY7bnVsbD09PWIuY29udGV4dD9iLmNvbnRleHQ9YzpiLnBlbmRpbmdDb250ZXh0PWM7Yj13ZyhmLGcpO2IucGF5bG9hZD17ZWxlbWVudDphfTtkPXZvaWQgMD09PVxuZD9udWxsOmQ7bnVsbCE9PWQmJihiLmNhbGxiYWNrPWQpO3hnKGUsYik7SWcoZSxmKTtyZXR1cm4gZn1mdW5jdGlvbiBjayhhKXthPWEuY3VycmVudDtpZighYS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goYS5jaGlsZC50YWcpe2Nhc2UgNTpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGU7ZGVmYXVsdDpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGRrKGEsYil7YT1hLm1lbW9pemVkU3RhdGU7bnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQmJmEucmV0cnlUaW1lPGImJihhLnJldHJ5VGltZT1iKX1mdW5jdGlvbiBlayhhLGIpe2RrKGEsYik7KGE9YS5hbHRlcm5hdGUpJiZkayhhLGIpfVxuZnVuY3Rpb24gZmsoYSxiLGMpe2M9bnVsbCE9YyYmITA9PT1jLmh5ZHJhdGU7dmFyIGQ9bmV3IGFrKGEsYixjKSxlPVNoKDMsbnVsbCxudWxsLDI9PT1iPzc6MT09PWI/MzowKTtkLmN1cnJlbnQ9ZTtlLnN0YXRlTm9kZT1kO3VnKGUpO2FbT2RdPWQuY3VycmVudDtjJiYwIT09YiYmSmMoYSw5PT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudCk7dGhpcy5faW50ZXJuYWxSb290PWR9ZmsucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhKXtiayhhLHRoaXMuX2ludGVybmFsUm9vdCxudWxsLG51bGwpfTtmay5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuX2ludGVybmFsUm9vdCxiPWEuY29udGFpbmVySW5mbztiayhudWxsLGEsbnVsbCxmdW5jdGlvbigpe2JbT2RdPW51bGx9KX07XG5mdW5jdGlvbiBnayhhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSYmKDghPT1hLm5vZGVUeXBlfHxcIiByZWFjdC1tb3VudC1wb2ludC11bnN0YWJsZSBcIiE9PWEubm9kZVZhbHVlKSl9ZnVuY3Rpb24gaGsoYSxiKXtifHwoYj1hPzk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEuZmlyc3RDaGlsZDpudWxsLGI9ISghYnx8MSE9PWIubm9kZVR5cGV8fCFiLmhhc0F0dHJpYnV0ZShcImRhdGEtcmVhY3Ryb290XCIpKSk7aWYoIWIpZm9yKHZhciBjO2M9YS5sYXN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYyk7cmV0dXJuIG5ldyBmayhhLDAsYj97aHlkcmF0ZTohMH06dm9pZCAwKX1cbmZ1bmN0aW9uIGlrKGEsYixjLGQsZSl7dmFyIGY9Yy5fcmVhY3RSb290Q29udGFpbmVyO2lmKGYpe3ZhciBnPWYuX2ludGVybmFsUm9vdDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSl7dmFyIGg9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9Y2soZyk7aC5jYWxsKGEpfX1iayhiLGcsYSxlKX1lbHNle2Y9Yy5fcmVhY3RSb290Q29udGFpbmVyPWhrKGMsZCk7Zz1mLl9pbnRlcm5hbFJvb3Q7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpe3ZhciBrPWU7ZT1mdW5jdGlvbigpe3ZhciBhPWNrKGcpO2suY2FsbChhKX19TmooZnVuY3Rpb24oKXtiayhiLGcsYSxlKX0pfXJldHVybiBjayhnKX1mdW5jdGlvbiBqayhhLGIsYyl7dmFyIGQ9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOiRhLGtleTpudWxsPT1kP251bGw6XCJcIitkLGNoaWxkcmVuOmEsY29udGFpbmVySW5mbzpiLGltcGxlbWVudGF0aW9uOmN9fVxud2M9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9aGcoR2coKSwxNTAsMTAwKTtJZyhhLGIpO2VrKGEsYil9fTt4Yz1mdW5jdGlvbihhKXsxMz09PWEudGFnJiYoSWcoYSwzKSxlayhhLDMpKX07eWM9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9R2coKTtiPUhnKGIsYSxudWxsKTtJZyhhLGIpO2VrKGEsYil9fTtcbnphPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYil7Y2FzZSBcImlucHV0XCI6Q2IoYSxjKTtiPWMubmFtZTtpZihcInJhZGlvXCI9PT1jLnR5cGUmJm51bGwhPWIpe2ZvcihjPWE7Yy5wYXJlbnROb2RlOyljPWMucGFyZW50Tm9kZTtjPWMucXVlcnlTZWxlY3RvckFsbChcImlucHV0W25hbWU9XCIrSlNPTi5zdHJpbmdpZnkoXCJcIitiKSsnXVt0eXBlPVwicmFkaW9cIl0nKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1jW2JdO2lmKGQhPT1hJiZkLmZvcm09PT1hLmZvcm0pe3ZhciBlPVFkKGQpO2lmKCFlKXRocm93IEVycm9yKHUoOTApKTt5YihkKTtDYihkLGUpfX19YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6S2IoYSxjKTticmVhaztjYXNlIFwic2VsZWN0XCI6Yj1jLnZhbHVlLG51bGwhPWImJkhiKGEsISFjLm11bHRpcGxlLGIsITEpfX07RmE9TWo7XG5HYT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPVc7V3w9NDt0cnl7cmV0dXJuIGNnKDk4LGEuYmluZChudWxsLGIsYyxkLGUpKX1maW5hbGx5e1c9ZixXPT09ViYmZ2coKX19O0hhPWZ1bmN0aW9uKCl7KFcmKDF8Zmp8Z2opKT09PVYmJihMaigpLERqKCkpfTtJYT1mdW5jdGlvbihhLGIpe3ZhciBjPVc7V3w9Mjt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtXPWMsVz09PVYmJmdnKCl9fTtmdW5jdGlvbiBrayhhLGIpe3ZhciBjPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCFnayhiKSl0aHJvdyBFcnJvcih1KDIwMCkpO3JldHVybiBqayhhLGIsbnVsbCxjKX12YXIgbGs9e0V2ZW50czpbTmMsUGQsUWQseGEsdGEsWGQsZnVuY3Rpb24oYSl7amMoYSxXZCl9LERhLEVhLGlkLG1jLERqLHtjdXJyZW50OiExfV19O1xuKGZ1bmN0aW9uKGEpe3ZhciBiPWEuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U7cmV0dXJuIFlqKG4oe30sYSx7b3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjpXYS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyOmZ1bmN0aW9uKGEpe2E9aGMoYSk7cmV0dXJuIG51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGV9LGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOmZ1bmN0aW9uKGEpe3JldHVybiBiP2IoYSk6bnVsbH0sZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbH0pKX0pKHtmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTp0YyxidW5kbGVUeXBlOjAsdmVyc2lvbjpcIjE2LjEzLjFcIixcbnJlbmRlcmVyUGFja2FnZU5hbWU6XCJyZWFjdC1kb21cIn0pO2V4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9bGs7ZXhwb3J0cy5jcmVhdGVQb3J0YWw9a2s7ZXhwb3J0cy5maW5kRE9NTm9kZT1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKDE9PT1hLm5vZGVUeXBlKXJldHVybiBhO3ZhciBiPWEuX3JlYWN0SW50ZXJuYWxGaWJlcjtpZih2b2lkIDA9PT1iKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5yZW5kZXIpdGhyb3cgRXJyb3IodSgxODgpKTt0aHJvdyBFcnJvcih1KDI2OCxPYmplY3Qua2V5cyhhKSkpO31hPWhjKGIpO2E9bnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZTtyZXR1cm4gYX07XG5leHBvcnRzLmZsdXNoU3luYz1mdW5jdGlvbihhLGIpe2lmKChXJihmanxnaikpIT09Vil0aHJvdyBFcnJvcih1KDE4NykpO3ZhciBjPVc7V3w9MTt0cnl7cmV0dXJuIGNnKDk5LGEuYmluZChudWxsLGIpKX1maW5hbGx5e1c9YyxnZygpfX07ZXhwb3J0cy5oeWRyYXRlPWZ1bmN0aW9uKGEsYixjKXtpZighZ2soYikpdGhyb3cgRXJyb3IodSgyMDApKTtyZXR1cm4gaWsobnVsbCxhLGIsITAsYyl9O2V4cG9ydHMucmVuZGVyPWZ1bmN0aW9uKGEsYixjKXtpZighZ2soYikpdGhyb3cgRXJyb3IodSgyMDApKTtyZXR1cm4gaWsobnVsbCxhLGIsITEsYyl9O1xuZXhwb3J0cy51bm1vdW50Q29tcG9uZW50QXROb2RlPWZ1bmN0aW9uKGEpe2lmKCFnayhhKSl0aHJvdyBFcnJvcih1KDQwKSk7cmV0dXJuIGEuX3JlYWN0Um9vdENvbnRhaW5lcj8oTmooZnVuY3Rpb24oKXtpayhudWxsLG51bGwsYSwhMSxmdW5jdGlvbigpe2EuX3JlYWN0Um9vdENvbnRhaW5lcj1udWxsO2FbT2RdPW51bGx9KX0pLCEwKTohMX07ZXhwb3J0cy51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1NajtleHBvcnRzLnVuc3RhYmxlX2NyZWF0ZVBvcnRhbD1mdW5jdGlvbihhLGIpe3JldHVybiBrayhhLGIsMjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwpfTtcbmV4cG9ydHMudW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWdrKGMpKXRocm93IEVycm9yKHUoMjAwKSk7aWYobnVsbD09YXx8dm9pZCAwPT09YS5fcmVhY3RJbnRlcm5hbEZpYmVyKXRocm93IEVycm9yKHUoMzgpKTtyZXR1cm4gaWsoYSxiLGMsITEsZCl9O2V4cG9ydHMudmVyc2lvbj1cIjE2LjEzLjFcIjtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvc2NoZWR1bGVyLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjAuMTkuMVxuICogc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBmLGcsaCxrLGw7XG5pZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvd3x8XCJmdW5jdGlvblwiIT09dHlwZW9mIE1lc3NhZ2VDaGFubmVsKXt2YXIgcD1udWxsLHE9bnVsbCx0PWZ1bmN0aW9uKCl7aWYobnVsbCE9PXApdHJ5e3ZhciBhPWV4cG9ydHMudW5zdGFibGVfbm93KCk7cCghMCxhKTtwPW51bGx9Y2F0Y2goYil7dGhyb3cgc2V0VGltZW91dCh0LDApLGI7fX0sdT1EYXRlLm5vdygpO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCktdX07Zj1mdW5jdGlvbihhKXtudWxsIT09cD9zZXRUaW1lb3V0KGYsMCxhKToocD1hLHNldFRpbWVvdXQodCwwKSl9O2c9ZnVuY3Rpb24oYSxiKXtxPXNldFRpbWVvdXQoYSxiKX07aD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChxKX07az1mdW5jdGlvbigpe3JldHVybiExfTtsPWV4cG9ydHMudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oKXt9fWVsc2V7dmFyIHc9d2luZG93LnBlcmZvcm1hbmNlLHg9d2luZG93LkRhdGUsXG55PXdpbmRvdy5zZXRUaW1lb3V0LHo9d2luZG93LmNsZWFyVGltZW91dDtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIGNvbnNvbGUpe3ZhciBBPXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZTtcImZ1bmN0aW9uXCIhPT10eXBlb2Ygd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSYmY29uc29sZS5lcnJvcihcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL2ZiLm1lL3JlYWN0LXBvbHlmaWxsc1wiKTtcImZ1bmN0aW9uXCIhPT10eXBlb2YgQSYmY29uc29sZS5lcnJvcihcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgY2FuY2VsQW5pbWF0aW9uRnJhbWUuIE1ha2Ugc3VyZSB0aGF0IHlvdSBsb2FkIGEgcG9seWZpbGwgaW4gb2xkZXIgYnJvd3NlcnMuIGh0dHBzOi8vZmIubWUvcmVhY3QtcG9seWZpbGxzXCIpfWlmKFwib2JqZWN0XCI9PT1cbnR5cGVvZiB3JiZcImZ1bmN0aW9uXCI9PT10eXBlb2Ygdy5ub3cpZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gdy5ub3coKX07ZWxzZXt2YXIgQj14Lm5vdygpO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHgubm93KCktQn19dmFyIEM9ITEsRD1udWxsLEU9LTEsRj01LEc9MDtrPWZ1bmN0aW9uKCl7cmV0dXJuIGV4cG9ydHMudW5zdGFibGVfbm93KCk+PUd9O2w9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oYSl7MD5hfHwxMjU8YT9jb25zb2xlLmVycm9yKFwiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWVyYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCB1bnN1cHBvcnRlZFwiKTpGPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTt2YXIgSD1uZXcgTWVzc2FnZUNoYW5uZWwsST1ILnBvcnQyO0gucG9ydDEub25tZXNzYWdlPVxuZnVuY3Rpb24oKXtpZihudWxsIT09RCl7dmFyIGE9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtHPWErRjt0cnl7RCghMCxhKT9JLnBvc3RNZXNzYWdlKG51bGwpOihDPSExLEQ9bnVsbCl9Y2F0Y2goYil7dGhyb3cgSS5wb3N0TWVzc2FnZShudWxsKSxiO319ZWxzZSBDPSExfTtmPWZ1bmN0aW9uKGEpe0Q9YTtDfHwoQz0hMCxJLnBvc3RNZXNzYWdlKG51bGwpKX07Zz1mdW5jdGlvbihhLGIpe0U9eShmdW5jdGlvbigpe2EoZXhwb3J0cy51bnN0YWJsZV9ub3coKSl9LGIpfTtoPWZ1bmN0aW9uKCl7eihFKTtFPS0xfX1mdW5jdGlvbiBKKGEsYil7dmFyIGM9YS5sZW5ndGg7YS5wdXNoKGIpO2E6Zm9yKDs7KXt2YXIgZD1jLTE+Pj4xLGU9YVtkXTtpZih2b2lkIDAhPT1lJiYwPEsoZSxiKSlhW2RdPWIsYVtjXT1lLGM9ZDtlbHNlIGJyZWFrIGF9fWZ1bmN0aW9uIEwoYSl7YT1hWzBdO3JldHVybiB2b2lkIDA9PT1hP251bGw6YX1cbmZ1bmN0aW9uIE0oYSl7dmFyIGI9YVswXTtpZih2b2lkIDAhPT1iKXt2YXIgYz1hLnBvcCgpO2lmKGMhPT1iKXthWzBdPWM7YTpmb3IodmFyIGQ9MCxlPWEubGVuZ3RoO2Q8ZTspe3ZhciBtPTIqKGQrMSktMSxuPWFbbV0sdj1tKzEscj1hW3ZdO2lmKHZvaWQgMCE9PW4mJjA+SyhuLGMpKXZvaWQgMCE9PXImJjA+SyhyLG4pPyhhW2RdPXIsYVt2XT1jLGQ9dik6KGFbZF09bixhW21dPWMsZD1tKTtlbHNlIGlmKHZvaWQgMCE9PXImJjA+SyhyLGMpKWFbZF09cixhW3ZdPWMsZD12O2Vsc2UgYnJlYWsgYX19cmV0dXJuIGJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gSyhhLGIpe3ZhciBjPWEuc29ydEluZGV4LWIuc29ydEluZGV4O3JldHVybiAwIT09Yz9jOmEuaWQtYi5pZH12YXIgTj1bXSxPPVtdLFA9MSxRPW51bGwsUj0zLFM9ITEsVD0hMSxVPSExO1xuZnVuY3Rpb24gVihhKXtmb3IodmFyIGI9TChPKTtudWxsIT09Yjspe2lmKG51bGw9PT1iLmNhbGxiYWNrKU0oTyk7ZWxzZSBpZihiLnN0YXJ0VGltZTw9YSlNKE8pLGIuc29ydEluZGV4PWIuZXhwaXJhdGlvblRpbWUsSihOLGIpO2Vsc2UgYnJlYWs7Yj1MKE8pfX1mdW5jdGlvbiBXKGEpe1U9ITE7VihhKTtpZighVClpZihudWxsIT09TChOKSlUPSEwLGYoWCk7ZWxzZXt2YXIgYj1MKE8pO251bGwhPT1iJiZnKFcsYi5zdGFydFRpbWUtYSl9fVxuZnVuY3Rpb24gWChhLGIpe1Q9ITE7VSYmKFU9ITEsaCgpKTtTPSEwO3ZhciBjPVI7dHJ5e1YoYik7Zm9yKFE9TChOKTtudWxsIT09USYmKCEoUS5leHBpcmF0aW9uVGltZT5iKXx8YSYmIWsoKSk7KXt2YXIgZD1RLmNhbGxiYWNrO2lmKG51bGwhPT1kKXtRLmNhbGxiYWNrPW51bGw7Uj1RLnByaW9yaXR5TGV2ZWw7dmFyIGU9ZChRLmV4cGlyYXRpb25UaW1lPD1iKTtiPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGU/US5jYWxsYmFjaz1lOlE9PT1MKE4pJiZNKE4pO1YoYil9ZWxzZSBNKE4pO1E9TChOKX1pZihudWxsIT09USl2YXIgbT0hMDtlbHNle3ZhciBuPUwoTyk7bnVsbCE9PW4mJmcoVyxuLnN0YXJ0VGltZS1iKTttPSExfXJldHVybiBtfWZpbmFsbHl7UT1udWxsLFI9YyxTPSExfX1cbmZ1bmN0aW9uIFkoYSl7c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4tMTtjYXNlIDI6cmV0dXJuIDI1MDtjYXNlIDU6cmV0dXJuIDEwNzM3NDE4MjM7Y2FzZSA0OnJldHVybiAxRTQ7ZGVmYXVsdDpyZXR1cm4gNUUzfX12YXIgWj1sO2V4cG9ydHMudW5zdGFibGVfSWRsZVByaW9yaXR5PTU7ZXhwb3J0cy51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xO2V4cG9ydHMudW5zdGFibGVfTG93UHJpb3JpdHk9NDtleHBvcnRzLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTM7ZXhwb3J0cy51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbDtleHBvcnRzLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTI7ZXhwb3J0cy51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9O2V4cG9ydHMudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtUfHxTfHwoVD0hMCxmKFgpKX07XG5leHBvcnRzLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIFJ9O2V4cG9ydHMudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gTChOKX07ZXhwb3J0cy51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGEpe3N3aXRjaChSKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYj0zO2JyZWFrO2RlZmF1bHQ6Yj1SfXZhciBjPVI7Uj1iO3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7Uj1jfX07ZXhwb3J0cy51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9WjtleHBvcnRzLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6YT0zfXZhciBjPVI7Uj1hO3RyeXtyZXR1cm4gYigpfWZpbmFsbHl7Uj1jfX07XG5leHBvcnRzLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWV4cG9ydHMudW5zdGFibGVfbm93KCk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yyl7dmFyIGU9Yy5kZWxheTtlPVwibnVtYmVyXCI9PT10eXBlb2YgZSYmMDxlP2QrZTpkO2M9XCJudW1iZXJcIj09PXR5cGVvZiBjLnRpbWVvdXQ/Yy50aW1lb3V0OlkoYSl9ZWxzZSBjPVkoYSksZT1kO2M9ZStjO2E9e2lkOlArKyxjYWxsYmFjazpiLHByaW9yaXR5TGV2ZWw6YSxzdGFydFRpbWU6ZSxleHBpcmF0aW9uVGltZTpjLHNvcnRJbmRleDotMX07ZT5kPyhhLnNvcnRJbmRleD1lLEooTyxhKSxudWxsPT09TChOKSYmYT09PUwoTykmJihVP2goKTpVPSEwLGcoVyxlLWQpKSk6KGEuc29ydEluZGV4PWMsSihOLGEpLFR8fFN8fChUPSEwLGYoWCkpKTtyZXR1cm4gYX07XG5leHBvcnRzLnVuc3RhYmxlX3Nob3VsZFlpZWxkPWZ1bmN0aW9uKCl7dmFyIGE9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtWKGEpO3ZhciBiPUwoTik7cmV0dXJuIGIhPT1RJiZudWxsIT09USYmbnVsbCE9PWImJm51bGwhPT1iLmNhbGxiYWNrJiZiLnN0YXJ0VGltZTw9YSYmYi5leHBpcmF0aW9uVGltZTxRLmV4cGlyYXRpb25UaW1lfHxrKCl9O2V4cG9ydHMudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKGEpe3ZhciBiPVI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9UjtSPWI7dHJ5e3JldHVybiBhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e1I9Y319fTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIGluaXRpYWxTdGF0ZSA9IHtcbiAgYW5pbWF0aW5nOiBmYWxzZSxcbiAgYXV0b3BsYXlpbmc6IG51bGwsXG4gIGN1cnJlbnREaXJlY3Rpb246IDAsXG4gIGN1cnJlbnRMZWZ0OiBudWxsLFxuICBjdXJyZW50U2xpZGU6IDAsXG4gIGRpcmVjdGlvbjogMSxcbiAgZHJhZ2dpbmc6IGZhbHNlLFxuICBlZGdlRHJhZ2dlZDogZmFsc2UsXG4gIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgbGF6eUxvYWRlZExpc3Q6IFtdLFxuICBsaXN0SGVpZ2h0OiBudWxsLFxuICBsaXN0V2lkdGg6IG51bGwsXG4gIHNjcm9sbGluZzogZmFsc2UsXG4gIHNsaWRlQ291bnQ6IG51bGwsXG4gIHNsaWRlSGVpZ2h0OiBudWxsLFxuICBzbGlkZVdpZHRoOiBudWxsLFxuICBzd2lwZUxlZnQ6IG51bGwsXG4gIHN3aXBlZDogZmFsc2UsXG4gIC8vIHVzZWQgYnkgc3dpcGVFdmVudC4gZGlmZmVyZW50aXRlcyBiZXR3ZWVuIHRvdWNoIGFuZCBzd2lwZS5cbiAgc3dpcGluZzogZmFsc2UsXG4gIHRvdWNoT2JqZWN0OiB7XG4gICAgc3RhcnRYOiAwLFxuICAgIHN0YXJ0WTogMCxcbiAgICBjdXJYOiAwLFxuICAgIGN1clk6IDBcbiAgfSxcbiAgdHJhY2tTdHlsZToge30sXG4gIHRyYWNrV2lkdGg6IDBcbn07XG52YXIgX2RlZmF1bHQgPSBpbml0aWFsU3RhdGU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCIvKipcbiAqIGxvZGFzaCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanF1ZXJ5Lm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yIFwiRnVuY3Rpb25zXCIgbWV0aG9kcy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltID0gL15cXHMrfFxccyskL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4LFxuICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluO1xuXG4vKipcbiAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IERhdGVcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICogfSwgXy5ub3coKSk7XG4gKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICovXG52YXIgbm93ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiByb290LkRhdGUubm93KCk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgaW52b2tpbmcgYGZ1bmNgIHVudGlsIGFmdGVyIGB3YWl0YFxuICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gKiBpbnZva2VkLiBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYCBtZXRob2QgdG8gY2FuY2VsXG4gKiBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0byBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS5cbiAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICogbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZFxuICogd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gU3Vic2VxdWVudFxuICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAqIGludm9jYXRpb24uXG4gKlxuICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb25cbiAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAqXG4gKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAqXG4gKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8uZGVib3VuY2VgIGFuZCBgXy50aHJvdHRsZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWJvdW5jZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPWZhbHNlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XVxuICogIFRoZSBtYXhpbXVtIHRpbWUgYGZ1bmNgIGlzIGFsbG93ZWQgdG8gYmUgZGVsYXllZCBiZWZvcmUgaXQncyBpbnZva2VkLlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEF2b2lkIGNvc3RseSBjYWxjdWxhdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBzaXplIGlzIGluIGZsdXguXG4gKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICpcbiAqIC8vIEludm9rZSBgc2VuZE1haWxgIHdoZW4gY2xpY2tlZCwgZGVib3VuY2luZyBzdWJzZXF1ZW50IGNhbGxzLlxuICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICogICAnbGVhZGluZyc6IHRydWUsXG4gKiAgICd0cmFpbGluZyc6IGZhbHNlXG4gKiB9KSk7XG4gKlxuICogLy8gRW5zdXJlIGBiYXRjaExvZ2AgaXMgaW52b2tlZCBvbmNlIGFmdGVyIDEgc2Vjb25kIG9mIGRlYm91bmNlZCBjYWxscy5cbiAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICogdmFyIHNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZSgnL3N0cmVhbScpO1xuICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBkZWJvdW5jZWQpO1xuICpcbiAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgZGVib3VuY2VkIGludm9jYXRpb24uXG4gKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCBkZWJvdW5jZWQuY2FuY2VsKTtcbiAqL1xuZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICB2YXIgbGFzdEFyZ3MsXG4gICAgICBsYXN0VGhpcyxcbiAgICAgIG1heFdhaXQsXG4gICAgICByZXN1bHQsXG4gICAgICB0aW1lcklkLFxuICAgICAgbGFzdENhbGxUaW1lLFxuICAgICAgbGFzdEludm9rZVRpbWUgPSAwLFxuICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgbWF4aW5nID0gZmFsc2UsXG4gICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICBtYXhXYWl0ID0gbWF4aW5nID8gbmF0aXZlTWF4KHRvTnVtYmVyKG9wdGlvbnMubWF4V2FpdCkgfHwgMCwgd2FpdCkgOiBtYXhXYWl0O1xuICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VGdW5jKHRpbWUpIHtcbiAgICB2YXIgYXJncyA9IGxhc3RBcmdzLFxuICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgLy8gUmVzZXQgYW55IGBtYXhXYWl0YCB0aW1lci5cbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIC8vIEludm9rZSB0aGUgbGVhZGluZyBlZGdlLlxuICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbWFpbmluZ1dhaXQodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWUsXG4gICAgICAgIHJlc3VsdCA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmcgPyBuYXRpdmVNaW4ocmVzdWx0LCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgcmV0dXJuIGRlYm91bmNlZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAhIXZhbHVlICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZGVib3VuY2U7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuVHJhY2sgPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX2lubmVyU2xpZGVyVXRpbHMgPSByZXF1aXJlKFwiLi91dGlscy9pbm5lclNsaWRlclV0aWxzXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAnZnVuY3Rpb24nKSB7IG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBzeW0pLmVudW1lcmFibGU7IH0pKTsgfSBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG4vLyBnaXZlbiBzcGVjaWZpY2F0aW9ucy9wcm9wcyBmb3IgYSBzbGlkZSwgZmV0Y2ggYWxsIHRoZSBjbGFzc2VzIHRoYXQgbmVlZCB0byBiZSBhcHBsaWVkIHRvIHRoZSBzbGlkZVxudmFyIGdldFNsaWRlQ2xhc3NlcyA9IGZ1bmN0aW9uIGdldFNsaWRlQ2xhc3NlcyhzcGVjKSB7XG4gIHZhciBzbGlja0FjdGl2ZSwgc2xpY2tDZW50ZXIsIHNsaWNrQ2xvbmVkO1xuICB2YXIgY2VudGVyT2Zmc2V0LCBpbmRleDtcblxuICBpZiAoc3BlYy5ydGwpIHtcbiAgICBpbmRleCA9IHNwZWMuc2xpZGVDb3VudCAtIDEgLSBzcGVjLmluZGV4O1xuICB9IGVsc2Uge1xuICAgIGluZGV4ID0gc3BlYy5pbmRleDtcbiAgfVxuXG4gIHNsaWNrQ2xvbmVkID0gaW5kZXggPCAwIHx8IGluZGV4ID49IHNwZWMuc2xpZGVDb3VudDtcblxuICBpZiAoc3BlYy5jZW50ZXJNb2RlKSB7XG4gICAgY2VudGVyT2Zmc2V0ID0gTWF0aC5mbG9vcihzcGVjLnNsaWRlc1RvU2hvdyAvIDIpO1xuICAgIHNsaWNrQ2VudGVyID0gKGluZGV4IC0gc3BlYy5jdXJyZW50U2xpZGUpICUgc3BlYy5zbGlkZUNvdW50ID09PSAwO1xuXG4gICAgaWYgKGluZGV4ID4gc3BlYy5jdXJyZW50U2xpZGUgLSBjZW50ZXJPZmZzZXQgLSAxICYmIGluZGV4IDw9IHNwZWMuY3VycmVudFNsaWRlICsgY2VudGVyT2Zmc2V0KSB7XG4gICAgICBzbGlja0FjdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNsaWNrQWN0aXZlID0gc3BlYy5jdXJyZW50U2xpZGUgPD0gaW5kZXggJiYgaW5kZXggPCBzcGVjLmN1cnJlbnRTbGlkZSArIHNwZWMuc2xpZGVzVG9TaG93O1xuICB9XG5cbiAgdmFyIHNsaWNrQ3VycmVudCA9IGluZGV4ID09PSBzcGVjLmN1cnJlbnRTbGlkZTtcbiAgcmV0dXJuIHtcbiAgICBcInNsaWNrLXNsaWRlXCI6IHRydWUsXG4gICAgXCJzbGljay1hY3RpdmVcIjogc2xpY2tBY3RpdmUsXG4gICAgXCJzbGljay1jZW50ZXJcIjogc2xpY2tDZW50ZXIsXG4gICAgXCJzbGljay1jbG9uZWRcIjogc2xpY2tDbG9uZWQsXG4gICAgXCJzbGljay1jdXJyZW50XCI6IHNsaWNrQ3VycmVudCAvLyBkdWJpb3VzIGluIGNhc2Ugb2YgUlRMXG5cbiAgfTtcbn07XG5cbnZhciBnZXRTbGlkZVN0eWxlID0gZnVuY3Rpb24gZ2V0U2xpZGVTdHlsZShzcGVjKSB7XG4gIHZhciBzdHlsZSA9IHt9O1xuXG4gIGlmIChzcGVjLnZhcmlhYmxlV2lkdGggPT09IHVuZGVmaW5lZCB8fCBzcGVjLnZhcmlhYmxlV2lkdGggPT09IGZhbHNlKSB7XG4gICAgc3R5bGUud2lkdGggPSBzcGVjLnNsaWRlV2lkdGg7XG4gIH1cblxuICBpZiAoc3BlYy5mYWRlKSB7XG4gICAgc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cbiAgICBpZiAoc3BlYy52ZXJ0aWNhbCkge1xuICAgICAgc3R5bGUudG9wID0gLXNwZWMuaW5kZXggKiBwYXJzZUludChzcGVjLnNsaWRlSGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUubGVmdCA9IC1zcGVjLmluZGV4ICogcGFyc2VJbnQoc3BlYy5zbGlkZVdpZHRoKTtcbiAgICB9XG5cbiAgICBzdHlsZS5vcGFjaXR5ID0gc3BlYy5jdXJyZW50U2xpZGUgPT09IHNwZWMuaW5kZXggPyAxIDogMDtcbiAgICBzdHlsZS50cmFuc2l0aW9uID0gXCJvcGFjaXR5IFwiICsgc3BlYy5zcGVlZCArIFwibXMgXCIgKyBzcGVjLmNzc0Vhc2UgKyBcIiwgXCIgKyBcInZpc2liaWxpdHkgXCIgKyBzcGVjLnNwZWVkICsgXCJtcyBcIiArIHNwZWMuY3NzRWFzZTtcbiAgICBzdHlsZS5XZWJraXRUcmFuc2l0aW9uID0gXCJvcGFjaXR5IFwiICsgc3BlYy5zcGVlZCArIFwibXMgXCIgKyBzcGVjLmNzc0Vhc2UgKyBcIiwgXCIgKyBcInZpc2liaWxpdHkgXCIgKyBzcGVjLnNwZWVkICsgXCJtcyBcIiArIHNwZWMuY3NzRWFzZTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn07XG5cbnZhciBnZXRLZXkgPSBmdW5jdGlvbiBnZXRLZXkoY2hpbGQsIGZhbGxiYWNrS2V5KSB7XG4gIHJldHVybiBjaGlsZC5rZXkgfHwgZmFsbGJhY2tLZXk7XG59O1xuXG52YXIgcmVuZGVyU2xpZGVzID0gZnVuY3Rpb24gcmVuZGVyU2xpZGVzKHNwZWMpIHtcbiAgdmFyIGtleTtcbiAgdmFyIHNsaWRlcyA9IFtdO1xuICB2YXIgcHJlQ2xvbmVTbGlkZXMgPSBbXTtcbiAgdmFyIHBvc3RDbG9uZVNsaWRlcyA9IFtdO1xuXG4gIHZhciBjaGlsZHJlbkNvdW50ID0gX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4uY291bnQoc3BlYy5jaGlsZHJlbik7XG5cbiAgdmFyIHN0YXJ0SW5kZXggPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMubGF6eVN0YXJ0SW5kZXgpKHNwZWMpO1xuICB2YXIgZW5kSW5kZXggPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMubGF6eUVuZEluZGV4KShzcGVjKTtcblxuICBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5mb3JFYWNoKHNwZWMuY2hpbGRyZW4sIGZ1bmN0aW9uIChlbGVtLCBpbmRleCkge1xuICAgIHZhciBjaGlsZDtcbiAgICB2YXIgY2hpbGRPbkNsaWNrT3B0aW9ucyA9IHtcbiAgICAgIG1lc3NhZ2U6IFwiY2hpbGRyZW5cIixcbiAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgIHNsaWRlc1RvU2Nyb2xsOiBzcGVjLnNsaWRlc1RvU2Nyb2xsLFxuICAgICAgY3VycmVudFNsaWRlOiBzcGVjLmN1cnJlbnRTbGlkZVxuICAgIH07IC8vIGluIGNhc2Ugb2YgbGF6eUxvYWQsIHdoZXRoZXIgb3Igbm90IHdlIHdhbnQgdG8gZmV0Y2ggdGhlIHNsaWRlXG5cbiAgICBpZiAoIXNwZWMubGF6eUxvYWQgfHwgc3BlYy5sYXp5TG9hZCAmJiBzcGVjLmxhenlMb2FkZWRMaXN0LmluZGV4T2YoaW5kZXgpID49IDApIHtcbiAgICAgIGNoaWxkID0gZWxlbTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGQgPSBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIG51bGwpO1xuICAgIH1cblxuICAgIHZhciBjaGlsZFN0eWxlID0gZ2V0U2xpZGVTdHlsZShfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICBpbmRleDogaW5kZXhcbiAgICB9KSk7XG4gICAgdmFyIHNsaWRlQ2xhc3MgPSBjaGlsZC5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIjtcbiAgICB2YXIgc2xpZGVDbGFzc2VzID0gZ2V0U2xpZGVDbGFzc2VzKF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHtcbiAgICAgIGluZGV4OiBpbmRleFxuICAgIH0pKTsgLy8gcHVzaCBhIGNsb25lZCBlbGVtZW50IG9mIHRoZSBkZXNpcmVkIHNsaWRlXG5cbiAgICBzbGlkZXMucHVzaChfcmVhY3QuZGVmYXVsdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgIGtleTogXCJvcmlnaW5hbFwiICsgZ2V0S2V5KGNoaWxkLCBpbmRleCksXG4gICAgICBcImRhdGEtaW5kZXhcIjogaW5kZXgsXG4gICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShzbGlkZUNsYXNzZXMsIHNsaWRlQ2xhc3MpLFxuICAgICAgdGFiSW5kZXg6IFwiLTFcIixcbiAgICAgIFwiYXJpYS1oaWRkZW5cIjogIXNsaWRlQ2xhc3Nlc1tcInNsaWNrLWFjdGl2ZVwiXSxcbiAgICAgIHN0eWxlOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgb3V0bGluZTogXCJub25lXCJcbiAgICAgIH0sIGNoaWxkLnByb3BzLnN0eWxlIHx8IHt9LCBjaGlsZFN0eWxlKSxcbiAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZSkge1xuICAgICAgICBjaGlsZC5wcm9wcyAmJiBjaGlsZC5wcm9wcy5vbkNsaWNrICYmIGNoaWxkLnByb3BzLm9uQ2xpY2soZSk7XG5cbiAgICAgICAgaWYgKHNwZWMuZm9jdXNPblNlbGVjdCkge1xuICAgICAgICAgIHNwZWMuZm9jdXNPblNlbGVjdChjaGlsZE9uQ2xpY2tPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTsgLy8gaWYgc2xpZGUgbmVlZHMgdG8gYmUgcHJlY2xvbmVkIG9yIHBvc3RjbG9uZWRcblxuICAgIGlmIChzcGVjLmluZmluaXRlICYmIHNwZWMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgIHZhciBwcmVDbG9uZU5vID0gY2hpbGRyZW5Db3VudCAtIGluZGV4O1xuXG4gICAgICBpZiAocHJlQ2xvbmVObyA8PSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0UHJlQ2xvbmVzKShzcGVjKSAmJiBjaGlsZHJlbkNvdW50ICE9PSBzcGVjLnNsaWRlc1RvU2hvdykge1xuICAgICAgICBrZXkgPSAtcHJlQ2xvbmVObztcblxuICAgICAgICBpZiAoa2V5ID49IHN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICBjaGlsZCA9IGVsZW07XG4gICAgICAgIH1cblxuICAgICAgICBzbGlkZUNsYXNzZXMgPSBnZXRTbGlkZUNsYXNzZXMoX29iamVjdFNwcmVhZCh7fSwgc3BlYywge1xuICAgICAgICAgIGluZGV4OiBrZXlcbiAgICAgICAgfSkpO1xuICAgICAgICBwcmVDbG9uZVNsaWRlcy5wdXNoKF9yZWFjdC5kZWZhdWx0LmNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICAgIGtleTogXCJwcmVjbG9uZWRcIiArIGdldEtleShjaGlsZCwga2V5KSxcbiAgICAgICAgICBcImRhdGEtaW5kZXhcIjoga2V5LFxuICAgICAgICAgIHRhYkluZGV4OiBcIi0xXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkoc2xpZGVDbGFzc2VzLCBzbGlkZUNsYXNzKSxcbiAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6ICFzbGlkZUNsYXNzZXNbXCJzbGljay1hY3RpdmVcIl0sXG4gICAgICAgICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoe30sIGNoaWxkLnByb3BzLnN0eWxlIHx8IHt9LCBjaGlsZFN0eWxlKSxcbiAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgICAgICAgICAgIGNoaWxkLnByb3BzICYmIGNoaWxkLnByb3BzLm9uQ2xpY2sgJiYgY2hpbGQucHJvcHMub25DbGljayhlKTtcblxuICAgICAgICAgICAgaWYgKHNwZWMuZm9jdXNPblNlbGVjdCkge1xuICAgICAgICAgICAgICBzcGVjLmZvY3VzT25TZWxlY3QoY2hpbGRPbkNsaWNrT3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZHJlbkNvdW50ICE9PSBzcGVjLnNsaWRlc1RvU2hvdykge1xuICAgICAgICBrZXkgPSBjaGlsZHJlbkNvdW50ICsgaW5kZXg7XG5cbiAgICAgICAgaWYgKGtleSA8IGVuZEluZGV4KSB7XG4gICAgICAgICAgY2hpbGQgPSBlbGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgc2xpZGVDbGFzc2VzID0gZ2V0U2xpZGVDbGFzc2VzKF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHtcbiAgICAgICAgICBpbmRleDoga2V5XG4gICAgICAgIH0pKTtcbiAgICAgICAgcG9zdENsb25lU2xpZGVzLnB1c2goX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAga2V5OiBcInBvc3RjbG9uZWRcIiArIGdldEtleShjaGlsZCwga2V5KSxcbiAgICAgICAgICBcImRhdGEtaW5kZXhcIjoga2V5LFxuICAgICAgICAgIHRhYkluZGV4OiBcIi0xXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkoc2xpZGVDbGFzc2VzLCBzbGlkZUNsYXNzKSxcbiAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6ICFzbGlkZUNsYXNzZXNbXCJzbGljay1hY3RpdmVcIl0sXG4gICAgICAgICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoe30sIGNoaWxkLnByb3BzLnN0eWxlIHx8IHt9LCBjaGlsZFN0eWxlKSxcbiAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgICAgICAgICAgIGNoaWxkLnByb3BzICYmIGNoaWxkLnByb3BzLm9uQ2xpY2sgJiYgY2hpbGQucHJvcHMub25DbGljayhlKTtcblxuICAgICAgICAgICAgaWYgKHNwZWMuZm9jdXNPblNlbGVjdCkge1xuICAgICAgICAgICAgICBzcGVjLmZvY3VzT25TZWxlY3QoY2hpbGRPbkNsaWNrT3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBpZiAoc3BlYy5ydGwpIHtcbiAgICByZXR1cm4gcHJlQ2xvbmVTbGlkZXMuY29uY2F0KHNsaWRlcywgcG9zdENsb25lU2xpZGVzKS5yZXZlcnNlKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZUNsb25lU2xpZGVzLmNvbmNhdChzbGlkZXMsIHBvc3RDbG9uZVNsaWRlcyk7XG4gIH1cbn07XG5cbnZhciBUcmFjayA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX1JlYWN0JFB1cmVDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRyYWNrLCBfUmVhY3QkUHVyZUNvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gVHJhY2soKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRyYWNrKTtcblxuICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoVHJhY2spLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRyYWNrLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHNsaWRlcyA9IHJlbmRlclNsaWRlcyh0aGlzLnByb3BzKTtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgb25Nb3VzZUVudGVyID0gX3RoaXMkcHJvcHMub25Nb3VzZUVudGVyLFxuICAgICAgICAgIG9uTW91c2VPdmVyID0gX3RoaXMkcHJvcHMub25Nb3VzZU92ZXIsXG4gICAgICAgICAgb25Nb3VzZUxlYXZlID0gX3RoaXMkcHJvcHMub25Nb3VzZUxlYXZlO1xuICAgICAgdmFyIG1vdXNlRXZlbnRzID0ge1xuICAgICAgICBvbk1vdXNlRW50ZXI6IG9uTW91c2VFbnRlcixcbiAgICAgICAgb25Nb3VzZU92ZXI6IG9uTW91c2VPdmVyLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IG9uTW91c2VMZWF2ZVxuICAgICAgfTtcbiAgICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInNsaWNrLXRyYWNrXCIsXG4gICAgICAgIHN0eWxlOiB0aGlzLnByb3BzLnRyYWNrU3R5bGVcbiAgICAgIH0sIG1vdXNlRXZlbnRzKSwgc2xpZGVzKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVHJhY2s7XG59KF9yZWFjdC5kZWZhdWx0LlB1cmVDb21wb25lbnQpO1xuXG5leHBvcnRzLlRyYWNrID0gVHJhY2s7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkRvdHMgPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHsgb3duS2V5cyA9IG93bktleXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTsgfSkpOyB9IG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG52YXIgZ2V0RG90Q291bnQgPSBmdW5jdGlvbiBnZXREb3RDb3VudChzcGVjKSB7XG4gIHZhciBkb3RzO1xuXG4gIGlmIChzcGVjLmluZmluaXRlKSB7XG4gICAgZG90cyA9IE1hdGguY2VpbChzcGVjLnNsaWRlQ291bnQgLyBzcGVjLnNsaWRlc1RvU2Nyb2xsKTtcbiAgfSBlbHNlIHtcbiAgICBkb3RzID0gTWF0aC5jZWlsKChzcGVjLnNsaWRlQ291bnQgLSBzcGVjLnNsaWRlc1RvU2hvdykgLyBzcGVjLnNsaWRlc1RvU2Nyb2xsKSArIDE7XG4gIH1cblxuICByZXR1cm4gZG90cztcbn07XG5cbnZhciBEb3RzID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uIChfUmVhY3QkUHVyZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoRG90cywgX1JlYWN0JFB1cmVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIERvdHMoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERvdHMpO1xuXG4gICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihEb3RzKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhEb3RzLCBbe1xuICAgIGtleTogXCJjbGlja0hhbmRsZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xpY2tIYW5kbGVyKG9wdGlvbnMsIGUpIHtcbiAgICAgIC8vIEluIEF1dG9wbGF5IHRoZSBmb2N1cyBzdGF5cyBvbiBjbGlja2VkIGJ1dHRvbiBldmVuIGFmdGVyIHRyYW5zaXRpb25cbiAgICAgIC8vIHRvIG5leHQgc2xpZGUuIFRoYXQgb25seSBnb2VzIGF3YXkgYnkgY2xpY2sgc29tZXdoZXJlIG91dHNpZGVcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMucHJvcHMuY2xpY2tIYW5kbGVyKG9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIGRvdENvdW50ID0gZ2V0RG90Q291bnQoe1xuICAgICAgICBzbGlkZUNvdW50OiB0aGlzLnByb3BzLnNsaWRlQ291bnQsXG4gICAgICAgIHNsaWRlc1RvU2Nyb2xsOiB0aGlzLnByb3BzLnNsaWRlc1RvU2Nyb2xsLFxuICAgICAgICBzbGlkZXNUb1Nob3c6IHRoaXMucHJvcHMuc2xpZGVzVG9TaG93LFxuICAgICAgICBpbmZpbml0ZTogdGhpcy5wcm9wcy5pbmZpbml0ZVxuICAgICAgfSk7IC8vIEFwcGx5IGpvaW4gJiBzcGxpdCB0byBBcnJheSB0byBwcmUtZmlsbCBpdCBmb3IgSUU4XG4gICAgICAvL1xuICAgICAgLy8gQ3JlZGl0OiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMzczNTQyNS8xODQ5NDU4XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgb25Nb3VzZUVudGVyID0gX3RoaXMkcHJvcHMub25Nb3VzZUVudGVyLFxuICAgICAgICAgIG9uTW91c2VPdmVyID0gX3RoaXMkcHJvcHMub25Nb3VzZU92ZXIsXG4gICAgICAgICAgb25Nb3VzZUxlYXZlID0gX3RoaXMkcHJvcHMub25Nb3VzZUxlYXZlO1xuICAgICAgdmFyIG1vdXNlRXZlbnRzID0ge1xuICAgICAgICBvbk1vdXNlRW50ZXI6IG9uTW91c2VFbnRlcixcbiAgICAgICAgb25Nb3VzZU92ZXI6IG9uTW91c2VPdmVyLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IG9uTW91c2VMZWF2ZVxuICAgICAgfTtcbiAgICAgIHZhciBkb3RzID0gQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkoZG90Q291bnQgKyAxKS5qb2luKFwiMFwiKS5zcGxpdChcIlwiKSkubWFwKGZ1bmN0aW9uICh4LCBpKSB7XG4gICAgICAgIHZhciBsZWZ0Qm91bmQgPSBpICogX3RoaXMucHJvcHMuc2xpZGVzVG9TY3JvbGw7XG4gICAgICAgIHZhciByaWdodEJvdW5kID0gaSAqIF90aGlzLnByb3BzLnNsaWRlc1RvU2Nyb2xsICsgKF90aGlzLnByb3BzLnNsaWRlc1RvU2Nyb2xsIC0gMSk7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkoe1xuICAgICAgICAgIFwic2xpY2stYWN0aXZlXCI6IF90aGlzLnByb3BzLmN1cnJlbnRTbGlkZSA+PSBsZWZ0Qm91bmQgJiYgX3RoaXMucHJvcHMuY3VycmVudFNsaWRlIDw9IHJpZ2h0Qm91bmRcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkb3RPcHRpb25zID0ge1xuICAgICAgICAgIG1lc3NhZ2U6IFwiZG90c1wiLFxuICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiBfdGhpcy5wcm9wcy5zbGlkZXNUb1Njcm9sbCxcbiAgICAgICAgICBjdXJyZW50U2xpZGU6IF90aGlzLnByb3BzLmN1cnJlbnRTbGlkZVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBvbkNsaWNrID0gX3RoaXMuY2xpY2tIYW5kbGVyLmJpbmQoX3RoaXMsIGRvdE9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGlcIiwge1xuICAgICAgICAgIGtleTogaSxcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZVxuICAgICAgICB9LCBfcmVhY3QuZGVmYXVsdC5jbG9uZUVsZW1lbnQoX3RoaXMucHJvcHMuY3VzdG9tUGFnaW5nKGkpLCB7XG4gICAgICAgICAgb25DbGljazogb25DbGlja1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC5jbG9uZUVsZW1lbnQodGhpcy5wcm9wcy5hcHBlbmREb3RzKGRvdHMpLCBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnByb3BzLmRvdHNDbGFzc1xuICAgICAgfSwgbW91c2VFdmVudHMpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRG90cztcbn0oX3JlYWN0LmRlZmF1bHQuUHVyZUNvbXBvbmVudCk7XG5cbmV4cG9ydHMuRG90cyA9IERvdHM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLk5leHRBcnJvdyA9IGV4cG9ydHMuUHJldkFycm93ID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9pbm5lclNsaWRlclV0aWxzID0gcmVxdWlyZShcIi4vdXRpbHMvaW5uZXJTbGlkZXJVdGlsc1wiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAnZnVuY3Rpb24nKSB7IG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBzeW0pLmVudW1lcmFibGU7IH0pKTsgfSBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxudmFyIFByZXZBcnJvdyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX1JlYWN0JFB1cmVDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFByZXZBcnJvdywgX1JlYWN0JFB1cmVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFByZXZBcnJvdygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUHJldkFycm93KTtcblxuICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoUHJldkFycm93KS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQcmV2QXJyb3csIFt7XG4gICAga2V5OiBcImNsaWNrSGFuZGxlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGlja0hhbmRsZXIob3B0aW9ucywgZSkge1xuICAgICAgaWYgKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByb3BzLmNsaWNrSGFuZGxlcihvcHRpb25zLCBlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcmV2Q2xhc3NlcyA9IHtcbiAgICAgICAgXCJzbGljay1hcnJvd1wiOiB0cnVlLFxuICAgICAgICBcInNsaWNrLXByZXZcIjogdHJ1ZVxuICAgICAgfTtcbiAgICAgIHZhciBwcmV2SGFuZGxlciA9IHRoaXMuY2xpY2tIYW5kbGVyLmJpbmQodGhpcywge1xuICAgICAgICBtZXNzYWdlOiBcInByZXZpb3VzXCJcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXRoaXMucHJvcHMuaW5maW5pdGUgJiYgKHRoaXMucHJvcHMuY3VycmVudFNsaWRlID09PSAwIHx8IHRoaXMucHJvcHMuc2xpZGVDb3VudCA8PSB0aGlzLnByb3BzLnNsaWRlc1RvU2hvdykpIHtcbiAgICAgICAgcHJldkNsYXNzZXNbXCJzbGljay1kaXNhYmxlZFwiXSA9IHRydWU7XG4gICAgICAgIHByZXZIYW5kbGVyID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHByZXZBcnJvd1Byb3BzID0ge1xuICAgICAgICBrZXk6IFwiMFwiLFxuICAgICAgICBcImRhdGEtcm9sZVwiOiBcIm5vbmVcIixcbiAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkocHJldkNsYXNzZXMpLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGRpc3BsYXk6IFwiYmxvY2tcIlxuICAgICAgICB9LFxuICAgICAgICBvbkNsaWNrOiBwcmV2SGFuZGxlclxuICAgICAgfTtcbiAgICAgIHZhciBjdXN0b21Qcm9wcyA9IHtcbiAgICAgICAgY3VycmVudFNsaWRlOiB0aGlzLnByb3BzLmN1cnJlbnRTbGlkZSxcbiAgICAgICAgc2xpZGVDb3VudDogdGhpcy5wcm9wcy5zbGlkZUNvdW50XG4gICAgICB9O1xuICAgICAgdmFyIHByZXZBcnJvdztcblxuICAgICAgaWYgKHRoaXMucHJvcHMucHJldkFycm93KSB7XG4gICAgICAgIHByZXZBcnJvdyA9IF9yZWFjdC5kZWZhdWx0LmNsb25lRWxlbWVudCh0aGlzLnByb3BzLnByZXZBcnJvdywgX29iamVjdFNwcmVhZCh7fSwgcHJldkFycm93UHJvcHMsIGN1c3RvbVByb3BzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2QXJyb3cgPSBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIF9leHRlbmRzKHtcbiAgICAgICAgICBrZXk6IFwiMFwiLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCJcbiAgICAgICAgfSwgcHJldkFycm93UHJvcHMpLCBcIiBcIiwgXCJQcmV2aW91c1wiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZBcnJvdztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUHJldkFycm93O1xufShfcmVhY3QuZGVmYXVsdC5QdXJlQ29tcG9uZW50KTtcblxuZXhwb3J0cy5QcmV2QXJyb3cgPSBQcmV2QXJyb3c7XG5cbnZhciBOZXh0QXJyb3cgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKF9SZWFjdCRQdXJlQ29tcG9uZW50Mikge1xuICBfaW5oZXJpdHMoTmV4dEFycm93LCBfUmVhY3QkUHVyZUNvbXBvbmVudDIpO1xuXG4gIGZ1bmN0aW9uIE5leHRBcnJvdygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTmV4dEFycm93KTtcblxuICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoTmV4dEFycm93KS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhOZXh0QXJyb3csIFt7XG4gICAga2V5OiBcImNsaWNrSGFuZGxlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGlja0hhbmRsZXIob3B0aW9ucywgZSkge1xuICAgICAgaWYgKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByb3BzLmNsaWNrSGFuZGxlcihvcHRpb25zLCBlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBuZXh0Q2xhc3NlcyA9IHtcbiAgICAgICAgXCJzbGljay1hcnJvd1wiOiB0cnVlLFxuICAgICAgICBcInNsaWNrLW5leHRcIjogdHJ1ZVxuICAgICAgfTtcbiAgICAgIHZhciBuZXh0SGFuZGxlciA9IHRoaXMuY2xpY2tIYW5kbGVyLmJpbmQodGhpcywge1xuICAgICAgICBtZXNzYWdlOiBcIm5leHRcIlxuICAgICAgfSk7XG5cbiAgICAgIGlmICghKDAsIF9pbm5lclNsaWRlclV0aWxzLmNhbkdvTmV4dCkodGhpcy5wcm9wcykpIHtcbiAgICAgICAgbmV4dENsYXNzZXNbXCJzbGljay1kaXNhYmxlZFwiXSA9IHRydWU7XG4gICAgICAgIG5leHRIYW5kbGVyID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIG5leHRBcnJvd1Byb3BzID0ge1xuICAgICAgICBrZXk6IFwiMVwiLFxuICAgICAgICBcImRhdGEtcm9sZVwiOiBcIm5vbmVcIixcbiAgICAgICAgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMuZGVmYXVsdCkobmV4dENsYXNzZXMpLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGRpc3BsYXk6IFwiYmxvY2tcIlxuICAgICAgICB9LFxuICAgICAgICBvbkNsaWNrOiBuZXh0SGFuZGxlclxuICAgICAgfTtcbiAgICAgIHZhciBjdXN0b21Qcm9wcyA9IHtcbiAgICAgICAgY3VycmVudFNsaWRlOiB0aGlzLnByb3BzLmN1cnJlbnRTbGlkZSxcbiAgICAgICAgc2xpZGVDb3VudDogdGhpcy5wcm9wcy5zbGlkZUNvdW50XG4gICAgICB9O1xuICAgICAgdmFyIG5leHRBcnJvdztcblxuICAgICAgaWYgKHRoaXMucHJvcHMubmV4dEFycm93KSB7XG4gICAgICAgIG5leHRBcnJvdyA9IF9yZWFjdC5kZWZhdWx0LmNsb25lRWxlbWVudCh0aGlzLnByb3BzLm5leHRBcnJvdywgX29iamVjdFNwcmVhZCh7fSwgbmV4dEFycm93UHJvcHMsIGN1c3RvbVByb3BzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0QXJyb3cgPSBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIF9leHRlbmRzKHtcbiAgICAgICAgICBrZXk6IFwiMVwiLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCJcbiAgICAgICAgfSwgbmV4dEFycm93UHJvcHMpLCBcIiBcIiwgXCJOZXh0XCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV4dEFycm93O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBOZXh0QXJyb3c7XG59KF9yZWFjdC5kZWZhdWx0LlB1cmVDb21wb25lbnQpO1xuXG5leHBvcnRzLk5leHRBcnJvdyA9IE5leHRBcnJvdzsiLCIvKipcclxuICogQSBjb2xsZWN0aW9uIG9mIHNoaW1zIHRoYXQgcHJvdmlkZSBtaW5pbWFsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEVTNiBjb2xsZWN0aW9ucy5cclxuICpcclxuICogVGhlc2UgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgbWVhbnQgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBSZXNpemVPYnNlcnZlclxyXG4gKiBtb2R1bGVzIGFzIHRoZXkgY292ZXIgb25seSBhIGxpbWl0ZWQgcmFuZ2Ugb2YgdXNlIGNhc2VzLlxyXG4gKi9cclxuLyogZXNsaW50LWRpc2FibGUgcmVxdWlyZS1qc2RvYywgdmFsaWQtanNkb2MgKi9cclxudmFyIE1hcFNoaW0gPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKHR5cGVvZiBNYXAgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIE1hcDtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBpbmRleCBpbiBwcm92aWRlZCBhcnJheSB0aGF0IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBrZXkuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtBcnJheTxBcnJheT59IGFyclxyXG4gICAgICogQHBhcmFtIHsqfSBrZXlcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGdldEluZGV4KGFyciwga2V5KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IC0xO1xyXG4gICAgICAgIGFyci5zb21lKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcclxuICAgICAgICAgICAgaWYgKGVudHJ5WzBdID09PSBrZXkpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGNsYXNzXzEoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX19lbnRyaWVzX18gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNsYXNzXzEucHJvdG90eXBlLCBcInNpemVcIiwge1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZW50cmllc19fLmxlbmd0aDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQHBhcmFtIHsqfSBrZXlcclxuICAgICAgICAgKiBAcmV0dXJucyB7Kn1cclxuICAgICAgICAgKi9cclxuICAgICAgICBjbGFzc18xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IGdldEluZGV4KHRoaXMuX19lbnRyaWVzX18sIGtleSk7XHJcbiAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMuX19lbnRyaWVzX19baW5kZXhdO1xyXG4gICAgICAgICAgICByZXR1cm4gZW50cnkgJiYgZW50cnlbMV07XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcGFyYW0geyp9IGtleVxyXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWVcclxuICAgICAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAgICAgKi9cclxuICAgICAgICBjbGFzc18xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBnZXRJbmRleCh0aGlzLl9fZW50cmllc19fLCBrZXkpO1xyXG4gICAgICAgICAgICBpZiAofmluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9fZW50cmllc19fW2luZGV4XVsxXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fX2VudHJpZXNfXy5wdXNoKFtrZXksIHZhbHVlXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBwYXJhbSB7Kn0ga2V5XHJcbiAgICAgICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICB2YXIgZW50cmllcyA9IHRoaXMuX19lbnRyaWVzX187XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IGdldEluZGV4KGVudHJpZXMsIGtleSk7XHJcbiAgICAgICAgICAgIGlmICh+aW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIGVudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQHBhcmFtIHsqfSBrZXlcclxuICAgICAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAgICAgKi9cclxuICAgICAgICBjbGFzc18xLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIX5nZXRJbmRleCh0aGlzLl9fZW50cmllc19fLCBrZXkpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX19lbnRyaWVzX18uc3BsaWNlKDApO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcclxuICAgICAgICAgKiBAcGFyYW0geyp9IFtjdHg9bnVsbF1cclxuICAgICAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAgICAgKi9cclxuICAgICAgICBjbGFzc18xLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBjdHgpIHtcclxuICAgICAgICAgICAgaWYgKGN0eCA9PT0gdm9pZCAwKSB7IGN0eCA9IG51bGw7IH1cclxuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IHRoaXMuX19lbnRyaWVzX187IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSBfYVtfaV07XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKGN0eCwgZW50cnlbMV0sIGVudHJ5WzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGNsYXNzXzE7XHJcbiAgICB9KCkpO1xyXG59KSgpO1xuXG4vKipcclxuICogRGV0ZWN0cyB3aGV0aGVyIHdpbmRvdyBhbmQgZG9jdW1lbnQgb2JqZWN0cyBhcmUgYXZhaWxhYmxlIGluIGN1cnJlbnQgZW52aXJvbm1lbnQuXHJcbiAqL1xyXG52YXIgaXNCcm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgPT09IGRvY3VtZW50O1xuXG4vLyBSZXR1cm5zIGdsb2JhbCBvYmplY3Qgb2YgYSBjdXJyZW50IGVudmlyb25tZW50LlxyXG52YXIgZ2xvYmFsJDEgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbC5NYXRoID09PSBNYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIGdsb2JhbDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09PSBNYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHNlbGY7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT09IE1hdGgpIHtcclxuICAgICAgICByZXR1cm4gd2luZG93O1xyXG4gICAgfVxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXHJcbiAgICByZXR1cm4gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcclxufSkoKTtcblxuLyoqXHJcbiAqIEEgc2hpbSBmb3IgdGhlIHJlcXVlc3RBbmltYXRpb25GcmFtZSB3aGljaCBmYWxscyBiYWNrIHRvIHRoZSBzZXRUaW1lb3V0IGlmXHJcbiAqIGZpcnN0IG9uZSBpcyBub3Qgc3VwcG9ydGVkLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXF1ZXN0cycgaWRlbnRpZmllci5cclxuICovXHJcbnZhciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUkMSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAodHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIC8vIEl0J3MgcmVxdWlyZWQgdG8gdXNlIGEgYm91bmRlZCBmdW5jdGlvbiBiZWNhdXNlIElFIHNvbWV0aW1lcyB0aHJvd3NcclxuICAgICAgICAvLyBhbiBcIkludmFsaWQgY2FsbGluZyBvYmplY3RcIiBlcnJvciBpZiByQUYgaXMgaW52b2tlZCB3aXRob3V0IHRoZSBnbG9iYWxcclxuICAgICAgICAvLyBvYmplY3Qgb24gdGhlIGxlZnQgaGFuZCBzaWRlLlxyXG4gICAgICAgIHJldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZChnbG9iYWwkMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGNhbGxiYWNrKSB7IHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbGxiYWNrKERhdGUubm93KCkpOyB9LCAxMDAwIC8gNjApOyB9O1xyXG59KSgpO1xuXG4vLyBEZWZpbmVzIG1pbmltdW0gdGltZW91dCBiZWZvcmUgYWRkaW5nIGEgdHJhaWxpbmcgY2FsbC5cclxudmFyIHRyYWlsaW5nVGltZW91dCA9IDI7XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgd3JhcHBlciBmdW5jdGlvbiB3aGljaCBlbnN1cmVzIHRoYXQgcHJvdmlkZWQgY2FsbGJhY2sgd2lsbCBiZVxyXG4gKiBpbnZva2VkIG9ubHkgb25jZSBkdXJpbmcgdGhlIHNwZWNpZmllZCBkZWxheSBwZXJpb2QuXHJcbiAqXHJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gYmUgaW52b2tlZCBhZnRlciB0aGUgZGVsYXkgcGVyaW9kLlxyXG4gKiBAcGFyYW0ge251bWJlcn0gZGVsYXkgLSBEZWxheSBhZnRlciB3aGljaCB0byBpbnZva2UgY2FsbGJhY2suXHJcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cclxuICovXHJcbmZ1bmN0aW9uIHRocm90dGxlIChjYWxsYmFjaywgZGVsYXkpIHtcclxuICAgIHZhciBsZWFkaW5nQ2FsbCA9IGZhbHNlLCB0cmFpbGluZ0NhbGwgPSBmYWxzZSwgbGFzdENhbGxUaW1lID0gMDtcclxuICAgIC8qKlxyXG4gICAgICogSW52b2tlcyB0aGUgb3JpZ2luYWwgY2FsbGJhY2sgZnVuY3Rpb24gYW5kIHNjaGVkdWxlcyBuZXcgaW52b2NhdGlvbiBpZlxyXG4gICAgICogdGhlIFwicHJveHlcIiB3YXMgY2FsbGVkIGR1cmluZyBjdXJyZW50IHJlcXVlc3QuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHJlc29sdmVQZW5kaW5nKCkge1xyXG4gICAgICAgIGlmIChsZWFkaW5nQ2FsbCkge1xyXG4gICAgICAgICAgICBsZWFkaW5nQ2FsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHJhaWxpbmdDYWxsKSB7XHJcbiAgICAgICAgICAgIHByb3h5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBpbnZva2VkIGFmdGVyIHRoZSBzcGVjaWZpZWQgZGVsYXkuIEl0IHdpbGwgZnVydGhlciBwb3N0cG9uZVxyXG4gICAgICogaW52b2NhdGlvbiBvZiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gZGVsZWdhdGluZyBpdCB0byB0aGVcclxuICAgICAqIHJlcXVlc3RBbmltYXRpb25GcmFtZS5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gdGltZW91dENhbGxiYWNrKCkge1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSQxKHJlc29sdmVQZW5kaW5nKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogU2NoZWR1bGVzIGludm9jYXRpb24gb2YgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBwcm94eSgpIHtcclxuICAgICAgICB2YXIgdGltZVN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBpZiAobGVhZGluZ0NhbGwpIHtcclxuICAgICAgICAgICAgLy8gUmVqZWN0IGltbWVkaWF0ZWx5IGZvbGxvd2luZyBjYWxscy5cclxuICAgICAgICAgICAgaWYgKHRpbWVTdGFtcCAtIGxhc3RDYWxsVGltZSA8IHRyYWlsaW5nVGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIFNjaGVkdWxlIG5ldyBjYWxsIHRvIGJlIGluIGludm9rZWQgd2hlbiB0aGUgcGVuZGluZyBvbmUgaXMgcmVzb2x2ZWQuXHJcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGZvciBcInRyYW5zaXRpb25zXCIgd2hpY2ggbmV2ZXIgYWN0dWFsbHkgc3RhcnRcclxuICAgICAgICAgICAgLy8gaW1tZWRpYXRlbHkgc28gdGhlcmUgaXMgYSBjaGFuY2UgdGhhdCB3ZSBtaWdodCBtaXNzIG9uZSBpZiBjaGFuZ2VcclxuICAgICAgICAgICAgLy8gaGFwcGVucyBhbWlkcyB0aGUgcGVuZGluZyBpbnZvY2F0aW9uLlxyXG4gICAgICAgICAgICB0cmFpbGluZ0NhbGwgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGVhZGluZ0NhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0cmFpbGluZ0NhbGwgPSBmYWxzZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCh0aW1lb3V0Q2FsbGJhY2ssIGRlbGF5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGFzdENhbGxUaW1lID0gdGltZVN0YW1wO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3h5O1xyXG59XG5cbi8vIE1pbmltdW0gZGVsYXkgYmVmb3JlIGludm9raW5nIHRoZSB1cGRhdGUgb2Ygb2JzZXJ2ZXJzLlxyXG52YXIgUkVGUkVTSF9ERUxBWSA9IDIwO1xyXG4vLyBBIGxpc3Qgb2Ygc3Vic3RyaW5ncyBvZiBDU1MgcHJvcGVydGllcyB1c2VkIHRvIGZpbmQgdHJhbnNpdGlvbiBldmVudHMgdGhhdFxyXG4vLyBtaWdodCBhZmZlY3QgZGltZW5zaW9ucyBvZiBvYnNlcnZlZCBlbGVtZW50cy5cclxudmFyIHRyYW5zaXRpb25LZXlzID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnLCAnd2lkdGgnLCAnaGVpZ2h0JywgJ3NpemUnLCAnd2VpZ2h0J107XHJcbi8vIENoZWNrIGlmIE11dGF0aW9uT2JzZXJ2ZXIgaXMgYXZhaWxhYmxlLlxyXG52YXIgbXV0YXRpb25PYnNlcnZlclN1cHBvcnRlZCA9IHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJztcclxuLyoqXHJcbiAqIFNpbmdsZXRvbiBjb250cm9sbGVyIGNsYXNzIHdoaWNoIGhhbmRsZXMgdXBkYXRlcyBvZiBSZXNpemVPYnNlcnZlciBpbnN0YW5jZXMuXHJcbiAqL1xyXG52YXIgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5cclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIoKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogSW5kaWNhdGVzIHdoZXRoZXIgRE9NIGxpc3RlbmVycyBoYXZlIGJlZW4gYWRkZWQuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7Ym9vbGVhbn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmNvbm5lY3RlZF8gPSBmYWxzZTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBUZWxscyB0aGF0IGNvbnRyb2xsZXIgaGFzIHN1YnNjcmliZWQgZm9yIE11dGF0aW9uIEV2ZW50cy5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwcml2YXRlIHtib29sZWFufVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMubXV0YXRpb25FdmVudHNBZGRlZF8gPSBmYWxzZTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBLZWVwcyByZWZlcmVuY2UgdG8gdGhlIGluc3RhbmNlIG9mIE11dGF0aW9uT2JzZXJ2ZXIuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7TXV0YXRpb25PYnNlcnZlcn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLm11dGF0aW9uc09ic2VydmVyXyA9IG51bGw7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQSBsaXN0IG9mIGNvbm5lY3RlZCBvYnNlcnZlcnMuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7QXJyYXk8UmVzaXplT2JzZXJ2ZXJTUEk+fVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXJzXyA9IFtdO1xyXG4gICAgICAgIHRoaXMub25UcmFuc2l0aW9uRW5kXyA9IHRoaXMub25UcmFuc2l0aW9uRW5kXy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCA9IHRocm90dGxlKHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpLCBSRUZSRVNIX0RFTEFZKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBvYnNlcnZlciB0byBvYnNlcnZlcnMgbGlzdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge1Jlc2l6ZU9ic2VydmVyU1BJfSBvYnNlcnZlciAtIE9ic2VydmVyIHRvIGJlIGFkZGVkLlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5wcm90b3R5cGUuYWRkT2JzZXJ2ZXIgPSBmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcclxuICAgICAgICBpZiAoIX50aGlzLm9ic2VydmVyc18uaW5kZXhPZihvYnNlcnZlcikpIHtcclxuICAgICAgICAgICAgdGhpcy5vYnNlcnZlcnNfLnB1c2gob2JzZXJ2ZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBBZGQgbGlzdGVuZXJzIGlmIHRoZXkgaGF2ZW4ndCBiZWVuIGFkZGVkIHlldC5cclxuICAgICAgICBpZiAoIXRoaXMuY29ubmVjdGVkXykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3RfKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBvYnNlcnZlciBmcm9tIG9ic2VydmVycyBsaXN0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7UmVzaXplT2JzZXJ2ZXJTUEl9IG9ic2VydmVyIC0gT2JzZXJ2ZXIgdG8gYmUgcmVtb3ZlZC5cclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZU9ic2VydmVyID0gZnVuY3Rpb24gKG9ic2VydmVyKSB7XHJcbiAgICAgICAgdmFyIG9ic2VydmVycyA9IHRoaXMub2JzZXJ2ZXJzXztcclxuICAgICAgICB2YXIgaW5kZXggPSBvYnNlcnZlcnMuaW5kZXhPZihvYnNlcnZlcik7XHJcbiAgICAgICAgLy8gUmVtb3ZlIG9ic2VydmVyIGlmIGl0J3MgcHJlc2VudCBpbiByZWdpc3RyeS5cclxuICAgICAgICBpZiAofmluZGV4KSB7XHJcbiAgICAgICAgICAgIG9ic2VydmVycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBSZW1vdmUgbGlzdGVuZXJzIGlmIGNvbnRyb2xsZXIgaGFzIG5vIGNvbm5lY3RlZCBvYnNlcnZlcnMuXHJcbiAgICAgICAgaWYgKCFvYnNlcnZlcnMubGVuZ3RoICYmIHRoaXMuY29ubmVjdGVkXykge1xyXG4gICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RfKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogSW52b2tlcyB0aGUgdXBkYXRlIG9mIG9ic2VydmVycy4gSXQgd2lsbCBjb250aW51ZSBydW5uaW5nIHVwZGF0ZXMgaW5zb2ZhclxyXG4gICAgICogaXQgZGV0ZWN0cyBjaGFuZ2VzLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGNoYW5nZXNEZXRlY3RlZCA9IHRoaXMudXBkYXRlT2JzZXJ2ZXJzXygpO1xyXG4gICAgICAgIC8vIENvbnRpbnVlIHJ1bm5pbmcgdXBkYXRlcyBpZiBjaGFuZ2VzIGhhdmUgYmVlbiBkZXRlY3RlZCBhcyB0aGVyZSBtaWdodFxyXG4gICAgICAgIC8vIGJlIGZ1dHVyZSBvbmVzIGNhdXNlZCBieSBDU1MgdHJhbnNpdGlvbnMuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNEZXRlY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIGV2ZXJ5IG9ic2VydmVyIGZyb20gb2JzZXJ2ZXJzIGxpc3QgYW5kIG5vdGlmaWVzIHRoZW0gb2YgcXVldWVkXHJcbiAgICAgKiBlbnRyaWVzLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBcInRydWVcIiBpZiBhbnkgb2JzZXJ2ZXIgaGFzIGRldGVjdGVkIGNoYW5nZXMgaW5cclxuICAgICAqICAgICAgZGltZW5zaW9ucyBvZiBpdCdzIGVsZW1lbnRzLlxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZU9ic2VydmVyc18gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gQ29sbGVjdCBvYnNlcnZlcnMgdGhhdCBoYXZlIGFjdGl2ZSBvYnNlcnZhdGlvbnMuXHJcbiAgICAgICAgdmFyIGFjdGl2ZU9ic2VydmVycyA9IHRoaXMub2JzZXJ2ZXJzXy5maWx0ZXIoZnVuY3Rpb24gKG9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYnNlcnZlci5nYXRoZXJBY3RpdmUoKSwgb2JzZXJ2ZXIuaGFzQWN0aXZlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gRGVsaXZlciBub3RpZmljYXRpb25zIGluIGEgc2VwYXJhdGUgY3ljbGUgaW4gb3JkZXIgdG8gYXZvaWQgYW55XHJcbiAgICAgICAgLy8gY29sbGlzaW9ucyBiZXR3ZWVuIG9ic2VydmVycywgZS5nLiB3aGVuIG11bHRpcGxlIGluc3RhbmNlcyBvZlxyXG4gICAgICAgIC8vIFJlc2l6ZU9ic2VydmVyIGFyZSB0cmFja2luZyB0aGUgc2FtZSBlbGVtZW50IGFuZCB0aGUgY2FsbGJhY2sgb2Ygb25lXHJcbiAgICAgICAgLy8gb2YgdGhlbSBjaGFuZ2VzIGNvbnRlbnQgZGltZW5zaW9ucyBvZiB0aGUgb2JzZXJ2ZWQgdGFyZ2V0LiBTb21ldGltZXNcclxuICAgICAgICAvLyB0aGlzIG1heSByZXN1bHQgaW4gbm90aWZpY2F0aW9ucyBiZWluZyBibG9ja2VkIGZvciB0aGUgcmVzdCBvZiBvYnNlcnZlcnMuXHJcbiAgICAgICAgYWN0aXZlT2JzZXJ2ZXJzLmZvckVhY2goZnVuY3Rpb24gKG9ic2VydmVyKSB7IHJldHVybiBvYnNlcnZlci5icm9hZGNhc3RBY3RpdmUoKTsgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFjdGl2ZU9ic2VydmVycy5sZW5ndGggPiAwO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgRE9NIGxpc3RlbmVycy5cclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5wcm90b3R5cGUuY29ubmVjdF8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBydW5uaW5nIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQgb3IgaWYgbGlzdGVuZXJzXHJcbiAgICAgICAgLy8gaGF2ZSBiZWVuIGFscmVhZHkgYWRkZWQuXHJcbiAgICAgICAgaWYgKCFpc0Jyb3dzZXIgfHwgdGhpcy5jb25uZWN0ZWRfKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gU3Vic2NyaXB0aW9uIHRvIHRoZSBcIlRyYW5zaXRpb25lbmRcIiBldmVudCBpcyB1c2VkIGFzIGEgd29ya2Fyb3VuZCBmb3JcclxuICAgICAgICAvLyBkZWxheWVkIHRyYW5zaXRpb25zLiBUaGlzIHdheSBpdCdzIHBvc3NpYmxlIHRvIGNhcHR1cmUgYXQgbGVhc3QgdGhlXHJcbiAgICAgICAgLy8gZmluYWwgc3RhdGUgb2YgYW4gZWxlbWVudC5cclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgdGhpcy5vblRyYW5zaXRpb25FbmRfKTtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZWZyZXNoKTtcclxuICAgICAgICBpZiAobXV0YXRpb25PYnNlcnZlclN1cHBvcnRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uc09ic2VydmVyXyA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMucmVmcmVzaCk7XHJcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfLm9ic2VydmUoZG9jdW1lbnQsIHtcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIHRoaXMucmVmcmVzaCk7XHJcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25FdmVudHNBZGRlZF8gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbm5lY3RlZF8gPSB0cnVlO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBET00gbGlzdGVuZXJzLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS5kaXNjb25uZWN0XyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIHJ1bm5pbmcgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudCBvciBpZiBsaXN0ZW5lcnNcclxuICAgICAgICAvLyBoYXZlIGJlZW4gYWxyZWFkeSByZW1vdmVkLlxyXG4gICAgICAgIGlmICghaXNCcm93c2VyIHx8ICF0aGlzLmNvbm5lY3RlZF8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgdGhpcy5vblRyYW5zaXRpb25FbmRfKTtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZWZyZXNoKTtcclxuICAgICAgICBpZiAodGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8pIHtcclxuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8uZGlzY29ubmVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tdXRhdGlvbkV2ZW50c0FkZGVkXykge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9kaWZpZWQnLCB0aGlzLnJlZnJlc2gpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm11dGF0aW9uc09ic2VydmVyXyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5tdXRhdGlvbkV2ZW50c0FkZGVkXyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGVkXyA9IGZhbHNlO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogXCJUcmFuc2l0aW9uZW5kXCIgZXZlbnQgaGFuZGxlci5cclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQHBhcmFtIHtUcmFuc2l0aW9uRXZlbnR9IGV2ZW50XHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS5vblRyYW5zaXRpb25FbmRfID0gZnVuY3Rpb24gKF9hKSB7XHJcbiAgICAgICAgdmFyIF9iID0gX2EucHJvcGVydHlOYW1lLCBwcm9wZXJ0eU5hbWUgPSBfYiA9PT0gdm9pZCAwID8gJycgOiBfYjtcclxuICAgICAgICAvLyBEZXRlY3Qgd2hldGhlciB0cmFuc2l0aW9uIG1heSBhZmZlY3QgZGltZW5zaW9ucyBvZiBhbiBlbGVtZW50LlxyXG4gICAgICAgIHZhciBpc1JlZmxvd1Byb3BlcnR5ID0gdHJhbnNpdGlvbktleXMuc29tZShmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIX5wcm9wZXJ0eU5hbWUuaW5kZXhPZihrZXkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChpc1JlZmxvd1Byb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgaW5zdGFuY2Ugb2YgdGhlIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7UmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbmNlXykge1xyXG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlXyA9IG5ldyBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VfO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogSG9sZHMgcmVmZXJlbmNlIHRvIHRoZSBjb250cm9sbGVyJ3MgaW5zdGFuY2UuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGUge1Jlc2l6ZU9ic2VydmVyQ29udHJvbGxlcn1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLmluc3RhbmNlXyA9IG51bGw7XHJcbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyO1xyXG59KCkpO1xuXG4vKipcclxuICogRGVmaW5lcyBub24td3JpdGFibGUvZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSBwcm92aWRlZCB0YXJnZXQgb2JqZWN0LlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0IC0gT2JqZWN0IGZvciB3aGljaCB0byBkZWZpbmUgcHJvcGVydGllcy5cclxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gUHJvcGVydGllcyB0byBiZSBkZWZpbmVkLlxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUYXJnZXQgb2JqZWN0LlxyXG4gKi9cclxudmFyIGRlZmluZUNvbmZpZ3VyYWJsZSA9IChmdW5jdGlvbiAodGFyZ2V0LCBwcm9wcykge1xyXG4gICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IE9iamVjdC5rZXlzKHByb3BzKTsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICB2YXIga2V5ID0gX2FbX2ldO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xyXG4gICAgICAgICAgICB2YWx1ZTogcHJvcHNba2V5XSxcclxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGFyZ2V0O1xyXG59KTtcblxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGdsb2JhbCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHByb3ZpZGVkIGVsZW1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB0YXJnZXRcclxuICogQHJldHVybnMge09iamVjdH1cclxuICovXHJcbnZhciBnZXRXaW5kb3dPZiA9IChmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgICAvLyBBc3N1bWUgdGhhdCB0aGUgZWxlbWVudCBpcyBhbiBpbnN0YW5jZSBvZiBOb2RlLCB3aGljaCBtZWFucyB0aGF0IGl0XHJcbiAgICAvLyBoYXMgdGhlIFwib3duZXJEb2N1bWVudFwiIHByb3BlcnR5IGZyb20gd2hpY2ggd2UgY2FuIHJldHJpZXZlIGFcclxuICAgIC8vIGNvcnJlc3BvbmRpbmcgZ2xvYmFsIG9iamVjdC5cclxuICAgIHZhciBvd25lckdsb2JhbCA9IHRhcmdldCAmJiB0YXJnZXQub3duZXJEb2N1bWVudCAmJiB0YXJnZXQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcclxuICAgIC8vIFJldHVybiB0aGUgbG9jYWwgZ2xvYmFsIG9iamVjdCBpZiBpdCdzIG5vdCBwb3NzaWJsZSBleHRyYWN0IG9uZSBmcm9tXHJcbiAgICAvLyBwcm92aWRlZCBlbGVtZW50LlxyXG4gICAgcmV0dXJuIG93bmVyR2xvYmFsIHx8IGdsb2JhbCQxO1xyXG59KTtcblxuLy8gUGxhY2Vob2xkZXIgb2YgYW4gZW1wdHkgY29udGVudCByZWN0YW5nbGUuXHJcbnZhciBlbXB0eVJlY3QgPSBjcmVhdGVSZWN0SW5pdCgwLCAwLCAwLCAwKTtcclxuLyoqXHJcbiAqIENvbnZlcnRzIHByb3ZpZGVkIHN0cmluZyB0byBhIG51bWJlci5cclxuICpcclxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB2YWx1ZVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gKi9cclxuZnVuY3Rpb24gdG9GbG9hdCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpIHx8IDA7XHJcbn1cclxuLyoqXHJcbiAqIEV4dHJhY3RzIGJvcmRlcnMgc2l6ZSBmcm9tIHByb3ZpZGVkIHN0eWxlcy5cclxuICpcclxuICogQHBhcmFtIHtDU1NTdHlsZURlY2xhcmF0aW9ufSBzdHlsZXNcclxuICogQHBhcmFtIHsuLi5zdHJpbmd9IHBvc2l0aW9ucyAtIEJvcmRlcnMgcG9zaXRpb25zICh0b3AsIHJpZ2h0LCAuLi4pXHJcbiAqIEByZXR1cm5zIHtudW1iZXJ9XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRCb3JkZXJzU2l6ZShzdHlsZXMpIHtcclxuICAgIHZhciBwb3NpdGlvbnMgPSBbXTtcclxuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgcG9zaXRpb25zW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBvc2l0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKHNpemUsIHBvc2l0aW9uKSB7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gc3R5bGVzWydib3JkZXItJyArIHBvc2l0aW9uICsgJy13aWR0aCddO1xyXG4gICAgICAgIHJldHVybiBzaXplICsgdG9GbG9hdCh2YWx1ZSk7XHJcbiAgICB9LCAwKTtcclxufVxyXG4vKipcclxuICogRXh0cmFjdHMgcGFkZGluZ3Mgc2l6ZXMgZnJvbSBwcm92aWRlZCBzdHlsZXMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Q1NTU3R5bGVEZWNsYXJhdGlvbn0gc3R5bGVzXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IFBhZGRpbmdzIGJveC5cclxuICovXHJcbmZ1bmN0aW9uIGdldFBhZGRpbmdzKHN0eWxlcykge1xyXG4gICAgdmFyIHBvc2l0aW9ucyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XHJcbiAgICB2YXIgcGFkZGluZ3MgPSB7fTtcclxuICAgIGZvciAodmFyIF9pID0gMCwgcG9zaXRpb25zXzEgPSBwb3NpdGlvbnM7IF9pIDwgcG9zaXRpb25zXzEubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gcG9zaXRpb25zXzFbX2ldO1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlc1sncGFkZGluZy0nICsgcG9zaXRpb25dO1xyXG4gICAgICAgIHBhZGRpbmdzW3Bvc2l0aW9uXSA9IHRvRmxvYXQodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhZGRpbmdzO1xyXG59XHJcbi8qKlxyXG4gKiBDYWxjdWxhdGVzIGNvbnRlbnQgcmVjdGFuZ2xlIG9mIHByb3ZpZGVkIFNWRyBlbGVtZW50LlxyXG4gKlxyXG4gKiBAcGFyYW0ge1NWR0dyYXBoaWNzRWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCBjb250ZW50IHJlY3RhbmdsZSBvZiB3aGljaCBuZWVkc1xyXG4gKiAgICAgIHRvIGJlIGNhbGN1bGF0ZWQuXHJcbiAqIEByZXR1cm5zIHtET01SZWN0SW5pdH1cclxuICovXHJcbmZ1bmN0aW9uIGdldFNWR0NvbnRlbnRSZWN0KHRhcmdldCkge1xyXG4gICAgdmFyIGJib3ggPSB0YXJnZXQuZ2V0QkJveCgpO1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlY3RJbml0KDAsIDAsIGJib3gud2lkdGgsIGJib3guaGVpZ2h0KTtcclxufVxyXG4vKipcclxuICogQ2FsY3VsYXRlcyBjb250ZW50IHJlY3RhbmdsZSBvZiBwcm92aWRlZCBIVE1MRWxlbWVudC5cclxuICpcclxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCBmb3Igd2hpY2ggdG8gY2FsY3VsYXRlIHRoZSBjb250ZW50IHJlY3RhbmdsZS5cclxuICogQHJldHVybnMge0RPTVJlY3RJbml0fVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0SFRNTEVsZW1lbnRDb250ZW50UmVjdCh0YXJnZXQpIHtcclxuICAgIC8vIENsaWVudCB3aWR0aCAmIGhlaWdodCBwcm9wZXJ0aWVzIGNhbid0IGJlXHJcbiAgICAvLyB1c2VkIGV4Y2x1c2l2ZWx5IGFzIHRoZXkgcHJvdmlkZSByb3VuZGVkIHZhbHVlcy5cclxuICAgIHZhciBjbGllbnRXaWR0aCA9IHRhcmdldC5jbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0ID0gdGFyZ2V0LmNsaWVudEhlaWdodDtcclxuICAgIC8vIEJ5IHRoaXMgY29uZGl0aW9uIHdlIGNhbiBjYXRjaCBhbGwgbm9uLXJlcGxhY2VkIGlubGluZSwgaGlkZGVuIGFuZFxyXG4gICAgLy8gZGV0YWNoZWQgZWxlbWVudHMuIFRob3VnaCBlbGVtZW50cyB3aXRoIHdpZHRoICYgaGVpZ2h0IHByb3BlcnRpZXMgbGVzc1xyXG4gICAgLy8gdGhhbiAwLjUgd2lsbCBiZSBkaXNjYXJkZWQgYXMgd2VsbC5cclxuICAgIC8vXHJcbiAgICAvLyBXaXRob3V0IGl0IHdlIHdvdWxkIG5lZWQgdG8gaW1wbGVtZW50IHNlcGFyYXRlIG1ldGhvZHMgZm9yIGVhY2ggb2ZcclxuICAgIC8vIHRob3NlIGNhc2VzIGFuZCBpdCdzIG5vdCBwb3NzaWJsZSB0byBwZXJmb3JtIGEgcHJlY2lzZSBhbmQgcGVyZm9ybWFuY2VcclxuICAgIC8vIGVmZmVjdGl2ZSB0ZXN0IGZvciBoaWRkZW4gZWxlbWVudHMuIEUuZy4gZXZlbiBqUXVlcnkncyAnOnZpc2libGUnIGZpbHRlclxyXG4gICAgLy8gZ2l2ZXMgd3JvbmcgcmVzdWx0cyBmb3IgZWxlbWVudHMgd2l0aCB3aWR0aCAmIGhlaWdodCBsZXNzIHRoYW4gMC41LlxyXG4gICAgaWYgKCFjbGllbnRXaWR0aCAmJiAhY2xpZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgcmV0dXJuIGVtcHR5UmVjdDtcclxuICAgIH1cclxuICAgIHZhciBzdHlsZXMgPSBnZXRXaW5kb3dPZih0YXJnZXQpLmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KTtcclxuICAgIHZhciBwYWRkaW5ncyA9IGdldFBhZGRpbmdzKHN0eWxlcyk7XHJcbiAgICB2YXIgaG9yaXpQYWQgPSBwYWRkaW5ncy5sZWZ0ICsgcGFkZGluZ3MucmlnaHQ7XHJcbiAgICB2YXIgdmVydFBhZCA9IHBhZGRpbmdzLnRvcCArIHBhZGRpbmdzLmJvdHRvbTtcclxuICAgIC8vIENvbXB1dGVkIHN0eWxlcyBvZiB3aWR0aCAmIGhlaWdodCBhcmUgYmVpbmcgdXNlZCBiZWNhdXNlIHRoZXkgYXJlIHRoZVxyXG4gICAgLy8gb25seSBkaW1lbnNpb25zIGF2YWlsYWJsZSB0byBKUyB0aGF0IGNvbnRhaW4gbm9uLXJvdW5kZWQgdmFsdWVzLiBJdCBjb3VsZFxyXG4gICAgLy8gYmUgcG9zc2libGUgdG8gdXRpbGl6ZSB0aGUgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGlmIG9ubHkgaXQncyBkYXRhIHdhc24ndFxyXG4gICAgLy8gYWZmZWN0ZWQgYnkgQ1NTIHRyYW5zZm9ybWF0aW9ucyBsZXQgYWxvbmUgcGFkZGluZ3MsIGJvcmRlcnMgYW5kIHNjcm9sbCBiYXJzLlxyXG4gICAgdmFyIHdpZHRoID0gdG9GbG9hdChzdHlsZXMud2lkdGgpLCBoZWlnaHQgPSB0b0Zsb2F0KHN0eWxlcy5oZWlnaHQpO1xyXG4gICAgLy8gV2lkdGggJiBoZWlnaHQgaW5jbHVkZSBwYWRkaW5ncyBhbmQgYm9yZGVycyB3aGVuIHRoZSAnYm9yZGVyLWJveCcgYm94XHJcbiAgICAvLyBtb2RlbCBpcyBhcHBsaWVkIChleGNlcHQgZm9yIElFKS5cclxuICAgIGlmIChzdHlsZXMuYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcclxuICAgICAgICAvLyBGb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgcmVxdWlyZWQgdG8gaGFuZGxlIEludGVybmV0IEV4cGxvcmVyIHdoaWNoXHJcbiAgICAgICAgLy8gZG9lc24ndCBpbmNsdWRlIHBhZGRpbmdzIGFuZCBib3JkZXJzIHRvIGNvbXB1dGVkIENTUyBkaW1lbnNpb25zLlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gV2UgY2FuIHNheSB0aGF0IGlmIENTUyBkaW1lbnNpb25zICsgcGFkZGluZ3MgYXJlIGVxdWFsIHRvIHRoZSBcImNsaWVudFwiXHJcbiAgICAgICAgLy8gcHJvcGVydGllcyB0aGVuIGl0J3MgZWl0aGVyIElFLCBhbmQgdGh1cyB3ZSBkb24ndCBuZWVkIHRvIHN1YnRyYWN0XHJcbiAgICAgICAgLy8gYW55dGhpbmcsIG9yIGFuIGVsZW1lbnQgbWVyZWx5IGRvZXNuJ3QgaGF2ZSBwYWRkaW5ncy9ib3JkZXJzIHN0eWxlcy5cclxuICAgICAgICBpZiAoTWF0aC5yb3VuZCh3aWR0aCArIGhvcml6UGFkKSAhPT0gY2xpZW50V2lkdGgpIHtcclxuICAgICAgICAgICAgd2lkdGggLT0gZ2V0Qm9yZGVyc1NpemUoc3R5bGVzLCAnbGVmdCcsICdyaWdodCcpICsgaG9yaXpQYWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChNYXRoLnJvdW5kKGhlaWdodCArIHZlcnRQYWQpICE9PSBjbGllbnRIZWlnaHQpIHtcclxuICAgICAgICAgICAgaGVpZ2h0IC09IGdldEJvcmRlcnNTaXplKHN0eWxlcywgJ3RvcCcsICdib3R0b20nKSArIHZlcnRQYWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gRm9sbG93aW5nIHN0ZXBzIGNhbid0IGJlIGFwcGxpZWQgdG8gdGhlIGRvY3VtZW50J3Mgcm9vdCBlbGVtZW50IGFzIGl0c1xyXG4gICAgLy8gY2xpZW50W1dpZHRoL0hlaWdodF0gcHJvcGVydGllcyByZXByZXNlbnQgdmlld3BvcnQgYXJlYSBvZiB0aGUgd2luZG93LlxyXG4gICAgLy8gQmVzaWRlcywgaXQncyBhcyB3ZWxsIG5vdCBuZWNlc3NhcnkgYXMgdGhlIDxodG1sPiBpdHNlbGYgbmVpdGhlciBoYXNcclxuICAgIC8vIHJlbmRlcmVkIHNjcm9sbCBiYXJzIG5vciBpdCBjYW4gYmUgY2xpcHBlZC5cclxuICAgIGlmICghaXNEb2N1bWVudEVsZW1lbnQodGFyZ2V0KSkge1xyXG4gICAgICAgIC8vIEluIHNvbWUgYnJvd3NlcnMgKG9ubHkgaW4gRmlyZWZveCwgYWN0dWFsbHkpIENTUyB3aWR0aCAmIGhlaWdodFxyXG4gICAgICAgIC8vIGluY2x1ZGUgc2Nyb2xsIGJhcnMgc2l6ZSB3aGljaCBjYW4gYmUgcmVtb3ZlZCBhdCB0aGlzIHN0ZXAgYXMgc2Nyb2xsXHJcbiAgICAgICAgLy8gYmFycyBhcmUgdGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHJvdW5kZWQgZGltZW5zaW9ucyArIHBhZGRpbmdzXHJcbiAgICAgICAgLy8gYW5kIFwiY2xpZW50XCIgcHJvcGVydGllcywgdGhvdWdoIHRoYXQgaXMgbm90IGFsd2F5cyB0cnVlIGluIENocm9tZS5cclxuICAgICAgICB2YXIgdmVydFNjcm9sbGJhciA9IE1hdGgucm91bmQod2lkdGggKyBob3JpelBhZCkgLSBjbGllbnRXaWR0aDtcclxuICAgICAgICB2YXIgaG9yaXpTY3JvbGxiYXIgPSBNYXRoLnJvdW5kKGhlaWdodCArIHZlcnRQYWQpIC0gY2xpZW50SGVpZ2h0O1xyXG4gICAgICAgIC8vIENocm9tZSBoYXMgYSByYXRoZXIgd2VpcmQgcm91bmRpbmcgb2YgXCJjbGllbnRcIiBwcm9wZXJ0aWVzLlxyXG4gICAgICAgIC8vIEUuZy4gZm9yIGFuIGVsZW1lbnQgd2l0aCBjb250ZW50IHdpZHRoIG9mIDMxNC4ycHggaXQgc29tZXRpbWVzIGdpdmVzXHJcbiAgICAgICAgLy8gdGhlIGNsaWVudCB3aWR0aCBvZiAzMTVweCBhbmQgZm9yIHRoZSB3aWR0aCBvZiAzMTQuN3B4IGl0IG1heSBnaXZlXHJcbiAgICAgICAgLy8gMzE0cHguIEFuZCBpdCBkb2Vzbid0IGhhcHBlbiBhbGwgdGhlIHRpbWUuIFNvIGp1c3QgaWdub3JlIHRoaXMgZGVsdGFcclxuICAgICAgICAvLyBhcyBhIG5vbi1yZWxldmFudC5cclxuICAgICAgICBpZiAoTWF0aC5hYnModmVydFNjcm9sbGJhcikgIT09IDEpIHtcclxuICAgICAgICAgICAgd2lkdGggLT0gdmVydFNjcm9sbGJhcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKE1hdGguYWJzKGhvcml6U2Nyb2xsYmFyKSAhPT0gMSkge1xyXG4gICAgICAgICAgICBoZWlnaHQgLT0gaG9yaXpTY3JvbGxiYXI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZVJlY3RJbml0KHBhZGRpbmdzLmxlZnQsIHBhZGRpbmdzLnRvcCwgd2lkdGgsIGhlaWdodCk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIHByb3ZpZGVkIGVsZW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNWR0dyYXBoaWNzRWxlbWVudC5cclxuICpcclxuICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IHRvIGJlIGNoZWNrZWQuXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxudmFyIGlzU1ZHR3JhcGhpY3NFbGVtZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8vIFNvbWUgYnJvd3NlcnMsIG5hbWVseSBJRSBhbmQgRWRnZSwgZG9uJ3QgaGF2ZSB0aGUgU1ZHR3JhcGhpY3NFbGVtZW50XHJcbiAgICAvLyBpbnRlcmZhY2UuXHJcbiAgICBpZiAodHlwZW9mIFNWR0dyYXBoaWNzRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCkgeyByZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgZ2V0V2luZG93T2YodGFyZ2V0KS5TVkdHcmFwaGljc0VsZW1lbnQ7IH07XHJcbiAgICB9XHJcbiAgICAvLyBJZiBpdCdzIHNvLCB0aGVuIGNoZWNrIHRoYXQgZWxlbWVudCBpcyBhdCBsZWFzdCBhbiBpbnN0YW5jZSBvZiB0aGVcclxuICAgIC8vIFNWR0VsZW1lbnQgYW5kIHRoYXQgaXQgaGFzIHRoZSBcImdldEJCb3hcIiBtZXRob2QuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtcGFyZW5zXHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCkgeyByZXR1cm4gKHRhcmdldCBpbnN0YW5jZW9mIGdldFdpbmRvd09mKHRhcmdldCkuU1ZHRWxlbWVudCAmJlxyXG4gICAgICAgIHR5cGVvZiB0YXJnZXQuZ2V0QkJveCA9PT0gJ2Z1bmN0aW9uJyk7IH07XHJcbn0pKCk7XHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBwcm92aWRlZCBlbGVtZW50IGlzIGEgZG9jdW1lbnQgZWxlbWVudCAoPGh0bWw+KS5cclxuICpcclxuICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IHRvIGJlIGNoZWNrZWQuXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxuZnVuY3Rpb24gaXNEb2N1bWVudEVsZW1lbnQodGFyZ2V0KSB7XHJcbiAgICByZXR1cm4gdGFyZ2V0ID09PSBnZXRXaW5kb3dPZih0YXJnZXQpLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxufVxyXG4vKipcclxuICogQ2FsY3VsYXRlcyBhbiBhcHByb3ByaWF0ZSBjb250ZW50IHJlY3RhbmdsZSBmb3IgcHJvdmlkZWQgaHRtbCBvciBzdmcgZWxlbWVudC5cclxuICpcclxuICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IGNvbnRlbnQgcmVjdGFuZ2xlIG9mIHdoaWNoIG5lZWRzIHRvIGJlIGNhbGN1bGF0ZWQuXHJcbiAqIEByZXR1cm5zIHtET01SZWN0SW5pdH1cclxuICovXHJcbmZ1bmN0aW9uIGdldENvbnRlbnRSZWN0KHRhcmdldCkge1xyXG4gICAgaWYgKCFpc0Jyb3dzZXIpIHtcclxuICAgICAgICByZXR1cm4gZW1wdHlSZWN0O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU1ZHR3JhcGhpY3NFbGVtZW50KHRhcmdldCkpIHtcclxuICAgICAgICByZXR1cm4gZ2V0U1ZHQ29udGVudFJlY3QodGFyZ2V0KTtcclxuICAgIH1cclxuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudENvbnRlbnRSZWN0KHRhcmdldCk7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZXMgcmVjdGFuZ2xlIHdpdGggYW4gaW50ZXJmYWNlIG9mIHRoZSBET01SZWN0UmVhZE9ubHkuXHJcbiAqIFNwZWM6IGh0dHBzOi8vZHJhZnRzLmZ4dGYub3JnL2dlb21ldHJ5LyNkb21yZWN0cmVhZG9ubHlcclxuICpcclxuICogQHBhcmFtIHtET01SZWN0SW5pdH0gcmVjdEluaXQgLSBPYmplY3Qgd2l0aCByZWN0YW5nbGUncyB4L3kgY29vcmRpbmF0ZXMgYW5kIGRpbWVuc2lvbnMuXHJcbiAqIEByZXR1cm5zIHtET01SZWN0UmVhZE9ubHl9XHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZWFkT25seVJlY3QoX2EpIHtcclxuICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnksIHdpZHRoID0gX2Eud2lkdGgsIGhlaWdodCA9IF9hLmhlaWdodDtcclxuICAgIC8vIElmIERPTVJlY3RSZWFkT25seSBpcyBhdmFpbGFibGUgdXNlIGl0IGFzIGEgcHJvdG90eXBlIGZvciB0aGUgcmVjdGFuZ2xlLlxyXG4gICAgdmFyIENvbnN0ciA9IHR5cGVvZiBET01SZWN0UmVhZE9ubHkgIT09ICd1bmRlZmluZWQnID8gRE9NUmVjdFJlYWRPbmx5IDogT2JqZWN0O1xyXG4gICAgdmFyIHJlY3QgPSBPYmplY3QuY3JlYXRlKENvbnN0ci5wcm90b3R5cGUpO1xyXG4gICAgLy8gUmVjdGFuZ2xlJ3MgcHJvcGVydGllcyBhcmUgbm90IHdyaXRhYmxlIGFuZCBub24tZW51bWVyYWJsZS5cclxuICAgIGRlZmluZUNvbmZpZ3VyYWJsZShyZWN0LCB7XHJcbiAgICAgICAgeDogeCwgeTogeSwgd2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodCxcclxuICAgICAgICB0b3A6IHksXHJcbiAgICAgICAgcmlnaHQ6IHggKyB3aWR0aCxcclxuICAgICAgICBib3R0b206IGhlaWdodCArIHksXHJcbiAgICAgICAgbGVmdDogeFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVjdDtcclxufVxyXG4vKipcclxuICogQ3JlYXRlcyBET01SZWN0SW5pdCBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGRpbWVuc2lvbnMgYW5kIHRoZSB4L3kgY29vcmRpbmF0ZXMuXHJcbiAqIFNwZWM6IGh0dHBzOi8vZHJhZnRzLmZ4dGYub3JnL2dlb21ldHJ5LyNkaWN0ZGVmLWRvbXJlY3Rpbml0XHJcbiAqXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gWCBjb29yZGluYXRlLlxyXG4gKiBAcGFyYW0ge251bWJlcn0geSAtIFkgY29vcmRpbmF0ZS5cclxuICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoIC0gUmVjdGFuZ2xlJ3Mgd2lkdGguXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgLSBSZWN0YW5nbGUncyBoZWlnaHQuXHJcbiAqIEByZXR1cm5zIHtET01SZWN0SW5pdH1cclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVJlY3RJbml0KHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcclxuICAgIHJldHVybiB7IHg6IHgsIHk6IHksIHdpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHQgfTtcclxufVxuXG4vKipcclxuICogQ2xhc3MgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgY29tcHV0YXRpb25zIG9mIHRoZSBjb250ZW50IHJlY3RhbmdsZSBvZlxyXG4gKiBwcm92aWRlZCBET00gZWxlbWVudCBhbmQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgaXQncyBjaGFuZ2VzLlxyXG4gKi9cclxudmFyIFJlc2l6ZU9ic2VydmF0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFJlc2l6ZU9ic2VydmF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCB0byBiZSBvYnNlcnZlZC5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gUmVzaXplT2JzZXJ2YXRpb24odGFyZ2V0KSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQnJvYWRjYXN0ZWQgd2lkdGggb2YgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0V2lkdGggPSAwO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEJyb2FkY2FzdGVkIGhlaWdodCBvZiBjb250ZW50IHJlY3RhbmdsZS5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5icm9hZGNhc3RIZWlnaHQgPSAwO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFJlZmVyZW5jZSB0byB0aGUgbGFzdCBvYnNlcnZlZCBjb250ZW50IHJlY3RhbmdsZS5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwcml2YXRlIHtET01SZWN0SW5pdH1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmNvbnRlbnRSZWN0XyA9IGNyZWF0ZVJlY3RJbml0KDAsIDAsIDAsIDApO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIGNvbnRlbnQgcmVjdGFuZ2xlIGFuZCB0ZWxscyB3aGV0aGVyIGl0J3Mgd2lkdGggb3IgaGVpZ2h0IHByb3BlcnRpZXNcclxuICAgICAqIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBicm9hZGNhc3QuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmF0aW9uLnByb3RvdHlwZS5pc0FjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcmVjdCA9IGdldENvbnRlbnRSZWN0KHRoaXMudGFyZ2V0KTtcclxuICAgICAgICB0aGlzLmNvbnRlbnRSZWN0XyA9IHJlY3Q7XHJcbiAgICAgICAgcmV0dXJuIChyZWN0LndpZHRoICE9PSB0aGlzLmJyb2FkY2FzdFdpZHRoIHx8XHJcbiAgICAgICAgICAgIHJlY3QuaGVpZ2h0ICE9PSB0aGlzLmJyb2FkY2FzdEhlaWdodCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzICdicm9hZGNhc3RXaWR0aCcgYW5kICdicm9hZGNhc3RIZWlnaHQnIHByb3BlcnRpZXMgd2l0aCBhIGRhdGFcclxuICAgICAqIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydGllcyBvZiB0aGUgbGFzdCBvYnNlcnZlZCBjb250ZW50IHJlY3RhbmdsZS5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7RE9NUmVjdEluaXR9IExhc3Qgb2JzZXJ2ZWQgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmF0aW9uLnByb3RvdHlwZS5icm9hZGNhc3RSZWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciByZWN0ID0gdGhpcy5jb250ZW50UmVjdF87XHJcbiAgICAgICAgdGhpcy5icm9hZGNhc3RXaWR0aCA9IHJlY3Qud2lkdGg7XHJcbiAgICAgICAgdGhpcy5icm9hZGNhc3RIZWlnaHQgPSByZWN0LmhlaWdodDtcclxuICAgICAgICByZXR1cm4gcmVjdDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2YXRpb247XHJcbn0oKSk7XG5cbnZhciBSZXNpemVPYnNlcnZlckVudHJ5ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFJlc2l6ZU9ic2VydmVyRW50cnkuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IHRoYXQgaXMgYmVpbmcgb2JzZXJ2ZWQuXHJcbiAgICAgKiBAcGFyYW0ge0RPTVJlY3RJbml0fSByZWN0SW5pdCAtIERhdGEgb2YgdGhlIGVsZW1lbnQncyBjb250ZW50IHJlY3RhbmdsZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gUmVzaXplT2JzZXJ2ZXJFbnRyeSh0YXJnZXQsIHJlY3RJbml0KSB7XHJcbiAgICAgICAgdmFyIGNvbnRlbnRSZWN0ID0gY3JlYXRlUmVhZE9ubHlSZWN0KHJlY3RJbml0KTtcclxuICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gZm9sbG93aW5nIHByb3BlcnRpZXMgYXJlIG5vdCB3cml0YWJsZVxyXG4gICAgICAgIC8vIGFuZCBhcmUgYWxzbyBub3QgZW51bWVyYWJsZSBpbiB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uLlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gUHJvcGVydHkgYWNjZXNzb3JzIGFyZSBub3QgYmVpbmcgdXNlZCBhcyB0aGV5J2QgcmVxdWlyZSB0byBkZWZpbmUgYVxyXG4gICAgICAgIC8vIHByaXZhdGUgV2Vha01hcCBzdG9yYWdlIHdoaWNoIG1heSBjYXVzZSBtZW1vcnkgbGVha3MgaW4gYnJvd3NlcnMgdGhhdFxyXG4gICAgICAgIC8vIGRvbid0IHN1cHBvcnQgdGhpcyB0eXBlIG9mIGNvbGxlY3Rpb25zLlxyXG4gICAgICAgIGRlZmluZUNvbmZpZ3VyYWJsZSh0aGlzLCB7IHRhcmdldDogdGFyZ2V0LCBjb250ZW50UmVjdDogY29udGVudFJlY3QgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2ZXJFbnRyeTtcclxufSgpKTtcblxudmFyIFJlc2l6ZU9ic2VydmVyU1BJID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFJlc2l6ZU9ic2VydmVyLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7UmVzaXplT2JzZXJ2ZXJDYWxsYmFja30gY2FsbGJhY2sgLSBDYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGludm9rZWRcclxuICAgICAqICAgICAgd2hlbiBvbmUgb2YgdGhlIG9ic2VydmVkIGVsZW1lbnRzIGNoYW5nZXMgaXQncyBjb250ZW50IGRpbWVuc2lvbnMuXHJcbiAgICAgKiBAcGFyYW0ge1Jlc2l6ZU9ic2VydmVyQ29udHJvbGxlcn0gY29udHJvbGxlciAtIENvbnRyb2xsZXIgaW5zdGFuY2Ugd2hpY2hcclxuICAgICAqICAgICAgaXMgcmVzcG9uc2libGUgZm9yIHRoZSB1cGRhdGVzIG9mIG9ic2VydmVyLlxyXG4gICAgICogQHBhcmFtIHtSZXNpemVPYnNlcnZlcn0gY2FsbGJhY2tDdHggLSBSZWZlcmVuY2UgdG8gdGhlIHB1YmxpY1xyXG4gICAgICogICAgICBSZXNpemVPYnNlcnZlciBpbnN0YW5jZSB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBjYWxsYmFjayBmdW5jdGlvbi5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gUmVzaXplT2JzZXJ2ZXJTUEkoY2FsbGJhY2ssIGNvbnRyb2xsZXIsIGNhbGxiYWNrQ3R4KSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQ29sbGVjdGlvbiBvZiByZXNpemUgb2JzZXJ2YXRpb25zIHRoYXQgaGF2ZSBkZXRlY3RlZCBjaGFuZ2VzIGluIGRpbWVuc2lvbnNcclxuICAgICAgICAgKiBvZiBlbGVtZW50cy5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwcml2YXRlIHtBcnJheTxSZXNpemVPYnNlcnZhdGlvbj59XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5hY3RpdmVPYnNlcnZhdGlvbnNfID0gW107XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogUmVnaXN0cnkgb2YgdGhlIFJlc2l6ZU9ic2VydmF0aW9uIGluc3RhbmNlcy5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwcml2YXRlIHtNYXA8RWxlbWVudCwgUmVzaXplT2JzZXJ2YXRpb24+fVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMub2JzZXJ2YXRpb25zXyA9IG5ldyBNYXBTaGltKCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgY2FsbGJhY2sgcHJvdmlkZWQgYXMgcGFyYW1ldGVyIDEgaXMgbm90IGEgZnVuY3Rpb24uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FsbGJhY2tfID0gY2FsbGJhY2s7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyXyA9IGNvbnRyb2xsZXI7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFja0N0eF8gPSBjYWxsYmFja0N0eDtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogU3RhcnRzIG9ic2VydmluZyBwcm92aWRlZCBlbGVtZW50LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCB0byBiZSBvYnNlcnZlZC5cclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUub2JzZXJ2ZSA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgMCBwcmVzZW50LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGN1cnJlbnQgZW52aXJvbm1lbnQgZG9lc24ndCBoYXZlIHRoZSBFbGVtZW50IGludGVyZmFjZS5cclxuICAgICAgICBpZiAodHlwZW9mIEVsZW1lbnQgPT09ICd1bmRlZmluZWQnIHx8ICEoRWxlbWVudCBpbnN0YW5jZW9mIE9iamVjdCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBnZXRXaW5kb3dPZih0YXJnZXQpLkVsZW1lbnQpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BhcmFtZXRlciAxIGlzIG5vdCBvZiB0eXBlIFwiRWxlbWVudFwiLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgb2JzZXJ2YXRpb25zID0gdGhpcy5vYnNlcnZhdGlvbnNfO1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgZWxlbWVudCBpcyBhbHJlYWR5IGJlaW5nIG9ic2VydmVkLlxyXG4gICAgICAgIGlmIChvYnNlcnZhdGlvbnMuaGFzKHRhcmdldCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvYnNlcnZhdGlvbnMuc2V0KHRhcmdldCwgbmV3IFJlc2l6ZU9ic2VydmF0aW9uKHRhcmdldCkpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbGxlcl8uYWRkT2JzZXJ2ZXIodGhpcyk7XHJcbiAgICAgICAgLy8gRm9yY2UgdGhlIHVwZGF0ZSBvZiBvYnNlcnZhdGlvbnMuXHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyXy5yZWZyZXNoKCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBTdG9wcyBvYnNlcnZpbmcgcHJvdmlkZWQgZWxlbWVudC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgdG8gc3RvcCBvYnNlcnZpbmcuXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLnVub2JzZXJ2ZSA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgMCBwcmVzZW50LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGN1cnJlbnQgZW52aXJvbm1lbnQgZG9lc24ndCBoYXZlIHRoZSBFbGVtZW50IGludGVyZmFjZS5cclxuICAgICAgICBpZiAodHlwZW9mIEVsZW1lbnQgPT09ICd1bmRlZmluZWQnIHx8ICEoRWxlbWVudCBpbnN0YW5jZW9mIE9iamVjdCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBnZXRXaW5kb3dPZih0YXJnZXQpLkVsZW1lbnQpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BhcmFtZXRlciAxIGlzIG5vdCBvZiB0eXBlIFwiRWxlbWVudFwiLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgb2JzZXJ2YXRpb25zID0gdGhpcy5vYnNlcnZhdGlvbnNfO1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgZWxlbWVudCBpcyBub3QgYmVpbmcgb2JzZXJ2ZWQuXHJcbiAgICAgICAgaWYgKCFvYnNlcnZhdGlvbnMuaGFzKHRhcmdldCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvYnNlcnZhdGlvbnMuZGVsZXRlKHRhcmdldCk7XHJcbiAgICAgICAgaWYgKCFvYnNlcnZhdGlvbnMuc2l6ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXJfLnJlbW92ZU9ic2VydmVyKHRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFN0b3BzIG9ic2VydmluZyBhbGwgZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyU1BJLnByb3RvdHlwZS5kaXNjb25uZWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcclxuICAgICAgICB0aGlzLm9ic2VydmF0aW9uc18uY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXJfLnJlbW92ZU9ic2VydmVyKHRoaXMpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ29sbGVjdHMgb2JzZXJ2YXRpb24gaW5zdGFuY2VzIHRoZSBhc3NvY2lhdGVkIGVsZW1lbnQgb2Ygd2hpY2ggaGFzIGNoYW5nZWRcclxuICAgICAqIGl0J3MgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyU1BJLnByb3RvdHlwZS5nYXRoZXJBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZhdGlvbnNfLmZvckVhY2goZnVuY3Rpb24gKG9ic2VydmF0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmIChvYnNlcnZhdGlvbi5pc0FjdGl2ZSgpKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5hY3RpdmVPYnNlcnZhdGlvbnNfLnB1c2gob2JzZXJ2YXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbnZva2VzIGluaXRpYWwgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aCBhIGxpc3Qgb2YgUmVzaXplT2JzZXJ2ZXJFbnRyeVxyXG4gICAgICogaW5zdGFuY2VzIGNvbGxlY3RlZCBmcm9tIGFjdGl2ZSByZXNpemUgb2JzZXJ2YXRpb25zLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUuYnJvYWRjYXN0QWN0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgb2JzZXJ2ZXIgZG9lc24ndCBoYXZlIGFjdGl2ZSBvYnNlcnZhdGlvbnMuXHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0FjdGl2ZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGN0eCA9IHRoaXMuY2FsbGJhY2tDdHhfO1xyXG4gICAgICAgIC8vIENyZWF0ZSBSZXNpemVPYnNlcnZlckVudHJ5IGluc3RhbmNlIGZvciBldmVyeSBhY3RpdmUgb2JzZXJ2YXRpb24uXHJcbiAgICAgICAgdmFyIGVudHJpZXMgPSB0aGlzLmFjdGl2ZU9ic2VydmF0aW9uc18ubWFwKGZ1bmN0aW9uIChvYnNlcnZhdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlc2l6ZU9ic2VydmVyRW50cnkob2JzZXJ2YXRpb24udGFyZ2V0LCBvYnNlcnZhdGlvbi5icm9hZGNhc3RSZWN0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY2FsbGJhY2tfLmNhbGwoY3R4LCBlbnRyaWVzLCBjdHgpO1xyXG4gICAgICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIENsZWFycyB0aGUgY29sbGVjdGlvbiBvZiBhY3RpdmUgb2JzZXJ2YXRpb25zLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUuY2xlYXJBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVPYnNlcnZhdGlvbnNfLnNwbGljZSgwKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIHdoZXRoZXIgb2JzZXJ2ZXIgaGFzIGFjdGl2ZSBvYnNlcnZhdGlvbnMuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyU1BJLnByb3RvdHlwZS5oYXNBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXy5sZW5ndGggPiAwO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBSZXNpemVPYnNlcnZlclNQSTtcclxufSgpKTtcblxuLy8gUmVnaXN0cnkgb2YgaW50ZXJuYWwgb2JzZXJ2ZXJzLiBJZiBXZWFrTWFwIGlzIG5vdCBhdmFpbGFibGUgdXNlIGN1cnJlbnQgc2hpbVxyXG4vLyBmb3IgdGhlIE1hcCBjb2xsZWN0aW9uIGFzIGl0IGhhcyBhbGwgcmVxdWlyZWQgbWV0aG9kcyBhbmQgYmVjYXVzZSBXZWFrTWFwXHJcbi8vIGNhbid0IGJlIGZ1bGx5IHBvbHlmaWxsZWQgYW55d2F5LlxyXG52YXIgb2JzZXJ2ZXJzID0gdHlwZW9mIFdlYWtNYXAgIT09ICd1bmRlZmluZWQnID8gbmV3IFdlYWtNYXAoKSA6IG5ldyBNYXBTaGltKCk7XHJcbi8qKlxyXG4gKiBSZXNpemVPYnNlcnZlciBBUEkuIEVuY2Fwc3VsYXRlcyB0aGUgUmVzaXplT2JzZXJ2ZXIgU1BJIGltcGxlbWVudGF0aW9uXHJcbiAqIGV4cG9zaW5nIG9ubHkgdGhvc2UgbWV0aG9kcyBhbmQgcHJvcGVydGllcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSBzcGVjLlxyXG4gKi9cclxudmFyIFJlc2l6ZU9ic2VydmVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFJlc2l6ZU9ic2VydmVyLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7UmVzaXplT2JzZXJ2ZXJDYWxsYmFja30gY2FsbGJhY2sgLSBDYWxsYmFjayB0aGF0IGlzIGludm9rZWQgd2hlblxyXG4gICAgICogICAgICBkaW1lbnNpb25zIG9mIHRoZSBvYnNlcnZlZCBlbGVtZW50cyBjaGFuZ2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmVyKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlc2l6ZU9ic2VydmVyKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSAwIHByZXNlbnQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBjb250cm9sbGVyID0gUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLmdldEluc3RhbmNlKCk7XHJcbiAgICAgICAgdmFyIG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyU1BJKGNhbGxiYWNrLCBjb250cm9sbGVyLCB0aGlzKTtcclxuICAgICAgICBvYnNlcnZlcnMuc2V0KHRoaXMsIG9ic2VydmVyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBSZXNpemVPYnNlcnZlcjtcclxufSgpKTtcclxuLy8gRXhwb3NlIHB1YmxpYyBtZXRob2RzIG9mIFJlc2l6ZU9ic2VydmVyLlxyXG5bXHJcbiAgICAnb2JzZXJ2ZScsXHJcbiAgICAndW5vYnNlcnZlJyxcclxuICAgICdkaXNjb25uZWN0J1xyXG5dLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xyXG4gICAgUmVzaXplT2JzZXJ2ZXIucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIHJldHVybiAoX2EgPSBvYnNlcnZlcnMuZ2V0KHRoaXMpKVttZXRob2RdLmFwcGx5KF9hLCBhcmd1bWVudHMpO1xyXG4gICAgfTtcclxufSk7XG5cbnZhciBpbmRleCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAvLyBFeHBvcnQgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gaWYgYXZhaWxhYmxlLlxyXG4gICAgaWYgKHR5cGVvZiBnbG9iYWwkMS5SZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICByZXR1cm4gZ2xvYmFsJDEuUmVzaXplT2JzZXJ2ZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2ZXI7XHJcbn0pKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGluZGV4O1xuIiwidmFyIGNhbWVsMmh5cGhlbiA9IHJlcXVpcmUoJ3N0cmluZy1jb252ZXJ0L2NhbWVsMmh5cGhlbicpO1xuXG52YXIgaXNEaW1lbnNpb24gPSBmdW5jdGlvbiAoZmVhdHVyZSkge1xuICB2YXIgcmUgPSAvW2hlaWdodHx3aWR0aF0kLztcbiAgcmV0dXJuIHJlLnRlc3QoZmVhdHVyZSk7XG59O1xuXG52YXIgb2JqMm1xID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgbXEgPSAnJztcbiAgdmFyIGZlYXR1cmVzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgZmVhdHVyZXMuZm9yRWFjaChmdW5jdGlvbiAoZmVhdHVyZSwgaW5kZXgpIHtcbiAgICB2YXIgdmFsdWUgPSBvYmpbZmVhdHVyZV07XG4gICAgZmVhdHVyZSA9IGNhbWVsMmh5cGhlbihmZWF0dXJlKTtcbiAgICAvLyBBZGQgcHggdG8gZGltZW5zaW9uIGZlYXR1cmVzXG4gICAgaWYgKGlzRGltZW5zaW9uKGZlYXR1cmUpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgKyAncHgnO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgIG1xICs9IGZlYXR1cmU7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgIG1xICs9ICdub3QgJyArIGZlYXR1cmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1xICs9ICcoJyArIGZlYXR1cmUgKyAnOiAnICsgdmFsdWUgKyAnKSc7XG4gICAgfVxuICAgIGlmIChpbmRleCA8IGZlYXR1cmVzLmxlbmd0aC0xKSB7XG4gICAgICBtcSArPSAnIGFuZCAnXG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG1xO1xufTtcblxudmFyIGpzb24ybXEgPSBmdW5jdGlvbiAocXVlcnkpIHtcbiAgdmFyIG1xID0gJyc7XG4gIGlmICh0eXBlb2YgcXVlcnkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG4gIC8vIEhhbmRsaW5nIGFycmF5IG9mIG1lZGlhIHF1ZXJpZXNcbiAgaWYgKHF1ZXJ5IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICBxdWVyeS5mb3JFYWNoKGZ1bmN0aW9uIChxLCBpbmRleCkge1xuICAgICAgbXEgKz0gb2JqMm1xKHEpO1xuICAgICAgaWYgKGluZGV4IDwgcXVlcnkubGVuZ3RoLTEpIHtcbiAgICAgICAgbXEgKz0gJywgJ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtcTtcbiAgfVxuICAvLyBIYW5kbGluZyBzaW5nbGUgbWVkaWEgcXVlcnlcbiAgcmV0dXJuIG9iajJtcShxdWVyeSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGpzb24ybXE7IiwidmFyIGNhbWVsMmh5cGhlbiA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0clxuICAgICAgICAgIC5yZXBsYWNlKC9bQS1aXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiAnLScgKyBtYXRjaC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNhbWVsMmh5cGhlbjsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgYWNjZXNzaWJpbGl0eTogdHJ1ZSxcbiAgYWRhcHRpdmVIZWlnaHQ6IGZhbHNlLFxuICBhZnRlckNoYW5nZTogbnVsbCxcbiAgYXBwZW5kRG90czogZnVuY3Rpb24gYXBwZW5kRG90cyhkb3RzKSB7XG4gICAgcmV0dXJuIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBkaXNwbGF5OiBcImJsb2NrXCJcbiAgICAgIH1cbiAgICB9LCBkb3RzKTtcbiAgfSxcbiAgYXJyb3dzOiB0cnVlLFxuICBhdXRvcGxheTogZmFsc2UsXG4gIGF1dG9wbGF5U3BlZWQ6IDMwMDAsXG4gIGJlZm9yZUNoYW5nZTogbnVsbCxcbiAgY2VudGVyTW9kZTogZmFsc2UsXG4gIGNlbnRlclBhZGRpbmc6IFwiNTBweFwiLFxuICBjbGFzc05hbWU6IFwiXCIsXG4gIGNzc0Vhc2U6IFwiZWFzZVwiLFxuICBjdXN0b21QYWdpbmc6IGZ1bmN0aW9uIGN1c3RvbVBhZ2luZyhpKSB7XG4gICAgcmV0dXJuIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgbnVsbCwgaSArIDEpO1xuICB9LFxuICBkb3RzOiBmYWxzZSxcbiAgZG90c0NsYXNzOiBcInNsaWNrLWRvdHNcIixcbiAgZHJhZ2dhYmxlOiB0cnVlLFxuICBlYXNpbmc6IFwibGluZWFyXCIsXG4gIGVkZ2VGcmljdGlvbjogMC4zNSxcbiAgZmFkZTogZmFsc2UsXG4gIGZvY3VzT25TZWxlY3Q6IGZhbHNlLFxuICBpbmZpbml0ZTogdHJ1ZSxcbiAgaW5pdGlhbFNsaWRlOiAwLFxuICBsYXp5TG9hZDogbnVsbCxcbiAgbmV4dEFycm93OiBudWxsLFxuICBvbkVkZ2U6IG51bGwsXG4gIG9uSW5pdDogbnVsbCxcbiAgb25MYXp5TG9hZEVycm9yOiBudWxsLFxuICBvblJlSW5pdDogbnVsbCxcbiAgcGF1c2VPbkRvdHNIb3ZlcjogZmFsc2UsXG4gIHBhdXNlT25Gb2N1czogZmFsc2UsXG4gIHBhdXNlT25Ib3ZlcjogdHJ1ZSxcbiAgcHJldkFycm93OiBudWxsLFxuICByZXNwb25zaXZlOiBudWxsLFxuICByb3dzOiAxLFxuICBydGw6IGZhbHNlLFxuICBzbGlkZTogXCJkaXZcIixcbiAgc2xpZGVzUGVyUm93OiAxLFxuICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgc2xpZGVzVG9TaG93OiAxLFxuICBzcGVlZDogNTAwLFxuICBzd2lwZTogdHJ1ZSxcbiAgc3dpcGVFdmVudDogbnVsbCxcbiAgc3dpcGVUb1NsaWRlOiBmYWxzZSxcbiAgdG91Y2hNb3ZlOiB0cnVlLFxuICB0b3VjaFRocmVzaG9sZDogNSxcbiAgdXNlQ1NTOiB0cnVlLFxuICB1c2VUcmFuc2Zvcm06IHRydWUsXG4gIHZhcmlhYmxlV2lkdGg6IGZhbHNlLFxuICB2ZXJ0aWNhbDogZmFsc2UsXG4gIHdhaXRGb3JBbmltYXRlOiB0cnVlXG59O1xudmFyIF9kZWZhdWx0ID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwidmFyIE1lZGlhUXVlcnlEaXNwYXRjaCA9IHJlcXVpcmUoJy4vTWVkaWFRdWVyeURpc3BhdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBNZWRpYVF1ZXJ5RGlzcGF0Y2goKTtcbiIsInZhciBNZWRpYVF1ZXJ5ID0gcmVxdWlyZSgnLi9NZWRpYVF1ZXJ5Jyk7XG52YXIgVXRpbCA9IHJlcXVpcmUoJy4vVXRpbCcpO1xudmFyIGVhY2ggPSBVdGlsLmVhY2g7XG52YXIgaXNGdW5jdGlvbiA9IFV0aWwuaXNGdW5jdGlvbjtcbnZhciBpc0FycmF5ID0gVXRpbC5pc0FycmF5O1xuXG4vKipcbiAqIEFsbG93cyBmb3IgcmVnaXN0cmF0aW9uIG9mIHF1ZXJ5IGhhbmRsZXJzLlxuICogTWFuYWdlcyB0aGUgcXVlcnkgaGFuZGxlcidzIHN0YXRlIGFuZCBpcyByZXNwb25zaWJsZSBmb3Igd2lyaW5nIHVwIGJyb3dzZXIgZXZlbnRzXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIE1lZGlhUXVlcnlEaXNwYXRjaCAoKSB7XG4gICAgaWYoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbWF0Y2hNZWRpYSBub3QgcHJlc2VudCwgbGVnYWN5IGJyb3dzZXJzIHJlcXVpcmUgYSBwb2x5ZmlsbCcpO1xuICAgIH1cblxuICAgIHRoaXMucXVlcmllcyA9IHt9O1xuICAgIHRoaXMuYnJvd3NlcklzSW5jYXBhYmxlID0gIXdpbmRvdy5tYXRjaE1lZGlhKCdvbmx5IGFsbCcpLm1hdGNoZXM7XG59XG5cbk1lZGlhUXVlcnlEaXNwYXRjaC5wcm90b3R5cGUgPSB7XG5cbiAgICBjb25zdHJ1Y3RvciA6IE1lZGlhUXVlcnlEaXNwYXRjaCxcblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIGhhbmRsZXIgZm9yIHRoZSBnaXZlbiBtZWRpYSBxdWVyeVxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHEgdGhlIG1lZGlhIHF1ZXJ5XG4gICAgICogQHBhcmFtIHtvYmplY3QgfHwgQXJyYXkgfHwgRnVuY3Rpb259IG9wdGlvbnMgZWl0aGVyIGEgc2luZ2xlIHF1ZXJ5IGhhbmRsZXIgb2JqZWN0LCBhIGZ1bmN0aW9uLCBvciBhbiBhcnJheSBvZiBxdWVyeSBoYW5kbGVyc1xuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMubWF0Y2ggZmlyZWQgd2hlbiBxdWVyeSBtYXRjaGVkXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gW29wdGlvbnMudW5tYXRjaF0gZmlyZWQgd2hlbiBhIHF1ZXJ5IGlzIG5vIGxvbmdlciBtYXRjaGVkXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gW29wdGlvbnMuc2V0dXBdIGZpcmVkIHdoZW4gaGFuZGxlciBmaXJzdCB0cmlnZ2VyZWRcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRlZmVyU2V0dXA9ZmFsc2VdIHdoZXRoZXIgc2V0dXAgc2hvdWxkIGJlIHJ1biBpbW1lZGlhdGVseSBvciBkZWZlcnJlZCB1bnRpbCBxdWVyeSBpcyBmaXJzdCBtYXRjaGVkXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbc2hvdWxkRGVncmFkZT1mYWxzZV0gd2hldGhlciB0aGlzIHBhcnRpY3VsYXIgbWVkaWEgcXVlcnkgc2hvdWxkIGFsd2F5cyBydW4gb24gaW5jYXBhYmxlIGJyb3dzZXJzXG4gICAgICovXG4gICAgcmVnaXN0ZXIgOiBmdW5jdGlvbihxLCBvcHRpb25zLCBzaG91bGREZWdyYWRlKSB7XG4gICAgICAgIHZhciBxdWVyaWVzICAgICAgICAgPSB0aGlzLnF1ZXJpZXMsXG4gICAgICAgICAgICBpc1VuY29uZGl0aW9uYWwgPSBzaG91bGREZWdyYWRlICYmIHRoaXMuYnJvd3NlcklzSW5jYXBhYmxlO1xuXG4gICAgICAgIGlmKCFxdWVyaWVzW3FdKSB7XG4gICAgICAgICAgICBxdWVyaWVzW3FdID0gbmV3IE1lZGlhUXVlcnkocSwgaXNVbmNvbmRpdGlvbmFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vbm9ybWFsaXNlIHRvIG9iamVjdCBpbiBhbiBhcnJheVxuICAgICAgICBpZihpc0Z1bmN0aW9uKG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0geyBtYXRjaCA6IG9wdGlvbnMgfTtcbiAgICAgICAgfVxuICAgICAgICBpZighaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IFtvcHRpb25zXTtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKG9wdGlvbnMsIGZ1bmN0aW9uKGhhbmRsZXIpIHtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlciA9IHsgbWF0Y2ggOiBoYW5kbGVyIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWVyaWVzW3FdLmFkZEhhbmRsZXIoaGFuZGxlcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiB1bnJlZ2lzdGVycyBhIHF1ZXJ5IGFuZCBhbGwgaXQncyBoYW5kbGVycywgb3IgYSBzcGVjaWZpYyBoYW5kbGVyIGZvciBhIHF1ZXJ5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcSB0aGUgbWVkaWEgcXVlcnkgdG8gdGFyZ2V0XG4gICAgICogQHBhcmFtIHtvYmplY3QgfHwgZnVuY3Rpb259IFtoYW5kbGVyXSBzcGVjaWZpYyBoYW5kbGVyIHRvIHVucmVnaXN0ZXJcbiAgICAgKi9cbiAgICB1bnJlZ2lzdGVyIDogZnVuY3Rpb24ocSwgaGFuZGxlcikge1xuICAgICAgICB2YXIgcXVlcnkgPSB0aGlzLnF1ZXJpZXNbcV07XG5cbiAgICAgICAgaWYocXVlcnkpIHtcbiAgICAgICAgICAgIGlmKGhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICBxdWVyeS5yZW1vdmVIYW5kbGVyKGhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcXVlcnkuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5xdWVyaWVzW3FdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBNZWRpYVF1ZXJ5RGlzcGF0Y2g7XG4iLCJ2YXIgUXVlcnlIYW5kbGVyID0gcmVxdWlyZSgnLi9RdWVyeUhhbmRsZXInKTtcbnZhciBlYWNoID0gcmVxdWlyZSgnLi9VdGlsJykuZWFjaDtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIG1lZGlhIHF1ZXJ5LCBtYW5hZ2VzIGl0J3Mgc3RhdGUgYW5kIHJlZ2lzdGVyZWQgaGFuZGxlcnMgZm9yIHRoaXMgcXVlcnlcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeSB0aGUgbWVkaWEgcXVlcnkgc3RyaW5nXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1VuY29uZGl0aW9uYWw9ZmFsc2VdIHdoZXRoZXIgdGhlIG1lZGlhIHF1ZXJ5IHNob3VsZCBydW4gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBjb25kaXRpb25zIGFyZSBtZXQuIFByaW1hcmlseSBmb3IgaGVscGluZyBvbGRlciBicm93c2VycyBkZWFsIHdpdGggbW9iaWxlLWZpcnN0IGRlc2lnblxuICovXG5mdW5jdGlvbiBNZWRpYVF1ZXJ5KHF1ZXJ5LCBpc1VuY29uZGl0aW9uYWwpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XG4gICAgdGhpcy5pc1VuY29uZGl0aW9uYWwgPSBpc1VuY29uZGl0aW9uYWw7XG4gICAgdGhpcy5oYW5kbGVycyA9IFtdO1xuICAgIHRoaXMubXFsID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubGlzdGVuZXIgPSBmdW5jdGlvbihtcWwpIHtcbiAgICAgICAgLy8gQ2hyb21lIHBhc3NlcyBhbiBNZWRpYVF1ZXJ5TGlzdEV2ZW50IG9iamVjdCwgd2hpbGUgb3RoZXIgYnJvd3NlcnMgcGFzcyBNZWRpYVF1ZXJ5TGlzdCBkaXJlY3RseVxuICAgICAgICBzZWxmLm1xbCA9IG1xbC5jdXJyZW50VGFyZ2V0IHx8IG1xbDtcbiAgICAgICAgc2VsZi5hc3Nlc3MoKTtcbiAgICB9O1xuICAgIHRoaXMubXFsLmFkZExpc3RlbmVyKHRoaXMubGlzdGVuZXIpO1xufVxuXG5NZWRpYVF1ZXJ5LnByb3RvdHlwZSA9IHtcblxuICAgIGNvbnN0dWN0b3IgOiBNZWRpYVF1ZXJ5LFxuXG4gICAgLyoqXG4gICAgICogYWRkIGEgaGFuZGxlciBmb3IgdGhpcyBxdWVyeSwgdHJpZ2dlcmluZyBpZiBhbHJlYWR5IGFjdGl2ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGhhbmRsZXJcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBoYW5kbGVyLm1hdGNoIGNhbGxiYWNrIGZvciB3aGVuIHF1ZXJ5IGlzIGFjdGl2YXRlZFxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtoYW5kbGVyLnVubWF0Y2hdIGNhbGxiYWNrIGZvciB3aGVuIHF1ZXJ5IGlzIGRlYWN0aXZhdGVkXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2hhbmRsZXIuc2V0dXBdIGNhbGxiYWNrIGZvciBpbW1lZGlhdGUgZXhlY3V0aW9uIHdoZW4gYSBxdWVyeSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWRcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtoYW5kbGVyLmRlZmVyU2V0dXA9ZmFsc2VdIHNob3VsZCB0aGUgc2V0dXAgY2FsbGJhY2sgYmUgZGVmZXJyZWQgdW50aWwgdGhlIGZpcnN0IHRpbWUgdGhlIGhhbmRsZXIgaXMgbWF0Y2hlZD9cbiAgICAgKi9cbiAgICBhZGRIYW5kbGVyIDogZnVuY3Rpb24oaGFuZGxlcikge1xuICAgICAgICB2YXIgcWggPSBuZXcgUXVlcnlIYW5kbGVyKGhhbmRsZXIpO1xuICAgICAgICB0aGlzLmhhbmRsZXJzLnB1c2gocWgpO1xuXG4gICAgICAgIHRoaXMubWF0Y2hlcygpICYmIHFoLm9uKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHJlbW92ZXMgdGhlIGdpdmVuIGhhbmRsZXIgZnJvbSB0aGUgY29sbGVjdGlvbiwgYW5kIGNhbGxzIGl0J3MgZGVzdHJveSBtZXRob2RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdCB8fCBmdW5jdGlvbn0gaGFuZGxlciB0aGUgaGFuZGxlciB0byByZW1vdmVcbiAgICAgKi9cbiAgICByZW1vdmVIYW5kbGVyIDogZnVuY3Rpb24oaGFuZGxlcikge1xuICAgICAgICB2YXIgaGFuZGxlcnMgPSB0aGlzLmhhbmRsZXJzO1xuICAgICAgICBlYWNoKGhhbmRsZXJzLCBmdW5jdGlvbihoLCBpKSB7XG4gICAgICAgICAgICBpZihoLmVxdWFscyhoYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgIGguZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhaGFuZGxlcnMuc3BsaWNlKGksMSk7IC8vcmVtb3ZlIGZyb20gYXJyYXkgYW5kIGV4aXQgZWFjaCBlYXJseVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG1lZGlhIHF1ZXJ5IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgbWF0Y2hcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgbWVkaWEgcXVlcnkgY2FuIGJlIGNvbnNpZGVyZWQgYSBtYXRjaCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICovXG4gICAgbWF0Y2hlcyA6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tcWwubWF0Y2hlcyB8fCB0aGlzLmlzVW5jb25kaXRpb25hbDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIGFsbCBoYW5kbGVycyBhbmQgdW5iaW5kcyBldmVudHNcbiAgICAgKi9cbiAgICBjbGVhciA6IGZ1bmN0aW9uKCkge1xuICAgICAgICBlYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uKGhhbmRsZXIpIHtcbiAgICAgICAgICAgIGhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tcWwucmVtb3ZlTGlzdGVuZXIodGhpcy5saXN0ZW5lcik7XG4gICAgICAgIHRoaXMuaGFuZGxlcnMubGVuZ3RoID0gMDsgLy9jbGVhciBhcnJheVxuICAgIH0sXG5cbiAgICAvKlxuICAgICAgICAqIEFzc2Vzc2VzIHRoZSBxdWVyeSwgdHVybmluZyBvbiBhbGwgaGFuZGxlcnMgaWYgaXQgbWF0Y2hlcywgdHVybmluZyB0aGVtIG9mZiBpZiBpdCBkb2Vzbid0IG1hdGNoXG4gICAgICAgICovXG4gICAgYXNzZXNzIDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhY3Rpb24gPSB0aGlzLm1hdGNoZXMoKSA/ICdvbicgOiAnb2ZmJztcblxuICAgICAgICBlYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uKGhhbmRsZXIpIHtcbiAgICAgICAgICAgIGhhbmRsZXJbYWN0aW9uXSgpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lZGlhUXVlcnk7XG4iLCIvKipcbiAqIERlbGVnYXRlIHRvIGhhbmRsZSBhIG1lZGlhIHF1ZXJ5IGJlaW5nIG1hdGNoZWQgYW5kIHVubWF0Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5tYXRjaCBjYWxsYmFjayBmb3Igd2hlbiB0aGUgbWVkaWEgcXVlcnkgaXMgbWF0Y2hlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW29wdGlvbnMudW5tYXRjaF0gY2FsbGJhY2sgZm9yIHdoZW4gdGhlIG1lZGlhIHF1ZXJ5IGlzIHVubWF0Y2hlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW29wdGlvbnMuc2V0dXBdIG9uZS10aW1lIGNhbGxiYWNrIHRyaWdnZXJlZCB0aGUgZmlyc3QgdGltZSBhIHF1ZXJ5IGlzIG1hdGNoZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZGVmZXJTZXR1cD1mYWxzZV0gc2hvdWxkIHRoZSBzZXR1cCBjYWxsYmFjayBiZSBydW4gaW1tZWRpYXRlbHksIHJhdGhlciB0aGFuIGZpcnN0IHRpbWUgcXVlcnkgaXMgbWF0Y2hlZD9cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBRdWVyeUhhbmRsZXIob3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgIW9wdGlvbnMuZGVmZXJTZXR1cCAmJiB0aGlzLnNldHVwKCk7XG59XG5cblF1ZXJ5SGFuZGxlci5wcm90b3R5cGUgPSB7XG5cbiAgICBjb25zdHJ1Y3RvciA6IFF1ZXJ5SGFuZGxlcixcblxuICAgIC8qKlxuICAgICAqIGNvb3JkaW5hdGVzIHNldHVwIG9mIHRoZSBoYW5kbGVyXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBzZXR1cCA6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZih0aGlzLm9wdGlvbnMuc2V0dXApIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXR1cCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbGlzZWQgPSB0cnVlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBjb29yZGluYXRlcyBzZXR1cCBhbmQgdHJpZ2dlcmluZyBvZiB0aGUgaGFuZGxlclxuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgb24gOiBmdW5jdGlvbigpIHtcbiAgICAgICAgIXRoaXMuaW5pdGlhbGlzZWQgJiYgdGhpcy5zZXR1cCgpO1xuICAgICAgICB0aGlzLm9wdGlvbnMubWF0Y2ggJiYgdGhpcy5vcHRpb25zLm1hdGNoKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGNvb3JkaW5hdGVzIHRoZSB1bm1hdGNoIGV2ZW50IGZvciB0aGUgaGFuZGxlclxuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgb2ZmIDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy51bm1hdGNoICYmIHRoaXMub3B0aW9ucy51bm1hdGNoKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGNhbGxlZCB3aGVuIGEgaGFuZGxlciBpcyB0byBiZSBkZXN0cm95ZWQuXG4gICAgICogZGVsZWdhdGVzIHRvIHRoZSBkZXN0cm95IG9yIHVubWF0Y2ggY2FsbGJhY2tzLCBkZXBlbmRpbmcgb24gYXZhaWxhYmlsaXR5LlxuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgZGVzdHJveSA6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGVzdHJveSA/IHRoaXMub3B0aW9ucy5kZXN0cm95KCkgOiB0aGlzLm9mZigpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBkZXRlcm1pbmVzIGVxdWFsaXR5IGJ5IHJlZmVyZW5jZS5cbiAgICAgKiBpZiBvYmplY3QgaXMgc3VwcGxpZWQgY29tcGFyZSBvcHRpb25zLCBpZiBmdW5jdGlvbiwgY29tcGFyZSBtYXRjaCBjYWxsYmFja1xuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtvYmplY3QgfHwgZnVuY3Rpb259IFt0YXJnZXRdIHRoZSB0YXJnZXQgZm9yIGNvbXBhcmlzb25cbiAgICAgKi9cbiAgICBlcXVhbHMgOiBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucyA9PT0gdGFyZ2V0IHx8IHRoaXMub3B0aW9ucy5tYXRjaCA9PT0gdGFyZ2V0O1xuICAgIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBRdWVyeUhhbmRsZXI7XG4iLCJ2YXIgYmFzZVBpY2tCeSA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrQnknKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrO1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgd2hpbGUgKG5lc3RlZCAhPSBudWxsICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKGluZGV4ICE9IGxhc3RJbmRleCkge1xuICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICA6IChpc0luZGV4KHBhdGhbaW5kZXggKyAxXSkgPyBbXSA6IHt9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzaWduVmFsdWUobmVzdGVkLCBrZXksIG5ld1ZhbHVlKTtcbiAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXQ7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIiwidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0Zpbml0ZTtcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9hZlwiOiAxMjYsXG5cdFwiLi9hZi5qc1wiOiAxMjYsXG5cdFwiLi9hclwiOiAxMjcsXG5cdFwiLi9hci1kelwiOiAxMjgsXG5cdFwiLi9hci1kei5qc1wiOiAxMjgsXG5cdFwiLi9hci1rd1wiOiAxMjksXG5cdFwiLi9hci1rdy5qc1wiOiAxMjksXG5cdFwiLi9hci1seVwiOiAxMzAsXG5cdFwiLi9hci1seS5qc1wiOiAxMzAsXG5cdFwiLi9hci1tYVwiOiAxMzEsXG5cdFwiLi9hci1tYS5qc1wiOiAxMzEsXG5cdFwiLi9hci1zYVwiOiAxMzIsXG5cdFwiLi9hci1zYS5qc1wiOiAxMzIsXG5cdFwiLi9hci10blwiOiAxMzMsXG5cdFwiLi9hci10bi5qc1wiOiAxMzMsXG5cdFwiLi9hci5qc1wiOiAxMjcsXG5cdFwiLi9helwiOiAxMzQsXG5cdFwiLi9hei5qc1wiOiAxMzQsXG5cdFwiLi9iZVwiOiAxMzUsXG5cdFwiLi9iZS5qc1wiOiAxMzUsXG5cdFwiLi9iZ1wiOiAxMzYsXG5cdFwiLi9iZy5qc1wiOiAxMzYsXG5cdFwiLi9ibVwiOiAxMzcsXG5cdFwiLi9ibS5qc1wiOiAxMzcsXG5cdFwiLi9iblwiOiAxMzgsXG5cdFwiLi9ibi5qc1wiOiAxMzgsXG5cdFwiLi9ib1wiOiAxMzksXG5cdFwiLi9iby5qc1wiOiAxMzksXG5cdFwiLi9iclwiOiAxNDAsXG5cdFwiLi9ici5qc1wiOiAxNDAsXG5cdFwiLi9ic1wiOiAxNDEsXG5cdFwiLi9icy5qc1wiOiAxNDEsXG5cdFwiLi9jYVwiOiAxNDIsXG5cdFwiLi9jYS5qc1wiOiAxNDIsXG5cdFwiLi9jc1wiOiAxNDMsXG5cdFwiLi9jcy5qc1wiOiAxNDMsXG5cdFwiLi9jdlwiOiAxNDQsXG5cdFwiLi9jdi5qc1wiOiAxNDQsXG5cdFwiLi9jeVwiOiAxNDUsXG5cdFwiLi9jeS5qc1wiOiAxNDUsXG5cdFwiLi9kYVwiOiAxNDYsXG5cdFwiLi9kYS5qc1wiOiAxNDYsXG5cdFwiLi9kZVwiOiAxNDcsXG5cdFwiLi9kZS1hdFwiOiAxNDgsXG5cdFwiLi9kZS1hdC5qc1wiOiAxNDgsXG5cdFwiLi9kZS1jaFwiOiAxNDksXG5cdFwiLi9kZS1jaC5qc1wiOiAxNDksXG5cdFwiLi9kZS5qc1wiOiAxNDcsXG5cdFwiLi9kdlwiOiAxNTAsXG5cdFwiLi9kdi5qc1wiOiAxNTAsXG5cdFwiLi9lbFwiOiAxNTEsXG5cdFwiLi9lbC5qc1wiOiAxNTEsXG5cdFwiLi9lbi1TR1wiOiAxNTIsXG5cdFwiLi9lbi1TRy5qc1wiOiAxNTIsXG5cdFwiLi9lbi1hdVwiOiAxNTMsXG5cdFwiLi9lbi1hdS5qc1wiOiAxNTMsXG5cdFwiLi9lbi1jYVwiOiAxNTQsXG5cdFwiLi9lbi1jYS5qc1wiOiAxNTQsXG5cdFwiLi9lbi1nYlwiOiAxNTUsXG5cdFwiLi9lbi1nYi5qc1wiOiAxNTUsXG5cdFwiLi9lbi1pZVwiOiAxNTYsXG5cdFwiLi9lbi1pZS5qc1wiOiAxNTYsXG5cdFwiLi9lbi1pbFwiOiAxNTcsXG5cdFwiLi9lbi1pbC5qc1wiOiAxNTcsXG5cdFwiLi9lbi1uelwiOiAxNTgsXG5cdFwiLi9lbi1uei5qc1wiOiAxNTgsXG5cdFwiLi9lb1wiOiAxNTksXG5cdFwiLi9lby5qc1wiOiAxNTksXG5cdFwiLi9lc1wiOiAxNjAsXG5cdFwiLi9lcy1kb1wiOiAxNjEsXG5cdFwiLi9lcy1kby5qc1wiOiAxNjEsXG5cdFwiLi9lcy11c1wiOiAxNjIsXG5cdFwiLi9lcy11cy5qc1wiOiAxNjIsXG5cdFwiLi9lcy5qc1wiOiAxNjAsXG5cdFwiLi9ldFwiOiAxNjMsXG5cdFwiLi9ldC5qc1wiOiAxNjMsXG5cdFwiLi9ldVwiOiAxNjQsXG5cdFwiLi9ldS5qc1wiOiAxNjQsXG5cdFwiLi9mYVwiOiAxNjUsXG5cdFwiLi9mYS5qc1wiOiAxNjUsXG5cdFwiLi9maVwiOiAxNjYsXG5cdFwiLi9maS5qc1wiOiAxNjYsXG5cdFwiLi9mb1wiOiAxNjcsXG5cdFwiLi9mby5qc1wiOiAxNjcsXG5cdFwiLi9mclwiOiAxNjgsXG5cdFwiLi9mci1jYVwiOiAxNjksXG5cdFwiLi9mci1jYS5qc1wiOiAxNjksXG5cdFwiLi9mci1jaFwiOiAxNzAsXG5cdFwiLi9mci1jaC5qc1wiOiAxNzAsXG5cdFwiLi9mci5qc1wiOiAxNjgsXG5cdFwiLi9meVwiOiAxNzEsXG5cdFwiLi9meS5qc1wiOiAxNzEsXG5cdFwiLi9nYVwiOiAxNzIsXG5cdFwiLi9nYS5qc1wiOiAxNzIsXG5cdFwiLi9nZFwiOiAxNzMsXG5cdFwiLi9nZC5qc1wiOiAxNzMsXG5cdFwiLi9nbFwiOiAxNzQsXG5cdFwiLi9nbC5qc1wiOiAxNzQsXG5cdFwiLi9nb20tbGF0blwiOiAxNzUsXG5cdFwiLi9nb20tbGF0bi5qc1wiOiAxNzUsXG5cdFwiLi9ndVwiOiAxNzYsXG5cdFwiLi9ndS5qc1wiOiAxNzYsXG5cdFwiLi9oZVwiOiAxNzcsXG5cdFwiLi9oZS5qc1wiOiAxNzcsXG5cdFwiLi9oaVwiOiAxNzgsXG5cdFwiLi9oaS5qc1wiOiAxNzgsXG5cdFwiLi9oclwiOiAxNzksXG5cdFwiLi9oci5qc1wiOiAxNzksXG5cdFwiLi9odVwiOiAxODAsXG5cdFwiLi9odS5qc1wiOiAxODAsXG5cdFwiLi9oeS1hbVwiOiAxODEsXG5cdFwiLi9oeS1hbS5qc1wiOiAxODEsXG5cdFwiLi9pZFwiOiAxODIsXG5cdFwiLi9pZC5qc1wiOiAxODIsXG5cdFwiLi9pc1wiOiAxODMsXG5cdFwiLi9pcy5qc1wiOiAxODMsXG5cdFwiLi9pdFwiOiAxODQsXG5cdFwiLi9pdC1jaFwiOiAxODUsXG5cdFwiLi9pdC1jaC5qc1wiOiAxODUsXG5cdFwiLi9pdC5qc1wiOiAxODQsXG5cdFwiLi9qYVwiOiAxODYsXG5cdFwiLi9qYS5qc1wiOiAxODYsXG5cdFwiLi9qdlwiOiAxODcsXG5cdFwiLi9qdi5qc1wiOiAxODcsXG5cdFwiLi9rYVwiOiAxODgsXG5cdFwiLi9rYS5qc1wiOiAxODgsXG5cdFwiLi9ra1wiOiAxODksXG5cdFwiLi9ray5qc1wiOiAxODksXG5cdFwiLi9rbVwiOiAxOTAsXG5cdFwiLi9rbS5qc1wiOiAxOTAsXG5cdFwiLi9rblwiOiAxOTEsXG5cdFwiLi9rbi5qc1wiOiAxOTEsXG5cdFwiLi9rb1wiOiAxOTIsXG5cdFwiLi9rby5qc1wiOiAxOTIsXG5cdFwiLi9rdVwiOiAxOTMsXG5cdFwiLi9rdS5qc1wiOiAxOTMsXG5cdFwiLi9reVwiOiAxOTQsXG5cdFwiLi9reS5qc1wiOiAxOTQsXG5cdFwiLi9sYlwiOiAxOTUsXG5cdFwiLi9sYi5qc1wiOiAxOTUsXG5cdFwiLi9sb1wiOiAxOTYsXG5cdFwiLi9sby5qc1wiOiAxOTYsXG5cdFwiLi9sdFwiOiAxOTcsXG5cdFwiLi9sdC5qc1wiOiAxOTcsXG5cdFwiLi9sdlwiOiAxOTgsXG5cdFwiLi9sdi5qc1wiOiAxOTgsXG5cdFwiLi9tZVwiOiAxOTksXG5cdFwiLi9tZS5qc1wiOiAxOTksXG5cdFwiLi9taVwiOiAyMDAsXG5cdFwiLi9taS5qc1wiOiAyMDAsXG5cdFwiLi9ta1wiOiAyMDEsXG5cdFwiLi9tay5qc1wiOiAyMDEsXG5cdFwiLi9tbFwiOiAyMDIsXG5cdFwiLi9tbC5qc1wiOiAyMDIsXG5cdFwiLi9tblwiOiAyMDMsXG5cdFwiLi9tbi5qc1wiOiAyMDMsXG5cdFwiLi9tclwiOiAyMDQsXG5cdFwiLi9tci5qc1wiOiAyMDQsXG5cdFwiLi9tc1wiOiAyMDUsXG5cdFwiLi9tcy1teVwiOiAyMDYsXG5cdFwiLi9tcy1teS5qc1wiOiAyMDYsXG5cdFwiLi9tcy5qc1wiOiAyMDUsXG5cdFwiLi9tdFwiOiAyMDcsXG5cdFwiLi9tdC5qc1wiOiAyMDcsXG5cdFwiLi9teVwiOiAyMDgsXG5cdFwiLi9teS5qc1wiOiAyMDgsXG5cdFwiLi9uYlwiOiAyMDksXG5cdFwiLi9uYi5qc1wiOiAyMDksXG5cdFwiLi9uZVwiOiAyMTAsXG5cdFwiLi9uZS5qc1wiOiAyMTAsXG5cdFwiLi9ubFwiOiAyMTEsXG5cdFwiLi9ubC1iZVwiOiAyMTIsXG5cdFwiLi9ubC1iZS5qc1wiOiAyMTIsXG5cdFwiLi9ubC5qc1wiOiAyMTEsXG5cdFwiLi9ublwiOiAyMTMsXG5cdFwiLi9ubi5qc1wiOiAyMTMsXG5cdFwiLi9wYS1pblwiOiAyMTQsXG5cdFwiLi9wYS1pbi5qc1wiOiAyMTQsXG5cdFwiLi9wbFwiOiAyMTUsXG5cdFwiLi9wbC5qc1wiOiAyMTUsXG5cdFwiLi9wdFwiOiAyMTYsXG5cdFwiLi9wdC1iclwiOiAyMTcsXG5cdFwiLi9wdC1ici5qc1wiOiAyMTcsXG5cdFwiLi9wdC5qc1wiOiAyMTYsXG5cdFwiLi9yb1wiOiAyMTgsXG5cdFwiLi9yby5qc1wiOiAyMTgsXG5cdFwiLi9ydVwiOiAyMTksXG5cdFwiLi9ydS5qc1wiOiAyMTksXG5cdFwiLi9zZFwiOiAyMjAsXG5cdFwiLi9zZC5qc1wiOiAyMjAsXG5cdFwiLi9zZVwiOiAyMjEsXG5cdFwiLi9zZS5qc1wiOiAyMjEsXG5cdFwiLi9zaVwiOiAyMjIsXG5cdFwiLi9zaS5qc1wiOiAyMjIsXG5cdFwiLi9za1wiOiAyMjMsXG5cdFwiLi9zay5qc1wiOiAyMjMsXG5cdFwiLi9zbFwiOiAyMjQsXG5cdFwiLi9zbC5qc1wiOiAyMjQsXG5cdFwiLi9zcVwiOiAyMjUsXG5cdFwiLi9zcS5qc1wiOiAyMjUsXG5cdFwiLi9zclwiOiAyMjYsXG5cdFwiLi9zci1jeXJsXCI6IDIyNyxcblx0XCIuL3NyLWN5cmwuanNcIjogMjI3LFxuXHRcIi4vc3IuanNcIjogMjI2LFxuXHRcIi4vc3NcIjogMjI4LFxuXHRcIi4vc3MuanNcIjogMjI4LFxuXHRcIi4vc3ZcIjogMjI5LFxuXHRcIi4vc3YuanNcIjogMjI5LFxuXHRcIi4vc3dcIjogMjMwLFxuXHRcIi4vc3cuanNcIjogMjMwLFxuXHRcIi4vdGFcIjogMjMxLFxuXHRcIi4vdGEuanNcIjogMjMxLFxuXHRcIi4vdGVcIjogMjMyLFxuXHRcIi4vdGUuanNcIjogMjMyLFxuXHRcIi4vdGV0XCI6IDIzMyxcblx0XCIuL3RldC5qc1wiOiAyMzMsXG5cdFwiLi90Z1wiOiAyMzQsXG5cdFwiLi90Zy5qc1wiOiAyMzQsXG5cdFwiLi90aFwiOiAyMzUsXG5cdFwiLi90aC5qc1wiOiAyMzUsXG5cdFwiLi90bC1waFwiOiAyMzYsXG5cdFwiLi90bC1waC5qc1wiOiAyMzYsXG5cdFwiLi90bGhcIjogMjM3LFxuXHRcIi4vdGxoLmpzXCI6IDIzNyxcblx0XCIuL3RyXCI6IDIzOCxcblx0XCIuL3RyLmpzXCI6IDIzOCxcblx0XCIuL3R6bFwiOiAyMzksXG5cdFwiLi90emwuanNcIjogMjM5LFxuXHRcIi4vdHptXCI6IDI0MCxcblx0XCIuL3R6bS1sYXRuXCI6IDI0MSxcblx0XCIuL3R6bS1sYXRuLmpzXCI6IDI0MSxcblx0XCIuL3R6bS5qc1wiOiAyNDAsXG5cdFwiLi91Zy1jblwiOiAyNDIsXG5cdFwiLi91Zy1jbi5qc1wiOiAyNDIsXG5cdFwiLi91a1wiOiAyNDMsXG5cdFwiLi91ay5qc1wiOiAyNDMsXG5cdFwiLi91clwiOiAyNDQsXG5cdFwiLi91ci5qc1wiOiAyNDQsXG5cdFwiLi91elwiOiAyNDUsXG5cdFwiLi91ei1sYXRuXCI6IDI0Nixcblx0XCIuL3V6LWxhdG4uanNcIjogMjQ2LFxuXHRcIi4vdXouanNcIjogMjQ1LFxuXHRcIi4vdmlcIjogMjQ3LFxuXHRcIi4vdmkuanNcIjogMjQ3LFxuXHRcIi4veC1wc2V1ZG9cIjogMjQ4LFxuXHRcIi4veC1wc2V1ZG8uanNcIjogMjQ4LFxuXHRcIi4veW9cIjogMjQ5LFxuXHRcIi4veW8uanNcIjogMjQ5LFxuXHRcIi4vemgtY25cIjogMjUwLFxuXHRcIi4vemgtY24uanNcIjogMjUwLFxuXHRcIi4vemgtaGtcIjogMjUxLFxuXHRcIi4vemgtaGsuanNcIjogMjUxLFxuXHRcIi4vemgtdHdcIjogMjUyLFxuXHRcIi4vemgtdHcuanNcIjogMjUyXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gMzkyOyIsIi8qIVxuICogTWFzb25yeSB2NC4yLjJcbiAqIENhc2NhZGluZyBncmlkIGxheW91dCBsaWJyYXJ5XG4gKiBodHRwczovL21hc29ucnkuZGVzYW5kcm8uY29tXG4gKiBNSVQgTGljZW5zZVxuICogYnkgRGF2aWQgRGVTYW5kcm9cbiAqL1xuXG4oIGZ1bmN0aW9uKCB3aW5kb3csIGZhY3RvcnkgKSB7XG4gIC8vIHVuaXZlcnNhbCBtb2R1bGUgZGVmaW5pdGlvblxuICAvKiBqc2hpbnQgc3RyaWN0OiBmYWxzZSAqLyAvKmdsb2JhbHMgZGVmaW5lLCBtb2R1bGUsIHJlcXVpcmUgKi9cbiAgaWYgKCB0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCApIHtcbiAgICAvLyBBTURcbiAgICBkZWZpbmUoIFtcbiAgICAgICAgJ291dGxheWVyL291dGxheWVyJyxcbiAgICAgICAgJ2dldC1zaXplL2dldC1zaXplJ1xuICAgICAgXSxcbiAgICAgIGZhY3RvcnkgKTtcbiAgfSBlbHNlIGlmICggdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cyApIHtcbiAgICAvLyBDb21tb25KU1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShcbiAgICAgIHJlcXVpcmUoJ291dGxheWVyJyksXG4gICAgICByZXF1aXJlKCdnZXQtc2l6ZScpXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBicm93c2VyIGdsb2JhbFxuICAgIHdpbmRvdy5NYXNvbnJ5ID0gZmFjdG9yeShcbiAgICAgIHdpbmRvdy5PdXRsYXllcixcbiAgICAgIHdpbmRvdy5nZXRTaXplXG4gICAgKTtcbiAgfVxuXG59KCB3aW5kb3csIGZ1bmN0aW9uIGZhY3RvcnkoIE91dGxheWVyLCBnZXRTaXplICkge1xuXG4ndXNlIHN0cmljdCc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG1hc29ucnlEZWZpbml0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbiAgLy8gY3JlYXRlIGFuIE91dGxheWVyIGxheW91dCBjbGFzc1xuICB2YXIgTWFzb25yeSA9IE91dGxheWVyLmNyZWF0ZSgnbWFzb25yeScpO1xuICAvLyBpc0ZpdFdpZHRoIC0+IGZpdFdpZHRoXG4gIE1hc29ucnkuY29tcGF0T3B0aW9ucy5maXRXaWR0aCA9ICdpc0ZpdFdpZHRoJztcblxuICB2YXIgcHJvdG8gPSBNYXNvbnJ5LnByb3RvdHlwZTtcblxuICBwcm90by5fcmVzZXRMYXlvdXQgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmdldFNpemUoKTtcbiAgICB0aGlzLl9nZXRNZWFzdXJlbWVudCggJ2NvbHVtbldpZHRoJywgJ291dGVyV2lkdGgnICk7XG4gICAgdGhpcy5fZ2V0TWVhc3VyZW1lbnQoICdndXR0ZXInLCAnb3V0ZXJXaWR0aCcgKTtcbiAgICB0aGlzLm1lYXN1cmVDb2x1bW5zKCk7XG5cbiAgICAvLyByZXNldCBjb2x1bW4gWVxuICAgIHRoaXMuY29sWXMgPSBbXTtcbiAgICBmb3IgKCB2YXIgaT0wOyBpIDwgdGhpcy5jb2xzOyBpKysgKSB7XG4gICAgICB0aGlzLmNvbFlzLnB1c2goIDAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm1heFkgPSAwO1xuICAgIHRoaXMuaG9yaXpvbnRhbENvbEluZGV4ID0gMDtcbiAgfTtcblxuICBwcm90by5tZWFzdXJlQ29sdW1ucyA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuZ2V0Q29udGFpbmVyV2lkdGgoKTtcbiAgICAvLyBpZiBjb2x1bW5XaWR0aCBpcyAwLCBkZWZhdWx0IHRvIG91dGVyV2lkdGggb2YgZmlyc3QgaXRlbVxuICAgIGlmICggIXRoaXMuY29sdW1uV2lkdGggKSB7XG4gICAgICB2YXIgZmlyc3RJdGVtID0gdGhpcy5pdGVtc1swXTtcbiAgICAgIHZhciBmaXJzdEl0ZW1FbGVtID0gZmlyc3RJdGVtICYmIGZpcnN0SXRlbS5lbGVtZW50O1xuICAgICAgLy8gY29sdW1uV2lkdGggZmFsbCBiYWNrIHRvIGl0ZW0gb2YgZmlyc3QgZWxlbWVudFxuICAgICAgdGhpcy5jb2x1bW5XaWR0aCA9IGZpcnN0SXRlbUVsZW0gJiYgZ2V0U2l6ZSggZmlyc3RJdGVtRWxlbSApLm91dGVyV2lkdGggfHxcbiAgICAgICAgLy8gaWYgZmlyc3QgZWxlbSBoYXMgbm8gd2lkdGgsIGRlZmF1bHQgdG8gc2l6ZSBvZiBjb250YWluZXJcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aDtcbiAgICB9XG5cbiAgICB2YXIgY29sdW1uV2lkdGggPSB0aGlzLmNvbHVtbldpZHRoICs9IHRoaXMuZ3V0dGVyO1xuXG4gICAgLy8gY2FsY3VsYXRlIGNvbHVtbnNcbiAgICB2YXIgY29udGFpbmVyV2lkdGggPSB0aGlzLmNvbnRhaW5lcldpZHRoICsgdGhpcy5ndXR0ZXI7XG4gICAgdmFyIGNvbHMgPSBjb250YWluZXJXaWR0aCAvIGNvbHVtbldpZHRoO1xuICAgIC8vIGZpeCByb3VuZGluZyBlcnJvcnMsIHR5cGljYWxseSB3aXRoIGd1dHRlcnNcbiAgICB2YXIgZXhjZXNzID0gY29sdW1uV2lkdGggLSBjb250YWluZXJXaWR0aCAlIGNvbHVtbldpZHRoO1xuICAgIC8vIGlmIG92ZXJzaG9vdCBpcyBsZXNzIHRoYW4gYSBwaXhlbCwgcm91bmQgdXAsIG90aGVyd2lzZSBmbG9vciBpdFxuICAgIHZhciBtYXRoTWV0aG9kID0gZXhjZXNzICYmIGV4Y2VzcyA8IDEgPyAncm91bmQnIDogJ2Zsb29yJztcbiAgICBjb2xzID0gTWF0aFsgbWF0aE1ldGhvZCBdKCBjb2xzICk7XG4gICAgdGhpcy5jb2xzID0gTWF0aC5tYXgoIGNvbHMsIDEgKTtcbiAgfTtcblxuICBwcm90by5nZXRDb250YWluZXJXaWR0aCA9IGZ1bmN0aW9uKCkge1xuICAgIC8vIGNvbnRhaW5lciBpcyBwYXJlbnQgaWYgZml0IHdpZHRoXG4gICAgdmFyIGlzRml0V2lkdGggPSB0aGlzLl9nZXRPcHRpb24oJ2ZpdFdpZHRoJyk7XG4gICAgdmFyIGNvbnRhaW5lciA9IGlzRml0V2lkdGggPyB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZSA6IHRoaXMuZWxlbWVudDtcbiAgICAvLyBjaGVjayB0aGF0IHRoaXMuc2l6ZSBhbmQgc2l6ZSBhcmUgdGhlcmVcbiAgICAvLyBJRTggdHJpZ2dlcnMgcmVzaXplIG9uIGJvZHkgc2l6ZSBjaGFuZ2UsIHNvIHRoZXkgbWlnaHQgbm90IGJlXG4gICAgdmFyIHNpemUgPSBnZXRTaXplKCBjb250YWluZXIgKTtcbiAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gc2l6ZSAmJiBzaXplLmlubmVyV2lkdGg7XG4gIH07XG5cbiAgcHJvdG8uX2dldEl0ZW1MYXlvdXRQb3NpdGlvbiA9IGZ1bmN0aW9uKCBpdGVtICkge1xuICAgIGl0ZW0uZ2V0U2l6ZSgpO1xuICAgIC8vIGhvdyBtYW55IGNvbHVtbnMgZG9lcyB0aGlzIGJyaWNrIHNwYW5cbiAgICB2YXIgcmVtYWluZGVyID0gaXRlbS5zaXplLm91dGVyV2lkdGggJSB0aGlzLmNvbHVtbldpZHRoO1xuICAgIHZhciBtYXRoTWV0aG9kID0gcmVtYWluZGVyICYmIHJlbWFpbmRlciA8IDEgPyAncm91bmQnIDogJ2NlaWwnO1xuICAgIC8vIHJvdW5kIGlmIG9mZiBieSAxIHBpeGVsLCBvdGhlcndpc2UgdXNlIGNlaWxcbiAgICB2YXIgY29sU3BhbiA9IE1hdGhbIG1hdGhNZXRob2QgXSggaXRlbS5zaXplLm91dGVyV2lkdGggLyB0aGlzLmNvbHVtbldpZHRoICk7XG4gICAgY29sU3BhbiA9IE1hdGgubWluKCBjb2xTcGFuLCB0aGlzLmNvbHMgKTtcbiAgICAvLyB1c2UgaG9yaXpvbnRhbCBvciB0b3AgY29sdW1uIHBvc2l0aW9uXG4gICAgdmFyIGNvbFBvc01ldGhvZCA9IHRoaXMub3B0aW9ucy5ob3Jpem9udGFsT3JkZXIgP1xuICAgICAgJ19nZXRIb3Jpem9udGFsQ29sUG9zaXRpb24nIDogJ19nZXRUb3BDb2xQb3NpdGlvbic7XG4gICAgdmFyIGNvbFBvc2l0aW9uID0gdGhpc1sgY29sUG9zTWV0aG9kIF0oIGNvbFNwYW4sIGl0ZW0gKTtcbiAgICAvLyBwb3NpdGlvbiB0aGUgYnJpY2tcbiAgICB2YXIgcG9zaXRpb24gPSB7XG4gICAgICB4OiB0aGlzLmNvbHVtbldpZHRoICogY29sUG9zaXRpb24uY29sLFxuICAgICAgeTogY29sUG9zaXRpb24ueVxuICAgIH07XG4gICAgLy8gYXBwbHkgc2V0SGVpZ2h0IHRvIG5lY2Vzc2FyeSBjb2x1bW5zXG4gICAgdmFyIHNldEhlaWdodCA9IGNvbFBvc2l0aW9uLnkgKyBpdGVtLnNpemUub3V0ZXJIZWlnaHQ7XG4gICAgdmFyIHNldE1heCA9IGNvbFNwYW4gKyBjb2xQb3NpdGlvbi5jb2w7XG4gICAgZm9yICggdmFyIGkgPSBjb2xQb3NpdGlvbi5jb2w7IGkgPCBzZXRNYXg7IGkrKyApIHtcbiAgICAgIHRoaXMuY29sWXNbaV0gPSBzZXRIZWlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9O1xuXG4gIHByb3RvLl9nZXRUb3BDb2xQb3NpdGlvbiA9IGZ1bmN0aW9uKCBjb2xTcGFuICkge1xuICAgIHZhciBjb2xHcm91cCA9IHRoaXMuX2dldFRvcENvbEdyb3VwKCBjb2xTcGFuICk7XG4gICAgLy8gZ2V0IHRoZSBtaW5pbXVtIFkgdmFsdWUgZnJvbSB0aGUgY29sdW1uc1xuICAgIHZhciBtaW5pbXVtWSA9IE1hdGgubWluLmFwcGx5KCBNYXRoLCBjb2xHcm91cCApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbDogY29sR3JvdXAuaW5kZXhPZiggbWluaW11bVkgKSxcbiAgICAgIHk6IG1pbmltdW1ZLFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBjb2xTcGFuIC0gbnVtYmVyIG9mIGNvbHVtbnMgdGhlIGVsZW1lbnQgc3BhbnNcbiAgICogQHJldHVybnMge0FycmF5fSBjb2xHcm91cFxuICAgKi9cbiAgcHJvdG8uX2dldFRvcENvbEdyb3VwID0gZnVuY3Rpb24oIGNvbFNwYW4gKSB7XG4gICAgaWYgKCBjb2xTcGFuIDwgMiApIHtcbiAgICAgIC8vIGlmIGJyaWNrIHNwYW5zIG9ubHkgb25lIGNvbHVtbiwgdXNlIGFsbCB0aGUgY29sdW1uIFlzXG4gICAgICByZXR1cm4gdGhpcy5jb2xZcztcbiAgICB9XG5cbiAgICB2YXIgY29sR3JvdXAgPSBbXTtcbiAgICAvLyBob3cgbWFueSBkaWZmZXJlbnQgcGxhY2VzIGNvdWxkIHRoaXMgYnJpY2sgZml0IGhvcml6b250YWxseVxuICAgIHZhciBncm91cENvdW50ID0gdGhpcy5jb2xzICsgMSAtIGNvbFNwYW47XG4gICAgLy8gZm9yIGVhY2ggZ3JvdXAgcG90ZW50aWFsIGhvcml6b250YWwgcG9zaXRpb25cbiAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBncm91cENvdW50OyBpKysgKSB7XG4gICAgICBjb2xHcm91cFtpXSA9IHRoaXMuX2dldENvbEdyb3VwWSggaSwgY29sU3BhbiApO1xuICAgIH1cbiAgICByZXR1cm4gY29sR3JvdXA7XG4gIH07XG5cbiAgcHJvdG8uX2dldENvbEdyb3VwWSA9IGZ1bmN0aW9uKCBjb2wsIGNvbFNwYW4gKSB7XG4gICAgaWYgKCBjb2xTcGFuIDwgMiApIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbFlzWyBjb2wgXTtcbiAgICB9XG4gICAgLy8gbWFrZSBhbiBhcnJheSBvZiBjb2xZIHZhbHVlcyBmb3IgdGhhdCBvbmUgZ3JvdXBcbiAgICB2YXIgZ3JvdXBDb2xZcyA9IHRoaXMuY29sWXMuc2xpY2UoIGNvbCwgY29sICsgY29sU3BhbiApO1xuICAgIC8vIGFuZCBnZXQgdGhlIG1heCB2YWx1ZSBvZiB0aGUgYXJyYXlcbiAgICByZXR1cm4gTWF0aC5tYXguYXBwbHkoIE1hdGgsIGdyb3VwQ29sWXMgKTtcbiAgfTtcblxuICAvLyBnZXQgY29sdW1uIHBvc2l0aW9uIGJhc2VkIG9uIGhvcml6b250YWwgaW5kZXguICM4NzNcbiAgcHJvdG8uX2dldEhvcml6b250YWxDb2xQb3NpdGlvbiA9IGZ1bmN0aW9uKCBjb2xTcGFuLCBpdGVtICkge1xuICAgIHZhciBjb2wgPSB0aGlzLmhvcml6b250YWxDb2xJbmRleCAlIHRoaXMuY29scztcbiAgICB2YXIgaXNPdmVyID0gY29sU3BhbiA+IDEgJiYgY29sICsgY29sU3BhbiA+IHRoaXMuY29scztcbiAgICAvLyBzaGlmdCB0byBuZXh0IHJvdyBpZiBpdGVtIGNhbid0IGZpdCBvbiBjdXJyZW50IHJvd1xuICAgIGNvbCA9IGlzT3ZlciA/IDAgOiBjb2w7XG4gICAgLy8gZG9uJ3QgbGV0IHplcm8tc2l6ZSBpdGVtcyB0YWtlIHVwIHNwYWNlXG4gICAgdmFyIGhhc1NpemUgPSBpdGVtLnNpemUub3V0ZXJXaWR0aCAmJiBpdGVtLnNpemUub3V0ZXJIZWlnaHQ7XG4gICAgdGhpcy5ob3Jpem9udGFsQ29sSW5kZXggPSBoYXNTaXplID8gY29sICsgY29sU3BhbiA6IHRoaXMuaG9yaXpvbnRhbENvbEluZGV4O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbDogY29sLFxuICAgICAgeTogdGhpcy5fZ2V0Q29sR3JvdXBZKCBjb2wsIGNvbFNwYW4gKSxcbiAgICB9O1xuICB9O1xuXG4gIHByb3RvLl9tYW5hZ2VTdGFtcCA9IGZ1bmN0aW9uKCBzdGFtcCApIHtcbiAgICB2YXIgc3RhbXBTaXplID0gZ2V0U2l6ZSggc3RhbXAgKTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5fZ2V0RWxlbWVudE9mZnNldCggc3RhbXAgKTtcbiAgICAvLyBnZXQgdGhlIGNvbHVtbnMgdGhhdCB0aGlzIHN0YW1wIGFmZmVjdHNcbiAgICB2YXIgaXNPcmlnaW5MZWZ0ID0gdGhpcy5fZ2V0T3B0aW9uKCdvcmlnaW5MZWZ0Jyk7XG4gICAgdmFyIGZpcnN0WCA9IGlzT3JpZ2luTGVmdCA/IG9mZnNldC5sZWZ0IDogb2Zmc2V0LnJpZ2h0O1xuICAgIHZhciBsYXN0WCA9IGZpcnN0WCArIHN0YW1wU2l6ZS5vdXRlcldpZHRoO1xuICAgIHZhciBmaXJzdENvbCA9IE1hdGguZmxvb3IoIGZpcnN0WCAvIHRoaXMuY29sdW1uV2lkdGggKTtcbiAgICBmaXJzdENvbCA9IE1hdGgubWF4KCAwLCBmaXJzdENvbCApO1xuICAgIHZhciBsYXN0Q29sID0gTWF0aC5mbG9vciggbGFzdFggLyB0aGlzLmNvbHVtbldpZHRoICk7XG4gICAgLy8gbGFzdENvbCBzaG91bGQgbm90IGdvIG92ZXIgaWYgbXVsdGlwbGUgb2YgY29sdW1uV2lkdGggIzQyNVxuICAgIGxhc3RDb2wgLT0gbGFzdFggJSB0aGlzLmNvbHVtbldpZHRoID8gMCA6IDE7XG4gICAgbGFzdENvbCA9IE1hdGgubWluKCB0aGlzLmNvbHMgLSAxLCBsYXN0Q29sICk7XG4gICAgLy8gc2V0IGNvbFlzIHRvIGJvdHRvbSBvZiB0aGUgc3RhbXBcblxuICAgIHZhciBpc09yaWdpblRvcCA9IHRoaXMuX2dldE9wdGlvbignb3JpZ2luVG9wJyk7XG4gICAgdmFyIHN0YW1wTWF4WSA9ICggaXNPcmlnaW5Ub3AgPyBvZmZzZXQudG9wIDogb2Zmc2V0LmJvdHRvbSApICtcbiAgICAgIHN0YW1wU2l6ZS5vdXRlckhlaWdodDtcbiAgICBmb3IgKCB2YXIgaSA9IGZpcnN0Q29sOyBpIDw9IGxhc3RDb2w7IGkrKyApIHtcbiAgICAgIHRoaXMuY29sWXNbaV0gPSBNYXRoLm1heCggc3RhbXBNYXhZLCB0aGlzLmNvbFlzW2ldICk7XG4gICAgfVxuICB9O1xuXG4gIHByb3RvLl9nZXRDb250YWluZXJTaXplID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5tYXhZID0gTWF0aC5tYXguYXBwbHkoIE1hdGgsIHRoaXMuY29sWXMgKTtcbiAgICB2YXIgc2l6ZSA9IHtcbiAgICAgIGhlaWdodDogdGhpcy5tYXhZXG4gICAgfTtcblxuICAgIGlmICggdGhpcy5fZ2V0T3B0aW9uKCdmaXRXaWR0aCcpICkge1xuICAgICAgc2l6ZS53aWR0aCA9IHRoaXMuX2dldENvbnRhaW5lckZpdFdpZHRoKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpemU7XG4gIH07XG5cbiAgcHJvdG8uX2dldENvbnRhaW5lckZpdFdpZHRoID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHVudXNlZENvbHMgPSAwO1xuICAgIC8vIGNvdW50IHVudXNlZCBjb2x1bW5zXG4gICAgdmFyIGkgPSB0aGlzLmNvbHM7XG4gICAgd2hpbGUgKCAtLWkgKSB7XG4gICAgICBpZiAoIHRoaXMuY29sWXNbaV0gIT09IDAgKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdW51c2VkQ29scysrO1xuICAgIH1cbiAgICAvLyBmaXQgY29udGFpbmVyIHRvIGNvbHVtbnMgdGhhdCBoYXZlIGJlZW4gdXNlZFxuICAgIHJldHVybiAoIHRoaXMuY29scyAtIHVudXNlZENvbHMgKSAqIHRoaXMuY29sdW1uV2lkdGggLSB0aGlzLmd1dHRlcjtcbiAgfTtcblxuICBwcm90by5uZWVkc1Jlc2l6ZUxheW91dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBwcmV2aW91c1dpZHRoID0gdGhpcy5jb250YWluZXJXaWR0aDtcbiAgICB0aGlzLmdldENvbnRhaW5lcldpZHRoKCk7XG4gICAgcmV0dXJuIHByZXZpb3VzV2lkdGggIT0gdGhpcy5jb250YWluZXJXaWR0aDtcbiAgfTtcblxuICByZXR1cm4gTWFzb25yeTtcblxufSkpO1xuIiwiLyohXG4gKiBPdXRsYXllciB2Mi4xLjFcbiAqIHRoZSBicmFpbnMgYW5kIGd1dHMgb2YgYSBsYXlvdXQgbGlicmFyeVxuICogTUlUIGxpY2Vuc2VcbiAqL1xuXG4oIGZ1bmN0aW9uKCB3aW5kb3csIGZhY3RvcnkgKSB7XG4gICd1c2Ugc3RyaWN0JztcbiAgLy8gdW5pdmVyc2FsIG1vZHVsZSBkZWZpbml0aW9uXG4gIC8qIGpzaGludCBzdHJpY3Q6IGZhbHNlICovIC8qIGdsb2JhbHMgZGVmaW5lLCBtb2R1bGUsIHJlcXVpcmUgKi9cbiAgaWYgKCB0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCApIHtcbiAgICAvLyBBTUQgLSBSZXF1aXJlSlNcbiAgICBkZWZpbmUoIFtcbiAgICAgICAgJ2V2LWVtaXR0ZXIvZXYtZW1pdHRlcicsXG4gICAgICAgICdnZXQtc2l6ZS9nZXQtc2l6ZScsXG4gICAgICAgICdmaXp6eS11aS11dGlscy91dGlscycsXG4gICAgICAgICcuL2l0ZW0nXG4gICAgICBdLFxuICAgICAgZnVuY3Rpb24oIEV2RW1pdHRlciwgZ2V0U2l6ZSwgdXRpbHMsIEl0ZW0gKSB7XG4gICAgICAgIHJldHVybiBmYWN0b3J5KCB3aW5kb3csIEV2RW1pdHRlciwgZ2V0U2l6ZSwgdXRpbHMsIEl0ZW0pO1xuICAgICAgfVxuICAgICk7XG4gIH0gZWxzZSBpZiAoIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMgKSB7XG4gICAgLy8gQ29tbW9uSlMgLSBCcm93c2VyaWZ5LCBXZWJwYWNrXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KFxuICAgICAgd2luZG93LFxuICAgICAgcmVxdWlyZSgnZXYtZW1pdHRlcicpLFxuICAgICAgcmVxdWlyZSgnZ2V0LXNpemUnKSxcbiAgICAgIHJlcXVpcmUoJ2Zpenp5LXVpLXV0aWxzJyksXG4gICAgICByZXF1aXJlKCcuL2l0ZW0nKVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gYnJvd3NlciBnbG9iYWxcbiAgICB3aW5kb3cuT3V0bGF5ZXIgPSBmYWN0b3J5KFxuICAgICAgd2luZG93LFxuICAgICAgd2luZG93LkV2RW1pdHRlcixcbiAgICAgIHdpbmRvdy5nZXRTaXplLFxuICAgICAgd2luZG93LmZpenp5VUlVdGlscyxcbiAgICAgIHdpbmRvdy5PdXRsYXllci5JdGVtXG4gICAgKTtcbiAgfVxuXG59KCB3aW5kb3csIGZ1bmN0aW9uIGZhY3RvcnkoIHdpbmRvdywgRXZFbWl0dGVyLCBnZXRTaXplLCB1dGlscywgSXRlbSApIHtcbid1c2Ugc3RyaWN0JztcblxuLy8gLS0tLS0gdmFycyAtLS0tLSAvL1xuXG52YXIgY29uc29sZSA9IHdpbmRvdy5jb25zb2xlO1xudmFyIGpRdWVyeSA9IHdpbmRvdy5qUXVlcnk7XG52YXIgbm9vcCA9IGZ1bmN0aW9uKCkge307XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE91dGxheWVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbi8vIGdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyc1xudmFyIEdVSUQgPSAwO1xuLy8gaW50ZXJuYWwgc3RvcmUgb2YgYWxsIE91dGxheWVyIGludGFuY2VzXG52YXIgaW5zdGFuY2VzID0ge307XG5cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnQsIFN0cmluZ30gZWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBPdXRsYXllciggZWxlbWVudCwgb3B0aW9ucyApIHtcbiAgdmFyIHF1ZXJ5RWxlbWVudCA9IHV0aWxzLmdldFF1ZXJ5RWxlbWVudCggZWxlbWVudCApO1xuICBpZiAoICFxdWVyeUVsZW1lbnQgKSB7XG4gICAgaWYgKCBjb25zb2xlICkge1xuICAgICAgY29uc29sZS5lcnJvciggJ0JhZCBlbGVtZW50IGZvciAnICsgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lc3BhY2UgK1xuICAgICAgICAnOiAnICsgKCBxdWVyeUVsZW1lbnQgfHwgZWxlbWVudCApICk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICB0aGlzLmVsZW1lbnQgPSBxdWVyeUVsZW1lbnQ7XG4gIC8vIGFkZCBqUXVlcnlcbiAgaWYgKCBqUXVlcnkgKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9IGpRdWVyeSggdGhpcy5lbGVtZW50ICk7XG4gIH1cblxuICAvLyBvcHRpb25zXG4gIHRoaXMub3B0aW9ucyA9IHV0aWxzLmV4dGVuZCgge30sIHRoaXMuY29uc3RydWN0b3IuZGVmYXVsdHMgKTtcbiAgdGhpcy5vcHRpb24oIG9wdGlvbnMgKTtcblxuICAvLyBhZGQgaWQgZm9yIE91dGxheWVyLmdldEZyb21FbGVtZW50XG4gIHZhciBpZCA9ICsrR1VJRDtcbiAgdGhpcy5lbGVtZW50Lm91dGxheWVyR1VJRCA9IGlkOyAvLyBleHBhbmRvXG4gIGluc3RhbmNlc1sgaWQgXSA9IHRoaXM7IC8vIGFzc29jaWF0ZSB2aWEgaWRcblxuICAvLyBraWNrIGl0IG9mZlxuICB0aGlzLl9jcmVhdGUoKTtcblxuICB2YXIgaXNJbml0TGF5b3V0ID0gdGhpcy5fZ2V0T3B0aW9uKCdpbml0TGF5b3V0Jyk7XG4gIGlmICggaXNJbml0TGF5b3V0ICkge1xuICAgIHRoaXMubGF5b3V0KCk7XG4gIH1cbn1cblxuLy8gc2V0dGluZ3MgYXJlIGZvciBpbnRlcm5hbCB1c2Ugb25seVxuT3V0bGF5ZXIubmFtZXNwYWNlID0gJ291dGxheWVyJztcbk91dGxheWVyLkl0ZW0gPSBJdGVtO1xuXG4vLyBkZWZhdWx0IG9wdGlvbnNcbk91dGxheWVyLmRlZmF1bHRzID0ge1xuICBjb250YWluZXJTdHlsZToge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH0sXG4gIGluaXRMYXlvdXQ6IHRydWUsXG4gIG9yaWdpbkxlZnQ6IHRydWUsXG4gIG9yaWdpblRvcDogdHJ1ZSxcbiAgcmVzaXplOiB0cnVlLFxuICByZXNpemVDb250YWluZXI6IHRydWUsXG4gIC8vIGl0ZW0gb3B0aW9uc1xuICB0cmFuc2l0aW9uRHVyYXRpb246ICcwLjRzJyxcbiAgaGlkZGVuU3R5bGU6IHtcbiAgICBvcGFjaXR5OiAwLFxuICAgIHRyYW5zZm9ybTogJ3NjYWxlKDAuMDAxKSdcbiAgfSxcbiAgdmlzaWJsZVN0eWxlOiB7XG4gICAgb3BhY2l0eTogMSxcbiAgICB0cmFuc2Zvcm06ICdzY2FsZSgxKSdcbiAgfVxufTtcblxudmFyIHByb3RvID0gT3V0bGF5ZXIucHJvdG90eXBlO1xuLy8gaW5oZXJpdCBFdkVtaXR0ZXJcbnV0aWxzLmV4dGVuZCggcHJvdG8sIEV2RW1pdHRlci5wcm90b3R5cGUgKTtcblxuLyoqXG4gKiBzZXQgb3B0aW9uc1xuICogQHBhcmFtIHtPYmplY3R9IG9wdHNcbiAqL1xucHJvdG8ub3B0aW9uID0gZnVuY3Rpb24oIG9wdHMgKSB7XG4gIHV0aWxzLmV4dGVuZCggdGhpcy5vcHRpb25zLCBvcHRzICk7XG59O1xuXG4vKipcbiAqIGdldCBiYWNrd2FyZHMgY29tcGF0aWJsZSBvcHRpb24gdmFsdWUsIGNoZWNrIG9sZCBuYW1lXG4gKi9cbnByb3RvLl9nZXRPcHRpb24gPSBmdW5jdGlvbiggb3B0aW9uICkge1xuICB2YXIgb2xkT3B0aW9uID0gdGhpcy5jb25zdHJ1Y3Rvci5jb21wYXRPcHRpb25zWyBvcHRpb24gXTtcbiAgcmV0dXJuIG9sZE9wdGlvbiAmJiB0aGlzLm9wdGlvbnNbIG9sZE9wdGlvbiBdICE9PSB1bmRlZmluZWQgP1xuICAgIHRoaXMub3B0aW9uc1sgb2xkT3B0aW9uIF0gOiB0aGlzLm9wdGlvbnNbIG9wdGlvbiBdO1xufTtcblxuT3V0bGF5ZXIuY29tcGF0T3B0aW9ucyA9IHtcbiAgLy8gY3VycmVudE5hbWU6IG9sZE5hbWVcbiAgaW5pdExheW91dDogJ2lzSW5pdExheW91dCcsXG4gIGhvcml6b250YWw6ICdpc0hvcml6b250YWwnLFxuICBsYXlvdXRJbnN0YW50OiAnaXNMYXlvdXRJbnN0YW50JyxcbiAgb3JpZ2luTGVmdDogJ2lzT3JpZ2luTGVmdCcsXG4gIG9yaWdpblRvcDogJ2lzT3JpZ2luVG9wJyxcbiAgcmVzaXplOiAnaXNSZXNpemVCb3VuZCcsXG4gIHJlc2l6ZUNvbnRhaW5lcjogJ2lzUmVzaXppbmdDb250YWluZXInXG59O1xuXG5wcm90by5fY3JlYXRlID0gZnVuY3Rpb24oKSB7XG4gIC8vIGdldCBpdGVtcyBmcm9tIGNoaWxkcmVuXG4gIHRoaXMucmVsb2FkSXRlbXMoKTtcbiAgLy8gZWxlbWVudHMgdGhhdCBhZmZlY3QgbGF5b3V0LCBidXQgYXJlIG5vdCBsYWlkIG91dFxuICB0aGlzLnN0YW1wcyA9IFtdO1xuICB0aGlzLnN0YW1wKCB0aGlzLm9wdGlvbnMuc3RhbXAgKTtcbiAgLy8gc2V0IGNvbnRhaW5lciBzdHlsZVxuICB1dGlscy5leHRlbmQoIHRoaXMuZWxlbWVudC5zdHlsZSwgdGhpcy5vcHRpb25zLmNvbnRhaW5lclN0eWxlICk7XG5cbiAgLy8gYmluZCByZXNpemUgbWV0aG9kXG4gIHZhciBjYW5CaW5kUmVzaXplID0gdGhpcy5fZ2V0T3B0aW9uKCdyZXNpemUnKTtcbiAgaWYgKCBjYW5CaW5kUmVzaXplICkge1xuICAgIHRoaXMuYmluZFJlc2l6ZSgpO1xuICB9XG59O1xuXG4vLyBnb2VzIHRocm91Z2ggYWxsIGNoaWxkcmVuIGFnYWluIGFuZCBnZXRzIGJyaWNrcyBpbiBwcm9wZXIgb3JkZXJcbnByb3RvLnJlbG9hZEl0ZW1zID0gZnVuY3Rpb24oKSB7XG4gIC8vIGNvbGxlY3Rpb24gb2YgaXRlbSBlbGVtZW50c1xuICB0aGlzLml0ZW1zID0gdGhpcy5faXRlbWl6ZSggdGhpcy5lbGVtZW50LmNoaWxkcmVuICk7XG59O1xuXG5cbi8qKlxuICogdHVybiBlbGVtZW50cyBpbnRvIE91dGxheWVyLkl0ZW1zIHRvIGJlIHVzZWQgaW4gbGF5b3V0XG4gKiBAcGFyYW0ge0FycmF5IG9yIE5vZGVMaXN0IG9yIEhUTUxFbGVtZW50fSBlbGVtc1xuICogQHJldHVybnMge0FycmF5fSBpdGVtcyAtIGNvbGxlY3Rpb24gb2YgbmV3IE91dGxheWVyIEl0ZW1zXG4gKi9cbnByb3RvLl9pdGVtaXplID0gZnVuY3Rpb24oIGVsZW1zICkge1xuXG4gIHZhciBpdGVtRWxlbXMgPSB0aGlzLl9maWx0ZXJGaW5kSXRlbUVsZW1lbnRzKCBlbGVtcyApO1xuICB2YXIgSXRlbSA9IHRoaXMuY29uc3RydWN0b3IuSXRlbTtcblxuICAvLyBjcmVhdGUgbmV3IE91dGxheWVyIEl0ZW1zIGZvciBjb2xsZWN0aW9uXG4gIHZhciBpdGVtcyA9IFtdO1xuICBmb3IgKCB2YXIgaT0wOyBpIDwgaXRlbUVsZW1zLmxlbmd0aDsgaSsrICkge1xuICAgIHZhciBlbGVtID0gaXRlbUVsZW1zW2ldO1xuICAgIHZhciBpdGVtID0gbmV3IEl0ZW0oIGVsZW0sIHRoaXMgKTtcbiAgICBpdGVtcy5wdXNoKCBpdGVtICk7XG4gIH1cblxuICByZXR1cm4gaXRlbXM7XG59O1xuXG4vKipcbiAqIGdldCBpdGVtIGVsZW1lbnRzIHRvIGJlIHVzZWQgaW4gbGF5b3V0XG4gKiBAcGFyYW0ge0FycmF5IG9yIE5vZGVMaXN0IG9yIEhUTUxFbGVtZW50fSBlbGVtc1xuICogQHJldHVybnMge0FycmF5fSBpdGVtcyAtIGl0ZW0gZWxlbWVudHNcbiAqL1xucHJvdG8uX2ZpbHRlckZpbmRJdGVtRWxlbWVudHMgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIHJldHVybiB1dGlscy5maWx0ZXJGaW5kRWxlbWVudHMoIGVsZW1zLCB0aGlzLm9wdGlvbnMuaXRlbVNlbGVjdG9yICk7XG59O1xuXG4vKipcbiAqIGdldHRlciBtZXRob2QgZm9yIGdldHRpbmcgaXRlbSBlbGVtZW50c1xuICogQHJldHVybnMge0FycmF5fSBlbGVtcyAtIGNvbGxlY3Rpb24gb2YgaXRlbSBlbGVtZW50c1xuICovXG5wcm90by5nZXRJdGVtRWxlbWVudHMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuaXRlbXMubWFwKCBmdW5jdGlvbiggaXRlbSApIHtcbiAgICByZXR1cm4gaXRlbS5lbGVtZW50O1xuICB9KTtcbn07XG5cbi8vIC0tLS0tIGluaXQgJiBsYXlvdXQgLS0tLS0gLy9cblxuLyoqXG4gKiBsYXlzIG91dCBhbGwgaXRlbXNcbiAqL1xucHJvdG8ubGF5b3V0ID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX3Jlc2V0TGF5b3V0KCk7XG4gIHRoaXMuX21hbmFnZVN0YW1wcygpO1xuXG4gIC8vIGRvbid0IGFuaW1hdGUgZmlyc3QgbGF5b3V0XG4gIHZhciBsYXlvdXRJbnN0YW50ID0gdGhpcy5fZ2V0T3B0aW9uKCdsYXlvdXRJbnN0YW50Jyk7XG4gIHZhciBpc0luc3RhbnQgPSBsYXlvdXRJbnN0YW50ICE9PSB1bmRlZmluZWQgP1xuICAgIGxheW91dEluc3RhbnQgOiAhdGhpcy5faXNMYXlvdXRJbml0ZWQ7XG4gIHRoaXMubGF5b3V0SXRlbXMoIHRoaXMuaXRlbXMsIGlzSW5zdGFudCApO1xuXG4gIC8vIGZsYWcgZm9yIGluaXRhbGl6ZWRcbiAgdGhpcy5faXNMYXlvdXRJbml0ZWQgPSB0cnVlO1xufTtcblxuLy8gX2luaXQgaXMgYWxpYXMgZm9yIGxheW91dFxucHJvdG8uX2luaXQgPSBwcm90by5sYXlvdXQ7XG5cbi8qKlxuICogbG9naWMgYmVmb3JlIGFueSBuZXcgbGF5b3V0XG4gKi9cbnByb3RvLl9yZXNldExheW91dCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmdldFNpemUoKTtcbn07XG5cblxucHJvdG8uZ2V0U2l6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnNpemUgPSBnZXRTaXplKCB0aGlzLmVsZW1lbnQgKTtcbn07XG5cbi8qKlxuICogZ2V0IG1lYXN1cmVtZW50IGZyb20gb3B0aW9uLCBmb3IgY29sdW1uV2lkdGgsIHJvd0hlaWdodCwgZ3V0dGVyXG4gKiBpZiBvcHRpb24gaXMgU3RyaW5nIC0+IGdldCBlbGVtZW50IGZyb20gc2VsZWN0b3Igc3RyaW5nLCAmIGdldCBzaXplIG9mIGVsZW1lbnRcbiAqIGlmIG9wdGlvbiBpcyBFbGVtZW50IC0+IGdldCBzaXplIG9mIGVsZW1lbnRcbiAqIGVsc2UgdXNlIG9wdGlvbiBhcyBhIG51bWJlclxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtZWFzdXJlbWVudFxuICogQHBhcmFtIHtTdHJpbmd9IHNpemUgLSB3aWR0aCBvciBoZWlnaHRcbiAqIEBwcml2YXRlXG4gKi9cbnByb3RvLl9nZXRNZWFzdXJlbWVudCA9IGZ1bmN0aW9uKCBtZWFzdXJlbWVudCwgc2l6ZSApIHtcbiAgdmFyIG9wdGlvbiA9IHRoaXMub3B0aW9uc1sgbWVhc3VyZW1lbnQgXTtcbiAgdmFyIGVsZW07XG4gIGlmICggIW9wdGlvbiApIHtcbiAgICAvLyBkZWZhdWx0IHRvIDBcbiAgICB0aGlzWyBtZWFzdXJlbWVudCBdID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2Ugb3B0aW9uIGFzIGFuIGVsZW1lbnRcbiAgICBpZiAoIHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycgKSB7XG4gICAgICBlbGVtID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIG9wdGlvbiApO1xuICAgIH0gZWxzZSBpZiAoIG9wdGlvbiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICkge1xuICAgICAgZWxlbSA9IG9wdGlvbjtcbiAgICB9XG4gICAgLy8gdXNlIHNpemUgb2YgZWxlbWVudCwgaWYgZWxlbWVudFxuICAgIHRoaXNbIG1lYXN1cmVtZW50IF0gPSBlbGVtID8gZ2V0U2l6ZSggZWxlbSApWyBzaXplIF0gOiBvcHRpb247XG4gIH1cbn07XG5cbi8qKlxuICogbGF5b3V0IGEgY29sbGVjdGlvbiBvZiBpdGVtIGVsZW1lbnRzXG4gKiBAYXBpIHB1YmxpY1xuICovXG5wcm90by5sYXlvdXRJdGVtcyA9IGZ1bmN0aW9uKCBpdGVtcywgaXNJbnN0YW50ICkge1xuICBpdGVtcyA9IHRoaXMuX2dldEl0ZW1zRm9yTGF5b3V0KCBpdGVtcyApO1xuXG4gIHRoaXMuX2xheW91dEl0ZW1zKCBpdGVtcywgaXNJbnN0YW50ICk7XG5cbiAgdGhpcy5fcG9zdExheW91dCgpO1xufTtcblxuLyoqXG4gKiBnZXQgdGhlIGl0ZW1zIHRvIGJlIGxhaWQgb3V0XG4gKiB5b3UgbWF5IHdhbnQgdG8gc2tpcCBvdmVyIHNvbWUgaXRlbXNcbiAqIEBwYXJhbSB7QXJyYXl9IGl0ZW1zXG4gKiBAcmV0dXJucyB7QXJyYXl9IGl0ZW1zXG4gKi9cbnByb3RvLl9nZXRJdGVtc0ZvckxheW91dCA9IGZ1bmN0aW9uKCBpdGVtcyApIHtcbiAgcmV0dXJuIGl0ZW1zLmZpbHRlciggZnVuY3Rpb24oIGl0ZW0gKSB7XG4gICAgcmV0dXJuICFpdGVtLmlzSWdub3JlZDtcbiAgfSk7XG59O1xuXG4vKipcbiAqIGxheW91dCBpdGVtc1xuICogQHBhcmFtIHtBcnJheX0gaXRlbXNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNJbnN0YW50XG4gKi9cbnByb3RvLl9sYXlvdXRJdGVtcyA9IGZ1bmN0aW9uKCBpdGVtcywgaXNJbnN0YW50ICkge1xuICB0aGlzLl9lbWl0Q29tcGxldGVPbkl0ZW1zKCAnbGF5b3V0JywgaXRlbXMgKTtcblxuICBpZiAoICFpdGVtcyB8fCAhaXRlbXMubGVuZ3RoICkge1xuICAgIC8vIG5vIGl0ZW1zLCBlbWl0IGV2ZW50IHdpdGggZW1wdHkgYXJyYXlcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcXVldWUgPSBbXTtcblxuICBpdGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggaXRlbSApIHtcbiAgICAvLyBnZXQgeC95IG9iamVjdCBmcm9tIG1ldGhvZFxuICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuX2dldEl0ZW1MYXlvdXRQb3NpdGlvbiggaXRlbSApO1xuICAgIC8vIGVucXVldWVcbiAgICBwb3NpdGlvbi5pdGVtID0gaXRlbTtcbiAgICBwb3NpdGlvbi5pc0luc3RhbnQgPSBpc0luc3RhbnQgfHwgaXRlbS5pc0xheW91dEluc3RhbnQ7XG4gICAgcXVldWUucHVzaCggcG9zaXRpb24gKTtcbiAgfSwgdGhpcyApO1xuXG4gIHRoaXMuX3Byb2Nlc3NMYXlvdXRRdWV1ZSggcXVldWUgKTtcbn07XG5cbi8qKlxuICogZ2V0IGl0ZW0gbGF5b3V0IHBvc2l0aW9uXG4gKiBAcGFyYW0ge091dGxheWVyLkl0ZW19IGl0ZW1cbiAqIEByZXR1cm5zIHtPYmplY3R9IHggYW5kIHkgcG9zaXRpb25cbiAqL1xucHJvdG8uX2dldEl0ZW1MYXlvdXRQb3NpdGlvbiA9IGZ1bmN0aW9uKCAvKiBpdGVtICovICkge1xuICByZXR1cm4ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xufTtcblxuLyoqXG4gKiBpdGVyYXRlIG92ZXIgYXJyYXkgYW5kIHBvc2l0aW9uIGVhY2ggaXRlbVxuICogUmVhc29uIGJlaW5nIC0gc2VwYXJhdGluZyB0aGlzIGxvZ2ljIHByZXZlbnRzICdsYXlvdXQgaW52YWxpZGF0aW9uJ1xuICogdGh4IEBwYXVsX2lyaXNoXG4gKiBAcGFyYW0ge0FycmF5fSBxdWV1ZVxuICovXG5wcm90by5fcHJvY2Vzc0xheW91dFF1ZXVlID0gZnVuY3Rpb24oIHF1ZXVlICkge1xuICB0aGlzLnVwZGF0ZVN0YWdnZXIoKTtcbiAgcXVldWUuZm9yRWFjaCggZnVuY3Rpb24oIG9iaiwgaSApIHtcbiAgICB0aGlzLl9wb3NpdGlvbkl0ZW0oIG9iai5pdGVtLCBvYmoueCwgb2JqLnksIG9iai5pc0luc3RhbnQsIGkgKTtcbiAgfSwgdGhpcyApO1xufTtcblxuLy8gc2V0IHN0YWdnZXIgZnJvbSBvcHRpb24gaW4gbWlsbGlzZWNvbmRzIG51bWJlclxucHJvdG8udXBkYXRlU3RhZ2dlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc3RhZ2dlciA9IHRoaXMub3B0aW9ucy5zdGFnZ2VyO1xuICBpZiAoIHN0YWdnZXIgPT09IG51bGwgfHwgc3RhZ2dlciA9PT0gdW5kZWZpbmVkICkge1xuICAgIHRoaXMuc3RhZ2dlciA9IDA7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMuc3RhZ2dlciA9IGdldE1pbGxpc2Vjb25kcyggc3RhZ2dlciApO1xuICByZXR1cm4gdGhpcy5zdGFnZ2VyO1xufTtcblxuLyoqXG4gKiBTZXRzIHBvc2l0aW9uIG9mIGl0ZW0gaW4gRE9NXG4gKiBAcGFyYW0ge091dGxheWVyLkl0ZW19IGl0ZW1cbiAqIEBwYXJhbSB7TnVtYmVyfSB4IC0gaG9yaXpvbnRhbCBwb3NpdGlvblxuICogQHBhcmFtIHtOdW1iZXJ9IHkgLSB2ZXJ0aWNhbCBwb3NpdGlvblxuICogQHBhcmFtIHtCb29sZWFufSBpc0luc3RhbnQgLSBkaXNhYmxlcyB0cmFuc2l0aW9uc1xuICovXG5wcm90by5fcG9zaXRpb25JdGVtID0gZnVuY3Rpb24oIGl0ZW0sIHgsIHksIGlzSW5zdGFudCwgaSApIHtcbiAgaWYgKCBpc0luc3RhbnQgKSB7XG4gICAgLy8gaWYgbm90IHRyYW5zaXRpb24sIGp1c3Qgc2V0IENTU1xuICAgIGl0ZW0uZ29UbyggeCwgeSApO1xuICB9IGVsc2Uge1xuICAgIGl0ZW0uc3RhZ2dlciggaSAqIHRoaXMuc3RhZ2dlciApO1xuICAgIGl0ZW0ubW92ZVRvKCB4LCB5ICk7XG4gIH1cbn07XG5cbi8qKlxuICogQW55IGxvZ2ljIHlvdSB3YW50IHRvIGRvIGFmdGVyIGVhY2ggbGF5b3V0LFxuICogaS5lLiBzaXplIHRoZSBjb250YWluZXJcbiAqL1xucHJvdG8uX3Bvc3RMYXlvdXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5yZXNpemVDb250YWluZXIoKTtcbn07XG5cbnByb3RvLnJlc2l6ZUNvbnRhaW5lciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXNSZXNpemluZ0NvbnRhaW5lciA9IHRoaXMuX2dldE9wdGlvbigncmVzaXplQ29udGFpbmVyJyk7XG4gIGlmICggIWlzUmVzaXppbmdDb250YWluZXIgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBzaXplID0gdGhpcy5fZ2V0Q29udGFpbmVyU2l6ZSgpO1xuICBpZiAoIHNpemUgKSB7XG4gICAgdGhpcy5fc2V0Q29udGFpbmVyTWVhc3VyZSggc2l6ZS53aWR0aCwgdHJ1ZSApO1xuICAgIHRoaXMuX3NldENvbnRhaW5lck1lYXN1cmUoIHNpemUuaGVpZ2h0LCBmYWxzZSApO1xuICB9XG59O1xuXG4vKipcbiAqIFNldHMgd2lkdGggb3IgaGVpZ2h0IG9mIGNvbnRhaW5lciBpZiByZXR1cm5lZFxuICogQHJldHVybnMge09iamVjdH0gc2l6ZVxuICogICBAcGFyYW0ge051bWJlcn0gd2lkdGhcbiAqICAgQHBhcmFtIHtOdW1iZXJ9IGhlaWdodFxuICovXG5wcm90by5fZ2V0Q29udGFpbmVyU2l6ZSA9IG5vb3A7XG5cbi8qKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1lYXN1cmUgLSBzaXplIG9mIHdpZHRoIG9yIGhlaWdodFxuICogQHBhcmFtIHtCb29sZWFufSBpc1dpZHRoXG4gKi9cbnByb3RvLl9zZXRDb250YWluZXJNZWFzdXJlID0gZnVuY3Rpb24oIG1lYXN1cmUsIGlzV2lkdGggKSB7XG4gIGlmICggbWVhc3VyZSA9PT0gdW5kZWZpbmVkICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBlbGVtU2l6ZSA9IHRoaXMuc2l6ZTtcbiAgLy8gYWRkIHBhZGRpbmcgYW5kIGJvcmRlciB3aWR0aCBpZiBib3JkZXIgYm94XG4gIGlmICggZWxlbVNpemUuaXNCb3JkZXJCb3ggKSB7XG4gICAgbWVhc3VyZSArPSBpc1dpZHRoID8gZWxlbVNpemUucGFkZGluZ0xlZnQgKyBlbGVtU2l6ZS5wYWRkaW5nUmlnaHQgK1xuICAgICAgZWxlbVNpemUuYm9yZGVyTGVmdFdpZHRoICsgZWxlbVNpemUuYm9yZGVyUmlnaHRXaWR0aCA6XG4gICAgICBlbGVtU2l6ZS5wYWRkaW5nQm90dG9tICsgZWxlbVNpemUucGFkZGluZ1RvcCArXG4gICAgICBlbGVtU2l6ZS5ib3JkZXJUb3BXaWR0aCArIGVsZW1TaXplLmJvcmRlckJvdHRvbVdpZHRoO1xuICB9XG5cbiAgbWVhc3VyZSA9IE1hdGgubWF4KCBtZWFzdXJlLCAwICk7XG4gIHRoaXMuZWxlbWVudC5zdHlsZVsgaXNXaWR0aCA/ICd3aWR0aCcgOiAnaGVpZ2h0JyBdID0gbWVhc3VyZSArICdweCc7XG59O1xuXG4vKipcbiAqIGVtaXQgZXZlbnRDb21wbGV0ZSBvbiBhIGNvbGxlY3Rpb24gb2YgaXRlbXMgZXZlbnRzXG4gKiBAcGFyYW0ge1N0cmluZ30gZXZlbnROYW1lXG4gKiBAcGFyYW0ge0FycmF5fSBpdGVtcyAtIE91dGxheWVyLkl0ZW1zXG4gKi9cbnByb3RvLl9lbWl0Q29tcGxldGVPbkl0ZW1zID0gZnVuY3Rpb24oIGV2ZW50TmFtZSwgaXRlbXMgKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG4gIGZ1bmN0aW9uIG9uQ29tcGxldGUoKSB7XG4gICAgX3RoaXMuZGlzcGF0Y2hFdmVudCggZXZlbnROYW1lICsgJ0NvbXBsZXRlJywgbnVsbCwgWyBpdGVtcyBdICk7XG4gIH1cblxuICB2YXIgY291bnQgPSBpdGVtcy5sZW5ndGg7XG4gIGlmICggIWl0ZW1zIHx8ICFjb3VudCApIHtcbiAgICBvbkNvbXBsZXRlKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGRvbmVDb3VudCA9IDA7XG4gIGZ1bmN0aW9uIHRpY2soKSB7XG4gICAgZG9uZUNvdW50Kys7XG4gICAgaWYgKCBkb25lQ291bnQgPT0gY291bnQgKSB7XG4gICAgICBvbkNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gYmluZCBjYWxsYmFja1xuICBpdGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggaXRlbSApIHtcbiAgICBpdGVtLm9uY2UoIGV2ZW50TmFtZSwgdGljayApO1xuICB9KTtcbn07XG5cbi8qKlxuICogZW1pdHMgZXZlbnRzIHZpYSBFdkVtaXR0ZXIgYW5kIGpRdWVyeSBldmVudHNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIC0gbmFtZSBvZiBldmVudFxuICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBvcmlnaW5hbCBldmVudFxuICogQHBhcmFtIHtBcnJheX0gYXJncyAtIGV4dHJhIGFyZ3VtZW50c1xuICovXG5wcm90by5kaXNwYXRjaEV2ZW50ID0gZnVuY3Rpb24oIHR5cGUsIGV2ZW50LCBhcmdzICkge1xuICAvLyBhZGQgb3JpZ2luYWwgZXZlbnQgdG8gYXJndW1lbnRzXG4gIHZhciBlbWl0QXJncyA9IGV2ZW50ID8gWyBldmVudCBdLmNvbmNhdCggYXJncyApIDogYXJncztcbiAgdGhpcy5lbWl0RXZlbnQoIHR5cGUsIGVtaXRBcmdzICk7XG5cbiAgaWYgKCBqUXVlcnkgKSB7XG4gICAgLy8gc2V0IHRoaXMuJGVsZW1lbnRcbiAgICB0aGlzLiRlbGVtZW50ID0gdGhpcy4kZWxlbWVudCB8fCBqUXVlcnkoIHRoaXMuZWxlbWVudCApO1xuICAgIGlmICggZXZlbnQgKSB7XG4gICAgICAvLyBjcmVhdGUgalF1ZXJ5IGV2ZW50XG4gICAgICB2YXIgJGV2ZW50ID0galF1ZXJ5LkV2ZW50KCBldmVudCApO1xuICAgICAgJGV2ZW50LnR5cGUgPSB0eXBlO1xuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCAkZXZlbnQsIGFyZ3MgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8ganVzdCB0cmlnZ2VyIHdpdGggdHlwZSBpZiBubyBldmVudCBhdmFpbGFibGVcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlciggdHlwZSwgYXJncyApO1xuICAgIH1cbiAgfVxufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaWdub3JlICYgc3RhbXBzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cblxuLyoqXG4gKiBrZWVwIGl0ZW0gaW4gY29sbGVjdGlvbiwgYnV0IGRvIG5vdCBsYXkgaXQgb3V0XG4gKiBpZ25vcmVkIGl0ZW1zIGRvIG5vdCBnZXQgc2tpcHBlZCBpbiBsYXlvdXRcbiAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbVxuICovXG5wcm90by5pZ25vcmUgPSBmdW5jdGlvbiggZWxlbSApIHtcbiAgdmFyIGl0ZW0gPSB0aGlzLmdldEl0ZW0oIGVsZW0gKTtcbiAgaWYgKCBpdGVtICkge1xuICAgIGl0ZW0uaXNJZ25vcmVkID0gdHJ1ZTtcbiAgfVxufTtcblxuLyoqXG4gKiByZXR1cm4gaXRlbSB0byBsYXlvdXQgY29sbGVjdGlvblxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtXG4gKi9cbnByb3RvLnVuaWdub3JlID0gZnVuY3Rpb24oIGVsZW0gKSB7XG4gIHZhciBpdGVtID0gdGhpcy5nZXRJdGVtKCBlbGVtICk7XG4gIGlmICggaXRlbSApIHtcbiAgICBkZWxldGUgaXRlbS5pc0lnbm9yZWQ7XG4gIH1cbn07XG5cbi8qKlxuICogYWRkcyBlbGVtZW50cyB0byBzdGFtcHNcbiAqIEBwYXJhbSB7Tm9kZUxpc3QsIEFycmF5LCBFbGVtZW50LCBvciBTdHJpbmd9IGVsZW1zXG4gKi9cbnByb3RvLnN0YW1wID0gZnVuY3Rpb24oIGVsZW1zICkge1xuICBlbGVtcyA9IHRoaXMuX2ZpbmQoIGVsZW1zICk7XG4gIGlmICggIWVsZW1zICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuc3RhbXBzID0gdGhpcy5zdGFtcHMuY29uY2F0KCBlbGVtcyApO1xuICAvLyBpZ25vcmVcbiAgZWxlbXMuZm9yRWFjaCggdGhpcy5pZ25vcmUsIHRoaXMgKTtcbn07XG5cbi8qKlxuICogcmVtb3ZlcyBlbGVtZW50cyB0byBzdGFtcHNcbiAqIEBwYXJhbSB7Tm9kZUxpc3QsIEFycmF5LCBvciBFbGVtZW50fSBlbGVtc1xuICovXG5wcm90by51bnN0YW1wID0gZnVuY3Rpb24oIGVsZW1zICkge1xuICBlbGVtcyA9IHRoaXMuX2ZpbmQoIGVsZW1zICk7XG4gIGlmICggIWVsZW1zICl7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZWxlbXMuZm9yRWFjaCggZnVuY3Rpb24oIGVsZW0gKSB7XG4gICAgLy8gZmlsdGVyIG91dCByZW1vdmVkIHN0YW1wIGVsZW1lbnRzXG4gICAgdXRpbHMucmVtb3ZlRnJvbSggdGhpcy5zdGFtcHMsIGVsZW0gKTtcbiAgICB0aGlzLnVuaWdub3JlKCBlbGVtICk7XG4gIH0sIHRoaXMgKTtcbn07XG5cbi8qKlxuICogZmluZHMgY2hpbGQgZWxlbWVudHNcbiAqIEBwYXJhbSB7Tm9kZUxpc3QsIEFycmF5LCBFbGVtZW50LCBvciBTdHJpbmd9IGVsZW1zXG4gKiBAcmV0dXJucyB7QXJyYXl9IGVsZW1zXG4gKi9cbnByb3RvLl9maW5kID0gZnVuY3Rpb24oIGVsZW1zICkge1xuICBpZiAoICFlbGVtcyApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gaWYgc3RyaW5nLCB1c2UgYXJndW1lbnQgYXMgc2VsZWN0b3Igc3RyaW5nXG4gIGlmICggdHlwZW9mIGVsZW1zID09ICdzdHJpbmcnICkge1xuICAgIGVsZW1zID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIGVsZW1zICk7XG4gIH1cbiAgZWxlbXMgPSB1dGlscy5tYWtlQXJyYXkoIGVsZW1zICk7XG4gIHJldHVybiBlbGVtcztcbn07XG5cbnByb3RvLl9tYW5hZ2VTdGFtcHMgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCAhdGhpcy5zdGFtcHMgfHwgIXRoaXMuc3RhbXBzLmxlbmd0aCApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLl9nZXRCb3VuZGluZ1JlY3QoKTtcblxuICB0aGlzLnN0YW1wcy5mb3JFYWNoKCB0aGlzLl9tYW5hZ2VTdGFtcCwgdGhpcyApO1xufTtcblxuLy8gdXBkYXRlIGJvdW5kaW5nTGVmdCAvIFRvcFxucHJvdG8uX2dldEJvdW5kaW5nUmVjdCA9IGZ1bmN0aW9uKCkge1xuICAvLyBnZXQgYm91bmRpbmcgcmVjdCBmb3IgY29udGFpbmVyIGVsZW1lbnRcbiAgdmFyIGJvdW5kaW5nUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNpemUgPSB0aGlzLnNpemU7XG4gIHRoaXMuX2JvdW5kaW5nUmVjdCA9IHtcbiAgICBsZWZ0OiBib3VuZGluZ1JlY3QubGVmdCArIHNpemUucGFkZGluZ0xlZnQgKyBzaXplLmJvcmRlckxlZnRXaWR0aCxcbiAgICB0b3A6IGJvdW5kaW5nUmVjdC50b3AgKyBzaXplLnBhZGRpbmdUb3AgKyBzaXplLmJvcmRlclRvcFdpZHRoLFxuICAgIHJpZ2h0OiBib3VuZGluZ1JlY3QucmlnaHQgLSAoIHNpemUucGFkZGluZ1JpZ2h0ICsgc2l6ZS5ib3JkZXJSaWdodFdpZHRoICksXG4gICAgYm90dG9tOiBib3VuZGluZ1JlY3QuYm90dG9tIC0gKCBzaXplLnBhZGRpbmdCb3R0b20gKyBzaXplLmJvcmRlckJvdHRvbVdpZHRoIClcbiAgfTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtFbGVtZW50fSBzdGFtcFxuKiovXG5wcm90by5fbWFuYWdlU3RhbXAgPSBub29wO1xuXG4vKipcbiAqIGdldCB4L3kgcG9zaXRpb24gb2YgZWxlbWVudCByZWxhdGl2ZSB0byBjb250YWluZXIgZWxlbWVudFxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBvZmZzZXQgLSBoYXMgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tXG4gKi9cbnByb3RvLl9nZXRFbGVtZW50T2Zmc2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG4gIHZhciBib3VuZGluZ1JlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgdGhpc1JlY3QgPSB0aGlzLl9ib3VuZGluZ1JlY3Q7XG4gIHZhciBzaXplID0gZ2V0U2l6ZSggZWxlbSApO1xuICB2YXIgb2Zmc2V0ID0ge1xuICAgIGxlZnQ6IGJvdW5kaW5nUmVjdC5sZWZ0IC0gdGhpc1JlY3QubGVmdCAtIHNpemUubWFyZ2luTGVmdCxcbiAgICB0b3A6IGJvdW5kaW5nUmVjdC50b3AgLSB0aGlzUmVjdC50b3AgLSBzaXplLm1hcmdpblRvcCxcbiAgICByaWdodDogdGhpc1JlY3QucmlnaHQgLSBib3VuZGluZ1JlY3QucmlnaHQgLSBzaXplLm1hcmdpblJpZ2h0LFxuICAgIGJvdHRvbTogdGhpc1JlY3QuYm90dG9tIC0gYm91bmRpbmdSZWN0LmJvdHRvbSAtIHNpemUubWFyZ2luQm90dG9tXG4gIH07XG4gIHJldHVybiBvZmZzZXQ7XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSByZXNpemUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuLy8gZW5hYmxlIGV2ZW50IGhhbmRsZXJzIGZvciBsaXN0ZW5lcnNcbi8vIGkuZS4gcmVzaXplIC0+IG9ucmVzaXplXG5wcm90by5oYW5kbGVFdmVudCA9IHV0aWxzLmhhbmRsZUV2ZW50O1xuXG4vKipcbiAqIEJpbmQgbGF5b3V0IHRvIHdpbmRvdyByZXNpemluZ1xuICovXG5wcm90by5iaW5kUmVzaXplID0gZnVuY3Rpb24oKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAncmVzaXplJywgdGhpcyApO1xuICB0aGlzLmlzUmVzaXplQm91bmQgPSB0cnVlO1xufTtcblxuLyoqXG4gKiBVbmJpbmQgbGF5b3V0IHRvIHdpbmRvdyByZXNpemluZ1xuICovXG5wcm90by51bmJpbmRSZXNpemUgPSBmdW5jdGlvbigpIHtcbiAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoICdyZXNpemUnLCB0aGlzICk7XG4gIHRoaXMuaXNSZXNpemVCb3VuZCA9IGZhbHNlO1xufTtcblxucHJvdG8ub25yZXNpemUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5yZXNpemUoKTtcbn07XG5cbnV0aWxzLmRlYm91bmNlTWV0aG9kKCBPdXRsYXllciwgJ29ucmVzaXplJywgMTAwICk7XG5cbnByb3RvLnJlc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICAvLyBkb24ndCB0cmlnZ2VyIGlmIHNpemUgZGlkIG5vdCBjaGFuZ2VcbiAgLy8gb3IgaWYgcmVzaXplIHdhcyB1bmJvdW5kLiBTZWUgIzlcbiAgaWYgKCAhdGhpcy5pc1Jlc2l6ZUJvdW5kIHx8ICF0aGlzLm5lZWRzUmVzaXplTGF5b3V0KCkgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5sYXlvdXQoKTtcbn07XG5cbi8qKlxuICogY2hlY2sgaWYgbGF5b3V0IGlzIG5lZWRlZCBwb3N0IGxheW91dFxuICogQHJldHVybnMgQm9vbGVhblxuICovXG5wcm90by5uZWVkc1Jlc2l6ZUxheW91dCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2l6ZSA9IGdldFNpemUoIHRoaXMuZWxlbWVudCApO1xuICAvLyBjaGVjayB0aGF0IHRoaXMuc2l6ZSBhbmQgc2l6ZSBhcmUgdGhlcmVcbiAgLy8gSUU4IHRyaWdnZXJzIHJlc2l6ZSBvbiBib2R5IHNpemUgY2hhbmdlLCBzbyB0aGV5IG1pZ2h0IG5vdCBiZVxuICB2YXIgaGFzU2l6ZXMgPSB0aGlzLnNpemUgJiYgc2l6ZTtcbiAgcmV0dXJuIGhhc1NpemVzICYmIHNpemUuaW5uZXJXaWR0aCAhPT0gdGhpcy5zaXplLmlubmVyV2lkdGg7XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbi8qKlxuICogYWRkIGl0ZW1zIHRvIE91dGxheWVyIGluc3RhbmNlXG4gKiBAcGFyYW0ge0FycmF5IG9yIE5vZGVMaXN0IG9yIEVsZW1lbnR9IGVsZW1zXG4gKiBAcmV0dXJucyB7QXJyYXl9IGl0ZW1zIC0gT3V0bGF5ZXIuSXRlbXNcbioqL1xucHJvdG8uYWRkSXRlbXMgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIHZhciBpdGVtcyA9IHRoaXMuX2l0ZW1pemUoIGVsZW1zICk7XG4gIC8vIGFkZCBpdGVtcyB0byBjb2xsZWN0aW9uXG4gIGlmICggaXRlbXMubGVuZ3RoICkge1xuICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmNvbmNhdCggaXRlbXMgKTtcbiAgfVxuICByZXR1cm4gaXRlbXM7XG59O1xuXG4vKipcbiAqIExheW91dCBuZXdseS1hcHBlbmRlZCBpdGVtIGVsZW1lbnRzXG4gKiBAcGFyYW0ge0FycmF5IG9yIE5vZGVMaXN0IG9yIEVsZW1lbnR9IGVsZW1zXG4gKi9cbnByb3RvLmFwcGVuZGVkID0gZnVuY3Rpb24oIGVsZW1zICkge1xuICB2YXIgaXRlbXMgPSB0aGlzLmFkZEl0ZW1zKCBlbGVtcyApO1xuICBpZiAoICFpdGVtcy5sZW5ndGggKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIGxheW91dCBhbmQgcmV2ZWFsIGp1c3QgdGhlIG5ldyBpdGVtc1xuICB0aGlzLmxheW91dEl0ZW1zKCBpdGVtcywgdHJ1ZSApO1xuICB0aGlzLnJldmVhbCggaXRlbXMgKTtcbn07XG5cbi8qKlxuICogTGF5b3V0IHByZXBlbmRlZCBlbGVtZW50c1xuICogQHBhcmFtIHtBcnJheSBvciBOb2RlTGlzdCBvciBFbGVtZW50fSBlbGVtc1xuICovXG5wcm90by5wcmVwZW5kZWQgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIHZhciBpdGVtcyA9IHRoaXMuX2l0ZW1pemUoIGVsZW1zICk7XG4gIGlmICggIWl0ZW1zLmxlbmd0aCApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gYWRkIGl0ZW1zIHRvIGJlZ2lubmluZyBvZiBjb2xsZWN0aW9uXG4gIHZhciBwcmV2aW91c0l0ZW1zID0gdGhpcy5pdGVtcy5zbGljZSgwKTtcbiAgdGhpcy5pdGVtcyA9IGl0ZW1zLmNvbmNhdCggcHJldmlvdXNJdGVtcyApO1xuICAvLyBzdGFydCBuZXcgbGF5b3V0XG4gIHRoaXMuX3Jlc2V0TGF5b3V0KCk7XG4gIHRoaXMuX21hbmFnZVN0YW1wcygpO1xuICAvLyBsYXlvdXQgbmV3IHN0dWZmIHdpdGhvdXQgdHJhbnNpdGlvblxuICB0aGlzLmxheW91dEl0ZW1zKCBpdGVtcywgdHJ1ZSApO1xuICB0aGlzLnJldmVhbCggaXRlbXMgKTtcbiAgLy8gbGF5b3V0IHByZXZpb3VzIGl0ZW1zXG4gIHRoaXMubGF5b3V0SXRlbXMoIHByZXZpb3VzSXRlbXMgKTtcbn07XG5cbi8qKlxuICogcmV2ZWFsIGEgY29sbGVjdGlvbiBvZiBpdGVtc1xuICogQHBhcmFtIHtBcnJheSBvZiBPdXRsYXllci5JdGVtc30gaXRlbXNcbiAqL1xucHJvdG8ucmV2ZWFsID0gZnVuY3Rpb24oIGl0ZW1zICkge1xuICB0aGlzLl9lbWl0Q29tcGxldGVPbkl0ZW1zKCAncmV2ZWFsJywgaXRlbXMgKTtcbiAgaWYgKCAhaXRlbXMgfHwgIWl0ZW1zLmxlbmd0aCApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIHN0YWdnZXIgPSB0aGlzLnVwZGF0ZVN0YWdnZXIoKTtcbiAgaXRlbXMuZm9yRWFjaCggZnVuY3Rpb24oIGl0ZW0sIGkgKSB7XG4gICAgaXRlbS5zdGFnZ2VyKCBpICogc3RhZ2dlciApO1xuICAgIGl0ZW0ucmV2ZWFsKCk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBoaWRlIGEgY29sbGVjdGlvbiBvZiBpdGVtc1xuICogQHBhcmFtIHtBcnJheSBvZiBPdXRsYXllci5JdGVtc30gaXRlbXNcbiAqL1xucHJvdG8uaGlkZSA9IGZ1bmN0aW9uKCBpdGVtcyApIHtcbiAgdGhpcy5fZW1pdENvbXBsZXRlT25JdGVtcyggJ2hpZGUnLCBpdGVtcyApO1xuICBpZiAoICFpdGVtcyB8fCAhaXRlbXMubGVuZ3RoICkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgc3RhZ2dlciA9IHRoaXMudXBkYXRlU3RhZ2dlcigpO1xuICBpdGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggaXRlbSwgaSApIHtcbiAgICBpdGVtLnN0YWdnZXIoIGkgKiBzdGFnZ2VyICk7XG4gICAgaXRlbS5oaWRlKCk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiByZXZlYWwgaXRlbSBlbGVtZW50c1xuICogQHBhcmFtIHtBcnJheX0sIHtFbGVtZW50fSwge05vZGVMaXN0fSBpdGVtc1xuICovXG5wcm90by5yZXZlYWxJdGVtRWxlbWVudHMgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIHZhciBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoIGVsZW1zICk7XG4gIHRoaXMucmV2ZWFsKCBpdGVtcyApO1xufTtcblxuLyoqXG4gKiBoaWRlIGl0ZW0gZWxlbWVudHNcbiAqIEBwYXJhbSB7QXJyYXl9LCB7RWxlbWVudH0sIHtOb2RlTGlzdH0gaXRlbXNcbiAqL1xucHJvdG8uaGlkZUl0ZW1FbGVtZW50cyA9IGZ1bmN0aW9uKCBlbGVtcyApIHtcbiAgdmFyIGl0ZW1zID0gdGhpcy5nZXRJdGVtcyggZWxlbXMgKTtcbiAgdGhpcy5oaWRlKCBpdGVtcyApO1xufTtcblxuLyoqXG4gKiBnZXQgT3V0bGF5ZXIuSXRlbSwgZ2l2ZW4gYW4gRWxlbWVudFxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybnMge091dGxheWVyLkl0ZW19IGl0ZW1cbiAqL1xucHJvdG8uZ2V0SXRlbSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuICAvLyBsb29wIHRocm91Z2ggaXRlbXMgdG8gZ2V0IHRoZSBvbmUgdGhhdCBtYXRjaGVzXG4gIGZvciAoIHZhciBpPTA7IGkgPCB0aGlzLml0ZW1zLmxlbmd0aDsgaSsrICkge1xuICAgIHZhciBpdGVtID0gdGhpcy5pdGVtc1tpXTtcbiAgICBpZiAoIGl0ZW0uZWxlbWVudCA9PSBlbGVtICkge1xuICAgICAgLy8gcmV0dXJuIGl0ZW1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBnZXQgY29sbGVjdGlvbiBvZiBPdXRsYXllci5JdGVtcywgZ2l2ZW4gRWxlbWVudHNcbiAqIEBwYXJhbSB7QXJyYXl9IGVsZW1zXG4gKiBAcmV0dXJucyB7QXJyYXl9IGl0ZW1zIC0gT3V0bGF5ZXIuSXRlbXNcbiAqL1xucHJvdG8uZ2V0SXRlbXMgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIGVsZW1zID0gdXRpbHMubWFrZUFycmF5KCBlbGVtcyApO1xuICB2YXIgaXRlbXMgPSBbXTtcbiAgZWxlbXMuZm9yRWFjaCggZnVuY3Rpb24oIGVsZW0gKSB7XG4gICAgdmFyIGl0ZW0gPSB0aGlzLmdldEl0ZW0oIGVsZW0gKTtcbiAgICBpZiAoIGl0ZW0gKSB7XG4gICAgICBpdGVtcy5wdXNoKCBpdGVtICk7XG4gICAgfVxuICB9LCB0aGlzICk7XG5cbiAgcmV0dXJuIGl0ZW1zO1xufTtcblxuLyoqXG4gKiByZW1vdmUgZWxlbWVudChzKSBmcm9tIGluc3RhbmNlIGFuZCBET01cbiAqIEBwYXJhbSB7QXJyYXkgb3IgTm9kZUxpc3Qgb3IgRWxlbWVudH0gZWxlbXNcbiAqL1xucHJvdG8ucmVtb3ZlID0gZnVuY3Rpb24oIGVsZW1zICkge1xuICB2YXIgcmVtb3ZlSXRlbXMgPSB0aGlzLmdldEl0ZW1zKCBlbGVtcyApO1xuXG4gIHRoaXMuX2VtaXRDb21wbGV0ZU9uSXRlbXMoICdyZW1vdmUnLCByZW1vdmVJdGVtcyApO1xuXG4gIC8vIGJhaWwgaWYgbm8gaXRlbXMgdG8gcmVtb3ZlXG4gIGlmICggIXJlbW92ZUl0ZW1zIHx8ICFyZW1vdmVJdGVtcy5sZW5ndGggKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVtb3ZlSXRlbXMuZm9yRWFjaCggZnVuY3Rpb24oIGl0ZW0gKSB7XG4gICAgaXRlbS5yZW1vdmUoKTtcbiAgICAvLyByZW1vdmUgaXRlbSBmcm9tIGNvbGxlY3Rpb25cbiAgICB1dGlscy5yZW1vdmVGcm9tKCB0aGlzLml0ZW1zLCBpdGVtICk7XG4gIH0sIHRoaXMgKTtcbn07XG5cbi8vIC0tLS0tIGRlc3Ryb3kgLS0tLS0gLy9cblxuLy8gcmVtb3ZlIGFuZCBkaXNhYmxlIE91dGxheWVyIGluc3RhbmNlXG5wcm90by5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gIC8vIGNsZWFuIHVwIGR5bmFtaWMgc3R5bGVzXG4gIHZhciBzdHlsZSA9IHRoaXMuZWxlbWVudC5zdHlsZTtcbiAgc3R5bGUuaGVpZ2h0ID0gJyc7XG4gIHN0eWxlLnBvc2l0aW9uID0gJyc7XG4gIHN0eWxlLndpZHRoID0gJyc7XG4gIC8vIGRlc3Ryb3kgaXRlbXNcbiAgdGhpcy5pdGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggaXRlbSApIHtcbiAgICBpdGVtLmRlc3Ryb3koKTtcbiAgfSk7XG5cbiAgdGhpcy51bmJpbmRSZXNpemUoKTtcblxuICB2YXIgaWQgPSB0aGlzLmVsZW1lbnQub3V0bGF5ZXJHVUlEO1xuICBkZWxldGUgaW5zdGFuY2VzWyBpZCBdOyAvLyByZW1vdmUgcmVmZXJlbmNlIHRvIGluc3RhbmNlIGJ5IGlkXG4gIGRlbGV0ZSB0aGlzLmVsZW1lbnQub3V0bGF5ZXJHVUlEO1xuICAvLyByZW1vdmUgZGF0YSBmb3IgalF1ZXJ5XG4gIGlmICggalF1ZXJ5ICkge1xuICAgIGpRdWVyeS5yZW1vdmVEYXRhKCB0aGlzLmVsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IubmFtZXNwYWNlICk7XG4gIH1cblxufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG4vKipcbiAqIGdldCBPdXRsYXllciBpbnN0YW5jZSBmcm9tIGVsZW1lbnRcbiAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbVxuICogQHJldHVybnMge091dGxheWVyfVxuICovXG5PdXRsYXllci5kYXRhID0gZnVuY3Rpb24oIGVsZW0gKSB7XG4gIGVsZW0gPSB1dGlscy5nZXRRdWVyeUVsZW1lbnQoIGVsZW0gKTtcbiAgdmFyIGlkID0gZWxlbSAmJiBlbGVtLm91dGxheWVyR1VJRDtcbiAgcmV0dXJuIGlkICYmIGluc3RhbmNlc1sgaWQgXTtcbn07XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY3JlYXRlIE91dGxheWVyIGNsYXNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbi8qKlxuICogY3JlYXRlIGEgbGF5b3V0IGNsYXNzXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKi9cbk91dGxheWVyLmNyZWF0ZSA9IGZ1bmN0aW9uKCBuYW1lc3BhY2UsIG9wdGlvbnMgKSB7XG4gIC8vIHN1Yi1jbGFzcyBPdXRsYXllclxuICB2YXIgTGF5b3V0ID0gc3ViY2xhc3MoIE91dGxheWVyICk7XG4gIC8vIGFwcGx5IG5ldyBvcHRpb25zIGFuZCBjb21wYXRPcHRpb25zXG4gIExheW91dC5kZWZhdWx0cyA9IHV0aWxzLmV4dGVuZCgge30sIE91dGxheWVyLmRlZmF1bHRzICk7XG4gIHV0aWxzLmV4dGVuZCggTGF5b3V0LmRlZmF1bHRzLCBvcHRpb25zICk7XG4gIExheW91dC5jb21wYXRPcHRpb25zID0gdXRpbHMuZXh0ZW5kKCB7fSwgT3V0bGF5ZXIuY29tcGF0T3B0aW9ucyAgKTtcblxuICBMYXlvdXQubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuXG4gIExheW91dC5kYXRhID0gT3V0bGF5ZXIuZGF0YTtcblxuICAvLyBzdWItY2xhc3MgSXRlbVxuICBMYXlvdXQuSXRlbSA9IHN1YmNsYXNzKCBJdGVtICk7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZGVjbGFyYXRpdmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuICB1dGlscy5odG1sSW5pdCggTGF5b3V0LCBuYW1lc3BhY2UgKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBqUXVlcnkgYnJpZGdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbiAgLy8gbWFrZSBpbnRvIGpRdWVyeSBwbHVnaW5cbiAgaWYgKCBqUXVlcnkgJiYgalF1ZXJ5LmJyaWRnZXQgKSB7XG4gICAgalF1ZXJ5LmJyaWRnZXQoIG5hbWVzcGFjZSwgTGF5b3V0ICk7XG4gIH1cblxuICByZXR1cm4gTGF5b3V0O1xufTtcblxuZnVuY3Rpb24gc3ViY2xhc3MoIFBhcmVudCApIHtcbiAgZnVuY3Rpb24gU3ViQ2xhc3MoKSB7XG4gICAgUGFyZW50LmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcbiAgfVxuXG4gIFN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIFBhcmVudC5wcm90b3R5cGUgKTtcbiAgU3ViQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ViQ2xhc3M7XG5cbiAgcmV0dXJuIFN1YkNsYXNzO1xufVxuXG4vLyAtLS0tLSBoZWxwZXJzIC0tLS0tIC8vXG5cbi8vIGhvdyBtYW55IG1pbGxpc2Vjb25kcyBhcmUgaW4gZWFjaCB1bml0XG52YXIgbXNVbml0cyA9IHtcbiAgbXM6IDEsXG4gIHM6IDEwMDBcbn07XG5cbi8vIG11bmdlIHRpbWUtbGlrZSBwYXJhbWV0ZXIgaW50byBtaWxsaXNlY29uZCBudW1iZXJcbi8vICcwLjRzJyAtPiA0MFxuZnVuY3Rpb24gZ2V0TWlsbGlzZWNvbmRzKCB0aW1lICkge1xuICBpZiAoIHR5cGVvZiB0aW1lID09ICdudW1iZXInICkge1xuICAgIHJldHVybiB0aW1lO1xuICB9XG4gIHZhciBtYXRjaGVzID0gdGltZS5tYXRjaCggLyheXFxkKlxcLj9cXGQqKShcXHcqKS8gKTtcbiAgdmFyIG51bSA9IG1hdGNoZXMgJiYgbWF0Y2hlc1sxXTtcbiAgdmFyIHVuaXQgPSBtYXRjaGVzICYmIG1hdGNoZXNbMl07XG4gIGlmICggIW51bS5sZW5ndGggKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgbnVtID0gcGFyc2VGbG9hdCggbnVtICk7XG4gIHZhciBtdWx0ID0gbXNVbml0c1sgdW5pdCBdIHx8IDE7XG4gIHJldHVybiBudW0gKiBtdWx0O1xufVxuXG4vLyAtLS0tLSBmaW4gLS0tLS0gLy9cblxuLy8gYmFjayBpbiBnbG9iYWxcbk91dGxheWVyLkl0ZW0gPSBJdGVtO1xuXG5yZXR1cm4gT3V0bGF5ZXI7XG5cbn0pKTtcbiIsIi8qKlxuICogRml6enkgVUkgdXRpbHMgdjIuMC43XG4gKiBNSVQgbGljZW5zZVxuICovXG5cbi8qanNoaW50IGJyb3dzZXI6IHRydWUsIHVuZGVmOiB0cnVlLCB1bnVzZWQ6IHRydWUsIHN0cmljdDogdHJ1ZSAqL1xuXG4oIGZ1bmN0aW9uKCB3aW5kb3csIGZhY3RvcnkgKSB7XG4gIC8vIHVuaXZlcnNhbCBtb2R1bGUgZGVmaW5pdGlvblxuICAvKmpzaGludCBzdHJpY3Q6IGZhbHNlICovIC8qZ2xvYmFscyBkZWZpbmUsIG1vZHVsZSwgcmVxdWlyZSAqL1xuXG4gIGlmICggdHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgKSB7XG4gICAgLy8gQU1EXG4gICAgZGVmaW5lKCBbXG4gICAgICAnZGVzYW5kcm8tbWF0Y2hlcy1zZWxlY3Rvci9tYXRjaGVzLXNlbGVjdG9yJ1xuICAgIF0sIGZ1bmN0aW9uKCBtYXRjaGVzU2VsZWN0b3IgKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeSggd2luZG93LCBtYXRjaGVzU2VsZWN0b3IgKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmICggdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cyApIHtcbiAgICAvLyBDb21tb25KU1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShcbiAgICAgIHdpbmRvdyxcbiAgICAgIHJlcXVpcmUoJ2Rlc2FuZHJvLW1hdGNoZXMtc2VsZWN0b3InKVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gYnJvd3NlciBnbG9iYWxcbiAgICB3aW5kb3cuZml6enlVSVV0aWxzID0gZmFjdG9yeShcbiAgICAgIHdpbmRvdyxcbiAgICAgIHdpbmRvdy5tYXRjaGVzU2VsZWN0b3JcbiAgICApO1xuICB9XG5cbn0oIHdpbmRvdywgZnVuY3Rpb24gZmFjdG9yeSggd2luZG93LCBtYXRjaGVzU2VsZWN0b3IgKSB7XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0ge307XG5cbi8vIC0tLS0tIGV4dGVuZCAtLS0tLSAvL1xuXG4vLyBleHRlbmRzIG9iamVjdHNcbnV0aWxzLmV4dGVuZCA9IGZ1bmN0aW9uKCBhLCBiICkge1xuICBmb3IgKCB2YXIgcHJvcCBpbiBiICkge1xuICAgIGFbIHByb3AgXSA9IGJbIHByb3AgXTtcbiAgfVxuICByZXR1cm4gYTtcbn07XG5cbi8vIC0tLS0tIG1vZHVsbyAtLS0tLSAvL1xuXG51dGlscy5tb2R1bG8gPSBmdW5jdGlvbiggbnVtLCBkaXYgKSB7XG4gIHJldHVybiAoICggbnVtICUgZGl2ICkgKyBkaXYgKSAlIGRpdjtcbn07XG5cbi8vIC0tLS0tIG1ha2VBcnJheSAtLS0tLSAvL1xuXG52YXIgYXJyYXlTbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcblxuLy8gdHVybiBlbGVtZW50IG9yIG5vZGVMaXN0IGludG8gYW4gYXJyYXlcbnV0aWxzLm1ha2VBcnJheSA9IGZ1bmN0aW9uKCBvYmogKSB7XG4gIGlmICggQXJyYXkuaXNBcnJheSggb2JqICkgKSB7XG4gICAgLy8gdXNlIG9iamVjdCBpZiBhbHJlYWR5IGFuIGFycmF5XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuICAvLyByZXR1cm4gZW1wdHkgYXJyYXkgaWYgdW5kZWZpbmVkIG9yIG51bGwuICM2XG4gIGlmICggb2JqID09PSBudWxsIHx8IG9iaiA9PT0gdW5kZWZpbmVkICkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBpc0FycmF5TGlrZSA9IHR5cGVvZiBvYmogPT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iai5sZW5ndGggPT0gJ251bWJlcic7XG4gIGlmICggaXNBcnJheUxpa2UgKSB7XG4gICAgLy8gY29udmVydCBub2RlTGlzdCB0byBhcnJheVxuICAgIHJldHVybiBhcnJheVNsaWNlLmNhbGwoIG9iaiApO1xuICB9XG5cbiAgLy8gYXJyYXkgb2Ygc2luZ2xlIGluZGV4XG4gIHJldHVybiBbIG9iaiBdO1xufTtcblxuLy8gLS0tLS0gcmVtb3ZlRnJvbSAtLS0tLSAvL1xuXG51dGlscy5yZW1vdmVGcm9tID0gZnVuY3Rpb24oIGFyeSwgb2JqICkge1xuICB2YXIgaW5kZXggPSBhcnkuaW5kZXhPZiggb2JqICk7XG4gIGlmICggaW5kZXggIT0gLTEgKSB7XG4gICAgYXJ5LnNwbGljZSggaW5kZXgsIDEgKTtcbiAgfVxufTtcblxuLy8gLS0tLS0gZ2V0UGFyZW50IC0tLS0tIC8vXG5cbnV0aWxzLmdldFBhcmVudCA9IGZ1bmN0aW9uKCBlbGVtLCBzZWxlY3RvciApIHtcbiAgd2hpbGUgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbSAhPSBkb2N1bWVudC5ib2R5ICkge1xuICAgIGVsZW0gPSBlbGVtLnBhcmVudE5vZGU7XG4gICAgaWYgKCBtYXRjaGVzU2VsZWN0b3IoIGVsZW0sIHNlbGVjdG9yICkgKSB7XG4gICAgICByZXR1cm4gZWxlbTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIC0tLS0tIGdldFF1ZXJ5RWxlbWVudCAtLS0tLSAvL1xuXG4vLyB1c2UgZWxlbWVudCBhcyBzZWxlY3RvciBzdHJpbmdcbnV0aWxzLmdldFF1ZXJ5RWxlbWVudCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuICBpZiAoIHR5cGVvZiBlbGVtID09ICdzdHJpbmcnICkge1xuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCBlbGVtICk7XG4gIH1cbiAgcmV0dXJuIGVsZW07XG59O1xuXG4vLyAtLS0tLSBoYW5kbGVFdmVudCAtLS0tLSAvL1xuXG4vLyBlbmFibGUgLm9udHlwZSB0byB0cmlnZ2VyIGZyb20gLmFkZEV2ZW50TGlzdGVuZXIoIGVsZW0sICd0eXBlJyApXG51dGlscy5oYW5kbGVFdmVudCA9IGZ1bmN0aW9uKCBldmVudCApIHtcbiAgdmFyIG1ldGhvZCA9ICdvbicgKyBldmVudC50eXBlO1xuICBpZiAoIHRoaXNbIG1ldGhvZCBdICkge1xuICAgIHRoaXNbIG1ldGhvZCBdKCBldmVudCApO1xuICB9XG59O1xuXG4vLyAtLS0tLSBmaWx0ZXJGaW5kRWxlbWVudHMgLS0tLS0gLy9cblxudXRpbHMuZmlsdGVyRmluZEVsZW1lbnRzID0gZnVuY3Rpb24oIGVsZW1zLCBzZWxlY3RvciApIHtcbiAgLy8gbWFrZSBhcnJheSBvZiBlbGVtc1xuICBlbGVtcyA9IHV0aWxzLm1ha2VBcnJheSggZWxlbXMgKTtcbiAgdmFyIGZmRWxlbXMgPSBbXTtcblxuICBlbGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggZWxlbSApIHtcbiAgICAvLyBjaGVjayB0aGF0IGVsZW0gaXMgYW4gYWN0dWFsIGVsZW1lbnRcbiAgICBpZiAoICEoIGVsZW0gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCApICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBhZGQgZWxlbSBpZiBubyBzZWxlY3RvclxuICAgIGlmICggIXNlbGVjdG9yICkge1xuICAgICAgZmZFbGVtcy5wdXNoKCBlbGVtICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGZpbHRlciAmIGZpbmQgaXRlbXMgaWYgd2UgaGF2ZSBhIHNlbGVjdG9yXG4gICAgLy8gZmlsdGVyXG4gICAgaWYgKCBtYXRjaGVzU2VsZWN0b3IoIGVsZW0sIHNlbGVjdG9yICkgKSB7XG4gICAgICBmZkVsZW1zLnB1c2goIGVsZW0gKTtcbiAgICB9XG4gICAgLy8gZmluZCBjaGlsZHJlblxuICAgIHZhciBjaGlsZEVsZW1zID0gZWxlbS5xdWVyeVNlbGVjdG9yQWxsKCBzZWxlY3RvciApO1xuICAgIC8vIGNvbmNhdCBjaGlsZEVsZW1zIHRvIGZpbHRlckZvdW5kIGFycmF5XG4gICAgZm9yICggdmFyIGk9MDsgaSA8IGNoaWxkRWxlbXMubGVuZ3RoOyBpKysgKSB7XG4gICAgICBmZkVsZW1zLnB1c2goIGNoaWxkRWxlbXNbaV0gKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmZkVsZW1zO1xufTtcblxuLy8gLS0tLS0gZGVib3VuY2VNZXRob2QgLS0tLS0gLy9cblxudXRpbHMuZGVib3VuY2VNZXRob2QgPSBmdW5jdGlvbiggX2NsYXNzLCBtZXRob2ROYW1lLCB0aHJlc2hvbGQgKSB7XG4gIHRocmVzaG9sZCA9IHRocmVzaG9sZCB8fCAxMDA7XG4gIC8vIG9yaWdpbmFsIG1ldGhvZFxuICB2YXIgbWV0aG9kID0gX2NsYXNzLnByb3RvdHlwZVsgbWV0aG9kTmFtZSBdO1xuICB2YXIgdGltZW91dE5hbWUgPSBtZXRob2ROYW1lICsgJ1RpbWVvdXQnO1xuXG4gIF9jbGFzcy5wcm90b3R5cGVbIG1ldGhvZE5hbWUgXSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciB0aW1lb3V0ID0gdGhpc1sgdGltZW91dE5hbWUgXTtcbiAgICBjbGVhclRpbWVvdXQoIHRpbWVvdXQgKTtcblxuICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgdGhpc1sgdGltZW91dE5hbWUgXSA9IHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuICAgICAgbWV0aG9kLmFwcGx5KCBfdGhpcywgYXJncyApO1xuICAgICAgZGVsZXRlIF90aGlzWyB0aW1lb3V0TmFtZSBdO1xuICAgIH0sIHRocmVzaG9sZCApO1xuICB9O1xufTtcblxuLy8gLS0tLS0gZG9jUmVhZHkgLS0tLS0gLy9cblxudXRpbHMuZG9jUmVhZHkgPSBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG4gIHZhciByZWFkeVN0YXRlID0gZG9jdW1lbnQucmVhZHlTdGF0ZTtcbiAgaWYgKCByZWFkeVN0YXRlID09ICdjb21wbGV0ZScgfHwgcmVhZHlTdGF0ZSA9PSAnaW50ZXJhY3RpdmUnICkge1xuICAgIC8vIGRvIGFzeW5jIHRvIGFsbG93IGZvciBvdGhlciBzY3JpcHRzIHRvIHJ1bi4gbWV0YWZpenp5L2ZsaWNraXR5IzQ0MVxuICAgIHNldFRpbWVvdXQoIGNhbGxiYWNrICk7XG4gIH0gZWxzZSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ0RPTUNvbnRlbnRMb2FkZWQnLCBjYWxsYmFjayApO1xuICB9XG59O1xuXG4vLyAtLS0tLSBodG1sSW5pdCAtLS0tLSAvL1xuXG4vLyBodHRwOi8vamFtZXNyb2JlcnRzLm5hbWUvYmxvZy8yMDEwLzAyLzIyL3N0cmluZy1mdW5jdGlvbnMtZm9yLWphdmFzY3JpcHQtdHJpbS10by1jYW1lbC1jYXNlLXRvLWRhc2hlZC1hbmQtdG8tdW5kZXJzY29yZS9cbnV0aWxzLnRvRGFzaGVkID0gZnVuY3Rpb24oIHN0ciApIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKCAvKC4pKFtBLVpdKS9nLCBmdW5jdGlvbiggbWF0Y2gsICQxLCAkMiApIHtcbiAgICByZXR1cm4gJDEgKyAnLScgKyAkMjtcbiAgfSkudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBjb25zb2xlID0gd2luZG93LmNvbnNvbGU7XG4vKipcbiAqIGFsbG93IHVzZXIgdG8gaW5pdGlhbGl6ZSBjbGFzc2VzIHZpYSBbZGF0YS1uYW1lc3BhY2VdIG9yIC5qcy1uYW1lc3BhY2UgY2xhc3NcbiAqIGh0bWxJbml0KCBXaWRnZXQsICd3aWRnZXROYW1lJyApXG4gKiBvcHRpb25zIGFyZSBwYXJzZWQgZnJvbSBkYXRhLW5hbWVzcGFjZS1vcHRpb25zXG4gKi9cbnV0aWxzLmh0bWxJbml0ID0gZnVuY3Rpb24oIFdpZGdldENsYXNzLCBuYW1lc3BhY2UgKSB7XG4gIHV0aWxzLmRvY1JlYWR5KCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZGFzaGVkTmFtZXNwYWNlID0gdXRpbHMudG9EYXNoZWQoIG5hbWVzcGFjZSApO1xuICAgIHZhciBkYXRhQXR0ciA9ICdkYXRhLScgKyBkYXNoZWROYW1lc3BhY2U7XG4gICAgdmFyIGRhdGFBdHRyRWxlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCAnWycgKyBkYXRhQXR0ciArICddJyApO1xuICAgIHZhciBqc0Rhc2hFbGVtcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICcuanMtJyArIGRhc2hlZE5hbWVzcGFjZSApO1xuICAgIHZhciBlbGVtcyA9IHV0aWxzLm1ha2VBcnJheSggZGF0YUF0dHJFbGVtcyApXG4gICAgICAuY29uY2F0KCB1dGlscy5tYWtlQXJyYXkoIGpzRGFzaEVsZW1zICkgKTtcbiAgICB2YXIgZGF0YU9wdGlvbnNBdHRyID0gZGF0YUF0dHIgKyAnLW9wdGlvbnMnO1xuICAgIHZhciBqUXVlcnkgPSB3aW5kb3cualF1ZXJ5O1xuXG4gICAgZWxlbXMuZm9yRWFjaCggZnVuY3Rpb24oIGVsZW0gKSB7XG4gICAgICB2YXIgYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKCBkYXRhQXR0ciApIHx8XG4gICAgICAgIGVsZW0uZ2V0QXR0cmlidXRlKCBkYXRhT3B0aW9uc0F0dHIgKTtcbiAgICAgIHZhciBvcHRpb25zO1xuICAgICAgdHJ5IHtcbiAgICAgICAgb3B0aW9ucyA9IGF0dHIgJiYgSlNPTi5wYXJzZSggYXR0ciApO1xuICAgICAgfSBjYXRjaCAoIGVycm9yICkge1xuICAgICAgICAvLyBsb2cgZXJyb3IsIGRvIG5vdCBpbml0aWFsaXplXG4gICAgICAgIGlmICggY29uc29sZSApIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCAnRXJyb3IgcGFyc2luZyAnICsgZGF0YUF0dHIgKyAnIG9uICcgKyBlbGVtLmNsYXNzTmFtZSArXG4gICAgICAgICAgJzogJyArIGVycm9yICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gaW5pdGlhbGl6ZVxuICAgICAgdmFyIGluc3RhbmNlID0gbmV3IFdpZGdldENsYXNzKCBlbGVtLCBvcHRpb25zICk7XG4gICAgICAvLyBtYWtlIGF2YWlsYWJsZSB2aWEgJCgpLmRhdGEoJ25hbWVzcGFjZScpXG4gICAgICBpZiAoIGpRdWVyeSApIHtcbiAgICAgICAgalF1ZXJ5LmRhdGEoIGVsZW0sIG5hbWVzcGFjZSwgaW5zdGFuY2UgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9KTtcbn07XG5cbi8vIC0tLS0tICAtLS0tLSAvL1xuXG5yZXR1cm4gdXRpbHM7XG5cbn0pKTtcbiIsIi8qKlxuICogbWF0Y2hlc1NlbGVjdG9yIHYyLjAuMlxuICogbWF0Y2hlc1NlbGVjdG9yKCBlbGVtZW50LCAnLnNlbGVjdG9yJyApXG4gKiBNSVQgbGljZW5zZVxuICovXG5cbi8qanNoaW50IGJyb3dzZXI6IHRydWUsIHN0cmljdDogdHJ1ZSwgdW5kZWY6IHRydWUsIHVudXNlZDogdHJ1ZSAqL1xuXG4oIGZ1bmN0aW9uKCB3aW5kb3csIGZhY3RvcnkgKSB7XG4gIC8qZ2xvYmFsIGRlZmluZTogZmFsc2UsIG1vZHVsZTogZmFsc2UgKi9cbiAgJ3VzZSBzdHJpY3QnO1xuICAvLyB1bml2ZXJzYWwgbW9kdWxlIGRlZmluaXRpb25cbiAgaWYgKCB0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCApIHtcbiAgICAvLyBBTURcbiAgICBkZWZpbmUoIGZhY3RvcnkgKTtcbiAgfSBlbHNlIGlmICggdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cyApIHtcbiAgICAvLyBDb21tb25KU1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuICB9IGVsc2Uge1xuICAgIC8vIGJyb3dzZXIgZ2xvYmFsXG4gICAgd2luZG93Lm1hdGNoZXNTZWxlY3RvciA9IGZhY3RvcnkoKTtcbiAgfVxuXG59KCB3aW5kb3csIGZ1bmN0aW9uIGZhY3RvcnkoKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICB2YXIgbWF0Y2hlc01ldGhvZCA9ICggZnVuY3Rpb24oKSB7XG4gICAgdmFyIEVsZW1Qcm90byA9IHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZTtcbiAgICAvLyBjaGVjayBmb3IgdGhlIHN0YW5kYXJkIG1ldGhvZCBuYW1lIGZpcnN0XG4gICAgaWYgKCBFbGVtUHJvdG8ubWF0Y2hlcyApIHtcbiAgICAgIHJldHVybiAnbWF0Y2hlcyc7XG4gICAgfVxuICAgIC8vIGNoZWNrIHVuLXByZWZpeGVkXG4gICAgaWYgKCBFbGVtUHJvdG8ubWF0Y2hlc1NlbGVjdG9yICkge1xuICAgICAgcmV0dXJuICdtYXRjaGVzU2VsZWN0b3InO1xuICAgIH1cbiAgICAvLyBjaGVjayB2ZW5kb3IgcHJlZml4ZXNcbiAgICB2YXIgcHJlZml4ZXMgPSBbICd3ZWJraXQnLCAnbW96JywgJ21zJywgJ28nIF07XG5cbiAgICBmb3IgKCB2YXIgaT0wOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKysgKSB7XG4gICAgICB2YXIgcHJlZml4ID0gcHJlZml4ZXNbaV07XG4gICAgICB2YXIgbWV0aG9kID0gcHJlZml4ICsgJ01hdGNoZXNTZWxlY3Rvcic7XG4gICAgICBpZiAoIEVsZW1Qcm90b1sgbWV0aG9kIF0gKSB7XG4gICAgICAgIHJldHVybiBtZXRob2Q7XG4gICAgICB9XG4gICAgfVxuICB9KSgpO1xuXG4gIHJldHVybiBmdW5jdGlvbiBtYXRjaGVzU2VsZWN0b3IoIGVsZW0sIHNlbGVjdG9yICkge1xuICAgIHJldHVybiBlbGVtWyBtYXRjaGVzTWV0aG9kIF0oIHNlbGVjdG9yICk7XG4gIH07XG5cbn0pKTtcbiIsIi8qKlxuICogT3V0bGF5ZXIgSXRlbVxuICovXG5cbiggZnVuY3Rpb24oIHdpbmRvdywgZmFjdG9yeSApIHtcbiAgLy8gdW5pdmVyc2FsIG1vZHVsZSBkZWZpbml0aW9uXG4gIC8qIGpzaGludCBzdHJpY3Q6IGZhbHNlICovIC8qIGdsb2JhbHMgZGVmaW5lLCBtb2R1bGUsIHJlcXVpcmUgKi9cbiAgaWYgKCB0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCApIHtcbiAgICAvLyBBTUQgLSBSZXF1aXJlSlNcbiAgICBkZWZpbmUoIFtcbiAgICAgICAgJ2V2LWVtaXR0ZXIvZXYtZW1pdHRlcicsXG4gICAgICAgICdnZXQtc2l6ZS9nZXQtc2l6ZSdcbiAgICAgIF0sXG4gICAgICBmYWN0b3J5XG4gICAgKTtcbiAgfSBlbHNlIGlmICggdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cyApIHtcbiAgICAvLyBDb21tb25KUyAtIEJyb3dzZXJpZnksIFdlYnBhY2tcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoXG4gICAgICByZXF1aXJlKCdldi1lbWl0dGVyJyksXG4gICAgICByZXF1aXJlKCdnZXQtc2l6ZScpXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBicm93c2VyIGdsb2JhbFxuICAgIHdpbmRvdy5PdXRsYXllciA9IHt9O1xuICAgIHdpbmRvdy5PdXRsYXllci5JdGVtID0gZmFjdG9yeShcbiAgICAgIHdpbmRvdy5FdkVtaXR0ZXIsXG4gICAgICB3aW5kb3cuZ2V0U2l6ZVxuICAgICk7XG4gIH1cblxufSggd2luZG93LCBmdW5jdGlvbiBmYWN0b3J5KCBFdkVtaXR0ZXIsIGdldFNpemUgKSB7XG4ndXNlIHN0cmljdCc7XG5cbi8vIC0tLS0tIGhlbHBlcnMgLS0tLS0gLy9cblxuZnVuY3Rpb24gaXNFbXB0eU9iaiggb2JqICkge1xuICBmb3IgKCB2YXIgcHJvcCBpbiBvYmogKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHByb3AgPSBudWxsO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ1NTMyBzdXBwb3J0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cblxudmFyIGRvY0VsZW1TdHlsZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZTtcblxudmFyIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IHR5cGVvZiBkb2NFbGVtU3R5bGUudHJhbnNpdGlvbiA9PSAnc3RyaW5nJyA/XG4gICd0cmFuc2l0aW9uJyA6ICdXZWJraXRUcmFuc2l0aW9uJztcbnZhciB0cmFuc2Zvcm1Qcm9wZXJ0eSA9IHR5cGVvZiBkb2NFbGVtU3R5bGUudHJhbnNmb3JtID09ICdzdHJpbmcnID9cbiAgJ3RyYW5zZm9ybScgOiAnV2Via2l0VHJhbnNmb3JtJztcblxudmFyIHRyYW5zaXRpb25FbmRFdmVudCA9IHtcbiAgV2Via2l0VHJhbnNpdGlvbjogJ3dlYmtpdFRyYW5zaXRpb25FbmQnLFxuICB0cmFuc2l0aW9uOiAndHJhbnNpdGlvbmVuZCdcbn1bIHRyYW5zaXRpb25Qcm9wZXJ0eSBdO1xuXG4vLyBjYWNoZSBhbGwgdmVuZG9yIHByb3BlcnRpZXMgdGhhdCBjb3VsZCBoYXZlIHZlbmRvciBwcmVmaXhcbnZhciB2ZW5kb3JQcm9wZXJ0aWVzID0ge1xuICB0cmFuc2Zvcm06IHRyYW5zZm9ybVByb3BlcnR5LFxuICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uUHJvcGVydHksXG4gIHRyYW5zaXRpb25EdXJhdGlvbjogdHJhbnNpdGlvblByb3BlcnR5ICsgJ0R1cmF0aW9uJyxcbiAgdHJhbnNpdGlvblByb3BlcnR5OiB0cmFuc2l0aW9uUHJvcGVydHkgKyAnUHJvcGVydHknLFxuICB0cmFuc2l0aW9uRGVsYXk6IHRyYW5zaXRpb25Qcm9wZXJ0eSArICdEZWxheSdcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEl0ZW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuZnVuY3Rpb24gSXRlbSggZWxlbWVudCwgbGF5b3V0ICkge1xuICBpZiAoICFlbGVtZW50ICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gIC8vIHBhcmVudCBsYXlvdXQgY2xhc3MsIGkuZS4gTWFzb25yeSwgSXNvdG9wZSwgb3IgUGFja2VyeVxuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5wb3NpdGlvbiA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcblxuICB0aGlzLl9jcmVhdGUoKTtcbn1cblxuLy8gaW5oZXJpdCBFdkVtaXR0ZXJcbnZhciBwcm90byA9IEl0ZW0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggRXZFbWl0dGVyLnByb3RvdHlwZSApO1xucHJvdG8uY29uc3RydWN0b3IgPSBJdGVtO1xuXG5wcm90by5fY3JlYXRlID0gZnVuY3Rpb24oKSB7XG4gIC8vIHRyYW5zaXRpb24gb2JqZWN0c1xuICB0aGlzLl90cmFuc24gPSB7XG4gICAgaW5nUHJvcGVydGllczoge30sXG4gICAgY2xlYW46IHt9LFxuICAgIG9uRW5kOiB7fVxuICB9O1xuXG4gIHRoaXMuY3NzKHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICB9KTtcbn07XG5cbi8vIHRyaWdnZXIgc3BlY2lmaWVkIGhhbmRsZXIgZm9yIGV2ZW50IHR5cGVcbnByb3RvLmhhbmRsZUV2ZW50ID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuICB2YXIgbWV0aG9kID0gJ29uJyArIGV2ZW50LnR5cGU7XG4gIGlmICggdGhpc1sgbWV0aG9kIF0gKSB7XG4gICAgdGhpc1sgbWV0aG9kIF0oIGV2ZW50ICk7XG4gIH1cbn07XG5cbnByb3RvLmdldFNpemUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5zaXplID0gZ2V0U2l6ZSggdGhpcy5lbGVtZW50ICk7XG59O1xuXG4vKipcbiAqIGFwcGx5IENTUyBzdHlsZXMgdG8gZWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IHN0eWxlXG4gKi9cbnByb3RvLmNzcyA9IGZ1bmN0aW9uKCBzdHlsZSApIHtcbiAgdmFyIGVsZW1TdHlsZSA9IHRoaXMuZWxlbWVudC5zdHlsZTtcblxuICBmb3IgKCB2YXIgcHJvcCBpbiBzdHlsZSApIHtcbiAgICAvLyB1c2UgdmVuZG9yIHByb3BlcnR5IGlmIGF2YWlsYWJsZVxuICAgIHZhciBzdXBwb3J0ZWRQcm9wID0gdmVuZG9yUHJvcGVydGllc1sgcHJvcCBdIHx8IHByb3A7XG4gICAgZWxlbVN0eWxlWyBzdXBwb3J0ZWRQcm9wIF0gPSBzdHlsZVsgcHJvcCBdO1xuICB9XG59O1xuXG4gLy8gbWVhc3VyZSBwb3NpdGlvbiwgYW5kIHNldHMgaXRcbnByb3RvLmdldFBvc2l0aW9uID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoIHRoaXMuZWxlbWVudCApO1xuICB2YXIgaXNPcmlnaW5MZWZ0ID0gdGhpcy5sYXlvdXQuX2dldE9wdGlvbignb3JpZ2luTGVmdCcpO1xuICB2YXIgaXNPcmlnaW5Ub3AgPSB0aGlzLmxheW91dC5fZ2V0T3B0aW9uKCdvcmlnaW5Ub3AnKTtcbiAgdmFyIHhWYWx1ZSA9IHN0eWxlWyBpc09yaWdpbkxlZnQgPyAnbGVmdCcgOiAncmlnaHQnIF07XG4gIHZhciB5VmFsdWUgPSBzdHlsZVsgaXNPcmlnaW5Ub3AgPyAndG9wJyA6ICdib3R0b20nIF07XG4gIHZhciB4ID0gcGFyc2VGbG9hdCggeFZhbHVlICk7XG4gIHZhciB5ID0gcGFyc2VGbG9hdCggeVZhbHVlICk7XG4gIC8vIGNvbnZlcnQgcGVyY2VudCB0byBwaXhlbHNcbiAgdmFyIGxheW91dFNpemUgPSB0aGlzLmxheW91dC5zaXplO1xuICBpZiAoIHhWYWx1ZS5pbmRleE9mKCclJykgIT0gLTEgKSB7XG4gICAgeCA9ICggeCAvIDEwMCApICogbGF5b3V0U2l6ZS53aWR0aDtcbiAgfVxuICBpZiAoIHlWYWx1ZS5pbmRleE9mKCclJykgIT0gLTEgKSB7XG4gICAgeSA9ICggeSAvIDEwMCApICogbGF5b3V0U2l6ZS5oZWlnaHQ7XG4gIH1cbiAgLy8gY2xlYW4gdXAgJ2F1dG8nIG9yIG90aGVyIG5vbi1pbnRlZ2VyIHZhbHVlc1xuICB4ID0gaXNOYU4oIHggKSA/IDAgOiB4O1xuICB5ID0gaXNOYU4oIHkgKSA/IDAgOiB5O1xuICAvLyByZW1vdmUgcGFkZGluZyBmcm9tIG1lYXN1cmVtZW50XG4gIHggLT0gaXNPcmlnaW5MZWZ0ID8gbGF5b3V0U2l6ZS5wYWRkaW5nTGVmdCA6IGxheW91dFNpemUucGFkZGluZ1JpZ2h0O1xuICB5IC09IGlzT3JpZ2luVG9wID8gbGF5b3V0U2l6ZS5wYWRkaW5nVG9wIDogbGF5b3V0U2l6ZS5wYWRkaW5nQm90dG9tO1xuXG4gIHRoaXMucG9zaXRpb24ueCA9IHg7XG4gIHRoaXMucG9zaXRpb24ueSA9IHk7XG59O1xuXG4vLyBzZXQgc2V0dGxlZCBwb3NpdGlvbiwgYXBwbHkgcGFkZGluZ1xucHJvdG8ubGF5b3V0UG9zaXRpb24gPSBmdW5jdGlvbigpIHtcbiAgdmFyIGxheW91dFNpemUgPSB0aGlzLmxheW91dC5zaXplO1xuICB2YXIgc3R5bGUgPSB7fTtcbiAgdmFyIGlzT3JpZ2luTGVmdCA9IHRoaXMubGF5b3V0Ll9nZXRPcHRpb24oJ29yaWdpbkxlZnQnKTtcbiAgdmFyIGlzT3JpZ2luVG9wID0gdGhpcy5sYXlvdXQuX2dldE9wdGlvbignb3JpZ2luVG9wJyk7XG5cbiAgLy8geFxuICB2YXIgeFBhZGRpbmcgPSBpc09yaWdpbkxlZnQgPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gIHZhciB4UHJvcGVydHkgPSBpc09yaWdpbkxlZnQgPyAnbGVmdCcgOiAncmlnaHQnO1xuICB2YXIgeFJlc2V0UHJvcGVydHkgPSBpc09yaWdpbkxlZnQgPyAncmlnaHQnIDogJ2xlZnQnO1xuXG4gIHZhciB4ID0gdGhpcy5wb3NpdGlvbi54ICsgbGF5b3V0U2l6ZVsgeFBhZGRpbmcgXTtcbiAgLy8gc2V0IGluIHBlcmNlbnRhZ2Ugb3IgcGl4ZWxzXG4gIHN0eWxlWyB4UHJvcGVydHkgXSA9IHRoaXMuZ2V0WFZhbHVlKCB4ICk7XG4gIC8vIHJlc2V0IG90aGVyIHByb3BlcnR5XG4gIHN0eWxlWyB4UmVzZXRQcm9wZXJ0eSBdID0gJyc7XG5cbiAgLy8geVxuICB2YXIgeVBhZGRpbmcgPSBpc09yaWdpblRvcCA/ICdwYWRkaW5nVG9wJyA6ICdwYWRkaW5nQm90dG9tJztcbiAgdmFyIHlQcm9wZXJ0eSA9IGlzT3JpZ2luVG9wID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgdmFyIHlSZXNldFByb3BlcnR5ID0gaXNPcmlnaW5Ub3AgPyAnYm90dG9tJyA6ICd0b3AnO1xuXG4gIHZhciB5ID0gdGhpcy5wb3NpdGlvbi55ICsgbGF5b3V0U2l6ZVsgeVBhZGRpbmcgXTtcbiAgLy8gc2V0IGluIHBlcmNlbnRhZ2Ugb3IgcGl4ZWxzXG4gIHN0eWxlWyB5UHJvcGVydHkgXSA9IHRoaXMuZ2V0WVZhbHVlKCB5ICk7XG4gIC8vIHJlc2V0IG90aGVyIHByb3BlcnR5XG4gIHN0eWxlWyB5UmVzZXRQcm9wZXJ0eSBdID0gJyc7XG5cbiAgdGhpcy5jc3MoIHN0eWxlICk7XG4gIHRoaXMuZW1pdEV2ZW50KCAnbGF5b3V0JywgWyB0aGlzIF0gKTtcbn07XG5cbnByb3RvLmdldFhWYWx1ZSA9IGZ1bmN0aW9uKCB4ICkge1xuICB2YXIgaXNIb3Jpem9udGFsID0gdGhpcy5sYXlvdXQuX2dldE9wdGlvbignaG9yaXpvbnRhbCcpO1xuICByZXR1cm4gdGhpcy5sYXlvdXQub3B0aW9ucy5wZXJjZW50UG9zaXRpb24gJiYgIWlzSG9yaXpvbnRhbCA/XG4gICAgKCAoIHggLyB0aGlzLmxheW91dC5zaXplLndpZHRoICkgKiAxMDAgKSArICclJyA6IHggKyAncHgnO1xufTtcblxucHJvdG8uZ2V0WVZhbHVlID0gZnVuY3Rpb24oIHkgKSB7XG4gIHZhciBpc0hvcml6b250YWwgPSB0aGlzLmxheW91dC5fZ2V0T3B0aW9uKCdob3Jpem9udGFsJyk7XG4gIHJldHVybiB0aGlzLmxheW91dC5vcHRpb25zLnBlcmNlbnRQb3NpdGlvbiAmJiBpc0hvcml6b250YWwgP1xuICAgICggKCB5IC8gdGhpcy5sYXlvdXQuc2l6ZS5oZWlnaHQgKSAqIDEwMCApICsgJyUnIDogeSArICdweCc7XG59O1xuXG5wcm90by5fdHJhbnNpdGlvblRvID0gZnVuY3Rpb24oIHgsIHkgKSB7XG4gIHRoaXMuZ2V0UG9zaXRpb24oKTtcbiAgLy8gZ2V0IGN1cnJlbnQgeCAmIHkgZnJvbSB0b3AvbGVmdFxuICB2YXIgY3VyWCA9IHRoaXMucG9zaXRpb24ueDtcbiAgdmFyIGN1clkgPSB0aGlzLnBvc2l0aW9uLnk7XG5cbiAgdmFyIGRpZE5vdE1vdmUgPSB4ID09IHRoaXMucG9zaXRpb24ueCAmJiB5ID09IHRoaXMucG9zaXRpb24ueTtcblxuICAvLyBzYXZlIGVuZCBwb3NpdGlvblxuICB0aGlzLnNldFBvc2l0aW9uKCB4LCB5ICk7XG5cbiAgLy8gaWYgZGlkIG5vdCBtb3ZlIGFuZCBub3QgdHJhbnNpdGlvbmluZywganVzdCBnbyB0byBsYXlvdXRcbiAgaWYgKCBkaWROb3RNb3ZlICYmICF0aGlzLmlzVHJhbnNpdGlvbmluZyApIHtcbiAgICB0aGlzLmxheW91dFBvc2l0aW9uKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRyYW5zWCA9IHggLSBjdXJYO1xuICB2YXIgdHJhbnNZID0geSAtIGN1clk7XG4gIHZhciB0cmFuc2l0aW9uU3R5bGUgPSB7fTtcbiAgdHJhbnNpdGlvblN0eWxlLnRyYW5zZm9ybSA9IHRoaXMuZ2V0VHJhbnNsYXRlKCB0cmFuc1gsIHRyYW5zWSApO1xuXG4gIHRoaXMudHJhbnNpdGlvbih7XG4gICAgdG86IHRyYW5zaXRpb25TdHlsZSxcbiAgICBvblRyYW5zaXRpb25FbmQ6IHtcbiAgICAgIHRyYW5zZm9ybTogdGhpcy5sYXlvdXRQb3NpdGlvblxuICAgIH0sXG4gICAgaXNDbGVhbmluZzogdHJ1ZVxuICB9KTtcbn07XG5cbnByb3RvLmdldFRyYW5zbGF0ZSA9IGZ1bmN0aW9uKCB4LCB5ICkge1xuICAvLyBmbGlwIGNvb3JpZGluYXRlcyBpZiBvcmlnaW4gb24gcmlnaHQgb3IgYm90dG9tXG4gIHZhciBpc09yaWdpbkxlZnQgPSB0aGlzLmxheW91dC5fZ2V0T3B0aW9uKCdvcmlnaW5MZWZ0Jyk7XG4gIHZhciBpc09yaWdpblRvcCA9IHRoaXMubGF5b3V0Ll9nZXRPcHRpb24oJ29yaWdpblRvcCcpO1xuICB4ID0gaXNPcmlnaW5MZWZ0ID8geCA6IC14O1xuICB5ID0gaXNPcmlnaW5Ub3AgPyB5IDogLXk7XG4gIHJldHVybiAndHJhbnNsYXRlM2QoJyArIHggKyAncHgsICcgKyB5ICsgJ3B4LCAwKSc7XG59O1xuXG4vLyBub24gdHJhbnNpdGlvbiArIHRyYW5zZm9ybSBzdXBwb3J0XG5wcm90by5nb1RvID0gZnVuY3Rpb24oIHgsIHkgKSB7XG4gIHRoaXMuc2V0UG9zaXRpb24oIHgsIHkgKTtcbiAgdGhpcy5sYXlvdXRQb3NpdGlvbigpO1xufTtcblxucHJvdG8ubW92ZVRvID0gcHJvdG8uX3RyYW5zaXRpb25UbztcblxucHJvdG8uc2V0UG9zaXRpb24gPSBmdW5jdGlvbiggeCwgeSApIHtcbiAgdGhpcy5wb3NpdGlvbi54ID0gcGFyc2VGbG9hdCggeCApO1xuICB0aGlzLnBvc2l0aW9uLnkgPSBwYXJzZUZsb2F0KCB5ICk7XG59O1xuXG4vLyAtLS0tLSB0cmFuc2l0aW9uIC0tLS0tIC8vXG5cbi8qKlxuICogQHBhcmFtIHtPYmplY3R9IHN0eWxlIC0gQ1NTXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvblRyYW5zaXRpb25FbmRcbiAqL1xuXG4vLyBub24gdHJhbnNpdGlvbiwganVzdCB0cmlnZ2VyIGNhbGxiYWNrXG5wcm90by5fbm9uVHJhbnNpdGlvbiA9IGZ1bmN0aW9uKCBhcmdzICkge1xuICB0aGlzLmNzcyggYXJncy50byApO1xuICBpZiAoIGFyZ3MuaXNDbGVhbmluZyApIHtcbiAgICB0aGlzLl9yZW1vdmVTdHlsZXMoIGFyZ3MudG8gKTtcbiAgfVxuICBmb3IgKCB2YXIgcHJvcCBpbiBhcmdzLm9uVHJhbnNpdGlvbkVuZCApIHtcbiAgICBhcmdzLm9uVHJhbnNpdGlvbkVuZFsgcHJvcCBdLmNhbGwoIHRoaXMgKTtcbiAgfVxufTtcblxuLyoqXG4gKiBwcm9wZXIgdHJhbnNpdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFyZ3MgLSBhcmd1bWVudHNcbiAqICAgQHBhcmFtIHtPYmplY3R9IHRvIC0gc3R5bGUgdG8gdHJhbnNpdGlvbiB0b1xuICogICBAcGFyYW0ge09iamVjdH0gZnJvbSAtIHN0eWxlIHRvIHN0YXJ0IHRyYW5zaXRpb24gZnJvbVxuICogICBAcGFyYW0ge0Jvb2xlYW59IGlzQ2xlYW5pbmcgLSByZW1vdmVzIHRyYW5zaXRpb24gc3R5bGVzIGFmdGVyIHRyYW5zaXRpb25cbiAqICAgQHBhcmFtIHtGdW5jdGlvbn0gb25UcmFuc2l0aW9uRW5kIC0gY2FsbGJhY2tcbiAqL1xucHJvdG8udHJhbnNpdGlvbiA9IGZ1bmN0aW9uKCBhcmdzICkge1xuICAvLyByZWRpcmVjdCB0byBub25UcmFuc2l0aW9uIGlmIG5vIHRyYW5zaXRpb24gZHVyYXRpb25cbiAgaWYgKCAhcGFyc2VGbG9hdCggdGhpcy5sYXlvdXQub3B0aW9ucy50cmFuc2l0aW9uRHVyYXRpb24gKSApIHtcbiAgICB0aGlzLl9ub25UcmFuc2l0aW9uKCBhcmdzICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF90cmFuc2l0aW9uID0gdGhpcy5fdHJhbnNuO1xuICAvLyBrZWVwIHRyYWNrIG9mIG9uVHJhbnNpdGlvbkVuZCBjYWxsYmFjayBieSBjc3MgcHJvcGVydHlcbiAgZm9yICggdmFyIHByb3AgaW4gYXJncy5vblRyYW5zaXRpb25FbmQgKSB7XG4gICAgX3RyYW5zaXRpb24ub25FbmRbIHByb3AgXSA9IGFyZ3Mub25UcmFuc2l0aW9uRW5kWyBwcm9wIF07XG4gIH1cbiAgLy8ga2VlcCB0cmFjayBvZiBwcm9wZXJ0aWVzIHRoYXQgYXJlIHRyYW5zaXRpb25pbmdcbiAgZm9yICggcHJvcCBpbiBhcmdzLnRvICkge1xuICAgIF90cmFuc2l0aW9uLmluZ1Byb3BlcnRpZXNbIHByb3AgXSA9IHRydWU7XG4gICAgLy8ga2VlcCB0cmFjayBvZiBwcm9wZXJ0aWVzIHRvIGNsZWFuIHVwIHdoZW4gdHJhbnNpdGlvbiBpcyBkb25lXG4gICAgaWYgKCBhcmdzLmlzQ2xlYW5pbmcgKSB7XG4gICAgICBfdHJhbnNpdGlvbi5jbGVhblsgcHJvcCBdID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBzZXQgZnJvbSBzdHlsZXNcbiAgaWYgKCBhcmdzLmZyb20gKSB7XG4gICAgdGhpcy5jc3MoIGFyZ3MuZnJvbSApO1xuICAgIC8vIGZvcmNlIHJlZHJhdy4gaHR0cDovL2Jsb2cuYWxleG1hY2Nhdy5jb20vY3NzLXRyYW5zaXRpb25zXG4gICAgdmFyIGggPSB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgIC8vIGhhY2sgZm9yIEpTSGludCB0byBodXNoIGFib3V0IHVudXNlZCB2YXJcbiAgICBoID0gbnVsbDtcbiAgfVxuICAvLyBlbmFibGUgdHJhbnNpdGlvblxuICB0aGlzLmVuYWJsZVRyYW5zaXRpb24oIGFyZ3MudG8gKTtcbiAgLy8gc2V0IHN0eWxlcyB0aGF0IGFyZSB0cmFuc2l0aW9uaW5nXG4gIHRoaXMuY3NzKCBhcmdzLnRvICk7XG5cbiAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSB0cnVlO1xuXG59O1xuXG4vLyBkYXNoIGJlZm9yZSBhbGwgY2FwIGxldHRlcnMsIGluY2x1ZGluZyBmaXJzdCBmb3Jcbi8vIFdlYmtpdFRyYW5zZm9ybSA9PiAtd2Via2l0LXRyYW5zZm9ybVxuZnVuY3Rpb24gdG9EYXNoZWRBbGwoIHN0ciApIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKCAvKFtBLVpdKS9nLCBmdW5jdGlvbiggJDEgKSB7XG4gICAgcmV0dXJuICctJyArICQxLnRvTG93ZXJDYXNlKCk7XG4gIH0pO1xufVxuXG52YXIgdHJhbnNpdGlvblByb3BzID0gJ29wYWNpdHksJyArIHRvRGFzaGVkQWxsKCB0cmFuc2Zvcm1Qcm9wZXJ0eSApO1xuXG5wcm90by5lbmFibGVUcmFuc2l0aW9uID0gZnVuY3Rpb24oLyogc3R5bGUgKi8pIHtcbiAgLy8gSEFDSyBjaGFuZ2luZyB0cmFuc2l0aW9uUHJvcGVydHkgZHVyaW5nIGEgdHJhbnNpdGlvblxuICAvLyB3aWxsIGNhdXNlIHRyYW5zaXRpb24gdG8ganVtcFxuICBpZiAoIHRoaXMuaXNUcmFuc2l0aW9uaW5nICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIG1ha2UgYHRyYW5zaXRpb246IGZvbywgYmFyLCBiYXpgIGZyb20gc3R5bGUgb2JqZWN0XG4gIC8vIEhBQ0sgdW4tY29tbWVudCB0aGlzIHdoZW4gZW5hYmxlVHJhbnNpdGlvbiBjYW4gd29ya1xuICAvLyB3aGlsZSBhIHRyYW5zaXRpb24gaXMgaGFwcGVuaW5nXG4gIC8vIHZhciB0cmFuc2l0aW9uVmFsdWVzID0gW107XG4gIC8vIGZvciAoIHZhciBwcm9wIGluIHN0eWxlICkge1xuICAvLyAgIC8vIGRhc2gtaWZ5IGNhbWVsQ2FzZWQgcHJvcGVydGllcyBsaWtlIFdlYmtpdFRyYW5zaXRpb25cbiAgLy8gICBwcm9wID0gdmVuZG9yUHJvcGVydGllc1sgcHJvcCBdIHx8IHByb3A7XG4gIC8vICAgdHJhbnNpdGlvblZhbHVlcy5wdXNoKCB0b0Rhc2hlZEFsbCggcHJvcCApICk7XG4gIC8vIH1cbiAgLy8gbXVuZ2UgbnVtYmVyIHRvIG1pbGxpc2Vjb25kLCB0byBtYXRjaCBzdGFnZ2VyXG4gIHZhciBkdXJhdGlvbiA9IHRoaXMubGF5b3V0Lm9wdGlvbnMudHJhbnNpdGlvbkR1cmF0aW9uO1xuICBkdXJhdGlvbiA9IHR5cGVvZiBkdXJhdGlvbiA9PSAnbnVtYmVyJyA/IGR1cmF0aW9uICsgJ21zJyA6IGR1cmF0aW9uO1xuICAvLyBlbmFibGUgdHJhbnNpdGlvbiBzdHlsZXNcbiAgdGhpcy5jc3Moe1xuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogdHJhbnNpdGlvblByb3BzLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogZHVyYXRpb24sXG4gICAgdHJhbnNpdGlvbkRlbGF5OiB0aGlzLnN0YWdnZXJEZWxheSB8fCAwXG4gIH0pO1xuICAvLyBsaXN0ZW4gZm9yIHRyYW5zaXRpb24gZW5kIGV2ZW50XG4gIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCB0cmFuc2l0aW9uRW5kRXZlbnQsIHRoaXMsIGZhbHNlICk7XG59O1xuXG4vLyAtLS0tLSBldmVudHMgLS0tLS0gLy9cblxucHJvdG8ub253ZWJraXRUcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuICB0aGlzLm9udHJhbnNpdGlvbmVuZCggZXZlbnQgKTtcbn07XG5cbnByb3RvLm9ub3RyYW5zaXRpb25lbmQgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG4gIHRoaXMub250cmFuc2l0aW9uZW5kKCBldmVudCApO1xufTtcblxuLy8gcHJvcGVydGllcyB0aGF0IEkgbXVuZ2UgdG8gbWFrZSBteSBsaWZlIGVhc2llclxudmFyIGRhc2hlZFZlbmRvclByb3BlcnRpZXMgPSB7XG4gICctd2Via2l0LXRyYW5zZm9ybSc6ICd0cmFuc2Zvcm0nXG59O1xuXG5wcm90by5vbnRyYW5zaXRpb25lbmQgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG4gIC8vIGRpc3JlZ2FyZCBidWJibGVkIGV2ZW50cyBmcm9tIGNoaWxkcmVuXG4gIGlmICggZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnQgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBfdHJhbnNpdGlvbiA9IHRoaXMuX3RyYW5zbjtcbiAgLy8gZ2V0IHByb3BlcnR5IG5hbWUgb2YgdHJhbnNpdGlvbmVkIHByb3BlcnR5LCBjb252ZXJ0IHRvIHByZWZpeC1mcmVlXG4gIHZhciBwcm9wZXJ0eU5hbWUgPSBkYXNoZWRWZW5kb3JQcm9wZXJ0aWVzWyBldmVudC5wcm9wZXJ0eU5hbWUgXSB8fCBldmVudC5wcm9wZXJ0eU5hbWU7XG5cbiAgLy8gcmVtb3ZlIHByb3BlcnR5IHRoYXQgaGFzIGNvbXBsZXRlZCB0cmFuc2l0aW9uaW5nXG4gIGRlbGV0ZSBfdHJhbnNpdGlvbi5pbmdQcm9wZXJ0aWVzWyBwcm9wZXJ0eU5hbWUgXTtcbiAgLy8gY2hlY2sgaWYgYW55IHByb3BlcnRpZXMgYXJlIHN0aWxsIHRyYW5zaXRpb25pbmdcbiAgaWYgKCBpc0VtcHR5T2JqKCBfdHJhbnNpdGlvbi5pbmdQcm9wZXJ0aWVzICkgKSB7XG4gICAgLy8gYWxsIHByb3BlcnRpZXMgaGF2ZSBjb21wbGV0ZWQgdHJhbnNpdGlvbmluZ1xuICAgIHRoaXMuZGlzYWJsZVRyYW5zaXRpb24oKTtcbiAgfVxuICAvLyBjbGVhbiBzdHlsZVxuICBpZiAoIHByb3BlcnR5TmFtZSBpbiBfdHJhbnNpdGlvbi5jbGVhbiApIHtcbiAgICAvLyBjbGVhbiB1cCBzdHlsZVxuICAgIHRoaXMuZWxlbWVudC5zdHlsZVsgZXZlbnQucHJvcGVydHlOYW1lIF0gPSAnJztcbiAgICBkZWxldGUgX3RyYW5zaXRpb24uY2xlYW5bIHByb3BlcnR5TmFtZSBdO1xuICB9XG4gIC8vIHRyaWdnZXIgb25UcmFuc2l0aW9uRW5kIGNhbGxiYWNrXG4gIGlmICggcHJvcGVydHlOYW1lIGluIF90cmFuc2l0aW9uLm9uRW5kICkge1xuICAgIHZhciBvblRyYW5zaXRpb25FbmQgPSBfdHJhbnNpdGlvbi5vbkVuZFsgcHJvcGVydHlOYW1lIF07XG4gICAgb25UcmFuc2l0aW9uRW5kLmNhbGwoIHRoaXMgKTtcbiAgICBkZWxldGUgX3RyYW5zaXRpb24ub25FbmRbIHByb3BlcnR5TmFtZSBdO1xuICB9XG5cbiAgdGhpcy5lbWl0RXZlbnQoICd0cmFuc2l0aW9uRW5kJywgWyB0aGlzIF0gKTtcbn07XG5cbnByb3RvLmRpc2FibGVUcmFuc2l0aW9uID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMucmVtb3ZlVHJhbnNpdGlvblN0eWxlcygpO1xuICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHJhbnNpdGlvbkVuZEV2ZW50LCB0aGlzLCBmYWxzZSApO1xuICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xufTtcblxuLyoqXG4gKiByZW1vdmVzIHN0eWxlIHByb3BlcnR5IGZyb20gZWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IHN0eWxlXG4qKi9cbnByb3RvLl9yZW1vdmVTdHlsZXMgPSBmdW5jdGlvbiggc3R5bGUgKSB7XG4gIC8vIGNsZWFuIHVwIHRyYW5zaXRpb24gc3R5bGVzXG4gIHZhciBjbGVhblN0eWxlID0ge307XG4gIGZvciAoIHZhciBwcm9wIGluIHN0eWxlICkge1xuICAgIGNsZWFuU3R5bGVbIHByb3AgXSA9ICcnO1xuICB9XG4gIHRoaXMuY3NzKCBjbGVhblN0eWxlICk7XG59O1xuXG52YXIgY2xlYW5UcmFuc2l0aW9uU3R5bGUgPSB7XG4gIHRyYW5zaXRpb25Qcm9wZXJ0eTogJycsXG4gIHRyYW5zaXRpb25EdXJhdGlvbjogJycsXG4gIHRyYW5zaXRpb25EZWxheTogJydcbn07XG5cbnByb3RvLnJlbW92ZVRyYW5zaXRpb25TdHlsZXMgPSBmdW5jdGlvbigpIHtcbiAgLy8gcmVtb3ZlIHRyYW5zaXRpb25cbiAgdGhpcy5jc3MoIGNsZWFuVHJhbnNpdGlvblN0eWxlICk7XG59O1xuXG4vLyAtLS0tLSBzdGFnZ2VyIC0tLS0tIC8vXG5cbnByb3RvLnN0YWdnZXIgPSBmdW5jdGlvbiggZGVsYXkgKSB7XG4gIGRlbGF5ID0gaXNOYU4oIGRlbGF5ICkgPyAwIDogZGVsYXk7XG4gIHRoaXMuc3RhZ2dlckRlbGF5ID0gZGVsYXkgKyAnbXMnO1xufTtcblxuLy8gLS0tLS0gc2hvdy9oaWRlL3JlbW92ZSAtLS0tLSAvL1xuXG4vLyByZW1vdmUgZWxlbWVudCBmcm9tIERPTVxucHJvdG8ucmVtb3ZlRWxlbSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGhpcy5lbGVtZW50ICk7XG4gIC8vIHJlbW92ZSBkaXNwbGF5OiBub25lXG4gIHRoaXMuY3NzKHsgZGlzcGxheTogJycgfSk7XG4gIHRoaXMuZW1pdEV2ZW50KCAncmVtb3ZlJywgWyB0aGlzIF0gKTtcbn07XG5cbnByb3RvLnJlbW92ZSA9IGZ1bmN0aW9uKCkge1xuICAvLyBqdXN0IHJlbW92ZSBlbGVtZW50IGlmIG5vIHRyYW5zaXRpb24gc3VwcG9ydCBvciBubyB0cmFuc2l0aW9uXG4gIGlmICggIXRyYW5zaXRpb25Qcm9wZXJ0eSB8fCAhcGFyc2VGbG9hdCggdGhpcy5sYXlvdXQub3B0aW9ucy50cmFuc2l0aW9uRHVyYXRpb24gKSApIHtcbiAgICB0aGlzLnJlbW92ZUVsZW0oKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBzdGFydCB0cmFuc2l0aW9uXG4gIHRoaXMub25jZSggJ3RyYW5zaXRpb25FbmQnLCBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUVsZW0oKTtcbiAgfSk7XG4gIHRoaXMuaGlkZSgpO1xufTtcblxucHJvdG8ucmV2ZWFsID0gZnVuY3Rpb24oKSB7XG4gIGRlbGV0ZSB0aGlzLmlzSGlkZGVuO1xuICAvLyByZW1vdmUgZGlzcGxheTogbm9uZVxuICB0aGlzLmNzcyh7IGRpc3BsYXk6ICcnIH0pO1xuXG4gIHZhciBvcHRpb25zID0gdGhpcy5sYXlvdXQub3B0aW9ucztcblxuICB2YXIgb25UcmFuc2l0aW9uRW5kID0ge307XG4gIHZhciB0cmFuc2l0aW9uRW5kUHJvcGVydHkgPSB0aGlzLmdldEhpZGVSZXZlYWxUcmFuc2l0aW9uRW5kUHJvcGVydHkoJ3Zpc2libGVTdHlsZScpO1xuICBvblRyYW5zaXRpb25FbmRbIHRyYW5zaXRpb25FbmRQcm9wZXJ0eSBdID0gdGhpcy5vblJldmVhbFRyYW5zaXRpb25FbmQ7XG5cbiAgdGhpcy50cmFuc2l0aW9uKHtcbiAgICBmcm9tOiBvcHRpb25zLmhpZGRlblN0eWxlLFxuICAgIHRvOiBvcHRpb25zLnZpc2libGVTdHlsZSxcbiAgICBpc0NsZWFuaW5nOiB0cnVlLFxuICAgIG9uVHJhbnNpdGlvbkVuZDogb25UcmFuc2l0aW9uRW5kXG4gIH0pO1xufTtcblxucHJvdG8ub25SZXZlYWxUcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24oKSB7XG4gIC8vIGNoZWNrIGlmIHN0aWxsIHZpc2libGVcbiAgLy8gZHVyaW5nIHRyYW5zaXRpb24sIGl0ZW0gbWF5IGhhdmUgYmVlbiBoaWRkZW5cbiAgaWYgKCAhdGhpcy5pc0hpZGRlbiApIHtcbiAgICB0aGlzLmVtaXRFdmVudCgncmV2ZWFsJyk7XG4gIH1cbn07XG5cbi8qKlxuICogZ2V0IHN0eWxlIHByb3BlcnR5IHVzZSBmb3IgaGlkZS9yZXZlYWwgdHJhbnNpdGlvbiBlbmRcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHlsZVByb3BlcnR5IC0gaGlkZGVuU3R5bGUvdmlzaWJsZVN0eWxlXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5wcm90by5nZXRIaWRlUmV2ZWFsVHJhbnNpdGlvbkVuZFByb3BlcnR5ID0gZnVuY3Rpb24oIHN0eWxlUHJvcGVydHkgKSB7XG4gIHZhciBvcHRpb25TdHlsZSA9IHRoaXMubGF5b3V0Lm9wdGlvbnNbIHN0eWxlUHJvcGVydHkgXTtcbiAgLy8gdXNlIG9wYWNpdHlcbiAgaWYgKCBvcHRpb25TdHlsZS5vcGFjaXR5ICkge1xuICAgIHJldHVybiAnb3BhY2l0eSc7XG4gIH1cbiAgLy8gZ2V0IGZpcnN0IHByb3BlcnR5XG4gIGZvciAoIHZhciBwcm9wIGluIG9wdGlvblN0eWxlICkge1xuICAgIHJldHVybiBwcm9wO1xuICB9XG59O1xuXG5wcm90by5oaWRlID0gZnVuY3Rpb24oKSB7XG4gIC8vIHNldCBmbGFnXG4gIHRoaXMuaXNIaWRkZW4gPSB0cnVlO1xuICAvLyByZW1vdmUgZGlzcGxheTogbm9uZVxuICB0aGlzLmNzcyh7IGRpc3BsYXk6ICcnIH0pO1xuXG4gIHZhciBvcHRpb25zID0gdGhpcy5sYXlvdXQub3B0aW9ucztcblxuICB2YXIgb25UcmFuc2l0aW9uRW5kID0ge307XG4gIHZhciB0cmFuc2l0aW9uRW5kUHJvcGVydHkgPSB0aGlzLmdldEhpZGVSZXZlYWxUcmFuc2l0aW9uRW5kUHJvcGVydHkoJ2hpZGRlblN0eWxlJyk7XG4gIG9uVHJhbnNpdGlvbkVuZFsgdHJhbnNpdGlvbkVuZFByb3BlcnR5IF0gPSB0aGlzLm9uSGlkZVRyYW5zaXRpb25FbmQ7XG5cbiAgdGhpcy50cmFuc2l0aW9uKHtcbiAgICBmcm9tOiBvcHRpb25zLnZpc2libGVTdHlsZSxcbiAgICB0bzogb3B0aW9ucy5oaWRkZW5TdHlsZSxcbiAgICAvLyBrZWVwIGhpZGRlbiBzdHVmZiBoaWRkZW5cbiAgICBpc0NsZWFuaW5nOiB0cnVlLFxuICAgIG9uVHJhbnNpdGlvbkVuZDogb25UcmFuc2l0aW9uRW5kXG4gIH0pO1xufTtcblxucHJvdG8ub25IaWRlVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uKCkge1xuICAvLyBjaGVjayBpZiBzdGlsbCBoaWRkZW5cbiAgLy8gZHVyaW5nIHRyYW5zaXRpb24sIGl0ZW0gbWF5IGhhdmUgYmVlbiB1bi1oaWRkZW5cbiAgaWYgKCB0aGlzLmlzSGlkZGVuICkge1xuICAgIHRoaXMuY3NzKHsgZGlzcGxheTogJ25vbmUnIH0pO1xuICAgIHRoaXMuZW1pdEV2ZW50KCdoaWRlJyk7XG4gIH1cbn07XG5cbnByb3RvLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5jc3Moe1xuICAgIHBvc2l0aW9uOiAnJyxcbiAgICBsZWZ0OiAnJyxcbiAgICByaWdodDogJycsXG4gICAgdG9wOiAnJyxcbiAgICBib3R0b206ICcnLFxuICAgIHRyYW5zaXRpb246ICcnLFxuICAgIHRyYW5zZm9ybTogJydcbiAgfSk7XG59O1xuXG5yZXR1cm4gSXRlbTtcblxufSkpO1xuIiwiLyohXG4gKiBpbWFnZXNMb2FkZWQgdjQuMS40XG4gKiBKYXZhU2NyaXB0IGlzIGFsbCBsaWtlIFwiWW91IGltYWdlcyBhcmUgZG9uZSB5ZXQgb3Igd2hhdD9cIlxuICogTUlUIExpY2Vuc2VcbiAqL1xuXG4oIGZ1bmN0aW9uKCB3aW5kb3csIGZhY3RvcnkgKSB7ICd1c2Ugc3RyaWN0JztcbiAgLy8gdW5pdmVyc2FsIG1vZHVsZSBkZWZpbml0aW9uXG5cbiAgLypnbG9iYWwgZGVmaW5lOiBmYWxzZSwgbW9kdWxlOiBmYWxzZSwgcmVxdWlyZTogZmFsc2UgKi9cblxuICBpZiAoIHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kICkge1xuICAgIC8vIEFNRFxuICAgIGRlZmluZSggW1xuICAgICAgJ2V2LWVtaXR0ZXIvZXYtZW1pdHRlcidcbiAgICBdLCBmdW5jdGlvbiggRXZFbWl0dGVyICkge1xuICAgICAgcmV0dXJuIGZhY3RvcnkoIHdpbmRvdywgRXZFbWl0dGVyICk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMgKSB7XG4gICAgLy8gQ29tbW9uSlNcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoXG4gICAgICB3aW5kb3csXG4gICAgICByZXF1aXJlKCdldi1lbWl0dGVyJylcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIC8vIGJyb3dzZXIgZ2xvYmFsXG4gICAgd2luZG93LmltYWdlc0xvYWRlZCA9IGZhY3RvcnkoXG4gICAgICB3aW5kb3csXG4gICAgICB3aW5kb3cuRXZFbWl0dGVyXG4gICAgKTtcbiAgfVxuXG59KSggdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0aGlzLFxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgZmFjdG9yeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG5mdW5jdGlvbiBmYWN0b3J5KCB3aW5kb3csIEV2RW1pdHRlciApIHtcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgJCA9IHdpbmRvdy5qUXVlcnk7XG52YXIgY29uc29sZSA9IHdpbmRvdy5jb25zb2xlO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbi8vIGV4dGVuZCBvYmplY3RzXG5mdW5jdGlvbiBleHRlbmQoIGEsIGIgKSB7XG4gIGZvciAoIHZhciBwcm9wIGluIGIgKSB7XG4gICAgYVsgcHJvcCBdID0gYlsgcHJvcCBdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG52YXIgYXJyYXlTbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcblxuLy8gdHVybiBlbGVtZW50IG9yIG5vZGVMaXN0IGludG8gYW4gYXJyYXlcbmZ1bmN0aW9uIG1ha2VBcnJheSggb2JqICkge1xuICBpZiAoIEFycmF5LmlzQXJyYXkoIG9iaiApICkge1xuICAgIC8vIHVzZSBvYmplY3QgaWYgYWxyZWFkeSBhbiBhcnJheVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgaXNBcnJheUxpa2UgPSB0eXBlb2Ygb2JqID09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoubGVuZ3RoID09ICdudW1iZXInO1xuICBpZiAoIGlzQXJyYXlMaWtlICkge1xuICAgIC8vIGNvbnZlcnQgbm9kZUxpc3QgdG8gYXJyYXlcbiAgICByZXR1cm4gYXJyYXlTbGljZS5jYWxsKCBvYmogKTtcbiAgfVxuXG4gIC8vIGFycmF5IG9mIHNpbmdsZSBpbmRleFxuICByZXR1cm4gWyBvYmogXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaW1hZ2VzTG9hZGVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbi8qKlxuICogQHBhcmFtIHtBcnJheSwgRWxlbWVudCwgTm9kZUxpc3QsIFN0cmluZ30gZWxlbVxuICogQHBhcmFtIHtPYmplY3Qgb3IgRnVuY3Rpb259IG9wdGlvbnMgLSBpZiBmdW5jdGlvbiwgdXNlIGFzIGNhbGxiYWNrXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbkFsd2F5cyAtIGNhbGxiYWNrIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIEltYWdlc0xvYWRlZCggZWxlbSwgb3B0aW9ucywgb25BbHdheXMgKSB7XG4gIC8vIGNvZXJjZSBJbWFnZXNMb2FkZWQoKSB3aXRob3V0IG5ldywgdG8gYmUgbmV3IEltYWdlc0xvYWRlZCgpXG4gIGlmICggISggdGhpcyBpbnN0YW5jZW9mIEltYWdlc0xvYWRlZCApICkge1xuICAgIHJldHVybiBuZXcgSW1hZ2VzTG9hZGVkKCBlbGVtLCBvcHRpb25zLCBvbkFsd2F5cyApO1xuICB9XG4gIC8vIHVzZSBlbGVtIGFzIHNlbGVjdG9yIHN0cmluZ1xuICB2YXIgcXVlcnlFbGVtID0gZWxlbTtcbiAgaWYgKCB0eXBlb2YgZWxlbSA9PSAnc3RyaW5nJyApIHtcbiAgICBxdWVyeUVsZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCBlbGVtICk7XG4gIH1cbiAgLy8gYmFpbCBpZiBiYWQgZWxlbWVudFxuICBpZiAoICFxdWVyeUVsZW0gKSB7XG4gICAgY29uc29sZS5lcnJvciggJ0JhZCBlbGVtZW50IGZvciBpbWFnZXNMb2FkZWQgJyArICggcXVlcnlFbGVtIHx8IGVsZW0gKSApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuZWxlbWVudHMgPSBtYWtlQXJyYXkoIHF1ZXJ5RWxlbSApO1xuICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoIHt9LCB0aGlzLm9wdGlvbnMgKTtcbiAgLy8gc2hpZnQgYXJndW1lbnRzIGlmIG5vIG9wdGlvbnMgc2V0XG4gIGlmICggdHlwZW9mIG9wdGlvbnMgPT0gJ2Z1bmN0aW9uJyApIHtcbiAgICBvbkFsd2F5cyA9IG9wdGlvbnM7XG4gIH0gZWxzZSB7XG4gICAgZXh0ZW5kKCB0aGlzLm9wdGlvbnMsIG9wdGlvbnMgKTtcbiAgfVxuXG4gIGlmICggb25BbHdheXMgKSB7XG4gICAgdGhpcy5vbiggJ2Fsd2F5cycsIG9uQWx3YXlzICk7XG4gIH1cblxuICB0aGlzLmdldEltYWdlcygpO1xuXG4gIGlmICggJCApIHtcbiAgICAvLyBhZGQgalF1ZXJ5IERlZmVycmVkIG9iamVjdFxuICAgIHRoaXMuanFEZWZlcnJlZCA9IG5ldyAkLkRlZmVycmVkKCk7XG4gIH1cblxuICAvLyBIQUNLIGNoZWNrIGFzeW5jIHRvIGFsbG93IHRpbWUgdG8gYmluZCBsaXN0ZW5lcnNcbiAgc2V0VGltZW91dCggdGhpcy5jaGVjay5iaW5kKCB0aGlzICkgKTtcbn1cblxuSW1hZ2VzTG9hZGVkLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEV2RW1pdHRlci5wcm90b3R5cGUgKTtcblxuSW1hZ2VzTG9hZGVkLnByb3RvdHlwZS5vcHRpb25zID0ge307XG5cbkltYWdlc0xvYWRlZC5wcm90b3R5cGUuZ2V0SW1hZ2VzID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuaW1hZ2VzID0gW107XG5cbiAgLy8gZmlsdGVyICYgZmluZCBpdGVtcyBpZiB3ZSBoYXZlIGFuIGl0ZW0gc2VsZWN0b3JcbiAgdGhpcy5lbGVtZW50cy5mb3JFYWNoKCB0aGlzLmFkZEVsZW1lbnRJbWFnZXMsIHRoaXMgKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlfSBlbGVtZW50XG4gKi9cbkltYWdlc0xvYWRlZC5wcm90b3R5cGUuYWRkRWxlbWVudEltYWdlcyA9IGZ1bmN0aW9uKCBlbGVtICkge1xuICAvLyBmaWx0ZXIgc2libGluZ3NcbiAgaWYgKCBlbGVtLm5vZGVOYW1lID09ICdJTUcnICkge1xuICAgIHRoaXMuYWRkSW1hZ2UoIGVsZW0gKTtcbiAgfVxuICAvLyBnZXQgYmFja2dyb3VuZCBpbWFnZSBvbiBlbGVtZW50XG4gIGlmICggdGhpcy5vcHRpb25zLmJhY2tncm91bmQgPT09IHRydWUgKSB7XG4gICAgdGhpcy5hZGRFbGVtZW50QmFja2dyb3VuZEltYWdlcyggZWxlbSApO1xuICB9XG5cbiAgLy8gZmluZCBjaGlsZHJlblxuICAvLyBubyBub24tZWxlbWVudCBub2RlcywgIzE0M1xuICB2YXIgbm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuICBpZiAoICFub2RlVHlwZSB8fCAhZWxlbWVudE5vZGVUeXBlc1sgbm9kZVR5cGUgXSApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIGNoaWxkSW1ncyA9IGVsZW0ucXVlcnlTZWxlY3RvckFsbCgnaW1nJyk7XG4gIC8vIGNvbmNhdCBjaGlsZEVsZW1zIHRvIGZpbHRlckZvdW5kIGFycmF5XG4gIGZvciAoIHZhciBpPTA7IGkgPCBjaGlsZEltZ3MubGVuZ3RoOyBpKysgKSB7XG4gICAgdmFyIGltZyA9IGNoaWxkSW1nc1tpXTtcbiAgICB0aGlzLmFkZEltYWdlKCBpbWcgKTtcbiAgfVxuXG4gIC8vIGdldCBjaGlsZCBiYWNrZ3JvdW5kIGltYWdlc1xuICBpZiAoIHR5cGVvZiB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZCA9PSAnc3RyaW5nJyApIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoIHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kICk7XG4gICAgZm9yICggaT0wOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKysgKSB7XG4gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIHRoaXMuYWRkRWxlbWVudEJhY2tncm91bmRJbWFnZXMoIGNoaWxkICk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgZWxlbWVudE5vZGVUeXBlcyA9IHtcbiAgMTogdHJ1ZSxcbiAgOTogdHJ1ZSxcbiAgMTE6IHRydWVcbn07XG5cbkltYWdlc0xvYWRlZC5wcm90b3R5cGUuYWRkRWxlbWVudEJhY2tncm91bmRJbWFnZXMgPSBmdW5jdGlvbiggZWxlbSApIHtcbiAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSggZWxlbSApO1xuICBpZiAoICFzdHlsZSApIHtcbiAgICAvLyBGaXJlZm94IHJldHVybnMgbnVsbCBpZiBpbiBhIGhpZGRlbiBpZnJhbWUgaHR0cHM6Ly9idWd6aWwubGEvNTQ4Mzk3XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIGdldCB1cmwgaW5zaWRlIHVybChcIi4uLlwiKVxuICB2YXIgcmVVUkwgPSAvdXJsXFwoKFsnXCJdKT8oLio/KVxcMVxcKS9naTtcbiAgdmFyIG1hdGNoZXMgPSByZVVSTC5leGVjKCBzdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgKTtcbiAgd2hpbGUgKCBtYXRjaGVzICE9PSBudWxsICkge1xuICAgIHZhciB1cmwgPSBtYXRjaGVzICYmIG1hdGNoZXNbMl07XG4gICAgaWYgKCB1cmwgKSB7XG4gICAgICB0aGlzLmFkZEJhY2tncm91bmQoIHVybCwgZWxlbSApO1xuICAgIH1cbiAgICBtYXRjaGVzID0gcmVVUkwuZXhlYyggc3R5bGUuYmFja2dyb3VuZEltYWdlICk7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtJbWFnZX0gaW1nXG4gKi9cbkltYWdlc0xvYWRlZC5wcm90b3R5cGUuYWRkSW1hZ2UgPSBmdW5jdGlvbiggaW1nICkge1xuICB2YXIgbG9hZGluZ0ltYWdlID0gbmV3IExvYWRpbmdJbWFnZSggaW1nICk7XG4gIHRoaXMuaW1hZ2VzLnB1c2goIGxvYWRpbmdJbWFnZSApO1xufTtcblxuSW1hZ2VzTG9hZGVkLnByb3RvdHlwZS5hZGRCYWNrZ3JvdW5kID0gZnVuY3Rpb24oIHVybCwgZWxlbSApIHtcbiAgdmFyIGJhY2tncm91bmQgPSBuZXcgQmFja2dyb3VuZCggdXJsLCBlbGVtICk7XG4gIHRoaXMuaW1hZ2VzLnB1c2goIGJhY2tncm91bmQgKTtcbn07XG5cbkltYWdlc0xvYWRlZC5wcm90b3R5cGUuY2hlY2sgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcbiAgdGhpcy5wcm9ncmVzc2VkQ291bnQgPSAwO1xuICB0aGlzLmhhc0FueUJyb2tlbiA9IGZhbHNlO1xuICAvLyBjb21wbGV0ZSBpZiBubyBpbWFnZXNcbiAgaWYgKCAhdGhpcy5pbWFnZXMubGVuZ3RoICkge1xuICAgIHRoaXMuY29tcGxldGUoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiBvblByb2dyZXNzKCBpbWFnZSwgZWxlbSwgbWVzc2FnZSApIHtcbiAgICAvLyBIQUNLIC0gQ2hyb21lIHRyaWdnZXJzIGV2ZW50IGJlZm9yZSBvYmplY3QgcHJvcGVydGllcyBoYXZlIGNoYW5nZWQuICM4M1xuICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuICAgICAgX3RoaXMucHJvZ3Jlc3MoIGltYWdlLCBlbGVtLCBtZXNzYWdlICk7XG4gICAgfSk7XG4gIH1cblxuICB0aGlzLmltYWdlcy5mb3JFYWNoKCBmdW5jdGlvbiggbG9hZGluZ0ltYWdlICkge1xuICAgIGxvYWRpbmdJbWFnZS5vbmNlKCAncHJvZ3Jlc3MnLCBvblByb2dyZXNzICk7XG4gICAgbG9hZGluZ0ltYWdlLmNoZWNrKCk7XG4gIH0pO1xufTtcblxuSW1hZ2VzTG9hZGVkLnByb3RvdHlwZS5wcm9ncmVzcyA9IGZ1bmN0aW9uKCBpbWFnZSwgZWxlbSwgbWVzc2FnZSApIHtcbiAgdGhpcy5wcm9ncmVzc2VkQ291bnQrKztcbiAgdGhpcy5oYXNBbnlCcm9rZW4gPSB0aGlzLmhhc0FueUJyb2tlbiB8fCAhaW1hZ2UuaXNMb2FkZWQ7XG4gIC8vIHByb2dyZXNzIGV2ZW50XG4gIHRoaXMuZW1pdEV2ZW50KCAncHJvZ3Jlc3MnLCBbIHRoaXMsIGltYWdlLCBlbGVtIF0gKTtcbiAgaWYgKCB0aGlzLmpxRGVmZXJyZWQgJiYgdGhpcy5qcURlZmVycmVkLm5vdGlmeSApIHtcbiAgICB0aGlzLmpxRGVmZXJyZWQubm90aWZ5KCB0aGlzLCBpbWFnZSApO1xuICB9XG4gIC8vIGNoZWNrIGlmIGNvbXBsZXRlZFxuICBpZiAoIHRoaXMucHJvZ3Jlc3NlZENvdW50ID09IHRoaXMuaW1hZ2VzLmxlbmd0aCApIHtcbiAgICB0aGlzLmNvbXBsZXRlKCk7XG4gIH1cblxuICBpZiAoIHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiBjb25zb2xlICkge1xuICAgIGNvbnNvbGUubG9nKCAncHJvZ3Jlc3M6ICcgKyBtZXNzYWdlLCBpbWFnZSwgZWxlbSApO1xuICB9XG59O1xuXG5JbWFnZXNMb2FkZWQucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gIHZhciBldmVudE5hbWUgPSB0aGlzLmhhc0FueUJyb2tlbiA/ICdmYWlsJyA6ICdkb25lJztcbiAgdGhpcy5pc0NvbXBsZXRlID0gdHJ1ZTtcbiAgdGhpcy5lbWl0RXZlbnQoIGV2ZW50TmFtZSwgWyB0aGlzIF0gKTtcbiAgdGhpcy5lbWl0RXZlbnQoICdhbHdheXMnLCBbIHRoaXMgXSApO1xuICBpZiAoIHRoaXMuanFEZWZlcnJlZCApIHtcbiAgICB2YXIganFNZXRob2QgPSB0aGlzLmhhc0FueUJyb2tlbiA/ICdyZWplY3QnIDogJ3Jlc29sdmUnO1xuICAgIHRoaXMuanFEZWZlcnJlZFsganFNZXRob2QgXSggdGhpcyApO1xuICB9XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuZnVuY3Rpb24gTG9hZGluZ0ltYWdlKCBpbWcgKSB7XG4gIHRoaXMuaW1nID0gaW1nO1xufVxuXG5Mb2FkaW5nSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggRXZFbWl0dGVyLnByb3RvdHlwZSApO1xuXG5Mb2FkaW5nSW1hZ2UucHJvdG90eXBlLmNoZWNrID0gZnVuY3Rpb24oKSB7XG4gIC8vIElmIGNvbXBsZXRlIGlzIHRydWUgYW5kIGJyb3dzZXIgc3VwcG9ydHMgbmF0dXJhbCBzaXplcyxcbiAgLy8gdHJ5IHRvIGNoZWNrIGZvciBpbWFnZSBzdGF0dXMgbWFudWFsbHkuXG4gIHZhciBpc0NvbXBsZXRlID0gdGhpcy5nZXRJc0ltYWdlQ29tcGxldGUoKTtcbiAgaWYgKCBpc0NvbXBsZXRlICkge1xuICAgIC8vIHJlcG9ydCBiYXNlZCBvbiBuYXR1cmFsV2lkdGhcbiAgICB0aGlzLmNvbmZpcm0oIHRoaXMuaW1nLm5hdHVyYWxXaWR0aCAhPT0gMCwgJ25hdHVyYWxXaWR0aCcgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBJZiBub25lIG9mIHRoZSBjaGVja3MgYWJvdmUgbWF0Y2hlZCwgc2ltdWxhdGUgbG9hZGluZyBvbiBkZXRhY2hlZCBlbGVtZW50LlxuICB0aGlzLnByb3h5SW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgdGhpcy5wcm94eUltYWdlLmFkZEV2ZW50TGlzdGVuZXIoICdsb2FkJywgdGhpcyApO1xuICB0aGlzLnByb3h5SW1hZ2UuYWRkRXZlbnRMaXN0ZW5lciggJ2Vycm9yJywgdGhpcyApO1xuICAvLyBiaW5kIHRvIGltYWdlIGFzIHdlbGwgZm9yIEZpcmVmb3guICMxOTFcbiAgdGhpcy5pbWcuYWRkRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCB0aGlzICk7XG4gIHRoaXMuaW1nLmFkZEV2ZW50TGlzdGVuZXIoICdlcnJvcicsIHRoaXMgKTtcbiAgdGhpcy5wcm94eUltYWdlLnNyYyA9IHRoaXMuaW1nLnNyYztcbn07XG5cbkxvYWRpbmdJbWFnZS5wcm90b3R5cGUuZ2V0SXNJbWFnZUNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gIC8vIGNoZWNrIGZvciBub24temVybywgbm9uLXVuZGVmaW5lZCBuYXR1cmFsV2lkdGhcbiAgLy8gZml4ZXMgU2FmYXJpK0luZmluaXRlU2Nyb2xsK01hc29ucnkgYnVnIGluZmluaXRlLXNjcm9sbCM2NzFcbiAgcmV0dXJuIHRoaXMuaW1nLmNvbXBsZXRlICYmIHRoaXMuaW1nLm5hdHVyYWxXaWR0aDtcbn07XG5cbkxvYWRpbmdJbWFnZS5wcm90b3R5cGUuY29uZmlybSA9IGZ1bmN0aW9uKCBpc0xvYWRlZCwgbWVzc2FnZSApIHtcbiAgdGhpcy5pc0xvYWRlZCA9IGlzTG9hZGVkO1xuICB0aGlzLmVtaXRFdmVudCggJ3Byb2dyZXNzJywgWyB0aGlzLCB0aGlzLmltZywgbWVzc2FnZSBdICk7XG59O1xuXG4vLyAtLS0tLSBldmVudHMgLS0tLS0gLy9cblxuLy8gdHJpZ2dlciBzcGVjaWZpZWQgaGFuZGxlciBmb3IgZXZlbnQgdHlwZVxuTG9hZGluZ0ltYWdlLnByb3RvdHlwZS5oYW5kbGVFdmVudCA9IGZ1bmN0aW9uKCBldmVudCApIHtcbiAgdmFyIG1ldGhvZCA9ICdvbicgKyBldmVudC50eXBlO1xuICBpZiAoIHRoaXNbIG1ldGhvZCBdICkge1xuICAgIHRoaXNbIG1ldGhvZCBdKCBldmVudCApO1xuICB9XG59O1xuXG5Mb2FkaW5nSW1hZ2UucHJvdG90eXBlLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmNvbmZpcm0oIHRydWUsICdvbmxvYWQnICk7XG4gIHRoaXMudW5iaW5kRXZlbnRzKCk7XG59O1xuXG5Mb2FkaW5nSW1hZ2UucHJvdG90eXBlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5jb25maXJtKCBmYWxzZSwgJ29uZXJyb3InICk7XG4gIHRoaXMudW5iaW5kRXZlbnRzKCk7XG59O1xuXG5Mb2FkaW5nSW1hZ2UucHJvdG90eXBlLnVuYmluZEV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnByb3h5SW1hZ2UucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCB0aGlzICk7XG4gIHRoaXMucHJveHlJbWFnZS5yZW1vdmVFdmVudExpc3RlbmVyKCAnZXJyb3InLCB0aGlzICk7XG4gIHRoaXMuaW1nLnJlbW92ZUV2ZW50TGlzdGVuZXIoICdsb2FkJywgdGhpcyApO1xuICB0aGlzLmltZy5yZW1vdmVFdmVudExpc3RlbmVyKCAnZXJyb3InLCB0aGlzICk7XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCYWNrZ3JvdW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbmZ1bmN0aW9uIEJhY2tncm91bmQoIHVybCwgZWxlbWVudCApIHtcbiAgdGhpcy51cmwgPSB1cmw7XG4gIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gIHRoaXMuaW1nID0gbmV3IEltYWdlKCk7XG59XG5cbi8vIGluaGVyaXQgTG9hZGluZ0ltYWdlIHByb3RvdHlwZVxuQmFja2dyb3VuZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBMb2FkaW5nSW1hZ2UucHJvdG90eXBlICk7XG5cbkJhY2tncm91bmQucHJvdG90eXBlLmNoZWNrID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuaW1nLmFkZEV2ZW50TGlzdGVuZXIoICdsb2FkJywgdGhpcyApO1xuICB0aGlzLmltZy5hZGRFdmVudExpc3RlbmVyKCAnZXJyb3InLCB0aGlzICk7XG4gIHRoaXMuaW1nLnNyYyA9IHRoaXMudXJsO1xuICAvLyBjaGVjayBpZiBpbWFnZSBpcyBhbHJlYWR5IGNvbXBsZXRlXG4gIHZhciBpc0NvbXBsZXRlID0gdGhpcy5nZXRJc0ltYWdlQ29tcGxldGUoKTtcbiAgaWYgKCBpc0NvbXBsZXRlICkge1xuICAgIHRoaXMuY29uZmlybSggdGhpcy5pbWcubmF0dXJhbFdpZHRoICE9PSAwLCAnbmF0dXJhbFdpZHRoJyApO1xuICAgIHRoaXMudW5iaW5kRXZlbnRzKCk7XG4gIH1cbn07XG5cbkJhY2tncm91bmQucHJvdG90eXBlLnVuYmluZEV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmltZy5yZW1vdmVFdmVudExpc3RlbmVyKCAnbG9hZCcsIHRoaXMgKTtcbiAgdGhpcy5pbWcucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2Vycm9yJywgdGhpcyApO1xufTtcblxuQmFja2dyb3VuZC5wcm90b3R5cGUuY29uZmlybSA9IGZ1bmN0aW9uKCBpc0xvYWRlZCwgbWVzc2FnZSApIHtcbiAgdGhpcy5pc0xvYWRlZCA9IGlzTG9hZGVkO1xuICB0aGlzLmVtaXRFdmVudCggJ3Byb2dyZXNzJywgWyB0aGlzLCB0aGlzLmVsZW1lbnQsIG1lc3NhZ2UgXSApO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0galF1ZXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbkltYWdlc0xvYWRlZC5tYWtlSlF1ZXJ5UGx1Z2luID0gZnVuY3Rpb24oIGpRdWVyeSApIHtcbiAgalF1ZXJ5ID0galF1ZXJ5IHx8IHdpbmRvdy5qUXVlcnk7XG4gIGlmICggIWpRdWVyeSApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gc2V0IGxvY2FsIHZhcmlhYmxlXG4gICQgPSBqUXVlcnk7XG4gIC8vICQoKS5pbWFnZXNMb2FkZWQoKVxuICAkLmZuLmltYWdlc0xvYWRlZCA9IGZ1bmN0aW9uKCBvcHRpb25zLCBjYWxsYmFjayApIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBuZXcgSW1hZ2VzTG9hZGVkKCB0aGlzLCBvcHRpb25zLCBjYWxsYmFjayApO1xuICAgIHJldHVybiBpbnN0YW5jZS5qcURlZmVycmVkLnByb21pc2UoICQodGhpcykgKTtcbiAgfTtcbn07XG4vLyB0cnkgbWFraW5nIHBsdWdpblxuSW1hZ2VzTG9hZGVkLm1ha2VKUXVlcnlQbHVnaW4oKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbnJldHVybiBJbWFnZXNMb2FkZWQ7XG5cbn0pO1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgdG8gdGhlXG4gKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAqIFN1YnNlcXVlbnQgc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YCBhbmQgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BPYmplY3QuYXNzaWduYF0oaHR0cHM6Ly9tZG4uaW8vT2JqZWN0L2Fzc2lnbikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEwLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5hc3NpZ25JblxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogZnVuY3Rpb24gQmFyKCkge1xuICogICB0aGlzLmMgPSAzO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYiA9IDI7XG4gKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbnZhciBhc3NpZ24gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICBpZiAoaXNQcm90b3R5cGUoc291cmNlKSB8fCBpc0FycmF5TGlrZShzb3VyY2UpKSB7XG4gICAgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbjtcbiIsInZhciBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFzc2lnbmVyO1xuIiwidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLFxuICAgIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSxcbiAgICBzZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX3NldFRvU3RyaW5nJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVzdGAgd2hpY2ggZG9lc24ndCB2YWxpZGF0ZSBvciBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VSZXN0O1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgZm9yRWFjaCAgICAgICAgICAgICAgICAgPSByZXF1aXJlKFwiLi9jb2xsZWN0aW9uLXV0aWxzXCIpLmZvckVhY2g7XG52YXIgZWxlbWVudFV0aWxzTWFrZXIgICAgICAgPSByZXF1aXJlKFwiLi9lbGVtZW50LXV0aWxzXCIpO1xudmFyIGxpc3RlbmVySGFuZGxlck1ha2VyICAgID0gcmVxdWlyZShcIi4vbGlzdGVuZXItaGFuZGxlclwiKTtcbnZhciBpZEdlbmVyYXRvck1ha2VyICAgICAgICA9IHJlcXVpcmUoXCIuL2lkLWdlbmVyYXRvclwiKTtcbnZhciBpZEhhbmRsZXJNYWtlciAgICAgICAgICA9IHJlcXVpcmUoXCIuL2lkLWhhbmRsZXJcIik7XG52YXIgcmVwb3J0ZXJNYWtlciAgICAgICAgICAgPSByZXF1aXJlKFwiLi9yZXBvcnRlclwiKTtcbnZhciBicm93c2VyRGV0ZWN0b3IgICAgICAgICA9IHJlcXVpcmUoXCIuL2Jyb3dzZXItZGV0ZWN0b3JcIik7XG52YXIgYmF0Y2hQcm9jZXNzb3JNYWtlciAgICAgPSByZXF1aXJlKFwiYmF0Y2gtcHJvY2Vzc29yXCIpO1xudmFyIHN0YXRlSGFuZGxlciAgICAgICAgICAgID0gcmVxdWlyZShcIi4vc3RhdGUtaGFuZGxlclwiKTtcblxuLy9EZXRlY3Rpb24gc3RyYXRlZ2llcy5cbnZhciBvYmplY3RTdHJhdGVneU1ha2VyICAgICA9IHJlcXVpcmUoXCIuL2RldGVjdGlvbi1zdHJhdGVneS9vYmplY3QuanNcIik7XG52YXIgc2Nyb2xsU3RyYXRlZ3lNYWtlciAgICAgPSByZXF1aXJlKFwiLi9kZXRlY3Rpb24tc3RyYXRlZ3kvc2Nyb2xsLmpzXCIpO1xuXG5mdW5jdGlvbiBpc0NvbGxlY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkob2JqKSB8fCBvYmoubGVuZ3RoICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkoY29sbGVjdGlvbikge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2xsZWN0aW9uKSkge1xuICAgICAgICB2YXIgYXJyYXkgPSBbXTtcbiAgICAgICAgZm9yRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICBhcnJheS5wdXNoKG9iaik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmoubm9kZVR5cGUgPT09IDE7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgaWRIYW5kbGVyXG4gKiBAdHlwZSB7b2JqZWN0fVxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gZ2V0IEdldHMgdGhlIHJlc2l6ZSBkZXRlY3RvciBpZCBvZiB0aGUgZWxlbWVudC5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IHNldCBHZW5lcmF0ZSBhbmQgc2V0cyB0aGUgcmVzaXplIGRldGVjdG9yIGlkIG9mIHRoZSBlbGVtZW50LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgT3B0aW9uc1xuICogQHR5cGUge29iamVjdH1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gY2FsbE9uQWRkICAgIERldGVybWluZXMgaWYgbGlzdGVuZXJzIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGV5IGFyZSBnZXR0aW5nIGFkZGVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBpcyB0cnVlLiBJZiB0cnVlLCB0aGUgbGlzdGVuZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBjYWxsZWQgd2hlbiBpdCBoYXMgYmVlbiBhZGRlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGZhbHNlLCB0aGUgbGlzdGVuZXIgd2lsbCBub3QgYmUgZ3VhcmVudGVlZCB0byBiZSBjYWxsZWQgd2hlbiBpdCBoYXMgYmVlbiBhZGRlZCAoZG9lcyBub3QgcHJldmVudCBpdCBmcm9tIGJlaW5nIGNhbGxlZCkuXG4gKiBAcHJvcGVydHkge2lkSGFuZGxlcn0gaWRIYW5kbGVyICBBIGN1c3RvbSBpZCBoYW5kbGVyIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcsIHNldHRpbmcgYW5kIHJldHJpZXZpbmcgaWQncyBmb3IgZWxlbWVudHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBub3QgcHJvdmlkZWQsIGEgZGVmYXVsdCBpZCBoYW5kbGVyIHdpbGwgYmUgdXNlZC5cbiAqIEBwcm9wZXJ0eSB7cmVwb3J0ZXJ9IHJlcG9ydGVyICAgIEEgY3VzdG9tIHJlcG9ydGVyIHRoYXQgaGFuZGxlcyByZXBvcnRpbmcgbG9ncywgd2FybmluZ3MgYW5kIGVycm9ycy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG5vdCBwcm92aWRlZCwgYSBkZWZhdWx0IGlkIGhhbmRsZXIgd2lsbCBiZSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvIGZhbHNlLCB0aGVuIG5vdGhpbmcgd2lsbCBiZSByZXBvcnRlZC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGVidWcgICAgICAgIElmIHNldCB0byB0cnVlLCB0aGUgdGhlIHN5c3RlbSB3aWxsIHJlcG9ydCBkZWJ1ZyBtZXNzYWdlcyBhcyBkZWZhdWx0IGZvciB0aGUgbGlzdGVuVG8gbWV0aG9kLlxuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhbiBlbGVtZW50IHJlc2l6ZSBkZXRlY3RvciBpbnN0YW5jZS5cbiAqIEBwdWJsaWNcbiAqIEBwYXJhbSB7T3B0aW9ucz99IG9wdGlvbnMgT3B0aW9uYWwgZ2xvYmFsIG9wdGlvbnMgb2JqZWN0IHRoYXQgd2lsbCBkZWNpZGUgaG93IHRoaXMgaW5zdGFuY2Ugd2lsbCB3b3JrLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIC8vaWRIYW5kbGVyIGlzIGN1cnJlbnRseSBub3QgYW4gb3B0aW9uIHRvIHRoZSBsaXN0ZW5UbyBmdW5jdGlvbiwgc28gaXQgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byBnbG9iYWxPcHRpb25zLlxuICAgIHZhciBpZEhhbmRsZXI7XG5cbiAgICBpZiAob3B0aW9ucy5pZEhhbmRsZXIpIHtcbiAgICAgICAgLy8gVG8gbWFpbnRhaW4gY29tcGF0YWJpbGl0eSB3aXRoIGlkSGFuZGxlci5nZXQoZWxlbWVudCwgcmVhZG9ubHkpLCBtYWtlIHN1cmUgdG8gd3JhcCB0aGUgZ2l2ZW4gaWRIYW5kbGVyXG4gICAgICAgIC8vIHNvIHRoYXQgcmVhZG9ubHkgZmxhZyBhbHdheXMgaXMgdHJ1ZSB3aGVuIGl0J3MgdXNlZCBoZXJlLiBUaGlzIG1heSBiZSByZW1vdmVkIG5leHQgbWFqb3IgdmVyc2lvbiBidW1wLlxuICAgICAgICBpZEhhbmRsZXIgPSB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBvcHRpb25zLmlkSGFuZGxlci5nZXQoZWxlbWVudCwgdHJ1ZSk7IH0sXG4gICAgICAgICAgICBzZXQ6IG9wdGlvbnMuaWRIYW5kbGVyLnNldFxuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBpZEdlbmVyYXRvciA9IGlkR2VuZXJhdG9yTWFrZXIoKTtcbiAgICAgICAgdmFyIGRlZmF1bHRJZEhhbmRsZXIgPSBpZEhhbmRsZXJNYWtlcih7XG4gICAgICAgICAgICBpZEdlbmVyYXRvcjogaWRHZW5lcmF0b3IsXG4gICAgICAgICAgICBzdGF0ZUhhbmRsZXI6IHN0YXRlSGFuZGxlclxuICAgICAgICB9KTtcbiAgICAgICAgaWRIYW5kbGVyID0gZGVmYXVsdElkSGFuZGxlcjtcbiAgICB9XG5cbiAgICAvL3JlcG9ydGVyIGlzIGN1cnJlbnRseSBub3QgYW4gb3B0aW9uIHRvIHRoZSBsaXN0ZW5UbyBmdW5jdGlvbiwgc28gaXQgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byBnbG9iYWxPcHRpb25zLlxuICAgIHZhciByZXBvcnRlciA9IG9wdGlvbnMucmVwb3J0ZXI7XG5cbiAgICBpZighcmVwb3J0ZXIpIHtcbiAgICAgICAgLy9JZiBvcHRpb25zLnJlcG9ydGVyIGlzIGZhbHNlLCB0aGVuIHRoZSByZXBvcnRlciBzaG91bGQgYmUgcXVpZXQuXG4gICAgICAgIHZhciBxdWlldCA9IHJlcG9ydGVyID09PSBmYWxzZTtcbiAgICAgICAgcmVwb3J0ZXIgPSByZXBvcnRlck1ha2VyKHF1aWV0KTtcbiAgICB9XG5cbiAgICAvL2JhdGNoUHJvY2Vzc29yIGlzIGN1cnJlbnRseSBub3QgYW4gb3B0aW9uIHRvIHRoZSBsaXN0ZW5UbyBmdW5jdGlvbiwgc28gaXQgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byBnbG9iYWxPcHRpb25zLlxuICAgIHZhciBiYXRjaFByb2Nlc3NvciA9IGdldE9wdGlvbihvcHRpb25zLCBcImJhdGNoUHJvY2Vzc29yXCIsIGJhdGNoUHJvY2Vzc29yTWFrZXIoeyByZXBvcnRlcjogcmVwb3J0ZXIgfSkpO1xuXG4gICAgLy9PcHRpb25zIHRvIGJlIHVzZWQgYXMgZGVmYXVsdCBmb3IgdGhlIGxpc3RlblRvIGZ1bmN0aW9uLlxuICAgIHZhciBnbG9iYWxPcHRpb25zID0ge307XG4gICAgZ2xvYmFsT3B0aW9ucy5jYWxsT25BZGQgICAgID0gISFnZXRPcHRpb24ob3B0aW9ucywgXCJjYWxsT25BZGRcIiwgdHJ1ZSk7XG4gICAgZ2xvYmFsT3B0aW9ucy5kZWJ1ZyAgICAgICAgID0gISFnZXRPcHRpb24ob3B0aW9ucywgXCJkZWJ1Z1wiLCBmYWxzZSk7XG5cbiAgICB2YXIgZXZlbnRMaXN0ZW5lckhhbmRsZXIgICAgPSBsaXN0ZW5lckhhbmRsZXJNYWtlcihpZEhhbmRsZXIpO1xuICAgIHZhciBlbGVtZW50VXRpbHMgICAgICAgICAgICA9IGVsZW1lbnRVdGlsc01ha2VyKHtcbiAgICAgICAgc3RhdGVIYW5kbGVyOiBzdGF0ZUhhbmRsZXJcbiAgICB9KTtcblxuICAgIC8vVGhlIGRldGVjdGlvbiBzdHJhdGVneSB0byBiZSB1c2VkLlxuICAgIHZhciBkZXRlY3Rpb25TdHJhdGVneTtcbiAgICB2YXIgZGVzaXJlZFN0cmF0ZWd5ID0gZ2V0T3B0aW9uKG9wdGlvbnMsIFwic3RyYXRlZ3lcIiwgXCJvYmplY3RcIik7XG4gICAgdmFyIGltcG9ydGFudENzc1J1bGVzID0gZ2V0T3B0aW9uKG9wdGlvbnMsIFwiaW1wb3J0YW50XCIsIGZhbHNlKTtcbiAgICB2YXIgc3RyYXRlZ3lPcHRpb25zID0ge1xuICAgICAgICByZXBvcnRlcjogcmVwb3J0ZXIsXG4gICAgICAgIGJhdGNoUHJvY2Vzc29yOiBiYXRjaFByb2Nlc3NvcixcbiAgICAgICAgc3RhdGVIYW5kbGVyOiBzdGF0ZUhhbmRsZXIsXG4gICAgICAgIGlkSGFuZGxlcjogaWRIYW5kbGVyLFxuICAgICAgICBpbXBvcnRhbnQ6IGltcG9ydGFudENzc1J1bGVzXG4gICAgfTtcblxuICAgIGlmKGRlc2lyZWRTdHJhdGVneSA9PT0gXCJzY3JvbGxcIikge1xuICAgICAgICBpZiAoYnJvd3NlckRldGVjdG9yLmlzTGVnYWN5T3BlcmEoKSkge1xuICAgICAgICAgICAgcmVwb3J0ZXIud2FybihcIlNjcm9sbCBzdHJhdGVneSBpcyBub3Qgc3VwcG9ydGVkIG9uIGxlZ2FjeSBPcGVyYS4gQ2hhbmdpbmcgdG8gb2JqZWN0IHN0cmF0ZWd5LlwiKTtcbiAgICAgICAgICAgIGRlc2lyZWRTdHJhdGVneSA9IFwib2JqZWN0XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoYnJvd3NlckRldGVjdG9yLmlzSUUoOSkpIHtcbiAgICAgICAgICAgIHJlcG9ydGVyLndhcm4oXCJTY3JvbGwgc3RyYXRlZ3kgaXMgbm90IHN1cHBvcnRlZCBvbiBJRTkuIENoYW5naW5nIHRvIG9iamVjdCBzdHJhdGVneS5cIik7XG4gICAgICAgICAgICBkZXNpcmVkU3RyYXRlZ3kgPSBcIm9iamVjdFwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYoZGVzaXJlZFN0cmF0ZWd5ID09PSBcInNjcm9sbFwiKSB7XG4gICAgICAgIGRldGVjdGlvblN0cmF0ZWd5ID0gc2Nyb2xsU3RyYXRlZ3lNYWtlcihzdHJhdGVneU9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZihkZXNpcmVkU3RyYXRlZ3kgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgZGV0ZWN0aW9uU3RyYXRlZ3kgPSBvYmplY3RTdHJhdGVneU1ha2VyKHN0cmF0ZWd5T3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdHJhdGVneSBuYW1lOiBcIiArIGRlc2lyZWRTdHJhdGVneSk7XG4gICAgfVxuXG4gICAgLy9DYWxscyBjYW4gYmUgbWFkZSB0byBsaXN0ZW5UbyB3aXRoIGVsZW1lbnRzIHRoYXQgYXJlIHN0aWxsIGJlaW5nIGluc3RhbGxlZC5cbiAgICAvL0Fsc28sIHNhbWUgZWxlbWVudHMgY2FuIG9jY3VyIGluIHRoZSBlbGVtZW50cyBsaXN0IGluIHRoZSBsaXN0ZW5UbyBmdW5jdGlvbi5cbiAgICAvL1dpdGggdGhpcyBtYXAsIHRoZSByZWFkeSBjYWxsYmFja3MgY2FuIGJlIHN5bmNocm9uaXplZCBiZXR3ZWVuIHRoZSBjYWxsc1xuICAgIC8vc28gdGhhdCB0aGUgcmVhZHkgY2FsbGJhY2sgY2FuIGFsd2F5cyBiZSBjYWxsZWQgd2hlbiBhbiBlbGVtZW50IGlzIHJlYWR5IC0gZXZlbiBpZlxuICAgIC8vaXQgd2Fzbid0IGluc3RhbGxlZCBmcm9tIHRoZSBmdW5jdGlvbiBpdHNlbGYuXG4gICAgdmFyIG9uUmVhZHlDYWxsYmFja3MgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIE1ha2VzIHRoZSBnaXZlbiBlbGVtZW50cyByZXNpemUtZGV0ZWN0YWJsZSBhbmQgc3RhcnRzIGxpc3RlbmluZyB0byByZXNpemUgZXZlbnRzIG9uIHRoZSBlbGVtZW50cy4gQ2FsbHMgdGhlIGV2ZW50IGNhbGxiYWNrIGZvciBlYWNoIGV2ZW50IGZvciBlYWNoIGVsZW1lbnQuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7T3B0aW9ucz99IG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QuIFRoZXNlIG9wdGlvbnMgd2lsbCBvdmVycmlkZSB0aGUgZ2xvYmFsIG9wdGlvbnMuIFNvbWUgb3B0aW9ucyBtYXkgbm90IGJlIG92ZXJyaWRlbiwgc3VjaCBhcyBpZEhhbmRsZXIuXG4gICAgICogQHBhcmFtIHtlbGVtZW50W118ZWxlbWVudH0gZWxlbWVudHMgVGhlIGdpdmVuIGFycmF5IG9mIGVsZW1lbnRzIHRvIGRldGVjdCByZXNpemUgZXZlbnRzIG9mLiBTaW5nbGUgZWxlbWVudCBpcyBhbHNvIHZhbGlkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0byBiZSBleGVjdXRlZCBmb3IgZWFjaCByZXNpemUgZXZlbnQgZm9yIGVhY2ggZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0ZW5UbyhvcHRpb25zLCBlbGVtZW50cywgbGlzdGVuZXIpIHtcbiAgICAgICAgZnVuY3Rpb24gb25SZXNpemVDYWxsYmFjayhlbGVtZW50KSB7XG4gICAgICAgICAgICB2YXIgbGlzdGVuZXJzID0gZXZlbnRMaXN0ZW5lckhhbmRsZXIuZ2V0KGVsZW1lbnQpO1xuICAgICAgICAgICAgZm9yRWFjaChsaXN0ZW5lcnMsIGZ1bmN0aW9uIGNhbGxMaXN0ZW5lclByb3h5KGxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFkZExpc3RlbmVyKGNhbGxPbkFkZCwgZWxlbWVudCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJIYW5kbGVyLmFkZChlbGVtZW50LCBsaXN0ZW5lcik7XG5cbiAgICAgICAgICAgIGlmKGNhbGxPbkFkZCkge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9PcHRpb25zIG9iamVjdCBtYXkgYmUgb21pdHRlZC5cbiAgICAgICAgaWYoIWxpc3RlbmVyKSB7XG4gICAgICAgICAgICBsaXN0ZW5lciA9IGVsZW1lbnRzO1xuICAgICAgICAgICAgZWxlbWVudHMgPSBvcHRpb25zO1xuICAgICAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWVsZW1lbnRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdCBsZWFzdCBvbmUgZWxlbWVudCByZXF1aXJlZC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZighbGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RlbmVyIHJlcXVpcmVkLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0VsZW1lbnQoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAvLyBBIHNpbmdsZSBlbGVtZW50IGhhcyBiZWVuIHBhc3NlZCBpbi5cbiAgICAgICAgICAgIGVsZW1lbnRzID0gW2VsZW1lbnRzXTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0NvbGxlY3Rpb24oZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAvLyBDb252ZXJ0IGNvbGxlY3Rpb24gdG8gYXJyYXkgZm9yIHBsdWdpbnMuXG4gICAgICAgICAgICAvLyBUT0RPOiBNYXkgd2FudCB0byBjaGVjayBzbyB0aGF0IGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIGNvbGxlY3Rpb24gYXJlIHZhbGlkIGVsZW1lbnRzLlxuICAgICAgICAgICAgZWxlbWVudHMgPSB0b0FycmF5KGVsZW1lbnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcihcIkludmFsaWQgYXJndW1lbnRzLiBNdXN0IGJlIGEgRE9NIGVsZW1lbnQgb3IgYSBjb2xsZWN0aW9uIG9mIERPTSBlbGVtZW50cy5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZWxlbWVudHNSZWFkeSA9IDA7XG5cbiAgICAgICAgdmFyIGNhbGxPbkFkZCA9IGdldE9wdGlvbihvcHRpb25zLCBcImNhbGxPbkFkZFwiLCBnbG9iYWxPcHRpb25zLmNhbGxPbkFkZCk7XG4gICAgICAgIHZhciBvblJlYWR5Q2FsbGJhY2sgPSBnZXRPcHRpb24ob3B0aW9ucywgXCJvblJlYWR5XCIsIGZ1bmN0aW9uIG5vb3AoKSB7fSk7XG4gICAgICAgIHZhciBkZWJ1ZyA9IGdldE9wdGlvbihvcHRpb25zLCBcImRlYnVnXCIsIGdsb2JhbE9wdGlvbnMuZGVidWcpO1xuXG4gICAgICAgIGZvckVhY2goZWxlbWVudHMsIGZ1bmN0aW9uIGF0dGFjaExpc3RlbmVyVG9FbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmICghc3RhdGVIYW5kbGVyLmdldFN0YXRlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgc3RhdGVIYW5kbGVyLmluaXRTdGF0ZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZEhhbmRsZXIuc2V0KGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgaWQgPSBpZEhhbmRsZXIuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBkZWJ1ZyAmJiByZXBvcnRlci5sb2coXCJBdHRhY2hpbmcgbGlzdGVuZXIgdG8gZWxlbWVudFwiLCBpZCwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmKCFlbGVtZW50VXRpbHMuaXNEZXRlY3RhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZGVidWcgJiYgcmVwb3J0ZXIubG9nKGlkLCBcIk5vdCBkZXRlY3RhYmxlLlwiKTtcbiAgICAgICAgICAgICAgICBpZihlbGVtZW50VXRpbHMuaXNCdXN5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlYnVnICYmIHJlcG9ydGVyLmxvZyhpZCwgXCJTeXN0ZW0gYnVzeSBtYWtpbmcgaXQgZGV0ZWN0YWJsZVwiKTtcblxuICAgICAgICAgICAgICAgICAgICAvL1RoZSBlbGVtZW50IGlzIGJlaW5nIHByZXBhcmVkIHRvIGJlIGRldGVjdGFibGUuIERvIG5vdCBtYWtlIGl0IGRldGVjdGFibGUuXG4gICAgICAgICAgICAgICAgICAgIC8vSnVzdCBhZGQgdGhlIGxpc3RlbmVyLCBiZWNhdXNlIHRoZSBlbGVtZW50IHdpbGwgc29vbiBiZSBkZXRlY3RhYmxlLlxuICAgICAgICAgICAgICAgICAgICBhZGRMaXN0ZW5lcihjYWxsT25BZGQsIGVsZW1lbnQsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgb25SZWFkeUNhbGxiYWNrc1tpZF0gPSBvblJlYWR5Q2FsbGJhY2tzW2lkXSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgb25SZWFkeUNhbGxiYWNrc1tpZF0ucHVzaChmdW5jdGlvbiBvblJlYWR5KCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNSZWFkeSsrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50c1JlYWR5ID09PSBlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlYWR5Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkZWJ1ZyAmJiByZXBvcnRlci5sb2coaWQsIFwiTWFraW5nIGRldGVjdGFibGUuLi5cIik7XG4gICAgICAgICAgICAgICAgLy9UaGUgZWxlbWVudCBpcyBub3QgcHJlcGFyZWQgdG8gYmUgZGV0ZWN0YWJsZSwgc28gZG8gcHJlcGFyZSBpdCBhbmQgYWRkIGEgbGlzdGVuZXIgdG8gaXQuXG4gICAgICAgICAgICAgICAgZWxlbWVudFV0aWxzLm1hcmtCdXN5KGVsZW1lbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXRlY3Rpb25TdHJhdGVneS5tYWtlRGV0ZWN0YWJsZSh7IGRlYnVnOiBkZWJ1ZywgaW1wb3J0YW50OiBpbXBvcnRhbnRDc3NSdWxlcyB9LCBlbGVtZW50LCBmdW5jdGlvbiBvbkVsZW1lbnREZXRlY3RhYmxlKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVidWcgJiYgcmVwb3J0ZXIubG9nKGlkLCBcIm9uRWxlbWVudERldGVjdGFibGVcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlSGFuZGxlci5nZXRTdGF0ZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFV0aWxzLm1hcmtBc0RldGVjdGFibGUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50VXRpbHMubWFya0J1c3koZWxlbWVudCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0aW9uU3RyYXRlZ3kuYWRkTGlzdGVuZXIoZWxlbWVudCwgb25SZXNpemVDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRMaXN0ZW5lcihjYWxsT25BZGQsIGVsZW1lbnQsIGxpc3RlbmVyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlIGVsZW1lbnQgc2l6ZSBtaWdodCBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGNhbGwgdG8gXCJsaXN0ZW5Ub1wiLCB3ZSBuZWVkIHRvIGNoZWNrIGZvciB0aGlzIGNoYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgYSByZXNpemUgZXZlbnQgbWF5IGJlIGVtaXR0ZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYXZpbmcgdGhlIHN0YXJ0U2l6ZSBvYmplY3QgaXMgb3B0aW9uYWwgKHNpbmNlIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW4gc29tZSBjYXNlcyBzdWNoIGFzIHVucmVuZGVyZWQgZWxlbWVudHMpLCBzbyBjaGVjayBmb3IgaXRzIGV4aXN0YW5jZSBiZWZvcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBbHNvLCBjaGVjayB0aGUgc3RhdGUgZXhpc3RhbmNlIGJlZm9yZSBzaW5jZSB0aGUgZWxlbWVudCBtYXkgaGF2ZSBiZWVuIHVuaW5zdGFsbGVkIGluIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IHN0YXRlSGFuZGxlci5nZXRTdGF0ZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0ZS5zdGFydFNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuc3RhcnRTaXplLndpZHRoICE9PSB3aWR0aCB8fCBzdGF0ZS5zdGFydFNpemUuaGVpZ2h0ICE9PSBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXNpemVDYWxsYmFjayhlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG9uUmVhZHlDYWxsYmFja3NbaWRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaChvblJlYWR5Q2FsbGJhY2tzW2lkXSwgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBlbGVtZW50IGhhcyBiZWVuIHVuaXNudGFsbGVkIGJlZm9yZSBiZWluZyBkZXRlY3RhYmxlLlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcgJiYgcmVwb3J0ZXIubG9nKGlkLCBcIkVsZW1lbnQgdW5pbnN0YWxsZWQgYmVmb3JlIGJlaW5nIGRldGVjdGFibGUuXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9uUmVhZHlDYWxsYmFja3NbaWRdO1xuXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzUmVhZHkrKztcbiAgICAgICAgICAgICAgICAgICAgaWYoZWxlbWVudHNSZWFkeSA9PT0gZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblJlYWR5Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWJ1ZyAmJiByZXBvcnRlci5sb2coaWQsIFwiQWxyZWFkeSBkZXRlY2FibGUsIGFkZGluZyBsaXN0ZW5lci5cIik7XG5cbiAgICAgICAgICAgIC8vVGhlIGVsZW1lbnQgaGFzIGJlZW4gcHJlcGFyZWQgdG8gYmUgZGV0ZWN0YWJsZSBhbmQgaXMgcmVhZHkgdG8gYmUgbGlzdGVuZWQgdG8uXG4gICAgICAgICAgICBhZGRMaXN0ZW5lcihjYWxsT25BZGQsIGVsZW1lbnQsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgIGVsZW1lbnRzUmVhZHkrKztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYoZWxlbWVudHNSZWFkeSA9PT0gZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBvblJlYWR5Q2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVuaW5zdGFsbChlbGVtZW50cykge1xuICAgICAgICBpZighZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcihcIkF0IGxlYXN0IG9uZSBlbGVtZW50IGlzIHJlcXVpcmVkLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0VsZW1lbnQoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAvLyBBIHNpbmdsZSBlbGVtZW50IGhhcyBiZWVuIHBhc3NlZCBpbi5cbiAgICAgICAgICAgIGVsZW1lbnRzID0gW2VsZW1lbnRzXTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0NvbGxlY3Rpb24oZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAvLyBDb252ZXJ0IGNvbGxlY3Rpb24gdG8gYXJyYXkgZm9yIHBsdWdpbnMuXG4gICAgICAgICAgICAvLyBUT0RPOiBNYXkgd2FudCB0byBjaGVjayBzbyB0aGF0IGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIGNvbGxlY3Rpb24gYXJlIHZhbGlkIGVsZW1lbnRzLlxuICAgICAgICAgICAgZWxlbWVudHMgPSB0b0FycmF5KGVsZW1lbnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcihcIkludmFsaWQgYXJndW1lbnRzLiBNdXN0IGJlIGEgRE9NIGVsZW1lbnQgb3IgYSBjb2xsZWN0aW9uIG9mIERPTSBlbGVtZW50cy5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JFYWNoKGVsZW1lbnRzLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgZXZlbnRMaXN0ZW5lckhhbmRsZXIucmVtb3ZlQWxsTGlzdGVuZXJzKGVsZW1lbnQpO1xuICAgICAgICAgICAgZGV0ZWN0aW9uU3RyYXRlZ3kudW5pbnN0YWxsKGVsZW1lbnQpO1xuICAgICAgICAgICAgc3RhdGVIYW5kbGVyLmNsZWFuU3RhdGUoZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluaXREb2N1bWVudCh0YXJnZXREb2N1bWVudCkge1xuICAgICAgICBkZXRlY3Rpb25TdHJhdGVneS5pbml0RG9jdW1lbnQgJiYgZGV0ZWN0aW9uU3RyYXRlZ3kuaW5pdERvY3VtZW50KHRhcmdldERvY3VtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBsaXN0ZW5UbzogbGlzdGVuVG8sXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyOiBldmVudExpc3RlbmVySGFuZGxlci5yZW1vdmVMaXN0ZW5lcixcbiAgICAgICAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBldmVudExpc3RlbmVySGFuZGxlci5yZW1vdmVBbGxMaXN0ZW5lcnMsXG4gICAgICAgIHVuaW5zdGFsbDogdW5pbnN0YWxsLFxuICAgICAgICBpbml0RG9jdW1lbnQ6IGluaXREb2N1bWVudFxuICAgIH07XG59O1xuXG5mdW5jdGlvbiBnZXRPcHRpb24ob3B0aW9ucywgbmFtZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHZhbHVlID0gb3B0aW9uc1tuYW1lXTtcblxuICAgIGlmKCh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSAmJiBkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICB2YXIgZ2V0U3RhdGUgPSBvcHRpb25zLnN0YXRlSGFuZGxlci5nZXRTdGF0ZTtcblxuICAgIC8qKlxuICAgICAqIFRlbGxzIGlmIHRoZSBlbGVtZW50IGhhcyBiZWVuIG1hZGUgZGV0ZWN0YWJsZSBhbmQgcmVhZHkgdG8gYmUgbGlzdGVuZWQgZm9yIHJlc2l6ZSBldmVudHMuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gVGhlIGVsZW1lbnQgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIGlmIHRoZSBlbGVtZW50IGlzIGRldGVjdGFibGUgb3Igbm90LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRGV0ZWN0YWJsZShlbGVtZW50KSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGdldFN0YXRlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gc3RhdGUgJiYgISFzdGF0ZS5pc0RldGVjdGFibGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFya3MgdGhlIGVsZW1lbnQgdGhhdCBpdCBoYXMgYmVlbiBtYWRlIGRldGVjdGFibGUgYW5kIHJlYWR5IHRvIGJlIGxpc3RlbmVkIGZvciByZXNpemUgZXZlbnRzLlxuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcGFyYW0ge2VsZW1lbnR9IFRoZSBlbGVtZW50IHRvIG1hcmsuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFya0FzRGV0ZWN0YWJsZShlbGVtZW50KSB7XG4gICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLmlzRGV0ZWN0YWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVsbHMgaWYgdGhlIGVsZW1lbnQgaXMgYnVzeSBvciBub3QuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gVGhlIGVsZW1lbnQgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIGlmIHRoZSBlbGVtZW50IGlzIGJ1c3kgb3Igbm90LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQnVzeShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiAhIWdldFN0YXRlKGVsZW1lbnQpLmJ1c3k7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFya3MgdGhlIG9iamVjdCBpcyBidXN5IGFuZCBzaG91bGQgbm90IGJlIG1hZGUgZGV0ZWN0YWJsZS5cbiAgICAgKiBAcHVibGljXG4gICAgICogQHBhcmFtIHtlbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIG1hcmsuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBidXN5IElmIHRoZSBlbGVtZW50IGlzIGJ1c3kgb3Igbm90LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcmtCdXN5KGVsZW1lbnQsIGJ1c3kpIHtcbiAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkuYnVzeSA9ICEhYnVzeTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBpc0RldGVjdGFibGU6IGlzRGV0ZWN0YWJsZSxcbiAgICAgICAgbWFya0FzRGV0ZWN0YWJsZTogbWFya0FzRGV0ZWN0YWJsZSxcbiAgICAgICAgaXNCdXN5OiBpc0J1c3ksXG4gICAgICAgIG1hcmtCdXN5OiBtYXJrQnVzeVxuICAgIH07XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaWRIYW5kbGVyKSB7XG4gICAgdmFyIGV2ZW50TGlzdGVuZXJzID0ge307XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBsaXN0ZW5lcnMgZm9yIHRoZSBnaXZlbiBlbGVtZW50LlxuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcGFyYW0ge2VsZW1lbnR9IGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gZ2V0IGFsbCBsaXN0ZW5lcnMgZm9yLlxuICAgICAqIEByZXR1cm5zIEFsbCBsaXN0ZW5lcnMgZm9yIHRoZSBnaXZlbiBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldExpc3RlbmVycyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBpZCA9IGlkSGFuZGxlci5nZXQoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBldmVudExpc3RlbmVyc1tpZF0gfHwgW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RvcmVzIHRoZSBnaXZlbiBsaXN0ZW5lciBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuIFdpbGwgbm90IGFjdHVhbGx5IGFkZCB0aGUgbGlzdGVuZXIgdG8gdGhlIGVsZW1lbnQuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0aGF0IHNob3VsZCBoYXZlIHRoZSBsaXN0ZW5lciBhZGRlZC5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBsaXN0ZW5lciBUaGUgY2FsbGJhY2sgdGhhdCB0aGUgZWxlbWVudCBoYXMgYWRkZWQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYWRkTGlzdGVuZXIoZWxlbWVudCwgbGlzdGVuZXIpIHtcbiAgICAgICAgdmFyIGlkID0gaWRIYW5kbGVyLmdldChlbGVtZW50KTtcblxuICAgICAgICBpZighZXZlbnRMaXN0ZW5lcnNbaWRdKSB7XG4gICAgICAgICAgICBldmVudExpc3RlbmVyc1tpZF0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50TGlzdGVuZXJzW2lkXS5wdXNoKGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihlbGVtZW50LCBsaXN0ZW5lcikge1xuICAgICAgICB2YXIgbGlzdGVuZXJzID0gZ2V0TGlzdGVuZXJzKGVsZW1lbnQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBpZiAobGlzdGVuZXJzW2ldID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycyhlbGVtZW50KSB7XG4gICAgICB2YXIgbGlzdGVuZXJzID0gZ2V0TGlzdGVuZXJzKGVsZW1lbnQpO1xuICAgICAgaWYgKCFsaXN0ZW5lcnMpIHsgcmV0dXJuOyB9XG4gICAgICBsaXN0ZW5lcnMubGVuZ3RoID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXQ6IGdldExpc3RlbmVycyxcbiAgICAgICAgYWRkOiBhZGRMaXN0ZW5lcixcbiAgICAgICAgcmVtb3ZlTGlzdGVuZXI6IHJlbW92ZUxpc3RlbmVyLFxuICAgICAgICByZW1vdmVBbGxMaXN0ZW5lcnM6IHJlbW92ZUFsbExpc3RlbmVyc1xuICAgIH07XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGlkQ291bnQgPSAxO1xuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgbmV3IHVuaXF1ZSBpZCBpbiB0aGUgY29udGV4dC5cbiAgICAgKiBAcHVibGljXG4gICAgICogQHJldHVybnMge251bWJlcn0gQSB1bmlxdWUgaWQgaW4gdGhlIGNvbnRleHQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGUoKSB7XG4gICAgICAgIHJldHVybiBpZENvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2VuZXJhdGU6IGdlbmVyYXRlXG4gICAgfTtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgdmFyIGlkR2VuZXJhdG9yICAgICA9IG9wdGlvbnMuaWRHZW5lcmF0b3I7XG4gICAgdmFyIGdldFN0YXRlICAgICAgICA9IG9wdGlvbnMuc3RhdGVIYW5kbGVyLmdldFN0YXRlO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcmVzaXplIGRldGVjdG9yIGlkIG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcGFyYW0ge2VsZW1lbnR9IGVsZW1lbnQgVGhlIHRhcmdldCBlbGVtZW50IHRvIGdldCB0aGUgaWQgb2YuXG4gICAgICogQHJldHVybnMge3N0cmluZ3xudW1iZXJ8bnVsbH0gVGhlIGlkIG9mIHRoZSBlbGVtZW50LiBOdWxsIGlmIGl0IGhhcyBubyBpZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRJZChlbGVtZW50KSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGdldFN0YXRlKGVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0ZS5pZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSByZXNpemUgZGV0ZWN0b3IgaWQgb2YgdGhlIGVsZW1lbnQuIFJlcXVpcmVzIHRoZSBlbGVtZW50IHRvIGhhdmUgYSByZXNpemUgZGV0ZWN0b3Igc3RhdGUgaW5pdGlhbGl6ZWQuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gZWxlbWVudCBUaGUgdGFyZ2V0IGVsZW1lbnQgdG8gc2V0IHRoZSBpZCBvZi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfG51bWJlcnxudWxsfSBUaGUgaWQgb2YgdGhlIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0SWQoZWxlbWVudCkge1xuICAgICAgICB2YXIgc3RhdGUgPSBnZXRTdGF0ZShlbGVtZW50KTtcblxuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzZXRJZCByZXF1aXJlZCB0aGUgZWxlbWVudCB0byBoYXZlIGEgcmVzaXplIGRldGVjdGlvbiBzdGF0ZS5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaWQgPSBpZEdlbmVyYXRvci5nZW5lcmF0ZSgpO1xuXG4gICAgICAgIHN0YXRlLmlkID0gaWQ7XG5cbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldDogZ2V0SWQsXG4gICAgICAgIHNldDogc2V0SWRcbiAgICB9O1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBnbG9iYWwgY29uc29sZTogZmFsc2UgKi9cblxuLyoqXG4gKiBSZXBvcnRlciB0aGF0IGhhbmRsZXMgdGhlIHJlcG9ydGluZyBvZiBsb2dzLCB3YXJuaW5ncyBhbmQgZXJyb3JzLlxuICogQHB1YmxpY1xuICogQHBhcmFtIHtib29sZWFufSBxdWlldCBUZWxscyBpZiB0aGUgcmVwb3J0ZXIgc2hvdWxkIGJlIHF1aWV0IG9yIG5vdC5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihxdWlldCkge1xuICAgIGZ1bmN0aW9uIG5vb3AoKSB7XG4gICAgICAgIC8vRG9lcyBub3RoaW5nLlxuICAgIH1cblxuICAgIHZhciByZXBvcnRlciA9IHtcbiAgICAgICAgbG9nOiBub29wLFxuICAgICAgICB3YXJuOiBub29wLFxuICAgICAgICBlcnJvcjogbm9vcFxuICAgIH07XG5cbiAgICBpZighcXVpZXQgJiYgd2luZG93LmNvbnNvbGUpIHtcbiAgICAgICAgdmFyIGF0dGFjaEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVwb3J0ZXIsIG5hbWUpIHtcbiAgICAgICAgICAgIC8vVGhlIHByb3h5IGlzIG5lZWRlZCB0byBiZSBhYmxlIHRvIGNhbGwgdGhlIG1ldGhvZCB3aXRoIHRoZSBjb25zb2xlIGNvbnRleHQsXG4gICAgICAgICAgICAvL3NpbmNlIHdlIGNhbm5vdCB1c2UgYmluZC5cbiAgICAgICAgICAgIHJlcG9ydGVyW25hbWVdID0gZnVuY3Rpb24gcmVwb3J0ZXJQcm94eSgpIHtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IGNvbnNvbGVbbmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKGYuYXBwbHkpIHsgLy9JRTkgZG9lcyBub3Qgc3VwcG9ydCBjb25zb2xlLmxvZy5hcHBseSA6KVxuICAgICAgICAgICAgICAgICAgICBmLmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGYoYXJndW1lbnRzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgYXR0YWNoRnVuY3Rpb24ocmVwb3J0ZXIsIFwibG9nXCIpO1xuICAgICAgICBhdHRhY2hGdW5jdGlvbihyZXBvcnRlciwgXCJ3YXJuXCIpO1xuICAgICAgICBhdHRhY2hGdW5jdGlvbihyZXBvcnRlciwgXCJlcnJvclwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVwb3J0ZXI7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiYXRjaFByb2Nlc3Nvck1ha2VyKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zICAgICAgICAgICAgID0gb3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgcmVwb3J0ZXIgICAgICAgID0gb3B0aW9ucy5yZXBvcnRlcjtcbiAgICB2YXIgYXN5bmNQcm9jZXNzICAgID0gdXRpbHMuZ2V0T3B0aW9uKG9wdGlvbnMsIFwiYXN5bmNcIiwgdHJ1ZSk7XG4gICAgdmFyIGF1dG9Qcm9jZXNzICAgICA9IHV0aWxzLmdldE9wdGlvbihvcHRpb25zLCBcImF1dG9cIiwgdHJ1ZSk7XG5cbiAgICBpZihhdXRvUHJvY2VzcyAmJiAhYXN5bmNQcm9jZXNzKSB7XG4gICAgICAgIHJlcG9ydGVyICYmIHJlcG9ydGVyLndhcm4oXCJJbnZhbGlkIG9wdGlvbnMgY29tYmluYXRpb24uIGF1dG89dHJ1ZSBhbmQgYXN5bmM9ZmFsc2UgaXMgaW52YWxpZC4gU2V0dGluZyBhc3luYz10cnVlLlwiKTtcbiAgICAgICAgYXN5bmNQcm9jZXNzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgYmF0Y2ggPSBCYXRjaCgpO1xuICAgIHZhciBhc3luY0ZyYW1lSGFuZGxlcjtcbiAgICB2YXIgaXNQcm9jZXNzaW5nID0gZmFsc2U7XG5cbiAgICBmdW5jdGlvbiBhZGRGdW5jdGlvbihsZXZlbCwgZm4pIHtcbiAgICAgICAgaWYoIWlzUHJvY2Vzc2luZyAmJiBhdXRvUHJvY2VzcyAmJiBhc3luY1Byb2Nlc3MgJiYgYmF0Y2guc2l6ZSgpID09PSAwKSB7XG4gICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGFzeW5jLCBpdCBpcyBndWFyYW50ZWVkIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIHRoYXQgdGhlIGZuIGlzIGFkZGVkIHRvIHRoZSBiYXRjaC5cbiAgICAgICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUsIHNpbmNlIHdlJ3JlIGNoZWNraW5nIHRoZSBzaXplIG9mIHRoZSBiYXRjaCB0byBiZSAwLlxuICAgICAgICAgICAgcHJvY2Vzc0JhdGNoQXN5bmMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJhdGNoLmFkZChsZXZlbCwgZm4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NCYXRjaCgpIHtcbiAgICAgICAgLy8gU2F2ZSB0aGUgY3VycmVudCBiYXRjaCwgYW5kIGNyZWF0ZSBhIG5ldyBiYXRjaCBzbyB0aGF0IGluY29taW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFkZGVkIGludG8gdGhlIGN1cnJlbnRseSBwcm9jZXNzaW5nIGJhdGNoLlxuICAgICAgICAvLyBDb250aW51ZSBwcm9jZXNzaW5nIHVudGlsIHRoZSB0b3AtbGV2ZWwgYmF0Y2ggaXMgZW1wdHkgKGZ1bmN0aW9ucyBtYXkgYmUgYWRkZWQgdG8gdGhlIG5ldyBiYXRjaCB3aGlsZSBwcm9jZXNzaW5nLCBhbmQgc28gb24pLlxuICAgICAgICBpc1Byb2Nlc3NpbmcgPSB0cnVlO1xuICAgICAgICB3aGlsZSAoYmF0Y2guc2l6ZSgpKSB7XG4gICAgICAgICAgICB2YXIgcHJvY2Vzc2luZ0JhdGNoID0gYmF0Y2g7XG4gICAgICAgICAgICBiYXRjaCA9IEJhdGNoKCk7XG4gICAgICAgICAgICBwcm9jZXNzaW5nQmF0Y2gucHJvY2VzcygpO1xuICAgICAgICB9XG4gICAgICAgIGlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZvcmNlUHJvY2Vzc0JhdGNoKGxvY2FsQXN5bmNQcm9jZXNzKSB7XG4gICAgICAgIGlmIChpc1Byb2Nlc3NpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGxvY2FsQXN5bmNQcm9jZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsQXN5bmNQcm9jZXNzID0gYXN5bmNQcm9jZXNzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoYXN5bmNGcmFtZUhhbmRsZXIpIHtcbiAgICAgICAgICAgIGNhbmNlbEZyYW1lKGFzeW5jRnJhbWVIYW5kbGVyKTtcbiAgICAgICAgICAgIGFzeW5jRnJhbWVIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGxvY2FsQXN5bmNQcm9jZXNzKSB7XG4gICAgICAgICAgICBwcm9jZXNzQmF0Y2hBc3luYygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzc0JhdGNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzQmF0Y2hBc3luYygpIHtcbiAgICAgICAgYXN5bmNGcmFtZUhhbmRsZXIgPSByZXF1ZXN0RnJhbWUocHJvY2Vzc0JhdGNoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhckJhdGNoKCkge1xuICAgICAgICBiYXRjaCAgICAgICAgICAgPSB7fTtcbiAgICAgICAgYmF0Y2hTaXplICAgICAgID0gMDtcbiAgICAgICAgdG9wTGV2ZWwgICAgICAgID0gMDtcbiAgICAgICAgYm90dG9tTGV2ZWwgICAgID0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYW5jZWxGcmFtZShsaXN0ZW5lcikge1xuICAgICAgICAvLyB2YXIgY2FuY2VsID0gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tb3pDYW5jZWxBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cud2Via2l0Q2FuY2VsQW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LmNsZWFyVGltZW91dDtcbiAgICAgICAgdmFyIGNhbmNlbCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNhbmNlbChsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVxdWVzdEZyYW1lKGNhbGxiYWNrKSB7XG4gICAgICAgIC8vIHZhciByYWYgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCBmdW5jdGlvbihmbikgeyByZXR1cm4gd2luZG93LnNldFRpbWVvdXQoZm4sIDIwKTsgfTtcbiAgICAgICAgdmFyIHJhZiA9IGZ1bmN0aW9uKGZuKSB7IHJldHVybiBzZXRUaW1lb3V0KGZuLCAwKTsgfTtcbiAgICAgICAgcmV0dXJuIHJhZihjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWRkOiBhZGRGdW5jdGlvbixcbiAgICAgICAgZm9yY2U6IGZvcmNlUHJvY2Vzc0JhdGNoXG4gICAgfTtcbn07XG5cbmZ1bmN0aW9uIEJhdGNoKCkge1xuICAgIHZhciBiYXRjaCAgICAgICA9IHt9O1xuICAgIHZhciBzaXplICAgICAgICA9IDA7XG4gICAgdmFyIHRvcExldmVsICAgID0gMDtcbiAgICB2YXIgYm90dG9tTGV2ZWwgPSAwO1xuXG4gICAgZnVuY3Rpb24gYWRkKGxldmVsLCBmbikge1xuICAgICAgICBpZighZm4pIHtcbiAgICAgICAgICAgIGZuID0gbGV2ZWw7XG4gICAgICAgICAgICBsZXZlbCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZihsZXZlbCA+IHRvcExldmVsKSB7XG4gICAgICAgICAgICB0b3BMZXZlbCA9IGxldmVsO1xuICAgICAgICB9IGVsc2UgaWYobGV2ZWwgPCBib3R0b21MZXZlbCkge1xuICAgICAgICAgICAgYm90dG9tTGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCFiYXRjaFtsZXZlbF0pIHtcbiAgICAgICAgICAgIGJhdGNoW2xldmVsXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgYmF0Y2hbbGV2ZWxdLnB1c2goZm4pO1xuICAgICAgICBzaXplKys7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2VzcygpIHtcbiAgICAgICAgZm9yKHZhciBsZXZlbCA9IGJvdHRvbUxldmVsOyBsZXZlbCA8PSB0b3BMZXZlbDsgbGV2ZWwrKykge1xuICAgICAgICAgICAgdmFyIGZucyA9IGJhdGNoW2xldmVsXTtcblxuICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBmbiA9IGZuc1tpXTtcbiAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWRkOiBhZGQsXG4gICAgICAgIHByb2Nlc3M6IHByb2Nlc3MsXG4gICAgICAgIHNpemU6IGdldFNpemVcbiAgICB9O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciB1dGlscyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbnV0aWxzLmdldE9wdGlvbiA9IGdldE9wdGlvbjtcblxuZnVuY3Rpb24gZ2V0T3B0aW9uKG9wdGlvbnMsIG5hbWUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciB2YWx1ZSA9IG9wdGlvbnNbbmFtZV07XG5cbiAgICBpZigodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgJiYgZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHByb3AgPSBcIl9lcmRcIjtcblxuZnVuY3Rpb24gaW5pdFN0YXRlKGVsZW1lbnQpIHtcbiAgICBlbGVtZW50W3Byb3BdID0ge307XG4gICAgcmV0dXJuIGdldFN0YXRlKGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBnZXRTdGF0ZShlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnRbcHJvcF07XG59XG5cbmZ1bmN0aW9uIGNsZWFuU3RhdGUoZWxlbWVudCkge1xuICAgIGRlbGV0ZSBlbGVtZW50W3Byb3BdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBpbml0U3RhdGU6IGluaXRTdGF0ZSxcbiAgICBnZXRTdGF0ZTogZ2V0U3RhdGUsXG4gICAgY2xlYW5TdGF0ZTogY2xlYW5TdGF0ZVxufTtcbiIsIi8qKlxuICogUmVzaXplIGRldGVjdGlvbiBzdHJhdGVneSB0aGF0IGluamVjdHMgb2JqZWN0cyB0byBlbGVtZW50cyBpbiBvcmRlciB0byBkZXRlY3QgcmVzaXplIGV2ZW50cy5cbiAqIEhlYXZpbHkgaW5zcGlyZWQgYnk6IGh0dHA6Ly93d3cuYmFja2FsbGV5Y29kZXIuY29tLzIwMTMvMDMvMTgvY3Jvc3MtYnJvd3Nlci1ldmVudC1iYXNlZC1lbGVtZW50LXJlc2l6ZS1kZXRlY3Rpb24vXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBicm93c2VyRGV0ZWN0b3IgPSByZXF1aXJlKFwiLi4vYnJvd3Nlci1kZXRlY3RvclwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgb3B0aW9ucyAgICAgICAgICAgICA9IG9wdGlvbnMgfHwge307XG4gICAgdmFyIHJlcG9ydGVyICAgICAgICA9IG9wdGlvbnMucmVwb3J0ZXI7XG4gICAgdmFyIGJhdGNoUHJvY2Vzc29yICA9IG9wdGlvbnMuYmF0Y2hQcm9jZXNzb3I7XG4gICAgdmFyIGdldFN0YXRlICAgICAgICA9IG9wdGlvbnMuc3RhdGVIYW5kbGVyLmdldFN0YXRlO1xuXG4gICAgaWYoIXJlcG9ydGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgZGVwZW5kZW5jeTogcmVwb3J0ZXIuXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSByZXNpemUgZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGVsZW1lbnQuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0aGF0IHNob3VsZCBoYXZlIHRoZSBsaXN0ZW5lciBhZGRlZC5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBsaXN0ZW5lciBUaGUgbGlzdGVuZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIGZvciBlYWNoIHJlc2l6ZSBldmVudCBvZiB0aGUgZWxlbWVudC4gVGhlIGVsZW1lbnQgd2lsbCBiZSBnaXZlbiBhcyBhIHBhcmFtZXRlciB0byB0aGUgbGlzdGVuZXIgY2FsbGJhY2suXG4gICAgICovXG4gICAgZnVuY3Rpb24gYWRkTGlzdGVuZXIoZWxlbWVudCwgbGlzdGVuZXIpIHtcbiAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXJQcm94eSgpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyKGVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoYnJvd3NlckRldGVjdG9yLmlzSUUoOCkpIHtcbiAgICAgICAgICAgIC8vSUUgOCBkb2VzIG5vdCBzdXBwb3J0IG9iamVjdCwgYnV0IHN1cHBvcnRzIHRoZSByZXNpemUgZXZlbnQgZGlyZWN0bHkgb24gZWxlbWVudHMuXG4gICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vYmplY3QgPSB7XG4gICAgICAgICAgICAgICAgcHJveHk6IGxpc3RlbmVyUHJveHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBlbGVtZW50LmF0dGFjaEV2ZW50KFwib25yZXNpemVcIiwgbGlzdGVuZXJQcm94eSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgb2JqZWN0ID0gZ2V0T2JqZWN0KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZighb2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRWxlbWVudCBpcyBub3QgZGV0ZWN0YWJsZSBieSB0aGlzIHN0cmF0ZWd5LlwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb2JqZWN0LmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGxpc3RlbmVyUHJveHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDc3NUZXh0U3RyaW5nKHJ1bGVzKSB7XG4gICAgICAgIHZhciBzZXBlcmF0b3IgPSBvcHRpb25zLmltcG9ydGFudCA/IFwiICFpbXBvcnRhbnQ7IFwiIDogXCI7IFwiO1xuXG4gICAgICAgIHJldHVybiAocnVsZXMuam9pbihzZXBlcmF0b3IpICsgc2VwZXJhdG9yKS50cmltKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYW4gZWxlbWVudCBkZXRlY3RhYmxlIGFuZCByZWFkeSB0byBiZSBsaXN0ZW5lZCBmb3IgcmVzaXplIGV2ZW50cy4gV2lsbCBjYWxsIHRoZSBjYWxsYmFjayB3aGVuIHRoZSBlbGVtZW50IGlzIHJlYWR5IHRvIGJlIGxpc3RlbmVkIGZvciByZXNpemUgY2hhbmdlcy5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBtYWtlIGRldGVjdGFibGVcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgcmVhZHkgdG8gYmUgbGlzdGVuZWQgZm9yIHJlc2l6ZSBjaGFuZ2VzLiBXaWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBlbGVtZW50IGFzIGZpcnN0IHBhcmFtZXRlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYWtlRGV0ZWN0YWJsZShvcHRpb25zLCBlbGVtZW50LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBlbGVtZW50ID0gb3B0aW9ucztcbiAgICAgICAgICAgIG9wdGlvbnMgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICAgIHZhciBkZWJ1ZyA9IG9wdGlvbnMuZGVidWc7XG5cbiAgICAgICAgZnVuY3Rpb24gaW5qZWN0T2JqZWN0KGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICB2YXIgT0JKRUNUX1NUWUxFID0gYnVpbGRDc3NUZXh0U3RyaW5nKFtcImRpc3BsYXk6IGJsb2NrXCIsIFwicG9zaXRpb246IGFic29sdXRlXCIsIFwidG9wOiAwXCIsIFwibGVmdDogMFwiLCBcIndpZHRoOiAxMDAlXCIsIFwiaGVpZ2h0OiAxMDAlXCIsIFwiYm9yZGVyOiBub25lXCIsIFwicGFkZGluZzogMFwiLCBcIm1hcmdpbjogMFwiLCBcIm9wYWNpdHk6IDBcIiwgXCJ6LWluZGV4OiAtMTAwMFwiLCBcInBvaW50ZXItZXZlbnRzOiBub25lXCJdKTtcblxuICAgICAgICAgICAgLy9UaGUgdGFyZ2V0IGVsZW1lbnQgbmVlZHMgdG8gYmUgcG9zaXRpb25lZCAoZXZlcnl0aGluZyBleGNlcHQgc3RhdGljKSBzbyB0aGUgYWJzb2x1dGUgcG9zaXRpb25lZCBvYmplY3Qgd2lsbCBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSB0YXJnZXQgZWxlbWVudC5cblxuICAgICAgICAgICAgLy8gUG9zaXRpb24gYWx0ZXJpbmcgbWF5IGJlIHBlcmZvcm1lZCBkaXJlY3RseSBvciBvbiBvYmplY3QgbG9hZCwgZGVwZW5kaW5nIG9uIGlmIHN0eWxlIHJlc29sdXRpb24gaXMgcG9zc2libGUgZGlyZWN0bHkgb3Igbm90LlxuICAgICAgICAgICAgdmFyIHBvc2l0aW9uQ2hlY2tQZXJmb3JtZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnQgbWF5IG5vdCB5ZXQgYmUgYXR0YWNoZWQgdG8gdGhlIERPTSwgYW5kIHRoZXJlZm9yZSB0aGUgc3R5bGUgb2JqZWN0IG1heSBiZSBlbXB0eSBpbiBzb21lIGJyb3dzZXJzLlxuICAgICAgICAgICAgLy8gU2luY2UgdGhlIHN0eWxlIG9iamVjdCBpcyBhIHJlZmVyZW5jZSwgaXQgd2lsbCBiZSB1cGRhdGVkIGFzIHNvb24gYXMgdGhlIGVsZW1lbnQgaXMgYXR0YWNoZWQgdG8gdGhlIERPTS5cbiAgICAgICAgICAgIHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkuc3RhcnRTaXplID0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZnVuY3Rpb24gbXV0YXRlRG9tKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFsdGVyUG9zaXRpb25TdHlsZXMoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmKHN0eWxlLnBvc2l0aW9uID09PSBcInN0YXRpY1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFwicG9zaXRpb25cIiwgXCJyZWxhdGl2ZVwiLCBvcHRpb25zLmltcG9ydGFudCA/IFwiaW1wb3J0YW50XCIgOiBcIlwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlbW92ZVJlbGF0aXZlU3R5bGVzID0gZnVuY3Rpb24ocmVwb3J0ZXIsIGVsZW1lbnQsIHN0eWxlLCBwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldE51bWVyaWNhbFZhbHVlKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bXi1cXGRcXC5dL2csIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlW3Byb3BlcnR5XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlICE9PSBcImF1dG9cIiAmJiBnZXROdW1lcmljYWxWYWx1ZSh2YWx1ZSkgIT09IFwiMFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVyLndhcm4oXCJBbiBlbGVtZW50IHRoYXQgaXMgcG9zaXRpb25lZCBzdGF0aWMgaGFzIHN0eWxlLlwiICsgcHJvcGVydHkgKyBcIj1cIiArIHZhbHVlICsgXCIgd2hpY2ggaXMgaWdub3JlZCBkdWUgdG8gdGhlIHN0YXRpYyBwb3NpdGlvbmluZy4gVGhlIGVsZW1lbnQgd2lsbCBuZWVkIHRvIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUsIHNvIHRoZSBzdHlsZS5cIiArIHByb3BlcnR5ICsgXCIgd2lsbCBiZSBzZXQgdG8gMC4gRWxlbWVudDogXCIsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHByb3BlcnR5LCBcIjBcIiwgb3B0aW9ucy5pbXBvcnRhbnQgPyBcImltcG9ydGFudFwiIDogXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy9DaGVjayBzbyB0aGF0IHRoZXJlIGFyZSBubyBhY2NpZGVudGFsIHN0eWxlcyB0aGF0IHdpbGwgbWFrZSB0aGUgZWxlbWVudCBzdHlsZWQgZGlmZmVyZW50bHkgbm93IHRoYXQgaXMgaXMgcmVsYXRpdmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGFyZSBhbnksIHNldCB0aGVtIHRvIDAgKHRoaXMgc2hvdWxkIGJlIG9rYXkgd2l0aCB0aGUgdXNlciBzaW5jZSB0aGUgc3R5bGUgcHJvcGVydGllcyBkaWQgbm90aGluZyBiZWZvcmUgW3NpbmNlIHRoZSBlbGVtZW50IHdhcyBwb3NpdGlvbmVkIHN0YXRpY10gYW55d2F5KS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJlbGF0aXZlU3R5bGVzKHJlcG9ydGVyLCBlbGVtZW50LCBzdHlsZSwgXCJ0b3BcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVSZWxhdGl2ZVN0eWxlcyhyZXBvcnRlciwgZWxlbWVudCwgc3R5bGUsIFwicmlnaHRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVSZWxhdGl2ZVN0eWxlcyhyZXBvcnRlciwgZWxlbWVudCwgc3R5bGUsIFwiYm90dG9tXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUmVsYXRpdmVTdHlsZXMocmVwb3J0ZXIsIGVsZW1lbnQsIHN0eWxlLCBcImxlZnRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBvbk9iamVjdExvYWQoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBvYmplY3QgaGFzIGJlZW4gbG9hZGVkLCB3aGljaCBtZWFucyB0aGF0IHRoZSBlbGVtZW50IG5vdyBpcyBndWFyYW50ZWVkIHRvIGJlIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAgICAgICAgICAgICAgICAgIGlmICghcG9zaXRpb25DaGVja1BlcmZvcm1lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJQb3NpdGlvblN0eWxlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG5cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0RG9jdW1lbnQoZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vT3BlcmEgMTIgc2VlbSB0byBjYWxsIHRoZSBvYmplY3Qub25sb2FkIGJlZm9yZSB0aGUgYWN0dWFsIGRvY3VtZW50IGhhcyBiZWVuIGNyZWF0ZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAvL1NvIGlmIGl0IGlzIG5vdCBwcmVzZW50LCBwb2xsIGl0IHdpdGggYW4gdGltZW91dCB1bnRpbCBpdCBpcyBwcmVzZW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgLy9UT0RPOiBDb3VsZCBtYXliZSBiZSBoYW5kbGVkIGJldHRlciB3aXRoIG9iamVjdC5vbnJlYWR5c3RhdGVjaGFuZ2Ugb3Igc2ltaWxhci5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFlbGVtZW50LmNvbnRlbnREb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IGdldFN0YXRlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5jaGVja0Zvck9iamVjdERvY3VtZW50VGltZW91dElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc3RhdGUuY2hlY2tGb3JPYmplY3REb2N1bWVudFRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrRm9yT2JqZWN0RG9jdW1lbnRUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uIGNoZWNrRm9yT2JqZWN0RG9jdW1lbnQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrRm9yT2JqZWN0RG9jdW1lbnRUaW1lb3V0SWQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXREb2N1bWVudChlbGVtZW50LCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZWxlbWVudC5jb250ZW50RG9jdW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy9NdXRhdGluZyB0aGUgb2JqZWN0IGVsZW1lbnQgaGVyZSBzZWVtcyB0byBmaXJlIGFub3RoZXIgbG9hZCBldmVudC5cbiAgICAgICAgICAgICAgICAgICAgLy9NdXRhdGluZyB0aGUgaW5uZXIgZG9jdW1lbnQgb2YgdGhlIG9iamVjdCBlbGVtZW50IGlzIGZpbmUgdGhvdWdoLlxuICAgICAgICAgICAgICAgICAgICB2YXIgb2JqZWN0RWxlbWVudCA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICAgICAgLy9DcmVhdGUgdGhlIHN0eWxlIGVsZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIG9iamVjdC5cbiAgICAgICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnQob2JqZWN0RWxlbWVudCwgZnVuY3Rpb24gb25PYmplY3REb2N1bWVudFJlYWR5KG9iamVjdERvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL05vdGlmeSB0aGF0IHRoZSBlbGVtZW50IGlzIHJlYWR5IHRvIGJlIGxpc3RlbmVkIHRvLlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBkZXRhY2hlZCBmcm9tIHRoZSBET00sIGFuZCBzb21lIGJyb3dzZXJzIGRvZXMgbm90IHN1cHBvcnQgc3R5bGUgcmVzb2x2aW5nIG9mIGRldGFjaGVkIGVsZW1lbnRzLlxuICAgICAgICAgICAgICAgIC8vIFRoZSBhbHRlclBvc2l0aW9uU3R5bGVzIG5lZWRzIHRvIGJlIGRlbGF5ZWQgdW50aWwgd2Uga25vdyB0aGUgZWxlbWVudCBoYXMgYmVlbiBhdHRhY2hlZCB0byB0aGUgRE9NICh3aGljaCB3ZSBhcmUgc3VyZSBvZiB3aGVuIHRoZSBvbk9iamVjdExvYWQgaGFzIGJlZW4gZmlyZWQpLCBpZiBzdHlsZSByZXNvbHV0aW9uIGlzIG5vdCBwb3NzaWJsZS5cbiAgICAgICAgICAgICAgICBpZiAoc3R5bGUucG9zaXRpb24gIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJQb3NpdGlvblN0eWxlcyhzdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uQ2hlY2tQZXJmb3JtZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vQWRkIGFuIG9iamVjdCBlbGVtZW50IGFzIGEgY2hpbGQgdG8gdGhlIHRhcmdldCBlbGVtZW50IHRoYXQgd2lsbCBiZSBsaXN0ZW5lZCB0byBmb3IgcmVzaXplIGV2ZW50cy5cbiAgICAgICAgICAgICAgICB2YXIgb2JqZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm9iamVjdFwiKTtcbiAgICAgICAgICAgICAgICBvYmplY3Quc3R5bGUuY3NzVGV4dCA9IE9CSkVDVF9TVFlMRTtcbiAgICAgICAgICAgICAgICBvYmplY3QudGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICBvYmplY3QudHlwZSA9IFwidGV4dC9odG1sXCI7XG4gICAgICAgICAgICAgICAgb2JqZWN0LnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcbiAgICAgICAgICAgICAgICBvYmplY3Qub25sb2FkID0gb25PYmplY3RMb2FkO1xuXG4gICAgICAgICAgICAgICAgLy9TYWZhcmk6IFRoaXMgbXVzdCBvY2N1ciBiZWZvcmUgYWRkaW5nIHRoZSBvYmplY3QgdG8gdGhlIERPTS5cbiAgICAgICAgICAgICAgICAvL0lFOiBEb2VzIG5vdCBsaWtlIHRoYXQgdGhpcyBoYXBwZW5zIGJlZm9yZSwgZXZlbiBpZiBpdCBpcyBhbHNvIGFkZGVkIGFmdGVyLlxuICAgICAgICAgICAgICAgIGlmKCFicm93c2VyRGV0ZWN0b3IuaXNJRSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5kYXRhID0gXCJhYm91dDpibGFua1wiO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghZ2V0U3RhdGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnQgaGFzIGJlZW4gdW5pbnN0YWxsZWQgYmVmb3JlIHRoZSBhY3R1YWwgbG9hZGluZyBoYXBwZW5lZC5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQob2JqZWN0KTtcbiAgICAgICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vYmplY3QgPSBvYmplY3Q7XG5cbiAgICAgICAgICAgICAgICAvL0lFOiBUaGlzIG11c3Qgb2NjdXIgYWZ0ZXIgYWRkaW5nIHRoZSBvYmplY3QgdG8gdGhlIERPTS5cbiAgICAgICAgICAgICAgICBpZihicm93c2VyRGV0ZWN0b3IuaXNJRSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5kYXRhID0gXCJhYm91dDpibGFua1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoYmF0Y2hQcm9jZXNzb3IpIHtcbiAgICAgICAgICAgICAgICBiYXRjaFByb2Nlc3Nvci5hZGQobXV0YXRlRG9tKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbXV0YXRlRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZihicm93c2VyRGV0ZWN0b3IuaXNJRSg4KSkge1xuICAgICAgICAgICAgLy9JRSA4IGRvZXMgbm90IHN1cHBvcnQgb2JqZWN0cyBwcm9wZXJseS4gTHVja2lseSB0aGV5IGRvIHN1cHBvcnQgdGhlIHJlc2l6ZSBldmVudC5cbiAgICAgICAgICAgIC8vU28gZG8gbm90IGluamVjdCB0aGUgb2JqZWN0IGFuZCBub3RpZnkgdGhhdCB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHJlYWR5IHRvIGJlIGxpc3RlbmVkIHRvLlxuICAgICAgICAgICAgLy9UaGUgZXZlbnQgaGFuZGxlciBmb3IgdGhlIHJlc2l6ZSBldmVudCBpcyBhdHRhY2hlZCBpbiB0aGUgdXRpbHMuYWRkTGlzdGVuZXIgaW5zdGVhZC5cbiAgICAgICAgICAgIGNhbGxiYWNrKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5qZWN0T2JqZWN0KGVsZW1lbnQsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNoaWxkIG9iamVjdCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2VsZW1lbnR9IGVsZW1lbnQgVGhlIHRhcmdldCBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIFRoZSBvYmplY3QgZWxlbWVudCBvZiB0aGUgdGFyZ2V0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE9iamVjdChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBnZXRTdGF0ZShlbGVtZW50KS5vYmplY3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW5pbnN0YWxsKGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFnZXRTdGF0ZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG9iamVjdCA9IGdldE9iamVjdChlbGVtZW50KTtcblxuICAgICAgICBpZiAoIW9iamVjdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJyb3dzZXJEZXRlY3Rvci5pc0lFKDgpKSB7XG4gICAgICAgICAgICBlbGVtZW50LmRldGFjaEV2ZW50KFwib25yZXNpemVcIiwgb2JqZWN0LnByb3h5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQob2JqZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChnZXRTdGF0ZShlbGVtZW50KS5jaGVja0Zvck9iamVjdERvY3VtZW50VGltZW91dElkKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGdldFN0YXRlKGVsZW1lbnQpLmNoZWNrRm9yT2JqZWN0RG9jdW1lbnRUaW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVsZXRlIGdldFN0YXRlKGVsZW1lbnQpLm9iamVjdDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBtYWtlRGV0ZWN0YWJsZTogbWFrZURldGVjdGFibGUsXG4gICAgICAgIGFkZExpc3RlbmVyOiBhZGRMaXN0ZW5lcixcbiAgICAgICAgdW5pbnN0YWxsOiB1bmluc3RhbGxcbiAgICB9O1xufTtcbiIsIi8qKlxuICogUmVzaXplIGRldGVjdGlvbiBzdHJhdGVneSB0aGF0IGluamVjdHMgZGl2cyB0byBlbGVtZW50cyBpbiBvcmRlciB0byBkZXRlY3QgcmVzaXplIGV2ZW50cyBvbiBzY3JvbGwgZXZlbnRzLlxuICogSGVhdmlseSBpbnNwaXJlZCBieTogaHR0cHM6Ly9naXRodWIuY29tL21hcmNqL2Nzcy1lbGVtZW50LXF1ZXJpZXMvYmxvYi9tYXN0ZXIvc3JjL1Jlc2l6ZVNlbnNvci5qc1xuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoXCIuLi9jb2xsZWN0aW9uLXV0aWxzXCIpLmZvckVhY2g7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIG9wdGlvbnMgICAgICAgICAgICAgPSBvcHRpb25zIHx8IHt9O1xuICAgIHZhciByZXBvcnRlciAgICAgICAgPSBvcHRpb25zLnJlcG9ydGVyO1xuICAgIHZhciBiYXRjaFByb2Nlc3NvciAgPSBvcHRpb25zLmJhdGNoUHJvY2Vzc29yO1xuICAgIHZhciBnZXRTdGF0ZSAgICAgICAgPSBvcHRpb25zLnN0YXRlSGFuZGxlci5nZXRTdGF0ZTtcbiAgICB2YXIgaGFzU3RhdGUgICAgICAgID0gb3B0aW9ucy5zdGF0ZUhhbmRsZXIuaGFzU3RhdGU7XG4gICAgdmFyIGlkSGFuZGxlciAgICAgICA9IG9wdGlvbnMuaWRIYW5kbGVyO1xuXG4gICAgaWYgKCFiYXRjaFByb2Nlc3Nvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkIGRlcGVuZGVuY3k6IGJhdGNoUHJvY2Vzc29yXCIpO1xuICAgIH1cblxuICAgIGlmICghcmVwb3J0ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBkZXBlbmRlbmN5OiByZXBvcnRlci5cIik7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDb3VsZCB0aGlzIHBlcmhhcHMgYmUgZG9uZSBhdCBpbnN0YWxsYXRpb24gdGltZT9cbiAgICB2YXIgc2Nyb2xsYmFyU2l6ZXMgPSBnZXRTY3JvbGxiYXJTaXplcygpO1xuXG4gICAgdmFyIHN0eWxlSWQgPSBcImVyZF9zY3JvbGxfZGV0ZWN0aW9uX3Njcm9sbGJhcl9zdHlsZVwiO1xuICAgIHZhciBkZXRlY3Rpb25Db250YWluZXJDbGFzcyA9IFwiZXJkX3Njcm9sbF9kZXRlY3Rpb25fY29udGFpbmVyXCI7XG5cbiAgICBmdW5jdGlvbiBpbml0RG9jdW1lbnQodGFyZ2V0RG9jdW1lbnQpIHtcbiAgICAgICAgLy8gSW5qZWN0IHRoZSBzY3JvbGxiYXIgc3R5bGluZyB0aGF0IHByZXZlbnRzIHRoZW0gZnJvbSBhcHBlYXJpbmcgc29tZXRpbWVzIGluIENocm9tZS5cbiAgICAgICAgLy8gVGhlIGluamVjdGVkIGNvbnRhaW5lciBuZWVkcyB0byBoYXZlIGEgY2xhc3MsIHNvIHRoYXQgaXQgbWF5IGJlIHN0eWxlZCB3aXRoIENTUyAocHNldWRvIGVsZW1lbnRzKS5cbiAgICAgICAgaW5qZWN0U2Nyb2xsU3R5bGUodGFyZ2V0RG9jdW1lbnQsIHN0eWxlSWQsIGRldGVjdGlvbkNvbnRhaW5lckNsYXNzKTtcbiAgICB9XG5cbiAgICBpbml0RG9jdW1lbnQod2luZG93LmRvY3VtZW50KTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3NzVGV4dFN0cmluZyhydWxlcykge1xuICAgICAgICB2YXIgc2VwZXJhdG9yID0gb3B0aW9ucy5pbXBvcnRhbnQgPyBcIiAhaW1wb3J0YW50OyBcIiA6IFwiOyBcIjtcblxuICAgICAgICByZXR1cm4gKHJ1bGVzLmpvaW4oc2VwZXJhdG9yKSArIHNlcGVyYXRvcikudHJpbSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNjcm9sbGJhclNpemVzKCkge1xuICAgICAgICB2YXIgd2lkdGggPSA1MDA7XG4gICAgICAgIHZhciBoZWlnaHQgPSA1MDA7XG5cbiAgICAgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgY2hpbGQuc3R5bGUuY3NzVGV4dCA9IGJ1aWxkQ3NzVGV4dFN0cmluZyhbXCJwb3NpdGlvbjogYWJzb2x1dGVcIiwgXCJ3aWR0aDogXCIgKyB3aWR0aCoyICsgXCJweFwiLCBcImhlaWdodDogXCIgKyBoZWlnaHQqMiArIFwicHhcIiwgXCJ2aXNpYmlsaXR5OiBoaWRkZW5cIiwgXCJtYXJnaW46IDBcIiwgXCJwYWRkaW5nOiAwXCJdKTtcblxuICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBidWlsZENzc1RleHRTdHJpbmcoW1wicG9zaXRpb246IGFic29sdXRlXCIsIFwid2lkdGg6IFwiICsgd2lkdGggKyBcInB4XCIsIFwiaGVpZ2h0OiBcIiArIGhlaWdodCArIFwicHhcIiwgXCJvdmVyZmxvdzogc2Nyb2xsXCIsIFwidmlzaWJpbGl0eTogbm9uZVwiLCBcInRvcDogXCIgKyAtd2lkdGgqMyArIFwicHhcIiwgXCJsZWZ0OiBcIiArIC1oZWlnaHQqMyArIFwicHhcIiwgXCJ2aXNpYmlsaXR5OiBoaWRkZW5cIiwgXCJtYXJnaW46IDBcIiwgXCJwYWRkaW5nOiAwXCJdKTtcblxuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuXG4gICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGNvbnRhaW5lciwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTtcblxuICAgICAgICB2YXIgd2lkdGhTaXplID0gd2lkdGggLSBjb250YWluZXIuY2xpZW50V2lkdGg7XG4gICAgICAgIHZhciBoZWlnaHRTaXplID0gaGVpZ2h0IC0gY29udGFpbmVyLmNsaWVudEhlaWdodDtcblxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGNvbnRhaW5lcik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aFNpemUsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodFNpemVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbmplY3RTY3JvbGxTdHlsZSh0YXJnZXREb2N1bWVudCwgc3R5bGVJZCwgY29udGFpbmVyQ2xhc3MpIHtcbiAgICAgICAgZnVuY3Rpb24gaW5qZWN0U3R5bGUoc3R5bGUsIG1ldGhvZCkge1xuICAgICAgICAgICAgbWV0aG9kID0gbWV0aG9kIHx8IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0RG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhciBzdHlsZUVsZW1lbnQgPSB0YXJnZXREb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgICAgICBzdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gc3R5bGU7XG4gICAgICAgICAgICBzdHlsZUVsZW1lbnQuaWQgPSBzdHlsZUlkO1xuICAgICAgICAgICAgbWV0aG9kKHN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGVFbGVtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0YXJnZXREb2N1bWVudC5nZXRFbGVtZW50QnlJZChzdHlsZUlkKSkge1xuICAgICAgICAgICAgdmFyIGNvbnRhaW5lckFuaW1hdGlvbkNsYXNzID0gY29udGFpbmVyQ2xhc3MgKyBcIl9hbmltYXRpb25cIjtcbiAgICAgICAgICAgIHZhciBjb250YWluZXJBbmltYXRpb25BY3RpdmVDbGFzcyA9IGNvbnRhaW5lckNsYXNzICsgXCJfYW5pbWF0aW9uX2FjdGl2ZVwiO1xuICAgICAgICAgICAgdmFyIHN0eWxlID0gXCIvKiBDcmVhdGVkIGJ5IHRoZSBlbGVtZW50LXJlc2l6ZS1kZXRlY3RvciBsaWJyYXJ5LiAqL1xcblwiO1xuICAgICAgICAgICAgc3R5bGUgKz0gXCIuXCIgKyBjb250YWluZXJDbGFzcyArIFwiID4gZGl2Ojotd2Via2l0LXNjcm9sbGJhciB7IFwiICsgYnVpbGRDc3NUZXh0U3RyaW5nKFtcImRpc3BsYXk6IG5vbmVcIl0pICsgXCIgfVxcblxcblwiO1xuICAgICAgICAgICAgc3R5bGUgKz0gXCIuXCIgKyBjb250YWluZXJBbmltYXRpb25BY3RpdmVDbGFzcyArIFwiIHsgXCIgKyBidWlsZENzc1RleHRTdHJpbmcoW1wiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuMXNcIiwgXCJhbmltYXRpb24tZHVyYXRpb246IDAuMXNcIiwgXCItd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBcIiArIGNvbnRhaW5lckFuaW1hdGlvbkNsYXNzLCBcImFuaW1hdGlvbi1uYW1lOiBcIiArIGNvbnRhaW5lckFuaW1hdGlvbkNsYXNzXSkgKyBcIiB9XFxuXCI7XG4gICAgICAgICAgICBzdHlsZSArPSBcIkAtd2Via2l0LWtleWZyYW1lcyBcIiArIGNvbnRhaW5lckFuaW1hdGlvbkNsYXNzICsgIFwiIHsgMCUgeyBvcGFjaXR5OiAxOyB9IDUwJSB7IG9wYWNpdHk6IDA7IH0gMTAwJSB7IG9wYWNpdHk6IDE7IH0gfVxcblwiO1xuICAgICAgICAgICAgc3R5bGUgKz0gXCJAa2V5ZnJhbWVzIFwiICsgY29udGFpbmVyQW5pbWF0aW9uQ2xhc3MgKyAgICAgICAgICBcIiB7IDAlIHsgb3BhY2l0eTogMTsgfSA1MCUgeyBvcGFjaXR5OiAwOyB9IDEwMCUgeyBvcGFjaXR5OiAxOyB9IH1cIjtcbiAgICAgICAgICAgIGluamVjdFN0eWxlKHN0eWxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZEFuaW1hdGlvbkNsYXNzKGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgKz0gXCIgXCIgKyBkZXRlY3Rpb25Db250YWluZXJDbGFzcyArIFwiX2FuaW1hdGlvbl9hY3RpdmVcIjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRFdmVudChlbCwgbmFtZSwgY2IpIHtcbiAgICAgICAgaWYgKGVsLmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgY2IpO1xuICAgICAgICB9IGVsc2UgaWYoZWwuYXR0YWNoRXZlbnQpIHtcbiAgICAgICAgICAgIGVsLmF0dGFjaEV2ZW50KFwib25cIiArIG5hbWUsIGNiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcihcIltzY3JvbGxdIERvbid0IGtub3cgaG93IHRvIGFkZCBldmVudCBsaXN0ZW5lcnMuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlRXZlbnQoZWwsIG5hbWUsIGNiKSB7XG4gICAgICAgIGlmIChlbC5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGNiKTtcbiAgICAgICAgfSBlbHNlIGlmKGVsLmRldGFjaEV2ZW50KSB7XG4gICAgICAgICAgICBlbC5kZXRhY2hFdmVudChcIm9uXCIgKyBuYW1lLCBjYik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoXCJbc2Nyb2xsXSBEb24ndCBrbm93IGhvdyB0byByZW1vdmUgZXZlbnQgbGlzdGVuZXJzLlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEV4cGFuZEVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZ2V0U3RhdGUoZWxlbWVudCkuY29udGFpbmVyLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNocmlua0VsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZ2V0U3RhdGUoZWxlbWVudCkuY29udGFpbmVyLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSByZXNpemUgZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGVsZW1lbnQuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0aGF0IHNob3VsZCBoYXZlIHRoZSBsaXN0ZW5lciBhZGRlZC5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBsaXN0ZW5lciBUaGUgbGlzdGVuZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIGZvciBlYWNoIHJlc2l6ZSBldmVudCBvZiB0aGUgZWxlbWVudC4gVGhlIGVsZW1lbnQgd2lsbCBiZSBnaXZlbiBhcyBhIHBhcmFtZXRlciB0byB0aGUgbGlzdGVuZXIgY2FsbGJhY2suXG4gICAgICovXG4gICAgZnVuY3Rpb24gYWRkTGlzdGVuZXIoZWxlbWVudCwgbGlzdGVuZXIpIHtcbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IGdldFN0YXRlKGVsZW1lbnQpLmxpc3RlbmVycztcblxuICAgICAgICBpZiAoIWxpc3RlbmVycy5wdXNoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYWRkIGxpc3RlbmVyIHRvIGFuIGVsZW1lbnQgdGhhdCBpcyBub3QgZGV0ZWN0YWJsZS5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYW4gZWxlbWVudCBkZXRlY3RhYmxlIGFuZCByZWFkeSB0byBiZSBsaXN0ZW5lZCBmb3IgcmVzaXplIGV2ZW50cy4gV2lsbCBjYWxsIHRoZSBjYWxsYmFjayB3aGVuIHRoZSBlbGVtZW50IGlzIHJlYWR5IHRvIGJlIGxpc3RlbmVkIGZvciByZXNpemUgY2hhbmdlcy5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBtYWtlIGRldGVjdGFibGVcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgcmVhZHkgdG8gYmUgbGlzdGVuZWQgZm9yIHJlc2l6ZSBjaGFuZ2VzLiBXaWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBlbGVtZW50IGFzIGZpcnN0IHBhcmFtZXRlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYWtlRGV0ZWN0YWJsZShvcHRpb25zLCBlbGVtZW50LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBlbGVtZW50ID0gb3B0aW9ucztcbiAgICAgICAgICAgIG9wdGlvbnMgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgZnVuY3Rpb24gZGVidWcoKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICBhcmdzLnVuc2hpZnQoaWRIYW5kbGVyLmdldChlbGVtZW50KSwgXCJTY3JvbGw6IFwiKTtcbiAgICAgICAgICAgICAgICBpZiAocmVwb3J0ZXIubG9nLmFwcGx5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydGVyLmxvZy5hcHBseShudWxsLCBhcmdzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVyLmxvZyhhcmdzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGlzRGV0YWNoZWQoZWxlbWVudCkge1xuICAgICAgICAgICAgZnVuY3Rpb24gaXNJbkRvY3VtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHkgfHwgZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHkuY29udGFpbnMoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNJbkRvY3VtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEZpcmVGb3ggcmV0dXJucyBudWxsIHN0eWxlIGluIGhpZGRlbiBpZnJhbWVzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3duci9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9pc3N1ZXMvNjggYW5kIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTUyMFxuICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGlzVW5yZW5kZXJlZChlbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBDaGVjayB0aGUgYWJzb2x1dGUgcG9zaXRpb25lZCBjb250YWluZXIgc2luY2UgdGhlIHRvcCBsZXZlbCBjb250YWluZXIgaXMgZGlzcGxheTogaW5saW5lLlxuICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGdldFN0YXRlKGVsZW1lbnQpLmNvbnRhaW5lci5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgdmFyIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY29udGFpbmVyKTtcbiAgICAgICAgICAgIHJldHVybiAhc3R5bGUud2lkdGggfHwgc3R5bGUud2lkdGguaW5kZXhPZihcInB4XCIpID09PSAtMTsgLy9DYW4gb25seSBjb21wdXRlIHBpeGVsIHZhbHVlIHdoZW4gcmVuZGVyZWQuXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRTdHlsZSgpIHtcbiAgICAgICAgICAgIC8vIFNvbWUgYnJvd3NlcnMgb25seSBmb3JjZSBsYXlvdXRzIHdoZW4gYWN0dWFsbHkgcmVhZGluZyB0aGUgc3R5bGUgcHJvcGVydGllcyBvZiB0aGUgc3R5bGUgb2JqZWN0LCBzbyBtYWtlIHN1cmUgdGhhdCB0aGV5IGFyZSBhbGwgcmVhZCBoZXJlLFxuICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgdXNlciBvZiB0aGUgZnVuY3Rpb24gY2FuIGJlIHN1cmUgdGhhdCBpdCB3aWxsIHBlcmZvcm0gdGhlIGxheW91dCBoZXJlLCBpbnN0ZWFkIG9mIGxhdGVyIChpbXBvcnRhbnQgZm9yIGJhdGNoaW5nKS5cbiAgICAgICAgICAgIHZhciBlbGVtZW50U3R5bGUgICAgICAgICAgICA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIHN0eWxlICAgICAgICAgICAgICAgICAgID0ge307XG4gICAgICAgICAgICBzdHlsZS5wb3NpdGlvbiAgICAgICAgICAgICAgPSBlbGVtZW50U3R5bGUucG9zaXRpb247XG4gICAgICAgICAgICBzdHlsZS53aWR0aCAgICAgICAgICAgICAgICAgPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgc3R5bGUuaGVpZ2h0ICAgICAgICAgICAgICAgID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICBzdHlsZS50b3AgICAgICAgICAgICAgICAgICAgPSBlbGVtZW50U3R5bGUudG9wO1xuICAgICAgICAgICAgc3R5bGUucmlnaHQgICAgICAgICAgICAgICAgID0gZWxlbWVudFN0eWxlLnJpZ2h0O1xuICAgICAgICAgICAgc3R5bGUuYm90dG9tICAgICAgICAgICAgICAgID0gZWxlbWVudFN0eWxlLmJvdHRvbTtcbiAgICAgICAgICAgIHN0eWxlLmxlZnQgICAgICAgICAgICAgICAgICA9IGVsZW1lbnRTdHlsZS5sZWZ0O1xuICAgICAgICAgICAgc3R5bGUud2lkdGhDU1MgICAgICAgICAgICAgID0gZWxlbWVudFN0eWxlLndpZHRoO1xuICAgICAgICAgICAgc3R5bGUuaGVpZ2h0Q1NTICAgICAgICAgICAgID0gZWxlbWVudFN0eWxlLmhlaWdodDtcbiAgICAgICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHN0b3JlU3RhcnRTaXplKCkge1xuICAgICAgICAgICAgdmFyIHN0eWxlID0gZ2V0U3R5bGUoKTtcbiAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLnN0YXJ0U2l6ZSA9IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogc3R5bGUud2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBzdHlsZS5oZWlnaHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkZWJ1ZyhcIkVsZW1lbnQgc3RhcnQgc2l6ZVwiLCBnZXRTdGF0ZShlbGVtZW50KS5zdGFydFNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaW5pdExpc3RlbmVycygpIHtcbiAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLmxpc3RlbmVycyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc3RvcmVTdHlsZSgpIHtcbiAgICAgICAgICAgIGRlYnVnKFwic3RvcmVTdHlsZSBpbnZva2VkLlwiKTtcbiAgICAgICAgICAgIGlmICghZ2V0U3RhdGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBkZWJ1ZyhcIkFib3J0aW5nIGJlY2F1c2UgZWxlbWVudCBoYXMgYmVlbiB1bmluc3RhbGxlZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBzdHlsZSA9IGdldFN0eWxlKCk7XG4gICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5zdHlsZSA9IHN0eWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc3RvcmVDdXJyZW50U2l6ZShlbGVtZW50LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5sYXN0V2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLmxhc3RIZWlnaHQgID0gaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0RXhwYW5kQ2hpbGRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRFeHBhbmRFbGVtZW50KGVsZW1lbnQpLmNoaWxkTm9kZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRXaWR0aE9mZnNldCgpIHtcbiAgICAgICAgICAgIHJldHVybiAyICogc2Nyb2xsYmFyU2l6ZXMud2lkdGggKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0SGVpZ2h0T2Zmc2V0KCkge1xuICAgICAgICAgICAgcmV0dXJuIDIgKiBzY3JvbGxiYXJTaXplcy5oZWlnaHQgKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0RXhwYW5kV2lkdGgod2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB3aWR0aCArIDEwICsgZ2V0V2lkdGhPZmZzZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldEV4cGFuZEhlaWdodChoZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiBoZWlnaHQgKyAxMCArIGdldEhlaWdodE9mZnNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0U2hyaW5rV2lkdGgod2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB3aWR0aCAqIDIgKyBnZXRXaWR0aE9mZnNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0U2hyaW5rSGVpZ2h0KGhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIGhlaWdodCAqIDIgKyBnZXRIZWlnaHRPZmZzZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHBvc2l0aW9uU2Nyb2xsYmFycyhlbGVtZW50LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgICAgICB2YXIgZXhwYW5kICAgICAgICAgID0gZ2V0RXhwYW5kRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgICAgIHZhciBzaHJpbmsgICAgICAgICAgPSBnZXRTaHJpbmtFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIGV4cGFuZFdpZHRoICAgICA9IGdldEV4cGFuZFdpZHRoKHdpZHRoKTtcbiAgICAgICAgICAgIHZhciBleHBhbmRIZWlnaHQgICAgPSBnZXRFeHBhbmRIZWlnaHQoaGVpZ2h0KTtcbiAgICAgICAgICAgIHZhciBzaHJpbmtXaWR0aCAgICAgPSBnZXRTaHJpbmtXaWR0aCh3aWR0aCk7XG4gICAgICAgICAgICB2YXIgc2hyaW5rSGVpZ2h0ICAgID0gZ2V0U2hyaW5rSGVpZ2h0KGhlaWdodCk7XG4gICAgICAgICAgICBleHBhbmQuc2Nyb2xsTGVmdCAgID0gZXhwYW5kV2lkdGg7XG4gICAgICAgICAgICBleHBhbmQuc2Nyb2xsVG9wICAgID0gZXhwYW5kSGVpZ2h0O1xuICAgICAgICAgICAgc2hyaW5rLnNjcm9sbExlZnQgICA9IHNocmlua1dpZHRoO1xuICAgICAgICAgICAgc2hyaW5rLnNjcm9sbFRvcCAgICA9IHNocmlua0hlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluamVjdENvbnRhaW5lckVsZW1lbnQoKSB7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZ2V0U3RhdGUoZWxlbWVudCkuY29udGFpbmVyO1xuXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lciAgICAgICAgICAgICAgICAgICA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSAgICAgICAgID0gZGV0ZWN0aW9uQ29udGFpbmVyQ2xhc3M7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLmNzc1RleHQgICAgID0gYnVpbGRDc3NUZXh0U3RyaW5nKFtcInZpc2liaWxpdHk6IGhpZGRlblwiLCBcImRpc3BsYXk6IGlubGluZVwiLCBcIndpZHRoOiAwcHhcIiwgXCJoZWlnaHQ6IDBweFwiLCBcInotaW5kZXg6IC0xXCIsIFwib3ZlcmZsb3c6IGhpZGRlblwiLCBcIm1hcmdpbjogMFwiLCBcInBhZGRpbmc6IDBcIl0pO1xuICAgICAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICBhZGRBbmltYXRpb25DbGFzcyhjb250YWluZXIpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcblxuICAgICAgICAgICAgICAgIHZhciBvbkFuaW1hdGlvblN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vblJlbmRlcmVkICYmIGdldFN0YXRlKGVsZW1lbnQpLm9uUmVuZGVyZWQoKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgYWRkRXZlbnQoY29udGFpbmVyLCBcImFuaW1hdGlvbnN0YXJ0XCIsIG9uQW5pbWF0aW9uU3RhcnQpO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGV2ZW50IGhhbmRsZXIgaGVyZSBzbyB0aGF0IHRoZXkgbWF5IGJlIHJlbW92ZWQgd2hlbiB1bmluc3RhbGwgaXMgY2FsbGVkLlxuICAgICAgICAgICAgICAgIC8vIFNlZSB1bmluc3RhbGwgZnVuY3Rpb24gZm9yIGFuIGV4cGxhbmF0aW9uIHdoeSBpdCBpcyBuZWVkZWQuXG4gICAgICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkub25BbmltYXRpb25TdGFydCA9IG9uQW5pbWF0aW9uU3RhcnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250YWluZXI7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpbmplY3RTY3JvbGxFbGVtZW50cygpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGFsdGVyUG9zaXRpb25TdHlsZXMoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0eWxlID0gZ2V0U3RhdGUoZWxlbWVudCkuc3R5bGU7XG5cbiAgICAgICAgICAgICAgICBpZihzdHlsZS5wb3NpdGlvbiA9PT0gXCJzdGF0aWNcIikge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFwicG9zaXRpb25cIiwgXCJyZWxhdGl2ZVwiLG9wdGlvbnMuaW1wb3J0YW50ID8gXCJpbXBvcnRhbnRcIiA6IFwiXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciByZW1vdmVSZWxhdGl2ZVN0eWxlcyA9IGZ1bmN0aW9uKHJlcG9ydGVyLCBlbGVtZW50LCBzdHlsZSwgcHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldE51bWVyaWNhbFZhbHVlKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1teLVxcZFxcLl0vZywgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlW3Byb3BlcnR5XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT09IFwiYXV0b1wiICYmIGdldE51bWVyaWNhbFZhbHVlKHZhbHVlKSAhPT0gXCIwXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRlci53YXJuKFwiQW4gZWxlbWVudCB0aGF0IGlzIHBvc2l0aW9uZWQgc3RhdGljIGhhcyBzdHlsZS5cIiArIHByb3BlcnR5ICsgXCI9XCIgKyB2YWx1ZSArIFwiIHdoaWNoIGlzIGlnbm9yZWQgZHVlIHRvIHRoZSBzdGF0aWMgcG9zaXRpb25pbmcuIFRoZSBlbGVtZW50IHdpbGwgbmVlZCB0byBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlLCBzbyB0aGUgc3R5bGUuXCIgKyBwcm9wZXJ0eSArIFwiIHdpbGwgYmUgc2V0IHRvIDAuIEVsZW1lbnQ6IFwiLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgLy9DaGVjayBzbyB0aGF0IHRoZXJlIGFyZSBubyBhY2NpZGVudGFsIHN0eWxlcyB0aGF0IHdpbGwgbWFrZSB0aGUgZWxlbWVudCBzdHlsZWQgZGlmZmVyZW50bHkgbm93IHRoYXQgaXMgaXMgcmVsYXRpdmUuXG4gICAgICAgICAgICAgICAgICAgIC8vSWYgdGhlcmUgYXJlIGFueSwgc2V0IHRoZW0gdG8gMCAodGhpcyBzaG91bGQgYmUgb2theSB3aXRoIHRoZSB1c2VyIHNpbmNlIHRoZSBzdHlsZSBwcm9wZXJ0aWVzIGRpZCBub3RoaW5nIGJlZm9yZSBbc2luY2UgdGhlIGVsZW1lbnQgd2FzIHBvc2l0aW9uZWQgc3RhdGljXSBhbnl3YXkpLlxuICAgICAgICAgICAgICAgICAgICByZW1vdmVSZWxhdGl2ZVN0eWxlcyhyZXBvcnRlciwgZWxlbWVudCwgc3R5bGUsIFwidG9wXCIpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVSZWxhdGl2ZVN0eWxlcyhyZXBvcnRlciwgZWxlbWVudCwgc3R5bGUsIFwicmlnaHRcIik7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZVJlbGF0aXZlU3R5bGVzKHJlcG9ydGVyLCBlbGVtZW50LCBzdHlsZSwgXCJib3R0b21cIik7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZVJlbGF0aXZlU3R5bGVzKHJlcG9ydGVyLCBlbGVtZW50LCBzdHlsZSwgXCJsZWZ0XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0TGVmdFRvcEJvdHRvbVJpZ2h0Q3NzVGV4dChsZWZ0LCB0b3AsIGJvdHRvbSwgcmlnaHQpIHtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gKCFsZWZ0ID8gXCIwXCIgOiAobGVmdCArIFwicHhcIikpO1xuICAgICAgICAgICAgICAgIHRvcCA9ICghdG9wID8gXCIwXCIgOiAodG9wICsgXCJweFwiKSk7XG4gICAgICAgICAgICAgICAgYm90dG9tID0gKCFib3R0b20gPyBcIjBcIiA6IChib3R0b20gKyBcInB4XCIpKTtcbiAgICAgICAgICAgICAgICByaWdodCA9ICghcmlnaHQgPyBcIjBcIiA6IChyaWdodCArIFwicHhcIikpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcImxlZnQ6IFwiICsgbGVmdCwgXCJ0b3A6IFwiICsgdG9wLCBcInJpZ2h0OiBcIiArIHJpZ2h0LCBcImJvdHRvbTogXCIgKyBib3R0b21dO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWJ1ZyhcIkluamVjdGluZyBlbGVtZW50c1wiKTtcblxuICAgICAgICAgICAgaWYgKCFnZXRTdGF0ZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGRlYnVnKFwiQWJvcnRpbmcgYmVjYXVzZSBlbGVtZW50IGhhcyBiZWVuIHVuaW5zdGFsbGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWx0ZXJQb3NpdGlvblN0eWxlcygpO1xuXG4gICAgICAgICAgICB2YXIgcm9vdENvbnRhaW5lciA9IGdldFN0YXRlKGVsZW1lbnQpLmNvbnRhaW5lcjtcblxuICAgICAgICAgICAgaWYgKCFyb290Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgcm9vdENvbnRhaW5lciA9IGluamVjdENvbnRhaW5lckVsZW1lbnQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRHVlIHRvIHRoaXMgV2ViS2l0IGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA4MDggKGN1cnJlbnRseSBmaXhlZCBpbiBCbGluaywgYnV0IHN0aWxsIHByZXNlbnQgaW4gV2ViS2l0IGJyb3dzZXJzIHN1Y2ggYXMgU2FmYXJpKSxcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gaW5qZWN0IHR3byBjb250YWluZXJzLCBvbmUgdGhhdCBpcyB3aWR0aC9oZWlnaHQgMTAwJSBhbmQgYW5vdGhlciB0aGF0IGlzIGxlZnQvdG9wIC0xcHggc28gdGhhdCB0aGUgZmluYWwgY29udGFpbmVyIGFsd2F5cyBpcyAxeDEgcGl4ZWxzIGJpZ2dlciB0aGFuXG4gICAgICAgICAgICAvLyB0aGUgdGFyZ2V0ZWQgZWxlbWVudC5cbiAgICAgICAgICAgIC8vIFdoZW4gdGhlIGJ1ZyBpcyByZXNvbHZlZCwgXCJjb250YWluZXJDb250YWluZXJcIiBtYXkgYmUgcmVtb3ZlZC5cblxuICAgICAgICAgICAgLy8gVGhlIG91dGVyIGNvbnRhaW5lciBjYW4gb2NjYXNpb25hbGx5IGJlIGxlc3Mgd2lkZSB0aGFuIHRoZSB0YXJnZXRlZCB3aGVuIGluc2lkZSBpbmxpbmUgZWxlbWVudHMgZWxlbWVudCBpbiBXZWJLaXQgKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyOTgwKS5cbiAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIG5vIHByb2JsZW0gc2luY2UgdGhlIGlubmVyIGNvbnRhaW5lciBlaXRoZXIgd2F5IG1ha2VzIHN1cmUgdGhlIGluamVjdGVkIHNjcm9sbCBlbGVtZW50cyBhcmUgYXQgbGVhc3QgMXgxIHB4LlxuXG4gICAgICAgICAgICB2YXIgc2Nyb2xsYmFyV2lkdGggICAgICAgICAgPSBzY3JvbGxiYXJTaXplcy53aWR0aDtcbiAgICAgICAgICAgIHZhciBzY3JvbGxiYXJIZWlnaHQgICAgICAgICA9IHNjcm9sbGJhclNpemVzLmhlaWdodDtcbiAgICAgICAgICAgIHZhciBjb250YWluZXJDb250YWluZXJTdHlsZSA9IGJ1aWxkQ3NzVGV4dFN0cmluZyhbXCJwb3NpdGlvbjogYWJzb2x1dGVcIiwgXCJmbGV4OiBub25lXCIsIFwib3ZlcmZsb3c6IGhpZGRlblwiLCBcInotaW5kZXg6IC0xXCIsIFwidmlzaWJpbGl0eTogaGlkZGVuXCIsIFwid2lkdGg6IDEwMCVcIiwgXCJoZWlnaHQ6IDEwMCVcIiwgXCJsZWZ0OiAwcHhcIiwgXCJ0b3A6IDBweFwiXSk7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyU3R5bGUgICAgICAgICAgPSBidWlsZENzc1RleHRTdHJpbmcoW1wicG9zaXRpb246IGFic29sdXRlXCIsIFwiZmxleDogbm9uZVwiLCBcIm92ZXJmbG93OiBoaWRkZW5cIiwgXCJ6LWluZGV4OiAtMVwiLCBcInZpc2liaWxpdHk6IGhpZGRlblwiXS5jb25jYXQoZ2V0TGVmdFRvcEJvdHRvbVJpZ2h0Q3NzVGV4dCgtKDEgKyBzY3JvbGxiYXJXaWR0aCksIC0oMSArIHNjcm9sbGJhckhlaWdodCksIC1zY3JvbGxiYXJIZWlnaHQsIC1zY3JvbGxiYXJXaWR0aCkpKTtcbiAgICAgICAgICAgIHZhciBleHBhbmRTdHlsZSAgICAgICAgICAgICA9IGJ1aWxkQ3NzVGV4dFN0cmluZyhbXCJwb3NpdGlvbjogYWJzb2x1dGVcIiwgXCJmbGV4OiBub25lXCIsIFwib3ZlcmZsb3c6IHNjcm9sbFwiLCBcInotaW5kZXg6IC0xXCIsIFwidmlzaWJpbGl0eTogaGlkZGVuXCIsIFwid2lkdGg6IDEwMCVcIiwgXCJoZWlnaHQ6IDEwMCVcIl0pO1xuICAgICAgICAgICAgdmFyIHNocmlua1N0eWxlICAgICAgICAgICAgID0gYnVpbGRDc3NUZXh0U3RyaW5nKFtcInBvc2l0aW9uOiBhYnNvbHV0ZVwiLCBcImZsZXg6IG5vbmVcIiwgXCJvdmVyZmxvdzogc2Nyb2xsXCIsIFwiei1pbmRleDogLTFcIiwgXCJ2aXNpYmlsaXR5OiBoaWRkZW5cIiwgXCJ3aWR0aDogMTAwJVwiLCBcImhlaWdodDogMTAwJVwiXSk7XG4gICAgICAgICAgICB2YXIgZXhwYW5kQ2hpbGRTdHlsZSAgICAgICAgPSBidWlsZENzc1RleHRTdHJpbmcoW1wicG9zaXRpb246IGFic29sdXRlXCIsIFwibGVmdDogMFwiLCBcInRvcDogMFwiXSk7XG4gICAgICAgICAgICB2YXIgc2hyaW5rQ2hpbGRTdHlsZSAgICAgICAgPSBidWlsZENzc1RleHRTdHJpbmcoW1wicG9zaXRpb246IGFic29sdXRlXCIsIFwid2lkdGg6IDIwMCVcIiwgXCJoZWlnaHQ6IDIwMCVcIl0pO1xuXG4gICAgICAgICAgICB2YXIgY29udGFpbmVyQ29udGFpbmVyICAgICAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgICAgdmFyIGNvbnRhaW5lciAgICAgICAgICAgICAgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIHZhciBleHBhbmQgICAgICAgICAgICAgICAgICA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgICB2YXIgZXhwYW5kQ2hpbGQgICAgICAgICAgICAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgICAgdmFyIHNocmluayAgICAgICAgICAgICAgICAgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIHZhciBzaHJpbmtDaGlsZCAgICAgICAgICAgICA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICAgICAgICAgIC8vIFNvbWUgYnJvd3NlcnMgY2hva2Ugb24gdGhlIHJlc2l6ZSBzeXN0ZW0gYmVpbmcgcnRsLCBzbyBmb3JjZSBpdCB0byBsdHIuIGh0dHBzOi8vZ2l0aHViLmNvbS93bnIvZWxlbWVudC1yZXNpemUtZGV0ZWN0b3IvaXNzdWVzLzU2XG4gICAgICAgICAgICAvLyBIb3dldmVyLCBkaXIgc2hvdWxkIG5vdCBiZSBzZXQgb24gdGhlIHRvcCBsZXZlbCBjb250YWluZXIgYXMgaXQgYWx0ZXJzIHRoZSBkaW1lbnNpb25zIG9mIHRoZSB0YXJnZXQgZWxlbWVudCBpbiBzb21lIGJyb3dzZXJzLlxuICAgICAgICAgICAgY29udGFpbmVyQ29udGFpbmVyLmRpciAgICAgICAgICAgICAgPSBcImx0clwiO1xuXG4gICAgICAgICAgICBjb250YWluZXJDb250YWluZXIuc3R5bGUuY3NzVGV4dCAgICA9IGNvbnRhaW5lckNvbnRhaW5lclN0eWxlO1xuICAgICAgICAgICAgY29udGFpbmVyQ29udGFpbmVyLmNsYXNzTmFtZSAgICAgICAgPSBkZXRlY3Rpb25Db250YWluZXJDbGFzcztcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgICAgICAgICAgICAgICAgID0gZGV0ZWN0aW9uQ29udGFpbmVyQ2xhc3M7XG4gICAgICAgICAgICBjb250YWluZXIuc3R5bGUuY3NzVGV4dCAgICAgICAgICAgICA9IGNvbnRhaW5lclN0eWxlO1xuICAgICAgICAgICAgZXhwYW5kLnN0eWxlLmNzc1RleHQgICAgICAgICAgICAgICAgPSBleHBhbmRTdHlsZTtcbiAgICAgICAgICAgIGV4cGFuZENoaWxkLnN0eWxlLmNzc1RleHQgICAgICAgICAgID0gZXhwYW5kQ2hpbGRTdHlsZTtcbiAgICAgICAgICAgIHNocmluay5zdHlsZS5jc3NUZXh0ICAgICAgICAgICAgICAgID0gc2hyaW5rU3R5bGU7XG4gICAgICAgICAgICBzaHJpbmtDaGlsZC5zdHlsZS5jc3NUZXh0ICAgICAgICAgICA9IHNocmlua0NoaWxkU3R5bGU7XG5cbiAgICAgICAgICAgIGV4cGFuZC5hcHBlbmRDaGlsZChleHBhbmRDaGlsZCk7XG4gICAgICAgICAgICBzaHJpbmsuYXBwZW5kQ2hpbGQoc2hyaW5rQ2hpbGQpO1xuICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGV4cGFuZCk7XG4gICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc2hyaW5rKTtcbiAgICAgICAgICAgIGNvbnRhaW5lckNvbnRhaW5lci5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgICAgICAgICAgcm9vdENvbnRhaW5lci5hcHBlbmRDaGlsZChjb250YWluZXJDb250YWluZXIpO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBvbkV4cGFuZFNjcm9sbCgpIHtcbiAgICAgICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vbkV4cGFuZCAmJiBnZXRTdGF0ZShlbGVtZW50KS5vbkV4cGFuZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBvblNocmlua1Njcm9sbCgpIHtcbiAgICAgICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vblNocmluayAmJiBnZXRTdGF0ZShlbGVtZW50KS5vblNocmluaygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhZGRFdmVudChleHBhbmQsIFwic2Nyb2xsXCIsIG9uRXhwYW5kU2Nyb2xsKTtcbiAgICAgICAgICAgIGFkZEV2ZW50KHNocmluaywgXCJzY3JvbGxcIiwgb25TaHJpbmtTY3JvbGwpO1xuXG4gICAgICAgICAgICAvLyBTdG9yZSB0aGUgZXZlbnQgaGFuZGxlcnMgaGVyZSBzbyB0aGF0IHRoZXkgbWF5IGJlIHJlbW92ZWQgd2hlbiB1bmluc3RhbGwgaXMgY2FsbGVkLlxuICAgICAgICAgICAgLy8gU2VlIHVuaW5zdGFsbCBmdW5jdGlvbiBmb3IgYW4gZXhwbGFuYXRpb24gd2h5IGl0IGlzIG5lZWRlZC5cbiAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLm9uRXhwYW5kU2Nyb2xsID0gb25FeHBhbmRTY3JvbGw7XG4gICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vblNocmlua1Njcm9sbCA9IG9uU2hyaW5rU2Nyb2xsO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVnaXN0ZXJMaXN0ZW5lcnNBbmRQb3NpdGlvbkVsZW1lbnRzKCkge1xuICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ2hpbGRTaXplcyhlbGVtZW50LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGV4cGFuZENoaWxkICAgICAgICAgICAgID0gZ2V0RXhwYW5kQ2hpbGRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHZhciBleHBhbmRXaWR0aCAgICAgICAgICAgICA9IGdldEV4cGFuZFdpZHRoKHdpZHRoKTtcbiAgICAgICAgICAgICAgICB2YXIgZXhwYW5kSGVpZ2h0ICAgICAgICAgICAgPSBnZXRFeHBhbmRIZWlnaHQoaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBleHBhbmRDaGlsZC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGV4cGFuZFdpZHRoICsgXCJweFwiLCBvcHRpb25zLmltcG9ydGFudCA/IFwiaW1wb3J0YW50XCIgOiBcIlwiKTtcbiAgICAgICAgICAgICAgICBleHBhbmRDaGlsZC5zdHlsZS5zZXRQcm9wZXJ0eShcImhlaWdodFwiLCBleHBhbmRIZWlnaHQgKyBcInB4XCIsIG9wdGlvbnMuaW1wb3J0YW50ID8gXCJpbXBvcnRhbnRcIiA6IFwiXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVEZXRlY3RvckVsZW1lbnRzKGRvbmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGggICAgICAgICAgID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ICAgICAgICAgID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBzaXplIGhhcyBhY3R1YWxseSBjaGFuZ2VkIHNpbmNlIGxhc3QgdGltZSB0aGUgYWxnb3JpdGhtIHJhbi4gSWYgbm90LCBzb21lIHN0ZXBzIG1heSBiZSBza2lwcGVkLlxuICAgICAgICAgICAgICAgIHZhciBzaXplQ2hhbmdlZCA9IHdpZHRoICE9PSBnZXRTdGF0ZShlbGVtZW50KS5sYXN0V2lkdGggfHwgaGVpZ2h0ICE9PSBnZXRTdGF0ZShlbGVtZW50KS5sYXN0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgZGVidWcoXCJTdG9yaW5nIGN1cnJlbnQgc2l6ZVwiLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50IHN5bmMgaGVyZSwgc28gdGhhdCBtdWx0aXBsZSBzY3JvbGwgZXZlbnRzIG1heSBiZSBpZ25vcmVkIGluIHRoZSBldmVudCBsaXN0ZW5lcnMuXG4gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBpZi1jaGVjayBpbiBoYW5kbGVTY3JvbGwgaXMgdXNlbGVzcy5cbiAgICAgICAgICAgICAgICBzdG9yZUN1cnJlbnRTaXplKGVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgZGVsYXkgdGhlIHByb2Nlc3Npbmcgb2YgdGhlIGJhdGNoLCB0aGVyZSBpcyBhIHJpc2sgdGhhdCB1bmluc3RhbGwgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSB0aGUgYmF0Y2ggZ2V0cyB0byBleGVjdXRlLlxuICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBjYW5jZWwgdGhlIGZuIGV4ZWN1dGlvbnMsIHdlIG5lZWQgdG8gYWRkIGFuIHVuaW5zdGFsbCBndWFyZCB0byBhbGwgZm5zIG9mIHRoZSBiYXRjaC5cblxuICAgICAgICAgICAgICAgIGJhdGNoUHJvY2Vzc29yLmFkZCgwLCBmdW5jdGlvbiBwZXJmb3JtVXBkYXRlQ2hpbGRTaXplcygpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzaXplQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFnZXRTdGF0ZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoXCJBYm9ydGluZyBiZWNhdXNlIGVsZW1lbnQgaGFzIGJlZW4gdW5pbnN0YWxsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZUVsZW1lbnRzSW5qZWN0ZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoXCJBYm9ydGluZyBiZWNhdXNlIGVsZW1lbnQgY29udGFpbmVyIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodyAhPT0gd2lkdGggfHwgaCAhPT0gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIud2FybihpZEhhbmRsZXIuZ2V0KGVsZW1lbnQpLCBcIlNjcm9sbDogU2l6ZSBjaGFuZ2VkIGJlZm9yZSB1cGRhdGluZyBkZXRlY3RvciBlbGVtZW50cy5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDaGlsZFNpemVzKGVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgYmF0Y2hQcm9jZXNzb3IuYWRkKDEsIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbGJhcnMoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgaW52b2tlZCBldmVudCB0aG91Z2ggdGhlIHNpemUgaXMgdW5jaGFuZ2VkLiBUaGUgZWxlbWVudCBjb3VsZCBoYXZlIGJlZW4gcmVzaXplZCB2ZXJ5IHF1aWNrbHkgYW5kIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gYmVlbiByZXN0b3JlZCB0byB0aGUgb3JpZ2luYWwgc2l6ZSwgd2hpY2ggd2lsbCBoYXZlIGNoYW5nZWQgdGhlIHNjcm9sbGJhciBwb3NpdGlvbnMuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFnZXRTdGF0ZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoXCJBYm9ydGluZyBiZWNhdXNlIGVsZW1lbnQgaGFzIGJlZW4gdW5pbnN0YWxsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZUVsZW1lbnRzSW5qZWN0ZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoXCJBYm9ydGluZyBiZWNhdXNlIGVsZW1lbnQgY29udGFpbmVyIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uU2Nyb2xsYmFycyhlbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChzaXplQ2hhbmdlZCAmJiBkb25lKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhdGNoUHJvY2Vzc29yLmFkZCgyLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdldFN0YXRlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoXCJBYm9ydGluZyBiZWNhdXNlIGVsZW1lbnQgaGFzIGJlZW4gdW5pbnN0YWxsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZUVsZW1lbnRzSW5qZWN0ZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhcIkFib3J0aW5nIGJlY2F1c2UgZWxlbWVudCBjb250YWluZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBhcmVFbGVtZW50c0luamVjdGVkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIWdldFN0YXRlKGVsZW1lbnQpLmNvbnRhaW5lcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gbm90aWZ5TGlzdGVuZXJzSWZOZWVkZWQoKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaXNGaXJzdE5vdGlmeSgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFN0YXRlKGVsZW1lbnQpLmxhc3ROb3RpZmllZFdpZHRoID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZGVidWcoXCJub3RpZnlMaXN0ZW5lcnNJZk5lZWRlZCBpbnZva2VkXCIpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHN0YXRlID0gZ2V0U3RhdGUoZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAvLyBEb24ndCBub3RpZnkgaWYgdGhlIGN1cnJlbnQgc2l6ZSBpcyB0aGUgc3RhcnQgc2l6ZSwgYW5kIHRoaXMgaXMgdGhlIGZpcnN0IG5vdGlmaWNhdGlvbi5cbiAgICAgICAgICAgICAgICBpZiAoaXNGaXJzdE5vdGlmeSgpICYmIHN0YXRlLmxhc3RXaWR0aCA9PT0gc3RhdGUuc3RhcnRTaXplLndpZHRoICYmIHN0YXRlLmxhc3RIZWlnaHQgPT09IHN0YXRlLnN0YXJ0U2l6ZS5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlYnVnKFwiTm90IG5vdGlmeWluZzogU2l6ZSBpcyB0aGUgc2FtZSBhcyB0aGUgc3RhcnQgc2l6ZSwgYW5kIHRoZXJlIGhhcyBiZWVuIG5vIG5vdGlmaWNhdGlvbiB5ZXQuXCIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIERvbid0IG5vdGlmeSBpZiB0aGUgc2l6ZSBhbHJlYWR5IGhhcyBiZWVuIG5vdGlmaWVkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5sYXN0V2lkdGggPT09IHN0YXRlLmxhc3ROb3RpZmllZFdpZHRoICYmIHN0YXRlLmxhc3RIZWlnaHQgPT09IHN0YXRlLmxhc3ROb3RpZmllZEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVidWcoXCJOb3Qgbm90aWZ5aW5nOiBTaXplIGFscmVhZHkgbm90aWZpZWRcIik7XG4gICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICBkZWJ1ZyhcIkN1cnJlbnQgc2l6ZSBub3Qgbm90aWZpZWQsIG5vdGlmeWluZy4uLlwiKTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5sYXN0Tm90aWZpZWRXaWR0aCA9IHN0YXRlLmxhc3RXaWR0aDtcbiAgICAgICAgICAgICAgICBzdGF0ZS5sYXN0Tm90aWZpZWRIZWlnaHQgPSBzdGF0ZS5sYXN0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIGZvckVhY2goZ2V0U3RhdGUoZWxlbWVudCkubGlzdGVuZXJzLCBmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVJlbmRlcigpIHtcbiAgICAgICAgICAgICAgICBkZWJ1ZyhcInN0YXJ0YW5pbWF0aW9uIHRyaWdnZXJlZC5cIik7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNVbnJlbmRlcmVkKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlYnVnKFwiSWdub3Jpbmcgc2luY2UgZWxlbWVudCBpcyBzdGlsbCB1bnJlbmRlcmVkLi4uXCIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZGVidWcoXCJFbGVtZW50IHJlbmRlcmVkLlwiKTtcbiAgICAgICAgICAgICAgICB2YXIgZXhwYW5kID0gZ2V0RXhwYW5kRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB2YXIgc2hyaW5rID0gZ2V0U2hyaW5rRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZXhwYW5kLnNjcm9sbExlZnQgPT09IDAgfHwgZXhwYW5kLnNjcm9sbFRvcCA9PT0gMCB8fCBzaHJpbmsuc2Nyb2xsTGVmdCA9PT0gMCB8fCBzaHJpbmsuc2Nyb2xsVG9wID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlYnVnKFwiU2Nyb2xsYmFycyBvdXQgb2Ygc3luYy4gVXBkYXRpbmcgZGV0ZWN0b3IgZWxlbWVudHMuLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZURldGVjdG9yRWxlbWVudHMobm90aWZ5TGlzdGVuZXJzSWZOZWVkZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKCkge1xuICAgICAgICAgICAgICAgIGRlYnVnKFwiU2Nyb2xsIGRldGVjdGVkLlwiKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1VucmVuZGVyZWQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRWxlbWVudCBpcyBzdGlsbCB1bnJlbmRlcmVkLiBTa2lwIHRoaXMgc2Nyb2xsIGV2ZW50LlxuICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhcIlNjcm9sbCBldmVudCBmaXJlZCB3aGlsZSB1bnJlbmRlcmVkLiBJZ25vcmluZy4uLlwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZURldGVjdG9yRWxlbWVudHMobm90aWZ5TGlzdGVuZXJzSWZOZWVkZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWJ1ZyhcInJlZ2lzdGVyTGlzdGVuZXJzQW5kUG9zaXRpb25FbGVtZW50cyBpbnZva2VkLlwiKTtcblxuICAgICAgICAgICAgaWYgKCFnZXRTdGF0ZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGRlYnVnKFwiQWJvcnRpbmcgYmVjYXVzZSBlbGVtZW50IGhhcyBiZWVuIHVuaW5zdGFsbGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkub25SZW5kZXJlZCA9IGhhbmRsZVJlbmRlcjtcbiAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLm9uRXhwYW5kID0gaGFuZGxlU2Nyb2xsO1xuICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkub25TaHJpbmsgPSBoYW5kbGVTY3JvbGw7XG5cbiAgICAgICAgICAgIHZhciBzdHlsZSA9IGdldFN0YXRlKGVsZW1lbnQpLnN0eWxlO1xuICAgICAgICAgICAgdXBkYXRlQ2hpbGRTaXplcyhlbGVtZW50LCBzdHlsZS53aWR0aCwgc3R5bGUuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZpbmFsaXplRG9tTXV0YXRpb24oKSB7XG4gICAgICAgICAgICBkZWJ1ZyhcImZpbmFsaXplRG9tTXV0YXRpb24gaW52b2tlZC5cIik7XG5cbiAgICAgICAgICAgIGlmICghZ2V0U3RhdGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBkZWJ1ZyhcIkFib3J0aW5nIGJlY2F1c2UgZWxlbWVudCBoYXMgYmVlbiB1bmluc3RhbGxlZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBzdHlsZSA9IGdldFN0YXRlKGVsZW1lbnQpLnN0eWxlO1xuICAgICAgICAgICAgc3RvcmVDdXJyZW50U2l6ZShlbGVtZW50LCBzdHlsZS53aWR0aCwgc3R5bGUuaGVpZ2h0KTtcbiAgICAgICAgICAgIHBvc2l0aW9uU2Nyb2xsYmFycyhlbGVtZW50LCBzdHlsZS53aWR0aCwgc3R5bGUuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlYWR5KCkge1xuICAgICAgICAgICAgY2FsbGJhY2soZWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpbnN0YWxsKCkge1xuICAgICAgICAgICAgZGVidWcoXCJJbnN0YWxsaW5nLi4uXCIpO1xuICAgICAgICAgICAgaW5pdExpc3RlbmVycygpO1xuICAgICAgICAgICAgc3RvcmVTdGFydFNpemUoKTtcblxuICAgICAgICAgICAgYmF0Y2hQcm9jZXNzb3IuYWRkKDAsIHN0b3JlU3R5bGUpO1xuICAgICAgICAgICAgYmF0Y2hQcm9jZXNzb3IuYWRkKDEsIGluamVjdFNjcm9sbEVsZW1lbnRzKTtcbiAgICAgICAgICAgIGJhdGNoUHJvY2Vzc29yLmFkZCgyLCByZWdpc3Rlckxpc3RlbmVyc0FuZFBvc2l0aW9uRWxlbWVudHMpO1xuICAgICAgICAgICAgYmF0Y2hQcm9jZXNzb3IuYWRkKDMsIGZpbmFsaXplRG9tTXV0YXRpb24pO1xuICAgICAgICAgICAgYmF0Y2hQcm9jZXNzb3IuYWRkKDQsIHJlYWR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlYnVnKFwiTWFraW5nIGRldGVjdGFibGUuLi5cIik7XG5cbiAgICAgICAgaWYgKGlzRGV0YWNoZWQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGRlYnVnKFwiRWxlbWVudCBpcyBkZXRhY2hlZFwiKTtcblxuICAgICAgICAgICAgaW5qZWN0Q29udGFpbmVyRWxlbWVudCgpO1xuXG4gICAgICAgICAgICBkZWJ1ZyhcIldhaXRpbmcgdW50aWwgZWxlbWVudCBpcyBhdHRhY2hlZC4uLlwiKTtcblxuICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkub25SZW5kZXJlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBkZWJ1ZyhcIkVsZW1lbnQgaXMgbm93IGF0dGFjaGVkXCIpO1xuICAgICAgICAgICAgICAgIGluc3RhbGwoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnN0YWxsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bmluc3RhbGwoZWxlbWVudCkge1xuICAgICAgICB2YXIgc3RhdGUgPSBnZXRTdGF0ZShlbGVtZW50KTtcblxuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICAvLyBVbmluc3RhbGwgaGFzIGJlZW4gY2FsbGVkIG9uIGEgbm9uLWVyZCBlbGVtZW50LlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5pbnN0YWxsIG1heSBoYXZlIGJlZW4gY2FsbGVkIGluIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW9zOlxuICAgICAgICAvLyAoMSkgUmlnaHQgYmV0d2VlbiB0aGUgc3luYyBjb2RlIGFuZCBhc3luYyBiYXRjaCAoaGVyZSBzdGF0ZS5idXN5ID0gdHJ1ZSwgYnV0IG5vdGhpbmcgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgb3IgaW5qZWN0ZWQpLlxuICAgICAgICAvLyAoMikgSW4gdGhlIHJlYWR5IGNhbGxiYWNrIG9mIHRoZSBsYXN0IGxldmVsIG9mIHRoZSBiYXRjaCBieSBhbm90aGVyIGVsZW1lbnQgKGhlcmUsIHN0YXRlLmJ1c3kgPSB0cnVlLCBidXQgYWxsIHRoZSBzdHVmZiBoYXMgYmVlbiBpbmplY3RlZCkuXG4gICAgICAgIC8vICgzKSBBZnRlciB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MgKGhlcmUsIHN0YXRlLmJ1c3kgPSBmYWxzZSBhbmQgYWxsIHRoZSBzdHVmZiBoYXMgYmVlbiBpbmplY3RlZCkuXG4gICAgICAgIC8vIFNvIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGxldCdzIGNoZWNrIGZvciBlYWNoIHRoaW5nIGJlZm9yZSByZW1vdmluZy5cblxuICAgICAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgZXZlbnQgbGlzdGVuZXJzLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgZXZlbnQgbWlnaHQgZmlyZSBvbiBhbiB1bmluc3RhbGwgZWxlbWVudCB3aGljaCByZXN1bHRzIGluIGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGdldCB0aGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQuXG4gICAgICAgIHN0YXRlLm9uRXhwYW5kU2Nyb2xsICYmIHJlbW92ZUV2ZW50KGdldEV4cGFuZEVsZW1lbnQoZWxlbWVudCksIFwic2Nyb2xsXCIsIHN0YXRlLm9uRXhwYW5kU2Nyb2xsKTtcbiAgICAgICAgc3RhdGUub25TaHJpbmtTY3JvbGwgJiYgcmVtb3ZlRXZlbnQoZ2V0U2hyaW5rRWxlbWVudChlbGVtZW50KSwgXCJzY3JvbGxcIiwgc3RhdGUub25TaHJpbmtTY3JvbGwpO1xuICAgICAgICBzdGF0ZS5vbkFuaW1hdGlvblN0YXJ0ICYmIHJlbW92ZUV2ZW50KHN0YXRlLmNvbnRhaW5lciwgXCJhbmltYXRpb25zdGFydFwiLCBzdGF0ZS5vbkFuaW1hdGlvblN0YXJ0KTtcblxuICAgICAgICBzdGF0ZS5jb250YWluZXIgJiYgZWxlbWVudC5yZW1vdmVDaGlsZChzdGF0ZS5jb250YWluZXIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIG1ha2VEZXRlY3RhYmxlOiBtYWtlRGV0ZWN0YWJsZSxcbiAgICAgICAgYWRkTGlzdGVuZXI6IGFkZExpc3RlbmVyLFxuICAgICAgICB1bmluc3RhbGw6IHVuaW5zdGFsbCxcbiAgICAgICAgaW5pdERvY3VtZW50OiBpbml0RG9jdW1lbnRcbiAgICB9O1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBub3cgPSByZXF1aXJlKCcuL25vdycpLFxuICAgIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgbmF0aXZlTWluID0gTWF0aC5taW47XG5cbi8qKlxuICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gKiBtaWxsaXNlY29uZHMgaGF2ZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiB3YXNcbiAqIGludm9rZWQuIFRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgIG1ldGhvZCB0byBjYW5jZWxcbiAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICogUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2Agc2hvdWxkIGJlIGludm9rZWQgb24gdGhlXG4gKiBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGAgdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkXG4gKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gKiBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYFxuICogaW52b2NhdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIGRlYm91bmNlZCBmdW5jdGlvblxuICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICpcbiAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICpcbiAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heFdhaXRdXG4gKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdyZXNpemUnLCBfLmRlYm91bmNlKGNhbGN1bGF0ZUxheW91dCwgMTUwKSk7XG4gKlxuICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gKiAgICdsZWFkaW5nJzogdHJ1ZSxcbiAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAqIH0pKTtcbiAqXG4gKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICogdmFyIGRlYm91bmNlZCA9IF8uZGVib3VuY2UoYmF0Y2hMb2csIDI1MCwgeyAnbWF4V2FpdCc6IDEwMDAgfSk7XG4gKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gKlxuICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyBkZWJvdW5jZWQgaW52b2NhdGlvbi5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICovXG5mdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gIHZhciBsYXN0QXJncyxcbiAgICAgIGxhc3RUaGlzLFxuICAgICAgbWF4V2FpdCxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHRpbWVySWQsXG4gICAgICBsYXN0Q2FsbFRpbWUsXG4gICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICBsZWFkaW5nID0gZmFsc2UsXG4gICAgICBtYXhpbmcgPSBmYWxzZSxcbiAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB3YWl0ID0gdG9OdW1iZXIod2FpdCkgfHwgMDtcbiAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgIG1heGluZyA9ICdtYXhXYWl0JyBpbiBvcHRpb25zO1xuICAgIG1heFdhaXQgPSBtYXhpbmcgPyBuYXRpdmVNYXgodG9OdW1iZXIob3B0aW9ucy5tYXhXYWl0KSB8fCAwLCB3YWl0KSA6IG1heFdhaXQ7XG4gICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUZ1bmModGltZSkge1xuICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgIHRoaXNBcmcgPSBsYXN0VGhpcztcblxuICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxlYWRpbmdFZGdlKHRpbWUpIHtcbiAgICAvLyBSZXNldCBhbnkgYG1heFdhaXRgIHRpbWVyLlxuICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAvLyBTdGFydCB0aGUgdGltZXIgZm9yIHRoZSB0cmFpbGluZyBlZGdlLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgcmV0dXJuIGxlYWRpbmcgPyBpbnZva2VGdW5jKHRpbWUpIDogcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZSxcbiAgICAgICAgdGltZVdhaXRpbmcgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICByZXR1cm4gbWF4aW5nXG4gICAgICA/IG5hdGl2ZU1pbih0aW1lV2FpdGluZywgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpXG4gICAgICA6IHRpbWVXYWl0aW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lO1xuXG4gICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgIC8vIGl0IGFzIHRoZSB0cmFpbGluZyBlZGdlLCBvciB3ZSd2ZSBoaXQgdGhlIGBtYXhXYWl0YCBsaW1pdC5cbiAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgfVxuICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICB9XG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICB9XG4gICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3coKSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgdmFyIHRpbWUgPSBub3coKSxcbiAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgIGxhc3RUaGlzID0gdGhpcztcbiAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgICBpZiAobWF4aW5nKSB7XG4gICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgcmV0dXJuIGRlYm91bmNlZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZWJvdW5jZTtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKipcbiAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IERhdGVcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICogfSwgXy5ub3coKSk7XG4gKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICovXG52YXIgbm93ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiByb290LkRhdGUubm93KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vdztcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5Jyk7XG5cbmlmICh0eXBlb2YgUmVhY3QgPT09ICd1bmRlZmluZWQnKSB7XG4gIHRocm93IEVycm9yKFxuICAgICdjcmVhdGUtcmVhY3QtY2xhc3MgY291bGQgbm90IGZpbmQgdGhlIFJlYWN0IG9iamVjdC4gSWYgeW91IGFyZSB1c2luZyBzY3JpcHQgdGFncywgJyArXG4gICAgICAnbWFrZSBzdXJlIHRoYXQgUmVhY3QgaXMgYmVpbmcgbG9hZGVkIGJlZm9yZSBjcmVhdGUtcmVhY3QtY2xhc3MuJ1xuICApO1xufVxuXG4vLyBIYWNrIHRvIGdyYWIgTm9vcFVwZGF0ZVF1ZXVlIGZyb20gaXNvbW9ycGhpYyBSZWFjdFxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gbmV3IFJlYWN0LkNvbXBvbmVudCgpLnVwZGF0ZXI7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShcbiAgUmVhY3QuQ29tcG9uZW50LFxuICBSZWFjdC5pc1ZhbGlkRWxlbWVudCxcbiAgUmVhY3ROb29wVXBkYXRlUXVldWVcbik7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIF9pbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG59XG5cbnZhciBNSVhJTlNfS0VZID0gJ21peGlucyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgYW5vbnltb3VzIGZ1bmN0aW9ucyB3aGljaCBkbyBub3Rcbi8vIGhhdmUgLm5hbWUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBiZWluZyBhc3NpZ25lZCB0by5cbmZ1bmN0aW9uIGlkZW50aXR5KGZuKSB7XG4gIHJldHVybiBmbjtcbn1cblxudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7XG4gICAgcHJvcDogJ3Byb3AnLFxuICAgIGNvbnRleHQ6ICdjb250ZXh0JyxcbiAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0J1xuICB9O1xufSBlbHNlIHtcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7fTtcbn1cblxuZnVuY3Rpb24gZmFjdG9yeShSZWFjdENvbXBvbmVudCwgaXNWYWxpZEVsZW1lbnQsIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlKSB7XG4gIC8qKlxuICAgKiBQb2xpY2llcyB0aGF0IGRlc2NyaWJlIG1ldGhvZHMgaW4gYFJlYWN0Q2xhc3NJbnRlcmZhY2VgLlxuICAgKi9cblxuICB2YXIgaW5qZWN0ZWRNaXhpbnMgPSBbXTtcblxuICAvKipcbiAgICogQ29tcG9zaXRlIGNvbXBvbmVudHMgYXJlIGhpZ2hlci1sZXZlbCBjb21wb25lbnRzIHRoYXQgY29tcG9zZSBvdGhlciBjb21wb3NpdGVcbiAgICogb3IgaG9zdCBjb21wb25lbnRzLlxuICAgKlxuICAgKiBUbyBjcmVhdGUgYSBuZXcgdHlwZSBvZiBgUmVhY3RDbGFzc2AsIHBhc3MgYSBzcGVjaWZpY2F0aW9uIG9mXG4gICAqIHlvdXIgbmV3IGNsYXNzIHRvIGBSZWFjdC5jcmVhdGVDbGFzc2AuIFRoZSBvbmx5IHJlcXVpcmVtZW50IG9mIHlvdXIgY2xhc3NcbiAgICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuXG4gICAqXG4gICAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICogICAgICAgcmV0dXJuIDxkaXY+SGVsbG8gV29ybGQ8L2Rpdj47XG4gICAqICAgICB9XG4gICAqICAgfSk7XG4gICAqXG4gICAqIFRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIHN1cHBvcnRzIGEgc3BlY2lmaWMgcHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhhdmVcbiAgICogc3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5kZXJgKS4gU2VlIGBSZWFjdENsYXNzSW50ZXJmYWNlYCBmb3JcbiAgICogbW9yZSB0aGUgY29tcHJlaGVuc2l2ZSBwcm90b2NvbC4gQW55IG90aGVyIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgaW4gdGhlXG4gICAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBiZSBhdmFpbGFibGUgb24gdGhlIHByb3RvdHlwZS5cbiAgICpcbiAgICogQGludGVyZmFjZSBSZWFjdENsYXNzSW50ZXJmYWNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NJbnRlcmZhY2UgPSB7XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2YgTWl4aW4gb2JqZWN0cyB0byBpbmNsdWRlIHdoZW4gZGVmaW5pbmcgeW91ciBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgbWl4aW5zOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIG9uXG4gICAgICogdGhlIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgaXRzIHByb3RvdHlwZSAoc3RhdGljIG1ldGhvZHMpLlxuICAgICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBzdGF0aWNzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgcHJvcFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIHRoaXMgY29tcG9uZW50IHNldHMgZm9yIGl0cyBjaGlsZHJlbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY2hpbGRDb250ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvLyA9PT09IERlZmluaXRpb24gbWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBWYWx1ZXMgaW4gdGhlIG1hcHBpbmcgd2lsbCBiZSBzZXQgb25cbiAgICAgKiBgdGhpcy5wcm9wc2AgaWYgdGhhdCBwcm9wIGlzIG5vdCBzcGVjaWZpZWQgKGkuZS4gdXNpbmcgYW4gYGluYCBjaGVjaykuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJlZm9yZSBgZ2V0SW5pdGlhbFN0YXRlYCBhbmQgdGhlcmVmb3JlIGNhbm5vdCByZWx5XG4gICAgICogb24gYHRoaXMuc3RhdGVgIG9yIHVzZSBgdGhpcy5zZXRTdGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0RGVmYXVsdFByb3BzOiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgb25jZSBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZFxuICAgICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC5cbiAgICAgKlxuICAgICAqICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgcmV0dXJuIHtcbiAgICAgKiAgICAgICBpc09uOiBmYWxzZSxcbiAgICAgKiAgICAgICBmb29CYXo6IG5ldyBCYXpGb28oKVxuICAgICAqICAgICB9XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0SW5pdGlhbFN0YXRlOiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXRDaGlsZENvbnRleHQ6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAgICogVXNlcyBwcm9wcyBmcm9tIGB0aGlzLnByb3BzYCBhbmQgc3RhdGUgZnJvbSBgdGhpcy5zdGF0ZWAgdG8gcmVuZGVyIHRoZVxuICAgICAqIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCB3aGVuIG9yIGhvdyBvZnRlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCBzb1xuICAgICAqIGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLlxuICAgICAqXG4gICAgICogICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICB2YXIgbmFtZSA9IHRoaXMucHJvcHMubmFtZTtcbiAgICAgKiAgICAgcmV0dXJuIDxkaXY+SGVsbG8sIHtuYW1lfSE8L2Rpdj47XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH1cbiAgICAgKiBAcmVxdWlyZWRcbiAgICAgKi9cbiAgICByZW5kZXI6ICdERUZJTkVfT05DRScsXG5cbiAgICAvLyA9PT09IERlbGVnYXRlIG1ldGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYW5kIGFib3V0IHRvIGJlIG1vdW50ZWQuXG4gICAgICogVGhpcyBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMsIGJ1dCBhbnkgZXh0ZXJuYWwgc3Vic2NyaXB0aW9ucyBvciBkYXRhIGNyZWF0ZWRcbiAgICAgKiBieSB0aGlzIG1ldGhvZCBtdXN0IGJlIGNsZWFuZWQgdXAgaW4gYGNvbXBvbmVudFdpbGxVbm1vdW50YC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxNb3VudDogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5kIGhhcyBhIERPTSByZXByZXNlbnRhdGlvbi5cbiAgICAgKiBIb3dldmVyLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgRE9NIG5vZGUgaXMgaW4gdGhlIGRvY3VtZW50LlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcbiAgICAgKiBiZWVuIG1vdW50ZWQgKGluaXRpYWxpemVkIGFuZCByZW5kZXJlZCkgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnREaWRNb3VudDogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgYmVmb3JlIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgbmV3IHByb3BzLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmVhY3QgdG8gYSBwcm9wIHRyYW5zaXRpb24gYnkgdXBkYXRpbmcgdGhlXG4gICAgICogc3RhdGUgdXNpbmcgYHRoaXMuc2V0U3RhdGVgLiBDdXJyZW50IHByb3BzIGFyZSBhY2Nlc3NlZCB2aWEgYHRoaXMucHJvcHNgLlxuICAgICAqXG4gICAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRDb250ZXh0KSB7XG4gICAgICogICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAqICAgICAgIGxpa2VzSW5jcmVhc2luZzogbmV4dFByb3BzLmxpa2VDb3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50XG4gICAgICogICAgIH0pO1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogTk9URTogVGhlcmUgaXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50V2lsbFJlY2VpdmVTdGF0ZWAuIEFuIGluY29taW5nIHByb3BcbiAgICAgKiB0cmFuc2l0aW9uIG1heSBjYXVzZSBhIHN0YXRlIGNoYW5nZSwgYnV0IHRoZSBvcHBvc2l0ZSBpcyBub3QgdHJ1ZS4gSWYgeW91XG4gICAgICogbmVlZCBpdCwgeW91IGFyZSBwcm9iYWJseSBsb29raW5nIGZvciBgY29tcG9uZW50V2lsbFVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hpbGUgZGVjaWRpbmcgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZCBhcyBhIHJlc3VsdCBvZlxuICAgICAqIHJlY2VpdmluZyBuZXcgcHJvcHMsIHN0YXRlIGFuZC9vciBjb250ZXh0LlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYHJldHVybiBmYWxzZWAgd2hlbiB5b3UncmUgY2VydGFpbiB0aGF0IHRoZVxuICAgICAqIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBwcm9wcy9zdGF0ZS9jb250ZXh0IHdpbGwgbm90IHJlcXVpcmUgYSBjb21wb25lbnRcbiAgICAgKiB1cGRhdGUuXG4gICAgICpcbiAgICAgKiAgIHNob3VsZENvbXBvbmVudFVwZGF0ZTogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KSB7XG4gICAgICogICAgIHJldHVybiAhZXF1YWwobmV4dFByb3BzLCB0aGlzLnByb3BzKSB8fFxuICAgICAqICAgICAgICFlcXVhbChuZXh0U3RhdGUsIHRoaXMuc3RhdGUpIHx8XG4gICAgICogICAgICAgIWVxdWFsKG5leHRDb250ZXh0LCB0aGlzLmNvbnRleHQpO1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlLlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZTogJ0RFRklORV9PTkNFJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIHVwZGF0ZSBkdWUgdG8gYSB0cmFuc2l0aW9uIGZyb21cbiAgICAgKiBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAgdG8gYG5leHRQcm9wc2AsIGBuZXh0U3RhdGVgXG4gICAgICogYW5kIGBuZXh0Q29udGV4dGAuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHByZXBhcmF0aW9uIGJlZm9yZSBhbiB1cGRhdGUgb2NjdXJzLlxuICAgICAqXG4gICAgICogTk9URTogWW91ICoqY2Fubm90KiogdXNlIGB0aGlzLnNldFN0YXRlKClgIGluIHRoaXMgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQncyBET00gcmVwcmVzZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAgICogYmVlbiB1cGRhdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHByZXZQcm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldlN0YXRlXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q29udGV4dFxuICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQgYW5kIGhhdmVcbiAgICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGRlYWxsb2NhdGUgYW55IGV4dGVybmFsIHJlc291cmNlcy5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGBjb21wb25lbnREaWRVbm1vdW50YCBzaW5jZSB5b3VyIGNvbXBvbmVudCB3aWxsIGhhdmUgYmVlblxuICAgICAqIGRlc3Ryb3llZCBieSB0aGF0IHBvaW50LlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlbWVudCBmb3IgKGRlcHJlY2F0ZWQpIGBjb21wb25lbnRXaWxsTW91bnRgLlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudDogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VtZW50IGZvciAoZGVwcmVjYXRlZCkgYGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNgLlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlbWVudCBmb3IgKGRlcHJlY2F0ZWQpIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIFVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXG4gICAgLy8gPT09PSBBZHZhbmNlZCBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXByZXNlbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoaXMgaW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBhbmQgcmVjb25jaWxpYXRpb24gYWxnb3JpdGhtLlxuICAgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBvdmVycmlkYWJsZVxuICAgICAqL1xuICAgIHVwZGF0ZUNvbXBvbmVudDogJ09WRVJSSURFX0JBU0UnXG4gIH07XG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gUmVhY3RDbGFzc0ludGVyZmFjZSBidXQgZm9yIHN0YXRpYyBtZXRob2RzLlxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NTdGF0aWNJbnRlcmZhY2UgPSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBhZnRlciBhIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQgYW5kIHdoZW4gaXRcbiAgICAgKiByZWNlaXZlcyBuZXcgcHJvcHMuIFJldHVybiBhbiBvYmplY3QgdG8gdXBkYXRlIHN0YXRlIGluIHJlc3BvbnNlIHRvXG4gICAgICogcHJvcCBjaGFuZ2VzLiBSZXR1cm4gbnVsbCB0byBpbmRpY2F0ZSBubyBjaGFuZ2UgdG8gc3RhdGUuXG4gICAgICpcbiAgICAgKiBJZiBhbiBvYmplY3QgaXMgcmV0dXJuZWQsIGl0cyBrZXlzIHdpbGwgYmUgbWVyZ2VkIGludG8gdGhlIGV4aXN0aW5nIHN0YXRlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0IHx8IG51bGx9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiAnREVGSU5FX01BTllfTUVSR0VEJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gY2xhc3Mgc3BlY2lmaWNhdGlvbiBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlvbnMuXG4gICAqXG4gICAqIEFsdGhvdWdoIHRoZXNlIGFyZSBkZWNsYXJlZCBsaWtlIGluc3RhbmNlIHByb3BlcnRpZXMgaW4gdGhlIHNwZWNpZmljYXRpb25cbiAgICogd2hlbiBkZWZpbmluZyBjbGFzc2VzIHVzaW5nIGBSZWFjdC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0YXRpY1xuICAgKiBhbmQgYXJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIHByb3RvdHlwZS4gRGVzcGl0ZVxuICAgKiBiZWluZyBzdGF0aWMsIHRoZXkgbXVzdCBiZSBkZWZpbmVkIG91dHNpZGUgb2YgdGhlIFwic3RhdGljc1wiIGtleSB1bmRlclxuICAgKiB3aGljaCBhbGwgb3RoZXIgc3RhdGljIG1ldGhvZHMgYXJlIGRlZmluZWQuXG4gICAqL1xuICB2YXIgUkVTRVJWRURfU1BFQ19LRVlTID0ge1xuICAgIGRpc3BsYXlOYW1lOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZGlzcGxheU5hbWUpIHtcbiAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG4gICAgfSxcbiAgICBtaXhpbnM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBtaXhpbnMpIHtcbiAgICAgIGlmIChtaXhpbnMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXhpbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgbWl4aW5zW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2hpbGRDb250ZXh0VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgJ2NoaWxkQ29udGV4dCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMsXG4gICAgICAgIGNoaWxkQ29udGV4dFR5cGVzXG4gICAgICApO1xuICAgIH0sXG4gICAgY29udGV4dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcywgJ2NvbnRleHQnKTtcbiAgICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMsXG4gICAgICAgIGNvbnRleHRUeXBlc1xuICAgICAgKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFNwZWNpYWwgY2FzZSBnZXREZWZhdWx0UHJvcHMgd2hpY2ggc2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1aXJlc1xuICAgICAqIGF1dG9tYXRpYyBtZXJnaW5nLlxuICAgICAqL1xuICAgIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGdldERlZmF1bHRQcm9wcykge1xuICAgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihcbiAgICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMsXG4gICAgICAgICAgZ2V0RGVmYXVsdFByb3BzXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBnZXREZWZhdWx0UHJvcHM7XG4gICAgICB9XG4gICAgfSxcbiAgICBwcm9wVHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzLCAncHJvcCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IucHJvcFR5cGVzID0gX2Fzc2lnbih7fSwgQ29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpO1xuICAgIH0sXG4gICAgc3RhdGljczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICAgIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKTtcbiAgICB9LFxuICAgIGF1dG9iaW5kOiBmdW5jdGlvbigpIHt9XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCB0eXBlRGVmLCBsb2NhdGlvbikge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHR5cGVEZWYpIHtcbiAgICAgIGlmICh0eXBlRGVmLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAvLyB1c2UgYSB3YXJuaW5nIGluc3RlYWQgb2YgYW4gX2ludmFyaWFudCBzbyBjb21wb25lbnRzXG4gICAgICAgIC8vIGRvbid0IHNob3cgdXAgaW4gcHJvZCBidXQgb25seSBpbiBfX0RFVl9fXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIHR5cGVvZiB0eXBlRGVmW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgK1xuICAgICAgICAgICAgICAnUmVhY3QuUHJvcFR5cGVzLicsXG4gICAgICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsXG4gICAgICAgICAgICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sXG4gICAgICAgICAgICBwcm9wTmFtZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHtcbiAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSlcbiAgICAgID8gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXVxuICAgICAgOiBudWxsO1xuXG4gICAgLy8gRGlzYWxsb3cgb3ZlcnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cbiAgICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAnT1ZFUlJJREVfQkFTRScsXG4gICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gb3ZlcnJpZGUgJyArXG4gICAgICAgICAgJ2Alc2AgZnJvbSB5b3VyIGNsYXNzIHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzICcgK1xuICAgICAgICAgICdkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBEaXNhbGxvdyBkZWZpbmluZyBtZXRob2RzIG1vcmUgdGhhbiBvbmNlIHVubGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4gICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScgfHwgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcsXG4gICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuICAgICAgICAgICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgJyArXG4gICAgICAgICAgJ3RvIGEgbWl4aW4uJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRsZXMgcG9saWN5IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkXG4gICAqIHNwZWNpZmljYXRpb24ga2V5cyB3aGVuIGJ1aWxkaW5nIFJlYWN0IGNsYXNzZXMuXG4gICAqL1xuICBmdW5jdGlvbiBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykge1xuICAgIGlmICghc3BlYykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIHR5cGVvZlNwZWMgPSB0eXBlb2Ygc3BlYztcbiAgICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNwZWMgPT09ICdvYmplY3QnICYmIHNwZWMgIT09IG51bGw7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgaXNNaXhpblZhbGlkLFxuICAgICAgICAgICAgXCIlczogWW91J3JlIGF0dGVtcHRpbmcgdG8gaW5jbHVkZSBhIG1peGluIHRoYXQgaXMgZWl0aGVyIG51bGwgXCIgK1xuICAgICAgICAgICAgICAnb3Igbm90IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1peGlucyBpbmNsdWRlZCBieSB0aGUgY29tcG9uZW50LCAnICtcbiAgICAgICAgICAgICAgJ2FzIHdlbGwgYXMgYW55IG1peGlucyB0aGV5IGluY2x1ZGUgdGhlbXNlbHZlcy4gJyArXG4gICAgICAgICAgICAgICdFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlcy4nLFxuICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLFxuICAgICAgICAgICAgc3BlYyA9PT0gbnVsbCA/IG51bGwgOiB0eXBlb2ZTcGVjXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgX2ludmFyaWFudChcbiAgICAgIHR5cGVvZiBzcGVjICE9PSAnZnVuY3Rpb24nLFxuICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG4gICAgICAgICd1c2UgYSBjb21wb25lbnQgY2xhc3Mgb3IgZnVuY3Rpb24gYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSAnICtcbiAgICAgICAgJ3JlZ3VsYXIgb2JqZWN0LidcbiAgICApO1xuICAgIF9pbnZhcmlhbnQoXG4gICAgICAhaXNWYWxpZEVsZW1lbnQoc3BlYyksXG4gICAgICBcIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIFwiICtcbiAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LidcbiAgICApO1xuXG4gICAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlO1xuICAgIHZhciBhdXRvQmluZFBhaXJzID0gcHJvdG8uX19yZWFjdEF1dG9CaW5kUGFpcnM7XG5cbiAgICAvLyBCeSBoYW5kbGluZyBtaXhpbnMgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNhbWVcbiAgICAvLyBjaGFpbmluZyBvcmRlciBpcyBhcHBsaWVkIHRvIG1ldGhvZHMgd2l0aCBERUZJTkVfTUFOWSBwb2xpY3ksIHdoZXRoZXJcbiAgICAvLyBtaXhpbnMgYXJlIGxpc3RlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlc2UgbWV0aG9kcyBpbiB0aGUgc3BlYy5cbiAgICBpZiAoc3BlYy5oYXNPd25Qcm9wZXJ0eShNSVhJTlNfS0VZKSkge1xuICAgICAgUkVTRVJWRURfU1BFQ19LRVlTLm1peGlucyhDb25zdHJ1Y3Rvciwgc3BlYy5taXhpbnMpO1xuICAgIH1cblxuICAgIGZvciAodmFyIG5hbWUgaW4gc3BlYykge1xuICAgICAgaWYgKCFzcGVjLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkge1xuICAgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgaGFuZGxlZCBtaXhpbnMgaW4gYSBzcGVjaWFsIGNhc2UgYWJvdmUuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydHkgPSBzcGVjW25hbWVdO1xuICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBwcm90by5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcbiAgICAgIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSk7XG5cbiAgICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgUkVTRVJWRURfU1BFQ19LRVlTW25hbWVdKENvbnN0cnVjdG9yLCBwcm9wZXJ0eSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHByb3RvdHlwZTpcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBtZW1iZXIgbWV0aG9kcyBzaG91bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgYm91bmQ6XG4gICAgICAgIC8vIDEuIEV4cGVjdGVkIFJlYWN0Q2xhc3MgbWV0aG9kcyAoaW4gdGhlIFwiaW50ZXJmYWNlXCIpLlxuICAgICAgICAvLyAyLiBPdmVycmlkZGVuIG1ldGhvZHMgKHRoYXQgd2VyZSBtaXhlZCBpbikuXG4gICAgICAgIHZhciBpc1JlYWN0Q2xhc3NNZXRob2QgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpO1xuICAgICAgICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgdmFyIHNob3VsZEF1dG9CaW5kID1cbiAgICAgICAgICBpc0Z1bmN0aW9uICYmXG4gICAgICAgICAgIWlzUmVhY3RDbGFzc01ldGhvZCAmJlxuICAgICAgICAgICFpc0FscmVhZHlEZWZpbmVkICYmXG4gICAgICAgICAgc3BlYy5hdXRvYmluZCAhPT0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHNob3VsZEF1dG9CaW5kKSB7XG4gICAgICAgICAgYXV0b0JpbmRQYWlycy5wdXNoKG5hbWUsIHByb3BlcnR5KTtcbiAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV07XG5cbiAgICAgICAgICAgIC8vIFRoZXNlIGNhc2VzIHNob3VsZCBhbHJlYWR5IGJlIGNhdWdodCBieSB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlLlxuICAgICAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICAgICAgaXNSZWFjdENsYXNzTWV0aG9kICYmXG4gICAgICAgICAgICAgICAgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnIHx8XG4gICAgICAgICAgICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSxcbiAgICAgICAgICAgICAgJ1JlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kgJXMgZm9yIGtleSAlcyAnICtcbiAgICAgICAgICAgICAgICAnd2hlbiBtaXhpbmcgaW4gY29tcG9uZW50IHNwZWNzLicsXG4gICAgICAgICAgICAgIHNwZWNQb2xpY3ksXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEZvciBtZXRob2RzIHdoaWNoIGFyZSBkZWZpbmVkIG1vcmUgdGhhbiBvbmNlLCBjYWxsIHRoZSBleGlzdGluZ1xuICAgICAgICAgICAgLy8gbWV0aG9kcyBiZWZvcmUgY2FsbGluZyB0aGUgbmV3IHByb3BlcnR5LCBtZXJnaW5nIGlmIGFwcHJvcHJpYXRlLlxuICAgICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnKSB7XG4gICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJykge1xuICAgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgLy8gQWRkIHZlcmJvc2UgZGlzcGxheU5hbWUgdG8gdGhlIGZ1bmN0aW9uLCB3aGljaCBoZWxwcyB3aGVuIGxvb2tpbmdcbiAgICAgICAgICAgICAgLy8gYXQgcHJvZmlsaW5nIHRvb2xzLlxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nICYmIHNwZWMuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgICAgICBwcm90b1tuYW1lXS5kaXNwbGF5TmFtZSA9IHNwZWMuZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICBpZiAoIXN0YXRpY3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBuYW1lIGluIHN0YXRpY3MpIHtcbiAgICAgIHZhciBwcm9wZXJ0eSA9IHN0YXRpY3NbbmFtZV07XG4gICAgICBpZiAoIXN0YXRpY3MuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBpc1Jlc2VydmVkID0gbmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVM7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICAhaXNSZXNlcnZlZCxcbiAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCAnICtcbiAgICAgICAgICAncHJvcGVydHksIGAlc2AsIHRoYXQgc2hvdWxkblxcJ3QgYmUgb24gdGhlIFwic3RhdGljc1wiIGtleS4gRGVmaW5lIGl0ICcgK1xuICAgICAgICAgICdhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2libGUgb24gdGhlICcgK1xuICAgICAgICAgICdjb25zdHJ1Y3Rvci4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuXG4gICAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IG5hbWUgaW4gQ29uc3RydWN0b3I7XG4gICAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NTdGF0aWNJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSlcbiAgICAgICAgICA/IFJlYWN0Q2xhc3NTdGF0aWNJbnRlcmZhY2VbbmFtZV1cbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyxcbiAgICAgICAgICAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICtcbiAgICAgICAgICAgICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSAnICtcbiAgICAgICAgICAgICdkdWUgdG8gYSBtaXhpbi4nLFxuICAgICAgICAgIG5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKENvbnN0cnVjdG9yW25hbWVdLCBwcm9wZXJ0eSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3BlcnR5O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSB0d28gb2JqZWN0cywgYnV0IHRocm93IGlmIGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvbmUgVGhlIGZpcnN0IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IG9uZSBhZnRlciBpdCBoYXMgYmVlbiBtdXRhdGVkIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBpbiB0d28uXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKG9uZSwgdHdvKSB7XG4gICAgX2ludmFyaWFudChcbiAgICAgIG9uZSAmJiB0d28gJiYgdHlwZW9mIG9uZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHR3byA9PT0gJ29iamVjdCcsXG4gICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJ1xuICAgICk7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdHdvKSB7XG4gICAgICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICBvbmVba2V5XSA9PT0gdW5kZWZpbmVkLFxuICAgICAgICAgICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6ICcgK1xuICAgICAgICAgICAgJ1RyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBUaGlzIGNvbmZsaWN0ICcgK1xuICAgICAgICAgICAgJ21heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byAnICtcbiAgICAgICAgICAgICdnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzICcgK1xuICAgICAgICAgICAgJ3dpdGggY2xhc2hpbmcga2V5cy4nLFxuICAgICAgICAgIGtleVxuICAgICAgICApO1xuICAgICAgICBvbmVba2V5XSA9IHR3b1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb25lO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkUmVzdWx0KCkge1xuICAgICAgdmFyIGEgPSBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICBpZiAoYSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBiO1xuICAgICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG4gICAgICB2YXIgYyA9IHt9O1xuICAgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBhKTtcbiAgICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7XG4gICAgICByZXR1cm4gYztcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgaWdub3JlcyB0aGVpciByZXR1cm4gdmFsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigpIHtcbiAgICAgIG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZXRob2QgdG8gYmUgYm91bmQuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgYm91bmQgbWV0aG9kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKSB7XG4gICAgdmFyIGJvdW5kTWV0aG9kID0gbWV0aG9kLmJpbmQoY29tcG9uZW50KTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IG51bGw7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTtcbiAgICAgIHZhciBfYmluZCA9IGJvdW5kTWV0aG9kLmJpbmQ7XG4gICAgICBib3VuZE1ldGhvZC5iaW5kID0gZnVuY3Rpb24obmV3VGhpcykge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksXG4gICAgICAgICAgICBfa2V5ID0gMTtcbiAgICAgICAgICBfa2V5IDwgX2xlbjtcbiAgICAgICAgICBfa2V5KytcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2VyIGlzIHRyeWluZyB0byBiaW5kKCkgYW4gYXV0b2JvdW5kIG1ldGhvZDsgd2UgZWZmZWN0aXZlbHkgd2lsbFxuICAgICAgICAvLyBpZ25vcmUgdGhlIHZhbHVlIG9mIFwidGhpc1wiIHRoYXQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIHVzZSwgc29cbiAgICAgICAgLy8gbGV0J3Mgd2Fybi5cbiAgICAgICAgaWYgKG5ld1RoaXMgIT09IGNvbXBvbmVudCAmJiBuZXdUaGlzICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnYmluZCgpOiBSZWFjdCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUgJyArXG4gICAgICAgICAgICAgICAgJ2NvbXBvbmVudCBpbnN0YW5jZS4gU2VlICVzJyxcbiAgICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnYmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuICcgK1xuICAgICAgICAgICAgICAgICdSZWFjdCBkb2VzIHRoaXMgZm9yIHlvdSBhdXRvbWF0aWNhbGx5IGluIGEgaGlnaC1wZXJmb3JtYW5jZSAnICtcbiAgICAgICAgICAgICAgICAnd2F5LCBzbyB5b3UgY2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlYm91bmRNZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRzKTtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzO1xuICAgICAgICByZXR1cm4gcmVib3VuZE1ldGhvZDtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBib3VuZE1ldGhvZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhbGwgYXV0by1ib3VuZCBtZXRob2RzIGluIGEgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gICAqL1xuICBmdW5jdGlvbiBiaW5kQXV0b0JpbmRNZXRob2RzKGNvbXBvbmVudCkge1xuICAgIHZhciBwYWlycyA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRQYWlycztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgYXV0b0JpbmRLZXkgPSBwYWlyc1tpXTtcbiAgICAgIHZhciBtZXRob2QgPSBwYWlyc1tpICsgMV07XG4gICAgICBjb21wb25lbnRbYXV0b0JpbmRLZXldID0gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKTtcbiAgICB9XG4gIH1cblxuICB2YXIgSXNNb3VudGVkUHJlTWl4aW4gPSB7XG4gICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fX2lzTW91bnRlZCA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIHZhciBJc01vdW50ZWRQb3N0TWl4aW4gPSB7XG4gICAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fX2lzTW91bnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQWRkIG1vcmUgdG8gdGhlIFJlYWN0Q2xhc3MgYmFzZSBjbGFzcy4gVGhlc2UgYXJlIGFsbCBsZWdhY3kgZmVhdHVyZXMgYW5kXG4gICAqIHRoZXJlZm9yZSBub3QgYWxyZWFkeSBwYXJ0IG9mIHRoZSBtb2Rlcm4gUmVhY3RDb21wb25lbnQuXG4gICAqL1xuICB2YXIgUmVhY3RDbGFzc01peGluID0ge1xuICAgIC8qKlxuICAgICAqIFRPRE86IFRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIGJlY2F1c2Ugc3RhdGUgc2hvdWxkIGFsd2F5cyBrZWVwIGEgY29uc2lzdGVudFxuICAgICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC5cbiAgICAgKi9cbiAgICByZXBsYWNlU3RhdGU6IGZ1bmN0aW9uKG5ld1N0YXRlLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcywgbmV3U3RhdGUsIGNhbGxiYWNrKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAZmluYWxcbiAgICAgKi9cbiAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICB0aGlzLl9fZGlkV2FybklzTW91bnRlZCxcbiAgICAgICAgICAnJXM6IGlzTW91bnRlZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgJyArXG4gICAgICAgICAgICAnc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiBjb21wb25lbnRXaWxsVW5tb3VudCB0byAnICtcbiAgICAgICAgICAgICdwcmV2ZW50IG1lbW9yeSBsZWFrcy4nLFxuICAgICAgICAgICh0aGlzLmNvbnN0cnVjdG9yICYmIHRoaXMuY29uc3RydWN0b3IuZGlzcGxheU5hbWUpIHx8XG4gICAgICAgICAgICB0aGlzLm5hbWUgfHxcbiAgICAgICAgICAgICdDb21wb25lbnQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX19kaWRXYXJuSXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhIXRoaXMuX19pc01vdW50ZWQ7XG4gICAgfVxuICB9O1xuXG4gIHZhciBSZWFjdENsYXNzQ29tcG9uZW50ID0gZnVuY3Rpb24oKSB7fTtcbiAgX2Fzc2lnbihcbiAgICBSZWFjdENsYXNzQ29tcG9uZW50LnByb3RvdHlwZSxcbiAgICBSZWFjdENvbXBvbmVudC5wcm90b3R5cGUsXG4gICAgUmVhY3RDbGFzc01peGluXG4gICk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb21wb3NpdGUgY29tcG9uZW50IGNsYXNzIGdpdmVuIGEgY2xhc3Mgc3BlY2lmaWNhdGlvbi5cbiAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWNsYXNzXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzcGVjIENsYXNzIHNwZWNpZmljYXRpb24gKHdoaWNoIG11c3QgZGVmaW5lIGByZW5kZXJgKS5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IENvbXBvbmVudCBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAgICogQHB1YmxpY1xuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlQ2xhc3Moc3BlYykge1xuICAgIC8vIFRvIGtlZXAgb3VyIHdhcm5pbmdzIG1vcmUgdW5kZXJzdGFuZGFibGUsIHdlJ2xsIHVzZSBhIGxpdHRsZSBoYWNrIGhlcmUgdG9cbiAgICAvLyBlbnN1cmUgdGhhdCBDb25zdHJ1Y3Rvci5uYW1lICE9PSAnQ29uc3RydWN0b3InLiBUaGlzIG1ha2VzIHN1cmUgd2UgZG9uJ3RcbiAgICAvLyB1bm5lY2Vzc2FyaWx5IGlkZW50aWZ5IGEgY2xhc3Mgd2l0aG91dCBkaXNwbGF5TmFtZSBhcyAnQ29uc3RydWN0b3InLlxuICAgIHZhciBDb25zdHJ1Y3RvciA9IGlkZW50aXR5KGZ1bmN0aW9uKHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGdldHMgb3ZlcnJpZGRlbiBieSBtb2Nrcy4gVGhlIGFyZ3VtZW50IGlzIHVzZWRcbiAgICAgIC8vIGJ5IG1vY2tzIHRvIGFzc2VydCBvbiB3aGF0IGdldHMgbW91bnRlZC5cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICB0aGlzIGluc3RhbmNlb2YgQ29uc3RydWN0b3IsXG4gICAgICAgICAgJ1NvbWV0aGluZyBpcyBjYWxsaW5nIGEgUmVhY3QgY29tcG9uZW50IGRpcmVjdGx5LiBVc2UgYSBmYWN0b3J5IG9yICcgK1xuICAgICAgICAgICAgJ0pTWCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUvcmVhY3QtbGVnYWN5ZmFjdG9yeSdcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmdcbiAgICAgIGlmICh0aGlzLl9fcmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCkge1xuICAgICAgICBiaW5kQXV0b0JpbmRNZXRob2RzKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXG4gICAgICB0aGlzLnN0YXRlID0gbnVsbDtcblxuICAgICAgLy8gUmVhY3RDbGFzc2VzIGRvZXNuJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZVxuICAgICAgLy8gZ2V0SW5pdGlhbFN0YXRlIGFuZCBjb21wb25lbnRXaWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlhbGl6YXRpb24uXG5cbiAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSA/IHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkgOiBudWxsO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBpbml0aWFsU3RhdGUgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuZ2V0SW5pdGlhbFN0YXRlLl9pc01vY2tGdW5jdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuICAgICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2UuXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgdHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSxcbiAgICAgICAgJyVzLmdldEluaXRpYWxTdGF0ZSgpOiBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCcsXG4gICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgfSk7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gbmV3IFJlYWN0Q2xhc3NDb21wb25lbnQoKTtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuX19yZWFjdEF1dG9CaW5kUGFpcnMgPSBbXTtcblxuICAgIGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4U3BlY0ludG9Db21wb25lbnQuYmluZChudWxsLCBDb25zdHJ1Y3RvcikpO1xuXG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIElzTW91bnRlZFByZU1peGluKTtcbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIElzTW91bnRlZFBvc3RNaXhpbik7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2VkLlxuICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgIENvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyA9IENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcygpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgdGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZSBvZiB0aGVzZSBtZXRob2QgbmFtZXMgaXMgb2ssXG4gICAgICAvLyBzaW5jZSBpdCdzIHVzZWQgd2l0aCBjcmVhdGVDbGFzcy4gSWYgaXQncyBub3QsIHRoZW4gaXQncyBsaWtlbHkgYVxuICAgICAgLy8gbWlzdGFrZSBzbyB3ZSdsbCB3YXJuIHlvdSB0byB1c2UgdGhlIHN0YXRpYyBwcm9wZXJ0eSwgcHJvcGVydHlcbiAgICAgIC8vIGluaXRpYWxpemVyIG9yIGNvbnN0cnVjdG9yIHJlc3BlY3RpdmVseS5cbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgICBpZiAoQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2ludmFyaWFudChcbiAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5yZW5kZXIsXG4gICAgICAnY3JlYXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC4nXG4gICAgKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFNob3VsZFVwZGF0ZSxcbiAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgK1xuICAgICAgICAgICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArXG4gICAgICAgICAgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsXG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyxcbiAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLFxuICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzLFxuICAgICAgICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiAnICtcbiAgICAgICAgICAnRGlkIHlvdSBtZWFuIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JyxcbiAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFJlZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0dGluZyB0aGVzZSBvbiB0aGUgcHJvdG90eXBlLlxuICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4gUmVhY3RDbGFzc0ludGVyZmFjZSkge1xuICAgICAgaWYgKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0pIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQ2xhc3M7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5T2JqZWN0ID0ge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcHR5T2JqZWN0OyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0aW5nLlxuICpcbiAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuICB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpO1xuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KSk7XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDsiLCJ2YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5Jyk7XG5cbi8qKlxuICogQ2FzdHMgYHZhbHVlYCB0byBgaWRlbnRpdHlgIGlmIGl0J3Mgbm90IGEgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgY2FzdCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FzdEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlIDogaWRlbnRpdHk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FzdEZ1bmN0aW9uO1xuIiwiY29uc3QgaWNvbnMgPSB7fTtcbmltcG9ydCAnLi9zdHlsZS5zY3NzJztcbmljb25zLmNhdGVnb3J5ID0gPHN2ZyBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1ibG9ja3NwYXJlXCIgZmlsbD1cInVybCgjYmxvY2tzcGFyZS1ncmFkaWVudClcIiB3aWR0aD0nNTJweCcgaGVpZ2h0PScyMHB4JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9XCIwIDAgNTIgMjBcIj5cbiAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJibG9ja3NwYXJlLWdyYWRpZW50XCIgeDI9XCIwJVwiIHkyPVwiMTAwJVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjIwJVwiIHN0b3AtY29sb3I9XCIjODYzMDkxXCIgLz5cbiAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCI0MCVcIiBzdG9wLWNvbG9yPVwiIzgwMkY4RFwiIC8+XG4gICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiNjAlXCIgc3RvcC1jb2xvcj1cIiM2RjJCODBcIiAvPlxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjgwJVwiIHN0b3AtY29sb3I9XCIjNTMyNjZDXCIgLz5cbiAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxMDAlXCIgc3RvcC1jb2xvcj1cIiMzRjIyNUVcIiAvPlxuICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xNF9cIiBkPVwiTTUuOCwxMy4zQzYuNSwxMC40LDcuMiw3LjUsOCw0LjZjMS4xLDAsMi4zLDAsMy41LDBjMC43LDIuOSwxLjQsNS43LDIuMSw4LjZjMCwwLDAuMSwwLDAuMSwwXG4gICAgICAgICAgICAgICAgICAgIGMwLjMtMS41LDAuNi0zLDAuOS00LjVjMC4zLTEuMiwwLjUtMi41LDAuOC0zLjdjMC0wLjEsMC4yLTAuNCwwLjMtMC40YzEsMCwyLDAsMywwYy0wLjIsMC44LTAuNCwxLjUtMC42LDIuMlxuICAgICAgICAgICAgICAgICAgICBjLTAuOSwzLjMtMS44LDYuNS0yLjcsOS44Yy0wLjEsMC40LTAuMiwwLjUtMC43LDAuNWMtMSwwLTIsMC0zLDBjLTAuNy0yLjYtMS40LTUuMS0yLjEtNy43YzAsMC0wLjEsMC0wLjEsMFxuICAgICAgICAgICAgICAgICAgICBjLTAuNywyLjYtMS40LDUuMS0yLjEsNy43Yy0xLjEsMC0yLjIsMC0zLjIsMGMtMC4xLDAtMC4zLTAuMy0wLjQtMC40QzIuNywxMywxLjcsOS40LDAuNiw1LjhDMC41LDUuNCwwLjQsNSwwLjMsNC42XG4gICAgICAgICAgICAgICAgICAgIGMxLjEsMCwyLjEsMCwzLjIsMGMwLjcsMi45LDEuNCw1LjgsMi4xLDguN0M1LjcsMTMuMyw1LjgsMTMuMyw1LjgsMTMuM3pcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMi40LDE3Yy0xLDAtMS45LDAtMi45LDBjMC0wLjIsMC0wLjQsMC0wLjZjMC0zLjcsMC03LjQsMC0xMS4xYzAtMC41LDAuMS0wLjcsMC43LTAuN2MxLjcsMCwzLjQsMCw1LjEsMC4xXG4gICAgICAgICAgICAgICAgICAgIGMyLjIsMC4xLDMuNywxLjgsMy43LDMuOWMwLDEuNy0xLjMsMy4xLTMsMy40QzI1LDEyLjIsMjQsMTIuMSwyMywxMi4xYy0wLjQsMC0wLjYsMC4xLTAuNiwwLjZDMjIuNSwxNC4xLDIyLjQsMTUuNSwyMi40LDE3elxuICAgICAgICAgICAgICAgICAgICAgTTIyLjQsOC40YzAsMC40LDAsMC43LDAsMS4xYzAsMC4zLDAuMSwwLjUsMC41LDAuNWMwLjUsMCwxLjEsMCwxLjYsMGMwLjgsMCwxLjQtMC42LDEuNC0xLjRjMC0wLjktMC41LTEuNS0xLjMtMS42XG4gICAgICAgICAgICAgICAgICAgIGMtMC41LTAuMS0xLjEsMC0xLjYtMC4xYy0wLjUsMC0wLjYsMC4yLTAuNiwwLjZDMjIuNSw3LjcsMjIuNCw4LjEsMjIuNCw4LjR6XCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMTFfXCIgZD1cIk00Ni42LDE0LjZjMC0wLjgsMC0xLjYsMC0yLjRjMC0wLjQtMC4xLTAuNS0wLjUtMC41Yy0wLjgsMC0xLjcsMC0yLjUsMGMwLTEuOCwwLTMuNSwwLTUuMmMwLjYsMCwxLjMsMCwyLDBcbiAgICAgICAgICAgICAgICAgICAgYzAtMC43LDAtMS40LDAtMi4yYzEuMiwwLDIuNCwwLDMuNSwwYzAuMSwwLDAuMywwLjIsMC4zLDAuM2MwLjcsMy4zLDEuNCw2LjUsMi4yLDkuOGMwLDAsMCwwLjEsMCwwLjFcbiAgICAgICAgICAgICAgICAgICAgQzQ5LjksMTQuNiw0OC4zLDE0LjYsNDYuNiwxNC42elwiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzEwX1wiIGQ9XCJNMzcuMiwxMS42YzAsMC41LDAsMSwwLDEuNWMtMC4xLDAuOC0wLjUsMS40LTEuMSwxLjVjLTAuOCwwLjItMS42LDAuMi0yLjItMC41Yy0wLjMtMC4zLTAuNS0wLjQtMC45LTAuNFxuICAgICAgICAgICAgICAgICAgICBjLTAuNSwwLTEuMiwwLjEtMS41LTAuMWMtMC4zLTAuMi0wLjMtMC45LTAuNC0xLjRjLTAuNS0yLjQtMS4xLTQuOS0xLjYtNy4zYzAtMC4yLDAtMC4zLTAuMS0wLjZjMy40LTAuOCw2LjgtMS41LDEwLjItMi4zXG4gICAgICAgICAgICAgICAgICAgIGMwLDAuNywwLDEuMywwLDEuOWMtMC44LDAtMS41LDAtMi4zLDBjMCwwLjQsMCwwLjYtMC4xLDFjLTIuMS0xLjUtNC0xLjMtNS41LDAuNGMtMC43LDAuOS0xLDEuOS0xLDNjMCwxLjIsMC4zLDIuMiwxLDMuMVxuICAgICAgICAgICAgICAgICAgICBDMzIuNywxMi44LDM1LjIsMTMuNywzNy4yLDExLjZ6XCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfOV9cIiBkPVwiTTQwLDEyLjljMC44LDAsMS41LDAsMi4zLDBjMCwwLjcsMCwxLjQsMCwyLjFjMCwwLjUsMC4xLDAuNywwLjcsMC43YzAuOCwwLDEuNSwwLDIuNCwwYzAsMC40LDAsMC44LDAsMS4yXG4gICAgICAgICAgICAgICAgICAgIGMwLDAuMS0wLjIsMC4zLTAuMywwLjNjLTEuNSwwLjMtMi45LDAuNy00LjQsMWMtMC42LDAuMS0wLjcsMC0wLjctMC42YzAtMS40LDAtMi44LDAtNC4yQzQwLDEzLjMsNDAsMTMuMSw0MCwxMi45elwiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzhfXCIgZD1cIk0zOC45LDE1LjljMCwwLjgsMCwxLjYsMCwyLjVjMCwwLjEtMC4xLDAuMy0wLjIsMC4zYy0yLDAuNC0zLjksMC45LTUuOSwxLjNjLTAuMy0xLjQtMC42LTIuNy0wLjktNFxuICAgICAgICAgICAgICAgICAgICBDMzQuMiwxNy40LDM2LjUsMTcuNSwzOC45LDE1Ljl6XCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfN19cIiBkPVwiTTMzLjQsOC4zYzAtMC44LDAuMy0xLjYsMS4xLTEuOWMwLjctMC4zLDEuNC0wLjIsMiwwLjNjMC44LDAuNywwLjksMi4xLDAuMywzYy0wLjUsMC44LTEuNiwxLTIuNCwwLjVcbiAgICAgICAgICAgICAgICAgICAgQzMzLjcsOS44LDMzLjQsOS4zLDMzLjQsOC4zelwiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzZfXCIgZD1cIk00MCw2LjVjMC44LDAsMS42LDAsMi40LDBjMCwwLjksMCwxLjcsMCwyLjVjMCwwLjgsMCwxLjUsMCwyLjNjMCwwLjEtMC4yLDAuNC0wLjMsMC40Yy0wLjcsMC0xLjQsMC0yLjEsMFxuICAgICAgICAgICAgICAgICAgICBDNDAsOS45LDQwLDguMiw0MCw2LjV6XCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfNV9cIiBkPVwiTTQ1LjYsMC42YzAuOS0wLjIsMS44LTAuNCwyLjctMC42YzAuMiwxLjEsMC41LDIuMSwwLjcsMy4yYy0xLjIsMC0yLjMsMC0zLjUsMEM0NS42LDIuMyw0NS42LDEuNSw0NS42LDAuNnpcbiAgICAgICAgICAgICAgICAgICAgXCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfNF9cIiBkPVwiTTQwLjgsMS43YzEuMiwwLDIuNCwwLDMuNiwwYzAsMC41LDAsMSwwLDEuNmMtMC43LDAtMS4zLDAtMiwwYzAsMC43LDAsMS4zLDAsMmMtMC42LDAtMSwwLTEuNiwwXG4gICAgICAgICAgICAgICAgICAgIEM0MC44LDQuMSw0MC44LDIuOSw0MC44LDEuN3pcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8zX1wiIGQ9XCJNNTEuNywxNS44Yy0xLjcsMC40LTMuNCwwLjctNS4xLDEuMWMwLTAuNCwwLTAuOCwwLTEuMkM0OC4zLDE1LjgsNTAsMTUuOCw1MS43LDE1LjhcbiAgICAgICAgICAgICAgICAgICAgQzUxLjcsMTUuOCw1MS43LDE1LjgsNTEuNywxNS44elwiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzJfXCIgZD1cIk00My41LDEyLjljMC43LDAsMS4zLDAsMS45LDBjMCwwLjYsMCwxLjEsMCwxLjdjLTAuNiwwLTEuMiwwLTEuOSwwQzQzLjUsMTQsNDMuNSwxMy41LDQzLjUsMTIuOXpcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xX1wiIGQ9XCJNNDQuNCw1LjNjLTAuMywwLTAuNSwwLTAuOSwwYzAtMC4zLDAtMC42LDAtMC45QzQ0LjQsNC4yLDQ0LjYsNC4zLDQ0LjQsNS4zelwiLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICA8L3N2Zz47XG5cbmljb25zLmFjY29yZGlvbiA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1hY2NvcmRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMl9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzFfXCIgeD1cIjEuMlwiIHk9XCI2LjhcIiB3aWR0aD1cIjE3LjZcIiBoZWlnaHQ9XCIxMi42XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNF9cIiB4PVwiMS4yXCIgeT1cIjMuNlwiIHdpZHRoPVwiMTcuNlwiIGhlaWdodD1cIjJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8zX1wiIHg9XCIxLjJcIiB5PVwiMC42XCIgd2lkdGg9XCIxNy42XCIgaGVpZ2h0PVwiMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLmNvbnRhaW5lciA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1jb250YWluZXJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPVwiWE1MSURfM19cIiBjeD1cIjEwXCIgY3k9XCI5LjlcIiByPVwiNS41XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfNF9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF81X1wiIHg9XCI4LjlcIiB5PVwiNi4xXCIgY2xhc3M9XCJzdDBcIiB3aWR0aD1cIjIuMlwiIGhlaWdodD1cIjcuOVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF82X1wiIHg9XCI2XCIgeT1cIjlcIiBjbGFzcz1cInN0MFwiIHdpZHRoPVwiNy45XCIgaGVpZ2h0PVwiMi4yXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMl9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzhfXCIgZD1cIk0yMCwyMEgwVjBIMjBWMjB6IE0xLDE5SDE5VjFIMVYxOXpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9zdmc+OyBcblxuaWNvbnMuY29udGVudGJveCA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1jb250ZW50Ym94XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzJfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD1cIlhNTElEXzFfXCIgY3g9XCI1LjdcIiBjeT1cIjEwXCIgcj1cIjMuOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzNfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNV9cIiB4PVwiMTAuN1wiIHk9XCIxMC42XCIgd2lkdGg9XCI3LjNcIiBoZWlnaHQ9XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzhfXCIgeD1cIjEwLjdcIiB5PVwiNy40XCIgd2lkdGg9XCI3LjNcIiBoZWlnaHQ9XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfN19cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzRfXCIgZD1cIk0xOS44LDE2LjhIMC4yVjMuMmgxOS43VjE2Ljh6IE0wLjksMTZoMTguMlY0SDAuOVYxNnpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9zdmc+OyAgICAgXG5cbmljb25zLnVzZXJwcm9maWxlID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLXVzZXJwcm9maWxlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8zX1wiIGQ9XCJNMTMuMSwyLjVjMS43LDEuNywxLjcsNC41LDAsNi4zcy00LjUsMS43LTYuMywwcy0xLjctNC41LDAtNi4zQzguNiwwLjcsMTEuNCwwLjcsMTMuMSwyLjVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yX1wiIGQ9XCJNMTYuOCwxMy4yYy00LTIuNy05LjUtMi43LTEzLjYsMGMtMC42LDAuNC0xLDEuMS0xLDEuOHYzLjhoMTUuNVYxNUMxNy43LDE0LjMsMTcuNCwxMy42LDE2LjgsMTMuMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMMTYuOCwxMy4yelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLnN0YXJyYXRpbmcgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctc3RhcnJhdGluZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfNl9cIiBwb2ludHM9XCIxNy40LDguMiAxMi4zLDcuNSAxMCwyLjggNy43LDcuNSAyLjYsOC4yIDYuMywxMS44IDUuNCwxNi45IDEwLDE0LjUgMTQuNiwxNi45IDEzLjcsMTEuOCAgIFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD1cIlhNTElEXzhfXCIgY2xhc3M9XCJzdDBcIiBwb2ludHM9XCIxMy43LDE1LjggMTAsMTMuOCAxMCw0LjIgMTEuOSw4IDE2LDguNiAxMywxMS42ICAgXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjsgICAgICAgICAgICAgICAgXG5cbmljb25zLmltYWdlY2Fyb3VzZWwgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctaW1hZ2VjYXJvdXNlbFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfOV9cIiBkPVwiTTE2LjQsMTYuNEgzLjZWMy42aDEyLjdWMTYuNHogTTQuNiwxNS40aDEwLjdWNC42SDQuNlYxNS40elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfM19cIiB4PVwiMTcuNVwiIHk9XCI0LjFcIiB3aWR0aD1cIjIuNVwiIGhlaWdodD1cIjExLjdcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzRfXCIgeD1cIjBcIiB5PVwiNC4xXCIgd2lkdGg9XCIyLjVcIiBoZWlnaHQ9XCIxMS43XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF83X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfMl9cIiBwb2ludHM9XCI1LjEsMTQgOC42LDcuOSAxMi4xLDE0ICAgXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfNl9cIiBwb2ludHM9XCIxMC40LDE0IDEyLjYsMTAuMSAxNC45LDE0ICAgIFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPVwiWE1MSURfNV9cIiBjeD1cIjEyLjRcIiBjeT1cIjcuMVwiIHI9XCIxLjRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9zdmc+O1xuXG5pY29ucy5pbWFnZXNsaWRlciA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1pbWFnZXNsaWRlclwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF85X1wiIGQ9XCJNMTYuNCwxNi40SDMuNlYzLjZoMTIuN1YxNi40eiBNNC42LDE1LjRoMTAuN1Y0LjZINC42VjE1LjR6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8yX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfNV9cIiBwb2ludHM9XCI1LjEsMTQgOC42LDcuOSAxMi4xLDE0ICAgXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfNl9cIiBwb2ludHM9XCIxMC40LDE0IDEyLjYsMTAuMSAxNC45LDE0ICAgIFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPVwiWE1MSURfN19cIiBjeD1cIjEyLjRcIiBjeT1cIjcuMVwiIHI9XCIxLjRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzIwX1wiIGQ9XCJNMS4xLDEwbDEuNS0wLjlDMi43LDksMi43LDguOSwyLjcsOC43YzAtMC4xLTAuMS0wLjMtMC4yLTAuNEMyLjQsOC4yLDIuMiw4LjIsMiw4LjNMMC4xLDkuNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMwLDkuNiwwLDkuNywwLDkuOXYwLjJjMCwwLjIsMCwwLjQsMC4xLDAuNUwyLDExLjdjMC4xLDAuMSwwLjIsMC4xLDAuMywwLjFjMC4xLDAsMC4yLDAsMC4zLTAuMWMwLjEtMC4xLDAuMS0wLjIsMC4xLTAuNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLTAuMi0wLjEtMC4zLTAuMi0wLjRMMS4xLDEwelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMTdfXCIgZD1cIk0xOS45LDkuNUwxOCw4LjNjLTAuMi0wLjEtMC40LTAuMS0wLjYsMC4xYy0wLjEsMC4xLTAuMSwwLjItMC4xLDAuNGMwLDAuMiwwLjEsMC4zLDAuMiwwLjRsMS41LDAuOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwtMS41LDAuOWMtMC4xLDAuMS0wLjIsMC4yLTAuMiwwLjRjMCwwLjEsMC4xLDAuMywwLjIsMC40YzAuMSwwLjEsMC4yLDAuMSwwLjMsMC4xYzAuMSwwLDAuMiwwLDAuMy0wLjFsMS44LTEuMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjItMC4xLDAuMi0wLjMsMC4yLTAuNVY5LjlDMjAsOS43LDIwLDkuNiwxOS45LDkuNXpcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+OyBcblxuaWNvbnMucG9zdGxpc3QgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctcG9zdGxpc3RcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzVfXCIgZD1cIk02LjgsOC4zSDAuOVYyaDUuOVY4LjN6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8yX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfM19cIiB4PVwiOC43XCIgeT1cIjMuMVwiIHdpZHRoPVwiOC41XCIgaGVpZ2h0PVwiMS40XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNF9cIiB4PVwiOC43XCIgeT1cIjUuOFwiIHdpZHRoPVwiMTAuMlwiIGhlaWdodD1cIjEuNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMTRfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xNV9cIiBkPVwiTTYuOSwxOC4ySDAuOHYtNi42aDYuMVYxOC4yelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMTFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xM19cIiB4PVwiOC43XCIgeT1cIjEyLjhcIiB3aWR0aD1cIjguNVwiIGhlaWdodD1cIjEuNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzEyX1wiIHg9XCI4LjdcIiB5PVwiMTUuNVwiIHdpZHRoPVwiMTAuMlwiIGhlaWdodD1cIjEuNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47ICAgXG5cbmljb25zLnBvc3RncmlkID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLXBvc3RncmlkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzVfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xNF9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xNV9cIiBkPVwiTTksMTEuMkgxVjIuOWg4VjExLjJ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzJfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfM19cIiBkPVwiTTE5LDExLjJoLThWMi45aDhWMTEuMnpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMV9cIiB4PVwiMVwiIHk9XCIxMi40XCIgd2lkdGg9XCI3LjJcIiBoZWlnaHQ9XCIxLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF82X1wiIHg9XCIxXCIgeT1cIjE1LjNcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCIxLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF84X1wiIHg9XCIxMVwiIHk9XCIxMi40XCIgd2lkdGg9XCI3LjJcIiBoZWlnaHQ9XCIxLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF83X1wiIHg9XCIxMVwiIHk9XCIxNS4zXCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiMS44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcblxuaWNvbnMucG9zdGNhcm91c2VsID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLXBvc3RjYXJvdXNlbFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMTRfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMTVfXCIgZD1cIk0xNiwxMS40SDRWMS43SDE2VjExLjR6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzVfXCIgeD1cIjRcIiB5PVwiMTIuOFwiIHdpZHRoPVwiMTAuOFwiIGhlaWdodD1cIjIuMVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzZfXCIgeD1cIjRcIiB5PVwiMTYuMlwiIHdpZHRoPVwiMTIuMVwiIGhlaWdodD1cIjIuMVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMjBfXCIgZD1cIk0xLjEsMTBsMS41LTAuOUMyLjcsOSwyLjcsOC45LDIuNyw4LjdjMC0wLjEtMC4xLTAuMy0wLjItMC40QzIuNCw4LjIsMi4yLDguMiwyLDguM0wwLjEsOS41XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQzAsOS42LDAsOS43LDAsOS45djAuMmMwLDAuMiwwLDAuNCwwLjEsMC41TDIsMTEuN2MwLjEsMC4xLDAuMiwwLjEsMC4zLDAuMWMwLjEsMCwwLjIsMCwwLjMtMC4xYzAuMS0wLjEsMC4xLTAuMiwwLjEtMC40XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAtMC4yLTAuMS0wLjMtMC4yLTAuNEwxLjEsMTB6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yX1wiIGQ9XCJNMTkuOSw5LjVMMTgsOC4zYy0wLjItMC4xLTAuNC0wLjEtMC42LDAuMWMtMC4xLDAuMS0wLjEsMC4yLTAuMSwwLjRjMCwwLjIsMC4xLDAuMywwLjIsMC40bDEuNSwwLjlsLTEuNSwwLjlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuMSwwLjEtMC4yLDAuMi0wLjIsMC40YzAsMC4xLDAuMSwwLjMsMC4yLDAuNGMwLjEsMC4xLDAuMiwwLjEsMC4zLDAuMWMwLjEsMCwwLjIsMCwwLjMtMC4xbDEuOC0xLjFjMC4yLTAuMSwwLjItMC4zLDAuMi0wLjVWOS45XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQzIwLDkuNywyMCw5LjYsMTkuOSw5LjV6XCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjsgICAgICAgICAgICAgICAgXG5cbmljb25zLmljb25ibG9ja3NwYXJlID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLWljb25ibG9ja3NwYXJlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yM19cIiBkPVwiTTE3LjQsMmMwLjIsMCwwLjUsMCwwLjcsMGMwLjQsMCwwLjUsMC4xLDAuNSwwLjVjMCwyLjctMC45LDUtMi44LDYuOWMtMC44LDAuOC0xLjcsMS41LTIuNSwyLjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjEsMC4xLTAuMiwwLjMtMC4yLDAuNGMtMC4xLDEuMS0wLjEsMi4yLTAuMiwzLjNjMCwwLjMtMC4xLDAuNC0wLjMsMC42Yy0xLjIsMC43LTIuNSwxLjQtMy43LDJjLTAuMywwLjItMC41LDAuMS0wLjctMC4xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC42LTAuNC0wLjctMC45LTAuNC0xLjVjMC4zLTAuNiwwLjQtMS4yLDAuNi0xLjhjMC4xLTAuMiwwLTAuMy0wLjEtMC41Yy0wLjgtMC44LTEuNy0xLjYtMi41LTIuNGMtMC4yLTAuMi0wLjMtMC4yLTAuNS0wLjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjgsMC4zLTEuNywwLjUtMi41LDAuN2MtMC4zLDAuMS0wLjQsMC0wLjYtMC4yYy0wLjktMC45LTAuOC0wLjYtMC4yLTEuNWMwLjYtMSwxLjItMiwxLjgtMi45QzMuOCw3LjQsNCw3LjMsNC4zLDcuM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMS4yLDAsMi4zLTAuMSwzLjUtMC4yQzgsNy4xLDguMiw3LDguMyw2LjljMS0xLDItMiwzLjEtMi45QzEzLDIuNywxNC45LDIuMSwxNywyQzE3LjEsMiwxNy4zLDIsMTcuNCwyQzE3LjQsMiwxNy40LDIsMTcuNCwyelxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTTE1LjIsNi4xYzAuNiwwLDEtMC40LDEtMC45YzAtMC41LTAuNS0xLTEtMWMtMC41LDAtMSwwLjQtMSwxQzE0LjIsNS42LDE0LjcsNi4xLDE1LjIsNi4xelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47IFxuXG5pY29ucy5pY29ubGlzdCA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1pY29ubGlzdFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8yX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMTZfXCIgZD1cIk0yLjQsMy4zYzAuNy0wLjcsMS4zLTEuMywyLTJjMC4xLTAuMSwwLjEtMC4xLDAuMi0wLjJDNC44LDEsNS4xLDEsNS4zLDEuMWMwLjIsMC4yLDAuMiwwLjQsMCwwLjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAsMC0wLjEsMC4xLTAuMSwwLjFDNC40LDIuNywzLjYsMy41LDIuOCw0LjNDMi41LDQuNiwyLjMsNC42LDIsNC4zQzEuNiwzLjksMS4yLDMuNSwwLjgsMy4xQzAuNSwyLjgsMC42LDIuMywxLDIuMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC4yLTAuMSwwLjQsMCwwLjUsMC4yQzEuOCwyLjcsMi4xLDMsMi40LDMuM3pcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xX1wiIHg9XCI2LjRcIiB5PVwiMi4yXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEuN1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfNF9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzZfXCIgZD1cIk0yLjQsMTAuNmMwLjctMC43LDEuMy0xLjMsMi0yYzAuMS0wLjEsMC4xLTAuMSwwLjItMC4yYzAuMi0wLjIsMC41LTAuMiwwLjcsMGMwLjIsMC4yLDAuMiwwLjQsMCwwLjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAsMC0wLjEsMC4xLTAuMSwwLjFjLTAuOCwwLjgtMS42LDEuNi0yLjQsMi40Yy0wLjMsMC4zLTAuNSwwLjMtMC44LDBjLTAuNC0wLjQtMC44LTAuOC0xLjItMS4yQzAuNSwxMCwwLjYsOS42LDEsOS41XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjItMC4xLDAuNCwwLDAuNSwwLjJDMS44LDEwLDIuMSwxMC4zLDIuNCwxMC42elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzVfXCIgeD1cIjYuNFwiIHk9XCI5LjVcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMS43XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF83X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfOV9cIiBkPVwiTTIuNCwxNy44YzAuNy0wLjcsMS4zLTEuMywyLTJjMC4xLTAuMSwwLjEtMC4xLDAuMi0wLjJjMC4yLTAuMiwwLjUtMC4yLDAuNywwYzAuMiwwLjIsMC4yLDAuNCwwLDAuNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMCwwLTAuMSwwLjEtMC4xLDAuMWMtMC44LDAuOC0xLjYsMS42LTIuNCwyLjRjLTAuMywwLjMtMC41LDAuMy0wLjgsMGMtMC40LTAuNC0wLjgtMC44LTEuMi0xLjJjLTAuMy0wLjMtMC4yLTAuNywwLjItMC44XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjItMC4xLDAuNCwwLDAuNSwwLjJDMS44LDE3LjIsMi4xLDE3LjUsMi40LDE3Ljh6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfOF9cIiB4PVwiNi40XCIgeT1cIjE2LjdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMS43XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuaWNvbnMuYnV0dG9uID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLWJ1dHRvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yX1wiIGNsYXNzPVwic3QwXCIgZD1cIk0xOCw5LjVIMmMtMS4xLDAtMi0wLjktMi0ydi0yYzAtMS4xLDAuOS0yLDItMkgxOGMxLjEsMCwyLDAuOSwyLDJ2MkMyMCw4LjYsMTkuMSw5LjUsMTgsOS41elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfNV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzZfXCIgY2xhc3M9XCJzdDFcIiBkPVwiTTEyLjgsMjBIOS43Yy0xLDAtMS45LTAuNi0yLjQtMS41TDQuNCwxM2wwLjQtMC4zYzAuMy0wLjMsMC43LTAuNCwxLjEtMC40XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjQsMCwwLjgsMC4yLDEuMSwwLjZsMC41LDAuNmwwLTYuMmMwLTAuNiwwLjUtMS4yLDEuMS0xLjJjMC42LDAsMS4xLDAuNSwxLjEsMS4ydjMuMmMwLjItMC4yLDAuNS0wLjQsMC44LTAuNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC41LDAsMC45LDAuMywxLjEsMC44YzAuMi0wLjMsMC41LTAuNSwwLjktMC41YzAuNSwwLDEsMC40LDEuMSwxYzAuMi0wLjMsMC41LTAuNCwwLjktMC40aDBjMC42LDAsMS4xLDAuNSwxLjEsMS4ybDAsNC44XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMxNS42LDE4LjcsMTQuNCwyMCwxMi44LDIweiBNNS4zLDEzLjJsMi42LDVjMC40LDAuNywxLjEsMS4xLDEuOCwxLjFoMy4xYzEuMSwwLDIuMS0xLDIuMS0yLjJsMC00LjhjMC0wLjItMC4yLTAuNC0wLjQtMC40aDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjIsMC0wLjQsMC4yLTAuNCwwLjR2MC42YzAsMC4zLTAuMywwLjYtMC42LDAuNnMtMC42LTAuMy0wLjYtMC42di0xLjFjMC0wLjItMC4yLTAuNC0wLjQtMC40Yy0wLjIsMC0wLjQsMC4yLTAuNCwwLjR2MS4yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLDAuMy0wLjMsMC42LTAuNiwwLjZjLTAuMywwLTAuNi0wLjMtMC42LTAuNnYtMS41YzAtMC4yLTAuMi0wLjQtMC40LTAuNGMtMC4yLDAtMC40LDAuMi0wLjQsMC40VjEzYzAsMC4zLTAuMywwLjYtMC42LDAuNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDOS4zLDEzLjYsOSwxMy40LDksMTNWNy4zYzAtMC4yLTAuMi0wLjQtMC40LTAuNFM4LjMsNy4xLDguMyw3LjNsMCw2LjZjMCwwLjMtMC4yLDAuNS0wLjQsMC42Yy0wLjIsMC4xLTAuNSwwLTAuNy0wLjJsLTAuOC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEM2LjMsMTMuMSw2LjEsMTMsNS45LDEzQzUuNywxMyw1LjUsMTMsNS4zLDEzLjJ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF80X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfM19cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTQuNSwxMS40TDE0LjUsMTEuNGMtMC40LDAtMC44LDAuMy0wLjgsMC44djAuNmMwLDAuMS0wLjEsMC4yLTAuMiwwLjJjLTAuMSwwLTAuMi0wLjEtMC4yLTAuMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LTEuMWMwLTAuNC0wLjMtMC44LTAuNy0wLjhjLTAuNCwwLTAuNywwLjQtMC43LDAuOHYxLjJjMCwwLjEtMC4xLDAuMi0wLjIsMC4yYy0wLjEsMC0wLjItMC4xLTAuMi0wLjJ2LTEuNWMwLTAuNC0wLjMtMC44LTAuNy0wLjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDBjLTAuNCwwLTAuNywwLjMtMC43LDAuOFYxM2MwLDAuMS0wLjEsMC4yLTAuMiwwLjJjLTAuMSwwLTAuMi0wLjEtMC4yLTAuMnYtMS43YzAsMCwwLDAsMCwwYzAsMCwwLDAsMCwwdi00XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLTAuNC0wLjMtMC44LTAuNy0wLjhjLTAuNCwwLTAuNywwLjQtMC43LDAuOGwwLDYuNmMwLDAuMS0wLjEsMC4yLTAuMSwwLjJjLTAuMSwwLTAuMiwwLTAuMi0wLjFsLTAuOC0xYy0wLjItMC4zLTAuNS0wLjQtMC44LTAuNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuMywwLTAuNiwwLjEtMC45LDAuM2MwLDAsMCwwLDAsMGwtMC4yLDAuMWwyLjcsNS4yYzAuNCwwLjgsMS4yLDEuMywyLjEsMS4zaDMuMWMxLjMsMCwyLjQtMS4yLDIuNC0yLjZjMC0wLjgsMC0xLjMsMC0xLjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAtMS4yLDAtMS43LDAtM0MxNS4yLDExLjcsMTQuOSwxMS40LDE0LjUsMTEuNHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9zdmc+OyAgICAgICAgICAgICAgICBcblxuaWNvbnMuY3RhID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctY3RhXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xN19cIj5cbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMTVfXCIgeD1cIjE0LjZcIiB5PVwiNC4xXCIgdHJhbnNmb3JtPVwibWF0cml4KDAuNzA3MSAtMC43MDcxIDAuNzA3MSAwLjcwNzEgMS43Njk2IDEzLjU1NDQpXCIgY2xhc3M9XCJzdDBcIiB3aWR0aD1cIjUuM1wiIGhlaWdodD1cIjEuMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMTRfXCIgeD1cIjE2LjRcIiB5PVwiOC4xXCIgY2xhc3M9XCJzdDBcIiB3aWR0aD1cIjMuNVwiIGhlaWdodD1cIjEuMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMTNfXCIgeD1cIjE0LjZcIiB5PVwiMTIuNlwiIHRyYW5zZm9ybT1cIm1hdHJpeCgwLjcwNzEgMC43MDcxIC0wLjcwNzEgMC43MDcxIDE0LjM2ODkgLTguMzM2NClcIiBjbGFzcz1cInN0MFwiIHdpZHRoPVwiNS4zXCIgaGVpZ2h0PVwiMS4yXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xNl9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzFfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTIuNiwxMS44SDAuOGMtMC40LDAtMC43LTAuMy0wLjctMC43VjdjMC0wLjQsMC4zLTAuNywwLjctMC43aDEuOEMzLDYuMywzLjMsNi42LDMuMyw3djQuMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMy4zLDExLjUsMywxMS44LDIuNiwxMS44elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD1cIlhNTElEXzI0X1wiIGNsYXNzPVwic3QwXCIgcG9pbnRzPVwiNy4zLDEyLjggNCwxMi4yIDQsNiA3LjMsNS40ICAgICAgICAgXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfMjhfXCIgY2xhc3M9XCJzdDBcIiBwb2ludHM9XCIzLjksMTIuOCA3LjIsMTMuNSA3LjIsMTcuNiAzLjksMTcuNiAgICAgICAgIFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD1cIlhNTElEXzI2X1wiIGNsYXNzPVwic3QwXCIgcG9pbnRzPVwiMTMuMywxNC4yIDguMSwxMi44IDguMSw1LjIgMTMuMywzLjggICAgICAgICBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD1cIlhNTElEXzI1X1wiIGNsYXNzPVwic3QwXCIgY3g9XCIxMy45XCIgY3k9XCI4LjdcIiByPVwiMS44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9zdmc+O1xuXG5pY29ucy5tYXNvbnJ5ID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctbWFzb25yeVwiICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCIjM0MxQTVCXCI+XG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMV9cIiB4PVwiMS4yXCIgeT1cIjExLjJcIiBjbGFzcz1cInN0MFwiIHdpZHRoPVwiOC4yXCIgaGVpZ2h0PVwiNy42XCIvPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzRfXCIgeD1cIjEuMlwiIHk9XCIxLjJcIiBjbGFzcz1cInN0MFwiIHdpZHRoPVwiOC4yXCIgaGVpZ2h0PVwiOC43XCIvPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzNfXCIgeD1cIjEwLjZcIiB5PVwiMS4yXCIgY2xhc3M9XCJzdDBcIiB3aWR0aD1cIjguMlwiIGhlaWdodD1cIjVcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNV9cIiB4PVwiMTAuNlwiIHk9XCI3LjdcIiBjbGFzcz1cInN0MFwiIHdpZHRoPVwiOC4yXCIgaGVpZ2h0PVwiMTEuMVwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLmxvZ29iYWRnZSA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLWxvZ29iYWRnZVwiICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCIjM0MxQTVCXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMTZfXCIgZD1cIk0zLjEsMi44YzAuMy0wLjEsMC41LTAuMiwwLjgtMC4zYzAuOC0wLjMsMS42LTAuNiwyLjUtMC44YzAsMCwwLjEsMCwwLjIsMEM3LDEuOSw3LjUsMi4xLDgsMi4zXG4gICAgICAgICAgICAgICAgICAgIGMwLjEsMCwwLjEsMCwwLjIsMEM4LjgsMiw5LjQsMS43LDkuOSwxLjVjMC4xLDAsMC4xLDAsMC4yLDBjMC42LDAuMywxLjEsMC41LDEuNywwLjhjMC4xLDAsMC4xLDAsMC4yLDBjMC41LTAuMiwxLTAuNCwxLjYtMC42XG4gICAgICAgICAgICAgICAgICAgIGMwLDAsMC4xLDAsMC4xLDBjMS4xLDAuNCwyLjEsMC43LDMuMiwxLjFjMCwwLDAuMSwwLDAuMSwwYy0wLjEsMC40LTAuMywwLjctMC40LDEuMWMtMC4yLDAuOC0wLjQsMS42LTAuMywyLjRjMCwwLjUsMC4xLDEsMC4yLDEuNVxuICAgICAgICAgICAgICAgICAgICBjMC4yLDEsMC40LDIuMSwwLjYsMy4xYzAuMSwwLjcsMC4yLDEuMywwLjIsMmMwLDAuMywwLDAuNS0wLjEsMC44YzAsMC40LTAuMiwwLjctMC41LDFjLTAuNCwwLjUtMSwwLjktMS41LDEuM1xuICAgICAgICAgICAgICAgICAgICBjLTAuOCwwLjUtMS43LDAuOS0yLjYsMS4zYy0wLjksMC40LTEuNywwLjgtMi41LDEuNGMwLDAtMC4xLDAuMS0wLjEsMEM5LDE3LjksOC4xLDE3LjQsNywxN2MtMC44LTAuNC0xLjctMC44LTIuNC0xLjJcbiAgICAgICAgICAgICAgICAgICAgYy0wLjUtMC4zLTAuOS0wLjctMS4zLTEuMWMtMC40LTAuNC0wLjUtMC45LTAuNi0xLjRjMC0wLjcsMC0xLjMsMC4xLTJDMywxMCwzLjMsOC44LDMuNiw3LjZDMy43LDcsMy44LDYuNCwzLjgsNS44XG4gICAgICAgICAgICAgICAgICAgIEMzLjgsNC44LDMuNSwzLjgsMy4xLDIuOEMzLjEsMi44LDMuMSwyLjgsMy4xLDIuOHpcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+OyAgICAgICAgICAgICAgICBcblxuaWNvbnMubm90aWNlID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIiM4QjI0OUNcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzRfXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xX1wiPlxuXHQgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfM19cIiBjbGFzc05hbWU9XCJzdDBcIiBkPVwiTTEwLDIwQzQuNSwyMCwwLDE1LjUsMCwxMEMwLDQuNSw0LjUsMCwxMCwwYzUuNSwwLDEwLDQuNSwxMCwxMEMyMCwxNS41LDE1LjUsMjAsMTAsMjB6IE0xMCwxXG5cdFx0ICAgICAgICAgICAgICAgICAgICBDNSwxLDEsNSwxLDEwczQuMSw5LDksOXM5LTQuMSw5LTlTMTUsMSwxMCwxelwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xMF9cIiBjbGFzc05hbWU9XCJzdDBcIiBkPVwiTTExLjcsNC40QzExLjcsNS4zLDExLDYsMTAsNkM5LDYsOC4zLDUuMyw4LjMsNC40QzguMywzLjUsOSwyLjcsMTAsMi43XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIEMxMSwyLjcsMTEuNywzLjUsMTEuNyw0LjR6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF85X1wiIHg9XCI4LjhcIiB5PVwiNy4xXCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCIyLjVcIiBoZWlnaHQ9XCI5LjZcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+O1xuXG5cbmljb25zLnByb2dyZXNzQmFyID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIiM4QjI0OUNcIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF80X1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzJfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF81X1wiIGNsYXNzTmFtZT1cInN0MFwiIGQ9XCJNMjAsMy45SDBWMGgyMFYzLjl6IE0wLjUsMy40aDE5VjAuNWgtMTlWMy40elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzNfXCIgeD1cIjAuOVwiIHk9XCIwLjlcIiBjbGFzc05hbWU9XCJzdDBcIiB3aWR0aD1cIjE2LjZcIiBoZWlnaHQ9XCIyLjFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzlfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzExX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMTJfXCIgY2xhc3NOYW1lPVwic3QwXCIgZD1cIk0yMCw5LjNIMFY1LjRoMjBWOS4zeiBNMC41LDguOGgxOVY1LjloLTE5VjguOHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xMF9cIiB4PVwiMC45XCIgeT1cIjYuM1wiIGNsYXNzTmFtZT1cInN0MFwiIHdpZHRoPVwiMTAuMlwiIGhlaWdodD1cIjIuMVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMTVfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzE3X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMThfXCIgY2xhc3NOYW1lPVwic3QwXCIgZD1cIk0yMCwxNC42SDB2LTMuOWgyMFYxNC42eiBNMC41LDE0LjFoMTl2LTIuOWgtMTlWMTQuMXpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xNl9cIiB4PVwiMC45XCIgeT1cIjExLjZcIiBjbGFzc05hbWU9XCJzdDBcIiB3aWR0aD1cIjE0LjRcIiBoZWlnaHQ9XCIyLjFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzIxX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8yM19cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzI0X1wiIGNsYXNzTmFtZT1cInN0MFwiIGQ9XCJNMjAsMjBIMHYtMy45aDIwVjIweiBNMC41LDE5LjVoMTl2LTIuOWgtMTlWMTkuNXpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8yMl9cIiB4PVwiMC45XCIgeT1cIjE3XCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCIxNi42XCIgaGVpZ2h0PVwiMi4xXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLnByaWNpbmdUYWJsZSA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLXByaWNpbmctdGFibGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIi00NjkgMjcxIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8zNF9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNLTQ1NS42LDI5MWgtNi44di0yMGg2LjhWMjkxelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMl9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzMxX1wiIGNsYXNzPVwic3QwXCIgZD1cIk0tNDYyLjgsMjg5aC01LjlWMjczaDUuOVYyODl6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8zX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMjhfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTS00NDkuMywyODloLTUuOVYyNzNoNS45VjI4OXpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzI1X1wiIGNsYXNzPVwic3QxXCIgZD1cIk0tNDY0LjQsMjg3LjVoLTIuN2MtMC4zLDAtMC41LTAuMi0wLjUtMC41bDAsMGMwLTAuMywwLjItMC41LDAuNS0wLjVoMi43XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAuMywwLDAuNSwwLjIsMC41LDAuNWwwLDBDLTQ2My45LDI4Ny4zLTQ2NC4xLDI4Ny41LTQ2NC40LDI4Ny41elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMjZfXCIgY2xhc3M9XCJzdDFcIiBkPVwiTS00NTcuNywyODcuNWgtMi42Yy0wLjMsMC0wLjUtMC4yLTAuNS0wLjVsMCwwYzAtMC4zLDAuMi0wLjUsMC41LTAuNWgyLjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC4zLDAsMC41LDAuMiwwLjUsMC41bDAsMEMtNDU3LjEsMjg3LjMtNDU3LjQsMjg3LjUtNDU3LjcsMjg3LjV6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yN19cIiBjbGFzcz1cInN0MVwiIGQ9XCJNLTQ1MSwyODcuNWgtMi43Yy0wLjMsMC0wLjUtMC4yLTAuNS0wLjVsMCwwYzAtMC4zLDAuMi0wLjUsMC41LTAuNWgyLjdjMC4zLDAsMC41LDAuMiwwLjUsMC41XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbDAsMEMtNDUwLjQsMjg3LjMtNDUwLjcsMjg3LjUtNDUxLDI4Ny41elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwic3QxXCIgZD1cIk0tNDY2LjEsMjgzLjN2LTFjLTAuNiwwLTEuMi0wLjItMS41LTAuNGwwLjItMC43YzAuNCwwLjIsMC45LDAuNCwxLjQsMC40YzAuNywwLDEuMi0wLjQsMS4yLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAtMC41LTAuNC0wLjktMS4xLTEuMmMtMS0wLjQtMS42LTAuOS0xLjYtMS43YzAtMC44LDAuNi0xLjQsMS41LTEuNnYtMWgwLjZ2MWMwLjYsMCwxLDAuMiwxLjMsMC4zbC0wLjIsMC43XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC4yLTAuMS0wLjYtMC4zLTEuMi0wLjNjLTAuOCwwLTEsMC41LTEsMC45YzAsMC41LDAuNCwwLjgsMS4yLDEuMWMxLDAuNCwxLjUsMC45LDEuNSwxLjhjMCwwLjgtMC41LDEuNS0xLjYsMS43djFILTQ2Ni4xelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwic3QxXCIgZD1cIk0tNDU5LjMsMjgyLjN2LTFjLTAuNiwwLTEuMi0wLjItMS41LTAuNGwwLjItMC43YzAuNCwwLjIsMC45LDAuNCwxLjQsMC40YzAuNywwLDEuMi0wLjQsMS4yLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAtMC41LTAuNC0wLjktMS4xLTEuMmMtMS0wLjQtMS42LTAuOS0xLjYtMS43YzAtMC44LDAuNi0xLjQsMS41LTEuNnYtMWgwLjZ2MWMwLjYsMCwxLDAuMiwxLjMsMC4zbC0wLjIsMC43XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC4yLTAuMS0wLjYtMC4zLTEuMi0wLjNjLTAuOCwwLTEsMC41LTEsMC45YzAsMC41LDAuNCwwLjgsMS4yLDEuMWMxLDAuNCwxLjUsMC45LDEuNSwxLjhjMCwwLjgtMC41LDEuNS0xLjYsMS43djFILTQ1OS4zelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwic3QxXCIgZD1cIk0tNDUyLjYsMjgzLjN2LTFjLTAuNiwwLTEuMi0wLjItMS41LTAuNGwwLjItMC43YzAuNCwwLjIsMC45LDAuNCwxLjQsMC40YzAuNywwLDEuMi0wLjQsMS4yLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAtMC41LTAuNC0wLjktMS4xLTEuMmMtMS0wLjQtMS42LTAuOS0xLjYtMS43YzAtMC44LDAuNi0xLjQsMS41LTEuNnYtMWgwLjZ2MWMwLjYsMCwxLDAuMiwxLjMsMC4zbC0wLjIsMC43XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC4yLTAuMS0wLjYtMC4zLTEuMi0wLjNjLTAuOCwwLTEsMC41LTEsMC45YzAsMC41LDAuNCwwLjgsMS4yLDEuMWMxLDAuNCwxLjUsMC45LDEuNSwxLjhjMCwwLjgtMC41LDEuNS0xLjYsMS43djFILTQ1Mi42elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cblxuaWNvbnMucHJpY2luZ0xpc3QgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2Z1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIiMzQzFBNUJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjMuM1wiIGN5PVwiMi42XCIgcj1cIjIuNlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0ICB4PVwiNy4xXCIgeT1cIjEuNFwiIGNsYXNzTmFtZT1cInN0MFwiIHdpZHRoPVwiOS44XCIgaGVpZ2h0PVwiMC44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgIHg9XCIxNy43XCIgeT1cIjEuNFwiIGNsYXNzTmFtZT1cInN0MFwiIHdpZHRoPVwiMi4zXCIgaGVpZ2h0PVwiMC44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgIHg9XCI3LjFcIiB5PVwiMy4xXCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCIxMi45XCIgaGVpZ2h0PVwiMC44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSAgY2xhc3NOYW1lPVwic3QwXCIgY3g9XCIzLjNcIiBjeT1cIjkuN1wiIHI9XCIyLjZcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCAgeD1cIjcuMVwiIHk9XCI4LjlcIiBjbGFzc05hbWU9XCJzdDBcIiB3aWR0aD1cIjkuOFwiIGhlaWdodD1cIjAuOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIxNy43XCIgeT1cIjguOVwiIGNsYXNzTmFtZT1cInN0MFwiIHdpZHRoPVwiMi4zXCIgaGVpZ2h0PVwiMC44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgIHg9XCI3LjFcIiB5PVwiMTAuNVwiIGNsYXNzTmFtZT1cInN0MFwiIHdpZHRoPVwiMTIuOVwiIGhlaWdodD1cIjAuOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgIGNsYXNzTmFtZT1cInN0MFwiIGN4PVwiMy4zXCIgY3k9XCIxNy40XCIgcj1cIjIuNlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0ICB4PVwiNy4xXCIgeT1cIjE2LjNcIiBjbGFzc05hbWU9XCJzdDBcIiB3aWR0aD1cIjkuOFwiIGhlaWdodD1cIjAuOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0ICB4PVwiMTcuN1wiIHk9XCIxNi4zXCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCIyLjNcIiBoZWlnaHQ9XCIwLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCAgeD1cIjcuMVwiIHk9XCIxNy45XCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCIxMi45XCIgaGVpZ2h0PVwiMC44XCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLnNvY2lhbFNoYXJlID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCIjM0MxQTVCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzdfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTE2LDEyLjhjLTAuOSwwLTEuOCwwLjQtMi4zLDFsLTYuNC0zLjdjMC0wLjEsMC0wLjEsMC0wLjJjMC0wLjEsMC0wLjIsMC0wLjNsNi4zLTMuNlxuICAgICAgICAgICAgICAgICAgICAgICAgQzE0LjEsNi44LDE1LDcuMywxNiw3LjNjMS43LDAsMy4yLTEuNCwzLjItMy4yQzE5LjEsMi40LDE3LjcsMSwxNiwxcy0zLjIsMS40LTMuMiwzLjJjMCwwLjMsMCwwLjUsMC4xLDAuOEw2LjcsOC40XG4gICAgICAgICAgICAgICAgICAgICAgICBDNi4yLDcuNSw1LjIsNi44LDQuMSw2LjhjLTEuNywwLTMuMiwxLjQtMy4yLDMuMmMwLDEuNywxLjQsMy4yLDMuMiwzLjJjMS4yLDAsMi4yLTAuNywyLjctMS42TDEzLDE1Yy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOVxuICAgICAgICAgICAgICAgICAgICAgICAgYzAsMS43LDEuNCwzLjIsMy4yLDMuMnMzLjItMS40LDMuMi0zLjJDMTkuMSwxNC4yLDE3LjcsMTIuOCwxNiwxMi44elwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+O1xuXG5pY29ucy5zb2NpYWxsaW5rcyA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLXNvY2lhbGxpbmtzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiIzNDMUE1QlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xX1wiIHg9XCIwLjVcIiB5PVwiMC41XCIgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMTBfXCIgeD1cIjEwLjVcIiB5PVwiMC41XCIgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMTJfXCIgeD1cIjAuNVwiIHk9XCIxMC41XCIgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMTFfXCIgeD1cIjEwLjVcIiB5PVwiMTAuNVwiIHdpZHRoPVwiOVwiIGhlaWdodD1cIjlcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzdfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF83MF9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTEuMiwxNS4xYzAtMC42LDAtMS4xLDAtMS41YzAtMC40LDAtMC43LDAuMi0xYzAuMi0wLjYsMC43LTEsMS4zLTEuMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC4yLTAuMSwwLjUtMC4xLDAuOC0wLjFjMSwwLDIsMCwyLjksMGMwLjMsMCwwLjcsMCwxLDAuMWMwLjYsMC4yLDEsMC42LDEuMiwxLjJjMC4xLDAuMywwLjIsMC41LDAuMiwwLjhjMCwwLjQsMCwwLjgsMCwxLjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAsMC42LDAsMS4xLDAsMS43YzAsMC4zLDAsMC42LTAuMSwxYy0wLjIsMC43LTAuNywxLjItMS40LDEuNGMtMC4yLDAuMS0wLjUsMC4xLTAuNywwLjFjLTEsMC0xLjksMC0yLjksMGMtMC4zLDAtMC43LDAtMS0wLjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjctMC4yLTEuMS0wLjctMS4zLTEuNGMtMC4xLTAuMi0wLjEtMC41LTAuMS0wLjdDMTEuMiwxNiwxMS4yLDE1LjUsMTEuMiwxNS4xeiBNMTguMSwxNUMxOC4xLDE1LDE4LjEsMTUsMTguMSwxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC0wLjMsMC0wLjcsMC0xYzAtMC4zLDAtMC43LTAuMS0xYy0wLjEtMC4zLTAuMi0wLjUtMC40LTAuN2MtMC4yLTAuMi0wLjQtMC4zLTAuNy0wLjNjLTAuNC0wLjEtMC44LTAuMS0xLjEtMC4xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC42LDAtMS4xLDAtMS43LDBjLTAuMywwLTAuNywwLTEsMC4xYy0wLjMsMC4xLTAuNSwwLjItMC43LDAuNEMxMi4xLDEyLjUsMTIsMTIuOCwxMiwxM2MtMC4xLDAuNC0wLjEsMC43LTAuMSwxLjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAsMC42LDAsMS4yLDAsMS44YzAsMC40LDAsMC43LDAuMSwxLjFjMC4xLDAuMywwLjIsMC41LDAuNCwwLjdjMC4yLDAuMiwwLjUsMC4zLDAuNywwLjNjMC40LDAuMSwwLjcsMC4xLDEuMSwwLjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAuNiwwLDEuMiwwLDEuNywwYzAuMywwLDAuNywwLDEtMC4xYzAuMy0wLjEsMC41LTAuMiwwLjctMC40YzAuMi0wLjIsMC4zLTAuNCwwLjMtMC43YzAtMC4zLDAuMS0wLjYsMC4xLTAuOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMTguMSwxNS43LDE4LjEsMTUuNCwxOC4xLDE1elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzYzX1wiIGNsYXNzPVwic3QwXCIgZD1cIk0xNi45LDE1YzAsMS0wLjgsMi0yLDJjLTEsMC0yLTAuOC0yLTJjMC0xLDAuOC0xLjksMi0yQzE2LjEsMTMsMTcsMTQsMTYuOSwxNXogTTE1LDEzLjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjcsMC0xLjMsMC42LTEuMywxLjNjMCwwLjcsMC42LDEuMywxLjMsMS4zYzAuNywwLDEuMy0wLjYsMS4zLTEuM0MxNi4zLDE0LjMsMTUuNywxMy43LDE1LDEzLjd6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfNjJfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTE3LjUsMTNjMCwwLjItMC4yLDAuNS0wLjUsMC41Yy0wLjIsMC0wLjUtMC4yLTAuNS0wLjVjMC0wLjIsMC4yLTAuNSwwLjUtMC40XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMxNy4zLDEyLjUsMTcuNSwxMi43LDE3LjUsMTN6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF80X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMzVfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTEzLjUsNi43Yy0wLjgsMC0xLjMtMC42LTEuNS0xLjFjMC4yLDAsMC41LDAsMC43LDBjLTAuNC0wLjEtMC43LTAuMy0wLjktMC42XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC4yLTAuMy0wLjMtMC42LTAuMy0xYzAuMSwwLDAuMiwwLjEsMC4zLDAuMWMwLjEsMCwwLjIsMC4xLDAuNCwwLjFDMTEuOCw0LDExLjUsMy42LDExLjUsM2MwLTAuMywwLjEtMC42LDAuMi0wLjlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAuOCwxLDEuOSwxLjUsMy4yLDEuNmMwLTAuMSwwLTAuMSwwLTAuMmMwLTAuNiwwLjItMSwwLjYtMS40YzAuNi0wLjUsMS41LTAuNCwyLjEsMC4xYzAsMCwwLDAsMC4xLDBDMTgsMi4zLDE4LjMsMi4yLDE4LjYsMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMCwwLDAsMCwwLDBjLTAuMSwwLjItMC4xLDAuMy0wLjMsMC41Yy0wLjEsMC4xLTAuMywwLjMtMC40LDAuNGMwLjMsMCwwLjYtMC4xLDAuOS0wLjJjMCwwLDAsMCwwLDBjLTAuMiwwLjMtMC40LDAuNS0wLjcsMC43XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLDAsMCwwLDAsMC4xYzAsMC43LTAuMSwxLjQtMC40LDJjLTAuMywwLjctMC44LDEuMy0xLjQsMS44Yy0wLjUsMC4zLTEsMC42LTEuNiwwLjdjLTAuNiwwLjEtMS4zLDAuMi0xLjksMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuNS0wLjEtMS0wLjMtMS41LTAuNmMwLDAsMCwwLDAsMGMwLjYsMC4xLDEuMiwwLDEuOC0wLjNDMTMuMiw3LDEzLjMsNi45LDEzLjUsNi43elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfM19cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzM3X1wiIGNsYXNzPVwic3QwXCIgZD1cIk00LjIsNS4zYy0wLjQsMC0wLjgsMC0xLjIsMEMzLDQuOSwzLDQuNCwzLDRjMC40LDAsMC44LDAsMS4yLDBjMCwwLDAsMCwwLTAuMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC0wLjQsMC0wLjcsMC0xLjFjMC0wLjQsMC4xLTAuNywwLjMtMUM0LjcsMS40LDUsMS4zLDUuNCwxLjJjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjFjMC4zLDAsMC42LDAsMC45LDBjMCwwLDAsMCwwLDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzcsMS42LDcsMiw3LDIuNGMwLDAsMCwwLDAsMGMwLDAsMCwwLTAuMSwwYy0wLjMsMC0wLjUsMC0wLjgsMGMtMC4xLDAtMC4xLDAtMC4yLDBDNS44LDIuNSw1LjYsMi42LDUuNiwyLjljMCwwLjEsMCwwLjIsMCwwLjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAsMC4yLDAsMC41LDAsMC43YzAsMCwwLDAsMCwwLjFjMC41LDAsMC45LDAsMS40LDBDNi45LDQuNCw2LjgsNC45LDYuOCw1LjNjLTAuNCwwLTAuOCwwLTEuMiwwYzAsMS4yLDAsMi40LDAsMy42XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC41LDAtMSwwLTEuNCwwQzQuMiw3LjcsNC4yLDYuNSw0LjIsNS4zelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfNV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzMzX1wiIGNsYXNzPVwic3QwXCIgZD1cIk04LjYsMTguNkM4LjYsMTguNiw4LjYsMTguNiw4LjYsMTguNmMtMC41LDAtMSwwLTEuNCwwYzAsMCwwLDAsMCwwYzAsMCwwLDAsMCwwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLTAuOCwwLTEuNiwwLTIuNGMwLTAuMiwwLTAuNCwwLTAuNmMwLTAuMS0wLjEtMC4yLTAuMS0wLjNDNi44LDE1LjEsNi43LDE1LDYuNSwxNWMtMC4yLDAtMC4zLDAtMC41LDBjLTAuMiwwLjEtMC40LDAuMi0wLjUsMC40XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC4xLDAuMS0wLjEsMC4zLTAuMSwwLjRjMCwwLjEsMCwwLjMsMCwwLjRjMCwwLjgsMCwxLjUsMCwyLjNjMCwwLDAsMCwwLDBjLTAuNSwwLTEsMC0xLjUsMGMwLTEuNiwwLTMuMiwwLTQuOGMwLjUsMCwwLjksMCwxLjQsMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMCwwLjIsMCwwLjQsMCwwLjZjMCwwLDAsMCwwLDBjMCwwLDAsMCwwLDBDNS42LDE0LjIsNS44LDE0LDYsMTMuOGMwLjItMC4xLDAuNS0wLjIsMC44LTAuMmMwLjMsMCwwLjUsMCwwLjcsMC4xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjQsMC4xLDAuNywwLjQsMC44LDAuOGMwLjEsMC4yLDAuMSwwLjUsMC4xLDAuN2MwLDAuMSwwLDAuMywwLDAuNGMwLDAsMCwwLDAsMEM4LjYsMTYuNyw4LjYsMTcuNiw4LjYsMTguNnpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8zMl9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMi4zLDExLjRjMCwwLDAuMSwwLDAuMSwwYzAuNCwwLjEsMC43LDAuNCwwLjcsMC44YzAsMC40LTAuMywwLjgtMC43LDAuOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuNSwwLjEtMC45LTAuMi0xLTAuN2MwLDAsMCwwLDAtMC4xYzAsMCwwLTAuMSwwLTAuMWMwLDAsMCwwLDAsMGMwLTAuMywwLjMtMC42LDAuNi0wLjdjMC4xLDAsMC4xLDAsMC4yLDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzIuMiwxMS40LDIuMywxMS40LDIuMywxMS40elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzMwX1wiIGNsYXNzPVwic3QwXCIgZD1cIk0zLDE4LjZjLTAuNSwwLTEsMC0xLjUsMGMwLTEuNiwwLTMuMiwwLTQuOGMwLjUsMCwxLDAsMS41LDBDMywxNS40LDMsMTcsMywxOC42elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+OyAgICAgICAgICAgICAgICAgICAgXG5cbmljb25zLnRhYnMgPSA8c3ZnIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLXRhYnNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzJfXCI+XG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMV9cIiB4PVwiMS4yXCIgeT1cIjQuOVwiIHdpZHRoPVwiMTcuNlwiIGhlaWdodD1cIjE0XCIvPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzRfXCIgeD1cIjEuMlwiIHk9XCIxLjNcIiB3aWR0aD1cIjguMlwiIGhlaWdodD1cIjMuNlwiLz5cbiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8zX1wiIHg9XCIxMC42XCIgeT1cIjEuM1wiIHdpZHRoPVwiOC4yXCIgaGVpZ2h0PVwiMi41XCIvPlxuICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLnNoYXBlZGl2aXZlciA9IDxzdmcgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctc2hhcGUtZGl2aXZlclwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfNl9cIiBkPVwiTTIwLDIwSDBWMGgyMFYyMHogTTEsMTloMThWMUgxVjE5elwiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzEwX1wiIGQ9XCJNMCwxMC44YzAsMCw2LjMtMy4zLDEwLjYsMS4xYzUuMyw1LjUsOS40LTIsOS40LTJWMjBMMCwyMFYxMC44elwiLz5cbiAgICAgICAgICAgICA8L3N2Zz47ICAgICAgICAgICAgIFxuXG5pY29ucy5jb3VudGVyID0gPHN2ZyBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1zaGFwZS1jb3VudGVyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF80X1wiIHg9XCIxLjNcIiB5PVwiMVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjE4XCIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfOF9cIiB4PVwiMTAuN1wiIHk9XCIxXCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiMThcIi8+XG4gICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8yM19cIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yNV9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNOC40LDEwYzAsMC43LTAuMSwxLjMtMC4yLDEuOGMtMC4xLDAuNS0wLjMsMS0wLjUsMS4zYy0wLjIsMC4zLTAuNiwwLjYtMSwwLjhcbiAgICAgICAgICAgICAgICAgICAgICAgIGMtMC40LDAuMi0wLjksMC4zLTEuNCwwLjNjLTAuNiwwLTEtMC4xLTEuNC0wLjNjLTAuNC0wLjItMC43LTAuNC0xLTAuOGMtMC4yLTAuNC0wLjQtMC44LTAuNS0xLjNjLTAuMS0wLjUtMC4yLTEuMS0wLjItMS44XG4gICAgICAgICAgICAgICAgICAgICAgICBjMC0wLjcsMC4xLTEuMywwLjItMS44YzAuMS0wLjUsMC4zLTAuOSwwLjUtMS4zYzAuMy0wLjQsMC42LTAuNiwxLTAuOGMwLjQtMC4yLDAuOS0wLjMsMS40LTAuM2MwLjYsMCwxLjEsMC4xLDEuNSwwLjNcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwLjcsMC41LDEsMC44QzgsNy4yLDguMiw3LjcsOC4zLDguMkM4LjQsOC43LDguNCw5LjMsOC40LDEweiBNNi40LDEwYzAtMS0wLjEtMS43LTAuMi0yLjFDNiw3LjUsNS43LDcuMyw1LjMsNy4zXG4gICAgICAgICAgICAgICAgICAgICAgICBjLTAuNCwwLTAuNywwLjItMC44LDAuNkM0LjMsOC4zLDQuMyw5LDQuMywxMGMwLDEsMC4xLDEuNywwLjIsMi4xYzAuMiwwLjQsMC40LDAuNiwwLjgsMC42czAuNy0wLjIsMC44LTAuNlxuICAgICAgICAgICAgICAgICAgICAgICAgQzYuMywxMS43LDYuNCwxMSw2LjQsMTB6XCIvPlxuICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzNfXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfOV9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTcuNiw3LjZMMTQuMiwxNEgxMmwzLjYtNi41aC0zLjhWNmg1LjlWNy42elwiLz5cbiAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yNl9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTUuMSwyLjFjLTAuMiwwLjQtMC40LDAuNS0wLjgsMC41Yy0wLjQsMC0wLjYtMC4xLTAuOC0wLjVDMTMuNCwxLjksMTMuMywxLDEzLjMsMWgtMS45XG4gICAgICAgICAgICAgICAgICAgIGMwLDAsMC4xLDAuNiwwLjEsMC45YzAuMSwwLjUsMC4zLDAuOCwwLjUsMS4yYzAuMiwwLjMsMC41LDAuNiwwLjksMC43QzEzLjMsMy45LDEzLjgsNCwxNC4zLDRjMC41LDAsMS0wLjEsMS40LTAuM1xuICAgICAgICAgICAgICAgICAgICBDMTYsMy42LDE2LjMsMy4zLDE2LjUsM2MwLjItMC4zLDAuNC0wLjYsMC41LTEuMUMxNy4xLDEuNiwxNy4xLDEsMTcuMiwxaC0xLjlDMTUuMiwxLDE1LjIsMS45LDE1LjEsMi4xelwiLz5cbiAgICAgICAgICAgICA8L3N2Zz47ICBcblxuaWNvbnMudGVzdGltb25pYWwgPSA8c3ZnIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLXRlc3RpbW9uaWFsXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xX1wiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzJfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTE3LjUsMTQuMUgyLjVjLTEuMywwLTIuMy0xLTIuMy0yLjNWNi4zQzAuMiw1LDEuMyw0LDIuNSw0aDE0LjljMS4zLDAsMi4zLDEsMi4zLDIuM3Y1LjZcbiAgICAgICAgICAgICAgICAgICAgICAgIEMxOS44LDEzLjEsMTguNywxNC4xLDE3LjUsMTQuMXpcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfM19cIiBjbGFzcz1cInN0MFwiIHBvaW50cz1cIjEuOCwxMyA0LjEsMTcgNi40LDEzICAgICBcIi8+XG4gICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgIDwvc3ZnPjtcblxuXG5pY29ucy51cGxvYWQgPSA8c3ZnIHdpZHRoPSc1MHB4JyBoZWlnaHQ9JzUwcHgnIHZpZXdCb3g9JzAgMCAyMCAyMCcgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmdcIiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjksNGMtMSwwLTIsMC0zLDBjLTAuMiwwLTAuMywwLTAuMy0wLjNjLTAuMS0wLjktMS0xLjUtMS44LTEuNWMtMS45LDAtMy44LDAtNS43LDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuOCwwLTEuNiwwLjYtMS43LDEuNUM1LjQsMy45LDUuMyw0LDUsNGMtMSwwLTEuOSwwLTIuOSwwQzEuMSw0LDAuMSw1LDAuMSw2YzAsMy4yLDAsNi41LDAsOS43YzAsMC4yLDAuMSwwLjUsMC4yLDAuN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjQsMC45LDEuMiwxLjQsMi4yLDEuNGMyLjUsMCw1LjEsMCw3LjYsMGMyLjUsMCw0LjksMCw3LjQsMGMwLjMsMCwwLjUsMCwwLjgtMC4xYzAuOS0wLjIsMS43LTEuMSwxLjgtMmMwLTMuMywwLTYuNSwwLTkuOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMxOS45LDUsMTguOSw0LDE3LjksNHogTTE5LDE1LjNjMCwwLjQtMC4xLDAuOS0wLjUsMS4yYy0wLjMsMC4zLTAuNywwLjMtMS4xLDAuM2MtMi41LDAtNC45LDAtNy40LDBjLTIuNSwwLTQuOSwwLTcuNCwwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjQsMC0wLjksMC0xLjItMC40Yy0wLjItMC4yLTAuNC0wLjUtMC40LTAuOWMwLTMuMSwwLTYuMywwLTkuNEMxLjEsNS41LDEuNiw1LDIuMyw1YzEuMSwwLDIuMywwLDMuNCwwYzAuNiwwLDAuOC0wLjIsMC44LTAuOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLDAsMC0wLjEsMC0wLjFDNi40LDMuMyw2LjgsMy4xLDcuMywzLjFjMS44LDAsMy44LDAsNS42LDBjMC42LDAsMS4xLDAuMywxLjEsMWMwLDAuMSwwLDAuMSwwLDAuMkMxNCw0LjgsMTQsNSwxNC41LDVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMS4xLDAsMi4xLDAsMy4yLDBjMC45LDAsMS40LDAuNSwxLjQsMS41QzE5LjEsOS40LDE5LDEyLjMsMTksMTUuM3pcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLDYuMmMtMi42LDAtNC43LDIuMS00LjcsNC42YzAsMi42LDIuMSw0LjcsNC42LDQuN2MyLjYsMCw0LjctMi4xLDQuNy00LjZDMTQuNyw4LjMsMTIuNiw2LjIsMTAsNi4yelxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNMTAsMTQuNWMtMS45LDAtMy42LTEuNC0zLjYtMy42YzAtMiwxLjYtMy42LDMuNi0zLjZjMiwwLDMuNiwxLjUsMy42LDMuN0MxMy42LDEzLDEyLDE0LjUsMTAsMTQuNXpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi43LDYuMmMtMC41LDAtMC45LDAuNC0wLjksMC45YzAsMC41LDAuNCwwLjksMC45LDAuOWMwLjUsMCwwLjktMC41LDAuOS0wLjlDMTcuNyw2LjYsMTcuMiw2LjIsMTYuNyw2LjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLnNlY3Rpb25IZWFkZXIgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiIzNDMUE1QlwiIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzJfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8zX1wiIGQ9XCJNMTcsMi4ydjE1LjZoLTQuM3YtNi4zSDcuNHY2LjNIM1YyLjJoNC4zVjhoNS4zVjIuMkgxN3pcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjtcblxuaWNvbnMuc2VydmljZXMgPSA8c3ZnIHdpZHRoPScyMHB4JyBoZWlnaHQ9JzIwcHgnIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLXNlcnZpY2VzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9XCJYTUxJRF8xX1wiIGN4PVwiNC41XCIgY3k9XCI1XCIgcj1cIjMuNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9XCJYTUxJRF85X1wiIGN4PVwiMTUuNVwiIGN5PVwiNVwiIHI9XCIzLjRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzJfXCIgeT1cIjEwXCIgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiMS43XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF84X1wiIHg9XCIxMVwiIHk9XCI5LjhcIiB3aWR0aD1cIjlcIiBoZWlnaHQ9XCIxLjdcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzRfXCIgeT1cIjEzLjNcIiB3aWR0aD1cIjlcIiBoZWlnaHQ9XCI2LjdcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzdfXCIgeD1cIjExXCIgeT1cIjEzLjFcIiB3aWR0aD1cIjlcIiBoZWlnaHQ9XCI2LjlcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+O1xuXG5cbmljb25zLmVtcHR5U3BhY2VzID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG5cbiAgICA8cmVjdCBjbGFzc05hbWU9XCJjbHMtMVwiIHg9XCIxLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIvPlxuPC9zdmc+XG5cblxuaWNvbnMubGF5b3V0cyA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPScjMzMzMzMzJyAgZD1cIk0wLjQsMTUuMVYwLjdjMC0wLjIsMC4xLTAuMywwLjMtMC4zaDguOGMwLjIsMCwwLjMsMC4xLDAuMywwLjN2MTQuNGMwLDAuMi0wLjEsMC4zLTAuMywwLjNIMC43XG4gICAgICAgICAgICAgICAgICAgIEMwLjYsMTUuNCwwLjQsMTUuMywwLjQsMTUuMXpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPScjMzMzMzMzJyBkPVwiTTEwLjIsNy4yVjAuN2MwLTAuMiwwLjEtMC4zLDAuMy0wLjNoOC44YzAuMiwwLDAuMywwLjEsMC4zLDAuM3Y2LjVjMCwwLjItMC4xLDAuMy0wLjMsMC4zaC04LjhcbiAgICAgICAgICAgICAgICAgICAgQzEwLjMsNy41LDEwLjIsNy4zLDEwLjIsNy4yelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9JyMzMzMzMzMnIGQ9XCJNMTAuMywxNS4xVjguMmMwLTAuMiwwLjEtMC4zLDAuMy0wLjNoMy44YzAuMiwwLDAuMywwLjEsMC4zLDAuM3Y2LjljMCwwLjItMC4xLDAuMy0wLjMsMC4zaC0zLjhcbiAgICAgICAgICAgICAgICAgICAgQzEwLjQsMTUuNCwxMC4zLDE1LjMsMTAuMywxNS4xelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9JyMzMzMzMzMnIGQ9XCJNMC44LDE1LjhoMTguNGMwLjIsMCwwLjMsMC4xLDAuMywwLjN2My4zYzAsMC4yLTAuMSwwLjMtMC4zLDAuM0gwLjhjLTAuMiwwLTAuMy0wLjEtMC4zLTAuM1xuICAgICAgICAgICAgICAgICAgICB2LTMuM0MwLjUsMTUuOSwwLjcsMTUuOCwwLjgsMTUuOHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPScjMzMzMzMzJyBkPVwiTTE1LjIsMTUuMVY4LjJjMC0wLjIsMC4xLTAuMywwLjMtMC4zaDMuN2MwLjIsMCwwLjMsMC4xLDAuMywwLjN2Ni45YzAsMC4yLTAuMSwwLjMtMC4zLDAuM2gtMy43XG4gICAgICAgICAgICAgICAgICAgIEMxNS4zLDE1LjQsMTUuMiwxNS4zLDE1LjIsMTUuMXpcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+O1xuXG5pY29ucy5mbGlwWCA9IDxzdmcgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwibTExIDE4aDN2LTJoLTN6bTMtMTJoMnYtMmgtMnptLTE0LTJ2MTJjMCAxLjEuOSAyIDIgMmgzdi0yaC0zdi0xMmgzdi0yaC0zYy0xLjEgMC0yIC45LTIgMnptMTQtMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS03IDE4aDJ2LTIwaC0yem03LTRoMnYtMmgtMnptLTMtMTJoM3YtMmgtM3ptMyA4aDJ2LTRoLTJ6bTAgNmMxLjEgMCAyLS45IDItMmgtMnpcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMilcIiAvPjwvc3ZnPjtcblxuaWNvbnMuZmxpcFkgPSA8c3ZnIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIm0xMyAxNmgzdi0yaC0zem0zLTEyaDJ2LTJoLTJ6bS0xNC0ydjEyYzAgMS4xLjkgMiAyIDJoM3YtMmgtM3YtMTJoM3YtMmgtM2MtMS4xIDAtMiAuOS0yIDJ6bTE0LTJ2MmgyYzAtMS4xLS45LTItMi0yem0tNyAxOGgydi0yMGgtMnptNy00aDJ2LTJoLTJ6bS0zLTEyaDN2LTJoLTN6bTMgOGgydi00aC0yem0wIDZjMS4xIDAgMi0uOSAyLTJoLTJ6XCIgdHJhbnNmb3JtPVwibWF0cml4KDAgMSAtMSAwIDE4IDApXCIgLz48L3N2Zz47XG5cbiAgICBpY29ucy5lZGl0ID0nPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPjxQYXRoIGQ9XCJtMTEgNS45MTI1Yy0yLjc4NDM3NSAwLTUuMDE4NzUgMi4yNjg3NS01LjAxODc1IDUuMDE4NzUgMCAyLjc4NDM3NSAyLjI2ODc1IDUuMDE4NzUgNS4wMTg3NSA1LjAxODc1IDIuNzg0Mzc1IDAgNS4wMTg3NS0yLjI2ODc1IDUuMDE4NzUtNS4wMTg3NXMtMi4yMzQzNzUtNS4wMTg3NS01LjAxODc1LTUuMDE4NzV6bS4zNzgxMjUgNi4zMjUtMS4xMzQzNzUgMS4xMzQzNzUtMS4xMzQzNzUtMS4xMzQzNzUtMS4xLTEuMSAxLjEzNDM3NS0xLjEzNDM3NSAxLjEgMS4xIDIuNjEyNS0yLjYxMjUgMS4xMzQzNzUgMS4xMzQzNzV6bTkuNjU5Mzc1LTIuNzE1NjI1Yy0uNDQ2ODc1LS40MTI1LS42MTg3NS0xLjA2NTYyNS0uMzc4MTI1LTEuNjE1NjI1bC4yMDYyNS0uNTE1NjI1Yy4zNDM3NS0uNzkwNjI1LS4xMDMxMjUtMS42ODQzNzUtLjkyODEyNS0xLjkyNWwtLjU1LS4xMzc1Yy0uNTg0Mzc1LS4xNzE4NzUtLjk5Njg3NS0uNjg3NS0xLjAzMTI1LTEuMzA2MjV2LS41ODQzNzVjLS4wMzQzNzUtLjg1OTM3NS0uODI1LTEuNDc4MTI1LTEuNjUtMS4zNDA2MjVsLS41NS4xMDMxMjVjLS42MTg3NS4xMDMxMjUtMS4yMDMxMjUtLjE3MTg3NS0xLjQ3ODEyNS0uNzIxODc1bC0uMjc1LS40ODEyNWMtLjQxMjUtLjc1NjI1LTEuMzc1LS45NjI1LTIuMDYyNS0uNDgxMjVsLS40NDY4NzUuMzA5Mzc1Yy0uNDgxMjUuMzQzNzUtMS4xNjg3NS4zNDM3NS0xLjY1IDBsLS40NDY4NzUtLjM0Mzc1Yy0uNjg3NS0uNTE1NjI1LTEuNjg0Mzc1LS4yNzUtMi4wOTY4NzUuNDgxMjVsLS4yNzUuNDgxMjVjLS4zMDkzNzUuNTUtLjg5Mzc1LjgyNS0xLjUxMjUuNzIxODc1bC0uNTUtLjEwMzEyNWMtLjg1OTM3NS0uMTM3NS0xLjYxNTYyNS40ODEyNS0xLjY4NDM3NSAxLjM0MDYyNWwtLjAzNDM3NS41NWMtLjAzNDM3NS42MTg3NS0uNDQ2ODc1IDEuMTM0Mzc1LTEuMDMxMjUgMS4zMDYyNWwtLjU1LjE3MTg3NWMtLjgyNS4yNDA2MjUtMS4yNzE4NzUgMS4xMzQzNzUtLjkyODEyNSAxLjkyNWwuMjA2MjUuNTE1NjI1Yy4yNDA2MjUuNTUuMDY4NzUgMS4yMDMxMjUtLjM3ODEyNSAxLjYxNTYyNWwtLjQxMjUuMzc4MTI1Yy0uNjUzMTI1LjU1LS42NTMxMjUgMS41ODEyNSAwIDIuMTMxMjVsLjQxMjUuMzc4MTI1Yy40NDY4NzUuNDEyNS42MTg3NSAxLjA2NTYyNS4zNzgxMjUgMS42MTU2MjVsLS4yMDYyNS41MTU2MjVjLS4zNDM3NS43OTA2MjUuMTAzMTI1IDEuNjg0Mzc1LjkyODEyNSAxLjkyNWwuNTUuMTM3NWMuNTg0Mzc1LjE3MTg3NS45OTY4NzUuNjg3NSAxLjAzMTI1IDEuMzA2MjVsLjAzNDM3NS41NWMuMDM0Mzc1Ljg1OTM3NS44MjUgMS40NzgxMjUgMS42NSAxLjM0MDYyNWwuNTUtLjEwMzEyNWMuNjE4NzUtLjEwMzEyNSAxLjIwMzEyNS4xNzE4NzUgMS40NzgxMjUuNzIxODc1bC4yNzUuNDgxMjVjLjQxMjUuNzU2MjUgMS4zNzUuOTYyNSAyLjA2MjUuNDgxMjVsLjQ0Njg3NS0uMzA5Mzc1Yy40ODEyNS0uMzQzNzUgMS4xNjg3NS0uMzQzNzUgMS42NSAwbC40NDY4NzUuMzQzNzVjLjY4NzUuNTE1NjI1IDEuNjg0Mzc1LjI3NSAyLjA5Njg3NS0uNDgxMjVsLjI3NS0uNDgxMjVjLjMwOTM3NS0uNTUuODkzNzUtLjgyNSAxLjUxMjUtLjcyMTg3NWwuNTUuMTAzMTI1Yy44NTkzNzUuMTM3NSAxLjYxNTYyNS0uNDgxMjUgMS42ODQzNzUtMS4zNDA2MjVsLjAzNDM3NS0uNTVjLjAzNDM3NS0uNjE4NzUuNDQ2ODc1LTEuMTM0Mzc1IDEuMDMxMjUtMS4zMDYyNWwuNTUtLjEzNzVjLjgyNS0uMjQwNjI1IDEuMjcxODc1LTEuMTM0Mzc1LjkyODEyNS0xLjkyNWwtLjIwNjI1LS41MTU2MjVjLS4yNDA2MjUtLjU1LS4wNjg3NS0xLjIwMzEyNS4zNzgxMjUtMS42MTU2MjVsLjQxMjUtLjM3ODEyNWMuNjUzMTI1LS41NS42NTMxMjUtMS41ODEyNSAwLTIuMTMxMjV6bS0xMC4wMzc1IDguMzg3NWMtMy44NSAwLTYuOTQzNzUtMy4xMjgxMjUtNi45NDM3NS02Ljk0Mzc1IDAtMy44NSAzLjEyODEyNS02Ljk0Mzc1IDYuOTQzNzUtNi45NDM3NSAzLjg1IDAgNi45NDM3NSAzLjEyODEyNSA2Ljk0Mzc1IDYuOTQzNzVzLTMuMDkzNzUgNi45NDM3NS02Ljk0Mzc1IDYuOTQzNzV6XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEgMSlcIiAvPjwvc3ZnPjsnXG5cbmljb25zLmJsb2Nrc3BhcmVfcGxhY2Vob2xkZXIgPSA8c3ZnIHZpZXdCb3g9XCIwIDAgMzg0IDM4NFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICA8cGF0aCBkPVwiTTIwMy4zLDM4NGMtNy41LDAtMTUsMC0yMi41LDBjLTcuOS0xLjEtMTUuOC0xLjktMjMuNy0zLjNDNzguNywzNjYuNiwxNi40LDMwMy44LDMsMjI1LjRjLTEuMi03LjEtMi0xNC4zLTMtMjEuNCBjMC04LDAtMTYsMC0yNGMwLjItMSwwLjYtMS45LDAuNi0yLjljMS40LTE4LjgsNS43LTM2LjksMTIuNC01NC41YzAuNi0xLjUsMC42LTMuMywwLjktNC43YzEtMS41LDIuMy0yLjksMy00LjUgQzI2LDkzLjMsMzgsNzUuMiw1My40LDU5LjNDODIuNywyOSwxMTguMSwxMC4xLDE1OS42LDIuOWM3LjItMS4yLDE0LjYtMiwyMS45LTIuOWM3LjMsMCwxNC41LDAsMjEuOCwwYzEsMC4yLDEuOSwwLjQsMi45LDAuNiBjMTIuMywyLjEsMjUsMi44LDM2LjgsNi41Yzc1LjgsMjMuMywxMjIsNzQuMSwxMzguMSwxNTEuOWMxLjQsNi45LDIsMTQsMywyMS4xYzAsOCwwLDE2LDAsMjRjLTAuMiwxLTAuNSwxLjktMC42LDIuOSBjLTEuMyw4LjgtMi4xLDE3LjYtMy45LDI2LjNjLTE1LjcsNzUuMS03OC44LDEzNS41LTE1NC40LDE0Ny45QzIxNy44LDM4Mi4zLDIxMC41LDM4MywyMDMuMywzODR6IE0yMC44LDE0MC4zIGMtMjIuNSw2OC43LDEuNSwxNjIuNyw4NS4yLDIwOC44YzgwLjYsNDQuMywxNzguMywxOS4xLDIyOS4yLTQ5LjljLTMuNC0zLjItNi42LTYuNy0xMC4yLTkuOGMtMy45LTMuMy01LjUtNy01LjEtMTIuMSBjMC40LTUuNSwwLjItMTEsMC0xNi41Yy0wLjEtMi0wLjUtNC4yLTEuNC02LjFjLTUtMTAuMi05LjYtMjAuNi0xNS40LTMwLjRjLTctMTEuOC0xMC40LTI0LjEtOC45LTM3LjhjMC4yLTEuNi0wLjUtNC4yLTEuNi00LjggYy00LjktMi42LTguMy04LjEtMTQuNy03LjhjLTAuNSwwLTEsMC4yLTEuNSwwLjNjLTYuMSwxLjUtMTIuMSwzLjEtMTguMiw0LjRjLTEuNywwLjQtMy44LDAuNC01LjQtMC4zIGMtMTQuNi02LjEtMjkuMi0xMi4zLTQzLjctMTguOGMtMS45LTAuOS00LjEtMy40LTQuNC01LjRjLTIuNC0xNC40LTQuMi0yOC45LTYuMy00My40Yy0wLjQtMywwLjQtNS4zLDIuNS03LjQgYzUuOS01LjgsMTEuNi0xMS44LDE3LjYtMTcuNGMxLjYtMS41LDQuMS0yLjYsNi4yLTIuNmMxMi4xLTAuMiwyNC4yLTAuMSwzNi40LTAuMWMzLDAsNS4yLDEuMiw2LjksMy43YzMsNC42LDYsOS4yLDkuMiwxMy43IGMwLjksMS4zLDIuNiwyLjQsNC4xLDIuN2M2LDEuMiwxMiwyLjEsMTguMSwzLjFjNC43LDAuNyw5LjcsMi44LDE0LDEuN2MxMC40LTIuNSwyMC40LTYuNSwzMS40LTEwLjJjLTYuNy04LjktMTMtMTcuMy0xOS4zLTI1LjggYy01LDMuNC05LjMsNi40LTEzLjgsOS4xYy0xLjgsMS4xLTQuMywyLTYuMiwxLjZjLTE1LjgtMy4yLTMxLjgtNS4zLTQ2LjktMTEuMmMtMS43LTAuNy0zLjktMC43LTUuOC0wLjMgYy02LjMsMS40LTEyLjYsMy4yLTE4LjksNC42Yy0yLjEsMC41LTQuNSwwLjYtNi42LDBjLTUuOS0xLjctMTEuNy0zLjctMTcuNC01LjdjLTUtMS43LTYuNC01LjMtNC4xLTEwYzMuOS04LDcuOS0xNS44LDExLjgtMjMuOCBjMS42LTMuMiwzLjktNC41LDcuNS00LjRjNS45LDAuMSwxMS44LTAuMywxNy42LDAuMWM2LjQsMC40LDEwLjktMy4zLDE2LjQtNS44Yy0yNy43LTE1LjUtOTMuOS0xNy45LTEyMi41LTQuMiBjMy41LDEuNiw2LjIsMy40LDkuMiw0YzExLDIuMSwyMi4xLDMuOCwzMy4yLDUuOGM1LjcsMSw3LjUsNC4yLDUuNyw5LjhjLTEuOCw1LjYtMy43LDExLjEtNS41LDE2LjdjLTAuOSwyLjktMi42LDQuNy01LjUsNS42IGMtNC4yLDEuMy04LjQsMi41LTEyLjQsNC4zYy0yLDAuOS00LjEsMi4zLTUuMyw0LjFjLTUuMiw4LjItMTAsMTYuNy0xNS4yLDI1Yy0xLjMsMi0zLjEsMy45LTUuMiw1LjJjLTkuMyw1LjgtMTguOCwxMS40LTI4LjMsMTcgYy0xLjgsMS0zLjksMS44LTUuOSwyLjFjLTExLjUsMS44LTIzLDMuNS0zNC41LDVjLTIuNiwwLjMtMy4xLDEuNC0zLjMsMy44Yy0wLjUsNS40LDAuOCw5LjcsNS4zLDEzYzEuNywxLjIsMy40LDIuOCw0LjUsNC41IGMxLjQsMi4yLDIuNSw0LjcsMyw3LjNjMC41LDIuNCwwLjEsNSwwLjEsNy42YzAuMywwLjEsMC43LDAuMiwxLDAuM2MyLjEtMi4yLDQuMi00LjYsNi40LTYuN2M0LjQtNC4zLDguOS0zLjYsMTEuNywyIGMzLjEsNiw2LjEsMTIsOSwxOC4xYzEsMi4xLDIuMiwyLjgsNC42LDIuOGMxMS45LTAuMSwyMy43LDAuMSwzNS42LTAuMWM0LjEtMC4xLDYuNywxLjUsOC44LDUuMWM0LjYsOCw5LjYsMTUuOCwxNC4xLDIzLjggYzEuNCwyLjUsMy4xLDMuNCw2LDMuM2M1LjQtMC4yLDEwLjctMC4xLDE2LjEtMC4xYzYuNywwLDksMi44LDcuOCw5LjVjLTAuOCw0LjQtMi4zLDguOC0yLjYsMTMuMmMtMC44LDEzLjctNi44LDI0LjQtMTcuNiwzMi42IGMtMC4zLDAuMi0wLjUsMC42LTAuOCwwLjhjLTguNyw2LjItMTIuMywxNC40LTEwLjUsMjVjMC42LDMuNi0xLjEsNi4yLTQsOC4zYy02LjUsNC43LTEyLjksOS41LTE5LjIsMTQuNGMtMS4yLDEtMi4yLDMtMi4yLDQuNiBjLTAuMiw4LjIsMCwxNi41LTAuMSwyNC43Yy0wLjEsNi0zLjgsOC43LTkuNSw2LjhjLTUuNi0xLjgtMTEuMS0zLjctMTYuNy01LjVjLTMtMC45LTQuOC0yLjctNi01LjdjLTMuNy05LjUtNy42LTE5LTExLjMtMjguNSBjLTAuOC0yLjItMS4zLTQuNi0xLjMtNi45Qzk2LDI4Ny4zLDk2LDI2OS45LDk2LDI1Mi42YzAtMS4zLDAtMi43LDAtNC4xYy04LjItMS42LTE2LTMuMy0yMy44LTQuN2MtNC4yLTAuNy03LTIuNS04LjgtNi41IGMtMi00LjctNC4yLTkuNC02LjktMTMuN2MtNC40LTcuMi01LjYtMTQuOC01LjYtMjMuMmMwLTcuNSwxLjItMTMuOCw3LjYtMTguM2MwLjYtMC40LDEtMS4xLDEuNy0xLjljLTEuMy0wLjktMi40LTEuNy0zLjUtMi40IGMtOC44LTUuOS0xNy44LTExLjYtMjYuNC0xNy44Yy0yLjEtMS41LTMuOC0zLjktNC44LTYuM0MyMy42LDE0OS41LDIyLjQsMTQ1LjEsMjAuOCwxNDAuM3ogTTM0Mi4zLDI4OC44IGMzNi42LTU0LjEsMzcuMS0xMjgsOC4zLTE3OS4xYy0xMC44LDMuNi0yMS43LDcuMy0zMi42LDEwLjhjLTIuMiwwLjctNC43LDEuMS02LjksMC44Yy0xMC41LTEuNS0yMC45LTMuNy0zMS40LTUgYy01LjgtMC44LTkuOS0zLTEyLjgtOC4zYy0yLjItNC4xLTQuNS05LjMtOC4yLTExLjNjLTMuNy0yLTkuMy0wLjYtMTQtMC42Yy02LDAtMTIuNi0xLjUtMTcuOCwwLjdjLTUuMSwyLjEtOC43LDgtMTMsMTIuMiBjLTAuMiwwLjItMC40LDAuMy0wLjUsMC41Yy0wLjUsMS40LTEuNCwyLjktMS4yLDQuMmMxLjQsMTAuOSwzLjEsMjEuOCw0LjUsMzIuN2MwLjMsMi4yLDEuMiwzLjIsMy4xLDRjMTEuNSw0LjgsMjIuOSw5LjksMzQuNCwxNC43IGMxLjUsMC42LDMuNCwwLjcsNSwwLjRjNi41LTEuNCwxMi45LTMuMSwxOS4yLTQuOGMzLTAuOCw1LjYtMC40LDguMSwxLjRjNS40LDMuOCwxMC45LDcuNSwxNi41LDExYzIuOSwxLjksNC4yLDQuNCw0LjIsNy44IGMtMC4xLDYuMi0wLjIsMTIuNSwwLjEsMTguN2MwLjEsMi40LDAuNiw1LDEuNyw3LjFjNC42LDkuNyw5LDE5LjYsMTQuNSwyOC44YzcuNSwxMi42LDExLjIsMjUuNyw5LjQsNDAuM2MtMC4xLDAuNS0wLjEsMSwwLDEuNSBjMC40LDEuMSwwLjcsMi40LDEuNCwzLjJDMzM2LjgsMjgzLjIsMzM5LjQsMjg1LjgsMzQyLjMsMjg4Ljh6IE04Ny44LDE3MC44Yy03LjgsNy44LTE1LjIsMTUuMS0yMi40LDIyLjZjLTAuOSwwLjktMS4zLDIuNi0xLjQsNCBjLTAuOSw4LDAuNSwxNS42LDUsMjIuNWMxLjgsMi43LDIuNyw1LjksNC41LDguNmMxLDEuNCwyLjcsMi45LDQuNCwzLjJjOCwxLjgsMTYuMSwzLjMsMjQuMiw1YzUuMiwxLjEsNi43LDIuOSw2LjcsOC4yIGMwLDEyLDAuNywyNC0wLjIsMzZjLTEuMiwxNy4xLDIsMzMsOS4zLDQ4LjVjMi4zLDQuOCw1LjQsNi4yLDEwLjIsN2MwLTYuMywwLjQtMTIuNS0wLjEtMTguNWMtMC40LTUuNSwxLjUtOS4zLDYuMi0xMi4xIGMyLjktMS43LDUuNC00LDguMS02YzMuNy0yLjgsOC44LTQuOSwxMC42LTguNmMxLjktMy44LDAuOC05LjMsMC43LTE0Yy0wLjEtMy4zLDEtNS43LDMuMy03LjljNy02LjgsMTMuOC0xMy43LDIwLjctMjAuNiBjMC43LTAuNywxLjgtMS40LDEuOS0yLjJjMS42LTcuMiwzLTE0LjUsNC42LTIyLjJjLTUuOCwwLTEwLjktMC4xLTE2LDBjLTMuOCwwLjEtNi4zLTEuNC04LjItNC43Yy00LjgtOC4zLTkuOS0xNi41LTE0LjctMjQuOCBjLTEuMS0yLTIuNC0yLjctNC43LTIuN2MtMTIuMSwwLjEtMjQuMiwwLTM2LjQsMC4xYy00LDAtNi42LTEuNS04LjMtNS4xQzkzLjQsMTgxLjcsOTAuNywxNzYuNSw4Ny44LDE3MC44eiBNMTcwLjcsNDMuNyBjLTEuNy0wLjMtMy4xLTAuNy00LjYtMC45Yy0xNC42LTIuNi0zMC0yLjgtNDEuOC0xNGMtMS41LTEuNS0zLjEtMS40LTUuMS0wLjVjLTQxLjIsMTguOS03MS4zLDQ4LjktOTAuNCw5MCBjLTAuNiwxLjMtMC43LDMuMi0wLjMsNC41YzIuNiw4LjIsNS4zLDE2LjQsOC4yLDI0LjVjMC41LDEuNCwxLjYsMi44LDIuOSwzLjZjNy4xLDQuOSwxNC4zLDkuNiwyMS41LDE0LjRjMC44LDAuNSwxLjYsMC45LDIuNiwxLjMgYzEuMS05LjcsMS4xLTkuNy01LjEtMTUuOWMtMS41LTEuNS0zLjMtMi44LTQuNC00LjZjLTEuMy0yLjEtMi42LTQuNi0yLjgtN2MtMC40LTUuMS0wLjEtMTAuMi0wLjEtMTUuNGMwLTYuMSwxLjYtOCw3LjctOC45IGM3LjgtMS4xLDE1LjYtMi4yLDIzLjQtMy4zYzEwLTEuNCwxOS40LTMuMywyOC42LTguNWMxMy4yLTcuNiwyNC4xLTE2LjUsMzAuMS0zMC43YzQuNS0xMC42LDEyLjEtMTcsMjMuNS0xOC44IGMwLjYtMC4xLDEuMy0wLjIsMS44LTAuNmMwLjctMC42LDEuNi0xLjIsMS45LTJDMTY5LjEsNDguNywxNjkuOCw0Ni4zLDE3MC43LDQzLjd6IE0yMjAuNCw2MGM3LjksMy44LDkuNiw0LDE3LjMsMi4xIGM1LjEtMS4zLDEwLjEtMi43LDE1LjItMy43YzItMC40LDQuMy0wLjUsNi4yLDAuMmMxNC4yLDUuNCwyOSw4LjEsNDMuOCwxMWMxLjMsMC4yLDIuOSwwLjMsMy45LTAuMmMzLjEtMS44LDYtMy45LDkuNS02LjIgYy0xLjItMS4xLTIuMi0xLjktMy4xLTIuN2MtMTAuOC05LjktMjIuNi0xOC40LTM1LjQtMjUuNWMtMi4zLTEuMy00LjItMS41LTYuNS0wLjFjLTEyLjQsNy45LTI1LjcsMTIuMy00MC43LDEwLjIgYy0wLjQtMC4xLTAuOC0wLjEtMS4xLDBjLTAuOCwwLjQtMS45LDAuOC0yLjMsMS40QzIyNC45LDUwLjksMjIyLjcsNTUuNCwyMjAuNCw2MHpcIiAgLz48L3N2Zz47XG5cblxuXG5leHBvcnQgZGVmYXVsdCBpY29ucztcbiIsIi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5cbmltcG9ydCBpY29ucyBmcm9tICcuLy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5pbXBvcnQgICBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuY29uc3QgeyBnZXRDYXRlZ29yaWVzLCBzZXRDYXRlZ29yaWVzIH0gPSB3cC5ibG9ja3M7XG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuXG5cbnNldENhdGVnb3JpZXMoIFtcbiAgICB7XG4gICAgICAgIHNsdWc6ICdibG9ja3NwYXJlJyxcbiAgICAgICAgJ3RpdGxlJzogX18oJ0Jsb2Nrc3BhcmUnLCAnYmxvY2tzcGFyZScpLFxuXG4gICAgfSxcbiAgICAuLi5nZXRDYXRlZ29yaWVzKCkuZmlsdGVyKCAoIHsgc2x1ZyB9ICkgPT4gc2x1ZyAhPT0gJ2Jsb2Nrc3BhcmUnICksXG5cbl0gKTtcbiIsIlxuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5jb25zdCB7IGFkZEZpbHRlciB9ID0gd3AuaG9va3M7XG5jb25zdCB7IGNyZWF0ZUhpZ2hlck9yZGVyQ29tcG9uZW50IH0gPSAgd3AuY29tcG9zZTtcblxuY29uc3QgYWxsb3dlZEJsb2NrcyA9IFsgJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1zaGFwZS1kaXZpZGVyJ107XG5cbmZ1bmN0aW9uIGFkZEF0dHJpYnV0ZXMoIHNldHRpbmdzICkge1xuICAgIC8vIEFkZCBjdXN0b20gc2VsZWN0b3IvaWRcbiAgICBpZiAoIGFsbG93ZWRCbG9ja3MuaW5jbHVkZXMoIHNldHRpbmdzLm5hbWUgKSAmJiB0eXBlb2Ygc2V0dGluZ3MuYXR0cmlidXRlcyAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgIHNldHRpbmdzLmF0dHJpYnV0ZXMgPSBPYmplY3QuYXNzaWduKCBzZXR0aW5ncy5hdHRyaWJ1dGVzLCB7XG4gICAgICAgICAgICBibG9ja3NwYXJlOiB7IHR5cGU6ICdvYmplY3QnIH0sXG4gICAgICAgIH0gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG59XG5cbmNvbnN0IHdpdGhBdHRyaWJ1dGVzID0gY3JlYXRlSGlnaGVyT3JkZXJDb21wb25lbnQoXG4gICAgQmxvY2tFZGl0ID0+IHByb3BzID0+IHtcbiAgICAgICAgY29uc3QgeyBuYW1lOiBibG9ja05hbWUgfSA9IHByb3BzO1xuXG4gICAgICAgIGlmICggYWxsb3dlZEJsb2Nrcy5pbmNsdWRlcyggYmxvY2tOYW1lICkgKSB7XG4gICAgICAgICAgICBwcm9wcy5hdHRyaWJ1dGVzLmJsb2Nrc3BhcmUgPSBwcm9wcy5hdHRyaWJ1dGVzLmJsb2Nrc3BhcmUgfHwge307XG5cbiAgICAgICAgICAgIGlmICggdHlwZW9mIHByb3BzLmF0dHJpYnV0ZXMuYmxvY2tzcGFyZS5pZCA9PT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgICAgcHJvcHMuYXR0cmlidXRlcy5ibG9ja3NwYXJlID0gT2JqZWN0LmFzc2lnbigge30sIHByb3BzLmF0dHJpYnV0ZXMuYmxvY2tzcGFyZSwge1xuICAgICAgICAgICAgICAgICAgICBpZDogJycgKyBkLmdldE1vbnRoKCkgKyBkLmdldERhdGUoKSArIGQuZ2V0SG91cnMoKSArIGQuZ2V0TWludXRlcygpICsgZC5nZXRTZWNvbmRzKCkgKyBkLmdldE1pbGxpc2Vjb25kcygpLFxuICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiA8QmxvY2tFZGl0IHsgLi4ucHJvcHMgfSAvPjtcbiAgICB9LFxuICAgICd3aXRoQXR0cmlidXRlcydcbik7XG5cbmFkZEZpbHRlcihcbiAgICAnYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlJyxcbiAgICAnYmxvY2tzcGFyZS9jdXN0b20vYXR0cmlidXRlcycsXG4gICAgYWRkQXR0cmlidXRlc1xuKTtcblxuYWRkRmlsdGVyKFxuICAgICdlZGl0b3IuQmxvY2tFZGl0JyxcbiAgICAnYmxvY2tzcGFyZS9hdHRyaWJ1dGVzJyxcbiAgICB3aXRoQXR0cmlidXRlc1xuKTtcbiIsImV4cG9ydCBkZWZhdWx0IFtcbiAgICAnZmEgZmEtcGx1cycsJ2ZhIGZhLXBsdXMtY2lyY2xlJywnZmFzIGZhLWFycm93LXVwJ1xuXSIsIi8vaW1wb3J0ICcuLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4blxuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50XG5cbmltcG9ydCBJY29uTGlzdERhdGEgZnJvbSAnLi4vLi4vLi4vaW5jL2ljb24tbGliL2FjY29yZGlvbi1pY29uLWxpc3QnO1xuXG5jbGFzcyBJY29uTGlzdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGlzT3BlbjogZmFsc2UsXG4gICAgICAgICAgICBmaWx0ZXJUZXh0OiAnJyxcbiAgICAgICAgICAgIHNob3dJY29uczogZmFsc2VcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgZGlzYWJsZVRvZ2dsZSwgY29sb3JTZXR0aW5ncywgaWNvbkNvbG9yLCBvbkNvbG9yQ2hhbmdlIH0gPSB0aGlzLnByb3BzXG4gICAgICAgIGNvbnN0IHsgZmlsdGVyVGV4dCB9ID0gdGhpcy5zdGF0ZVxuICAgICAgICB2YXIgZmluYWxEYXRhID0gW107XG4gICAgICAgIGlmIChmaWx0ZXJUZXh0Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIEljb25MaXN0RGF0YS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChuYW1lLmluY2x1ZGVzKGZpbHRlclRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsRGF0YS5wdXNoKG5hbWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsRGF0YSA9IEljb25MaXN0RGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWZpZWxkIGJsb2Nrc3BhcmUtZmllbGQtaWNvbi1saXN0ICR7ZGlzYWJsZVRvZ2dsZSA/ICcnIDogJ2Jsb2Nrc3BhcmUtdG9nZ2xlLWVuYWJsZWQnfWB9PlxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmxhYmVsICYmXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICB7IWRpc2FibGVUb2dnbGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZSBsYWJlbD17dGhpcy5wcm9wcy5sYWJlbH0gY2xhc3NOYW1lPXsnYmxvY2tzcGFyZS1pY29uLWxpc3QtdG9nZ2xlJ30gdmFsdWU9e3RoaXMucHJvcHMudmFsdWUgPyB0cnVlIDogZmFsc2V9IG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMucHJvcHMudmFsdWUgPyAnJyA6ICcgJyl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3RoaXMucHJvcHMubGFiZWx9PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtjb2xvclNldHRpbmdzICYmIDxDb2xvciBsYWJlbD17X18oJyBDb2xvcicpfSB2YWx1ZT17aWNvbkNvbG9yIHx8ICcjY2NjJ30gb25DaGFuZ2U9eyhjb2xvcikgPT4gb25Db2xvckNoYW5nZShjb2xvcil9IC8+fVxuXG4gICAgICAgICAgICAgICAgeyhkaXNhYmxlVG9nZ2xlIHx8IHRoaXMucHJvcHMudmFsdWUgIT0gJycpICYmXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWljb24tbGlzdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPXt0aGlzLnN0YXRlLmZpbHRlclRleHR9IHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgb25DaGFuZ2U9e2UgPT4gdGhpcy5zZXRTdGF0ZSh7IGZpbHRlclRleHQ6IGUudGFyZ2V0LnZhbHVlIH0pfSBhdXRvQ29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaWNvbi1saXN0LWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmluYWxEYXRhLm1hcChuYW1lID0+IHsgcmV0dXJuICg8c3BhbiBjbGFzc05hbWU9e3ZhbHVlID09IG5hbWUgPyAnYmxvY2tzcGFyZS1hY3RpdmUnIDogJyd9IG9uQ2xpY2s9e2UgPT4geyB0aGlzLnByb3BzLm9uQ2hhbmdlKG5hbWUpIH19PjxzcGFuIGNsYXNzTmFtZT17bmFtZX0gLz48L3NwYW4+KSB9KX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBJY29uTGlzdCIsImltcG9ydCBJY29uTGlzdCBmcm9tIFwiLi9JY29uTGlzdC5qc1wiO1xuXG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtjb21wb3NlfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7d2l0aFNlbGVjdCwgd2l0aERpc3BhdGNofSA9IHdwLmRhdGE7XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge0J1dHRvbixQYW5lbEJvZHksU2VsZWN0Q29udHJvbCxSYW5nZUNvbnRyb2x9ID0gd3AuY29tcG9uZW50cztcbmNvbnN0IHtJbm5lckJsb2NrcywgUmljaFRleHQsSW5zcGVjdG9yQ29udHJvbHMsUGFuZWxDb2xvclNldHRpbmdzfSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmNsYXNzIEFjY29yZGlvbkl0ZW1CbG9ja0VkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLmZpbmRQYXJlbnRBY2NvcmRpb24gPSB0aGlzLmZpbmRQYXJlbnRBY2NvcmRpb24uYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtkZXZpY2U6ICdtZCd9XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHtzZXRBdHRyaWJ1dGVzLCBjbGllbnRJZCwgYXR0cmlidXRlczoge3VuaXF1ZUlkfX0gPSB0aGlzLnByb3BzXG4gICAgICAgIGNvbnN0IF9jbGllbnQgPSBjbGllbnRJZC5zdWJzdHIoMCwgNilcbiAgICAgICAgaWYgKCF1bmlxdWVJZCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7dW5pcXVlSWQ6IF9jbGllbnR9KTtcbiAgICAgICAgfSBlbHNlIGlmICh1bmlxdWVJZCAmJiB1bmlxdWVJZCAhPSBfY2xpZW50KSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHt1bmlxdWVJZDogX2NsaWVudH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFBhcmVudEFjY29yZGlvbihyb290QmxvY2spIHtcbiAgICAgICAgY29uc3Qge2Jsb2NrfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHJvb3RCbG9jay5pbm5lckJsb2NrcyAmJiByb290QmxvY2suaW5uZXJCbG9ja3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByb290QmxvY2suaW5uZXJCbG9ja3MuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIGl0ZW0uY2xpZW50SWQgPT09IGJsb2NrLmNsaWVudElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJvb3RCbG9jaztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5maW5kUGFyZW50QWNjb3JkaW9uKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgc2V0R2xvYmFsU2V0dGluZ3ModHlwZSwgdmFsKSB7XG4gICAgICAgIGNvbnN0IHt1cGRhdGVCbG9ja0F0dHJpYnV0ZXN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgcGFyZW50QWNjb3JkaW9uID0gdGhpcy5maW5kUGFyZW50QWNjb3JkaW9uKHRoaXMucHJvcHMucm9vdEJsb2NrKTtcbiAgICAgICAgaWYgKHBhcmVudEFjY29yZGlvbi5pbm5lckJsb2NrcyAmJiBwYXJlbnRBY2NvcmRpb24uaW5uZXJCbG9ja3MubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXJlbnRBY2NvcmRpb24uaW5uZXJCbG9ja3MuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUJsb2NrQXR0cmlidXRlcyhpdGVtLmNsaWVudElkLCB7W3R5cGVdOiB2YWx9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUm9vdEJsb2NrKHR5cGUsIHZhbCkge1xuICAgICAgICBjb25zdCB7dXBkYXRlQmxvY2tBdHRyaWJ1dGVzfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHBhcmVudEFjY29yZGlvbiA9IHRoaXMuZmluZFBhcmVudEFjY29yZGlvbih0aGlzLnByb3BzLnJvb3RCbG9jayk7XG4gICAgICAgIHVwZGF0ZUJsb2NrQXR0cmlidXRlcyhwYXJlbnRBY2NvcmRpb24uY2xpZW50SWQsIHtbdHlwZV06IHZhbH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZUl0ZW1OdW1iZXIoaW5kZXgpIHtcbiAgICAgICAgY29uc3Qge3VwZGF0ZUJsb2NrQXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBwYXJlbnRBY2NvcmRpb24gPSB0aGlzLmZpbmRQYXJlbnRBY2NvcmRpb24odGhpcy5wcm9wcy5yb290QmxvY2spO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBwYXJlbnRBY2NvcmRpb24uaW5uZXJCbG9ja3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB1cGRhdGVCbG9ja0F0dHJpYnV0ZXMocGFyZW50QWNjb3JkaW9uLmlubmVyQmxvY2tzW2luZGV4XS5jbGllbnRJZCwge2l0ZW1OdW1iZXI6IHBhcmVudEFjY29yZGlvbi5pbm5lckJsb2Nrc1tpbmRleF0uYXR0cmlidXRlcy5pdGVtTnVtYmVyIC0gMX0pO1xuICAgICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX29uQ2xpY2tMYWJlbCgpIHtcbiAgICAgICAgY29uc3Qge2NsaWVudElkLCByb290QmxvY2ssIGF0dHJpYnV0ZXMsIHNldEF0dHJpYnV0ZXMsIHVwZGF0ZUJsb2NrQXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBwYXJlbnRBY2NvcmRpb24gPSB0aGlzLmZpbmRQYXJlbnRBY2NvcmRpb24odGhpcy5wcm9wcy5yb290QmxvY2spO1xuICAgICAgICBjb25zdCB7aXRlbVRvZ2dsZX0gPSByb290QmxvY2suYXR0cmlidXRlcztcbiAgICAgICAgaWYgKGl0ZW1Ub2dnbGUpIHtcbiAgICAgICAgICAgIHBhcmVudEFjY29yZGlvbi5pbm5lckJsb2Nrcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsID0gKGl0ZW0uY2xpZW50SWQgIT0gY2xpZW50SWQpID8gZmFsc2UgOiAhYXR0cmlidXRlcy5hY3RpdmU7XG4gICAgICAgICAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzKGl0ZW0uY2xpZW50SWQsIHthY3RpdmU6IHZhbH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHthY3RpdmU6ICFhdHRyaWJ1dGVzLmFjdGl2ZX0pO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgcm9vdEJsb2NrLCBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZlLFxuICAgICAgICAgICAgICAgIHVuaXF1ZUlkLFxuICAgICAgICAgICAgICAgIGl0ZW1OdW1iZXIsXG4gICAgICAgICAgICAgICAgZGVmYXVsdFRleHQsXG4gICAgICAgICAgICAgICAgZmlsbFR5cGUsXG4gICAgICAgICAgICAgICAgaGVhZGluZyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGljb25Qb3NpdGlvbixcbiAgICAgICAgICAgICAgICBwYW5lbENvbG9yLFxuICAgICAgICAgICAgICAgIHBhbmVsQWN0aXZlQ29sb3IsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBhY3RpdmVUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgcGFuZWxCYWNrR3JvdW5kQ29sb3JcbiAgICAgICAgICAgIH0sIHNldEF0dHJpYnV0ZXMsIGlzU2VsZWN0ZWQsIGlzU2VsZWN0ZWRCbG9ja0luUm9vdFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBsZXQgcGFuZWxfYWN0X2NvbG9yID0nJztcbiAgICAgICAgaWYocGFuZWxBY3RpdmVDb2xvcil7XG4gICAgICAgICAgICBwYW5lbF9hY3RfY29sb3IgPSBwYW5lbEFjdGl2ZUNvbG9yXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgcGFuZWxfYWN0X2NvbG9yID0gXCIjOGIyNDljXCJcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYW5lbF9jb2xvciA9ICcjM2MxYTViJztcbiAgICAgICAgaWYocGFuZWxDb2xvcil7XG4gICAgICAgICAgICBwYW5lbF9jb2xvciA9IHBhbmVsQ29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYWN0X3BhbmVsX3RleHRfY29sb3IgPSBcIiNmZmZcIjtcblxuICAgICAgICBpZihhY3RpdmVUZXh0Q29sb3Ipe1xuICAgICAgICAgICAgYWN0X3BhbmVsX3RleHRfY29sb3IgPSBhY3RpdmVUZXh0Q29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFuZWxfdGV4dF9jb2xvciA9IFwiI2ZmZlwiO1xuICAgICAgICBpZiAodGV4dENvbG9yKXtcbiAgICAgICAgICAgIHBhbmVsX3RleHRfY29sb3IgPXRleHRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYW5lbF9ib2R5X2JnID0gXCIjZmZmXCI7XG4gICAgICAgIGlmKHBhbmVsQmFja0dyb3VuZENvbG9yKXtcbiAgICAgICAgICAgIHBhbmVsX2JvZHlfYmcgPXBhbmVsQmFja0dyb3VuZENvbG9yO1xuICAgICAgICB9XG5cblxuXG5cbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGJsb2Nrc3BhcmUtYWNjb3JkaW9uLWl0ZW0gYmxvY2tzcGFyZS10eXBlLSR7ZmlsbFR5cGV9ICR7KGFjdGl2ZSkgPyBgYmxvY2tzcGFyZS1hY2NvcmRpb24tYWN0aXZlYCA6IGBgfWA7XG5cbiAgICAgICAgY29uc3QgcGFuZWxTdHlsZSA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjooYWN0aXZlPT10cnVlKT9wYW5lbF9hY3RfY29sb3I6cGFuZWxfY29sb3JcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpY29uUG9zaXRpb25PcHRpb24gPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWxlZnQnLCBsYWJlbDogX18oJ0xlZnQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtcmlnaHQnLCBsYWJlbDogX18oJ1JpZ2h0JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IHBhbmVsR2FwID0ge1xuICAgICAgICAgICAgbWFyZ2luQm90dG9tOm1hcmdpbkJvdHRvbSArICdweCdcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdDb2xvciBzZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbG9yIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0ZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB2YWwgPT4gdGhpcy5zZXRHbG9iYWxTZXR0aW5ncygndGV4dENvbG9yJywgdmFsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdUZXh0IENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFjdGl2ZVRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB2YWwgPT4gdGhpcy5zZXRHbG9iYWxTZXR0aW5ncygnYWN0aXZlVGV4dENvbG9yJywgdmFsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQWN0aXZlIFRleHQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFuZWxBY3RpdmVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB2YWwgPT4gdGhpcy5zZXRHbG9iYWxTZXR0aW5ncygncGFuZWxBY3RpdmVDb2xvcicsIHZhbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0FjdGl2ZSBQYW5lbCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYW5lbENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHZhbCA9PiB0aGlzLnNldEdsb2JhbFNldHRpbmdzKCdwYW5lbENvbG9yJywgdmFsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnUGFuZWwgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnSWNvbiBzZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25MaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiB0aGlzLnNldEdsb2JhbFNldHRpbmdzKCduYW1lJywgdmFsKX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYmxvY2stJHt1bmlxdWVJZH1gfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gIHN0eWxlPXtwYW5lbEdhcH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYWNjb3JkaW9uLXBhbmVsICR7aWNvblBvc2l0aW9ufWB9IHN0eWxlPXtwYW5lbFN0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWFjY29yZGlvbi1wYW5lbC1oYW5kbGVyXCIgb25DbGljaz17KCkgPT4gdGhpcy5fb25DbGlja0xhYmVsKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IChhY3RpdmUpP2FjdF9wYW5lbF90ZXh0X2NvbG9yOnBhbmVsX3RleHRfY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhuYW1lKSAmJiA8c3BhbiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWFjY29yZGlvbi1pY29uICAke25hbWV9YH0vPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ0FkZCBBY2NvcmRpb24gSXRlbS4uJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWFjY29yZGlvbi1wYW5lbC1oYW5kbGVyLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGluZzogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRGb3JtYXRzPXtbJ2JvbGQnLCAnaXRhbGljJywgJ3N0cmlrZXRocm91Z2gnXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnVwZGF0ZUxhYmVsKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhpc1NlbGVjdGVkQmxvY2tJblJvb3QpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRBY2NvcmRpb24gPSB0aGlzLmZpbmRQYXJlbnRBY2NvcmRpb24odGhpcy5wcm9wcy5yb290QmxvY2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEFjY29yZGlvbiAmJiBwYXJlbnRBY2NvcmRpb24uY2xpZW50SWQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSXRlbU51bWJlcihpdGVtTnVtYmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlbW92ZUJsb2NrKHRoaXMucHJvcHMuY2xpZW50SWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEFjY29yZGlvbi5pbm5lckJsb2Nrcy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlbW92ZUJsb2NrKHBhcmVudEFjY29yZGlvbi5jbGllbnRJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWFjY29yZGlvbi1pdGVtLXJlbW92ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48aSBjbGFzc05hbWU9XCJmYSBmYS10aW1lc1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1hY2NvcmRpb24tYm9keVwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOnBhbmVsX2JvZHlfYmdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19IGRhdGEtYmc9e3BhbmVsX2JvZHlfYmd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZT17KGRlZmF1bHRUZXh0KSA/IFtbJ2NvcmUvcGFyYWdyYXBoJywge2NvbnRlbnQ6IGRlZmF1bHRUZXh0LGN1c3RvbUZvbnRTaXplOjE4fV1dIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlTG9jaz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoU2VsZWN0KChzZWxlY3QsIG93blByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHtjbGllbnRJZH0gPSBvd25Qcm9wcztcbiAgICAgICAgY29uc3Qge2dldEJsb2NrSGllcmFyY2h5Um9vdENsaWVudElkLCBnZXRCbG9jaywgaXNCbG9ja1NlbGVjdGVkLCBoYXNTZWxlY3RlZElubmVyQmxvY2t9ID0gc2VsZWN0KCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2s6IGdldEJsb2NrKGNsaWVudElkKSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdDogaXNCbG9ja1NlbGVjdGVkKGNsaWVudElkKSB8fCBoYXNTZWxlY3RlZElubmVyQmxvY2soY2xpZW50SWQsIHRydWUpLFxuICAgICAgICAgICAgcm9vdEJsb2NrOiBjbGllbnRJZCA/IGdldEJsb2NrKGdldEJsb2NrSGllcmFyY2h5Um9vdENsaWVudElkKGNsaWVudElkKSkgOiBudWxsLFxuICAgICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhEaXNwYXRjaCgoZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgY29uc3Qge3JlbW92ZUJsb2NrLCB1cGRhdGVCbG9ja0F0dHJpYnV0ZXN9ID0gZGlzcGF0Y2goJ2NvcmUvYmxvY2stZWRpdG9yJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZW1vdmVCbG9jayxcbiAgICAgICAgICAgIHVwZGF0ZUJsb2NrQXR0cmlidXRlc1xuICAgICAgICB9O1xuICAgIH0pLFxuXSkoQWNjb3JkaW9uSXRlbUJsb2NrRWRpdCk7XG4iLCJjb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgSW5uZXJCbG9ja3MsIFJpY2hUZXh0IH0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgU2F2ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IHVuaXF1ZUlkLCBpdGVtTnVtYmVyLCBoZWFkaW5nLCBuYW1lLCBpY29uUG9zaXRpb24sIGZpbGxUeXBlLFxuICAgICAgICAgICAgYWN0aXZlLCBvcGVuRmlyc3RJdGVtLHBhbmVsQ29sb3IscGFuZWxBY3RpdmVDb2xvcix0ZXh0Q29sb3IsbWFyZ2luQm90dG9tLGFjdGl2ZVRleHRDb2xvcixwYW5lbEJhY2tHcm91bmRDb2xvciwgZGVmYXVsdFRleHRTaXplIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG5cblxuICAgICAgICBsZXQgcGFuZWxfYWN0X2NvbG9yID0nJztcbiAgICAgICAgaWYocGFuZWxBY3RpdmVDb2xvcil7XG4gICAgICAgICAgICBwYW5lbF9hY3RfY29sb3IgPSBwYW5lbEFjdGl2ZUNvbG9yXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgcGFuZWxfYWN0X2NvbG9yID0gXCIjOGIyNDljXCJcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYW5lbF9jb2xvciA9ICcjM2MxYTViJztcbiAgICAgICAgaWYocGFuZWxDb2xvcil7XG4gICAgICAgICAgICBwYW5lbF9jb2xvciA9IHBhbmVsQ29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYWN0X3BhbmVsX3RleHRfY29sb3IgPSBcIiNmZmZcIjtcblxuICAgICAgICBpZihhY3RpdmVUZXh0Q29sb3Ipe1xuICAgICAgICAgICAgYWN0X3BhbmVsX3RleHRfY29sb3IgPSBhY3RpdmVUZXh0Q29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFuZWxfdGV4dF9jb2xvciA9IFwiI2ZmZlwiO1xuICAgICAgICBpZiAodGV4dENvbG9yKXtcbiAgICAgICAgICAgIHBhbmVsX3RleHRfY29sb3IgPXRleHRDb2xvcjtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGJsb2Nrc3BhcmUtYWNjb3JkaW9uLWl0ZW0gYmxvY2tzcGFyZS10eXBlLSR7ZmlsbFR5cGV9IGA7XG5cblxuICAgICAgICAgICAgY29uc3QgcGFuZWxTdHlsZSA9IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6cGFuZWxfY29sb3JcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcGFuZWxHYXAgPSB7XG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206bWFyZ2luQm90dG9tKydweCdcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgcGFuZWxfYm9keV9iZyA9IFwiI2ZmZlwiO1xuICAgICAgICBpZihwYW5lbEJhY2tHcm91bmRDb2xvcil7XG4gICAgICAgICAgICBwYW5lbF9ib2R5X2JnID1wYW5lbEJhY2tHcm91bmRDb2xvcjtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1ibG9jay0ke3VuaXF1ZUlkfWB9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9IGRhdGEtYWN0LWNvbG9yPXthY3RfcGFuZWxfdGV4dF9jb2xvcn0gZGF0YS10eHQtY29sb3I9e3BhbmVsX3RleHRfY29sb3J9IGRhdGEtYWN0aXZlPXtwYW5lbF9hY3RfY29sb3J9IGRhdGEtcGFuPXtwYW5lbF9jb2xvcn0gc3R5bGU9e3BhbmVsR2FwfSA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1hY2NvcmRpb24tcGFuZWwgICR7aWNvblBvc2l0aW9ufWB9IHN0eWxlPXtwYW5lbFN0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWNjb3JkaW9uLXBhbmVsLWhhbmRsZXJcIiByb2xlPVwiYnV0dG9uXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcGFuZWxfdGV4dF9jb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhuYW1lICkgJiYgPHNwYW4gY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1hY2NvcmRpb24taWNvbiAke25hbWV9YH0gLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnQgdGFnTmFtZT1cInNwYW5cIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWFjY29yZGlvbi1wYW5lbC1oYW5kbGVyLWxhYmVsXCIgdmFsdWU9e2hlYWRpbmd9IC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1hY2NvcmRpb24tYm9keVwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6cGFuZWxfYm9keV9iZ1xuICAgICAgICAgICAgICAgICAgICB9IH0gZGF0YS1iZz17cGFuZWxfYm9keV9iZ30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3MuQ29udGVudCAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFNhdmUiLCJpbXBvcnQgJy4uL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5pbXBvcnQgJy4uL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBFZGl0IGZyb20gJy4vRWRpdCdcbmltcG9ydCBTYXZlIGZyb20gJy4vU2F2ZSc7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7Y2F0ZWdvcnksYXR0cmlidXRlc30gPSBtZXRhZGF0YTtcblxuZXhwb3J0IGNvbnN0IGFjY29yZGlvbkl0ZW1TZXR0aW5ncyA9IHtcbiAgICB0aXRsZTogX18oJ0FjY29yZGlvbicsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdEaXNwbGF5IGNyZWF0aXZlIGNvbGxhcHNpYmxlIHRleHRzIEFjY29yZGlvbi4nLCAnYmxvY2tzcGFyZScpLFxuICAgIHBhcmVudDogWydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtYWNjb3JkaW9uJ10sXG4gICAgaWNvbjogJ2xpbmsnLFxuICAgIGNhdGVnb3J5LFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGh0bWw6IGZhbHNlLFxuICAgICAgICBpbnNlcnRlcjogZmFsc2UsXG4gICAgICAgIHJldXNhYmxlOiBmYWxzZSxcbiAgICB9LFxuICAgIGF0dHJpYnV0ZXMsXG5cbiAgICBlZGl0OiBFZGl0LFxuICAgIHNhdmU6IFNhdmVcbn07XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdibG9ja3NwYXJlL2FjY29yZGlvbi1pdGVtJywgYWNjb3JkaW9uSXRlbVNldHRpbmdzKTtcbiIsImNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24gfSA9IHdwLmNvbXBvbmVudHM7XG5jb25zdCB7ICBJbm5lckJsb2NrcyB9ID0gd3AuYmxvY2tFZGl0b3I7XG5jb25zdCB7IGNyZWF0ZUJsb2NrIH0gPSB3cC5ibG9ja3M7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IHdpdGhTZWxlY3QsIHdpdGhEaXNwYXRjaCB9ID0gd3AuZGF0YTtcblxuaW1wb3J0IHsgYWNjb3JkaW9uSXRlbVNldHRpbmdzIH0gZnJvbSAnLi9pbm5lci1pdGVtJztcblxuY2xhc3MgQWNjb3JkaW9uQmxvY2sgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcywgY2xpZW50SWQsIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQgfSB9ID0gdGhpcy5wcm9wc1xuICAgICAgICBjb25zdCBfY2xpZW50ID0gY2xpZW50SWQuc3Vic3RyKDAsIDYpXG4gICAgICAgIGlmICghdW5pcXVlSWQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh1bmlxdWVJZCAmJiB1bmlxdWVJZCAhPSBfY2xpZW50KSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdW5pcXVlSWQ6IF9jbGllbnQgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRBY2NvcmRpb25JdGVtKCkge1xuICAgICAgICBsZXQgbmV3QmxvY2tBdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7IGNsaWVudElkLCBpbnNlcnRCbG9jaywgYmxvY2sgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChibG9jay5pbm5lckJsb2NrcyAmJiBibG9jay5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RCbG9ja0F0dHJpYnV0ZXMgPSBibG9jay5pbm5lckJsb2Nrc1tibG9jay5pbm5lckJsb2Nrcy5sZW5ndGggLSAxXS5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgY29uc3QgaXRlbU51bWJlciA9IGxhc3RCbG9ja0F0dHJpYnV0ZXMuaXRlbU51bWJlciArIDE7XG4gICAgICAgICAgICBjb25zdCBoZWFkaW5nID0gYWNjb3JkaW9uSXRlbVNldHRpbmdzLmhlYWRpbmc7XG4gICAgICAgICAgICBuZXdCbG9ja0F0dHJpYnV0ZXMgPSBPYmplY3QuYXNzaWduKHt9LCBsYXN0QmxvY2tBdHRyaWJ1dGVzLCB7IGl0ZW1OdW1iZXIsIGhlYWRpbmcsIGFjdGl2ZTogZmFsc2UsIGRlZmF1bHRUZXh0OiAnJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IGFjY29yZGlvbkl0ZW1TZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRCbG9jayhjcmVhdGVCbG9jaygnYmxvY2tzcGFyZS9hY2NvcmRpb24taXRlbScsIG5ld0Jsb2NrQXR0cmlidXRlcyksIHVuZGVmaW5lZCwgY2xpZW50SWQpO1xuICAgIH1cblxuICAgIGdldEFjY29yZGlvblRlbXBsYXRlID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW11cbiAgICAgICAgY29uc3QgZGVmYXVsdEl0ZW1zID0gYXR0cmlidXRlcy5kZWZhdWx0SXRlbXM7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgZGVmYXVsdEl0ZW1zOyBrKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSAnSXBzYW0gcGVyIGRvbG9yZXMgbWludXMgbmF0b3F1ZT8gUnV0cnVtIGRvbG9yZW0gdm9sdXB0YXRlcyBldWlzbW9kIHBoYXJldHJhISBSaG9uY3VzIGRpc3RpbmN0aW8gY3VwaWRpdGF0ZSBhY2N1c2FudGl1bS4gQ2lsbHVtIGFsaXF1aWQuJztcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsnYmxvY2tzcGFyZS9hY2NvcmRpb24taXRlbScsIHsgaXRlbU51bWJlcjogaywgZGVmYXVsdFRleHQ6IGNvbnRlbnQsY3VzdG9tRm9udFNpemU6MTggfV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBpc1NlbGVjdGVkQmxvY2tJblJvb3QsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgYXR0cmlidXRlczogeyB1bmlxdWVJZCwgfSB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1ibG9jay1hY2NvcmRpb24gYmxvY2tzcGFyZS1ibG9jay0ke3VuaXF1ZUlkfWB9PlxuICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXt0aGlzLmdldEFjY29yZGlvblRlbXBsYXRlKGF0dHJpYnV0ZXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEJsb2Nrcz17WydibG9ja3NwYXJlL2FjY29yZGlvbi1pdGVtJ119XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWNjb3JkaW9uLWFkZC1pdGVtIGJsb2Nrc3BhcmUtYWRkLW1vcmUtaXRlbVwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPXsnaW5zZXJ0J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRBY2NvcmRpb25JdGVtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7X18oJ0FkZCBBY2NvcmRpb24gSXRlbScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9GcmFnbWVudCA+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoU2VsZWN0KChzZWxlY3QsIG93blByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQgfSA9IG93blByb3BzO1xuICAgICAgICBjb25zdCB7IGdldEJsb2NrLCBpc0Jsb2NrU2VsZWN0ZWQsIGhhc1NlbGVjdGVkSW5uZXJCbG9jayB9ID0gc2VsZWN0KCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2s6IGdldEJsb2NrKGNsaWVudElkKSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdDogaXNCbG9ja1NlbGVjdGVkKGNsaWVudElkKSB8fCBoYXNTZWxlY3RlZElubmVyQmxvY2soY2xpZW50SWQsIHRydWUpLFxuICAgICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhEaXNwYXRjaCgoZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnNlcnRCbG9jaywgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzIH0gPSBkaXNwYXRjaCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluc2VydEJsb2NrLFxuICAgICAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzXG4gICAgICAgIH07XG4gICAgfSksXG5dKShBY2NvcmRpb25CbG9jaylcbiIsImNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBJbm5lckJsb2NrcyB9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyB1bmlxdWVJZCwgaXRlbVRvZ2dsZX0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IGludGVyYWN0aW9uQ2xhc3MgPSAnYmxvY2tzcGFyZS1ibG9jayc7XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGBibG9ja3NwYXJlLWJsb2NrLWFjY29yZGlvbiAke2ludGVyYWN0aW9uQ2xhc3N9IGJsb2Nrc3BhcmUtYmxvY2stJHt1bmlxdWVJZH1gO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyBjbGFzc05hbWUgfSBkYXRhLWl0ZW0tdG9nZ2xlPXtpdGVtVG9nZ2xlfT5cbiAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3MuQ29udGVudCAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgU2F2ZTsiLCJcbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgQWNjb3JkaW9uQmxvY2sgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBTYXZlIGZyb20gJy4vc2F2ZSc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmltcG9ydCBpY29ucyBmcm9tICcuLy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5jb25zdCB7IG5hbWUsIGNhdGVnb3J5LGF0dHJpYnV0ZXMgfSA9IG1ldGFkYXRhO1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgQWNjb3JkaW9uJywnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheSBjcmVhdGl2ZSBjb2xsYXBzaWJsZSBBY2NvcmRpb24uJywnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yeSxcbiAgICBpY29uOmljb25zLmFjY29yZGlvbixcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYWNjb3JkaW9uJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2NvbGxhcHNpYmxlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2NvbGxhcHNlJywgJ2Jsb2Nrc3BhcmUnKVxuICAgIF0sXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgaHRtbDogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogZmFsc2UsXG4gICAgICAgIGFsaWduOiBbJ2NlbnRlcicsICd3aWRlJywgJ2Z1bGwnXSxcbiAgICB9LFxuXG4gICAgZXhhbXBsZToge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICB9LFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgZWRpdDpBY2NvcmRpb25CbG9jayxcbiAgICBzYXZlOlNhdmVcbn0pOyIsImNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCU0J1dHRvbiBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17IHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1idXR0b24nXG4gICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyB0aGlzLnByb3BzLmNoaWxkcmVuIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn0iLCJjb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcbiAgICBTZWxlY3RDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcbmNvbnN0IHtcbiAgICBQYW5lbENvbG9yU2V0dGluZ3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQlNidXR0b25TZXR0aW5ncyggcHJvcHMgKSB7XG4gICAgY29uc3Qge1xuICAgICAgICBlbmFibGVCdXR0b25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgIGJ1dHRvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgb25DaGFuZ2VCdXR0b25Db2xvciA9ICgpID0+IHt9LFxuXG4gICAgICAgIGJ1dHRvblRleHRDb2xvcixcbiAgICAgICAgb25DaGFuZ2VCdXR0b25UZXh0Q29sb3IgPSAoKSA9PiB7fSxcblxuICAgICAgICBlbmFibGVCdXR0b25TaXplLFxuICAgICAgICBidXR0b25TaXplLFxuICAgICAgICBvbkNoYW5nZUJ1dHRvblNpemUgPSAoKSA9PiB7fSxcblxuICAgICAgICBlbmFibGVCdXR0b25TaGFwZSxcbiAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgIG9uQ2hhbmdlQnV0dG9uU2hhcGUgPSAoKSA9PiB7fSxcblxuICAgICAgICBlbmFibGVCdXR0b25TdHlsZSxcbiAgICAgICAgYnV0dG9uU3R5bGUsXG4gICAgICAgIG9uQ2hhbmdlQm9yZGVyU3R5bGUgPSAoKSA9PiB7fSxcblxuICAgICAgICBlbmFibGVCdXR0b25UYXJnZXQsXG4gICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgb25DaGFuZ2VCdXR0b25UYXJnZXQgPSAoKSA9PiB7fSxcblxuICAgICAgICBib3JkZXJDb2xvcixcbiAgICAgICAgb25jaGFuZ2VCb3JkZXJDb2xvciA9ICgpID0+IHt9LFxuXG4gICAgICAgIGJvcmRlckJ0blRleHRDb2xvcixcbiAgICAgICAgb25DaGFuZ2VCb3JkZXJCdG5UZXh0Q29sb3IgPSAoKSA9PiB7fSxcblxuICAgICAgICBlbmFibGVCdG5Cb3JkZXJXaWR0aCxcbiAgICAgICAgYnRuQm9yZGVyV2lkdGgsXG4gICAgICAgIG9uY2hhbmdlYnRuQm9yZGVyV2lkdGggPSAoKSA9PiB7fSxcblxuICAgICAgICBlbmFibGVCdG5Gb250V2VpZ2h0LFxuICAgICAgICBidG5Gb250V2VpZ2h0LFxuICAgICAgICBvbmNoYW5nZUJ0bkZvbnRXZWlnaHQgPSAoKSA9Pnt9LFxuXG5cbiAgICB9ID0gcHJvcHM7XG5cbiAgICAvLyBCdXR0b24gc2l6ZSB2YWx1ZXNcbiAgICBjb25zdCBidXR0b25TaXplT3B0aW9ucyA9IFtcbiAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtYnV0dG9uLXNpemUtc21hbGwnLCBsYWJlbDogX18oICdTbWFsbCcsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgIHsgdmFsdWU6ICdibG9ja3NwYXJlLWJ1dHRvbi1zaXplLW1lZGl1bScsIGxhYmVsOiBfXyggJ01lZGl1bScsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgIHsgdmFsdWU6ICdibG9ja3NwYXJlLWJ1dHRvbi1zaXplLWxhcmdlJywgbGFiZWw6IF9fKCAnTGFyZ2UnLCAnYmxvY2tzcGFyZScgKSB9LFxuICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1idXR0b24tc2l6ZS1leHRyYWxhcmdlJywgbGFiZWw6IF9fKCAnRXh0cmEgTGFyZ2UnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgXTtcblxuICAgIC8vIEJ1dHRvbiBzaGFwZVxuICAgIGNvbnN0IGJ1dHRvblNoYXBlT3B0aW9ucyA9IFtcbiAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtYnV0dG9uLXNoYXBlLXNxdWFyZScsIGxhYmVsOiBfXyggJ1NxdWFyZScsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgIHsgdmFsdWU6ICdibG9ja3NwYXJlLWJ1dHRvbi1zaGFwZS1yb3VuZGVkJywgbGFiZWw6IF9fKCAnUm91bmRlZCBTcXVhcmUnLCAnYmxvY2tzcGFyZScgKSB9LFxuICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1idXR0b24tc2hhcGUtY2lyY3VsYXInLCBsYWJlbDogX18oICdDaXJjdWxhcicsICdibG9ja3NwYXJlJyApIH1cbiAgICBdO1xuXG4gICAgY29uc3QgYnV0dG9uU3R5bGVPcHRpb25zID0gW1xuICAgICAgICB7IHZhbHVlOiAnbm9uZScsIGxhYmVsOiBfXyggJ0ZpbGwnLCAnYmxvY2tzcGFyZScgKSB9LFxuICAgICAgICB7IHZhbHVlOiAnc29saWQnLCBsYWJlbDogX18oICdCb3JkZXInLCAnYmxvY2tzcGFyZScgKSB9LFxuXG4gICAgXTtcblxuICAgIGNvbnN0IGJ0bkZvbnRXaWdodE9wdGlvbnMgPSBbXG4gICAgICAgIHt2YWx1ZTogICdub3JtYWwnLCBsYWJlbDpfXygnTm9ybWFsJywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAgJ2JvbGQnLCBsYWJlbDpfXygnQm9sZCcsJ2Jsb2Nrc3BhcmUnKX1cbiAgICBdXG5cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgeyBmYWxzZSAhPSBlbmFibGVCdXR0b25UYXJnZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdPcGVuIGxpbmsgaW4gbmV3IHdpbmRvdycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17IGJ1dHRvblRhcmdldCB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgb25DaGFuZ2VCdXR0b25UYXJnZXQgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgICAgIHsgZmFsc2UgIT0gZW5hYmxlQnV0dG9uU2l6ZSAmJiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9eyBidXR0b25TaXplIH1cbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0J1dHRvbiBTaXplJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGJ1dHRvblNpemUgfVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXsgYnV0dG9uU2l6ZU9wdGlvbnMubWFwKCAoeyB2YWx1ZSwgbGFiZWwgfSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICB9KSApIH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZUJ1dHRvblNpemUgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgICAgIHsgZmFsc2UgIT0gZW5hYmxlQnV0dG9uU2hhcGUgJiYgKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdCdXR0b24gU2hhcGUnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uU2hhcGUgfVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXsgYnV0dG9uU2hhcGVPcHRpb25zLm1hcCggKHsgdmFsdWUsIGxhYmVsIH0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgfSkgKSB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgb25DaGFuZ2VCdXR0b25TaGFwZSB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgfVxuXG4gICAgICAgICAgICB7ZmFsc2UgIT0gZW5hYmxlQnV0dG9uU3R5bGUgJiZcblxuICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0JvcmRlciBTdHlsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2J1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgIG9wdGlvbnM9e2J1dHRvblN0eWxlT3B0aW9ucy5tYXAoKHt2YWx1ZSwgbGFiZWx9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VCb3JkZXJTdHlsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHtmYWxzZSAhPSBlbmFibGVCdG5Cb3JkZXJXaWR0aCAmJiAgYnV0dG9uU3R5bGU9PT0nc29saWQnJiYgKFxuXG4gICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0JvcmRlciBXaWR0aCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtidG5Cb3JkZXJXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgbWluPXsxfVxuICAgICAgICAgICAgICAgICAgICBzdGVwPXsxfVxuICAgICAgICAgICAgICAgICAgICBtYXg9ezV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbmNoYW5nZWJ0bkJvcmRlcldpZHRofVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ZmFsc2UgIT1lbmFibGVCdG5Gb250V2VpZ2h0ICYmXG4gICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdGb250IFdlaWdodCcsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICB2YWx1ZT17IGJ0bkZvbnRXZWlnaHQgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnM9eyBidG5Gb250V2lnaHRPcHRpb25zLm1hcCggKHsgdmFsdWUsIGxhYmVsIH0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsXG4gICAgICAgICAgICAgICAgfSkgKSB9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbmNoYW5nZUJ0bkZvbnRXZWlnaHQgfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeyBmYWxzZSAhPSBlbmFibGVCdXR0b25CYWNrZ3JvdW5kQ29sb3IgJiYgYnV0dG9uU3R5bGU9PT0nbm9uZScmJiAoXG4gICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQnV0dG9uIENvbG9yIE9wdGlvbnMnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXsgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJ1dHRvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUJ1dHRvbkNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnQnV0dG9uIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJ1dHRvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCdXR0b25UZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnQnV0dG9uIFRleHQgQ29sb3InLCAnYmxvY2tzcGFyZScgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICApIH1cblxuICAgICAgICAgICAgeyAgYnV0dG9uU3R5bGU9PT0nc29saWQnJiYgKFxuICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBfXyggJ0JvcmRlciBDb2xvcicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uY2hhbmdlQm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnQm9yZGVyIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJvcmRlckJ0blRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCb3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnVGV4dHMgQ29sb3InLCAnYmxvY2tzcGFyZScgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xufVxuIiwiY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7RnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuY29uc3Qge1xuICAgIFBhbmVsQ29sb3JTZXR0aW5nc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHcmFkaWVudENvbG9ycyAocHJvcHMpIHtcbiAgICBjb25zdCB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjEsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjIsXG4gICAgICAgIGdyYWRpZW50QW5nbGUsXG4gICAgICAgIGNvbG9yTG9jYXRpb24xLFxuICAgICAgICBjb2xvckxvY2F0aW9uMixcblxuICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjEgPSAoKSA9PiB7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IyID0gKCkgPT4ge1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uQ2hhbmdlR3JhZGllbnRBbmdsZSA9ICgpID0+IHtcbiAgICAgICAgfSxcblxuICAgICAgICBvbkNoYW5nZUNvbG9yTG9jYXRpb24xID0gKCkgPT4ge1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uQ2hhbmdlQ29sb3JMb2NhdGlvbjIgPSAoKSA9PiB7fVxuICAgIH0gPSBwcm9wcztcblxuICAgIHJldHVybiAoXG5cbiAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnR3JhZGllbnQgQ29sb3IgT3B0aW9uICcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja2dyb3VuZENvbG9yMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0JhY2tncm91bmQgQ29sb3IgIzEnLCAnYmxvY2tzcGFyZScpXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBiYWNrZ3JvdW5kQ29sb3IyLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvciAjMicsICdibG9ja3NwYXJlJylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnR3JhZGllbnQgQW5nbGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtncmFkaWVudEFuZ2xlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUdyYWRpZW50QW5nbGV9XG4gICAgICAgICAgICAgICAgbWluPXstMTgwfVxuICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgbWF4PXsxODB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnTG9jYXRpb24gIzEnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjb2xvckxvY2F0aW9uMX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VDb2xvckxvY2F0aW9uMX1cbiAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgc3RlcD17MX1cbiAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0xvY2F0aW9uICMyJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17Y29sb3JMb2NhdGlvbjJ9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlQ29sb3JMb2NhdGlvbjJ9XG4gICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAvPlxuICAgICAgICA8L0ZyYWdtZW50PlxuXG4gICAgKTtcbn0iLCJpbXBvcnQgQlNidXR0b25TZXR0aW5ncyBmcm9tIFwiLi9idXR0b24tc2V0dGluZ3NcIjtcbmltcG9ydCBHcmFkaWVudENvbG9ycyBmcm9tIFwiLi4vdXRpbHMvY29tcG9uZW50L2dyYWRpZW50XCI7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9sc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFRvZ2dsZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBJbnNwZWN0b3IgQ29udHJvbHMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBidXR0b25UZXh0Q29sb3IsXG4gICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICBidXR0b25TdHlsZSxcbiAgICAgICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgYm9yZGVyQnRuVGV4dENvbG9yLFxuICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IxLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMixcbiAgICAgICAgICAgIGdyYWRpZW50QW5nbGUsXG4gICAgICAgICAgICBjb2xvckxvY2F0aW9uMSxcbiAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yLFxuICAgICAgICAgICAgYnRuRm9udFdlaWdodCxcbiAgICAgICAgICAgIGJ0bkJvcmRlcldpZHRoXG4gICAgICAgIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcyB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0J1dHRvbiBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCU2J1dHRvblNldHRpbmdzXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcGVuIGluIG5ldyB3aW5kb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25UYXJnZXQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRhcmdldD17IGJ1dHRvblRhcmdldCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25UYXJnZXQ9eyB2YWx1ZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVGFyZ2V0OiAhIGJ1dHRvblRhcmdldCB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUdyYWRpZW50ID0ge2VuYWJsZUdyYWRpZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlR3JhZGllbnQgPXsgZW5hYmxlR3JhZGllbnQgPT4gc2V0QXR0cmlidXRlcyh7ZW5hYmxlR3JhZGllbnR9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU2l6ZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplPXsgYnV0dG9uU2l6ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25TaXplPXsgYnV0dG9uU2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU2l6ZSB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gU2hhcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TaGFwZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZT17IGJ1dHRvblNoYXBlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblNoYXBlPXsgYnV0dG9uU2hhcGUgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblNoYXBlIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkJhY2tncm91bmRDb2xvcj17IGJ1dHRvbkJhY2tncm91bmRDb2xvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25Db2xvcj17IGJ1dHRvbkJhY2tncm91bmRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uQmFja2dyb3VuZENvbG9yIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiB0ZXh0IGNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yPXsgYnV0dG9uVGV4dENvbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblRleHRDb2xvcj17IGJ1dHRvblRleHRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVGV4dENvbG9yIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblN0eWxlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT17YnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCb3JkZXJTdHlsZT17YnV0dG9uU3R5bGUgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblN0eWxlIH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9e2JvcmRlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlQm9yZGVyQ29sb3I9e2JvcmRlckNvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2JvcmRlckNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3I9e2JvcmRlckJ0blRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJvcmRlckJ0blRleHRDb2xvcj17Ym9yZGVyQnRuVGV4dENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2JvcmRlckJ0blRleHRDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnRuQm9yZGVyV2lkdGg9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkJvcmRlcldpZHRoPXtidG5Cb3JkZXJXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZWJ0bkJvcmRlcldpZHRoID0ge2J0bkJvcmRlcldpZHRoID0+IHNldEF0dHJpYnV0ZXMoe2J0bkJvcmRlcldpZHRofSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdG5Gb250V2VpZ2h0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG5Gb250V2VpZ2h0PXtidG5Gb250V2VpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlQnRuRm9udFdlaWdodD17YnRuRm9udFdlaWdodCA9PiBzZXRBdHRyaWJ1dGVzKHtidG5Gb250V2VpZ2h0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAge2J1dHRvblN0eWxlPT09J25vbmUnJiZcblxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUgR3JhZGllbnQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZW5hYmxlR3JhZGllbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtlbmFibGVHcmFkaWVudDogIWVuYWJsZUdyYWRpZW50fSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCAmJiBidXR0b25TdHlsZT09PSdub25lJyYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JhZGllbnRDb2xvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMT17YmFja2dyb3VuZENvbG9yMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IxPXtiYWNrZ3JvdW5kQ29sb3IxID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tncm91bmRDb2xvcjF9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyPXtiYWNrZ3JvdW5kQ29sb3IyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjI9e2JhY2tncm91bmRDb2xvcjIgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yMn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50QW5nbGU9e2dyYWRpZW50QW5nbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlR3JhZGllbnRBbmdsZT17Z3JhZGllbnRBbmdsZSA9PiBzZXRBdHRyaWJ1dGVzKHtncmFkaWVudEFuZ2xlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjE9e2NvbG9yTG9jYXRpb24xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUNvbG9yTG9jYXRpb24xPXtjb2xvckxvY2F0aW9uMSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2xvckxvY2F0aW9uMX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yPXtjb2xvckxvY2F0aW9uMn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMj17Y29sb3JMb2NhdGlvbjIgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JMb2NhdGlvbjJ9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImNvbnN0IGJ1dHRvblN0eWxlT3B0aW9uID0gKGF0dHJpYnV0ZXMpPT57XG4gICAgbGV0IGJ1dHRvblN0eWxlcyA9ICcnO1xuXG4gICAgaWYgKGF0dHJpYnV0ZXMuYnV0dG9uU3R5bGU9PT0nbm9uZScpe1xuXG4gICAgICAgIGlmKGF0dHJpYnV0ZXMuZW5hYmxlR3JhZGllbnQgID09IHRydWUpe1xuICAgICAgICAgICAgY29uc3QgYW5nbGUgPSBhdHRyaWJ1dGVzLmdyYWRpZW50QW5nbGUrJ2RlZyc7XG4gICAgICAgICAgICBjb25zdCBsb2NhMSAgPSBhdHRyaWJ1dGVzLmNvbG9yTG9jYXRpb24xKyclJztcbiAgICAgICAgICAgIGNvbnN0IGxvY2EyICA9IGF0dHJpYnV0ZXMuY29sb3JMb2NhdGlvbjIrJyUnO1xuICAgICAgICAgICAgYnV0dG9uU3R5bGVzID0ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTpgbGluZWFyLWdyYWRpZW50KCR7YW5nbGV9LCR7YXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IxP2F0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yMTonIzNCMUE1Qid9ICR7bG9jYTF9LCR7YXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IyP2F0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yMjonIzhCMjQ5Qyd9ICR7bG9jYTJ9KWAsXG4gICAgICAgICAgICAgICAgY29sb3I6IChhdHRyaWJ1dGVzLmJ1dHRvblRleHRDb2xvcik/YXR0cmlidXRlcy5idXR0b25UZXh0Q29sb3I6JyNmZmYnLFxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6YXR0cmlidXRlcy5idG5Gb250V2VpZ2h0LFxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOmF0dHJpYnV0ZXMuYnRuQm9yZGVyV2lkdGgrXCJweFwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgYnV0dG9uU3R5bGVzID0ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAoYXR0cmlidXRlcy5idXR0b25UZXh0Q29sb3IpP2F0dHJpYnV0ZXMuYnV0dG9uVGV4dENvbG9yOicjZmZmJyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6KGF0dHJpYnV0ZXMuYnV0dG9uQmFja2dyb3VuZENvbG9yKT9hdHRyaWJ1dGVzLmJ1dHRvbkJhY2tncm91bmRDb2xvcjonIzNjMWE1YicsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDphdHRyaWJ1dGVzLmJ0bkZvbnRXZWlnaHQsXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6YXR0cmlidXRlcy5idG5Cb3JkZXJXaWR0aCtcInB4XCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICB9ZWxzZXtcbiAgICAgICAgYnV0dG9uU3R5bGVzID17XG4gICAgICAgICAgICBjb2xvcjooYXR0cmlidXRlcy5ib3JkZXJCdG5UZXh0Q29sb3IpP2F0dHJpYnV0ZXMuYm9yZGVyQnRuVGV4dENvbG9yOicjNDA0MDQwJyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjondHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IChhdHRyaWJ1dGVzLmJvcmRlckNvbG9yKT9hdHRyaWJ1dGVzLmJvcmRlckNvbG9yOicjM2MxYTViJyxcbiAgICAgICAgICAgIGJvcmRlclN0eWxlOmF0dHJpYnV0ZXMuYnV0dG9uU3R5bGUsXG4gICAgICAgICAgICBmb250V2VpZ2h0OmF0dHJpYnV0ZXMuYnRuRm9udFdlaWdodCxcbiAgICAgICAgICAgIGJvcmRlcldpZHRoOmF0dHJpYnV0ZXMuYnRuQm9yZGVyV2lkdGgrXCJweFwiXG5cblxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICByZXR1cm4gYnV0dG9uU3R5bGVzO1xufVxuZXhwb3J0IGRlZmF1bHQgYnV0dG9uU3R5bGVPcHRpb247IiwiY29uc3QgYnV0dG9uQXR0cmlidXRlcyA9e1xuXG4gICAgc2VjdGlvbkFsaWdubWVudDp7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiY2VudGVyXCJcbiAgICB9LFxuXG4gICAgYnV0dG9uVGV4dDoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIkdldCBTdGFydGVkXCJcbiAgICB9LFxuICAgIGJ1dHRvblVybDoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBzb3VyY2U6IFwiYXR0cmlidXRlXCIsXG4gICAgICAgIHNlbGVjdG9yOiBcImFcIixcbiAgICAgICAgYXR0cmlidXRlOiBcImhyZWZcIlxuICAgIH0sXG5cbiAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3I6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCIjM2MxYTViXCJcbiAgICB9LFxuICAgIGJ1dHRvblRleHRDb2xvcjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiNmZmZcIlxuICAgIH0sXG4gICAgYnV0dG9uU2l6ZToge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcImJsb2Nrc3BhcmUtYnV0dG9uLXNpemUtc21hbGxcIlxuICAgIH0sXG4gICAgYnV0dG9uU2hhcGU6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCJibG9ja3NwYXJlLWJ1dHRvbi1zaGFwZS1yb3VuZGVkXCJcbiAgICB9LFxuICAgIGJ1dHRvblRhcmdldDoge1xuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuXG4gICAgYnV0dG9uU3R5bGU6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCJub25lXCJcbiAgICB9LFxuICAgIGJvcmRlckNvbG9yOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiIzNjMWE1YlwiXG4gICAgfSxcbiAgICBib3JkZXJCdG5UZXh0Q29sb3I6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCIjNDA0MDQwXCJcbiAgICB9LFxuICAgIGVuYWJsZUdyYWRpZW50OiB7XG4gICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgYmFja2dyb3VuZENvbG9yMToge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiMzQjFBNUJcIlxuICAgIH0sXG4gICAgYmFja2dyb3VuZENvbG9yMjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiM4QjI0OUNcIlxuICAgIH0sXG4gICAgZ3JhZGllbnRBbmdsZToge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAtOTBcbiAgICB9LFxuICAgIGNvbG9yTG9jYXRpb24xOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDMwXG4gICAgfSxcbiAgICBjb2xvckxvY2F0aW9uMjoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiA3MFxuICAgIH1cbiAgICAsYnRuQm9yZGVyV2lkdGg6e1xuICAgICAgICB0eXBlOlwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6MVxuICAgIH0sXG4gICAgYnRuRm9udFdlaWdodDp7XG4gICAgICAgIHR5cGU6XCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDpcIm5vcm1hbFwiXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBidXR0b25BdHRyaWJ1dGVzOyIsImltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEJTQnV0dG9uIGZyb20gJy4vZWRpdCc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gXCIuL2luc3BlY3RvclwiO1xuaW1wb3J0IGJ1dHRvblN0eWxlT3B0aW9uIGZyb20gJy4uL3V0aWxzL3N0eWxlcyc7XG5jb25zdCB7bmFtZSxjYXRlZ29yeX0gPW1ldGFkYXRhO1xuaW1wb3J0IGJ1dHRvbkF0dHJpYnV0ZXMgZnJvbSAgJy4uL3V0aWxzL2F0dHJpYnV0ZXMvYnV0dG9uJztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5jb25zdCB7Q29tcG9uZW50fSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICBBbGlnbm1lbnRUb29sYmFyLFxuICAgIEJsb2NrQ29udHJvbHMsXG4gICAgVVJMSW5wdXRcbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHtcbiAgICBJY29uQnV0dG9uLFxuICAgIERhc2hpY29uXG59ID0gd3AuY29tcG9uZW50cztcbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5jbGFzcyBCU0J1dHRvbkJsb2NrIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgICAgICAgICAgYnV0dG9uVXJsLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgYXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBidG5TdHlsZSA9IHtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uIChhdHRyaWJ1dGVzKVxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm5bXG4gICAgICAgICAgICA8QmxvY2tDb250cm9scyBrZXk9XCJjb250cm9sc1wiPlxuICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgc2VjdGlvbkFsaWdubWVudCB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyBzZWN0aW9uQWxpZ25tZW50OiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz4sXG4gICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgIC8+LFxuXG4gICAgICAgICAgICA8QlNCdXR0b24geyAuLi50aGlzLnByb3BzIH0+XG4gICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9eyBfXyggJ0J1dHRvbiB0ZXh0Li4uJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uVGV4dCB9XG4gICAgICAgICAgICAgICAgICAgIGFsbG93ZWRGb3JtYXRzPXsgW10gfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXsgYnRuU3R5bGUgfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVGV4dDogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JTQnV0dG9uPixcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgIGtleT1cImZvcm0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGBibG9ja3MtYnV0dG9uX19pbmxpbmUtbGluayBibG9ja3NwYXJlLWJ1dHRvbi0ke3NlY3Rpb25BbGlnbm1lbnR9YH1cbiAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpIH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IHNlY3Rpb25BbGlnbm1lbnRcbiAgICAgICAgICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RGFzaGljb24gaWNvbj17ICdhZG1pbi1saW5rcycgfSAvPlxuICAgICAgICAgICAgICAgICAgICA8VVJMSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ1dHRvbi11cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBidXR0b25VcmwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblVybDogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImVkaXRvci1icmVha1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnQnV5JywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgKVxuICAgICAgICBdO1xuICAgIH1cblxufVxuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBCdXR0b24nLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnUHJvbXB0IHZpc2l0b3JzIHRvIHRha2UgYWN0aW9uIHdpdGggbXVsdGlwbGUgYnV0dG9ucywgc2lkZSBieSBzaWRlLicsICdibG9ja3NwYXJlJyksXG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLmJ1dHRvbixcbiAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgLi4uYnV0dG9uQXR0cmlidXRlc1xuICAgIH0sXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2J1dHRvbicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdjdGEnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY2FsbCB0byBhY3Rpb24nLCAnYmxvY2tzcGFyZScpLFxuICAgIF0sXG4gICAgZXhhbXBsZTp7XG4gICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgc2VjdGlvbkFsaWdubWVudDpcImNlbnRlclwiLFxuICAgICAgICAgICAgYnV0dG9uVGV4dDpfXyhcIkdldCBTdGFydGVkXCIsXCJibG9ja3NwYXJlXCIpLFxuICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yOlwiIzNjMWE1YlwiLFxuICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yOlwiI2ZmZlwiLFxuICAgICAgICAgICAgYnV0dG9uU2l6ZTpcImJsb2Nrc3BhcmUtYnV0dG9uLXNpemUtc21hbGxcIixcbiAgICAgICAgICAgIGJ1dHRvblNoYXBlOlwiYmxvY2tzcGFyZS1idXR0b24tc2hhcGUtcm91bmRlZFwiXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVkaXQ6IEJTQnV0dG9uQmxvY2ssXG4gICAgc2F2ZTogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgICAgICBidXR0b25VcmwsXG4gICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICBidXR0b25UYXJnZXQsXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuXG5cbiAgICAgICAgY29uc3QgYnRuU3R5bGUgPSB7XG4gICAgICAgICAgICAuLi5idXR0b25TdHlsZU9wdGlvbiAocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEJTQnV0dG9uIHsgLi4ucHJvcHMgfT5cbiAgICAgICAgICAgICAgICB7XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBidXR0b24gdGV4dCBhbmQgb3V0cHV0XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXsgYnV0dG9uVXJsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9eyBidXR0b25UYXJnZXQgPyAnX2JsYW5rJyA6IG51bGwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD17IGJ1dHRvblRhcmdldCA/ICdub29wZW5lciBub3JlZmVycmVyJyA6IG51bGwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXsgYnRuU3R5bGUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uVGV4dCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICA8L0JTQnV0dG9uPlxuICAgICAgICApO1xuICAgIH0sXG5cbn0pOyIsImNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBSYW5nZUNvbnRyb2wgfSA9IHdwLmNvbXBvbmVudHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhZGRpbmcoIHByb3BzICkge1xuICAgIGNvbnN0IHtcblxuICAgICAgICAvLyBQYWRkaW5nIHByb3BzXG4gICAgICAgIHBhZGRpbmcsXG4gICAgICAgIHBhZGRpbmdUaXRsZSxcbiAgICAgICAgcGFkZGluZ0hlbHAsXG4gICAgICAgIHBhZGRpbmdNaW4sXG4gICAgICAgIHBhZGRpbmdNYXgsXG4gICAgICAgIHBhZGRpbmdFbmFibGUsXG4gICAgICAgIG9uQ2hhbmdlUGFkZGluZyA9ICgpID0+IHt9LFxuXG4gICAgICAgIC8vIFBhZGRpbmcgdG9wIHByb3BzXG4gICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgIHBhZGRpbmdUb3BNaW4sXG4gICAgICAgIHBhZGRpbmdUb3BNYXgsXG4gICAgICAgIHBhZGRpbmdFbmFibGVUb3AsXG4gICAgICAgIG9uQ2hhbmdlUGFkZGluZ1RvcCA9ICgpID0+IHt9LFxuXG4gICAgICAgIC8vIFBhZGRpbmcgcmlnaHQgcHJvcHNcbiAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICBwYWRkaW5nUmlnaHRNaW4sXG4gICAgICAgIHBhZGRpbmdSaWdodE1heCxcbiAgICAgICAgcGFkZGluZ0VuYWJsZVJpZ2h0LFxuICAgICAgICBvbkNoYW5nZVBhZGRpbmdSaWdodCA9ICgpID0+IHt9LFxuXG4gICAgICAgIC8vIFBhZGRpbmcgYm90dG9tIHByb3BzXG4gICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgIHBhZGRpbmdCb3R0b21NaW4sXG4gICAgICAgIHBhZGRpbmdCb3R0b21NYXgsXG4gICAgICAgIHBhZGRpbmdFbmFibGVCb3R0b20sXG4gICAgICAgIG9uQ2hhbmdlUGFkZGluZ0JvdHRvbSA9ICgpID0+IHt9LFxuXG4gICAgICAgIC8vIFBhZGRpbmcgbGVmdCBwcm9wc1xuICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgcGFkZGluZ0xlZnRNaW4sXG4gICAgICAgIHBhZGRpbmdMZWZ0TWF4LFxuICAgICAgICBwYWRkaW5nRW5hYmxlTGVmdCxcbiAgICAgICAgb25DaGFuZ2VQYWRkaW5nTGVmdCA9ICgpID0+IHt9LFxuXG4gICAgICAgIC8vIFBhZGRpbmcgdmVydGljYWwgcHJvcHNcbiAgICAgICAgcGFkZGluZ1ZlcnRpY2FsLFxuICAgICAgICBwYWRkaW5nRW5hYmxlVmVydGljYWwsXG4gICAgICAgIHBhZGRpbmdWZXJ0aWNhbE1pbixcbiAgICAgICAgcGFkZGluZ1ZlcnRpY2FsTWF4LFxuICAgICAgICBvbkNoYW5nZVBhZGRpbmdWZXJ0aWNhbCA9ICgpID0+IHt9LFxuXG4gICAgICAgIC8vIFBhZGRpbmcgaG9yaXpvbnRhbCBwcm9wc1xuICAgICAgICBwYWRkaW5nSG9yaXpvbnRhbCxcbiAgICAgICAgcGFkZGluZ0VuYWJsZUhvcml6b250YWwsXG4gICAgICAgIHBhZGRpbmdIb3Jpem9udGFsTWluLFxuICAgICAgICBwYWRkaW5nSG9yaXpvbnRhbE1heCxcbiAgICAgICAgb25DaGFuZ2VQYWRkaW5nSG9yaXpvbnRhbCA9ICgpID0+IHt9XG4gICAgfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgeyBwYWRkaW5nRW5hYmxlICYmIChcbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgcGFkZGluZ1RpdGxlID8gcGFkZGluZ1RpdGxlIDogX18oICdQYWRkaW5nJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICBoZWxwPXsgcGFkZGluZ0hlbHAgPyBwYWRkaW5nSGVscCA6IG51bGwgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHBhZGRpbmcgfVxuICAgICAgICAgICAgICAgICAgICBtaW49eyBwYWRkaW5nTWluIH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsgcGFkZGluZ01heCB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgb25DaGFuZ2VQYWRkaW5nIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICB7IHBhZGRpbmdFbmFibGVUb3AgJiYgKFxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ1BhZGRpbmcgVG9wJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHBhZGRpbmdUb3AgfVxuICAgICAgICAgICAgICAgICAgICBtaW49eyBwYWRkaW5nVG9wTWluIH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsgcGFkZGluZ1RvcE1heCB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgb25DaGFuZ2VQYWRkaW5nVG9wIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICB7IHBhZGRpbmdFbmFibGVSaWdodCAmJiAoXG4gICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnUGFkZGluZyBSaWdodCcsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBwYWRkaW5nUmlnaHQgfVxuICAgICAgICAgICAgICAgICAgICBtaW49eyBwYWRkaW5nUmlnaHRNaW4gfVxuICAgICAgICAgICAgICAgICAgICBtYXg9eyBwYWRkaW5nUmlnaHRNYXggfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IG9uQ2hhbmdlUGFkZGluZ1JpZ2h0IH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICB7IHBhZGRpbmdFbmFibGVCb3R0b20gJiYgKFxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ1BhZGRpbmcgQm90dG9tJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHBhZGRpbmdCb3R0b20gfVxuICAgICAgICAgICAgICAgICAgICBtaW49eyBwYWRkaW5nQm90dG9tTWluIH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsgcGFkZGluZ0JvdHRvbU1heCB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgb25DaGFuZ2VQYWRkaW5nQm90dG9tIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICB7IHBhZGRpbmdFbmFibGVMZWZ0ICYmIChcbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdQYWRkaW5nIExlZnQnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgcGFkZGluZ0xlZnQgfVxuICAgICAgICAgICAgICAgICAgICBtaW49eyBwYWRkaW5nTGVmdE1pbiB9XG4gICAgICAgICAgICAgICAgICAgIG1heD17IHBhZGRpbmdMZWZ0TWF4IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZVBhZGRpbmdMZWZ0IH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICB7IHBhZGRpbmdFbmFibGVWZXJ0aWNhbCAmJiAoXG4gICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnUGFkZGluZyBWZXJ0aWNhbCcsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBwYWRkaW5nVmVydGljYWwgfVxuICAgICAgICAgICAgICAgICAgICBtaW49eyBwYWRkaW5nVmVydGljYWxNaW4gfVxuICAgICAgICAgICAgICAgICAgICBtYXg9eyBwYWRkaW5nVmVydGljYWxNYXggfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IG9uQ2hhbmdlUGFkZGluZ1ZlcnRpY2FsIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICB7IHBhZGRpbmdFbmFibGVIb3Jpem9udGFsICYmIChcbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdQYWRkaW5nIEhvcml6b250YWwnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgcGFkZGluZ0hvcml6b250YWwgfVxuICAgICAgICAgICAgICAgICAgICBtaW49eyBwYWRkaW5nSG9yaXpvbnRhbE1pbiB9XG4gICAgICAgICAgICAgICAgICAgIG1heD17IHBhZGRpbmdIb3Jpem9udGFsTWF4IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZVBhZGRpbmdIb3Jpem9udGFsIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSB9XG4gICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKTtcbn1cbiIsImNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBSYW5nZUNvbnRyb2wgfSA9IHdwLmNvbXBvbmVudHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1hcmdpbiggcHJvcHMgKSB7XG4gICAgY29uc3Qge1xuXG4gICAgICAgIC8vIFBhZGRpbmcgcHJvcHNcbiAgICAgICAgbWFyZ2luLFxuICAgICAgICBtYXJnaW5UaXRsZSxcbiAgICAgICAgbWFyZ2luSGVscCxcbiAgICAgICAgbWFyZ2luTWluLFxuICAgICAgICBtYXJnaW5NYXgsXG4gICAgICAgIG1hcmdpbkVuYWJsZSxcbiAgICAgICAgb25DaGFuZ2VNYXJnaW4gPSAoKSA9PiB7fSxcblxuICAgICAgICAvLyBNYXJnaW4gdG9wIHByb3BzXG4gICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgbWFyZ2luVG9wTWluLFxuICAgICAgICBtYXJnaW5Ub3BNYXgsXG4gICAgICAgIG1hcmdpbkVuYWJsZVRvcCxcbiAgICAgICAgb25DaGFuZ2VNYXJnaW5Ub3AgPSAoKSA9PiB7fSxcblxuICAgICAgICAvLyBNYXJnaW4gYm90dG9tIHByb3BzXG4gICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgbWFyZ2luQm90dG9tTWluLFxuICAgICAgICBtYXJnaW5Cb3R0b21NYXgsXG4gICAgICAgIG1hcmdpbkVuYWJsZUJvdHRvbSxcbiAgICAgICAgb25DaGFuZ2VNYXJnaW5Cb3R0b20gPSAoKSA9PiB7fSxcblxuXG4gICAgfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgeyBtYXJnaW5FbmFibGUgJiYgKFxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBtYXJnaW5UaXRsZSA/IG1hcmdpblRpdGxlIDogX18oICdNYXJnaW4nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGhlbHA9eyBtYXJnaW5IZWxwID8gbWFyZ2luSGVscCA6IG51bGwgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IG1hcmdpbiB9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17IG1hcmdpbk1pbiB9XG4gICAgICAgICAgICAgICAgICAgIG1heD17IG1hcmdpbk1heCB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgb25DaGFuZ2VNYXJnaW4gfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgICAgIHsgbWFyZ2luRW5hYmxlVG9wICYmIChcbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdNYXJnaW4gVG9wJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IG1hcmdpblRvcCB9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17IG1hcmdpblRvcE1pbiB9XG4gICAgICAgICAgICAgICAgICAgIG1heD17IG1hcmdpblRvcE1heCB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgb25DaGFuZ2VNYXJnaW5Ub3AgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cblxuICAgICAgICAgICAgeyBtYXJnaW5FbmFibGVCb3R0b20gJiYgKFxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ01hcmdpbiBCb3R0b20nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgbWFyZ2luQm90dG9tIH1cbiAgICAgICAgICAgICAgICAgICAgbWluPXsgbWFyZ2luQm90dG9tTWluIH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsgbWFyZ2luQm90dG9tTWF4IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZU1hcmdpbkJvdHRvbSB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgfVxuXG4gICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKTtcbn1cbiIsImNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0ZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7XG5cbiAgICBUb2dnbGVDb250cm9sLFxuICAgIFBhbmVsQm9keSxcbiAgICBTZWxlY3RDb250cm9sLFxuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5jb25zdCB7XG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxuXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJTSGVhZGVyU2V0dGluZ3MocHJvcHMpIHtcbiAgICBjb25zdCB7XG5cbiAgICAgICAgZW5hYmxlQmxvY2tHYXBzLFxuXG4gICAgICAgIGVuYWJsZWhlYWRlcmxheW91dE9wdGlvbixcbiAgICAgICAgaGVhZGVybGF5b3V0T3B0aW9uLFxuICAgICAgICBvbkNoYW5nZUhlYWRlclN0eWxlID0gKCkgPT4ge30sXG5cbiAgICAgICAgdGl0bGVGb250U2l6ZSxcbiAgICAgICAgb25DaGFuZ2V0aXRsZUZvbnRTaXplID0gKCkgPT57fSxcblxuICAgICAgICBzdWJ0aXRsZUZvbnRTaXplLFxuICAgICAgICBvbkNoYW5nZXN1YnRpdGxlRm9udFNpemUgPSAoKSA9Pnt9LFxuXG4gICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgb25DaGFuZ2VIZWFkZXJUYWcgPSAoKSA9PiB7fSxcblxuICAgICAgICBlbmFibGVoZWFkZXJib3hDb2xvcixcbiAgICAgICAgaGVhZGVyYm94Q29sb3IsXG4gICAgICAgIG9uQ2hhbmdlYm94Y29sb3IgPSAoKSA9PiB7fSxcblxuICAgICAgICBkYXNoQ29sb3IsXG4gICAgICAgIG9uQ2hhbmdlRGFzaENvbG9yID0gKCkgPT4ge30sXG5cbiAgICAgICAgaGVhZGVydGl0bGVDb2xvcixcbiAgICAgICAgb25DaGFuZ2V0aXRsZWNvbG9yID0gKCkgPT4ge30sXG5cbiAgICAgICAgdGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcCA9ICgpID0+IHt9LFxuXG4gICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdCb3R0b20gPSAoKSA9PiB7fSxcblxuICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yLFxuICAgICAgICBvbkNoYW5nZXN1YnRpdGxlY29sb3IgPSAoKSA9PiB7fSxcblxuICAgICAgICBzdWJ0aXRsZVBhZGRpbmdUb3AsXG4gICAgICAgIG9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nVG9wID0gKCkgPT4ge30sXG5cbiAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ0JvdHRvbSA9ICgpID0+IHt9LFxuXG4gICAgICAgIGhlYWRlcnBhZGRpbmdUb3AsXG4gICAgICAgIG9uQ2hhbmdlaGVhZGVycGFkZGluZ1RvcCA9ICgpID0+IHt9LFxuXG4gICAgICAgIGhlYWRlcnBhZGRpbmdSaWdodCxcbiAgICAgICAgb25DaGFuZ2VoZWFkZXJwYWRkaW5nUmlnaHQgPSAoKSA9PiB7fSxcblxuICAgICAgICBoZWFkZXJwYWRkaW5nQm90dG9tLFxuICAgICAgICBvbkNoYW5nZWhlYWRlcnBhZGRpbmdCb3R0b20gPSAoKSA9PiB7fSxcblxuICAgICAgICBoZWFkZXJwYWRkaW5nTGVmdCxcbiAgICAgICAgb25DaGFuZ2VoZWFkZXJwYWRkaW5nTGVmdCA9ICgpID0+IHt9LFxuXG4gICAgICAgIGhlYWRlcm1hcmdpblRvcCxcbiAgICAgICAgb25DaGFuZ2VoZWFkZXJtYXJnaW5Ub3AgPSAoKSA9PiB7fSxcblxuICAgICAgICBoZWFkZXJtYXJnaW5Cb3R0b20sXG4gICAgICAgIG9uQ2hhbmdlaGVhZGVybWFyZ2luQm90dG9tID0gKCkgPT4ge31cblxuXG4gICAgfSA9IHByb3BzO1xuXG4gICAgY29uc3QgaGVhZGVyU3R5bGVPcHRpb24gPSBbXG4gICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc3R5bGUxJywgbGFiZWw6IF9fKCdMYXlvdXQgMScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXN0eWxlMicsIGxhYmVsOiBfXygnTGF5b3V0IDInLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zdHlsZTMnLCBsYWJlbDogX18oJ0xheW91dCAzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICBdO1xuXG4gICAgY29uc3QgaGVhZGVyVGFnU2VsZWN0T3B0aW9uID0gW1xuICAgICAgICB7dmFsdWU6ICdoMScsIGxhYmVsOiBfXygnaDEnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAnaDInLCBsYWJlbDogX18oJ2gyJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ2gzJywgbGFiZWw6IF9fKCdoMycsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdoNCcsIGxhYmVsOiBfXygnaDQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAnaDUnLCBsYWJlbDogX18oJ2g1JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ2g2JywgbGFiZWw6IF9fKCdoNicsICdibG9ja3NwYXJlJyl9LFxuXG4gICAgXTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgIHtmYWxzZSAhPSBlbmFibGVoZWFkZXJsYXlvdXRPcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdMYXlvdXRzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnSGVhZGVyIFN0eWxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJsYXlvdXRPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtoZWFkZXJTdHlsZU9wdGlvbi5tYXAoKHt2YWx1ZSwgbGFiZWx9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUhlYWRlclN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgdGl0bGU9e19fKCdUZXh0IFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlIFRhZycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2hlYWRlclRhZ1NlbGVjdE9wdGlvbi5tYXAoKHt2YWx1ZSwgbGFiZWx9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlSGVhZGVyVGFnfVxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVGl0bGUgRm9udCBTaXplJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZXRpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17MTR9XG4gICAgICAgICAgICAgICAgICAgIHN0ZXA9ezJ9XG4gICAgICAgICAgICAgICAgICAgIG1heD17NjB9XG4gICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbG9yIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaGVhZGVydGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2V0aXRsZWNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnVGl0bGUgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGFzaENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZURhc2hDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0Rhc2ggQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuXG4gICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgdGl0bGU9e19fKCdDb250ZW50IEdhcCBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdUaXRsZSBHYXBzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1BhZGRpbmcgVG9wJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdQYWRkaW5nIEJvdHRvbScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGl0bGVQYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdldGl0bGVQYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnU3VidGl0bGUgR2FwcycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdQYWRkaW5nIFRvcCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c3VidGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlc3VidGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnUGFkZGluZyBCb3R0b20nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3N1YnRpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heD17MTAwfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICB7IWZhbHNlID09IGVuYWJsZUJsb2NrR2FwcyAmJihcbiAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1BhZGRpbmcgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0hlYWRlciBQYWRkaW5nIFRvcCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJwYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VoZWFkZXJwYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgIG1heD17MTAwfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0hlYWRlciBQYWRkaW5nIExlZnQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVycGFkZGluZ0xlZnR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZWhlYWRlcnBhZGRpbmdMZWZ0fVxuICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgIG1heD17MTAwfVxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnSGVhZGVyIFBhZGRpbmcgQm90dG9tJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlcnBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZWhlYWRlcnBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnSGVhZGVyIFBhZGRpbmcgUmlnaHQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVycGFkZGluZ1JpZ2h0fVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VoZWFkZXJwYWRkaW5nUmlnaHR9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ01hcmdpbiBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnTWFyZ2luIFRvcCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVybWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlaGVhZGVybWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnTWFyZ2luIEJvdHRvbScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVybWFyZ2luQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlaGVhZGVybWFyZ2luQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgKX1cblxuXG5cbiAgICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xufVxuIiwiY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7RnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuY29uc3Qge1xuICAgIFBhbmVsQ29sb3JTZXR0aW5nc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCb3hTaGFkb3cgKHByb3BzKSB7XG4gICAgY29uc3Qge1xuICAgICAgICB4T2Zmc2V0LFxuICAgICAgICB5T2Zmc2V0LFxuICAgICAgICBibHVyLFxuICAgICAgICBzcHJlYWQsXG4gICAgICAgIHNoYWRvd0NvbG9yLFxuXG4gICAgICAgIG9uQ2hhbmdlWE9mZnNldCA9ICgpID0+IHtcbiAgICAgICAgfSxcblxuICAgICAgICBvbkNoYW5nZVlPZmZzZXQgPSAoKSA9PiB7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25DaGFuZ2VCbHVyID0gKCkgPT4ge1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uQ2hhbmdlU3ByZWFkID0gKCkgPT4ge1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uQ2hhbmdlU2hhZG93Q29sb3IgPSAoKSA9PiB7fVxuICAgIH0gPSBwcm9wcztcblxuICAgIHJldHVybiAoXG5cbiAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQm94IFNoYWRvdyBPcHRpb24gJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzaGFkb3dDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdTaGFkb3cgQ29sb3InLCAnYmxvY2tzcGFyZScpXG4gICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG5cbiAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1ggT2Zmc2V0JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17eE9mZnNldH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VYT2Zmc2V0fVxuICAgICAgICAgICAgICAgIG1pbj17LTEwMH1cbiAgICAgICAgICAgICAgICBzdGVwPXsxfVxuICAgICAgICAgICAgICAgIG1heD17MTgwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1kgT2Zmc2V0JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17eU9mZnNldH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VZT2Zmc2V0fVxuICAgICAgICAgICAgICAgIG1pbj17LTEwMH1cbiAgICAgICAgICAgICAgICBzdGVwPXsxfVxuICAgICAgICAgICAgICAgIG1heD17MTAwfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnQmx1cicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2JsdXJ9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlQmx1cn1cbiAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgc3RlcD17MX1cbiAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1NwcmVhZCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3NwcmVhZH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VTcHJlYWR9XG4gICAgICAgICAgICAgICAgbWluPXstMTAwfVxuICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAvPlxuICAgICAgICA8L0ZyYWdtZW50PlxuXG4gICAgKTtcbn0iLCJpbXBvcnQgUGFkZGluZyBmcm9tICcuLy4uLy4uL3V0aWxzL3BhZGRpbmcnO1xuaW1wb3J0IE1hcmdpbiBmcm9tICcuLy4uLy4uL3V0aWxzL21hcmdpbic7XG5pbXBvcnQgQlNIZWFkZXJTZXR0aW5ncyBmcm9tIFwiLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXItc2V0dGluZ3NcIjtcbmltcG9ydCBCU2J1dHRvblNldHRpbmdzIGZyb20gXCIuLi8uLi9idXR0b24vYnV0dG9uLXNldHRpbmdzXCI7XG5pbXBvcnQgR3JhZGllbnRDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ncmFkaWVudFwiO1xuaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiO1xuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBNZWRpYVVwbG9hZCxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFJhbmdlQ29udHJvbCxcbiAgICBQYW5lbEJvZHksXG4gICAgSWNvbkJ1dHRvbixcbiAgICBUb2dnbGVDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIG9wYWNpdHlSYXRpbyxcbiAgICAgICAgICAgIGN0YUJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgIHNob3dJbWFnZSxcbiAgICAgICAgICAgIGltZ1VSTCxcbiAgICAgICAgICAgIGltZ0lELFxuICAgICAgICAgICAgaW1nQWx0LFxuICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yLFxuICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICBidXR0b25UYXJnZXQsXG4gICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgdGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICBoZWFkZXJUYWdPcHRpb24sXG4gICAgICAgICAgICBoZWFkZXJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgaGVhZGVyc3VidGl0bGVDb2xvcixcbiAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbixcbiAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgIGhlYWRlcmJveENvbG9yLFxuICAgICAgICAgICAgZGFzaENvbG9yLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kRml4LFxuICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IxLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMixcbiAgICAgICAgICAgIGdyYWRpZW50QW5nbGUsXG4gICAgICAgICAgICBjb2xvckxvY2F0aW9uMSxcbiAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgZW5hYmxlQm94U2hhZG93LFxuICAgICAgICAgICAgeE9mZnNldCxcbiAgICAgICAgICAgIHlPZmZzZXQsXG4gICAgICAgICAgICBibHVyLFxuICAgICAgICAgICAgc3ByZWFkLFxuICAgICAgICAgICAgc2hhZG93Q29sb3IsXG4gICAgICAgICAgICBidG5Gb250V2VpZ2h0LFxuICAgICAgICAgICAgYnRuQm9yZGVyV2lkdGhcbiAgICAgICAgfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3Qge3NldEF0dHJpYnV0ZXN9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICAvLyBDaGFuZ2UgdGhlIGltYWdlXG4gICAgICAgIGNvbnN0IG9uU2VsZWN0SW1hZ2UgPSBpbWcgPT4ge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgaW1nSUQ6IGltZy5pZCxcbiAgICAgICAgICAgICAgICBpbWdVUkw6IGltZy51cmwsXG4gICAgICAgICAgICAgICAgaW1nQWx0OiBpbWcuYWx0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQ2xlYXIgdGhlIGltYWdlXG4gICAgICAgIGNvbnN0IG9uUmVtb3ZlSW1hZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICBpbWdJRDogbnVsbCxcbiAgICAgICAgICAgICAgICBpbWdVUkw6IG51bGwsXG4gICAgICAgICAgICAgICAgaW1nQWx0OiBudWxsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7Y3RhQmFja0dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0hlYWRlciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXJTZXR0aW5nc1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQmxvY2tHYXBzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZUZvbnRTaXplPXtzdWJ0aXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb249e2hlYWRlcmxheW91dE9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUhlYWRlclN0eWxlPXtoZWFkZXJsYXlvdXRPcHRpb24gPT4gc2V0QXR0cmlidXRlcyh7IGhlYWRlcmxheW91dE9wdGlvbiB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJUYWdPcHRpb249e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUhlYWRlclRhZz17aGVhZGVyVGFnT3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRhZ09wdGlvbn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyYm94Q29sb3I9e2hlYWRlcmJveENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlYm94Y29sb3I9e2hlYWRlcmJveENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlcmJveENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZURhc2hDb2xvcj17ZGFzaENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2Rhc2hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcj17aGVhZGVydGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tPXt0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdCb3R0b209IHt0aXRsZVBhZGRpbmdCb3R0b20gPT5zZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdCb3R0b219KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZWNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJzdWJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdCb3R0b219KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0J1dHRvbiBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPEJTYnV0dG9uU2V0dGluZ3NcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wZW4gaW4gbmV3IHdpbmRvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblRhcmdldD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGFyZ2V0PXsgYnV0dG9uVGFyZ2V0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblRhcmdldD17IHZhbHVlID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyBidXR0b25UYXJnZXQ6ICEgYnV0dG9uVGFyZ2V0IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQgPSB7ZW5hYmxlR3JhZGllbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VHcmFkaWVudCA9eyBlbmFibGVHcmFkaWVudCA9PiBzZXRBdHRyaWJ1dGVzKHtlbmFibGVHcmFkaWVudH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TaXplPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemU9eyBidXR0b25TaXplIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblNpemU9eyBidXR0b25TaXplID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TaXplIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBTaGFwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblNoYXBlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlPXsgYnV0dG9uU2hhcGUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uU2hhcGU9eyBidXR0b25TaGFwZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU2hhcGUgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIGNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yPXsgYnV0dG9uQmFja2dyb3VuZENvbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvbkNvbG9yPXsgYnV0dG9uQmFja2dyb3VuZENvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIHRleHQgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UZXh0Q29sb3I9eyBidXR0b25UZXh0Q29sb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uVGV4dENvbG9yPXsgYnV0dG9uVGV4dENvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25UZXh0Q29sb3IgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU3R5bGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlPXtidXR0b25TdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJvcmRlclN0eWxlPXtidXR0b25TdHlsZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU3R5bGUgfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj17Ym9yZGVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VCb3JkZXJDb2xvcj17Ym9yZGVyQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7Ym9yZGVyQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJ0blRleHRDb2xvcj17Ym9yZGVyQnRuVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQm9yZGVyQnRuVGV4dENvbG9yPXtib3JkZXJCdG5UZXh0Q29sb3IgPT4gc2V0QXR0cmlidXRlcyh7Ym9yZGVyQnRuVGV4dENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdG5Cb3JkZXJXaWR0aD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuQm9yZGVyV2lkdGg9e2J0bkJvcmRlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlYnRuQm9yZGVyV2lkdGggPSB7YnRuQm9yZGVyV2lkdGggPT4gc2V0QXR0cmlidXRlcyh7YnRuQm9yZGVyV2lkdGh9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ0bkZvbnRXZWlnaHQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkZvbnRXZWlnaHQ9e2J0bkZvbnRXZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VCdG5Gb250V2VpZ2h0PXtidG5Gb250V2VpZ2h0ID0+IHNldEF0dHJpYnV0ZXMoe2J0bkZvbnRXZWlnaHR9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtidXR0b25TdHlsZT09PSdub25lJyYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUgR3JhZGllbnQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2VuYWJsZUdyYWRpZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2VuYWJsZUdyYWRpZW50OiAhZW5hYmxlR3JhZGllbnR9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCAmJiBidXR0b25TdHlsZT09PSdub25lJyYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0dyYWRpZW50IE9wdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JhZGllbnRDb2xvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjE9e2JhY2tncm91bmRDb2xvcjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjE9e2JhY2tncm91bmRDb2xvcjEgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yMX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyPXtiYWNrZ3JvdW5kQ29sb3IyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IyPXtiYWNrZ3JvdW5kQ29sb3IyID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tncm91bmRDb2xvcjJ9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRBbmdsZT17Z3JhZGllbnRBbmdsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlR3JhZGllbnRBbmdsZT17Z3JhZGllbnRBbmdsZSA9PiBzZXRBdHRyaWJ1dGVzKHtncmFkaWVudEFuZ2xlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTG9jYXRpb24xPXtjb2xvckxvY2F0aW9uMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQ29sb3JMb2NhdGlvbjE9e2NvbG9yTG9jYXRpb24xID0+IHNldEF0dHJpYnV0ZXMoe2NvbG9yTG9jYXRpb24xfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yPXtjb2xvckxvY2F0aW9uMn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQ29sb3JMb2NhdGlvbjI9e2NvbG9yTG9jYXRpb24yID0+IHNldEF0dHJpYnV0ZXMoe2NvbG9yTG9jYXRpb24yfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0JhY2tncm91bmQgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRGlzcGxheSBJbWFnZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2hvd0ltYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3Nob3dJbWFnZTogIXNob3dJbWFnZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVkaWFVcGxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17b25TZWxlY3RJbWFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbWdJRH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyh7b3Blbn0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWZ0LWN0YS1pbnNwZWN0b3ItbWVkaWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRWRpdCBpbWFnZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImZvcm1hdC1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7X18oJ1NlbGVjdCBJbWFnZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbWdVUkwgJiYgISFpbWdVUkwubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWN0YS1pbnNwZWN0b3ItbWVkaWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1JlbW92ZSBJbWFnZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkaXNtaXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25SZW1vdmVJbWFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtfXygnUmVtb3ZlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9NZWRpYVVwbG9hZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17aW1nVVJMfSB3aWR0aD1cIjEwMHB4XCIgaGVpZ2h0PVwiMTAwcHhcIiBhbHQ9e2ltZ0FsdH0vPilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbWdVUkwgJiYgISFpbWdVUkwubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnSW1hZ2UgT3BhY2l0eScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcGFjaXR5UmF0aW99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7b3BhY2l0eVJhdGlvOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD17MTAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPXsxMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGN0YUJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayBHYXAgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdQYWRkaW5nIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFkZGluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVUb3A9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A9e3BhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1RvcD17cGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nVG9wfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlUmlnaHQ9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodD17cGFkZGluZ1JpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nUmlnaHR9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlQm90dG9tPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdCb3R0b209e3BhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlZnQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlTGVmdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0ID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdMZWZ0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdNYXJnaW4gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNYXJnaW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVUb3A9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcD17bWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Ub3A9e21hcmdpblRvcCA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Ub3B9KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlQm90dG9tPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luQm90dG9tfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImNvbnN0IGJveFNoYWRvd1N0eWxlcz0gKGF0dHJpYnV0ZXMpID0+e1xuICAgIGxldCBib3hTdHlsZXMgPSAnJztcbiAgICBpZihhdHRyaWJ1dGVzLmVuYWJsZUJveFNoYWRvdykge1xuICAgICAgICBib3hTdHlsZXMgPSB7XG5cbiAgICAgICAgICAgIGJveFNoYWRvdzogYXR0cmlidXRlcy54T2Zmc2V0ICsgXCJweCBcIiArIGF0dHJpYnV0ZXMueU9mZnNldCArIFwicHggXCIgKyBhdHRyaWJ1dGVzLmJsdXIgKyBcInB4IFwiICsgYXR0cmlidXRlcy5zcHJlYWQgKyBcInB4IFwiICsgYXR0cmlidXRlcy5zaGFkb3dDb2xvclxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJveFN0eWxlc1xuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGJveFNoYWRvd1N0eWxlcyIsImNvbnN0IG1hcmdpblBhZGRpbmdTdHlsZXMgPSAoYXR0cmlidXRlcyk9PntcblxuICAgIGxldCBib3hTdHlsZXMgPScnO1xuICAgIGJveFN0eWxlcyAgPSB7XG5cbiAgICAgICAgdGV4dEFsaWduOiBhdHRyaWJ1dGVzLnNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgIHBhZGRpbmdUb3A6IGF0dHJpYnV0ZXMucGFkZGluZ1RvcCA/IGF0dHJpYnV0ZXMucGFkZGluZ1RvcCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICBwYWRkaW5nUmlnaHQ6IGF0dHJpYnV0ZXMucGFkZGluZ1JpZ2h0ID8gYXR0cmlidXRlcy5wYWRkaW5nUmlnaHQgKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgcGFkZGluZ0JvdHRvbTogYXR0cmlidXRlcy5wYWRkaW5nQm90dG9tID8gYXR0cmlidXRlcy5wYWRkaW5nQm90dG9tICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgIHBhZGRpbmdMZWZ0OiBhdHRyaWJ1dGVzLnBhZGRpbmdMZWZ0ID8gYXR0cmlidXRlcy5wYWRkaW5nTGVmdCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICBtYXJnaW5Ub3A6IGF0dHJpYnV0ZXMubWFyZ2luVG9wID8gYXR0cmlidXRlcy5tYXJnaW5Ub3AgKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgbWFyZ2luQm90dG9tOiBhdHRyaWJ1dGVzLm1hcmdpbkJvdHRvbSA/IGF0dHJpYnV0ZXMubWFyZ2luQm90dG9tICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgfVxuXG4gICAgcmV0dXJuIGJveFN0eWxlc1xufVxuXG5leHBvcnQgZGVmYXVsdCBtYXJnaW5QYWRkaW5nU3R5bGVzIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgbWFyZ2luUGFkZGluZ1N0eWxlcyAgZnJvbSAgJy4uLy4uL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZydcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbGxUb0FjdGlvbiBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgZWRpdFN0eWxlcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjphdHRyaWJ1dGVzLmN0YUJhY2tHcm91bmRDb2xvcj9hdHRyaWJ1dGVzLmN0YUJhY2tHcm91bmRDb2xvcjpcIiMwZTBlMGVcIixcbiAgICAgICAgICAgIC4uLmJveFNoYWRvd1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgICAgICAuLi5tYXJnaW5QYWRkaW5nU3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBhdHRyaWJ1dGVzLmJvcmRlclJhZGl1cyA/IGF0dHJpYnV0ZXMuYm9yZGVyUmFkaXVzIDogbnVsbCxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtY3RhLXdyYXBwZXIgYmxvY2tzcGFyZS1ibG9ja3MnLFxuICAgICAgICAgICAgICAgICdhbGlnbicrYXR0cmlidXRlcy5hbGlnbixcbiAgICAgICAgICAgICAgICAoYXR0cmlidXRlcy5pbWdVUkwgJiYgISFhdHRyaWJ1dGVzLmltZ1VSTC5sZW5ndGggJiYgYXR0cmlidXRlcy5iYWNrZ3JvdW5kRml4ICk/J2Jsb2Nrc3BhcmUtYmFja2dyb3VuZC1maXgnOlwiXCJcblxuICAgICAgICAgICAgKX0gc3R5bGU9e2VkaXRTdHlsZXN9PnsgdGhpcy5wcm9wcy5jaGlsZHJlbiB9PC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiY29uc3QgcGFkZGluZ01hcmdpbiA9IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgbGV0IGJsb2NrU3R5bGVzID0gJyc7XG4gICAgYmxvY2tTdHlsZXMgPXtcbiAgICAgICAgdGV4dEFsaWduOiBhdHRyaWJ1dGVzLnNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgIHBhZGRpbmdUb3A6IGF0dHJpYnV0ZXMuaGVhZGVycGFkZGluZ1RvcCA/IGF0dHJpYnV0ZXMuaGVhZGVycGFkZGluZ1RvcCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICBwYWRkaW5nUmlnaHQ6IGF0dHJpYnV0ZXMuaGVhZGVycGFkZGluZ1JpZ2h0ID8gYXR0cmlidXRlcy5oZWFkZXJwYWRkaW5nUmlnaHQgKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgcGFkZGluZ0JvdHRvbTogYXR0cmlidXRlcy5oZWFkZXJwYWRkaW5nQm90dG9tID8gYXR0cmlidXRlcy5oZWFkZXJwYWRkaW5nQm90dG9tICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgIG1hcmdpblRvcDogYXR0cmlidXRlcy5oZWFkZXJtYXJnaW5Ub3AgPyBhdHRyaWJ1dGVzLmhlYWRlcm1hcmdpblRvcCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICBtYXJnaW5Cb3R0b206IGF0dHJpYnV0ZXMuaGVhZGVybWFyZ2luQm90dG9tID8gYXR0cmlidXRlcy5oZWFkZXJtYXJnaW5Cb3R0b20gKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgcGFkZGluZ0xlZnQ6IGF0dHJpYnV0ZXMuaGVhZGVycGFkZGluZ0xlZnQgPyBhdHRyaWJ1dGVzLmhlYWRlcnBhZGRpbmdMZWZ0ICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogYXR0cmlidXRlcy5oZWFkZXJib3hDb2xvciA/IGF0dHJpYnV0ZXMuaGVhZGVyYm94Q29sb3IgOiAndHJhbnNwYXJlbnQnXG4gICAgfVxuICAgIHJldHVybiBibG9ja1N0eWxlc1xufVxuXG5leHBvcnQgZGVmYXVsdCBwYWRkaW5nTWFyZ2luOyIsIlxuXG4vKipcbiAqIEJ1dHRvbiBXcmFwcGVyXG4gKi9cblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7Q29tcG9uZW50fSA9IHdwLmVsZW1lbnQ7XG5cbi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHBhZGRpbmdNYXJnaW4gZnJvbSAnLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3BhZGRpbmctbWFyZ2luJ1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQlNIZWFkZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICAgICAgc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgLi4ucGFkZGluZ01hcmdpbihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgIFwiYmxvY2tzcGFyZS1zZWN0aW9uLWhlYWRlci13cmFwcGVyIGJsb2Nrc3BhcmUtYmxvY2tzXCIsXG4gICAgICAgICAgICAgICAgXCJhbGlnblwiK2FsaWduXG4gICAgICAgICAgICApfSBzdHlsZT17ZWRpdFN0eWxlc30+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtc2VjdGlvbi1oZWFkLXdyYXAnLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLScgKyBzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufSIsImNvbnN0IHNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzID17XG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCJcbiAgICB9LFxuXG5cbiAgICBhbGlnbjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcImNlbnRlclwiXG4gICAgfSxcblxuICAgIHNlY3Rpb25BbGlnbm1lbnQ6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCJjZW50ZXJcIlxuICAgIH0sXG5cblxuICAgIGhlYWRlclRpdGxlOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiRW50ZXIgVGl0bGVcIlxuXG4gICAgfSxcblxuICAgIHRpdGxlRm9udFNpemU6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMzJcbiAgICB9LFxuXG4gICAgc3VidGl0bGVGb250U2l6ZToge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAxOFxuICAgIH0sXG5cbiAgICBoZWFkZXJTdWJUaXRsZToge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIkVudGVyIFN1YnRpdGxlXCJcblxuICAgIH0sXG4gICAgaGVhZGVyYm94Q29sb3I6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCJ0cmFuc3BhcmVudFwiXG4gICAgfSxcblxuICAgIGhlYWRlcnRpdGxlQ29sb3I6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCIjNDA0MDQwXCJcbiAgICB9LFxuICAgIGhlYWRlcnN1YnRpdGxlQ29sb3I6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCIjNmQ2ZDZkXCJcbiAgICB9LFxuICAgIGhlYWRlcnRpdGxlRGFzaENvbG9yOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiIzZkNmQ2ZFwiXG4gICAgfSxcbiAgICBoZWFkZXJwYWRkaW5nVG9wOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDEwXG4gICAgfSxcbiAgICBoZWFkZXJwYWRkaW5nUmlnaHQ6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMjBcbiAgICB9LFxuICAgIGhlYWRlcnBhZGRpbmdCb3R0b206IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMTBcbiAgICB9LFxuICAgIGhlYWRlcnBhZGRpbmdMZWZ0OiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDIwXG4gICAgfSxcbiAgICBoZWFkZXJtYXJnaW5Ub3A6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMzBcbiAgICB9LFxuXG4gICAgaGVhZGVybWFyZ2luQm90dG9tOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDMwXG4gICAgfSxcbiAgICBoZWFkZXJsYXlvdXRPcHRpb246IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCJibG9ja3NwYXJlLXN0eWxlMVwiXG4gICAgfSxcblxuICAgIGhlYWRlclRhZ09wdGlvbjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcImgyXCJcbiAgICB9LFxuXG4gICAgdGl0bGVQYWRkaW5nVG9wOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDVcbiAgICB9LFxuICAgIHRpdGxlUGFkZGluZ0JvdHRvbToge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiA1XG4gICAgfSxcblxuICAgIHN1YnRpdGxlUGFkZGluZ1RvcDoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiA1XG4gICAgfSxcbiAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b206IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogNVxuICAgIH0sXG4gICAgZGFzaENvbG9yOntcbiAgICAgICAgdHlwZTpcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OlwiIzhiMjQ5Y1wiXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzZWN0aW9uSGVhZGVyQXR0cmlidXRlczsiLCJjb25zdCBtYXJnaW5QYWRkaW5nID17XG4gICAgcGFkZGluZ1RvcDoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAyMFxuICAgIH0sXG4gICAgcGFkZGluZ1JpZ2h0OiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDIwXG4gICAgfSxcbiAgICBwYWRkaW5nQm90dG9tOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDIwXG4gICAgfSxcbiAgICBwYWRkaW5nTGVmdDoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAyMFxuICAgIH0sXG4gICAgbWFyZ2luVG9wOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDMwXG4gICAgfSxcblxuICAgIG1hcmdpbkJvdHRvbToge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAzMFxuICAgIH0sXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFyZ2luUGFkZGluZzsiLCJjb25zdCBkYXNoQ29sb3JzICA9IChhdHRyaWJ1dGVzKSA9PntcbiAgICBsZXQgZGFzaFN0eWxlID0gJyc7XG5cbiAgICBkYXNoU3R5bGU9e1xuICAgICAgICBib3JkZXJDb2xvcjogYXR0cmlidXRlcy5kYXNoQ29sb3I/YXR0cmlidXRlcy5kYXNoQ29sb3I6JyM4YjI0OWMnLFxuICAgIH1cbiAgICByZXR1cm4gZGFzaFN0eWxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkYXNoQ29sb3JzO1xuXG4iLCIgY29uc3QgdGl0bGVDb2xvciA9IChhdHRyaWJ1dGVzKT0+IHtcbiAgICBsZXQgdGl0bGVTdHlsZXMgPSAnJztcbiAgICAgdGl0bGVTdHlsZXMgPXtcbiAgICAgICAgICAgIGNvbG9yOiBhdHRyaWJ1dGVzLmhlYWRlcnRpdGxlQ29sb3I/YXR0cmlidXRlcy5oZWFkZXJ0aXRsZUNvbG9yOicjNDA0MDQwJyxcbiAgICAgICAgICAgIGZvbnRTaXplOiBhdHRyaWJ1dGVzLnRpdGxlRm9udFNpemUgKyBcInB4XCIsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBhdHRyaWJ1dGVzLnRpdGxlUGFkZGluZ1RvcCA/IGF0dHJpYnV0ZXMudGl0bGVQYWRkaW5nVG9wICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBhdHRyaWJ1dGVzLnRpdGxlUGFkZGluZ0JvdHRvbSA/IGF0dHJpYnV0ZXMudGl0bGVQYWRkaW5nQm90dG9tICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGl0bGVTdHlsZXNcbn1cbmV4cG9ydCBkZWZhdWx0ICB0aXRsZUNvbG9yOyIsImNvbnN0IHN1YnRpdGxlQ29sb3IgPSAoYXR0cmlidXRlcykgPT4ge1xuIGxldCBzdWJ0aXRsZVN0eWxlcyA9ICcnO1xuICAgIHN1YnRpdGxlU3R5bGVzID0ge1xuICAgICAgICBmb250U2l6ZTogYXR0cmlidXRlcy5zdWJ0aXRsZUZvbnRTaXplICsgXCJweFwiLFxuICAgICAgICBjb2xvcjogYXR0cmlidXRlcy5oZWFkZXJzdWJ0aXRsZUNvbG9yP2F0dHJpYnV0ZXMuaGVhZGVyc3VidGl0bGVDb2xvcjonIzZkNmQ2ZCcsXG4gICAgICAgIHBhZGRpbmdUb3A6IGF0dHJpYnV0ZXMuc3VidGl0bGVQYWRkaW5nVG9wID8gYXR0cmlidXRlcy5zdWJ0aXRsZVBhZGRpbmdUb3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICBwYWRkaW5nQm90dG9tOiBhdHRyaWJ1dGVzLnN1YnRpdGxlUGFkZGluZ0JvdHRvbSA/IGF0dHJpYnV0ZXMuc3VidGl0bGVQYWRkaW5nQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN1YnRpdGxlU3R5bGVzXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3VidGl0bGVDb2xvcjtcbiIsImNvbnN0IGJveFNoYWRvd0F0dHJpYnV0ZXMgPSB7XG5cbiAgICBlbmFibGVCb3hTaGFkb3c6IHtcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB4T2Zmc2V0OiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIHlPZmZzZXQ6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogNlxuICAgIH0sXG4gICAgYmx1cjoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAxMlxuICAgIH0sXG4gICAgc3ByZWFkOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IC0xMFxuICAgIH0sXG4gICAgc2hhZG93Q29sb3I6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogJyMwMDAnXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBib3hTaGFkb3dBdHRyaWJ1dGVzIiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEJTQnV0dG9uIGZyb20gJy4vLi4vYnV0dG9uL2VkaXQnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tIFwiLi9jb21wb25lbnRzL2luc3BlY3RvclwiO1xuaW1wb3J0IENhbGxUb0FjdGlvbiBmcm9tIFwiLi9jb21wb25lbnRzL2VkaXRcIjtcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5jb25zdCBwcmV2X2ltZyA9IGJsb2Nrc3BhcmVfZ2xvYmFscztcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tICcuLi91dGlscy9zdHlsZXMnO1xuaW1wb3J0IGJ1dHRvbkF0dHJpYnV0ZXMgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9idXR0b24nO1xuaW1wb3J0IHNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzIGZyb20gJy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXInO1xuaW1wb3J0IG1hcmdpblBhZGRpbmcgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9tYXJnaW4tcGFkZGluZyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBkYXNoQ29sb3JzIGZyb20gXCIuLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvZGFzaFwiO1xuaW1wb3J0IHRpdGxlQ29sb3IgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci90aXRsZVwiO1xuaW1wb3J0IHN1YnRpdGxlQ29sb3IgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9zdWJ0aXRsZVwiO1xuaW1wb3J0IGluY29zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5jb25zdCB7Q29tcG9uZW50LEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7XG4gICAgQWxpZ25tZW50VG9vbGJhcixcbiAgICBVUkxJbnB1dCxcbiAgICBCbG9ja0NvbnRyb2xzLFxuICAgIEJsb2NrQWxpZ25tZW50VG9vbGJhcixcbiAgICBSaWNoVGV4dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG5cbiAgICBJY29uQnV0dG9uLFxuICAgIERhc2hpY29uLFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbi8vIFJlZ2lzdGVyIGFsaWdubWVudHNcbmNvbnN0IGFsaWdubWVudE9wdGlvbnMgPSBbJ2NlbnRlcicsICd3aWRlJywgJ2Z1bGwnXTtcblxuY29uc3Qge25hbWUsY2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cbmNsYXNzIEJTQ2FsbFRvQWN0aW9uQmxvY2sgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICAgICAgYnV0dG9uVGV4dCxcbiAgICAgICAgICAgICAgICBidXR0b25VcmwsXG4gICAgICAgICAgICAgICAgYnV0dG9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgc2hvd0ltYWdlLFxuICAgICAgICAgICAgICAgIGltZ1VSTCxcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIGltZ0FsdCxcbiAgICAgICAgICAgICAgICBvcGFjaXR5UmF0aW8sXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uZGFzaENvbG9ycyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4udGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN1YnRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uc3VidGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG5cbiAgICAgICAgY29uc3QgYnRuU3R5bGUgPSB7XG4gICAgICAgICAgICAuLi5idXR0b25TdHlsZU9wdGlvbiAoYXR0cmlidXRlcylcbiAgICAgICAgfVxuICAgICAgICAvL2NvbnN0IGJhY2tncm91bmRJbWcgPSAndXJsKCcraW1nVVJMKycpJztcblxuICAgICAgICBsZXQgcGxhY2VfaG9sZGVyX2ltYWdlID0gJ3VybCgnK3ByZXZfaW1nLmltZysnKScgO1xuICAgICAgICBpZihpbWdVUkwgJiYgISFpbWdVUkwubGVuZ3RoKXtcbiAgICAgICAgICAgIHBsYWNlX2hvbGRlcl9pbWFnZSA9ICd1cmwoJytpbWdVUkwrJyknO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuKFxuXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG5cbiAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzPlxuICAgICAgICAgICAgICAgIDxCbG9ja0FsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBhbGlnbiB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoIHsgYWxpZ246IHZhbHVlIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPXsgWyAnY2VudGVyJywgJ3dpZGUnLCAnZnVsbCcgXSB9XG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWN0aW9uQWxpZ25tZW50fVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtzZWN0aW9uQWxpZ25tZW50OiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XG5cblxuICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgIDxDYWxsVG9BY3Rpb24gey4uLnRoaXMucHJvcHN9ID5cbiAgICAgICAgICAgICAgICB7c2hvd0ltYWdlICYmIGltZ1VSTCAmJlxuICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtaW1hZ2Utd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWN0YS1iYWNrZ3JvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eVJhdGlvVG9DbGFzcyhvcGFjaXR5UmF0aW8pLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnaGFzLWJhY2tncm91bmQtb3BhY2l0eSc6IDAgIT09IG9wYWNpdHlSYXRpb1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2JhY2tncm91bmRJbWFnZTpwbGFjZV9ob2xkZXJfaW1hZ2V9fT5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgICAgICAhaW1nVVJMICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZW1wdHktcGxjYWVob2xkZXItZGl2XCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIDxCU0hlYWRlciB7Li4udGhpcy5wcm9wc30+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17dGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGl0bGU6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdTdWIgVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJTdWJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0JTSGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgPEJTQnV0dG9uIHsgLi4udGhpcy5wcm9wcyB9PlxuICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgX18oICdCdXR0b24gdGV4dC4uLicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uVGV4dCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkRm9ybWF0cz17IFtdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17YnRuU3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVGV4dDogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvQlNCdXR0b24+XG4gICAgICAgICAgICAgICAgeyBpc1NlbGVjdGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cImZvcm0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBgYmxvY2tzLWJ1dHRvbl9faW5saW5lLWxpbmsgYmxvY2tzcGFyZS1idXR0b24tJHtidXR0b25BbGlnbm1lbnR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsgZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEYXNoaWNvbiBpY29uPXsgJ2FkbWluLWxpbmtzJyB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VVJMSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidXR0b24tdXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGJ1dHRvblVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblVybDogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImVkaXRvci1icmVha1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0FwcGx5JywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgPC9DYWxsVG9BY3Rpb24+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuY29uc3QgYXR0cmlidXRlcyA9e1xuXG4gICAgLi4uc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMsXG4gICAgLi4ubWV0YWRhdGEuYXR0cmlidXRlcyxcbiAgICAuLi5idXR0b25BdHRyaWJ1dGVzLFxuICAgIC4uLm1hcmdpblBhZGRpbmcsXG4gICAgLi4uYm94U2hhZG93QXR0cmlidXRlc1xufVxuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBDYWxsIHRvIEFjdGlvbicsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdCUyBjYWxsIHRvIGFjdGlvbiBhbGxvdyB5b3UgdG8gYWRkIHRpdGxlLHN1YnRpdGxlLHRleHQgYnV0dG9uIGFuZCBiYWNrZ3JvdW5kIGltYWdlL2NvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeTogY2F0ZWdvcnksXG4gICAgaWNvbjogaW5jb3MuY3RhLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2NhbGwgdG8gYWN0aW9uJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2N0YScsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdsaW5rJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBdLFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ0Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZ2V0RWRpdFdyYXBwZXJQcm9wcyhhdHRyaWJ1dGVzKSB7XG4gICAgICAgIGNvbnN0IHthbGlnbn0gPSBhdHRyaWJ1dGVzO1xuICAgICAgICBpZiAoLTEgIT09IGFsaWdubWVudE9wdGlvbnMuaW5kZXhPZihhbGlnbikpIHtcbiAgICAgICAgICAgIHJldHVybiB7J2RhdGEtYWxpZ24nOiBhbGlnbn07XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZWRpdDogQlNDYWxsVG9BY3Rpb25CbG9jayxcbiAgICBzYXZlOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBidXR0b25UZXh0LFxuICAgICAgICAgICAgYnV0dG9uVXJsLFxuICAgICAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgb3BhY2l0eVJhdGlvLFxuICAgICAgICAgICAgc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgIHNob3dJbWFnZSxcbiAgICAgICAgICAgIGltZ1VSTCxcbiAgICAgICAgICAgIGltZ0FsdCxcbiAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgaGVhZGVyU3ViVGl0bGUsXG5cblxuXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuXG4gICAgICAgIGNvbnN0IHRpdGxlRGFzaFN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLmRhc2hDb2xvcnMocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0aXRsZVN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLnRpdGxlQ29sb3IocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzdWJ0aXRsZVN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLnN1YnRpdGxlQ29sb3IocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBidG5TdHlsZSA9IHtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uIChwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcGxhY2VfaG9sZGVyX2ltYWdlID0gJ3VybCgnK3ByZXZfaW1nLmltZysnKScgO1xuICAgICAgICBpZihpbWdVUkwgJiYgISFpbWdVUkwubGVuZ3RoKXtcbiAgICAgICAgICAgIHBsYWNlX2hvbGRlcl9pbWFnZSA9ICd1cmwoJytpbWdVUkwrJyknO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDYWxsVG9BY3Rpb24gey4uLnByb3BzfSA+XG4gICAgICAgICAgICAgICAge3Nob3dJbWFnZSAmJiBpbWdVUkwgJiZcbiAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWltYWdlLXdyYXAnLFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1jdGEtYmFja2dyb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHlSYXRpb1RvQ2xhc3Mob3BhY2l0eVJhdGlvKSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kLW9wYWNpdHknOiAwICE9PSBvcGFjaXR5UmF0aW9cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tiYWNrZ3JvdW5kSW1hZ2U6cGxhY2VfaG9sZGVyX2ltYWdlfX0+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICAgICAgIWltZ1VSTCAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtcHR5LXBsY2FlaG9sZGVyLWRpdlwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zZWN0aW9uLWhlYWQtd3JhcFwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXIgey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJUaXRsZSAmJlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclN1YlRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclN1YlRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9CU0hlYWRlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8QlNCdXR0b24geyAuLi5wcm9wcyB9PlxuICAgICAgICAgICAgICAgICAgICB7XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBidXR0b24gdGV4dCBhbmQgb3V0cHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UZXh0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXsgYnV0dG9uVXJsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PXsgYnV0dG9uVGFyZ2V0ID8gJ19ibGFuaycgOiBudWxsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPXsgYnV0dG9uVGFyZ2V0ID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInIDogbnVsbCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1idXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2J0blN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uVGV4dCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgPC9CU0J1dHRvbj5cbiAgICAgICAgICAgIDwvQ2FsbFRvQWN0aW9uPlxuICAgICAgICApO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gb3BhY2l0eVJhdGlvVG9DbGFzcyhyYXRpbykge1xuICAgIHJldHVybiAoMCA9PT0gcmF0aW8pID9cbiAgICAgICAgbnVsbCA6XG4gICAgICAgICdoYXMtYmFja2dyb3VuZC1vcGFjaXR5LScgKyAoMTAgKiBNYXRoLnJvdW5kKHJhdGlvIC8gMTApKTtcbn0iLCJjb25zdCBibG9nUG9zdFN0eWxlcz0gKGF0dHJpYnV0ZXMpID0+e1xuICAgIGxldCBibG9nU3R5bGVzID0gJyc7XG5cbiAgICBpZiggYXR0cmlidXRlcy5kZXNpZ24gIT0gJ3N0eWxlLTMnKXtcbiAgICAgICAgYmxvZ1N0eWxlcyA9IHtcbiAgICAgICAgICAgIGJveFNoYWRvdzogKGF0dHJpYnV0ZXMuZW5hYmxlQm94U2hhZG93KT9hdHRyaWJ1dGVzLnhPZmZzZXQgKyBcInB4IFwiICsgYXR0cmlidXRlcy55T2Zmc2V0ICsgXCJweCBcIiArIGF0dHJpYnV0ZXMuYmx1ciArIFwicHggXCIgKyBhdHRyaWJ1dGVzLnNwcmVhZCArIFwicHggXCIgKyBhdHRyaWJ1dGVzLnNoYWRvd0NvbG9yOlwiXCIsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGF0dHJpYnV0ZXMuYm9yZGVyUmFkaXVzID8gYXR0cmlidXRlcy5ib3JkZXJSYWRpdXMgOiBudWxsLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBhdHRyaWJ1dGVzLmVuYWJsZUJhY2tncm91bmRDb2xvciA/IGF0dHJpYnV0ZXMuYmFja0dyb3VuZENvbG9yIDogdW5kZWZpbmVkLFxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICByZXR1cm4gYmxvZ1N0eWxlc1xuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGJsb2dQb3N0U3R5bGVzIiwiLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuLy9pbXBvcnQgeyBzcmNVcmwgfSBmcm9tICdibG9ja3NwYXJlJztcblxubGV0IHNyY1VybCA9IGJsb2Nrc3BhcmVfZ2xvYmFscy5zcmNVcmwrJy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbCc7XG5cblxuXG5cbmZ1bmN0aW9uIERlc2lnblBhbmVsSXRlbSgge1xuXHRpbWFnZUZpbGUsXG5cdGltYWdlSG92ZXJGaWxlLFxuXHRpbWFnZVdpZHRoID0gJycsXG5cdGltYWdlSGVpZ2h0ID0gJycsXG5cdGxhYmVsLFxufSApIHtcblx0Y29uc3Qgc3JjID0gISBpbWFnZUZpbGUgPyAnJyA6XG5cdCAgICAgICAgICAgIGltYWdlRmlsZS5tYXRjaCggL2h0dHBzPzovaSApID8gaW1hZ2VGaWxlIDpcblx0ICAgICAgICAgICAgc3JjVXJsID8gYCR7IHNyY1VybCB9LyR7IGltYWdlRmlsZSB9YCA6XG5cdCAgICAgICAgICAgIGltYWdlRmlsZVxuXG5cdGNvbnN0IHNyY0hvdmVyID0gISBpbWFnZUhvdmVyRmlsZSA/IG51bGwgOlxuXHQgICAgICAgICAgICAgICAgIGltYWdlSG92ZXJGaWxlLm1hdGNoKCAvaHR0cHM/Oi9pICkgPyBpbWFnZUhvdmVyRmlsZSA6XG5cdCAgICAgICAgICAgICAgICAgc3JjVXJsID8gYCR7IHNyY1VybCB9LyR7IGltYWdlSG92ZXJGaWxlIH1gIDpcblx0ICAgICAgICAgICAgICAgICBpbWFnZUhvdmVyRmlsZVxuXG5cblx0cmV0dXJuIChcblx0XHQ8c3BhbiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWRlc2lnbi1wYW5lbC1pdGVtXCI+XG5cdFx0XHR7IHNyY0hvdmVyICYmXG5cdFx0XHRcdDxpbWcgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1kZXNpZ24tcGFuZWwtaXRlbV9faG92ZXItaW1hZ2VcIiBzcmM9eyBzcmNIb3ZlciB9IGFsdD17IGxhYmVsIH0gd2lkdGg9eyBpbWFnZVdpZHRoIH0gaGVpZ2h0PXsgaW1hZ2VIZWlnaHQgfSAvPlxuXHRcdFx0fVxuXHRcdFx0eyBzcmMgJiZcblx0XHRcdFx0PGltZyBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWRlc2lnbi1wYW5lbC1pdGVtX19pbWFnZVwiIHNyYz17IHNyYyB9IGFsdD17IGxhYmVsIH0gd2lkdGg9eyBpbWFnZVdpZHRoIH0gaGVpZ2h0PXsgaW1hZ2VIZWlnaHQgfSAvPlxuXHRcdFx0fVxuXHRcdFx0PHNwYW4gY2xhc3NOYW1lPVwiZGVzaWduLWxhYmVsXCI+XG5cdFx0XHRcdHsgbGFiZWwgfVxuXHRcdFx0PC9zcGFuPlxuXHRcdDwvc3Bhbj5cblx0KVxufVxuXG5leHBvcnQgZGVmYXVsdCBEZXNpZ25QYW5lbEl0ZW1cbiIsIi8qKlxuICogQSBDb250cm9sIGZvciBzZWxlY3RpbmcgZGVzaWducy5cbiAqL1xuLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IHsgRGVzaWduUGFuZWxJdGVtIH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gJ2xvZGFzaCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5cbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5jb25zdCB7IFJhZGlvQ29udHJvbCB9ID0gd3AuY29tcG9uZW50cztcblxuZnVuY3Rpb24gRGVzaWduQ29udHJvbCggcHJvcHMgKSB7XG5cdGNvbnN0IHtcblx0XHRzZWxlY3RlZCwgb3B0aW9ucywgb25DaGFuZ2UsIGNsYXNzTmFtZSA9ICcnLFxuXHR9ID0gcHJvcHNcblxuXG5cdC8vIENvbnZlcnQgdGhlIG9wdGlvbnMuXG5cdGNvbnN0IGZpeGVkT3B0aW9ucyA9IG9wdGlvbnMubWFwKCBvcHRpb24gPT4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5vcHRpb24sXG5cdFx0XHRsYWJlbDogPERlc2lnblBhbmVsSXRlbSBpbWFnZUZpbGU9eyBvcHRpb24uaW1hZ2UgfSBpbWFnZUhvdmVyRmlsZT17IG9wdGlvbi5ob3ZlckltYWdlIH0gaW1hZ2VXaWR0aD17IG9wdGlvbi5pbWFnZVdpZHRoIH0gaW1hZ2VIZWlnaHQ9eyBvcHRpb24uaW1hZ2VIZWlnaHQgfSBpc1Bybz17IG9wdGlvbi5pc1BybyB9IGxhYmVsPXsgb3B0aW9uLmxhYmVsIH0gLz4sXG5cdFx0XHR0aXRsZTogb3B0aW9uLmxhYmVsLFxuXHRcdFx0dmFsdWU6IG9wdGlvbi52YWx1ZSxcblx0XHR9XG5cdH0gKVxuXG5cdHJldHVybiAoXG5cdFx0PGRpdiBjbGFzc05hbWU9eyBjbGFzc25hbWVzKCBjbGFzc05hbWUsICdibG9ja3NwYXJlLWRlc2lnbi1jb250cm9sLXdyYXBwZXIgY29tcG9uZW50cy1iYXNlLWNvbnRyb2wnICkgfT5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiY29tcG9uZW50cy1iYXNlLWNvbnRyb2xfX2xhYmVsXCI+eyBwcm9wcy5sYWJlbCB9PC9kaXY+XG5cdFx0XHQ8UmFkaW9Db250cm9sXG5cdFx0XHRcdHsgLi4ub21pdCggcHJvcHMsIFsgJ2xhYmVsJyBdICkgfVxuXHRcdFx0XHRjbGFzc05hbWU9XCJibG9ja3NwYXJlLWRlc2lnbi1jb250cm9sXCJcblx0XHRcdFx0c2VsZWN0ZWQ9eyBzZWxlY3RlZCB9XG5cdFx0XHRcdG9wdGlvbnM9eyBmaXhlZE9wdGlvbnMgfVxuXHRcdFx0XHRvbkNoYW5nZT17IG9uQ2hhbmdlIH1cblx0XHRcdC8+XG5cdFx0PC9kaXY+XG5cdClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGVzaWduQ29udHJvbFxuIiwiLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IHsgRGVzaWduQ29udHJvbCB9IGZyb20gJy4uL2luZGV4J1xuXG5pbXBvcnQgSW1hZ2VEZXNpZ25Eb3VibGVXYXZlIGZyb20gJy4vaW1hZ2VzL2RvdWJsZS13YXZlLnBuZyc7XG5pbXBvcnQgSW1hZ2VEZXNpZ253YXZ5IGZyb20gJy4vaW1hZ2VzL3dhdnkucG5nJztcbmltcG9ydCBJbWFnZURlc2lnblNsb3BlZCBmcm9tICcuL2ltYWdlcy9zbG9wZWQucG5nJztcbmltcG9ydCBJbWFnZURlc2lnbkdyb3cgZnJvbSAnLi9pbWFnZXMvZ3Jvdy5wbmcnO1xuaW1wb3J0IEltYWdlRGVzaWduQW5nbGVkIGZyb20gJy4vaW1hZ2VzL2FuZ2xlZC5wbmcnO1xuXG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3Qge1xuXHRfXyxcbn0gPSB3cC5pMThuO1xuY29uc3QgeyBCYXNlQ29udHJvbCB9ID0gd3AuY29tcG9uZW50c1xuY29uc3QgeyBhcHBseUZpbHRlcnMgfSA9IHdwLmhvb2tzXG5pbXBvcnQgeyBvbWl0IH0gZnJvbSAnbG9kYXNoJ1xuXG5jb25zdCBkZXNpZ25zID0ge1xuXG5cdCdkb3VibGUtd2F2ZSc6IHtcblx0XHRpbWFnZTogSW1hZ2VEZXNpZ25Eb3VibGVXYXZlLCBsYWJlbDogIF9fKCAnRG91YmxlIFdhdmUnLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdkb3VibGUtd2F2ZScsXG5cdH0sXG5cblx0J3dhdnknOiB7XG5cdFx0aW1hZ2U6IEltYWdlRGVzaWdud2F2eSwgbGFiZWw6ICBfXyggJ1dhdnknLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICd3YXZ5Jyxcblx0fSxcblxuXHQnc2xvcGVkJzoge1xuXHRcdGltYWdlOiBJbWFnZURlc2lnblNsb3BlZCwgbGFiZWw6ICBfXyggJ1Nsb3BlZCcsICdibG9ja3NwYXJlJyApLCB2YWx1ZTogJ3Nsb3BlZCcsXG5cdH0sXG5cdCdncm93Jzoge1xuXHRcdGltYWdlOiBJbWFnZURlc2lnbkdyb3csIGxhYmVsOiAgX18oICdHcm93JywgJ2Jsb2Nrc3BhcmUnICksIHZhbHVlOiAnZ3JvdycsXG5cdH0sXG5cdCdhbmdsZWQnOiB7XG5cdFx0aW1hZ2U6IEltYWdlRGVzaWduQW5nbGVkLCBsYWJlbDogIF9fKCAnQW5nbGVkJywgJ2Jsb2Nrc3BhcmUnICksIHZhbHVlOiAnYW5nbGVkJyxcblx0fSxcbn1cblxuY29uc3QgRGVzaWduU2VwYXJhdG9yQ29udHJvbCA9IHByb3BzID0+IHtcblxuXHRjb25zdCBvcHRpb25zID0gT2JqZWN0LmtleXMoIGRlc2lnbnMgKVxuXHRcdC5maWx0ZXIoIGRlc2lnbiA9PiAhIHByb3BzLmV4Y2x1ZGVEZXNpZ25zLmluY2x1ZGVzKCBkZXNpZ24gKSApXG5cdFx0Lm1hcCggZGVzaWduID0+IGRlc2lnbnNbIGRlc2lnbiBdIClcblxuXG5cdHJldHVybiAoXG5cdFx0PEJhc2VDb250cm9sXG5cdFx0XHRjbGFzc05hbWU9XCJibG9ja3NwYXJlLWRlc2lnbi1zZXBhcmF0b3ItY29udHJvbFwiXG5cdFx0XHRpZD1cImJsb2Nrc3BhcmUtZGVzaWduLXNlcGFyYXRvci1jb250cm9sXCJcblx0XHRcdGxhYmVsPXsgcHJvcHMubGFiZWwgfVxuXHRcdFx0aGVscD17IHByb3BzLmhlbHAgfVxuXHRcdD5cblx0XHRcdDxEZXNpZ25Db250cm9sXG5cdFx0XHRcdG9wdGlvbnM9eyBhcHBseUZpbHRlcnMoICdibG9ja3NwYXJlLnNlcGFyYXRvci5lZGl0LmxheW91dHMnLCBvcHRpb25zLCBwcm9wcyApIH1cblx0XHRcdFx0eyAuLi5vbWl0KCBwcm9wcywgWyAnbGFiZWwnLCAnaGVscCcgXSApIH1cblx0XHRcdC8+XG5cdFx0PC9CYXNlQ29udHJvbD5cblx0KVxufVxuXG5EZXNpZ25TZXBhcmF0b3JDb250cm9sLmRlZmF1bHRQcm9wcyA9IHtcblx0bGFiZWw6ICcnLFxuXHRoZWxwOiAnJyxcblx0ZXhjbHVkZURlc2lnbnM6IFtdLFxufVxuXG5leHBvcnQgZGVmYXVsdCBEZXNpZ25TZXBhcmF0b3JDb250cm9sXG4iLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9kb3VibGUtd2F2ZS5wbmdcIjsiLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy93YXZ5LnBuZ1wiOyIsImV4cG9ydCBkZWZhdWx0IFwiaW1hZ2VzL3Nsb3BlZC5wbmdcIjsiLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9ncm93LnBuZ1wiOyIsImV4cG9ydCBkZWZhdWx0IFwiaW1hZ2VzL2FuZ2xlZC5wbmdcIjsiLCIvKipcbiAqIEEgUGFuZWwgZm9yIHNlbGVjdGluZyBkZXNpZ25zXG4gKi9cblxuLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IHsgRGVzaWduQ29udHJvbCB9IGZyb20gJy4uL2luZGV4J1xuXG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuY29uc3QgeyBpMThuIH0gPSAnYmxvY2tzcGFyZSdcbmltcG9ydCB7IG9taXQgfSBmcm9tICdsb2Rhc2gnXG5jb25zdCB7IFBhbmVsQm9keSB9ID0gd3AuY29tcG9uZW50cztcblxuZnVuY3Rpb24gRGVzaWduUGFuZWxCb2R5KCBwcm9wcyApIHtcblx0Y29uc3Qge1xuXHRcdG9wdGlvbnMsXG5cdFx0c2VsZWN0ZWQsXG5cdFx0dGl0bGUgPSBfXyggJ0xheW91dCcsIGkxOG4gKSxcblx0XHRzZWxlY3RlZE9wdGlvbkluVGl0bGUgPSB0cnVlLFxuXHRcdGhlbHAgPSAnJyxcblx0XHRjbGFzc05hbWUgPSAnJyxcblx0XHRpbml0aWFsT3BlbiA9IHRydWUsXG5cdH0gPSBwcm9wc1xuXHRjb25zdCBzZWxlY3RlZE9wdGlvbiA9IG9wdGlvbnMgPyBvcHRpb25zLmZpbmQoIG9wdCA9PiBvcHQudmFsdWUgPT09IHNlbGVjdGVkICkgOiBudWxsXG5cdGNvbnN0IHBhbmVsVGl0bGUgPSBzZWxlY3RlZE9wdGlvbiA/IGAkeyB0aXRsZSB9IOKAkyAkeyBzZWxlY3RlZE9wdGlvbi5sYWJlbCB9YCA6IHRpdGxlXG5cdGNvbnN0IG1haW5DbGFzc2VzID0gY2xhc3NuYW1lcyggWyAnYmxvY2tzcGFyZS1kZXNpZ24tcGFuZWwtYm9keScsIGNsYXNzTmFtZSBdIClcblxuXHRyZXR1cm4gKFxuXHRcdDxQYW5lbEJvZHlcblx0XHRcdHRpdGxlPXsgc2VsZWN0ZWRPcHRpb25JblRpdGxlID8gPHNwYW4+eyBwYW5lbFRpdGxlIH08L3NwYW4+IDogdGl0bGUgfVxuXHRcdFx0Y2xhc3NOYW1lPXsgbWFpbkNsYXNzZXMgfVxuXHRcdFx0aW5pdGlhbE9wZW49eyBpbml0aWFsT3BlbiB9XG5cdFx0XHR7IC4uLm9taXQoIHByb3BzLCBbICdoZWxwJyBdICkgfVxuXHRcdD5cblx0XHRcdHsgaGVscCAmJlxuXHRcdFx0XHQ8cCBjbGFzc05hbWU9XCJjb21wb25lbnRzLWJhc2UtY29udHJvbF9faGVscFwiPnsgaGVscCB9PC9wPlxuXHRcdFx0fVxuXHRcdFx0eyBvcHRpb25zICYmXG5cdFx0XHRcdDxEZXNpZ25Db250cm9sIHsgLi4ub21pdCggcHJvcHMsIFsgJ2hlbHAnLCAndGl0bGUnIF0gKSB9IC8+XG5cdFx0XHR9XG5cdFx0XHR7IHByb3BzLmNoaWxkcmVuIH1cblx0XHQ8L1BhbmVsQm9keT5cblx0KVxufVxuXG5leHBvcnQgZGVmYXVsdCBEZXNpZ25QYW5lbEJvZHlcbiIsIlxuaW1wb3J0IEJ1dHRvblNldHRpbmdzIGZyb20gJy4vLi4vLi4vYnV0dG9uL2J1dHRvbi1zZXR0aW5ncyc7XG5pbXBvcnQgTWFyZ2luIGZyb20gXCIuLi8uLi91dGlscy9tYXJnaW5cIjtcbmltcG9ydCBCU0hlYWRlclNldHRpbmdzIGZyb20gJy4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyLXNldHRpbmdzJztcbmltcG9ydCBEZXNpZ25QYW5lbEJvZHkgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tcGFuZWwtYm9keVwiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGUxIGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zdHlsZS0xLnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGUyIGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zdHlsZS0yLnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGUzIGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zdHlsZS0zLnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGU0IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zdHlsZS00LnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGU1IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zdHlsZS01LnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGU2IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zdHlsZS02LnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGU3IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zdHlsZS03LnBuZ1wiO1xuaW1wb3J0IEdyYWRpZW50Q29sb3JzIGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZ3JhZGllbnRcIjtcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIjtcbmltcG9ydCBCU2J1dHRvblNldHRpbmdzIGZyb20gXCIuLi8uLi9idXR0b24vYnV0dG9uLXNldHRpbmdzXCI7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgYXBwbHlGaWx0ZXJzIH0gPSB3cC5ob29rcztcblxuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgTWVkaWFVcGxvYWQsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBUb2dnbGVDb250cm9sLFxuICAgIFBhbmVsQm9keSxcbiAgICBTZWxlY3RDb250cm9sLFxuICAgIEljb25CdXR0b24sXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBjb25zdCBvbkNoYW5nZWJveGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja0dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZWRlc2NyaXB0aW9jb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2Rlc2NyaXB0aW9uQ29sb3I6IHZhbHVlfSk7XG5cbiAgICAgICAgY29uc3QgaW1nU2hhcGVPcHRpb25zID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnJywgbGFiZWw6IF9fKCdEZWZhdWx0JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXN0eWxlMScsIGxhYmVsOiBfXygnU3R5bGUgMScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zdHlsZTInLCBsYWJlbDogX18oJ1N0eWxlIDInLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICBdXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgaW1hZ2VTaGFwZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkNvbG9yLFxuICAgICAgICAgICAgICAgIGltZ0lELFxuICAgICAgICAgICAgICAgIGltZ1VSTCxcbiAgICAgICAgICAgICAgICBpbWdBbHQsXG4gICAgICAgICAgICAgICAgc2hvd0NvbnRlbnRJbWcsXG4gICAgICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgICAgICAgICBidXR0b25TdHlsZSxcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgc2hvd0J1dHRvbixcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICAgIGxheW91dE9wdGlvbixcbiAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgaGVhZGVyYm94Q29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbixcbiAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgZGFzaENvbG9yLFxuICAgICAgICAgICAgICAgIGRlc2lnbiA9ICdzdHlsZS0xJyxcbiAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IxLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjIsXG4gICAgICAgICAgICAgICAgZ3JhZGllbnRBbmdsZSxcbiAgICAgICAgICAgICAgICBjb2xvckxvY2F0aW9uMSxcbiAgICAgICAgICAgICAgICBjb2xvckxvY2F0aW9uMixcbiAgICAgICAgICAgICAgICBlbmFibGVCb3hTaGFkb3csXG4gICAgICAgICAgICAgICAgeE9mZnNldCxcbiAgICAgICAgICAgICAgICB5T2Zmc2V0LFxuICAgICAgICAgICAgICAgIGJsdXIsXG4gICAgICAgICAgICAgICAgc3ByZWFkLFxuICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgICAgICBidG5Gb250V2VpZ2h0LFxuICAgICAgICAgICAgICAgIGJ0bkJvcmRlcldpZHRoXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICAvLyBDaGFuZ2UgdGhlIGltYWdlXG4gICAgICAgIGNvbnN0IG9uU2VsZWN0SW1hZ2UgPSBpbWcgPT4ge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgaW1nSUQ6IGltZy5pZCxcbiAgICAgICAgICAgICAgICBpbWdVUkw6IGltZy51cmwsXG4gICAgICAgICAgICAgICAgaW1nQWx0OiBpbWcuYWx0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQ2xlYXIgdGhlIGltYWdlXG4gICAgICAgIGNvbnN0IG9uUmVtb3ZlSW1hZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICBpbWdJRDogbnVsbCxcbiAgICAgICAgICAgICAgICBpbWdVUkw6IG51bGwsXG4gICAgICAgICAgICAgICAgaW1nQWx0OiBudWxsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVzaWduUGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9eyBkZXNpZ24gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9eyBhcHBseUZpbHRlcnMoICdibG9ja3NwYXJlLmN0YS5lZGl0LmxheW91dHMnLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ0xheW91dCAxJywgJ2Jsb2Nrc3BhcmUnICksIHZhbHVlOiAnc3R5bGUtMScsIGltYWdlOiBJbWFnZURlc2lnblN0eWxlMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnTGF5b3V0IDInLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdzdHlsZS0yJywgaW1hZ2U6IEltYWdlRGVzaWduU3R5bGUyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdMYXlvdXQgMycsICdibG9ja3NwYXJlJyApLCB2YWx1ZTogJ3N0eWxlLTMnLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgZGVzaWduID0+IHNldEF0dHJpYnV0ZXMoIHsgZGVzaWduIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Rlc2lnblBhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgQnV0dG9uJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzaG93QnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3Nob3dCdXR0b246ICFzaG93QnV0dG9ufSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnUmV2ZXJzZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17bGF5b3V0T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2xheW91dE9wdGlvbjogIWxheW91dE9wdGlvbn0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuXG5cblxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29udGVudEltZyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1lZGlhVXBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e29uU2VsZWN0SW1hZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW1nSUR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoe29wZW59KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFmdC1jdGEtaW5zcGVjdG9yLW1lZGlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0VkaXQgaW1hZ2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJmb3JtYXQtaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge19fKCdTZWxlY3QgSW1hZ2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1nVVJMICYmICEhaW1nVVJMLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1jdGEtaW5zcGVjdG9yLW1lZGlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdSZW1vdmUgSW1hZ2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZGlzbWlzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uUmVtb3ZlSW1hZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7X18oJ1JlbW92ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvTWVkaWFVcGxvYWQ+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB7aW1nVVJMICYmICEhaW1nVVJMLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17aW1nVVJMfSB3aWR0aD1cIjEwMHB4XCIgaGVpZ2h0PVwiMTAwcHhcIiBhbHQ9e2ltZ0FsdH0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGggJiZcblxuICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Nob29zZSBJbWFnZSBTaGFwZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17aW1nU2hhcGVPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbWFnZVNoYXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7aW1hZ2VTaGFwZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGVzaWduICE9J3N0eWxlLTMnICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwgUGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlYm94Y29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnSGVhZGVyIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlclNldHRpbmdzXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCbG9ja0dhcHM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udFNpemU9e3RpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlRm9udFNpemV9KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemUgPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVGb250U2l6ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVybGF5b3V0T3B0aW9uPXtoZWFkZXJsYXlvdXRPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VIZWFkZXJTdHlsZT17aGVhZGVybGF5b3V0T3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoeyBoZWFkZXJsYXlvdXRPcHRpb24gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyYm94Q29sb3I9e2hlYWRlcmJveENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlYm94Y29sb3I9e2hlYWRlcmJveENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlcmJveENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZURhc2hDb2xvcj17ZGFzaENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2Rhc2hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcj17aGVhZGVydGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tPXt0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdCb3R0b209IHt0aXRsZVBhZGRpbmdCb3R0b20gPT5zZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdCb3R0b219KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZWNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJzdWJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdCb3R0b219KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbG9yIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdEZXNjcmlwdGlvbiBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGVzY3JpcHRpb25Db2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlZGVzY3JpcHRpb2NvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0Rlc2NyaXB0aW9uIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgeyBzaG93QnV0dG9uICYmXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0J1dHRvbiBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICA8QlNidXR0b25TZXR0aW5nc1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPcGVuIGluIG5ldyB3aW5kb3dcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblRhcmdldD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UYXJnZXQ9eyBidXR0b25UYXJnZXQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25UYXJnZXQ9eyB2YWx1ZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyBidXR0b25UYXJnZXQ6ICEgYnV0dG9uVGFyZ2V0IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUdyYWRpZW50ID0ge2VuYWJsZUdyYWRpZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VHcmFkaWVudCA9eyBlbmFibGVHcmFkaWVudCA9PiBzZXRBdHRyaWJ1dGVzKHtlbmFibGVHcmFkaWVudH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gU2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU2l6ZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemU9eyBidXR0b25TaXplIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uU2l6ZT17IGJ1dHRvblNpemUgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblNpemUgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gU2hhcGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblNoYXBlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGU9eyBidXR0b25TaGFwZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblNoYXBlPXsgYnV0dG9uU2hhcGUgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblNoYXBlIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIGNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3I9eyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25Db2xvcj17IGJ1dHRvbkJhY2tncm91bmRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uQmFja2dyb3VuZENvbG9yIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIHRleHQgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHRDb2xvcj17IGJ1dHRvblRleHRDb2xvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblRleHRDb2xvcj17IGJ1dHRvblRleHRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVGV4dENvbG9yIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU3R5bGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9e2J1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCb3JkZXJTdHlsZT17YnV0dG9uU3R5bGUgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblN0eWxlIH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj17Ym9yZGVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZUJvcmRlckNvbG9yPXtib3JkZXJDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3I9e2JvcmRlckJ0blRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQm9yZGVyQnRuVGV4dENvbG9yPXtib3JkZXJCdG5UZXh0Q29sb3IgPT4gc2V0QXR0cmlidXRlcyh7Ym9yZGVyQnRuVGV4dENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ0bkJvcmRlcldpZHRoPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkJvcmRlcldpZHRoPXtidG5Cb3JkZXJXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlYnRuQm9yZGVyV2lkdGggPSB7YnRuQm9yZGVyV2lkdGggPT4gc2V0QXR0cmlidXRlcyh7YnRuQm9yZGVyV2lkdGh9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnRuRm9udFdlaWdodD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBidG5Gb250V2VpZ2h0PXtidG5Gb250V2VpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VCdG5Gb250V2VpZ2h0PXtidG5Gb250V2VpZ2h0ID0+IHNldEF0dHJpYnV0ZXMoe2J0bkZvbnRXZWlnaHR9KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICB7YnV0dG9uU3R5bGU9PT0nbm9uZScmJlxuXG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0VuYWJsZSBHcmFkaWVudCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtlbmFibGVHcmFkaWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2VuYWJsZUdyYWRpZW50OiAhZW5hYmxlR3JhZGllbnR9KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUdyYWRpZW50ICYmIGJ1dHRvblN0eWxlPT09J25vbmUnJiYgIHNob3dCdXR0b24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0dyYWRpZW50IE9wdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JhZGllbnRDb2xvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMT17YmFja2dyb3VuZENvbG9yMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IxPXtiYWNrZ3JvdW5kQ29sb3IxID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tncm91bmRDb2xvcjF9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyPXtiYWNrZ3JvdW5kQ29sb3IyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjI9e2JhY2tncm91bmRDb2xvcjIgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yMn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50QW5nbGU9e2dyYWRpZW50QW5nbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlR3JhZGllbnRBbmdsZT17Z3JhZGllbnRBbmdsZSA9PiBzZXRBdHRyaWJ1dGVzKHtncmFkaWVudEFuZ2xlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjE9e2NvbG9yTG9jYXRpb24xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUNvbG9yTG9jYXRpb24xPXtjb2xvckxvY2F0aW9uMSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2xvckxvY2F0aW9uMX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yPXtjb2xvckxvY2F0aW9uMn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMj17Y29sb3JMb2NhdGlvbjIgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JMb2NhdGlvbjJ9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIH1cblxuXG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgR2FwcycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxNYXJnaW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcD17bWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Ub3A9e21hcmdpblRvcCA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Ub3B9KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gbWFyZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbU1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luQm90dG9tfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9zdHlsZS0xLnBuZ1wiOyIsImV4cG9ydCBkZWZhdWx0IFwiaW1hZ2VzL3N0eWxlLTIucG5nXCI7IiwiZXhwb3J0IGRlZmF1bHQgXCJpbWFnZXMvc3R5bGUtMy5wbmdcIjsiLCJpbXBvcnQgYmxvZ1Bvc3RTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9jb250ZW50LWJveC1zdHlsZXNcIjtcblxuLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgcHJldl9pbWcgPSBibG9ja3NwYXJlX2dsb2JhbHM7XG5pbXBvcnQgJy4uL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi4vc3R5bGVzL2VkaXRvci5zY3NzJyA7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBCU0J1dHRvbiBmcm9tICcuLi8uLi9idXR0b24vZWRpdCdcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSBcIi4vaW5zcGVjdG9yXCI7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IGJ1dHRvblN0eWxlT3B0aW9uIGZyb20gJy4uLy4uL3V0aWxzL3N0eWxlcyc7XG5pbXBvcnQgZGFzaENvbG9ycyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2hcIjtcbmltcG9ydCB0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGVcIjtcbmltcG9ydCBzdWJ0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGVcIjtcbmltcG9ydCBtYXJnaW5QYWRkaW5nU3R5bGVzICBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL21hcmdpbi1wYWRkaW5nXCI7XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuXG5jb25zdCB7XG4gICAgQmxvY2tDb250cm9scyxcbiAgICBSaWNoVGV4dCxcbiAgICBVUkxJbnB1dCxcbiAgICBBbGlnbm1lbnRUb29sYmFyXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICBJY29uQnV0dG9uLFxuICAgIERhc2hpY29uLFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRlbnRCb3ggZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uQ29sb3IsXG4gICAgICAgICAgICAgICAgc2VjdGlvbkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgICAgICAgICAgYnV0dG9uVXJsLFxuICAgICAgICAgICAgICAgIHNob3dCdXR0b24sXG4gICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICBidXR0b25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgc2hvd0NvbnRlbnRJbWcsXG4gICAgICAgICAgICAgICAgaW1nVVJMLFxuICAgICAgICAgICAgICAgIGltZ0FsdCxcbiAgICAgICAgICAgICAgICBpbWFnZVNoYXBlLFxuICAgICAgICAgICAgICAgIGxheW91dE9wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJUYWdPcHRpb24sXG4gICAgICAgICAgICAgICAgaGVhZGVyVGl0bGUsXG4gICAgICAgICAgICAgICAgaGVhZGVyU3ViVGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzaWduLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgICAgICBlbmFibGVCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAuLi5tYXJnaW5QYWRkaW5nU3R5bGVzKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cblxuICAgICAgICBjb25zdCBidG5TdHlsZSA9e1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24gKGF0dHJpYnV0ZXMpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5kYXNoQ29sb3JzKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHBsYWNlX2hvbGRlcl9pbWFnZSA9ICBwcmV2X2ltZy5pbWc7XG4gICAgICAgIGlmKGltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGgpe1xuICAgICAgICAgICAgcGxhY2VfaG9sZGVyX2ltYWdlID0gaW1nVVJMO1xuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzPlxuXG4gICAgICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VjdGlvbkFsaWdubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtzZWN0aW9uQWxpZ25tZW50OiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cblxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWNvbnRlbnQtd3JhcHBlciBibG9ja3NwYXJlLWJsb2NrcycsXG4gICAgICAgICAgICAgICAgICAgICdhbGlnbicgKyBhbGlnbixcbiAgICAgICAgICAgICAgICAgICAgKGxheW91dE9wdGlvbj09dHJ1ZSk/J3JldmVyc2UtaW1nJzonJyxcbiAgICAgICAgICAgICAgICAgICAgKGRlc2lnbiAhPSAnc3R5bGUtMycpPydoYXMtYmFja2dyb3VuZCc6JycsXG4gICAgICAgICAgICAgICAgICAgIGRlc2lnblxuICAgICAgICAgICAgICAgICl9IHN0eWxlPXtlZGl0U3R5bGVzfT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NvbnRlbnRJbWcgJiYgaW1nVVJMICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nY29udGVudC1pbWctd3JhcCc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e3BsYWNlX2hvbGRlcl9pbWFnZX0gYWx0PXtpbWdBbHR9IGNsYXNzTmFtZT17aW1hZ2VTaGFwZX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAhaW1nVVJMICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtcHR5LXBsY2FlaG9sZGVyLWRpdlwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc2VjdGlvbi13cmFwcGVyJyBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAuLi5ibG9nUG9zdFN0eWxlcyhhdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zZWN0aW9uLWhlYWQtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXN1YnRpdGxlLXdyYXAnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXIgey4uLnRoaXMucHJvcHN9PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3RpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnU3ViIFRpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJTdWJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CU0hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1kZXNjLWJ0bi13cmFwJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ0Rlc2NyaXB0aW9uJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VjdGlvbkRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtZGVzY3JpcHRpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZGVzY3JpcHRpb25Db2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtzZWN0aW9uRGVzY3JpcHRpb246IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93QnV0dG9uICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QlNCdXR0b24gey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnQnV0dG9uIHRleHQuLi4nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2J1dHRvblRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkRm9ybWF0cz17W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtidG5TdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2J1dHRvblRleHQ6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CU0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc1NlbGVjdGVkICYmIHNob3dCdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PVwiZm9ybS1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJsb2Nrcy1idXR0b25fX2lubGluZS1saW5rIGJsb2Nrc3BhcmUtYnV0dG9uLSR7YnV0dG9uQWxpZ25tZW50fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17ZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hpY29uIGljb249eydhZG1pbi1saW5rcyd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVUkxJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ1dHRvbi11cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtidXR0b25Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7YnV0dG9uVXJsOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImVkaXRvci1icmVha1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdBcHBseScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCBDb250ZW50Qm94IGZyb20gJy4vY29tcG9uZW50cy9lZGl0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBCU0J1dHRvbiBmcm9tIFwiLi8uLi9idXR0b24vZWRpdFwiO1xuaW1wb3J0IGJ1dHRvblN0eWxlT3B0aW9uIGZyb20gJy4uL3V0aWxzL3N0eWxlcyc7XG5pbXBvcnQgYnV0dG9uQXR0cmlidXRlcyBmcm9tICcuLi91dGlscy9hdHRyaWJ1dGVzL2J1dHRvbic7XG5pbXBvcnQgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9zZWN0aW9uLWhlYWRlcic7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgbWFyZ2luUGFkZGluZyBmcm9tICcuLi91dGlscy9hdHRyaWJ1dGVzL21hcmdpbi1wYWRkaW5nJztcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgZGFzaENvbG9ycyBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2hcIjtcbmltcG9ydCB0aXRsZUNvbG9yIGZyb20gXCIuLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGVcIjtcbmltcG9ydCBzdWJ0aXRsZUNvbG9yIGZyb20gXCIuLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGVcIjtcbmltcG9ydCBtYXJnaW5QYWRkaW5nU3R5bGVzIGZyb20gXCIuLi91dGlscy9zdHlsZXMvbWFyZ2luLXBhZGRpbmdcIjtcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuaW1wb3J0IGJsb2dQb3N0U3R5bGVzIGZyb20gXCIuLi91dGlscy9zdHlsZXMvY29udGVudC1ib3gtc3R5bGVzXCI7XG5cbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtcbiAgICBSaWNoVGV4dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgcHJldl9pbWcgPSBibG9ja3NwYXJlX2dsb2JhbHM7XG5jb25zdCB7bmFtZSwgY2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cbmNvbnN0IGF0dHJpYnV0ZXM9e1xuICAgIC4uLm1hcmdpblBhZGRpbmcsXG4gICAgLi4uc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMsXG4gICAgLi4ubWV0YWRhdGEuYXR0cmlidXRlcyxcbiAgICAuLi5ib3hTaGFkb3dBdHRyaWJ1dGVzLFxuICAgIC4uLmJ1dHRvbkF0dHJpYnV0ZXNcbn07XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIENvbnRlbnQgQm94JywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ1lvdSBjYW4gY3JlYXRlIGEgdmFyaWV0eSBvZiBsYXlvdXRzIHVzaW5nIHRoaXMgYmxvY2suJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeTogY2F0ZWdvcnksXG4gICAgaWNvbjogaWNvbnMuY29udGVudGJveCxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdibG9jaycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdjb250YWluZXInLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY29udGVudCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdib3gnLCAnYmxvY2tzcGFyZScpLFxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBodG1sOiBmYWxzZSxcbiAgICAgICAgY2xhc3NOYW1lOiBmYWxzZSxcbiAgICAgICAgYWxpZ246IFsnY2VudGVyJywgJ3dpZGUnLCAnZnVsbCddLFxuICAgIH0sXG4gICAgZXhhbXBsZToge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBkZXNpZ246XCJzdHlsZS0xXCJcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVkaXQ6IENvbnRlbnRCb3gsXG4gICAgc2F2ZTogZnVuY3Rpb24gKHByb3BzKSB7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgZGVzY3JpcHRpb25Db2xvcixcbiAgICAgICAgICAgIHNlY3Rpb25EZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgICAgICBidXR0b25VcmwsXG4gICAgICAgICAgICBzaG93QnV0dG9uLFxuICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICAgICAgc2hvd0NvbnRlbnRJbWcsXG4gICAgICAgICAgICBpbWdVUkwsXG4gICAgICAgICAgICBpbWdBbHQsXG4gICAgICAgICAgICBpbWFnZVNoYXBlLFxuICAgICAgICAgICAgbGF5b3V0T3B0aW9uLFxuICAgICAgICAgICAgaGVhZGVyVGl0bGUsXG4gICAgICAgICAgICBoZWFkZXJTdWJUaXRsZSxcbiAgICAgICAgICAgIGRhc2hDb2xvcixcbiAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbixcbiAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgIGRlc2lnbixcbiAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgIGVuYWJsZUJhY2tncm91bmRDb2xvclxuXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgLi4ubWFyZ2luUGFkZGluZ1N0eWxlcyhwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG5cbiAgICAgICAgY29uc3QgYm9yZGVyQ29sb3IgPSB7XG4gICAgICAgICAgICBib3JkZXJDb2xvcjogZGFzaENvbG9yLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGJ0blN0eWxlcyA9e1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24ocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uZGFzaENvbG9ycyhwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4udGl0bGVDb2xvcihwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN1YnRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uc3VidGl0bGVDb2xvcihwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBwbGFjZV9ob2xkZXJfaW1hZ2UgPSAgcHJldl9pbWcuaW1nO1xuICAgICAgICBpZihpbWdVUkwgJiYgISFpbWdVUkwubGVuZ3RoKXtcbiAgICAgICAgICAgIHBsYWNlX2hvbGRlcl9pbWFnZSA9IGltZ1VSTDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1jb250ZW50LXdyYXBwZXIgYmxvY2tzcGFyZS1ibG9ja3MnLFxuICAgICAgICAgICAgICAgICdhbGlnbicgKyBhbGlnbixcbiAgICAgICAgICAgICAgICAobGF5b3V0T3B0aW9uPT10cnVlKT8ncmV2ZXJzZS1pbWcnOicnLFxuICAgICAgICAgICAgICAgIChkZXNpZ24gIT0gJ3N0eWxlLTMnKT8naGFzLWJhY2tncm91bmQnOicnLFxuICAgICAgICAgICAgICAgIGRlc2lnblxuICAgICAgICAgICAgKX0gc3R5bGU9e2VkaXRTdHlsZXN9PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NvbnRlbnRJbWcgJiYgaW1nVVJMICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdjb250ZW50LWltZy13cmFwJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXtwbGFjZV9ob2xkZXJfaW1hZ2V9IGFsdD17aW1nQWx0fSBjbGFzc05hbWU9e2ltYWdlU2hhcGV9Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgICAgICAhaW1nVVJMICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZW1wdHktcGxjYWVob2xkZXItZGl2XCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXNlY3Rpb24td3JhcHBlclwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIC4uLmJsb2dQb3N0U3R5bGVzKHByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgfX0+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2Jsb2Nrc3BhcmUtc2VjdGlvbi1oZWFkZXItd3JhcHBlcicpfSBzdHlsZT17Ym9yZGVyQ29sb3J9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXCJibG9ja3NwYXJlLXNlY3Rpb24taGVhZC13cmFwXCIsIGhlYWRlcmxheW91dE9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS0nICsgc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtc3VidGl0bGUtd3JhcCc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlciB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclRpdGxlICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3RpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyU3ViVGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JTSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1kZXNjLWJ0bi13cmFwJz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBkZXNjcmlwdGlvbkNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWN0aW9uRGVzY3JpcHRpb259XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0J1dHRvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBidXR0b24gdGV4dCBhbmQgb3V0cHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UZXh0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtidXR0b25Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD17YnV0dG9uVGFyZ2V0ID8gJ19ibGFuaycgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9e2J1dHRvblRhcmdldCA/ICdub29wZW5lciBub3JlZmVycmVyJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtidG5TdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2J1dHRvblRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JTQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG59KTsiLCJjb25zdCBzZXBhcmF0b3JBdHRyaWJ1dGVzID0ge1xuICAgIGFsaWduOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiZnVsbFwiXG4gICAgfSxcbiAgICBkZXNpZ246IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCJkb3VibGUtd2F2ZVwiXG4gICAgfSxcbiAgICBsYXllcjFTaGFkb3c6IHtcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB3aWR0aDoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAxXG4gICAgfSxcbiAgICBoZWlnaHQ6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMTUwXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiMzYzFhNWJcIlxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc2VwYXJhdG9yQXR0cmlidXRlcyIsImNvbnN0IGJnR3JhZGllbnQgPSAoYXR0cmlidXRlcykgPT57XG5cbiAgICBsZXQgYmdHcmFkaWVudFN0eWxlcyA9ICcnO1xuXG4gICAgaWYoYXR0cmlidXRlcy5lbmFibGVHcmFkaWVudCAgPT0gdHJ1ZSl7XG4gICAgICAgIGNvbnN0IGFuZ2xlID0gYXR0cmlidXRlcy5ncmFkaWVudEFuZ2xlKydkZWcnO1xuICAgICAgICBjb25zdCBsb2NhMSAgPSBhdHRyaWJ1dGVzLmNvbG9yTG9jYXRpb24xKyclJztcbiAgICAgICAgY29uc3QgbG9jYTIgID0gYXR0cmlidXRlcy5jb2xvckxvY2F0aW9uMisnJSc7XG4gICAgICAgIGJnR3JhZGllbnRTdHlsZXMgPSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6YGxpbmVhci1ncmFkaWVudCgke2FuZ2xlfSwke2F0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yMT9hdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcjE6JyMzQjFBNUInfSAke2xvY2ExfSwke2F0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yMj9hdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcjI6JyM4QjI0OUMnfSAke2xvY2EyfSlgXG5cbiAgICAgICAgfVxuICAgIH1lbHNlIHtcbiAgICAgICAgYmdHcmFkaWVudFN0eWxlcyA9e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmF0dHJpYnV0ZXMuYmFja0dyb3VuZENvbG9yP2F0dHJpYnV0ZXMuYmFja0dyb3VuZENvbG9yOicjZmZmJyxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBiZ0dyYWRpZW50U3R5bGVzXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgYmdHcmFkaWVudDsiLCJjb25zdCBiZ0dyYWRpZW50QXR0cmlidXRlcyA9IHtcblxuICAgIGVuYWJsZUdyYWRpZW50OiB7XG4gICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgYmFja2dyb3VuZENvbG9yMToge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiMzQjFBNUJcIlxuICAgIH0sXG4gICAgYmFja2dyb3VuZENvbG9yMjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiM4QjI0OUNcIlxuICAgIH0sXG4gICAgZ3JhZGllbnRBbmdsZToge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAtOTBcbiAgICB9LFxuICAgIGNvbG9yTG9jYXRpb24xOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDMwXG4gICAgfSxcbiAgICBjb2xvckxvY2F0aW9uMjoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiA3MFxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgYmdHcmFkaWVudEF0dHJpYnV0ZXMiLCJpbXBvcnQgUGFkZGluZyBmcm9tICcuLy4uLy4uL3V0aWxzL3BhZGRpbmcnO1xuaW1wb3J0IE1hcmdpbiBmcm9tICcuLy4uLy4uL3V0aWxzL21hcmdpbic7XG5pbXBvcnQgRGVzaWduUGFuZWxCb2R5IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXBhbmVsLWJvZHlcIjtcbmltcG9ydCBEZXNpZ25TZXBhcmF0b3JDb250cm9sIGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sXCI7XG5pbXBvcnQgR3JhZGllbnRDb2xvcnMgZnJvbSAnLi4vLi4vdXRpbHMvY29tcG9uZW50L2dyYWRpZW50JztcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIjtcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgTWVkaWFVcGxvYWQsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBSYW5nZUNvbnRyb2wsXG4gICAgUGFuZWxCb2R5LFxuICAgIEljb25CdXR0b24sXG4gICAgVG9nZ2xlQ29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgb3BhY2l0eVJhdGlvLFxuICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgaW1nVVJMLFxuICAgICAgICAgICAgaW1nSUQsXG4gICAgICAgICAgICBpbWdBbHQsXG4gICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgYmFja2dyb3VuZEZpeCxcbiAgICAgICAgICAgIHNlcGFyYXRvckVuYWJsZSxcbiAgICAgICAgICAgIGRlc2lnbj0nd2F2ZS0xJyxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgY29sb3IsXG4gICAgICAgICAgICBzaG93RnJvbnQsXG4gICAgICAgICAgICB6aW5kZXhEaXZpZGVyLFxuICAgICAgICAgICAgZGl2aWRlclBvc2l0aW9uLFxuICAgICAgICAgICAgdG9wRGl2aWRlck1hcmdpbixcbiAgICAgICAgICAgIGJvdHRvbURpdmlkZXJNYXJnaW4sXG4gICAgICAgICAgICBlbmFibGVHcmFkaWVudCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjEsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyLFxuICAgICAgICAgICAgZ3JhZGllbnRBbmdsZSxcbiAgICAgICAgICAgIGNvbG9yTG9jYXRpb24xLFxuICAgICAgICAgICAgY29sb3JMb2NhdGlvbjIsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICBlbmFibGVCb3hTaGFkb3csXG4gICAgICAgICAgICB4T2Zmc2V0LFxuICAgICAgICAgICAgeU9mZnNldCxcbiAgICAgICAgICAgIGJsdXIsXG4gICAgICAgICAgICBzcHJlYWQsXG4gICAgICAgICAgICBzaGFkb3dDb2xvcixcbiAgICAgICAgICAgIGVuYWJsZUdhcFxuICAgICAgICB9PXRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3Qge3NldEF0dHJpYnV0ZXN9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIGNvbnN0IGRpdmlkZXJQb3NpdGlvbk9wdGlwbiA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2hhcy1zZXBhcmF0b3ItdG9wJywgbGFiZWw6IF9fKCdUb3AnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2hhcy1zZXBhcmF0b3ItYm90dG9tJywgbGFiZWw6IF9fKCdCb3R0b20nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICBdO1xuXG4gICAgICAgIC8vIENoYW5nZSB0aGUgaW1hZ2VcbiAgICAgICAgY29uc3Qgb25TZWxlY3RJbWFnZSA9IGltZyA9PiB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICBpbWdJRDogaW1nLmlkLFxuICAgICAgICAgICAgICAgIGltZ1VSTDogaW1nLnVybCxcbiAgICAgICAgICAgICAgICBpbWdBbHQ6IGltZy5hbHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBDbGVhciB0aGUgaW1hZ2VcbiAgICAgICAgY29uc3Qgb25SZW1vdmVJbWFnZSA9ICgpID0+IHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgIGltZ0lEOiBudWxsLFxuICAgICAgICAgICAgICAgIGltZ1VSTDogbnVsbCxcbiAgICAgICAgICAgICAgICBpbWdBbHQ6IG51bGwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBvbkNoYW5nZUJhY2tncm91bmRjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tHcm91bmRDb2xvcjogdmFsdWV9KTtcblxuICAgICAgICBjb25zdCBvbkNoYW5nZVNoYXBlc2NvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3I6IHZhbHVlfSk7XG4gICAgICAgIHJldHVybihcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdQYWRkaW5nIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFkZGluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVUb3A9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A9e3BhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1RvcD17cGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nVG9wfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlUmlnaHQ9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodD17cGFkZGluZ1JpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nUmlnaHR9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlQm90dG9tPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdCb3R0b209e3BhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlZnQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlTGVmdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0ID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdMZWZ0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdNYXJnaW4gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNYXJnaW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVUb3A9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcD17bWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Ub3A9e21hcmdpblRvcCA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Ub3B9KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlQm90dG9tPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luQm90dG9tfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgIClcblxuICAgIH1cbn0iLCJpbXBvcnQgU1ZHRG91YmxlV2F2ZSBmcm9tICcuL2ltYWdlcy9kb3VibGUtd2F2ZS5zdmcnO1xuaW1wb3J0IFNWR0ZhbiBmcm9tICcuL2ltYWdlcy9mYW4uc3ZnJztcbmltcG9ydCBTVkdXYXZ5IGZyb20gJy4vaW1hZ2VzL3dhdnkuc3ZnJztcbmltcG9ydCBTVkdXYXZlcyBmcm9tICcuL2ltYWdlcy93YXZlcy5zdmcnO1xuaW1wb3J0IFNWR1Nsb3BlZCBmcm9tICcuL2ltYWdlcy9zbG9wZWQuc3ZnJztcbmltcG9ydCBTVkdDdXJ2ZSBmcm9tICcuL2ltYWdlcy9jdXJ2ZS5zdmcnO1xuaW1wb3J0IFNWR1NoYXBlT2NlYW4gZnJvbSAnLi9pbWFnZXMvc2hhcGVvY2Vhbi5zdmcnO1xuaW1wb3J0IFNWR0dyb3cgZnJvbSAnLi9pbWFnZXMvZ3Jvdy5zdmcnO1xuaW1wb3J0IFNWR0Nsb3VkcyBmcm9tICcuL2ltYWdlcy9jbG91ZHMuc3ZnJztcbmltcG9ydCBTVkdBbmdsZWQgZnJvbSAnLi9pbWFnZXMvYW5nbGVkLnN2Zyc7XG5cbmV4cG9ydCBjb25zdCBzZXBhcmF0b3JzID0ge1xuXHQnd2F2eSc6IFNWR1dhdnksXG5cdCd3YXZlcyc6IFNWR1dhdmVzLFxuXHQnZG91YmxlLXdhdmUnOlNWR0RvdWJsZVdhdmUsXG5cdCdmYW4nOlNWR0Zhbixcblx0J3Nsb3BlZCc6U1ZHU2xvcGVkLFxuXHQnY3VydmUnOlNWR0N1cnZlLFxuXHQnc2hhcGVvY2Vhbic6U1ZHU2hhcGVPY2Vhbixcblx0J2dyb3cnOlNWR0dyb3csXG5cdCdjbG91ZHMnOlNWR0Nsb3Vkcyxcblx0J2FuZ2xlZCc6IFNWR0FuZ2xlZFxufVxuXG5cbiIsIi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgeyBzZXBhcmF0b3JzIH0gZnJvbSAnLi9zZXBhcmF0b3JzJ1xuXG4vKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuXG5jb25zdCBTZXBhcmF0b3IgPSBwcm9wcyA9PiB7XG5cblx0Y29uc3QgU2VwYXJhdG9yQ29tcCA9IHNlcGFyYXRvcnNbIHByb3BzLmRlc2lnbiBdXG5cblxuXHRjb25zdCBtYWluQ2xhc3NlcyA9IGNsYXNzbmFtZXMoIFtcblx0XHRwcm9wcy5jbGFzc05hbWUsXG5cdFx0J2Jsb2Nrc3BhcmUtc2VwYXJhdG9yLXdyYXBwZXInLFxuXHRdIClcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXYgY2xhc3NOYW1lPXsgbWFpbkNsYXNzZXMgfT5cblx0XHRcdDxTZXBhcmF0b3JDb21wXG5cdFx0XHRcdGNsYXNzTmFtZT17cHJvcHMuZGVzaWdufVxuXHRcdFx0XHRwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXG5cdFx0XHRcdGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG5cdFx0XHQvPlxuXHRcdFx0eyBwcm9wcy5jaGlsZHJlbiB9XG5cdFx0PC9kaXY+XG5cdClcbn1cblxuU2VwYXJhdG9yLmRlZmF1bHRQcm9wcyA9IHtcblx0Y2xhc3NOYW1lOiAnJyxcblx0ZGVzaWduOiAnZG91YmxlLXdhdmUnLFxuXHRzaGFkb3c6IGZhbHNlLFxufVxuXG5TZXBhcmF0b3IuU2F2ZSA9IHByb3BzID0+IDxTZXBhcmF0b3IgeyAuLi5wcm9wcyB9IC8+XG5cbmV4cG9ydCBkZWZhdWx0IFNlcGFyYXRvclxuIiwiLyoqXHJcbiAqIEludGVybmFsIGRlcGVuZGVuY2llc1xyXG4gKi9cclxuaW1wb3J0IGljb25zIGZyb20gJy4vLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4LmpzJztcclxuXHJcbi8qKlxyXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXHJcbiAqL1xyXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xyXG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XHJcbmNvbnN0IHsgQmxvY2tDb250cm9scyxCbG9ja0FsaWdubWVudFRvb2xiYXJ9ID0gd3AuYmxvY2tFZGl0b3I7XHJcbmNvbnN0IHsgVG9vbGJhciB9ID0gd3AuY29tcG9uZW50cztcclxuXHJcbmNsYXNzIENvbnRyb2xzIGV4dGVuZHMgQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXHJcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXHJcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgICAgaG9yaXpvbnRhbEZsaXAsXHJcbiAgICAgICAgICAgIHZlcnRpY2FsRmxpcCxcclxuICAgICAgICB9ID0gYXR0cmlidXRlcztcclxuXHJcblxyXG5cclxuICAgICAgICBjb25zdCB0b29sYmFyQ29udHJvbHMgPSBbIHtcclxuICAgICAgICAgICAgaWNvbjogaWNvbnMuZmxpcFksXHJcbiAgICAgICAgICAgIHRpdGxlOiBfXyggJ0ZsaXAgaG9yaXp0b25hbGx5JywgJ2Jsb2Nrc3BhcmUnICksXHJcbiAgICAgICAgICAgIGlzQWN0aXZlOiAhISB2ZXJ0aWNhbEZsaXAsXHJcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldEF0dHJpYnV0ZXMoIHsgdmVydGljYWxGbGlwOiAhIHZlcnRpY2FsRmxpcCB9ICksXHJcbiAgICAgICAgfV07XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxGcmFnbWVudD5cclxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUb29sYmFyIGNvbnRyb2xzPXsgdG9vbGJhckNvbnRyb2xzIH0gLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XHJcbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQ29udHJvbHM7IiwiaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3RvcidcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgbWFyZ2luUGFkZGluZ1N0eWxlcyBmcm9tICAnLi4vLi4vdXRpbHMvc3R5bGVzL21hcmdpbi1wYWRkaW5nJztcbmltcG9ydCBTZXBhcmF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL3NlcGFyYXRvclwiO1xuaW1wb3J0IENvbnRyb2xzIGZyb20gXCIuLi8uLi9zaGFwZS1kaXZpZGVyL2NvbnRyb2xzXCI7XG5pbXBvcnQgYmdHcmFkaWVudCBmcm9tICcuLi8uLi91dGlscy9zdHlsZXMvYmctZ3JhZGllbnQnO1xuaW1wb3J0IGJveFNoYWRvd1N0eWxlcyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL2JveC1zaGFkb3dcIjtcbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7XG4gICAgSW5uZXJCbG9ja3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGVkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6e1xuXG4gICAgICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICAgICAgb3BhY2l0eVJhdGlvLFxuICAgICAgICAgICAgICAgIGltZ1VSTCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kRml4LFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsRmxpcCxcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsRmxpcCxcbiAgICAgICAgICAgICAgICBzZXBhcmF0b3JFbmFibGUsXG4gICAgICAgICAgICAgICAgZGVzaWduLFxuICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICBjb2xvcixcbiAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICBzaG93RnJvbnQsXG4gICAgICAgICAgICAgICAgemluZGV4RGl2aWRlcixcbiAgICAgICAgICAgICAgICBkaXZpZGVyUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgdG9wRGl2aWRlck1hcmdpbixcbiAgICAgICAgICAgICAgICBib3R0b21EaXZpZGVyTWFyZ2luLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgICAgICBlbmFibGVHYXBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuXG5cblxuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgLi4uYmdHcmFkaWVudChhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIC4uLm1hcmdpblBhZGRpbmdTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyA/IGJvcmRlclJhZGl1cyA6IG51bGwsXG5cbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgYmFja2dyb3VuZEltZyA9Jyc7XG4gICAgICAgICAgICBpZihpbWdVUkwpe1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWcgPSAndXJsKCcraW1nVVJMKycpJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICBsZXQgY2xhc3NlcyA9IGNsYXNzbmFtZXMoXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9ja3MgYmxvY2tzcGFyZS1zdmctd3JhcHBlcicsXG4gICAgICAgICAgICB3aWR0aFJhdGlvKHdpZHRoKSxcblxuICAgICAgICAgICAgY2xhc3NOYW1lLCB7XG4gICAgICAgICAgICAgICAgJ2lzLXZlcnRpY2FsbHktZmxpcHBlZCc6IHZlcnRpY2FsRmxpcCxcbiAgICAgICAgICAgICAgICAnaXMtaG9yaXpvbnRhbGx5LWZsaXBwZWQnOiBob3Jpem9udGFsRmxpcCxcbiAgICAgICAgICAgIH0pO1xuXG5cbiAgICAgICBsZXQgc2VwU3R5bGVzID0nJztcbiAgICAgICAgaWYoc2VwYXJhdG9yRW5hYmxlKXtcblxuICAgICAgICAgICAgaWYoZGl2aWRlclBvc2l0aW9uID09PSdoYXMtc2VwYXJhdG9yLXRvcCcpe1xuICAgICAgICAgICAgICAgIHNlcFN0eWxlcyA9e1xuICAgICAgICAgICAgICAgICAgICB0b3A6dG9wRGl2aWRlck1hcmdpbitcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogc2hvd0Zyb250PyB6aW5kZXhEaXZpZGVyOicnXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9ZWxzZSBpZihkaXZpZGVyUG9zaXRpb24gPT09J2hhcy1zZXBhcmF0b3ItYm90dG9tJyl7XG4gICAgICAgICAgICAgICAgc2VwU3R5bGVzID17XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTpib3R0b21EaXZpZGVyTWFyZ2luK1wicHhcIixcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiBzaG93RnJvbnQ/IHppbmRleERpdmlkZXI6JydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBzZXBTdHlsZXMgPScnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiAoXG5cbiAgICAgICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHsgaXNTZWxlY3RlZCAmJiBzZXBhcmF0b3JFbmFibGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8Q29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4udGhpcy5wcm9wcyB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSB9XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stY29udGFpbmVyLXdyYXBwZXInLFxuICAgICAgICAgICAgICAgICAgICAnYWxpZ24nICsgYWxpZ24sXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZUdhcD8naGFzLWdhcC1lbmFibGUnOicnLFxuICAgICAgICAgICAgICAgICAgICAoaW1nVVJMICYmICEhaW1nVVJMLmxlbmd0aCAmJiBiYWNrZ3JvdW5kRml4ICk/J2Jsb2Nrc3BhcmUtYmFja2dyb3VuZC1maXgnOlwiXCIsXG4gICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvckVuYWJsZT9kaXZpZGVyUG9zaXRpb246JydcbiAgICAgICAgICAgICAgICApfSBzdHlsZT17ZWRpdFN0eWxlc30+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1jb250YWluZXItYmFja2dyb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtaW1hZ2Utd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eVJhdGlvVG9DbGFzcyhvcGFjaXR5UmF0aW8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kLW9wYWNpdHknOiAwICE9PSBvcGFjaXR5UmF0aW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7YmFja2dyb3VuZEltYWdlOmJhY2tncm91bmRJbWd9fT5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAge3NlcGFyYXRvckVuYWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmxvY2tzcGFyZS10b3Atc2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Zyb250P1wiYmxvY2tzcGFyZS1zdmctc2hvdy1mcm9udFwiOicnXG4gICAgICAgICAgICAgICAgICAgICAgICApfSBzdHlsZT17c2VwU3R5bGVzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlc30gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9yID8gY29sb3IgOiBcIiMzYzFhNWJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduPXtkZXNpZ259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3c9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmctc3ZnLWlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlcGFyYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtaW5uZXItYmxvY2tzJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVMb2NrPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQXBwZW5kZXI9eygpID0+ICF0aGlzLnByb3BzLmhhc0lubmVyQmxvY2tzID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5CdXR0b25CbG9ja0FwcGVuZGVyLz4gOiA8SW5uZXJCbG9ja3MuRGVmYXVsdEJsb2NrQXBwZW5kZXIvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuXG4gICAgICAgIClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG9wYWNpdHlSYXRpb1RvQ2xhc3MocmF0aW8pIHtcbiAgICByZXR1cm4gKDAgPT09IHJhdGlvKSA/XG4gICAgICAgIG51bGwgOlxuICAgICAgICAnaGFzLWJhY2tncm91bmQtb3BhY2l0eS0nICsgKDEwICogTWF0aC5yb3VuZChyYXRpbyAvIDEwKSk7XG59XG5cbmZ1bmN0aW9uIHdpZHRoUmF0aW8od2lkdGgpIHtcbiAgICB2YXIgc3RyID0gd2lkdGgudG9TdHJpbmcoKTtcbiAgICB2YXIgbmV3V2lkdGggPSBzdHIucmVwbGFjZSgnLicsJy0nKTtcbiAgICByZXR1cm4gJ2hhcy13aWR0aC0nK25ld1dpZHRoO1xufSIsImltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJyA7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBtYXJnaW5QYWRkaW5nIGZyb20gJy4uL3V0aWxzL2F0dHJpYnV0ZXMvbWFyZ2luLXBhZGRpbmcnO1xuaW1wb3J0IG1hcmdpblBhZGRpbmdTdHlsZXMgZnJvbSAgJy4uL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZyc7XG5pbXBvcnQgc2VwYXJhdG9yQXR0cmlidXRlcyBmcm9tICAnLi4vdXRpbHMvYXR0cmlidXRlcy9zZXBhcmF0b3InO1xuaW1wb3J0IGJnR3JhZGllbnQgZnJvbSAnLi4vdXRpbHMvc3R5bGVzL2JnLWdyYWRpZW50JztcbmltcG9ydCBiZ0dyYWRpZW50QXR0cmlidXRlcyBmcm9tICcuLi91dGlscy9hdHRyaWJ1dGVzL2JnLWdyYWRpZW50JztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmNvbnN0IHtcbiAgICBJbm5lckJsb2NrcyxcblxufSA9IHdwLmJsb2NrRWRpdG9yO1xuaW1wb3J0IGVkaXQgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IFNlcGFyYXRvciBmcm9tIFwiLi4vdXRpbHMvc2VwYXJhdG9yXCI7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUsY3JlYXRlQmxvY2sgfSA9IHdwLmJsb2NrcztcbmNvbnN0IHtuYW1lLGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG5jb25zdCBhdHRyaWJ1dGVzID17XG4gICAgLi4ubWV0YWRhdGEuYXR0cmlidXRlcyxcbiAgICAuLi5iZ0dyYWRpZW50QXR0cmlidXRlcyxcbiAgICAuLi5tYXJnaW5QYWRkaW5nLFxuICAgIC4uLnNlcGFyYXRvckF0dHJpYnV0ZXMsXG4gICAgLi4uYm94U2hhZG93QXR0cmlidXRlc1xuXG59O1xuY29uc3QgYWxpZ25tZW50T3B0aW9ucyA9IFsnY2VudGVyJywgJ3dpZGUnLCAnZnVsbCddO1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgQ29udGFpbmVyJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0JTIGFkZCBjb250YWluZXInLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5jb250YWluZXIsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY29udGFpbmVyJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2dyb3VwJywnYmxvY2tzcGFyZScpXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbJ2NlbnRlcicsICd3aWRlJywgJ2Z1bGwnXSxcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ0Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZWRpdCxcbiAgICBzYXZlOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBvcGFjaXR5UmF0aW8sXG4gICAgICAgICAgICBpbWdVUkwsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kRml4LFxuICAgICAgICAgICAgdmVydGljYWxGbGlwLFxuICAgICAgICAgICAgaG9yaXpvbnRhbEZsaXAsXG4gICAgICAgICAgICBzZXBhcmF0b3JFbmFibGUsXG4gICAgICAgICAgICBkZXNpZ24sXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBjb2xvcixcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgc2hvd0Zyb250LFxuICAgICAgICAgICAgemluZGV4RGl2aWRlcixcbiAgICAgICAgICAgIGRpdmlkZXJQb3NpdGlvbixcbiAgICAgICAgICAgIHRvcERpdmlkZXJNYXJnaW4sXG4gICAgICAgICAgICBib3R0b21EaXZpZGVyTWFyZ2luLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgZW5hYmxlR2FwXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uYmdHcmFkaWVudChwcm9wcy5hdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIC4uLmJveFNoYWRvd1N0eWxlcyhwcm9wcy5hdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzEwMHB4JyxcbiAgICAgICAgICAgIC4uLm1hcmdpblBhZGRpbmdTdHlsZXMocHJvcHMuYXR0cmlidXRlcyksXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyA/IGJvcmRlclJhZGl1cyA6IG51bGwsXG5cbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgc2VwU3R5bGVzID0nJztcbiAgICAgICAgaWYoc2VwYXJhdG9yRW5hYmxlKXtcblxuICAgICAgICAgICAgaWYoZGl2aWRlclBvc2l0aW9uID09PSdoYXMtc2VwYXJhdG9yLXRvcCcpe1xuICAgICAgICAgICAgICAgIHNlcFN0eWxlcyA9e1xuICAgICAgICAgICAgICAgICAgICB0b3A6dG9wRGl2aWRlck1hcmdpbitcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogc2hvd0Zyb250PyB6aW5kZXhEaXZpZGVyOicnXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9ZWxzZSBpZihkaXZpZGVyUG9zaXRpb24gPT09J2hhcy1zZXBhcmF0b3ItYm90dG9tJyl7XG4gICAgICAgICAgICAgICAgc2VwU3R5bGVzID17XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTpib3R0b21EaXZpZGVyTWFyZ2luK1wicHhcIixcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiBzaG93RnJvbnQ/IHppbmRleERpdmlkZXI6JydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBzZXBTdHlsZXMgPScnXG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGJhY2tncm91bmRJbWcgPScnO1xuICAgICAgICBpZihpbWdVUkwpe1xuICAgICAgICAgICAgYmFja2dyb3VuZEltZyA9ICd1cmwoJytpbWdVUkwrJyknO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNsYXNzZXMgPSBjbGFzc25hbWVzKFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc3ZnLXdyYXBwZXInLFxuICAgICAgICAgICAgd2lkdGhSYXRpbyh3aWR0aCksXG4gICAgICAgICAgICBjbGFzc05hbWUsIHtcbiAgICAgICAgICAgICAgICAnaXMtdmVydGljYWxseS1mbGlwcGVkJzogdmVydGljYWxGbGlwLFxuICAgICAgICAgICAgICAgICdpcy1ob3Jpem9udGFsbHktZmxpcHBlZCc6IGhvcml6b250YWxGbGlwLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stY29udGFpbmVyLXdyYXBwZXInLFxuICAgICAgICAgICAgICAgIGVuYWJsZUdhcD8naGFzLWdhcC1lbmFibGUnOicnLFxuICAgICAgICAgICAgICAgICdhbGlnbicgKyBhbGlnbixcbiAgICAgICAgICAgICAgICAoaW1nVVJMICYmICEhaW1nVVJMLmxlbmd0aCAmJiBiYWNrZ3JvdW5kRml4ICk/J2Jsb2Nrc3BhcmUtYmFja2dyb3VuZC1maXgnOlwiXCIsXG4gICAgICAgICAgICAgICAgc2VwYXJhdG9yRW5hYmxlP2RpdmlkZXJQb3NpdGlvbjonJ1xuICAgICAgICAgICAgKX0gc3R5bGU9e2VkaXRTdHlsZXN9PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtY29udGFpbmVyLWJhY2tncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtaW1hZ2Utd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5UmF0aW9Ub0NsYXNzKG9wYWNpdHlSYXRpbyksXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kLW9wYWNpdHknOiAwICE9PSBvcGFjaXR5UmF0aW9cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tiYWNrZ3JvdW5kSW1hZ2U6YmFja2dyb3VuZEltZ319PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7c2VwYXJhdG9yRW5hYmxlICYmXG4gICAgICAgICAgICAgICAgPGRpdiAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFwiYmxvY2tzcGFyZS10b3Atc2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZUdhcD8naGFzLWdhcC1lbmFibGUnOicnLFxuICAgICAgICAgICAgICAgICAgICBzaG93RnJvbnQ/XCJibG9ja3NwYXJlLXN2Zy1zaG93LWZyb250XCI6JydcbiAgICAgICAgICAgICAgICApfSBzdHlsZT17c2VwU3R5bGVzfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXN9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3IgPyBjb2xvciA6IFwiIzNjMWE1YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduPXtkZXNpZ259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2Zy1zdmctaW5uZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TZXBhcmF0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtaW5uZXItYmxvY2tzIGJsb2Nrc3BhcmUtaW5uZXItd3JhcHBlci1ibG9ja3MnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH0sXG4gICAgdHJhbnNmb3Jtczoge1xuICAgICAgICBmcm9tOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgICBpc011bHRpQmxvY2s6IHRydWUsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBbICcqJyBdLFxuICAgICAgICAgICAgICAgIF9fZXhwZXJpbWVudGFsQ29udmVydCggYmxvY2tzICkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICggYmxvY2tzLmxlbmd0aCA9PT0gMSAmJiBibG9ja3NbIDAgXS5uYW1lID09PSAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWNvbnRhaW5lcicgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaWdubWVudHMgPSBbICd3aWRlJywgJ2Z1bGwnIF07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSB3aWRlc3Qgc2V0dGluZyBvZiBhbGwgdGhlIGJsb2NrcyB0byBiZSBncm91cGVkXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGVzdEFsaWdubWVudCA9IGJsb2Nrcy5yZWR1Y2UoICggcmVzdWx0LCBibG9jayApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgYWxpZ24gfSA9IGJsb2NrLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGlnbm1lbnRzLmluZGV4T2YoIGFsaWduICkgPiBhbGlnbm1lbnRzLmluZGV4T2YoIHJlc3VsdCApID8gYWxpZ24gOiByZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgfSwgdW5kZWZpbmVkICk7XG5cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cElubmVyQmxvY2tzID0gYmxvY2tzLm1hcCggYmxvY2sgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2NrKCBibG9jay5uYW1lLCBibG9jay5hdHRyaWJ1dGVzLCBibG9jay5pbm5lckJsb2NrcyApXG4gICAgICAgICAgICAgICAgICAgIH0gKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQmxvY2soICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtY29udGFpbmVyJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ246IHdpZGVzdEFsaWdubWVudCxcbiAgICAgICAgICAgICAgICAgICAgfSwgZ3JvdXBJbm5lckJsb2NrcyApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgXSxcbiAgICB9LFxufSk7XG5cbmZ1bmN0aW9uIG9wYWNpdHlSYXRpb1RvQ2xhc3MocmF0aW8pIHtcbiAgICByZXR1cm4gKDAgPT09IHJhdGlvKSA/XG4gICAgICAgIG51bGwgOlxuICAgICAgICAnaGFzLWJhY2tncm91bmQtb3BhY2l0eS0nICsgKDEwICogTWF0aC5yb3VuZChyYXRpbyAvIDEwKSk7XG59XG5cbmZ1bmN0aW9uIHdpZHRoUmF0aW8od2lkdGgpIHtcbiAgICB2YXIgc3RyID0gd2lkdGgudG9TdHJpbmcoKTtcbiAgICB2YXIgbmV3V2lkdGggPSBzdHIucmVwbGFjZSgnLicsJy0nKTtcbiAgICByZXR1cm4gJ2hhcy13aWR0aC0nK25ld1dpZHRoO1xufSIsImV4cG9ydCBkZWZhdWx0IFtcbiAgICAnZmFzIGZhLWFkJywnZmFzIGZhLWFkZHJlc3MtYm9vaycsJ2ZhcyBmYS1hZGRyZXNzLWNhcmQnLCdmYXMgZmEtYWRqdXN0JywnZmFzIGZhLWFpci1mcmVzaGVuZXInLCdmYXMgZmEtYWxpZ24tY2VudGVyJywnZmFzIGZhLWFsaWduLWp1c3RpZnknLCdmYXMgZmEtYWxpZ24tbGVmdCcsJ2ZhcyBmYS1hbGlnbi1yaWdodCcsJ2ZhcyBmYS1hbGxlcmdpZXMnLCdmYXMgZmEtYW1idWxhbmNlJywnZmFzIGZhLWFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UtaW50ZXJwcmV0aW5nJywnZmFzIGZhLWFuY2hvcicsJ2ZhcyBmYS1hbmdsZS1kb3VibGUtZG93bicsJ2ZhcyBmYS1hbmdsZS1kb3VibGUtbGVmdCcsJ2ZhcyBmYS1hbmdsZS1kb3VibGUtcmlnaHQnLCdmYXMgZmEtYW5nbGUtZG91YmxlLXVwJywnZmFzIGZhLWFuZ2xlLWRvd24nLCdmYXMgZmEtYW5nbGUtbGVmdCcsJ2ZhcyBmYS1hbmdsZS1yaWdodCcsJ2ZhcyBmYS1hbmdsZS11cCcsJ2ZhcyBmYS1hbmdyeScsJ2ZhcyBmYS1hbmtoJywnZmFzIGZhLWFwcGxlLWFsdCcsJ2ZhcyBmYS1hcmNoaXZlJywnZmFzIGZhLWFyY2h3YXknLCdmYXMgZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duJywnZmFzIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdCcsJ2ZhcyBmYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0JywnZmFzIGZhLWFycm93LWFsdC1jaXJjbGUtdXAnLCdmYXMgZmEtYXJyb3ctY2lyY2xlLWRvd24nLCdmYXMgZmEtYXJyb3ctY2lyY2xlLWxlZnQnLCdmYXMgZmEtYXJyb3ctY2lyY2xlLXJpZ2h0JywnZmFzIGZhLWFycm93LWNpcmNsZS11cCcsJ2ZhcyBmYS1hcnJvdy1kb3duJywnZmFzIGZhLWFycm93LWxlZnQnLCdmYXMgZmEtYXJyb3ctcmlnaHQnLCdmYXMgZmEtYXJyb3ctdXAnLCdmYXMgZmEtYXJyb3dzLWFsdCcsJ2ZhcyBmYS1hcnJvd3MtYWx0LWgnLCdmYXMgZmEtYXJyb3dzLWFsdC12JywnZmFzIGZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtcycsJ2ZhcyBmYS1hc3RlcmlzaycsJ2ZhcyBmYS1hdCcsJ2ZhcyBmYS1hdGxhcycsJ2ZhcyBmYS1hdG9tJywnZmFzIGZhLWF1ZGlvLWRlc2NyaXB0aW9uJywnZmFzIGZhLWF3YXJkJywnZmFzIGZhLWJhYnknLCdmYXMgZmEtYmFieS1jYXJyaWFnZScsJ2ZhcyBmYS1iYWNrc3BhY2UnLCdmYXMgZmEtYmFja3dhcmQnLCdmYXMgZmEtYmFsYW5jZS1zY2FsZScsJ2ZhcyBmYS1iYW4nLCdmYXMgZmEtYmFuZC1haWQnLCdmYXMgZmEtYmFyY29kZScsJ2ZhcyBmYS1iYXJzJywnZmFzIGZhLWJhc2ViYWxsLWJhbGwnLCdmYXMgZmEtYmFza2V0YmFsbC1iYWxsJywnZmFzIGZhLWJhdGgnLCdmYXMgZmEtYmF0dGVyeS1lbXB0eScsJ2ZhcyBmYS1iYXR0ZXJ5LWZ1bGwnLCdmYXMgZmEtYmF0dGVyeS1oYWxmJywnZmFzIGZhLWJhdHRlcnktcXVhcnRlcicsJ2ZhcyBmYS1iYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzJywnZmFzIGZhLWJlZCcsJ2ZhcyBmYS1iZWVyJywnZmFzIGZhLWJlbGwnLCdmYXMgZmEtYmVsbC1zbGFzaCcsJ2ZhcyBmYS1iZXppZXItY3VydmUnLCdmYXMgZmEtYmlibGUnLCdmYXMgZmEtYmljeWNsZScsJ2ZhcyBmYS1iaW5vY3VsYXJzJywnZmFzIGZhLWJpb2hhemFyZCcsJ2ZhcyBmYS1iaXJ0aGRheS1jYWtlJywnZmFzIGZhLWJsZW5kZXInLCdmYXMgZmEtYmxlbmRlci1waG9uZScsJ2ZhcyBmYS1ibGluZCcsJ2ZhcyBmYS1ibG9nJywnZmFzIGZhLWJvbGQnLCdmYXMgZmEtYm9sdCcsJ2ZhcyBmYS1ib21iJywnZmFzIGZhLWJvbmUnLCdmYXMgZmEtYm9uZycsJ2ZhcyBmYS1ib29rJywnZmFzIGZhLWJvb2stZGVhZCcsJ2ZhcyBmYS1ib29rLW9wZW4nLCdmYXMgZmEtYm9vay1yZWFkZXInLCdmYXMgZmEtYm9va21hcmsnLCdmYXMgZmEtYm93bGluZy1iYWxsJywnZmFzIGZhLWJveCcsJ2ZhcyBmYS1ib3gtb3BlbicsJ2ZhcyBmYS1ib3hlcycsJ2ZhcyBmYS1icmFpbGxlJywnZmFzIGZhLWJyYWluJywnZmFzIGZhLWJyaWVmY2FzZScsJ2ZhcyBmYS1icmllZmNhc2UtbWVkaWNhbCcsJ2ZhcyBmYS1icm9hZGNhc3QtdG93ZXInLCdmYXMgZmEtYnJvb20nLCdmYXMgZmEtYnJ1c2gnLCdmYXMgZmEtYnVnJywnZmFzIGZhLWJ1aWxkaW5nJywnZmFzIGZhLWJ1bGxob3JuJywnZmFzIGZhLWJ1bGxzZXllJywnZmFzIGZhLWJ1cm4nLCdmYXMgZmEtYnVzJywnZmFzIGZhLWJ1cy1hbHQnLCdmYXMgZmEtYnVzaW5lc3MtdGltZScsJ2ZhcyBmYS1jYWxjdWxhdG9yJywnZmFzIGZhLWNhbGVuZGFyJywnZmFzIGZhLWNhbGVuZGFyLWFsdCcsJ2ZhcyBmYS1jYWxlbmRhci1jaGVjaycsJ2ZhcyBmYS1jYWxlbmRhci1kYXknLCdmYXMgZmEtY2FsZW5kYXItbWludXMnLCdmYXMgZmEtY2FsZW5kYXItcGx1cycsJ2ZhcyBmYS1jYWxlbmRhci10aW1lcycsJ2ZhcyBmYS1jYWxlbmRhci13ZWVrJywnZmFzIGZhLWNhbWVyYScsJ2ZhcyBmYS1jYW1lcmEtcmV0cm8nLCdmYXMgZmEtY2FtcGdyb3VuZCcsJ2ZhcyBmYS1jYW5keS1jYW5lJywnZmFzIGZhLWNhbm5hYmlzJywnZmFzIGZhLWNhcHN1bGVzJywnZmFzIGZhLWNhcicsJ2ZhcyBmYS1jYXItYWx0JywnZmFzIGZhLWNhci1iYXR0ZXJ5JywnZmFzIGZhLWNhci1jcmFzaCcsJ2ZhcyBmYS1jYXItc2lkZScsJ2ZhcyBmYS1jYXJldC1kb3duJywnZmFzIGZhLWNhcmV0LWxlZnQnLCdmYXMgZmEtY2FyZXQtcmlnaHQnLCdmYXMgZmEtY2FyZXQtc3F1YXJlLWRvd24nLCdmYXMgZmEtY2FyZXQtc3F1YXJlLWxlZnQnLCdmYXMgZmEtY2FyZXQtc3F1YXJlLXJpZ2h0JywnZmFzIGZhLWNhcmV0LXNxdWFyZS11cCcsJ2ZhcyBmYS1jYXJldC11cCcsJ2ZhcyBmYS1jYXJyb3QnLCdmYXMgZmEtY2FydC1hcnJvdy1kb3duJywnZmFzIGZhLWNhcnQtcGx1cycsJ2ZhcyBmYS1jYXNoLXJlZ2lzdGVyJywnZmFzIGZhLWNhdCcsJ2ZhcyBmYS1jZXJ0aWZpY2F0ZScsJ2ZhcyBmYS1jaGFpcicsJ2ZhcyBmYS1jaGFsa2JvYXJkJywnZmFzIGZhLWNoYWxrYm9hcmQtdGVhY2hlcicsJ2ZhcyBmYS1jaGFyZ2luZy1zdGF0aW9uJywnZmFzIGZhLWNoYXJ0LWFyZWEnLCdmYXMgZmEtY2hhcnQtYmFyJywnZmFzIGZhLWNoYXJ0LWxpbmUnLCdmYXMgZmEtY2hhcnQtcGllJywnZmFzIGZhLWNoZWNrJywnZmFzIGZhLWNoZWNrLWNpcmNsZScsJ2ZhcyBmYS1jaGVjay1kb3VibGUnLCdmYXMgZmEtY2hlY2stc3F1YXJlJywnZmFzIGZhLWNoZXNzJywnZmFzIGZhLWNoZXNzLWJpc2hvcCcsJ2ZhcyBmYS1jaGVzcy1ib2FyZCcsJ2ZhcyBmYS1jaGVzcy1raW5nJywnZmFzIGZhLWNoZXNzLWtuaWdodCcsJ2ZhcyBmYS1jaGVzcy1wYXduJywnZmFzIGZhLWNoZXNzLXF1ZWVuJywnZmFzIGZhLWNoZXNzLXJvb2snLCdmYXMgZmEtY2hldnJvbi1jaXJjbGUtZG93bicsJ2ZhcyBmYS1jaGV2cm9uLWNpcmNsZS1sZWZ0JywnZmFzIGZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0JywnZmFzIGZhLWNoZXZyb24tY2lyY2xlLXVwJywnZmFzIGZhLWNoZXZyb24tZG93bicsJ2ZhcyBmYS1jaGV2cm9uLWxlZnQnLCdmYXMgZmEtY2hldnJvbi1yaWdodCcsJ2ZhcyBmYS1jaGV2cm9uLXVwJywnZmFzIGZhLWNoaWxkJywnZmFzIGZhLWNodXJjaCcsJ2ZhcyBmYS1jaXJjbGUnLCdmYXMgZmEtY2lyY2xlLW5vdGNoJywnZmFzIGZhLWNpdHknLCdmYXMgZmEtY2xpcGJvYXJkJywnZmFzIGZhLWNsaXBib2FyZC1jaGVjaycsJ2ZhcyBmYS1jbGlwYm9hcmQtbGlzdCcsJ2ZhcyBmYS1jbG9jaycsJ2ZhcyBmYS1jbG9uZScsJ2ZhcyBmYS1jbG9zZWQtY2FwdGlvbmluZycsJ2ZhcyBmYS1jbG91ZCcsJ2ZhcyBmYS1jbG91ZC1kb3dubG9hZC1hbHQnLCdmYXMgZmEtY2xvdWQtbWVhdGJhbGwnLCdmYXMgZmEtY2xvdWQtbW9vbicsJ2ZhcyBmYS1jbG91ZC1tb29uLXJhaW4nLCdmYXMgZmEtY2xvdWQtcmFpbicsJ2ZhcyBmYS1jbG91ZC1zaG93ZXJzLWhlYXZ5JywnZmFzIGZhLWNsb3VkLXN1bicsJ2ZhcyBmYS1jbG91ZC1zdW4tcmFpbicsJ2ZhcyBmYS1jbG91ZC11cGxvYWQtYWx0JywnZmFzIGZhLWNvY2t0YWlsJywnZmFzIGZhLWNvZGUnLCdmYXMgZmEtY29kZS1icmFuY2gnLCdmYXMgZmEtY29mZmVlJywnZmFzIGZhLWNvZycsJ2ZhcyBmYS1jb2dzJywnZmFzIGZhLWNvaW5zJywnZmFzIGZhLWNvbHVtbnMnLCdmYXMgZmEtY29tbWVudCcsJ2ZhcyBmYS1jb21tZW50LWFsdCcsJ2ZhcyBmYS1jb21tZW50LWRvbGxhcicsJ2ZhcyBmYS1jb21tZW50LWRvdHMnLCdmYXMgZmEtY29tbWVudC1zbGFzaCcsJ2ZhcyBmYS1jb21tZW50cycsJ2ZhcyBmYS1jb21tZW50cy1kb2xsYXInLCdmYXMgZmEtY29tcGFjdC1kaXNjJywnZmFzIGZhLWNvbXBhc3MnLCdmYXMgZmEtY29tcHJlc3MnLCdmYXMgZmEtY29tcHJlc3MtYXJyb3dzLWFsdCcsJ2ZhcyBmYS1jb25jaWVyZ2UtYmVsbCcsJ2ZhcyBmYS1jb29raWUnLCdmYXMgZmEtY29va2llLWJpdGUnLCdmYXMgZmEtY29weScsJ2ZhcyBmYS1jb3B5cmlnaHQnLCdmYXMgZmEtY291Y2gnLCdmYXMgZmEtY3JlZGl0LWNhcmQnLCdmYXMgZmEtY3JvcCcsJ2ZhcyBmYS1jcm9wLWFsdCcsJ2ZhcyBmYS1jcm9zcycsJ2ZhcyBmYS1jcm9zc2hhaXJzJywnZmFzIGZhLWNyb3cnLCdmYXMgZmEtY3Jvd24nLCdmYXMgZmEtY3ViZScsJ2ZhcyBmYS1jdWJlcycsJ2ZhcyBmYS1jdXQnLCdmYXMgZmEtZGF0YWJhc2UnLCdmYXMgZmEtZGVhZicsJ2ZhcyBmYS1kZW1vY3JhdCcsJ2ZhcyBmYS1kZXNrdG9wJywnZmFzIGZhLWRoYXJtYWNoYWtyYScsJ2ZhcyBmYS1kaWFnbm9zZXMnLCdmYXMgZmEtZGljZScsJ2ZhcyBmYS1kaWNlLWQyMCcsJ2ZhcyBmYS1kaWNlLWQ2JywnZmFzIGZhLWRpY2UtZml2ZScsJ2ZhcyBmYS1kaWNlLWZvdXInLCdmYXMgZmEtZGljZS1vbmUnLCdmYXMgZmEtZGljZS1zaXgnLCdmYXMgZmEtZGljZS10aHJlZScsJ2ZhcyBmYS1kaWNlLXR3bycsJ2ZhcyBmYS1kaWdpdGFsLXRhY2hvZ3JhcGgnLCdmYXMgZmEtZGlyZWN0aW9ucycsJ2ZhcyBmYS1kaXZpZGUnLCdmYXMgZmEtZGl6enknLCdmYXMgZmEtZG5hJywnZmFzIGZhLWRvZycsJ2ZhcyBmYS1kb2xsYXItc2lnbicsJ2ZhcyBmYS1kb2xseScsJ2ZhcyBmYS1kb2xseS1mbGF0YmVkJywnZmFzIGZhLWRvbmF0ZScsJ2ZhcyBmYS1kb29yLWNsb3NlZCcsJ2ZhcyBmYS1kb29yLW9wZW4nLCdmYXMgZmEtZG90LWNpcmNsZScsJ2ZhcyBmYS1kb3ZlJywnZmFzIGZhLWRvd25sb2FkJywnZmFzIGZhLWRyYWZ0aW5nLWNvbXBhc3MnLCdmYXMgZmEtZHJhZ29uJywnZmFzIGZhLWRyYXctcG9seWdvbicsJ2ZhcyBmYS1kcnVtJywnZmFzIGZhLWRydW0tc3RlZWxwYW4nLCdmYXMgZmEtZHJ1bXN0aWNrLWJpdGUnLCdmYXMgZmEtZHVtYmJlbGwnLCdmYXMgZmEtZHVtcHN0ZXInLCdmYXMgZmEtZHVtcHN0ZXItZmlyZScsJ2ZhcyBmYS1kdW5nZW9uJywnZmFzIGZhLWVkaXQnLCdmYXMgZmEtZWplY3QnLCdmYXMgZmEtZWxsaXBzaXMtaCcsJ2ZhcyBmYS1lbGxpcHNpcy12JywnZmFzIGZhLWVudmVsb3BlJywnZmFzIGZhLWVudmVsb3BlLW9wZW4nLCdmYXMgZmEtZW52ZWxvcGUtb3Blbi10ZXh0JywnZmFzIGZhLWVudmVsb3BlLXNxdWFyZScsJ2ZhcyBmYS1lcXVhbHMnLCdmYXMgZmEtZXJhc2VyJywnZmFzIGZhLWV0aGVybmV0JywnZmFzIGZhLWV1cm8tc2lnbicsJ2ZhcyBmYS1leGNoYW5nZS1hbHQnLCdmYXMgZmEtZXhjbGFtYXRpb24nLCdmYXMgZmEtZXhjbGFtYXRpb24tY2lyY2xlJywnZmFzIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJywnZmFzIGZhLWV4cGFuZCcsJ2ZhcyBmYS1leHBhbmQtYXJyb3dzLWFsdCcsJ2ZhcyBmYS1leHRlcm5hbC1saW5rLWFsdCcsJ2ZhcyBmYS1leHRlcm5hbC1saW5rLXNxdWFyZS1hbHQnLCdmYXMgZmEtZXllJywnZmFzIGZhLWV5ZS1kcm9wcGVyJywnZmFzIGZhLWV5ZS1zbGFzaCcsJ2ZhcyBmYS1mYXN0LWJhY2t3YXJkJywnZmFzIGZhLWZhc3QtZm9yd2FyZCcsJ2ZhcyBmYS1mYXgnLCdmYXMgZmEtZmVhdGhlcicsJ2ZhcyBmYS1mZWF0aGVyLWFsdCcsJ2ZhcyBmYS1mZW1hbGUnLCdmYXMgZmEtZmlnaHRlci1qZXQnLCdmYXMgZmEtZmlsZScsJ2ZhcyBmYS1maWxlLWFsdCcsJ2ZhcyBmYS1maWxlLWFyY2hpdmUnLCdmYXMgZmEtZmlsZS1hdWRpbycsJ2ZhcyBmYS1maWxlLWNvZGUnLCdmYXMgZmEtZmlsZS1jb250cmFjdCcsJ2ZhcyBmYS1maWxlLWNzdicsXG4gICAgJ2ZhcyBmYS1maWxlLWRvd25sb2FkJywnZmFzIGZhLWZpbGUtZXhjZWwnLCdmYXMgZmEtZmlsZS1leHBvcnQnLCdmYXMgZmEtZmlsZS1pbWFnZScsJ2ZhcyBmYS1maWxlLWltcG9ydCcsJ2ZhcyBmYS1maWxlLWludm9pY2UnLCdmYXMgZmEtZmlsZS1pbnZvaWNlLWRvbGxhcicsJ2ZhcyBmYS1maWxlLW1lZGljYWwnLCdmYXMgZmEtZmlsZS1tZWRpY2FsLWFsdCcsJ2ZhcyBmYS1maWxlLXBkZicsJ2ZhcyBmYS1maWxlLXBvd2VycG9pbnQnLCdmYXMgZmEtZmlsZS1wcmVzY3JpcHRpb24nLCdmYXMgZmEtZmlsZS1zaWduYXR1cmUnLCdmYXMgZmEtZmlsZS11cGxvYWQnLCdmYXMgZmEtZmlsZS12aWRlbycsJ2ZhcyBmYS1maWxlLXdvcmQnLCdmYXMgZmEtZmlsbCcsJ2ZhcyBmYS1maWxsLWRyaXAnLCdmYXMgZmEtZmlsbScsJ2ZhcyBmYS1maWx0ZXInLCdmYXMgZmEtZmluZ2VycHJpbnQnLCdmYXMgZmEtZmlyZScsJ2ZhcyBmYS1maXJlLWFsdCcsJ2ZhcyBmYS1maXJlLWV4dGluZ3Vpc2hlcicsJ2ZhcyBmYS1maXJzdC1haWQnLCdmYXMgZmEtZmlzaCcsJ2ZhcyBmYS1maXN0LXJhaXNlZCcsJ2ZhcyBmYS1mbGFnJywnZmFzIGZhLWZsYWctY2hlY2tlcmVkJywnZmFzIGZhLWZsYWctdXNhJywnZmFzIGZhLWZsYXNrJywnZmFzIGZhLWZsdXNoZWQnLCdmYXMgZmEtZm9sZGVyJywnZmFzIGZhLWZvbGRlci1taW51cycsJ2ZhcyBmYS1mb2xkZXItb3BlbicsJ2ZhcyBmYS1mb2xkZXItcGx1cycsJ2ZhcyBmYS1mb250JywnZmFzIGZhLWZvb3RiYWxsLWJhbGwnLCdmYXMgZmEtZm9yd2FyZCcsJ2ZhcyBmYS1mcm9nJywnZmFzIGZhLWZyb3duJywnZmFzIGZhLWZyb3duLW9wZW4nLCdmYXMgZmEtZnVubmVsLWRvbGxhcicsJ2ZhcyBmYS1mdXRib2wnLCdmYXMgZmEtZ2FtZXBhZCcsJ2ZhcyBmYS1nYXMtcHVtcCcsJ2ZhcyBmYS1nYXZlbCcsJ2ZhcyBmYS1nZW0nLCdmYXMgZmEtZ2VuZGVybGVzcycsJ2ZhcyBmYS1naG9zdCcsJ2ZhcyBmYS1naWZ0JywnZmFzIGZhLWdpZnRzJywnZmFzIGZhLWdsYXNzLWNoZWVycycsJ2ZhcyBmYS1nbGFzcy1tYXJ0aW5pJywnZmFzIGZhLWdsYXNzLW1hcnRpbmktYWx0JywnZmFzIGZhLWdsYXNzLXdoaXNrZXknLCdmYXMgZmEtZ2xhc3NlcycsJ2ZhcyBmYS1nbG9iZScsJ2ZhcyBmYS1nbG9iZS1hZnJpY2EnLCdmYXMgZmEtZ2xvYmUtYW1lcmljYXMnLCdmYXMgZmEtZ2xvYmUtYXNpYScsJ2ZhcyBmYS1nbG9iZS1ldXJvcGUnLCdmYXMgZmEtZ29sZi1iYWxsJywnZmFzIGZhLWdvcHVyYW0nLCdmYXMgZmEtZ3JhZHVhdGlvbi1jYXAnLCdmYXMgZmEtZ3JlYXRlci10aGFuJywnZmFzIGZhLWdyZWF0ZXItdGhhbi1lcXVhbCcsJ2ZhcyBmYS1ncmltYWNlJywnZmFzIGZhLWdyaW4nLCdmYXMgZmEtZ3Jpbi1hbHQnLCdmYXMgZmEtZ3Jpbi1iZWFtJywnZmFzIGZhLWdyaW4tYmVhbS1zd2VhdCcsJ2ZhcyBmYS1ncmluLWhlYXJ0cycsJ2ZhcyBmYS1ncmluLXNxdWludCcsJ2ZhcyBmYS1ncmluLXNxdWludC10ZWFycycsJ2ZhcyBmYS1ncmluLXN0YXJzJywnZmFzIGZhLWdyaW4tdGVhcnMnLCdmYXMgZmEtZ3Jpbi10b25ndWUnLCdmYXMgZmEtZ3Jpbi10b25ndWUtc3F1aW50JywnZmFzIGZhLWdyaW4tdG9uZ3VlLXdpbmsnLCdmYXMgZmEtZ3Jpbi13aW5rJywnZmFzIGZhLWdyaXAtaG9yaXpvbnRhbCcsJ2ZhcyBmYS1ncmlwLWxpbmVzJywnZmFzIGZhLWdyaXAtbGluZXMtdmVydGljYWwnLCdmYXMgZmEtZ3JpcC12ZXJ0aWNhbCcsJ2ZhcyBmYS1ndWl0YXInLCdmYXMgZmEtaC1zcXVhcmUnLCdmYXMgZmEtaGFtbWVyJywnZmFzIGZhLWhhbXNhJywnZmFzIGZhLWhhbmQtaG9sZGluZycsJ2ZhcyBmYS1oYW5kLWhvbGRpbmctaGVhcnQnLCdmYXMgZmEtaGFuZC1ob2xkaW5nLXVzZCcsJ2ZhcyBmYS1oYW5kLWxpemFyZCcsJ2ZhcyBmYS1oYW5kLXBhcGVyJywnZmFzIGZhLWhhbmQtcGVhY2UnLCdmYXMgZmEtaGFuZC1wb2ludC1kb3duJywnZmFzIGZhLWhhbmQtcG9pbnQtbGVmdCcsJ2ZhcyBmYS1oYW5kLXBvaW50LXJpZ2h0JywnZmFzIGZhLWhhbmQtcG9pbnQtdXAnLCdmYXMgZmEtaGFuZC1wb2ludGVyJywnZmFzIGZhLWhhbmQtcm9jaycsJ2ZhcyBmYS1oYW5kLXNjaXNzb3JzJywnZmFzIGZhLWhhbmQtc3BvY2snLCdmYXMgZmEtaGFuZHMnLCdmYXMgZmEtaGFuZHMtaGVscGluZycsJ2ZhcyBmYS1oYW5kc2hha2UnLCdmYXMgZmEtaGFudWtpYWgnLCdmYXMgZmEtaGFzaHRhZycsJ2ZhcyBmYS1oYXQtd2l6YXJkJywnZmFzIGZhLWhheWthbCcsJ2ZhcyBmYS1oZGQnLCdmYXMgZmEtaGVhZGluZycsJ2ZhcyBmYS1oZWFkcGhvbmVzJywnZmFzIGZhLWhlYWRwaG9uZXMtYWx0JywnZmFzIGZhLWhlYWRzZXQnLCdmYXMgZmEtaGVhcnQnLCdmYXMgZmEtaGVhcnQtYnJva2VuJywnZmFzIGZhLWhlYXJ0YmVhdCcsJ2ZhcyBmYS1oZWxpY29wdGVyJywnZmFzIGZhLWhpZ2hsaWdodGVyJywnZmFzIGZhLWhpa2luZycsJ2ZhcyBmYS1oaXBwbycsJ2ZhcyBmYS1oaXN0b3J5JywnZmFzIGZhLWhvY2tleS1wdWNrJywnZmFzIGZhLWhvbGx5LWJlcnJ5JywnZmFzIGZhLWhvbWUnLCdmYXMgZmEtaG9yc2UnLCdmYXMgZmEtaG9yc2UtaGVhZCcsJ2ZhcyBmYS1ob3NwaXRhbCcsJ2ZhcyBmYS1ob3NwaXRhbC1hbHQnLCdmYXMgZmEtaG9zcGl0YWwtc3ltYm9sJywnZmFzIGZhLWhvdC10dWInLCdmYXMgZmEtaG90ZWwnLCdmYXMgZmEtaG91cmdsYXNzJywnZmFzIGZhLWhvdXJnbGFzcy1lbmQnLCdmYXMgZmEtaG91cmdsYXNzLWhhbGYnLCdmYXMgZmEtaG91cmdsYXNzLXN0YXJ0JywnZmFzIGZhLWhvdXNlLWRhbWFnZScsJ2ZhcyBmYS1ocnl2bmlhJywnZmFzIGZhLWktY3Vyc29yJywnZmFzIGZhLWljaWNsZXMnLCdmYXMgZmEtaWQtYmFkZ2UnLCdmYXMgZmEtaWQtY2FyZCcsJ2ZhcyBmYS1pZC1jYXJkLWFsdCcsJ2ZhcyBmYS1pZ2xvbycsJ2ZhcyBmYS1pbWFnZScsJ2ZhcyBmYS1pbWFnZXMnLCdmYXMgZmEtaW5ib3gnLCdmYXMgZmEtaW5kZW50JywnZmFzIGZhLWluZHVzdHJ5JywnZmFzIGZhLWluZmluaXR5JywnZmFzIGZhLWluZm8nLCdmYXMgZmEtaW5mby1jaXJjbGUnLCdmYXMgZmEtaXRhbGljJywnZmFzIGZhLWplZGknLCdmYXMgZmEtam9pbnQnLCdmYXMgZmEtam91cm5hbC13aGlsbHMnLCdmYXMgZmEta2FhYmEnLCdmYXMgZmEta2V5JywnZmFzIGZhLWtleWJvYXJkJywnZmFzIGZhLWtoYW5kYScsJ2ZhcyBmYS1raXNzJywnZmFzIGZhLWtpc3MtYmVhbScsJ2ZhcyBmYS1raXNzLXdpbmstaGVhcnQnLCdmYXMgZmEta2l3aS1iaXJkJywnZmFzIGZhLWxhbmRtYXJrJywnZmFzIGZhLWxhbmd1YWdlJywnZmFzIGZhLWxhcHRvcCcsJ2ZhcyBmYS1sYXB0b3AtY29kZScsJ2ZhcyBmYS1sYXVnaCcsJ2ZhcyBmYS1sYXVnaC1iZWFtJywnZmFzIGZhLWxhdWdoLXNxdWludCcsJ2ZhcyBmYS1sYXVnaC13aW5rJywnZmFzIGZhLWxheWVyLWdyb3VwJywnZmFzIGZhLWxlYWYnLCdmYXMgZmEtbGVtb24nLCdmYXMgZmEtbGVzcy10aGFuJywnZmFzIGZhLWxlc3MtdGhhbi1lcXVhbCcsJ2ZhcyBmYS1sZXZlbC1kb3duLWFsdCcsJ2ZhcyBmYS1sZXZlbC11cC1hbHQnLCdmYXMgZmEtbGlmZS1yaW5nJywnZmFzIGZhLWxpZ2h0YnVsYicsJ2ZhcyBmYS1saW5rJywnZmFzIGZhLWxpcmEtc2lnbicsJ2ZhcyBmYS1saXN0JywnZmFzIGZhLWxpc3QtYWx0JywnZmFzIGZhLWxpc3Qtb2wnLCdmYXMgZmEtbGlzdC11bCcsJ2ZhcyBmYS1sb2NhdGlvbi1hcnJvdycsJ2ZhcyBmYS1sb2NrJywnZmFzIGZhLWxvY2stb3BlbicsJ2ZhcyBmYS1sb25nLWFycm93LWFsdC1kb3duJywnZmFzIGZhLWxvbmctYXJyb3ctYWx0LWxlZnQnLCdmYXMgZmEtbG9uZy1hcnJvdy1hbHQtcmlnaHQnLCdmYXMgZmEtbG9uZy1hcnJvdy1hbHQtdXAnLCdmYXMgZmEtbG93LXZpc2lvbicsJ2ZhcyBmYS1sdWdnYWdlLWNhcnQnLCdmYXMgZmEtbWFnaWMnLCdmYXMgZmEtbWFnbmV0JywnZmFzIGZhLW1haWwtYnVsaycsJ2ZhcyBmYS1tYWxlJywnZmFzIGZhLW1hcCcsJ2ZhcyBmYS1tYXAtbWFya2VkJywnZmFzIGZhLW1hcC1tYXJrZWQtYWx0JywnZmFzIGZhLW1hcC1tYXJrZXInLCdmYXMgZmEtbWFwLW1hcmtlci1hbHQnLCdmYXMgZmEtbWFwLXBpbicsJ2ZhcyBmYS1tYXAtc2lnbnMnLCdmYXMgZmEtbWFya2VyJywnZmFzIGZhLW1hcnMnLCdmYXMgZmEtbWFycy1kb3VibGUnLCdmYXMgZmEtbWFycy1zdHJva2UnLCdmYXMgZmEtbWFycy1zdHJva2UtaCcsJ2ZhcyBmYS1tYXJzLXN0cm9rZS12JywnZmFzIGZhLW1hc2snLCdmYXMgZmEtbWVkYWwnLCdmYXMgZmEtbWVka2l0JywnZmFzIGZhLW1laCcsJ2ZhcyBmYS1tZWgtYmxhbmsnLCdmYXMgZmEtbWVoLXJvbGxpbmctZXllcycsJ2ZhcyBmYS1tZW1vcnknLCdmYXMgZmEtbWVub3JhaCcsJ2ZhcyBmYS1tZXJjdXJ5JywnZmFzIGZhLW1ldGVvcicsJ2ZhcyBmYS1taWNyb2NoaXAnLCdmYXMgZmEtbWljcm9waG9uZScsJ2ZhcyBmYS1taWNyb3Bob25lLWFsdCcsJ2ZhcyBmYS1taWNyb3Bob25lLWFsdC1zbGFzaCcsJ2ZhcyBmYS1taWNyb3Bob25lLXNsYXNoJywnZmFzIGZhLW1pY3Jvc2NvcGUnLCdmYXMgZmEtbWludXMnLCdmYXMgZmEtbWludXMtY2lyY2xlJywnZmFzIGZhLW1pbnVzLXNxdWFyZScsJ2ZhcyBmYS1taXR0ZW4nLCdmYXMgZmEtbW9iaWxlJywnZmFzIGZhLW1vYmlsZS1hbHQnLCdmYXMgZmEtbW9uZXktYmlsbCcsJ2ZhcyBmYS1tb25leS1iaWxsLWFsdCcsJ2ZhcyBmYS1tb25leS1iaWxsLXdhdmUnLCdmYXMgZmEtbW9uZXktYmlsbC13YXZlLWFsdCcsJ2ZhcyBmYS1tb25leS1jaGVjaycsJ2ZhcyBmYS1tb25leS1jaGVjay1hbHQnLCdmYXMgZmEtbW9udW1lbnQnLCdmYXMgZmEtbW9vbicsJ2ZhcyBmYS1tb3J0YXItcGVzdGxlJywnZmFzIGZhLW1vc3F1ZScsJ2ZhcyBmYS1tb3RvcmN5Y2xlJywnZmFzIGZhLW1vdW50YWluJywnZmFzIGZhLW1vdXNlLXBvaW50ZXInLCdmYXMgZmEtbXVnLWhvdCcsJ2ZhcyBmYS1tdXNpYycsJ2ZhcyBmYS1uZXR3b3JrLXdpcmVkJywnZmFzIGZhLW5ldXRlcicsJ2ZhcyBmYS1uZXdzcGFwZXInLCdmYXMgZmEtbm90LWVxdWFsJywnZmFzIGZhLW5vdGVzLW1lZGljYWwnLCdmYXMgZmEtb2JqZWN0LWdyb3VwJywnZmFzIGZhLW9iamVjdC11bmdyb3VwJywnZmFzIGZhLW9pbC1jYW4nLCdmYXMgZmEtb20nLCdmYXMgZmEtb3R0ZXInLCdmYXMgZmEtb3V0ZGVudCcsJ2ZhcyBmYS1wYWludC1icnVzaCcsJ2ZhcyBmYS1wYWludC1yb2xsZXInLCdmYXMgZmEtcGFsZXR0ZScsJ2ZhcyBmYS1wYWxsZXQnLCdmYXMgZmEtcGFwZXItcGxhbmUnLCdmYXMgZmEtcGFwZXJjbGlwJywnZmFzIGZhLXBhcmFjaHV0ZS1ib3gnLCdmYXMgZmEtcGFyYWdyYXBoJywnZmFzIGZhLXBhcmtpbmcnLCdmYXMgZmEtcGFzc3BvcnQnLCdmYXMgZmEtcGFzdGFmYXJpYW5pc20nLCdmYXMgZmEtcGFzdGUnLCdmYXMgZmEtcGF1c2UnLCdmYXMgZmEtcGF1c2UtY2lyY2xlJywnZmFzIGZhLXBhdycsJ2ZhcyBmYS1wZWFjZScsJ2ZhcyBmYS1wZW4nLCdmYXMgZmEtcGVuLWFsdCcsJ2ZhcyBmYS1wZW4tZmFuY3knLCdmYXMgZmEtcGVuLW5pYicsJ2ZhcyBmYS1wZW4tc3F1YXJlJywnZmFzIGZhLXBlbmNpbC1hbHQnLCdmYXMgZmEtcGVuY2lsLXJ1bGVyJywnZmFzIGZhLXBlb3BsZS1jYXJyeScsJ2ZhcyBmYS1wZXJjZW50JywnZmFzIGZhLXBlcmNlbnRhZ2UnLCdmYXMgZmEtcGVyc29uLWJvb3RoJywnZmFzIGZhLXBob25lJywnZmFzIGZhLXBob25lLXNsYXNoJywnZmFzIGZhLXBob25lLXNxdWFyZScsJ2ZhcyBmYS1waG9uZS12b2x1bWUnLCdmYXMgZmEtcGlnZ3ktYmFuaycsJ2ZhcyBmYS1waWxscycsJ2ZhcyBmYS1wbGFjZS1vZi13b3JzaGlwJywnZmFzIGZhLXBsYW5lJywnZmFzIGZhLXBsYW5lLWFycml2YWwnLCdmYXMgZmEtcGxhbmUtZGVwYXJ0dXJlJywnZmFzIGZhLXBsYXknLCdmYXMgZmEtcGxheS1jaXJjbGUnLCdmYXMgZmEtcGx1ZycsJ2ZhcyBmYS1wbHVzJywnZmFzIGZhLXBsdXMtY2lyY2xlJywnZmFzIGZhLXBsdXMtc3F1YXJlJywnZmFzIGZhLXBvZGNhc3QnLCdmYXMgZmEtcG9sbCcsJ2ZhcyBmYS1wb2xsLWgnLCdmYXMgZmEtcG9vJywnZmFzIGZhLXBvby1zdG9ybScsJ2ZhcyBmYS1wb29wJywnZmFzIGZhLXBvcnRyYWl0JywnZmFzIGZhLXBvdW5kLXNpZ24nLCdmYXMgZmEtcG93ZXItb2ZmJywnZmFzIGZhLXByYXknLCdmYXMgZmEtcHJheWluZy1oYW5kcycsJ2ZhcyBmYS1wcmVzY3JpcHRpb24nLCdmYXMgZmEtcHJlc2NyaXB0aW9uLWJvdHRsZScsJ2ZhcyBmYS1wcmVzY3JpcHRpb24tYm90dGxlLWFsdCcsJ2ZhcyBmYS1wcmludCcsJ2ZhcyBmYS1wcm9jZWR1cmVzJywnZmFzIGZhLXByb2plY3QtZGlhZ3JhbScsXG4gICAgJ2ZhcyBmYS1wdXp6bGUtcGllY2UnLCdmYXMgZmEtcXJjb2RlJywnZmFzIGZhLXF1ZXN0aW9uJywnZmFzIGZhLXF1ZXN0aW9uLWNpcmNsZScsJ2ZhcyBmYS1xdWlkZGl0Y2gnLCdmYXMgZmEtcXVvdGUtbGVmdCcsJ2ZhcyBmYS1xdW90ZS1yaWdodCcsJ2ZhcyBmYS1xdXJhbicsJ2ZhcyBmYS1yYWRpYXRpb24nLCdmYXMgZmEtcmFkaWF0aW9uLWFsdCcsJ2ZhcyBmYS1yYWluYm93JywnZmFzIGZhLXJhbmRvbScsJ2ZhcyBmYS1yZWNlaXB0JywnZmFzIGZhLXJlY3ljbGUnLCdmYXMgZmEtcmVkbycsJ2ZhcyBmYS1yZWRvLWFsdCcsJ2ZhcyBmYS1yZWdpc3RlcmVkJywnZmFzIGZhLXJlcGx5JywnZmFzIGZhLXJlcGx5LWFsbCcsJ2ZhcyBmYS1yZXB1YmxpY2FuJywnZmFzIGZhLXJlc3Ryb29tJywnZmFzIGZhLXJldHdlZXQnLCdmYXMgZmEtcmliYm9uJywnZmFzIGZhLXJpbmcnLCdmYXMgZmEtcm9hZCcsJ2ZhcyBmYS1yb2JvdCcsJ2ZhcyBmYS1yb2NrZXQnLCdmYXMgZmEtcm91dGUnLCdmYXMgZmEtcnNzJywnZmFzIGZhLXJzcy1zcXVhcmUnLCdmYXMgZmEtcnVibGUtc2lnbicsJ2ZhcyBmYS1ydWxlcicsJ2ZhcyBmYS1ydWxlci1jb21iaW5lZCcsJ2ZhcyBmYS1ydWxlci1ob3Jpem9udGFsJywnZmFzIGZhLXJ1bGVyLXZlcnRpY2FsJywnZmFzIGZhLXJ1bm5pbmcnLCdmYXMgZmEtcnVwZWUtc2lnbicsJ2ZhcyBmYS1zYWQtY3J5JywnZmFzIGZhLXNhZC10ZWFyJywnZmFzIGZhLXNhdGVsbGl0ZScsJ2ZhcyBmYS1zYXRlbGxpdGUtZGlzaCcsJ2ZhcyBmYS1zYXZlJywnZmFzIGZhLXNjaG9vbCcsJ2ZhcyBmYS1zY3Jld2RyaXZlcicsJ2ZhcyBmYS1zY3JvbGwnLCdmYXMgZmEtc2QtY2FyZCcsJ2ZhcyBmYS1zZWFyY2gnLCdmYXMgZmEtc2VhcmNoLWRvbGxhcicsJ2ZhcyBmYS1zZWFyY2gtbG9jYXRpb24nLCdmYXMgZmEtc2VhcmNoLW1pbnVzJywnZmFzIGZhLXNlYXJjaC1wbHVzJywnZmFzIGZhLXNlZWRsaW5nJywnZmFzIGZhLXNlcnZlcicsJ2ZhcyBmYS1zaGFwZXMnLCdmYXMgZmEtc2hhcmUnLCdmYXMgZmEtc2hhcmUtYWx0JywnZmFzIGZhLXNoYXJlLWFsdC1zcXVhcmUnLCdmYXMgZmEtc2hhcmUtc3F1YXJlJywnZmFzIGZhLXNoZWtlbC1zaWduJywnZmFzIGZhLXNoaWVsZC1hbHQnLCdmYXMgZmEtc2hpcCcsJ2ZhcyBmYS1zaGlwcGluZy1mYXN0JywnZmFzIGZhLXNob2UtcHJpbnRzJywnZmFzIGZhLXNob3BwaW5nLWJhZycsJ2ZhcyBmYS1zaG9wcGluZy1iYXNrZXQnLCdmYXMgZmEtc2hvcHBpbmctY2FydCcsJ2ZhcyBmYS1zaG93ZXInLCdmYXMgZmEtc2h1dHRsZS12YW4nLCdmYXMgZmEtc2lnbicsJ2ZhcyBmYS1zaWduLWluLWFsdCcsJ2ZhcyBmYS1zaWduLWxhbmd1YWdlJywnZmFzIGZhLXNpZ24tb3V0LWFsdCcsJ2ZhcyBmYS1zaWduYWwnLCdmYXMgZmEtc2lnbmF0dXJlJywnZmFzIGZhLXNpbS1jYXJkJywnZmFzIGZhLXNpdGVtYXAnLCdmYXMgZmEtc2thdGluZycsJ2ZhcyBmYS1za2lpbmcnLCdmYXMgZmEtc2tpaW5nLW5vcmRpYycsJ2ZhcyBmYS1za3VsbCcsJ2ZhcyBmYS1za3VsbC1jcm9zc2JvbmVzJywnZmFzIGZhLXNsYXNoJywnZmFzIGZhLXNsZWlnaCcsJ2ZhcyBmYS1zbGlkZXJzLWgnLCdmYXMgZmEtc21pbGUnLCdmYXMgZmEtc21pbGUtYmVhbScsJ2ZhcyBmYS1zbWlsZS13aW5rJywnZmFzIGZhLXNtb2cnLCdmYXMgZmEtc21va2luZycsJ2ZhcyBmYS1zbW9raW5nLWJhbicsJ2ZhcyBmYS1zbXMnLCdmYXMgZmEtc25vd2JvYXJkaW5nJywnZmFzIGZhLXNub3dmbGFrZScsJ2ZhcyBmYS1zbm93bWFuJywnZmFzIGZhLXNub3dwbG93JywnZmFzIGZhLXNvY2tzJywnZmFzIGZhLXNvbGFyLXBhbmVsJywnZmFzIGZhLXNvcnQnLCdmYXMgZmEtc29ydC1hbHBoYS1kb3duJywnZmFzIGZhLXNvcnQtYWxwaGEtdXAnLCdmYXMgZmEtc29ydC1hbW91bnQtZG93bicsJ2ZhcyBmYS1zb3J0LWFtb3VudC11cCcsJ2ZhcyBmYS1zb3J0LWRvd24nLCdmYXMgZmEtc29ydC1udW1lcmljLWRvd24nLCdmYXMgZmEtc29ydC1udW1lcmljLXVwJywnZmFzIGZhLXNvcnQtdXAnLCdmYXMgZmEtc3BhJywnZmFzIGZhLXNwYWNlLXNodXR0bGUnLCdmYXMgZmEtc3BpZGVyJywnZmFzIGZhLXNwaW5uZXInLCdmYXMgZmEtc3Bsb3RjaCcsJ2ZhcyBmYS1zcHJheS1jYW4nLCdmYXMgZmEtc3F1YXJlJywnZmFzIGZhLXNxdWFyZS1mdWxsJywnZmFzIGZhLXNxdWFyZS1yb290LWFsdCcsJ2ZhcyBmYS1zdGFtcCcsJ2ZhcyBmYS1zdGFyJywnZmFzIGZhLXN0YXItYW5kLWNyZXNjZW50JywnZmFzIGZhLXN0YXItaGFsZicsJ2ZhcyBmYS1zdGFyLWhhbGYtYWx0JywnZmFzIGZhLXN0YXItb2YtZGF2aWQnLCdmYXMgZmEtc3Rhci1vZi1saWZlJywnZmFzIGZhLXN0ZXAtYmFja3dhcmQnLCdmYXMgZmEtc3RlcC1mb3J3YXJkJywnZmFzIGZhLXN0ZXRob3Njb3BlJywnZmFzIGZhLXN0aWNreS1ub3RlJywnZmFzIGZhLXN0b3AnLCdmYXMgZmEtc3RvcC1jaXJjbGUnLCdmYXMgZmEtc3RvcHdhdGNoJywnZmFzIGZhLXN0b3JlJywnZmFzIGZhLXN0b3JlLWFsdCcsJ2ZhcyBmYS1zdHJlYW0nLCdmYXMgZmEtc3RyZWV0LXZpZXcnLCdmYXMgZmEtc3RyaWtldGhyb3VnaCcsJ2ZhcyBmYS1zdHJvb3B3YWZlbCcsJ2ZhcyBmYS1zdWJzY3JpcHQnLCdmYXMgZmEtc3Vid2F5JywnZmFzIGZhLXN1aXRjYXNlJywnZmFzIGZhLXN1aXRjYXNlLXJvbGxpbmcnLCdmYXMgZmEtc3VuJywnZmFzIGZhLXN1cGVyc2NyaXB0JywnZmFzIGZhLXN1cnByaXNlJywnZmFzIGZhLXN3YXRjaGJvb2snLCdmYXMgZmEtc3dpbW1lcicsJ2ZhcyBmYS1zd2ltbWluZy1wb29sJywnZmFzIGZhLXN5bmFnb2d1ZScsJ2ZhcyBmYS1zeW5jJywnZmFzIGZhLXN5bmMtYWx0JywnZmFzIGZhLXN5cmluZ2UnLCdmYXMgZmEtdGFibGUnLCdmYXMgZmEtdGFibGUtdGVubmlzJywnZmFzIGZhLXRhYmxldCcsJ2ZhcyBmYS10YWJsZXQtYWx0JywnZmFzIGZhLXRhYmxldHMnLCdmYXMgZmEtdGFjaG9tZXRlci1hbHQnLCdmYXMgZmEtdGFnJywnZmFzIGZhLXRhZ3MnLCdmYXMgZmEtdGFwZScsJ2ZhcyBmYS10YXNrcycsJ2ZhcyBmYS10YXhpJywnZmFzIGZhLXRlZXRoJywnZmFzIGZhLXRlZXRoLW9wZW4nLCdmYXMgZmEtdGVtcGVyYXR1cmUtaGlnaCcsJ2ZhcyBmYS10ZW1wZXJhdHVyZS1sb3cnLCdmYXMgZmEtdGVuZ2UnLCdmYXMgZmEtdGVybWluYWwnLCdmYXMgZmEtdGV4dC1oZWlnaHQnLCdmYXMgZmEtdGV4dC13aWR0aCcsJ2ZhcyBmYS10aCcsJ2ZhcyBmYS10aC1sYXJnZScsJ2ZhcyBmYS10aC1saXN0JywnZmFzIGZhLXRoZWF0ZXItbWFza3MnLCdmYXMgZmEtdGhlcm1vbWV0ZXInLCdmYXMgZmEtdGhlcm1vbWV0ZXItZW1wdHknLCdmYXMgZmEtdGhlcm1vbWV0ZXItZnVsbCcsJ2ZhcyBmYS10aGVybW9tZXRlci1oYWxmJywnZmFzIGZhLXRoZXJtb21ldGVyLXF1YXJ0ZXInLCdmYXMgZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnMnLCdmYXMgZmEtdGh1bWJzLWRvd24nLCdmYXMgZmEtdGh1bWJzLXVwJywnZmFzIGZhLXRodW1idGFjaycsJ2ZhcyBmYS10aWNrZXQtYWx0JywnZmFzIGZhLXRpbWVzJywnZmFzIGZhLXRpbWVzLWNpcmNsZScsJ2ZhcyBmYS10aW50JywnZmFzIGZhLXRpbnQtc2xhc2gnLCdmYXMgZmEtdGlyZWQnLCdmYXMgZmEtdG9nZ2xlLW9mZicsJ2ZhcyBmYS10b2dnbGUtb24nLCdmYXMgZmEtdG9pbGV0JywnZmFzIGZhLXRvaWxldC1wYXBlcicsJ2ZhcyBmYS10b29sYm94JywnZmFzIGZhLXRvb2xzJywnZmFzIGZhLXRvb3RoJywnZmFzIGZhLXRvcmFoJywnZmFzIGZhLXRvcmlpLWdhdGUnLCdmYXMgZmEtdHJhY3RvcicsJ2ZhcyBmYS10cmFkZW1hcmsnLCdmYXMgZmEtdHJhZmZpYy1saWdodCcsJ2ZhcyBmYS10cmFpbicsJ2ZhcyBmYS10cmFtJywnZmFzIGZhLXRyYW5zZ2VuZGVyJywnZmFzIGZhLXRyYW5zZ2VuZGVyLWFsdCcsJ2ZhcyBmYS10cmFzaCcsJ2ZhcyBmYS10cmFzaC1hbHQnLCdmYXMgZmEtdHJlZScsJ2ZhcyBmYS10cm9waHknLCdmYXMgZmEtdHJ1Y2snLCdmYXMgZmEtdHJ1Y2stbG9hZGluZycsJ2ZhcyBmYS10cnVjay1tb25zdGVyJywnZmFzIGZhLXRydWNrLW1vdmluZycsJ2ZhcyBmYS10cnVjay1waWNrdXAnLCdmYXMgZmEtdHNoaXJ0JywnZmFzIGZhLXR0eScsJ2ZhcyBmYS10dicsJ2ZhcyBmYS11bWJyZWxsYScsJ2ZhcyBmYS11bWJyZWxsYS1iZWFjaCcsJ2ZhcyBmYS11bmRlcmxpbmUnLCdmYXMgZmEtdW5kbycsJ2ZhcyBmYS11bmRvLWFsdCcsJ2ZhcyBmYS11bml2ZXJzYWwtYWNjZXNzJywnZmFzIGZhLXVuaXZlcnNpdHknLCdmYXMgZmEtdW5saW5rJywnZmFzIGZhLXVubG9jaycsJ2ZhcyBmYS11bmxvY2stYWx0JywnZmFzIGZhLXVwbG9hZCcsJ2ZhcyBmYS11c2VyJywnZmFzIGZhLXVzZXItYWx0JywnZmFzIGZhLXVzZXItYWx0LXNsYXNoJywnZmFzIGZhLXVzZXItYXN0cm9uYXV0JywnZmFzIGZhLXVzZXItY2hlY2snLCdmYXMgZmEtdXNlci1jaXJjbGUnLCdmYXMgZmEtdXNlci1jbG9jaycsJ2ZhcyBmYS11c2VyLWNvZycsJ2ZhcyBmYS11c2VyLWVkaXQnLCdmYXMgZmEtdXNlci1mcmllbmRzJywnZmFzIGZhLXVzZXItZ3JhZHVhdGUnLCdmYXMgZmEtdXNlci1pbmp1cmVkJywnZmFzIGZhLXVzZXItbG9jaycsJ2ZhcyBmYS11c2VyLW1kJywnZmFzIGZhLXVzZXItbWludXMnLCdmYXMgZmEtdXNlci1uaW5qYScsJ2ZhcyBmYS11c2VyLXBsdXMnLCdmYXMgZmEtdXNlci1zZWNyZXQnLCdmYXMgZmEtdXNlci1zaGllbGQnLCdmYXMgZmEtdXNlci1zbGFzaCcsJ2ZhcyBmYS11c2VyLXRhZycsJ2ZhcyBmYS11c2VyLXRpZScsJ2ZhcyBmYS11c2VyLXRpbWVzJywnZmFzIGZhLXVzZXJzJywnZmFzIGZhLXVzZXJzLWNvZycsJ2ZhcyBmYS11dGVuc2lsLXNwb29uJywnZmFzIGZhLXV0ZW5zaWxzJywnZmFzIGZhLXZlY3Rvci1zcXVhcmUnLCdmYXMgZmEtdmVudXMnLCdmYXMgZmEtdmVudXMtZG91YmxlJywnZmFzIGZhLXZlbnVzLW1hcnMnLCdmYXMgZmEtdmlhbCcsJ2ZhcyBmYS12aWFscycsJ2ZhcyBmYS12aWRlbycsJ2ZhcyBmYS12aWRlby1zbGFzaCcsJ2ZhcyBmYS12aWhhcmEnLCdmYXMgZmEtdm9sbGV5YmFsbC1iYWxsJywnZmFzIGZhLXZvbHVtZS1kb3duJywnZmFzIGZhLXZvbHVtZS1tdXRlJywnZmFzIGZhLXZvbHVtZS1vZmYnLCdmYXMgZmEtdm9sdW1lLXVwJywnZmFzIGZhLXZvdGUteWVhJywnZmFzIGZhLXZyLWNhcmRib2FyZCcsJ2ZhcyBmYS13YWxraW5nJywnZmFzIGZhLXdhbGxldCcsJ2ZhcyBmYS13YXJlaG91c2UnLCdmYXMgZmEtd2F0ZXInLCdmYXMgZmEtd2VpZ2h0JywnZmFzIGZhLXdlaWdodC1oYW5naW5nJywnZmFzIGZhLXdoZWVsY2hhaXInLCdmYXMgZmEtd2lmaScsJ2ZhcyBmYS13aW5kJywnZmFzIGZhLXdpbmRvdy1jbG9zZScsJ2ZhcyBmYS13aW5kb3ctbWF4aW1pemUnLCdmYXMgZmEtd2luZG93LW1pbmltaXplJywnZmFzIGZhLXdpbmRvdy1yZXN0b3JlJywnZmFzIGZhLXdpbmUtYm90dGxlJywnZmFzIGZhLXdpbmUtZ2xhc3MnLCdmYXMgZmEtd2luZS1nbGFzcy1hbHQnLCdmYXMgZmEtd29uLXNpZ24nLCdmYXMgZmEtd3JlbmNoJywnZmFzIGZhLXgtcmF5JywnZmFzIGZhLXllbi1zaWduJywnZmFzIGZhLXlpbi15YW5nJywnZmFyIGZhLWFkZHJlc3MtYm9vaycsJ2ZhciBmYS1hZGRyZXNzLWNhcmQnLCdmYXIgZmEtYW5ncnknLCdmYXIgZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duJywnZmFyIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdCcsJ2ZhciBmYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0JywnZmFyIGZhLWFycm93LWFsdC1jaXJjbGUtdXAnLCdmYXIgZmEtYmVsbCcsJ2ZhciBmYS1iZWxsLXNsYXNoJywnZmFyIGZhLWJvb2ttYXJrJywnZmFyIGZhLWJ1aWxkaW5nJywnZmFyIGZhLWNhbGVuZGFyJywnZmFyIGZhLWNhbGVuZGFyLWFsdCcsJ2ZhciBmYS1jYWxlbmRhci1jaGVjaycsJ2ZhciBmYS1jYWxlbmRhci1taW51cycsJ2ZhciBmYS1jYWxlbmRhci1wbHVzJywnZmFyIGZhLWNhbGVuZGFyLXRpbWVzJywnZmFyIGZhLWNhcmV0LXNxdWFyZS1kb3duJywnZmFyIGZhLWNhcmV0LXNxdWFyZS1sZWZ0JywnZmFyIGZhLWNhcmV0LXNxdWFyZS1yaWdodCcsJ2ZhciBmYS1jYXJldC1zcXVhcmUtdXAnLCdmYXIgZmEtY2hhcnQtYmFyJywnZmFyIGZhLWNoZWNrLWNpcmNsZScsJ2ZhciBmYS1jaGVjay1zcXVhcmUnLCdmYXIgZmEtY2lyY2xlJywnZmFyIGZhLWNsaXBib2FyZCcsJ2ZhciBmYS1jbG9jaycsJ2ZhciBmYS1jbG9uZScsJ2ZhciBmYS1jbG9zZWQtY2FwdGlvbmluZycsJ2ZhciBmYS1jb21tZW50JywnZmFyIGZhLWNvbW1lbnQtYWx0JywnZmFyIGZhLWNvbW1lbnQtZG90cycsJ2ZhciBmYS1jb21tZW50cycsJ2ZhciBmYS1jb21wYXNzJywnZmFyIGZhLWNvcHknLCdmYXIgZmEtY29weXJpZ2h0JywnZmFyIGZhLWNyZWRpdC1jYXJkJywnZmFyIGZhLWRpenp5JywnZmFyIGZhLWRvdC1jaXJjbGUnLCdmYXIgZmEtZWRpdCcsJ2ZhciBmYS1lbnZlbG9wZScsJ2ZhciBmYS1lbnZlbG9wZS1vcGVuJywnZmFyIGZhLWV5ZScsJ2ZhciBmYS1leWUtc2xhc2gnLCdmYXIgZmEtZmlsZScsJ2ZhciBmYS1maWxlLWFsdCcsJ2ZhciBmYS1maWxlLWFyY2hpdmUnLCdmYXIgZmEtZmlsZS1hdWRpbycsJ2ZhciBmYS1maWxlLWNvZGUnLCdmYXIgZmEtZmlsZS1leGNlbCcsJ2ZhciBmYS1maWxlLWltYWdlJywnZmFyIGZhLWZpbGUtcGRmJywnZmFyIGZhLWZpbGUtcG93ZXJwb2ludCcsJ2ZhciBmYS1maWxlLXZpZGVvJywnZmFyIGZhLWZpbGUtd29yZCcsJ2ZhciBmYS1mbGFnJywnZmFyIGZhLWZsdXNoZWQnLCdmYXIgZmEtZm9sZGVyJywnZmFyIGZhLWZvbGRlci1vcGVuJywnZmFyIGZhLWZyb3duJywnZmFyIGZhLWZyb3duLW9wZW4nLCdmYXIgZmEtZnV0Ym9sJywnZmFyIGZhLWdlbScsJ2ZhciBmYS1ncmltYWNlJywnZmFyIGZhLWdyaW4nLCdmYXIgZmEtZ3Jpbi1hbHQnLCdmYXIgZmEtZ3Jpbi1iZWFtJywnZmFyIGZhLWdyaW4tYmVhbS1zd2VhdCcsJ2ZhciBmYS1ncmluLWhlYXJ0cycsJ2ZhciBmYS1ncmluLXNxdWludCcsJ2ZhciBmYS1ncmluLXNxdWludC10ZWFycycsJ2ZhciBmYS1ncmluLXN0YXJzJywnZmFyIGZhLWdyaW4tdGVhcnMnLCdmYXIgZmEtZ3Jpbi10b25ndWUnLCdmYXIgZmEtZ3Jpbi10b25ndWUtc3F1aW50JywnZmFyIGZhLWdyaW4tdG9uZ3VlLXdpbmsnLCdmYXIgZmEtZ3Jpbi13aW5rJywnZmFyIGZhLWhhbmQtbGl6YXJkJywnZmFyIGZhLWhhbmQtcGFwZXInLCdmYXIgZmEtaGFuZC1wZWFjZScsJ2ZhciBmYS1oYW5kLXBvaW50LWRvd24nLCdmYXIgZmEtaGFuZC1wb2ludC1sZWZ0JywnZmFyIGZhLWhhbmQtcG9pbnQtcmlnaHQnLCdmYXIgZmEtaGFuZC1wb2ludC11cCcsJ2ZhciBmYS1oYW5kLXBvaW50ZXInLCdmYXIgZmEtaGFuZC1yb2NrJywnZmFyIGZhLWhhbmQtc2Npc3NvcnMnLCdmYXIgZmEtaGFuZC1zcG9jaycsJ2ZhciBmYS1oYW5kc2hha2UnLCdmYXIgZmEtaGRkJywnZmFyIGZhLWhlYXJ0JywnZmFyIGZhLWhvc3BpdGFsJywnZmFyIGZhLWhvdXJnbGFzcycsJ2ZhciBmYS1pZC1iYWRnZScsJ2ZhciBmYS1pZC1jYXJkJywnZmFyIGZhLWltYWdlJywnZmFyIGZhLWltYWdlcycsJ2ZhciBmYS1rZXlib2FyZCcsJ2ZhciBmYS1raXNzJywnZmFyIGZhLWtpc3MtYmVhbScsJ2ZhciBmYS1raXNzLXdpbmstaGVhcnQnLCdmYXIgZmEtbGF1Z2gnLCdmYXIgZmEtbGF1Z2gtYmVhbScsJ2ZhciBmYS1sYXVnaC1zcXVpbnQnLCdmYXIgZmEtbGF1Z2gtd2luaycsJ2ZhciBmYS1sZW1vbicsJ2ZhciBmYS1saWZlLXJpbmcnLCdmYXIgZmEtbGlnaHRidWxiJywnZmFyIGZhLWxpc3QtYWx0JywnZmFyIGZhLW1hcCcsJ2ZhciBmYS1tZWgnLCdmYXIgZmEtbWVoLWJsYW5rJywnZmFyIGZhLW1laC1yb2xsaW5nLWV5ZXMnLCdmYXIgZmEtbWludXMtc3F1YXJlJywnZmFyIGZhLW1vbmV5LWJpbGwtYWx0JywnZmFyIGZhLW1vb24nLCdmYXIgZmEtbmV3c3BhcGVyJywnZmFyIGZhLW9iamVjdC1ncm91cCcsJ2ZhciBmYS1vYmplY3QtdW5ncm91cCcsJ2ZhciBmYS1wYXBlci1wbGFuZScsJ2ZhciBmYS1wYXVzZS1jaXJjbGUnLCdmYXIgZmEtcGxheS1jaXJjbGUnLCdmYXIgZmEtcGx1cy1zcXVhcmUnLCdmYXIgZmEtcXVlc3Rpb24tY2lyY2xlJywnZmFyIGZhLXJlZ2lzdGVyZWQnLCdmYXIgZmEtc2FkLWNyeScsJ2ZhciBmYS1zYWQtdGVhcicsJ2ZhciBmYS1zYXZlJywnZmFyIGZhLXNoYXJlLXNxdWFyZScsJ2ZhciBmYS1zbWlsZScsJ2ZhciBmYS1zbWlsZS1iZWFtJywnZmFyIGZhLXNtaWxlLXdpbmsnLCdmYXIgZmEtc25vd2ZsYWtlJywnZmFyIGZhLXNxdWFyZScsJ2ZhciBmYS1zdGFyJywnZmFyIGZhLXN0YXItaGFsZicsJ2ZhciBmYS1zdGlja3ktbm90ZScsJ2ZhciBmYS1zdG9wLWNpcmNsZScsJ2ZhciBmYS1zdW4nLCdmYXIgZmEtc3VycHJpc2UnLCdmYXIgZmEtdGh1bWJzLWRvd24nLCdmYXIgZmEtdGh1bWJzLXVwJywnZmFyIGZhLXRpbWVzLWNpcmNsZScsJ2ZhciBmYS10aXJlZCcsJ2ZhciBmYS10cmFzaC1hbHQnLCdmYXIgZmEtdXNlcicsJ2ZhciBmYS11c2VyLWNpcmNsZScsJ2ZhciBmYS13aW5kb3ctY2xvc2UnLCdmYXIgZmEtd2luZG93LW1heGltaXplJywnZmFyIGZhLXdpbmRvdy1taW5pbWl6ZScsJ2ZhciBmYS13aW5kb3ctcmVzdG9yZScsXG4gICAgJ2ZhYiBmYS01MDBweCcsJ2ZhYiBmYS1hY2Nlc3NpYmxlLWljb24nLCdmYWIgZmEtYWNjdXNvZnQnLCdmYWIgZmEtYWNxdWlzaXRpb25zLWluY29ycG9yYXRlZCcsJ2ZhYiBmYS1hZG4nLCdmYWIgZmEtYWRvYmUnLCdmYWIgZmEtYWR2ZXJzYWwnLCdmYWIgZmEtYWZmaWxpYXRldGhlbWUnLCdmYWIgZmEtYWxnb2xpYScsJ2ZhYiBmYS1hbGlwYXknLCdmYWIgZmEtYW1hem9uJywnZmFiIGZhLWFtYXpvbi1wYXknLCdmYWIgZmEtYW1pbGlhJywnZmFiIGZhLWFuZHJvaWQnLCdmYWIgZmEtYW5nZWxsaXN0JywnZmFiIGZhLWFuZ3J5Y3JlYXRpdmUnLCdmYWIgZmEtYW5ndWxhcicsJ2ZhYiBmYS1hcHAtc3RvcmUnLCdmYWIgZmEtYXBwLXN0b3JlLWlvcycsJ2ZhYiBmYS1hcHBlcicsJ2ZhYiBmYS1hcHBsZScsJ2ZhYiBmYS1hcHBsZS1wYXknLCdmYWIgZmEtYXJ0c3RhdGlvbicsJ2ZhYiBmYS1hc3ltbWV0cmlrJywnZmFiIGZhLWF0bGFzc2lhbicsJ2ZhYiBmYS1hdWRpYmxlJywnZmFiIGZhLWF1dG9wcmVmaXhlcicsJ2ZhYiBmYS1hdmlhbmV4JywnZmFiIGZhLWF2aWF0bycsJ2ZhYiBmYS1hd3MnLCdmYWIgZmEtYmFuZGNhbXAnLCdmYWIgZmEtYmVoYW5jZScsJ2ZhYiBmYS1iZWhhbmNlLXNxdWFyZScsJ2ZhYiBmYS1iaW1vYmplY3QnLCdmYWIgZmEtYml0YnVja2V0JywnZmFiIGZhLWJpdGNvaW4nLCdmYWIgZmEtYml0eScsJ2ZhYiBmYS1ibGFjay10aWUnLCdmYWIgZmEtYmxhY2tiZXJyeScsJ2ZhYiBmYS1ibG9nZ2VyJywnZmFiIGZhLWJsb2dnZXItYicsJ2ZhYiBmYS1ibHVldG9vdGgnLCdmYWIgZmEtYmx1ZXRvb3RoLWInLCdmYWIgZmEtYnRjJywnZmFiIGZhLWJ1cm9tb2JlbGV4cGVydGUnLCdmYWIgZmEtYnV5c2VsbGFkcycsJ2ZhYiBmYS1jYW5hZGlhbi1tYXBsZS1sZWFmJywnZmFiIGZhLWNjLWFtYXpvbi1wYXknLCdmYWIgZmEtY2MtYW1leCcsJ2ZhYiBmYS1jYy1hcHBsZS1wYXknLCdmYWIgZmEtY2MtZGluZXJzLWNsdWInLCdmYWIgZmEtY2MtZGlzY292ZXInLCdmYWIgZmEtY2MtamNiJywnZmFiIGZhLWNjLW1hc3RlcmNhcmQnLCdmYWIgZmEtY2MtcGF5cGFsJywnZmFiIGZhLWNjLXN0cmlwZScsJ2ZhYiBmYS1jYy12aXNhJywnZmFiIGZhLWNlbnRlcmNvZGUnLCdmYWIgZmEtY2VudG9zJywnZmFiIGZhLWNocm9tZScsJ2ZhYiBmYS1jbG91ZHNjYWxlJywnZmFiIGZhLWNsb3Vkc21pdGgnLCdmYWIgZmEtY2xvdWR2ZXJzaWZ5JywnZmFiIGZhLWNvZGVwZW4nLCdmYWIgZmEtY29kaWVwaWUnLCdmYWIgZmEtY29uZmx1ZW5jZScsJ2ZhYiBmYS1jb25uZWN0ZGV2ZWxvcCcsJ2ZhYiBmYS1jb250YW8nLCdmYWIgZmEtY3BhbmVsJywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMnLCdmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1ieScsJ2ZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLW5jJywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtZXUnLCdmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1uYy1qcCcsJ2ZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLW5kJywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtcGQnLCdmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1wZC1hbHQnLCdmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1yZW1peCcsJ2ZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLXNhJywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtc2FtcGxpbmcnLCdmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1zYW1wbGluZy1wbHVzJywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmUnLCdmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy16ZXJvJywnZmFiIGZhLWNyaXRpY2FsLXJvbGUnLCdmYWIgZmEtY3NzMycsJ2ZhYiBmYS1jc3MzLWFsdCcsJ2ZhYiBmYS1jdXR0bGVmaXNoJywnZmFiIGZhLWQtYW5kLWQnLCdmYWIgZmEtZC1hbmQtZC1iZXlvbmQnLCdmYWIgZmEtZGFzaGN1YmUnLCdmYWIgZmEtZGVsaWNpb3VzJywnZmFiIGZhLWRlcGxveWRvZycsJ2ZhYiBmYS1kZXNrcHJvJywnZmFiIGZhLWRldicsJ2ZhYiBmYS1kZXZpYW50YXJ0JywnZmFiIGZhLWRobCcsJ2ZhYiBmYS1kaWFzcG9yYScsJ2ZhYiBmYS1kaWdnJywnZmFiIGZhLWRpZ2l0YWwtb2NlYW4nLCdmYWIgZmEtZGlzY29yZCcsJ2ZhYiBmYS1kaXNjb3Vyc2UnLCdmYWIgZmEtZG9jaHViJywnZmFiIGZhLWRvY2tlcicsJ2ZhYiBmYS1kcmFmdDJkaWdpdGFsJywnZmFiIGZhLWRyaWJiYmxlJywnZmFiIGZhLWRyaWJiYmxlLXNxdWFyZScsJ2ZhYiBmYS1kcm9wYm94JywnZmFiIGZhLWRydXBhbCcsJ2ZhYiBmYS1keWFsb2cnLCdmYWIgZmEtZWFybHliaXJkcycsJ2ZhYiBmYS1lYmF5JywnZmFiIGZhLWVkZ2UnLCdmYWIgZmEtZWxlbWVudG9yJywnZmFiIGZhLWVsbG8nLCdmYWIgZmEtZW1iZXInLCdmYWIgZmEtZW1waXJlJywnZmFiIGZhLWVudmlyYScsJ2ZhYiBmYS1lcmxhbmcnLCdmYWIgZmEtZXRoZXJldW0nLCdmYWIgZmEtZXRzeScsJ2ZhYiBmYS1leHBlZGl0ZWRzc2wnLCdmYWIgZmEtZmFjZWJvb2snLCdmYWIgZmEtZmFjZWJvb2stZicsJ2ZhYiBmYS1mYWNlYm9vay1tZXNzZW5nZXInLCdmYWIgZmEtZmFjZWJvb2stc3F1YXJlJywnZmFiIGZhLWZhbnRhc3ktZmxpZ2h0LWdhbWVzJywnZmFiIGZhLWZlZGV4JywnZmFiIGZhLWZlZG9yYScsJ2ZhYiBmYS1maWdtYScsJ2ZhYiBmYS1maXJlZm94JywnZmFiIGZhLWZpcnN0LW9yZGVyJywnZmFiIGZhLWZpcnN0LW9yZGVyLWFsdCcsJ2ZhYiBmYS1maXJzdGRyYWZ0JywnZmFiIGZhLWZsaWNrcicsJ2ZhYiBmYS1mbGlwYm9hcmQnLCdmYWIgZmEtZmx5JywnZmFiIGZhLWZvbnQtYXdlc29tZScsJ2ZhYiBmYS1mb250LWF3ZXNvbWUtYWx0JywnZmFiIGZhLWZvbnQtYXdlc29tZS1mbGFnJywnZmFiIGZhLWZvbnRpY29ucycsJ2ZhYiBmYS1mb250aWNvbnMtZmknLCdmYWIgZmEtZm9ydC1hd2Vzb21lJywnZmFiIGZhLWZvcnQtYXdlc29tZS1hbHQnLCdmYWIgZmEtZm9ydW1iZWUnLCdmYWIgZmEtZm91cnNxdWFyZScsJ2ZhYiBmYS1mcmVlLWNvZGUtY2FtcCcsJ2ZhYiBmYS1mcmVlYnNkJywnZmFiIGZhLWZ1bGNydW0nLCdmYWIgZmEtZ2FsYWN0aWMtcmVwdWJsaWMnLCdmYWIgZmEtZ2FsYWN0aWMtc2VuYXRlJywnZmFiIGZhLWdldC1wb2NrZXQnLCdmYWIgZmEtZ2cnLCdmYWIgZmEtZ2ctY2lyY2xlJywnZmFiIGZhLWdpdCcsJ2ZhYiBmYS1naXQtc3F1YXJlJywnZmFiIGZhLWdpdGh1YicsJ2ZhYiBmYS1naXRodWItYWx0JywnZmFiIGZhLWdpdGh1Yi1zcXVhcmUnLCdmYWIgZmEtZ2l0a3Jha2VuJywnZmFiIGZhLWdpdGxhYicsJ2ZhYiBmYS1naXR0ZXInLCdmYWIgZmEtZ2xpZGUnLCdmYWIgZmEtZ2xpZGUtZycsJ2ZhYiBmYS1nb2ZvcmUnLCdmYWIgZmEtZ29vZHJlYWRzJywnZmFiIGZhLWdvb2RyZWFkcy1nJywnZmFiIGZhLWdvb2dsZScsJ2ZhYiBmYS1nb29nbGUtZHJpdmUnLCdmYWIgZmEtZ29vZ2xlLXBsYXknLCdmYWIgZmEtZ29vZ2xlLXBsdXMnLCdmYWIgZmEtZ29vZ2xlLXBsdXMtZycsJ2ZhYiBmYS1nb29nbGUtcGx1cy1zcXVhcmUnLCdmYWIgZmEtZ29vZ2xlLXdhbGxldCcsJ2ZhYiBmYS1ncmF0aXBheScsJ2ZhYiBmYS1ncmF2JywnZmFiIGZhLWdyaXBmaXJlJywnZmFiIGZhLWdydW50JywnZmFiIGZhLWd1bHAnLCdmYWIgZmEtaGFja2VyLW5ld3MnLCdmYWIgZmEtaGFja2VyLW5ld3Mtc3F1YXJlJywnZmFiIGZhLWhhY2tlcnJhbmsnLCdmYWIgZmEtaGlwcycsJ2ZhYiBmYS1oaXJlLWEtaGVscGVyJywnZmFiIGZhLWhvb2xpJywnZmFiIGZhLWhvcm5iaWxsJywnZmFiIGZhLWhvdGphcicsJ2ZhYiBmYS1ob3V6eicsJ2ZhYiBmYS1odG1sNScsJ2ZhYiBmYS1odWJzcG90JywnZmFiIGZhLWltZGInLCdmYWIgZmEtaW5zdGFncmFtJywnZmFiIGZhLWludGVyY29tJywnZmFiIGZhLWludGVybmV0LWV4cGxvcmVyJywnZmFiIGZhLWludmlzaW9uJywnZmFiIGZhLWlveGhvc3QnLCdmYWIgZmEtaXR1bmVzJywnZmFiIGZhLWl0dW5lcy1ub3RlJywnZmFiIGZhLWphdmEnLCdmYWIgZmEtamVkaS1vcmRlcicsJ2ZhYiBmYS1qZW5raW5zJywnZmFiIGZhLWppcmEnLCdmYWIgZmEtam9nZXQnLCdmYWIgZmEtam9vbWxhJywnZmFiIGZhLWpzJywnZmFiIGZhLWpzLXNxdWFyZScsJ2ZhYiBmYS1qc2ZpZGRsZScsJ2ZhYiBmYS1rYWdnbGUnLCdmYWIgZmEta2V5YmFzZScsJ2ZhYiBmYS1rZXljZG4nLCdmYWIgZmEta2lja3N0YXJ0ZXInLCdmYWIgZmEta2lja3N0YXJ0ZXItaycsJ2ZhYiBmYS1rb3J2dWUnLCdmYWIgZmEtbGFyYXZlbCcsJ2ZhYiBmYS1sYXN0Zm0nLCdmYWIgZmEtbGFzdGZtLXNxdWFyZScsJ2ZhYiBmYS1sZWFucHViJywnZmFiIGZhLWxlc3MnLCdmYWIgZmEtbGluZScsJ2ZhYiBmYS1saW5rZWRpbicsJ2ZhYiBmYS1saW5rZWRpbi1pbicsJ2ZhYiBmYS1saW5vZGUnLCdmYWIgZmEtbGludXgnLCdmYWIgZmEtbHlmdCcsJ2ZhYiBmYS1tYWdlbnRvJywnZmFiIGZhLW1haWxjaGltcCcsJ2ZhYiBmYS1tYW5kYWxvcmlhbicsJ2ZhYiBmYS1tYXJrZG93bicsJ2ZhYiBmYS1tYXN0b2RvbicsJ2ZhYiBmYS1tYXhjZG4nLCdmYWIgZmEtbWVkYXBwcycsJ2ZhYiBmYS1tZWRpdW0nLCdmYWIgZmEtbWVkaXVtLW0nLCdmYWIgZmEtbWVkcnQnLCdmYWIgZmEtbWVldHVwJywnZmFiIGZhLW1lZ2Fwb3J0JywnZmFiIGZhLW1lbmRlbGV5JywnZmFiIGZhLW1pY3Jvc29mdCcsJ2ZhYiBmYS1taXgnLCdmYWIgZmEtbWl4Y2xvdWQnLCdmYWIgZmEtbWl6dW5pJywnZmFiIGZhLW1vZHgnLCdmYWIgZmEtbW9uZXJvJywnZmFiIGZhLW5hcHN0ZXInLCdmYWIgZmEtbmVvcycsJ2ZhYiBmYS1uaW1ibHInLCdmYWIgZmEtbmludGVuZG8tc3dpdGNoJywnZmFiIGZhLW5vZGUnLCdmYWIgZmEtbm9kZS1qcycsJ2ZhYiBmYS1ucG0nLCdmYWIgZmEtbnM4JywnZmFiIGZhLW51dHJpdGlvbml4JywnZmFiIGZhLW9kbm9rbGFzc25pa2knLCdmYWIgZmEtb2Rub2tsYXNzbmlraS1zcXVhcmUnLCdmYWIgZmEtb2xkLXJlcHVibGljJywnZmFiIGZhLW9wZW5jYXJ0JywnZmFiIGZhLW9wZW5pZCcsJ2ZhYiBmYS1vcGVyYScsJ2ZhYiBmYS1vcHRpbi1tb25zdGVyJywnZmFiIGZhLW9zaScsJ2ZhYiBmYS1wYWdlNCcsJ2ZhYiBmYS1wYWdlbGluZXMnLCdmYWIgZmEtcGFsZmVkJywnZmFiIGZhLXBhdHJlb24nLCdmYWIgZmEtcGF5cGFsJywnZmFiIGZhLXBlbm55LWFyY2FkZScsJ2ZhYiBmYS1wZXJpc2NvcGUnLCdmYWIgZmEtcGhhYnJpY2F0b3InLCdmYWIgZmEtcGhvZW5peC1mcmFtZXdvcmsnLCdmYWIgZmEtcGhvZW5peC1zcXVhZHJvbicsJ2ZhYiBmYS1waHAnLCdmYWIgZmEtcGllZC1waXBlcicsJ2ZhYiBmYS1waWVkLXBpcGVyLWFsdCcsJ2ZhYiBmYS1waWVkLXBpcGVyLWhhdCcsJ2ZhYiBmYS1waWVkLXBpcGVyLXBwJywnZmFiIGZhLXBpbnRlcmVzdCcsJ2ZhYiBmYS1waW50ZXJlc3QtcCcsJ2ZhYiBmYS1waW50ZXJlc3Qtc3F1YXJlJywnZmFiIGZhLXBsYXlzdGF0aW9uJywnZmFiIGZhLXByb2R1Y3QtaHVudCcsJ2ZhYiBmYS1wdXNoZWQnLCdmYWIgZmEtcHl0aG9uJywnZmFiIGZhLXFxJywnZmFiIGZhLXF1aW5zY2FwZScsJ2ZhYiBmYS1xdW9yYScsJ2ZhYiBmYS1yLXByb2plY3QnLCdmYWIgZmEtcmFzcGJlcnJ5LXBpJywnZmFiIGZhLXJhdmVscnknLCdmYWIgZmEtcmVhY3QnLCdmYWIgZmEtcmVhY3RldXJvcGUnLCdmYWIgZmEtcmVhZG1lJywnZmFiIGZhLXJlYmVsJywnZmFiIGZhLXJlZC1yaXZlcicsJ2ZhYiBmYS1yZWRkaXQnLCdmYWIgZmEtcmVkZGl0LWFsaWVuJywnZmFiIGZhLXJlZGRpdC1zcXVhcmUnLCdmYWIgZmEtcmVkaGF0JywnZmFiIGZhLXJlbnJlbicsJ2ZhYiBmYS1yZXBseWQnLCdmYWIgZmEtcmVzZWFyY2hnYXRlJywnZmFiIGZhLXJlc29sdmluZycsJ2ZhYiBmYS1yZXYnLCdmYWIgZmEtcm9ja2V0Y2hhdCcsJ2ZhYiBmYS1yb2Nrcm1zJywnZmFiIGZhLXNhZmFyaScsJ2ZhYiBmYS1zYXNzJywnZmFiIGZhLXNjaGxpeCcsJ2ZhYiBmYS1zY3JpYmQnLCdmYWIgZmEtc2VhcmNoZW5naW4nLCdmYWIgZmEtc2VsbGNhc3QnLCdmYWIgZmEtc2VsbHN5JywnZmFiIGZhLXNlcnZpY2VzdGFjaycsJ2ZhYiBmYS1zaGlydHNpbmJ1bGsnLCdmYWIgZmEtc2hvcHdhcmUnLCdmYWIgZmEtc2ltcGx5YnVpbHQnLCdmYWIgZmEtc2lzdHJpeCcsJ2ZhYiBmYS1zaXRoJywnZmFiIGZhLXNrZXRjaCcsJ2ZhYiBmYS1za3lhdGxhcycsJ2ZhYiBmYS1za3lwZScsJ2ZhYiBmYS1zbGFjaycsJ2ZhYiBmYS1zbGFjay1oYXNoJywnZmFiIGZhLXNsaWRlc2hhcmUnLCdmYWIgZmEtc25hcGNoYXQnLCdmYWIgZmEtc25hcGNoYXQtZ2hvc3QnLCdmYWIgZmEtc25hcGNoYXQtc3F1YXJlJywnZmFiIGZhLXNvdW5kY2xvdWQnLCdmYWIgZmEtc291cmNldHJlZScsJ2ZhYiBmYS1zcGVha2FwJywnZmFiIGZhLXNwb3RpZnknLCdmYWIgZmEtc3F1YXJlc3BhY2UnLCdmYWIgZmEtc3RhY2stZXhjaGFuZ2UnLCdmYWIgZmEtc3RhY2stb3ZlcmZsb3cnLCdmYWIgZmEtc3RheWxpbmtlZCcsJ2ZhYiBmYS1zdGVhbScsJ2ZhYiBmYS1zdGVhbS1zcXVhcmUnLCdmYWIgZmEtc3RlYW0tc3ltYm9sJywnZmFiIGZhLXN0aWNrZXItbXVsZScsJ2ZhYiBmYS1zdHJhdmEnLCdmYWIgZmEtc3RyaXBlJywnZmFiIGZhLXN0cmlwZS1zJywnZmFiIGZhLXN0dWRpb3ZpbmFyaScsJ2ZhYiBmYS1zdHVtYmxldXBvbicsJ2ZhYiBmYS1zdHVtYmxldXBvbi1jaXJjbGUnLCdmYWIgZmEtc3VwZXJwb3dlcnMnLCdmYWIgZmEtc3VwcGxlJywnZmFiIGZhLXN1c2UnLCdmYWIgZmEtdGVhbXNwZWFrJywnZmFiIGZhLXRlbGVncmFtJywnZmFiIGZhLXRlbGVncmFtLXBsYW5lJywnZmFiIGZhLXRlbmNlbnQtd2VpYm8nLCdmYWIgZmEtdGhlLXJlZC15ZXRpJywnZmFiIGZhLXRoZW1lY28nLCdmYWIgZmEtdGhlbWVpc2xlJywnZmFiIGZhLXRoaW5rLXBlYWtzJywnZmFiIGZhLXRyYWRlLWZlZGVyYXRpb24nLCdmYWIgZmEtdHJlbGxvJywnZmFiIGZhLXRyaXBhZHZpc29yJywnZmFiIGZhLXR1bWJscicsJ2ZhYiBmYS10dW1ibHItc3F1YXJlJywnZmFiIGZhLXR3aXRjaCcsJ2ZhYiBmYS10d2l0dGVyJywnZmFiIGZhLXR3aXR0ZXItc3F1YXJlJywnZmFiIGZhLXR5cG8zJywnZmFiIGZhLXViZXInLCdmYWIgZmEtdWJ1bnR1JywnZmFiIGZhLXVpa2l0JywnZmFiIGZhLXVuaXJlZ2lzdHJ5JywnZmFiIGZhLXVudGFwcGQnLCdmYWIgZmEtdXBzJywnZmFiIGZhLXVzYicsJ2ZhYiBmYS11c3BzJywnZmFiIGZhLXVzc3VubmFoJywnZmFiIGZhLXZhYWRpbicsJ2ZhYiBmYS12aWFjb2luJywnZmFiIGZhLXZpYWRlbycsJ2ZhYiBmYS12aWFkZW8tc3F1YXJlJywnZmFiIGZhLXZpYmVyJywnZmFiIGZhLXZpbWVvJywnZmFiIGZhLXZpbWVvLXNxdWFyZScsJ2ZhYiBmYS12aW1lby12JywnZmFiIGZhLXZpbmUnLCdmYWIgZmEtdmsnLCdmYWIgZmEtdm52JywnZmFiIGZhLXZ1ZWpzJywnZmFiIGZhLXdlZWJseScsJ2ZhYiBmYS13ZWlibycsJ2ZhYiBmYS13ZWl4aW4nLCdmYWIgZmEtd2hhdHNhcHAnLCdmYWIgZmEtd2hhdHNhcHAtc3F1YXJlJywnZmFiIGZhLXdobWNzJywnZmFiIGZhLXdpa2lwZWRpYS13JywnZmFiIGZhLXdpbmRvd3MnLCdmYWIgZmEtd2l4JywnZmFiIGZhLXdpemFyZHMtb2YtdGhlLWNvYXN0JywnZmFiIGZhLXdvbGYtcGFjay1iYXR0YWxpb24nLCdmYWIgZmEtd29yZHByZXNzJywnZmFiIGZhLXdvcmRwcmVzcy1zaW1wbGUnLCdmYWIgZmEtd3BiZWdpbm5lcicsJ2ZhYiBmYS13cGV4cGxvcmVyJywnZmFiIGZhLXdwZm9ybXMnLCdmYWIgZmEtd3ByZXNzcicsJ2ZhYiBmYS14Ym94JywnZmFiIGZhLXhpbmcnLCdmYWIgZmEteGluZy1zcXVhcmUnLCdmYWIgZmEteS1jb21iaW5hdG9yJywnZmFiIGZhLXlhaG9vJywnZmFiIGZhLXlhbmRleCcsJ2ZhYiBmYS15YW5kZXgtaW50ZXJuYXRpb25hbCcsJ2ZhYiBmYS15YXJuJywnZmFiIGZhLXllbHAnLCdmYWIgZmEteW9hc3QnLCdmYWIgZmEteW91dHViZScsJ2ZhYiBmYS15b3V0dWJlLXNxdWFyZScsJ2ZhYiBmYS16aGlodScsXG5dIiwiaW1wb3J0ICcuLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4blxuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50XG5cbmltcG9ydCBJY29uTGlzdERhdGEgZnJvbSAnLi4vLi4vLi4vaW5jL2ljb24tbGliL2ljb25MaXN0JztcblxuY2xhc3MgSWNvbkxpc3QgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBpc09wZW46IGZhbHNlLFxuICAgICAgICAgICAgZmlsdGVyVGV4dDogJycsXG4gICAgICAgICAgICBzaG93SWNvbnM6IGZhbHNlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIGRpc2FibGVUb2dnbGUsIGNvbG9yU2V0dGluZ3MsIGljb25Db2xvciwgb25Db2xvckNoYW5nZSB9ID0gdGhpcy5wcm9wc1xuICAgICAgICBjb25zdCB7IGZpbHRlclRleHQgfSA9IHRoaXMuc3RhdGVcbiAgICAgICAgdmFyIGZpbmFsRGF0YSA9IFtdO1xuICAgICAgICBpZiAoZmlsdGVyVGV4dC5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBJY29uTGlzdERhdGEuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobmFtZS5pbmNsdWRlcyhmaWx0ZXJUZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbERhdGEucHVzaChuYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaW5hbERhdGEgPSBJY29uTGlzdERhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1maWVsZCBibG9ja3NwYXJlLWZpZWxkLWljb24tbGlzdCAke2Rpc2FibGVUb2dnbGUgPyAnJyA6ICdibG9ja3NwYXJlLXRvZ2dsZS1lbmFibGVkJ31gfT5cbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5sYWJlbCAmJlxuICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgeyFkaXNhYmxlVG9nZ2xlID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGUgbGFiZWw9e3RoaXMucHJvcHMubGFiZWx9IGNsYXNzTmFtZT17J2Jsb2Nrc3BhcmUtaWNvbi1saXN0LXRvZ2dsZSd9IHZhbHVlPXt0aGlzLnByb3BzLnZhbHVlID8gdHJ1ZSA6IGZhbHNlfSBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnByb3BzLnZhbHVlID8gJycgOiAnICcpfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt0aGlzLnByb3BzLmxhYmVsfTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7Y29sb3JTZXR0aW5ncyAmJiA8Q29sb3IgbGFiZWw9e19fKCcgQ29sb3InKX0gdmFsdWU9e2ljb25Db2xvciB8fCAnI2NjYyd9IG9uQ2hhbmdlPXsoY29sb3IpID0+IG9uQ29sb3JDaGFuZ2UoY29sb3IpfSAvPn1cblxuICAgICAgICAgICAgICAgIHsoZGlzYWJsZVRvZ2dsZSB8fCB0aGlzLnByb3BzLnZhbHVlICE9ICcnKSAmJlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pY29uLWxpc3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT17dGhpcy5zdGF0ZS5maWx0ZXJUZXh0fSBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIG9uQ2hhbmdlPXtlID0+IHRoaXMuc2V0U3RhdGUoeyBmaWx0ZXJUZXh0OiBlLnRhcmdldC52YWx1ZSB9KX0gYXV0b0NvbXBsZXRlPVwib2ZmXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWljb24tbGlzdC1pY29uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbmFsRGF0YS5tYXAobmFtZSA9PiB7IHJldHVybiAoPHNwYW4gY2xhc3NOYW1lPXt2YWx1ZSA9PSBuYW1lID8gJ2Jsb2Nrc3BhcmUtYWN0aXZlJyA6ICcnfSBvbkNsaWNrPXtlID0+IHsgdGhpcy5wcm9wcy5vbkNoYW5nZShuYW1lKSB9fT48c3BhbiBjbGFzc05hbWU9e25hbWV9IC8+PC9zcGFuPikgfSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgSWNvbkxpc3QiLCJpbXBvcnQgSWNvbkxpc3QgZnJvbSAnLi9JY29uTGlzdCc7XG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7RnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQlNJY29uU2V0dGluZ3MoIHByb3BzICkge1xuXG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIG9uQ2hhbmdlTmFtZSA9ICgpID0+IHt9LFxuICAgICAgZW5hYmxlaWNvblNpemUsXG4gICAgICBpY29uU2l6ZSxcbiAgICAgIG9uQ2hhbmdlSWNvblNpemVPcHRpb25zID0gKCkgPT4ge30sXG4gICAgICBlbmFibGVpY29uU3R5bGVzLFxuICAgICAgaWNvblN0eWxlcyxcbiAgICAgIG9uQ2hhbmdlSWNvblN0eWxlcyA9ICgpID0+IHt9LFxuICAgICAgaWNvbkJhY2tncm91bmRDb2xvcixcbiAgICAgIG9uQ2hhbmdlSWNvbkJhY2tncm91bmRDb2xvciA9ICgpID0+IHt9LFxuICAgICAgaWNvbkJvcmRlckNvbG9yLFxuICAgICAgb25DaGFuZ2VJY29uQm9yZGVyQ29sb3IgPSAoKT0+IHt9LFxuICAgICAgaWNvbkNvbG9yLFxuICAgICAgT25DaGFuZ2VJY29uQ29sb3IgPSAoKSA9Pnt9LFxuICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgb25DaGFuZ2VCb3JkZXJSYWRpdXMgPSAoKSA9PiB7fVxuXG4gICAgfSA9IHByb3BzO1xuXG5cblxuICAgIGNvbnN0IGljb25TaXplT3B0aW9ucyA9IFtcbiAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1pY29uLXNpemUtc21hbGwnLCBsYWJlbDogX18oJ1NtYWxsJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtaWNvbi1zaXplLW1lZGl1bScsIGxhYmVsOiBfXygnTWVkaXVtJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtaWNvbi1zaXplLWxhcmdlJywgbGFiZWw6IF9fKCdMYXJnZScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWljb24tc2l6ZS1leHRyYWxhcmdlJywgbGFiZWw6IF9fKCdFeHRyYSBMYXJnZScsICdibG9ja3NwYXJlJyl9XG4gICAgXTtcblxuICAgIGNvbnN0IGljb25TdHlsZXNPcHRpb25zID0gW1xuICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWljb24tc3R5bGUxJywgbGFiZWw6IF9fKCdOb25lJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtaWNvbi1zdHlsZTInLCBsYWJlbDogX18oJ0JhY2tncm91bmQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1pY29uLXN0eWxlMycsIGxhYmVsOiBfXygnQm9yZGVyJywgJ2Jsb2Nrc3BhcmUnKX0sXG5cbiAgICBdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEljb25MaXN0XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtuYW1lfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VOYW1lfS8+XG5cblxuICAgICAgICAgICAge2ZhbHNlICE9IGVuYWJsZWljb25TaXplICYmKFxuICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0ljb24gU2l6ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2ljb25TaXplfVxuICAgICAgICAgICAgICAgIG9wdGlvbnM9e2ljb25TaXplT3B0aW9ucy5tYXAoKHt2YWx1ZSwgbGFiZWx9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VJY29uU2l6ZU9wdGlvbnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2ZhbHNlICE9IGVuYWJsZWljb25TdHlsZXMgJiYoXG4gICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnSWNvbiBTdHlsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2ljb25TdHlsZXN9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17aWNvblN0eWxlc09wdGlvbnMubWFwKCh7dmFsdWUsIGxhYmVsfSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlSWNvblN0eWxlc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgdGl0bGU9e19fKCdJY29uIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W3tcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGljb25Db2xvcixcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IE9uQ2hhbmdlSWNvbkNvbG9yLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0ljb24gQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgIH1dfT5cbiAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG4gICAgICAgICAgICB7aWNvblN0eWxlcyA9PT0gJ2Jsb2Nrc3BhcmUtaWNvbi1zdHlsZTInICYmXG5cbiAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaWNvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlSWNvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICB9XX0+XG4gICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cbiAgICAgICAgICAgIH1cblxuXG5cbiAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgIClcbn0iLCJpbXBvcnQgUGFkZGluZyBmcm9tICcuLy4uLy4uL3V0aWxzL3BhZGRpbmcnO1xuaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vLi4vdXRpbHMvbWFyZ2luXCI7XG5pbXBvcnQgQlNJY29uU2V0dGluZ3MgZnJvbSAnLi4vLi4vaWNvbi1zZXQvY29tcG9uZW50cy9pY29uLXNldHRpbmdzJztcbmltcG9ydCBCU0hlYWRlclNldHRpbmdzIGZyb20gXCIuLi8uLi9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2hlYWRlci1zZXR0aW5nc1wiO1xuaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiXG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFJhbmdlQ29udHJvbCxcbiAgICBQYW5lbEJvZHksXG4gICAgVG9nZ2xlQ29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuXG4gICAgfVxuXG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIHNob3dJbWFnZSxcbiAgICAgICAgICAgICAgICBjb3VudGVyRm9udENvbG9yLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBpbWdJY29uT3B0aW9uLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgaWNvblN0eWxlcyxcbiAgICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGljb25Cb3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICBpY29uQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgICAgIGRlc2lnbixcbiAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVyc3VidGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIGhlYWRlcmJveENvbG9yLFxuICAgICAgICAgICAgICAgIGRhc2hDb2xvcixcbiAgICAgICAgICAgICAgICBibG9ja0JvcmRlclJhZGl1cyxcbiAgICAgICAgICAgICAgICBlbmFibGVCb3hTaGFkb3csXG4gICAgICAgICAgICAgICAgeE9mZnNldCxcbiAgICAgICAgICAgICAgICB5T2Zmc2V0LFxuICAgICAgICAgICAgICAgIGJsdXIsXG4gICAgICAgICAgICAgICAgc3ByZWFkLFxuICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQ291bnRlckZvbnRDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2NvdW50ZXJGb250Q29sb3I6IHZhbHVlfSk7XG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlaW1nSWNvbk9wdGlvbiA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2ltZ0ljb25PcHRpb246IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQ291bnRlclN0eWxlID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7ZGVzaWduOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBpbWdJY29uT3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTonaWNvbicsbGFiZWw6X18oJ0ljb24nLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOidpbWFnZScsbGFiZWw6X18oJ0ltYWdlJywnYmxvY2tzcGFyZScpfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGxheW91dE9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWxheW91dDEnLCBsYWJlbDogX18oJ0xheW91dCAxJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWxheW91dDInLCBsYWJlbDogX18oJ0xheW91dCAyJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrICBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgSWNvbiAnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2hvd0ltYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7c2hvd0ltYWdlOiAhc2hvd0ltYWdlfSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIHtpbWdJY29uT3B0aW9uID09ICdpY29uJyAmJiBzaG93SW1hZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keSB0aXRsZT17X18oJ0ljb24gU2V0dGluZ3MnKX0gaW5pdGlhbE9wZW49e2ZhbHNlfT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPEJTSWNvblNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU5hbWU9e25hbWUgPT4gc2V0QXR0cmlidXRlcyh7bmFtZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlaWNvblNpemU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplPXtpY29uU2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUljb25TaXplT3B0aW9ucz17aWNvblNpemUgPT4gc2V0QXR0cmlidXRlcyh7aWNvblNpemV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWljb25TdHlsZXM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdHlsZXM9e2ljb25TdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VJY29uU3R5bGVzPXtpY29uU3R5bGVzID0+IHNldEF0dHJpYnV0ZXMoe2ljb25TdHlsZXN9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25CYWNrZ3JvdW5kQ29sb3I9e2ljb25CYWNrZ3JvdW5kQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VJY29uQmFja2dyb3VuZENvbG9yPXtpY29uQmFja2dyb3VuZENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2ljb25CYWNrZ3JvdW5kQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Cb3JkZXJDb2xvcj17aWNvbkJvcmRlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSWNvbkJvcmRlckNvbG9yPXtpY29uQm9yZGVyQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7aWNvbkJvcmRlckNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQ29sb3I9e2ljb25Db2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbkNoYW5nZUljb25Db2xvcj17aWNvbkNvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2ljb25Db2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCb3JkZXJSYWRpdXM9e2JvcmRlclJhZGl1cyA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJSYWRpdXN9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0hlYWRlciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXJTZXR0aW5nc1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQmxvY2tHYXBzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZUZvbnRTaXplPXtzdWJ0aXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb249e2hlYWRlcmxheW91dE9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUhlYWRlclN0eWxlPXtoZWFkZXJsYXlvdXRPcHRpb24gPT4gc2V0QXR0cmlidXRlcyh7IGhlYWRlcmxheW91dE9wdGlvbiB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJUYWdPcHRpb249e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUhlYWRlclRhZz17aGVhZGVyVGFnT3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRhZ09wdGlvbn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyYm94Q29sb3I9e2hlYWRlcmJveENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlYm94Y29sb3I9e2hlYWRlcmJveENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlcmJveENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZURhc2hDb2xvcj17ZGFzaENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2Rhc2hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcj17aGVhZGVydGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tPXt0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdCb3R0b209IHt0aXRsZVBhZGRpbmdCb3R0b20gPT5zZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdCb3R0b219KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZWNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJzdWJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdCb3R0b219KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayBHYXAgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1BhZGRpbmcgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFkZGluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlVG9wPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A9e3BhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1RvcD17cGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nVG9wfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSaWdodCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVJpZ2h0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodD17cGFkZGluZ1JpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nUmlnaHR9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZUJvdHRvbT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdCb3R0b209e3BhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVmdCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZUxlZnQ9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0ID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdMZWZ0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ01hcmdpbiBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYXJnaW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlVG9wPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcD17bWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Ub3A9e21hcmdpblRvcCA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Ub3B9KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIG1hcmdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZUJvdHRvbT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luQm90dG9tfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG5cblxuICAgIH1cbn0iLCJjb25zdCBpY29uQ29sb3JPcHRpb25zID0gKGF0dHJpYnV0ZXMpID0+e1xuXG4gICAgbGV0IGljb25TdHlsZXMgPSAnJztcblxuICAgIGlmIChhdHRyaWJ1dGVzLmljb25TdHlsZXM9PT0nYmxvY2tzcGFyZS1pY29uLXN0eWxlMicpe1xuICAgICAgICBpY29uU3R5bGVzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmF0dHJpYnV0ZXMuaWNvbkJhY2tncm91bmRDb2xvcj9hdHRyaWJ1dGVzLmljb25CYWNrZ3JvdW5kQ29sb3I6JyM4YjI0OWMnLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6YXR0cmlidXRlcy5pY29uQm9yZGVyQ29sb3I/YXR0cmlidXRlcy5pY29uQm9yZGVyQ29sb3I6JyM4YjI0OWMnLFxuICAgICAgICAgICAgY29sb3I6YXR0cmlidXRlcy5pY29uQ29sb3I/YXR0cmlidXRlcy5pY29uQ29sb3I6JyNmZmYnLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOmF0dHJpYnV0ZXMuYm9yZGVyUmFkaXVzKyclJyxcblxuICAgICAgICB9XG5cbiAgICB9XG4gICAgZWxzZSBpZihhdHRyaWJ1dGVzLmljb25TdHlsZXM9PT0nYmxvY2tzcGFyZS1pY29uLXN0eWxlMycpe1xuICAgICAgICBpY29uU3R5bGVzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOid0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICBib3JkZXJDb2xvcjphdHRyaWJ1dGVzLmljb25Cb3JkZXJDb2xvcj9hdHRyaWJ1dGVzLmljb25Cb3JkZXJDb2xvcjonIzhiMjQ5YycsXG4gICAgICAgICAgICBjb2xvcjphdHRyaWJ1dGVzLmljb25Db2xvcj9hdHRyaWJ1dGVzLmljb25Db2xvcjonI2ZmZicsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6YXR0cmlidXRlcy5ib3JkZXJSYWRpdXMrJyUnLFxuXG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgaWNvblN0eWxlcyA9e1xuICAgICAgICAgICAgY29sb3I6YXR0cmlidXRlcy5pY29uQ29sb3I/YXR0cmlidXRlcy5pY29uQ29sb3I6JyNmZmYnXG5cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgICAgIHJldHVybiBpY29uU3R5bGVzXG59XG5cbmV4cG9ydCBkZWZhdWx0IGljb25Db2xvck9wdGlvbnM7IiwiaW1wb3J0IG1hcmdpblBhZGRpbmdTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZ1wiXG5pbXBvcnQgJy4uL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi4vc3R5bGVzL2VkaXRvci5zY3NzJyA7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuaW1wb3J0IENvdW50VXAgZnJvbSAncmVhY3QtY291bnR1cCc7XG5pbXBvcnQgaWNvbkNvbG9yT3B0aW9ucyBmcm9tICcuLi8uLi91dGlscy9zdHlsZXMvaWNvbi1jb2xvcic7XG5pbXBvcnQgZGFzaENvbG9ycyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2hcIjtcbmltcG9ydCB0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGVcIjtcbmltcG9ydCBzdWJ0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGVcIjtcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7XG4gICAgVG9vbGJhcixcbiAgICBSYW5nZUNvbnRyb2wsXG59ID0gd3AuY29tcG9uZW50cztcblxuY29uc3Qge1xuICAgIEJsb2NrQ29udHJvbHMsXG4gICAgUmljaFRleHQsXG4gICAgSW5uZXJCbG9ja3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuXG5jb25zdCBBTExPV0VEX0JMT0NLUyA9IFsgJ2NvcmUvaW1hZ2UnXTtcbmNvbnN0IFRFTVBMQVRFID0gW1xuICAgIFsnY29yZS9pbWFnZScse1xuXG4gICAgfV1cbl07XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ291bnRlckJsb2NrIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgc2hvd0ltYWdlLFxuICAgICAgICAgICAgICAgIGNvdW50ZXIsXG4gICAgICAgICAgICAgICAgY291bnRlckZvbnRDb2xvcixcbiAgICAgICAgICAgICAgICBpbWdJY29uT3B0aW9uLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgaWNvblN0eWxlcyxcbiAgICAgICAgICAgICAgICBkZXNpZ24sXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuICAgICAgICAgICAgICAgIGJsb2NrQm9yZGVyUmFkaXVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tHcm91bmRDb2xvcj9iYWNrR3JvdW5kQ29sb3I6XCIjZmZmXCIsXG4gICAgICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgLi4ubWFyZ2luUGFkZGluZ1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogYmxvY2tCb3JkZXJSYWRpdXMgPyBibG9ja0JvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaWNvblN0eWxlc2NzcyA9e1xuICAgICAgICAgICAgLi4uaWNvbkNvbG9yT3B0aW9ucyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlRGFzaFN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLmRhc2hDb2xvcnMoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0aXRsZVN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLnRpdGxlQ29sb3IoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzdWJ0aXRsZVN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLnN1YnRpdGxlQ29sb3IoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgICAgIDxUb29sYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmVfcHJvZ3Jlc3NfYmFyX3ZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y291bnRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IGNvdW50ZXI6IHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezEwMDAwMDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXI+XG4gICAgICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPlxuXG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtY291bnRlci13cmFwcGVyIGJsb2Nrc3BhcmUtYmxvY2tzXCIgc3R5bGU9e2VkaXRTdHlsZXN9PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWNvdW50ZXItc2VjdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICl9ID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJibG9ja3NwYXJlLWNvdW50ZXJzLWl0ZW1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93SW1hZ2UgJiYgaW1nSWNvbk9wdGlvbiA9PSdpbWFnZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubmVyQmxvY2tzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZT17IFRFTVBMQVRFIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRCbG9ja3M9eyBBTExPV0VEX0JMT0NLUyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUxvY2s9eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlSW5zZXJ0VXBkYXRlc1NlbGVjdGlvbj17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93SW1hZ2UgJiYgaW1nSWNvbk9wdGlvbiA9PSdpY29uJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1ibG9jay1pY29uLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2staWNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0eWxlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtpY29uU3R5bGVzY3NzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT17bmFtZX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1jb3VudGVyc1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXIgey4uLnRoaXMucHJvcHN9PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3RpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGl0bGU6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnU3ViIFRpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclN1YlRpdGxlOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CU0hlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1jb3VudGVyXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb3VudGVyRm9udENvbG9yP2NvdW50ZXJGb250Q29sb3I6XCIjMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q291bnRVcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFjY291bnQtYmFsYW5jZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kPXtjb3VudGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uPXs0Ljc1fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gb3BhY2l0eVJhdGlvVG9DbGFzcyggcmF0aW8gKSB7XG4gICAgcmV0dXJuICggMCA9PT0gcmF0aW8gfHwgNTAgPT09IHJhdGlvICkgP1xuICAgICAgICBudWxsIDpcbiAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kLW9wYWNpdHktJyArICggMTAgKiBNYXRoLnJvdW5kKCByYXRpbyAvIDEwICkgKTtcbn1cblxuXG5cblxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWFyZ2luUGFkZGluZ1N0eWxlcyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL21hcmdpbi1wYWRkaW5nXCI7XG5pbXBvcnQgaWNvbkNvbG9yT3B0aW9ucyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL2ljb24tY29sb3JcIjtcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgZGFzaENvbG9ycyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2hcIjtcbmltcG9ydCB0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGVcIjtcbmltcG9ydCBzdWJ0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGVcIjtcbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5jb25zdCB7Q29tcG9uZW50fSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7UmljaFRleHQsSW5uZXJCbG9ja3N9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpe1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgc2hvd0ltYWdlLFxuICAgICAgICAgICAgICAgIGNvdW50ZXIsXG4gICAgICAgICAgICAgICAgY291bnRlckZvbnRDb2xvcixcbiAgICAgICAgICAgICAgICBpbWdJY29uT3B0aW9uLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgaWNvblN0eWxlcyxcbiAgICAgICAgICAgICAgICBkZXNpZ24sXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuICAgICAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBibG9ja0JvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgZWRpdFN0eWxlcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja0dyb3VuZENvbG9yP2JhY2tHcm91bmRDb2xvcjpcIiNmZmZcIixcbiAgICAgICAgICAgIC4uLmJveFNoYWRvd1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIC4uLm1hcmdpblBhZGRpbmdTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGJsb2NrQm9yZGVyUmFkaXVzID8gYmxvY2tCb3JkZXJSYWRpdXMgOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBpY29uU3R5bGVzY3NzID17XG4gICAgICAgICAgICAuLi5pY29uQ29sb3JPcHRpb25zKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uZGFzaENvbG9ycyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4udGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN1YnRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uc3VidGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybihcblxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtY291bnRlci13cmFwcGVyIGJsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc2VjdGlvbi1jb3VudGVyLWJhclwiIHN0eWxlPXtlZGl0U3R5bGVzfT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1jb3VudGVyLXNlY3Rpb24nXG4gICAgICAgICAgICAgICAgKX0gPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJibG9ja3NwYXJlLWNvdW50ZXJzLWl0ZW1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dJbWFnZSAmJiBpbWdJY29uT3B0aW9uID09J2ltYWdlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93SW1hZ2UgJiYgaW1nSWNvbk9wdGlvbiA9PSdpY29uJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2staWNvbi13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2staWNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3R5bGVzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtpY29uU3R5bGVzY3NzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPXtuYW1lfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1jb3VudGVyc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlciB7Li4udGhpcy5wcm9wc30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyVGl0bGUgJiZcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJTdWJUaXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CU0hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWNvdW50ZXJcIiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb3VudGVyRm9udENvbG9yP2NvdW50ZXJGb250Q29sb3I6XCIjMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19Pntjb3VudGVyfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuXG5cbiAgICAgICAgKVxuICAgIH1cbn0iLCJpbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBzZWN0aW9uSGVhZGVyQXR0cmlidXRlcyBmcm9tICcuLi91dGlscy9hdHRyaWJ1dGVzL3NlY3Rpb24taGVhZGVyJ1xuaW1wb3J0IGJveFNoYWRvd0F0dHJpYnV0ZXMgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93JztcbmltcG9ydCBtYXJnaW5QYWRkaW5nIGZyb20gXCIuLi91dGlscy9hdHRyaWJ1dGVzL21hcmdpbi1wYWRkaW5nXCJcbmltcG9ydCBDb3VudGVyQmxvY2sgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9jb21wb25lbnRzL3NhdmUnO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5cblxuIGNvbnN0IHtuYW1lLGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG4gY29uc3QgYXR0cmlidXRlcyA9e1xuICAgICAuLi5zZWN0aW9uSGVhZGVyQXR0cmlidXRlcyxcbiAgICAgLi4ubWFyZ2luUGFkZGluZyxcbiAgICAgLi4ubWV0YWRhdGEuYXR0cmlidXRlcyxcbiAgICAgLi4uYm94U2hhZG93QXR0cmlidXRlc1xuIH1cblxucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgQ291bnRlcicsJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjpfXygnQWRkIGNvdW50ZXIgaW4geW91IHBhZ2UgYW5kIHBvc3QnLCdibG9ja3NwYXJlYCcpLFxuICAgIERlc2NyaXB0aW9uOidEaXNwbGF5cyBDb3VudGVyJyxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5jb3VudGVyLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2NvdW50ZXInLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbnVtYmVyJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2JveCcsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbICd3aWRlJywgJ2Z1bGwnLCAnY2VudGVyJyBdLFxuICAgICAgICBodG1sOiB0cnVlXG4gICAgfSxcblxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY291bnRlcjogMTAwLFxuICAgICAgICAgICAgY291bnRlckZvbnRDb2xvcjpcIiMwMDBcIixcbiAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3I6XCIjMDAwXCIsXG4gICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICAgICAgaGVhZGVyc3VidGl0bGVDb2xvcjpcIiMwMDBcIixcbiAgICAgICAgICAgIG5hbWU6IFwiZmFzIGZhLWNoYXJ0LWxpbmVcIixcbiAgICAgICAgICAgIGhlYWRlclRpdGxlOlwiRW50ZXIgVGl0bGVcIlxuICAgICAgICB9XG4gICAgfSxcblxuICAgIGVkaXQ6Q291bnRlckJsb2NrLFxuICAgIHNhdmU6U2F2ZVxuXG5cbn0pOyIsIlxuaW1wb3J0IEJTSWNvblNldHRpbmdzIGZyb20gJy4vaWNvbi1zZXR0aW5ncyc7XG5cblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxufSA9IHdwLmNvbXBvbmVudHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgcmVuZGVyKCkge1xuXG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICBpY29uU3R5bGVzLFxuICAgICAgICAgICAgaWNvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGljb25Cb3JkZXJDb2xvcixcbiAgICAgICAgICAgIGljb25Db2xvcixcbiAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3Qge3NldEF0dHJpYnV0ZXN9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5IHRpdGxlPXtfXygnSWNvbiBTZXR0aW5ncycpfSBpbml0aWFsT3Blbj17ZmFsc2V9PlxuXG4gICAgICAgICAgICAgICAgICAgIDxCU0ljb25TZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTmFtZT17bmFtZSA9PiBzZXRBdHRyaWJ1dGVzKHsgbmFtZSB9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlaWNvblNpemU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpemU9e2ljb25TaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VJY29uU2l6ZU9wdGlvbnM9eyBpY29uU2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgaWNvblNpemUgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVpY29uU3R5bGVzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdHlsZXM9e2ljb25TdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUljb25TdHlsZXM9e2ljb25TdHlsZXMgPT4gc2V0QXR0cmlidXRlcyh7IGljb25TdHlsZXMgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZENvbG9yPXtpY29uQmFja2dyb3VuZENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VJY29uQmFja2dyb3VuZENvbG9yPXtpY29uQmFja2dyb3VuZENvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBpY29uQmFja2dyb3VuZENvbG9yIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkJvcmRlckNvbG9yPXtpY29uQm9yZGVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUljb25Cb3JkZXJDb2xvcj17aWNvbkJvcmRlckNvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBpY29uQm9yZGVyQ29sb3IgfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25Db2xvcj17aWNvbkNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgT25DaGFuZ2VJY29uQ29sb3I9e2ljb25Db2xvciA9PiBzZXRBdHRyaWJ1dGVzKHsgaWNvbkNvbG9yIH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9e2JvcmRlclJhZGl1c31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXMgPT4gc2V0QXR0cmlidXRlcyh7IGJvcmRlclJhZGl1cyB9KX1cblxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuaW1wb3J0IGljb25Db2xvck9wdGlvbnMgZnJvbSAgJy4uLy4uL3V0aWxzL3N0eWxlcy9pY29uLWNvbG9yJ1xuY29uc3Qge1xuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9sc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7IGRldmljZTogJ21kJywgc3BhY2VyOiB0cnVlIH07XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcywgY2xpZW50SWQsIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQgfSB9ID0gdGhpcy5wcm9wc1xuICAgICAgICBjb25zdCBfY2xpZW50ID0gY2xpZW50SWQuc3Vic3RyKDAsIDYpXG4gICAgICAgIGlmICghdW5pcXVlSWQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh1bmlxdWVJZCAmJiB1bmlxdWVJZCAhPSBfY2xpZW50KSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdW5pcXVlSWQ6IF9jbGllbnQgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgaWNvblN0eWxlcyxcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBpY29uU3R5bGVzQ3NzID0ge1xuICAgICAgICAgICAgLi4uaWNvbkNvbG9yT3B0aW9ucyhhdHRyaWJ1dGVzKVxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHMga2V5PVwiY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgc2VjdGlvbkFsaWdubWVudCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggbmV4dEFsaWduICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyBzZWN0aW9uQWxpZ25tZW50OiBuZXh0QWxpZ24gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1ibG9ja3MnPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1ibG9jay1pY29uLXdyYXBwZXInIHN0eWxlPXt7dGV4dEFsaWduOnNlY3Rpb25BbGlnbm1lbnR9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLWljb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdHlsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICl9IHN0eWxlPXtpY29uU3R5bGVzQ3NzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9e25hbWV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFZGl0OyIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgaWNvbkNvbG9yT3B0aW9ucyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL2ljb24tY29sb3JcIjtcblxuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG5jbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIG5hbWUsIGljb25TaXplLCBpY29uU3R5bGVzLHNlY3Rpb25BbGlnbm1lbnRcbiAgICAgICAgfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgaWNvblN0eWxlc0NzcyA9IHtcbiAgICAgICAgICAgIC4uLmljb25Db2xvck9wdGlvbnModGhpcy5wcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYmxvY2tgfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYmxvY2staWNvbi13cmFwcGVyYH0gc3R5bGU9e3t0ZXh0QWxpZ246c2VjdGlvbkFsaWdubWVudH19PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLWljb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uU3R5bGVzXG4gICAgICAgICAgICAgICAgICAgICl9IHN0eWxlPXtpY29uU3R5bGVzQ3NzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT17bmFtZX0vPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTYXZlIiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2NvbXBvbmVudHMvZWRpdCc7XG5pbXBvcnQgU2F2ZSBmcm9tICcuL2NvbXBvbmVudHMvc2F2ZSdcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5cblxuY29uc3R7bmFtZSxjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG4vLyBSZWdpc3RlciBhbGlnbm1lbnRzXG5jb25zdCBhbGlnbm1lbnRPcHRpb25zID0gWydjZW50ZXInLCAnd2lkZScsICdmdWxsJ107XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgSWNvbicsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdPdXIgSWNvbiBibG9jayBhbGxvd3MgeW91IHRvIGNob29zZSBhbmQgcGxhY2UgdmFyaW91cyB0eXBlIG9mIGljb25zJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5pY29uYmxvY2tzcGFyZSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnaWNvbicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdzZXQnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYm94JywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgZXhhbXBsZToge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBjb3ZlcjogJ2h0dHBzOi8vYmxvY2tzcGFyZS5jb20nLFxuICAgICAgICAgICAgYXV0aG9yOiAnQmxvY2tzcGFyZScsXG4gICAgICAgICAgICBwYWdlczogNTAwXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGVkaXQ6IEVkaXQsXG4gICAgc2F2ZTpTYXZlXG59KTtcbiIsImltcG9ydCBjb21wYWN0IGZyb20gXCJsb2Rhc2gvY29tcGFjdFwiO1xuaW1wb3J0IG1hcCBmcm9tICdsb2Rhc2gvbWFwJztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBQYW5lbEJvZHksXG4gICAgU2VsZWN0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sLFxuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgaW1hZ2VTaXplU2VsZWN0KCkge1xuICAgICAgICBjb25zdCBnZXRTZXR0aW5ncyA9IHdwLmRhdGEuc2VsZWN0KCAnY29yZS9lZGl0b3InICkuZ2V0RWRpdG9yU2V0dGluZ3MoKTtcblxuICAgICAgICByZXR1cm4gY29tcGFjdCggbWFwKCBnZXRTZXR0aW5ncy5pbWFnZVNpemVzLCAoeyBuYW1lLCBzbHVnIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHNsdWcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG5hbWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBudW1iZXJvZlNsaWRlLFxuICAgICAgICAgICAgICAgIGNhcm91c2VsU3BlZWQsXG4gICAgICAgICAgICAgICAgc2hvd3NsaWRlck5leHRQcmV2LFxuICAgICAgICAgICAgICAgIGNhcm91c2VsTmV4dEljb24sXG4gICAgICAgICAgICAgICAgc2hvd0RvdHMsXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvbkNvbG9yLFxuICAgICAgICAgICAgICAgIGd1dHRlclNwYWNlLFxuICAgICAgICAgICAgICAgIGNvbG9yRmlsdGVyLFxuICAgICAgICAgICAgICAgIHNob3dPcmlnaW5hbE9uSG92ZXIsXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvblNpemUsXG4gICAgICAgICAgICAgICAgZW5hYmxlQXV0b1BsYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgY29uc3QgYWJJbWFnZVNpemVTZWxlY3QgPSB7XG4gICAgICAgICAgICB2YWx1ZTogJ3NlbGVjdGltYWdlJyxcbiAgICAgICAgICAgIGxhYmVsOiBfXyggJ1NlbGVjdCBpbWFnZSBzaXplJyApXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW1hZ2VTaXplT3B0aW9ucyA9IHRoaXMuaW1hZ2VTaXplU2VsZWN0KCk7XG4gICAgICAgIGltYWdlU2l6ZU9wdGlvbnMudW5zaGlmdCggYWJJbWFnZVNpemVTZWxlY3QgKTtcbiAgICAgICAgLy8gQ29tYmluZSB0aGUgb2JqZWN0c1xuXG5cblxuICAgICAgICBjb25zdCBBcnJvd09wdGlvbiA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0JywgbGFiZWw6IF9fKCdDaGV2cm9uJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdmYXMgZmEtYW5nbGUtcmlnaHQnLCBsYWJlbDogX18oJ0FuZ2xlJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdmYXMgZmEtY2hldnJvbi1jaXJjbGUtcmlnaHQnLCBsYWJlbDogX18oJ0NoZXZyb24gQ2lyY2xlJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdmYXMgZmEtY2FyZXQtcmlnaHQnLCBsYWJlbDogX18oJ0NhcmV0JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdmYXMgZmEtYXJyb3ctY2lyY2xlLXJpZ2h0JywgbGFiZWw6IF9fKCdDaXJjbGUnLCAnYmxvY2tzcGFyZScpfVxuXG5cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBjb2xvckZpbHRlck9wdGlvbiA9W1xuICAgICAgICAgICAge3ZhbHVlOidibG9ja3NwYXJlLW9yaWdpbmFsJyxsYWJlbDpfXygnT3JpZ2luYWwnLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOidibG9ja3NwYXJlLWdyYXlzY2FsZScsbGFiZWw6X18oJ0dyYXlzY2FsZScsJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6J2Jsb2Nrc3BhcmUtc2VwaWEnLGxhYmVsOl9fKCdTZXBpYScsJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6J2Jsb2Nrc3BhcmUtc2F0dXJhdGlvbicsbGFiZWw6X18oJ1NhdHVyYXRpb24nLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOidibG9ja3NwYXJlLWRpbScsbGFiZWw6X18oJ0RpbScsJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6J2Jsb2Nrc3BhcmUtdmludGFnZScsbGFiZWw6X18oJ1ZpbnRhZ2UnLCdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgbmF2aWdhdGlvblNpemVPcHRpb24gPSBbXG4gICAgICAgICAgICB7dmFsdWU6J2Jsb2Nrc3BhcmUtbmF2aWdhdGlvbi1zbWFsbCcsbGFiZWw6X18oJ1NtYWxsJywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTonYmxvY2tzcGFyZS1uYXZpZ2F0aW9uLW1lZGl1bScsbGFiZWw6X18oJ01lZGl1bScsJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6J2Jsb2Nrc3BhcmUtbmF2aWdhdGlvbi1sYXJnZScsbGFiZWw6X18oJ0xhcmdlJywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgXTtcblxuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlT3B0aW9uID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7Y2Fyb3VzZWxOZXh0SWNvbjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VOYXZpZ2F0aW9uU2l6ZU9wdGlvbiA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe25hdmlnYXRpb25TaXplOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZUNvbG9yT3B0aW9uID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JGaWx0ZXI6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlTmF2aWdhdGlvbkNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7bmF2aWdhdGlvbkNvbG9yOiB2YWx1ZX0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQ2Fyb3VzZWwgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnTnVtYmVyIG9mIHNsaWRlIHRvIHNob3cnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e251bWJlcm9mU2xpZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtudW1iZXJvZlNsaWRlOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsyfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXszfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnR3V0dGVyIFNhcGNlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtndXR0ZXJTcGFjZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2d1dHRlclNwYWNlOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXs1fVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0VuYWJsZSBBdXRvcGxheScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtlbmFibGVBdXRvUGxheX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2VuYWJsZUF1dG9QbGF5OiAhZW5hYmxlQXV0b1BsYXl9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9e19fKCdUaGUgZWZmZWN0IHdpbGwgYXBwbGljYWJsZSBvbiBmcm9udGVuZCBvbmx5LicsJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgTmF2aWdhdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzaG93c2xpZGVyTmV4dFByZXZ9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtzaG93c2xpZGVyTmV4dFByZXY6ICFzaG93c2xpZGVyTmV4dFByZXZ9KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuXG5cbiAgICAgICAgICAgICAgICAgICAge3Nob3dzbGlkZXJOZXh0UHJldiAmJlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCcgTmF2aWdhdGlvbiBTaXplJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtuYXZpZ2F0aW9uU2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e25hdmlnYXRpb25TaXplT3B0aW9uLm1hcCgoe3ZhbHVlLCBsYWJlbH0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlTmF2aWdhdGlvblNpemVPcHRpb259XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IERvdHMnLCAnYmxvY2tzcGFyZScpfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzaG93RG90c31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3Nob3dEb3RzOiAhc2hvd0RvdHN9KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAge3Nob3dzbGlkZXJOZXh0UHJldiAmJlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnTmF2aWdhdGlvbi9Eb3RzIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5hdmlnYXRpb25Db2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VOYXZpZ2F0aW9uQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdOYXZpZ2F0aW9uL0RvdHMgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfV19PlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgKTtcbiAgICB9XG5cbn0iLCIvKipcbiAqIEV4dGVybmFsIERlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IEljb25CdXR0b24sIFNwaW5uZXIsIERhc2hpY29uIH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyBSaWNoVGV4dCwgVVJMSW5wdXQgfSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgeyB3aXRoU2VsZWN0IH0gPSB3cC5kYXRhO1xuY29uc3QgeyBCQUNLU1BBQ0UsIERFTEVURSB9ID0gd3Aua2V5Y29kZXM7XG5jb25zdCB7IGlzQmxvYlVSTCB9ID0gd3AuYmxvYjtcblxuY2xhc3MgR2FsbGVyeUltYWdlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuXG4gICAgICAgIHRoaXMub25JbWFnZUNsaWNrID0gdGhpcy5vbkltYWdlQ2xpY2suYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uU2VsZWN0Q2FwdGlvbiA9IHRoaXMub25TZWxlY3RDYXB0aW9uLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5iaW5kQ29udGFpbmVyID0gdGhpcy5iaW5kQ29udGFpbmVyLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5zYXZlQ3VzdG9tTGluayA9IHRoaXMuc2F2ZUN1c3RvbUxpbmsuYmluZCggdGhpcyApO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBjYXB0aW9uU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgY2FwdGlvbkZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNTYXZlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYmluZENvbnRhaW5lciggcmVmICkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IHJlZjtcbiAgICB9XG5cbiAgICBvblNlbGVjdENhcHRpb24oKSB7XG4gICAgICAgIGlmICggISB0aGlzLnN0YXRlLmNhcHRpb25TZWxlY3RlZCApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uU2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoICEgdGhpcy5wcm9wcy5pc1NlbGVjdGVkICkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbWFnZUNsaWNrKCkge1xuICAgICAgICBpZiAoICEgdGhpcy5wcm9wcy5pc1NlbGVjdGVkICkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0aGlzLnN0YXRlLmNhcHRpb25TZWxlY3RlZCApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNhcHRpb25Gb2N1c2VkOiBmYWxzZSxcbiAgICAgICAgICAgIH0gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNhdmVDdXN0b21MaW5rKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKCB7IGlzU2F2ZWQ6IHRydWUgfSApO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSggcHJldlByb3BzICkge1xuICAgICAgICBjb25zdCB7IGlzU2VsZWN0ZWQsIGltYWdlLCB1cmwsIGltZ0xpbmsgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmICggaW1hZ2UgJiYgISB1cmwgKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgICAgICB1cmw6IGltYWdlLnNvdXJjZV91cmwsXG4gICAgICAgICAgICAgICAgYWx0OiBpbWFnZS5hbHRfdGV4dCxcbiAgICAgICAgICAgIH0gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggdGhpcy5zdGF0ZS5jYXB0aW9uU2VsZWN0ZWQgJiYgISBpc1NlbGVjdGVkICYmIHByZXZQcm9wcy5pc1NlbGVjdGVkICkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgge1xuICAgICAgICAgICAgICAgIGNhcHRpb25TZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgY2FwdGlvbkZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBpbWdMaW5rICYmICEgaXNTZWxlY3RlZCAmJiBwcmV2UHJvcHMuaXNTZWxlY3RlZCApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHsgaXNTYXZlZDogZmFsc2UgfSApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhbHQsXG4gICAgICAgICAgICBjYXB0aW9uLFxuICAgICAgICAgICAgY2FwdGlvbnMsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGd1dHRlcixcbiAgICAgICAgICAgIGd1dHRlck1vYmlsZSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgaXNGaXJzdEl0ZW0sXG4gICAgICAgICAgICBpc0xhc3RJdGVtLFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIGxpbmtUbyxcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgIG1hcmdpbkxlZnQsXG4gICAgICAgICAgICBtYXJnaW5SaWdodCxcbiAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgIG9uTW92ZUJhY2t3YXJkLFxuICAgICAgICAgICAgb25Nb3ZlRm9yd2FyZCxcbiAgICAgICAgICAgIG9uUmVtb3ZlLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNoYWRvdyxcbiAgICAgICAgICAgIHN1cHBvcnRzQ2FwdGlvbixcbiAgICAgICAgICAgIHN1cHBvcnRzTW92aW5nID0gdHJ1ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsTW92aW5nID0gZmFsc2UsXG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBzaXplcyxcbiAgICAgICAgICAgIGluc3BlY3RvclNpemUsXG4gICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAgIGltZ0xpbmssXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGxldCBpbWd1cmwgPSAnJztcbiAgICAgICAgaWYoc2l6ZXMpIHtcblxuXG4gICAgICAgICAgICBpZiAoaW5zcGVjdG9yU2l6ZSA9PT0gJ21lZGl1bScpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNpemVzLm1lZGl1bSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICBpbWd1cmwgPSB1cmxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNpemVzLm1lZGl1bSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1ndXJsID0gc2l6ZXMubWVkaXVtLnVybDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZ3VybCA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGluc3BlY3RvclNpemUgPT09ICdmdWxsJykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2l6ZXMubGFyZ2UgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICBpbWd1cmwgPSB1cmxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNpemVzLmZ1bGwudXJsID09IFwidW5kZWZpbmVkXCIpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaW1ndXJsID0gc2l6ZXMuZnVsbC51cmw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWd1cmwgPSB1cmw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbWd1cmwgPSB1cmw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgaW1ndXJsID0gdXJsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW1nQ2xhc3NlcyA9IGNsYXNzbmFtZXMoIHtcbiAgICAgICAgICAgIFsgYGhhcy1zaGFkb3ctJHsgc2hhZG93IH1gIF06IHNoYWRvdyAhPT0gJ25vbmUnIHx8IHNoYWRvdyAhPT0gdW5kZWZpbmVkLFxuICAgICAgICB9ICk7XG5cbiAgICAgICAgY29uc3QgaW1nID0gKFxuXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBzcmM9eyBpbWd1cmwgfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBpbWdDbGFzc2VzIH1cbiAgICAgICAgICAgICAgICAgICAgYWx0PXsgYWx0IH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS1pZD17IGlkIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS1pbWdsaW5rPXsgaW1nTGluayB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyB0aGlzLm9uSW1hZ2VDbGljayB9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9eyBhcmlhTGFiZWwgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgeyBpc0Jsb2JVUkwoIHVybCApICYmIDxTcGlubmVyIC8+IH1cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcygge1xuICAgICAgICAgICAgJ2lzLXNlbGVjdGVkJzogaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICdpcy10cmFuc2llbnQnOiB1cmwgJiYgMCA9PT0gdXJsLmluZGV4T2YoICdibG9iOicgKSxcbiAgICAgICAgICAgIFsgYGhhcy1tYXJnaW4tdG9wLSR7IGd1dHRlciB9YCBdOiBtYXJnaW5Ub3AgJiYgZ3V0dGVyID4gMCxcbiAgICAgICAgICAgIFsgYGhhcy1tYXJnaW4tdG9wLW1vYmlsZS0keyBndXR0ZXJNb2JpbGUgfWAgXTogbWFyZ2luVG9wICYmIGd1dHRlck1vYmlsZSA+IDAsXG4gICAgICAgICAgICBbIGBoYXMtbWFyZ2luLXJpZ2h0LSR7IGd1dHRlciB9YCBdOiBtYXJnaW5SaWdodCAmJiBndXR0ZXIgPiAwLFxuICAgICAgICAgICAgWyBgaGFzLW1hcmdpbi1yaWdodC1tb2JpbGUtJHsgZ3V0dGVyTW9iaWxlIH1gIF06IG1hcmdpblJpZ2h0ICYmIGd1dHRlck1vYmlsZSA+IDAsXG4gICAgICAgICAgICBbIGBoYXMtbWFyZ2luLWJvdHRvbS0keyBndXR0ZXIgfWAgXTogbWFyZ2luQm90dG9tICYmIGd1dHRlciA+IDAsXG4gICAgICAgICAgICBbIGBoYXMtbWFyZ2luLWJvdHRvbS1tb2JpbGUtJHsgZ3V0dGVyTW9iaWxlIH1gIF06IG1hcmdpbkJvdHRvbSAmJiBndXR0ZXJNb2JpbGUgPiAwLFxuICAgICAgICAgICAgWyBgaGFzLW1hcmdpbi1sZWZ0LSR7IGd1dHRlciB9YCBdOiBtYXJnaW5MZWZ0ICYmIGd1dHRlciA+IDAsXG4gICAgICAgICAgICBbIGBoYXMtbWFyZ2luLWxlZnQtbW9iaWxlLSR7IGd1dHRlck1vYmlsZSB9YCBdOiBtYXJnaW5MZWZ0ICYmIGd1dHRlck1vYmlsZSA+IDAsXG4gICAgICAgIH0gKTtcblxuICAgICAgICBjb25zdCBjYXB0aW9uU3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplID8gZm9udFNpemUgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxmaWd1cmUgY2xhc3NOYW1lPXsgJ2Jsb2Nrc3BhcmUtZ2FsbGVyeS1maWd1cmUgJyArIGNsYXNzTmFtZSB9IHRhYkluZGV4PVwiLTFcIiBvbktleURvd249eyB0aGlzLm9uS2V5RG93biB9IHJlZj17IHRoaXMuYmluZENvbnRhaW5lciB9PlxuICAgICAgICAgICAgICAgIHsgaXNTZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgeyBzdXBwb3J0c01vdmluZyAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbXBvbmVudHMtYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW1fX21vdmUtbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPXsgdmVydGljYWxNb3ZpbmcgPyAnYXJyb3ctdXAnIDogJ2Fycm93LWxlZnQnIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsgISBpc0ZpcnN0SXRlbSAmJiBvbk1vdmVCYWNrd2FyZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW0tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnTW92ZSBJbWFnZSBCYWNrd2FyZCcsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXsgaXNGaXJzdEl0ZW0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXsgISBpc1NlbGVjdGVkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249eyB2ZXJ0aWNhbE1vdmluZyA/ICdhcnJvdy1kb3duJyA6ICdhcnJvdy1yaWdodCcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyAhIGlzTGFzdEl0ZW0gJiYgb25Nb3ZlRm9yd2FyZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW0tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnTW92ZSBJbWFnZSBGb3J3YXJkJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyBpc0xhc3RJdGVtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ICEgaXNTZWxlY3RlZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbXBvbmVudHMtYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW1fX3JlbW92ZS1tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJuby1hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyBvblJlbW92ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW0tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnUmVtb3ZlIEltYWdlJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXsgISBpc1NlbGVjdGVkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7IGxpbmtUbyA9PT0gJ2N1c3RvbScgJiZcbiAgICAgICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbXBvbmVudHMtYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW0taW1hZ2UtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17ICggZXZlbnQgKSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGFzaGljb24gaWNvbj1cImFkbWluLWxpbmtzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxVUkxJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgaW1nTGluayB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gc2V0QXR0cmlidXRlcyggeyBpbWdMaW5rOiB2YWx1ZSB9ICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIGljb249eyB0aGlzLnN0YXRlLmlzU2F2ZWQgPyAnc2F2ZWQnIDogJ2VkaXRvci1icmVhaycgfSBsYWJlbD17IHRoaXMuc3RhdGUuaXNTYXZlZCA/IF9fKCAnU2F2aW5nJywgJ2Jsb2Nrc3BhcmUnICkgOiBfXyggJ0FwcGx5JywgJ2Jsb2Nrc3BhcmUnICkgfSBvbkNsaWNrPXsgdGhpcy5zYXZlQ3VzdG9tTGluayB9IHR5cGU9XCJzdWJtaXRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7IGltZyB9XG4gICAgICAgICAgICAgICAgeyAoIHN1cHBvcnRzQ2FwdGlvbiA9PT0gdHJ1ZSApICYmICggISBSaWNoVGV4dC5pc0VtcHR5KCBjYXB0aW9uICkgfHwgaXNTZWxlY3RlZCApICYmIGNhcHRpb25zID8gKFxuICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJmaWdjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgX18oICdXcml0ZSBjYXB0aW9u4oCmJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBjYXB0aW9uU3R5bGVzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgY2FwdGlvbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXsgdGhpcy5zdGF0ZS5jYXB0aW9uU2VsZWN0ZWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIG5ld0NhcHRpb24gKSA9PiBzZXRBdHRyaWJ1dGVzKCB7IGNhcHRpb246IG5ld0NhcHRpb24gfSApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlT25Gb2N1cz17IHRoaXMub25TZWxlY3RDYXB0aW9uIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZVRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogbnVsbCB9XG4gICAgICAgICAgICA8L2ZpZ3VyZT5cbiAgICAgICAgKTtcblxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZSggW1xuICAgIHdpdGhTZWxlY3QoICggc2VsZWN0LCBvd25Qcm9wcyApID0+IHtcbiAgICAgICAgY29uc3QgeyBnZXRNZWRpYSB9ID0gc2VsZWN0KCAnY29yZScgKTtcbiAgICAgICAgY29uc3QgeyBpZCB9ID0gb3duUHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBpZCA/IGdldE1lZGlhKCBpZCApIDogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9ICksXG5dICkoIEdhbGxlcnlJbWFnZSApO1xuIiwiLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoL3BpY2snO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBmaW5kSW5kZXggZnJvbSAnbG9kYXNoL2ZpbmRJbmRleCc7XG5cbi8vIFNldCBkaW0gcmF0aW8uXG5leHBvcnQgZnVuY3Rpb24gb3ZlcmxheVRvQ2xhc3MoIHJhdGlvICkge1xuICAgIHJldHVybiAoIHJhdGlvID09PSAwIHx8IHJhdGlvID09PSA1MCApID9cbiAgICAgICAgbnVsbCA6XG4gICAgICAgICdoYXMtYmFja2dyb3VuZC1vdmVybGF5LScgKyAoIDEwICogTWF0aC5yb3VuZCggcmF0aW8gLyAxMCApICk7XG59XG5cbi8vIFBpY2sgaW1hZ2UgbWVkaWEgYXR0cmlidXRlcy5cbmV4cG9ydCBjb25zdCBwaWNrUmVsZXZhbnRNZWRpYUZpbGVzID0gKCBpbWFnZSwgaW1hZ2VzICkgPT4ge1xuICAgIGNvbnN0IGltYWdlUHJvcHMgPSBwaWNrKCBpbWFnZSwgWyAnYWx0JywgJ2lkJywgJ2xpbmsnLCAnY2FwdGlvbicsICdpbWdMaW5rJywnc2l6ZXMnIF0gKTtcbiAgICBpbWFnZVByb3BzLnVybCA9IGdldCggaW1hZ2UsIFsgJ3NpemVzJywgJ2xhcmdlJywgJ3VybCcgXSApIHx8IGdldCggaW1hZ2UsIFsgJ21lZGlhX2RldGFpbHMnLCAnc2l6ZXMnLCAnbGFyZ2UnLCAnc291cmNlX3VybCcgXSApIHx8IGltYWdlLnVybDtcbiAgICBjb25zdCBpbWdLZXkgPSBmaW5kSW5kZXgoIGltYWdlcywgZnVuY3Rpb24oIGltZyApIHtcbiAgICAgICAgcmV0dXJuIGltZy51cmwgPT09IGltYWdlUHJvcHMudXJsO1xuICAgIH0gKTtcbiAgICBpbWFnZVByb3BzLmltZ0xpbmsgPSBpbWdLZXkgPj0gMCA/IGltYWdlc1sgaW1nS2V5IF0uaW1nTGluayA6ICcnO1xuICAgIHJldHVybiBpbWFnZVByb3BzO1xufTtcblxuLy8gRGVmaW5lIGFjY2VwdGVkIG1lZGlhIGZvciBnYWxsZXJ5IGJsb2Nrcy5cbmV4cG9ydCBjb25zdCBBTExPV0VEX0dBTExFUllfTUVESUFfVFlQRVMgPSBbICdpbWFnZScgXTsiLCIvKipcbiAqIEV4dGVybmFsIERlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0ICogYXMgaGVscGVyIGZyb20gJy4vLi4vLi4vdXRpbHMvaGVscGVyL21lZGlhLWhlbHBlcic7XG5cbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5jb25zdCB7IF9fLCBzcHJpbnRmIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IE1lZGlhUGxhY2Vob2xkZXIsIEJsb2NrSWNvbiB9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNsYXNzIEdhbGxlcnlQbGFjZWhvbGRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdEltYWdlcyA9IHRoaXMub25TZWxlY3RJbWFnZXMuYmluZCggdGhpcyApO1xuICAgIH1cblxuICAgIG9uU2VsZWN0SW1hZ2VzKCBpbWFnZXMgKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcygge1xuICAgICAgICAgICAgaW1hZ2VzOiBpbWFnZXMubWFwKCAoIGltYWdlICkgPT4gaGVscGVyLnBpY2tSZWxldmFudE1lZGlhRmlsZXMoIGltYWdlICkgKSxcbiAgICAgICAgfSApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGd1dHRlcixcbiAgICAgICAgICAgIGd1dHRlck1vYmlsZSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICBtYXJnaW5MZWZ0LFxuICAgICAgICAgICAgbWFyZ2luUmlnaHQsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBub3RpY2VPcGVyYXRpb25zLFxuICAgICAgICAgICAgbm90aWNlVUksXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgfSA9IGF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3QgaGFzSW1hZ2VzID0gISEgaW1hZ2VzLmxlbmd0aDtcblxuICAgICAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICdibG9ja3NwYXJlLWdhbGxlcnktLWZpZ3VyZScgKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyBjbGFzc2VzIH0+XG4gICAgICAgICAgICAgICAgPE1lZGlhUGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgYWRkVG9HYWxsZXJ5PXsgaGFzSW1hZ2VzIH1cbiAgICAgICAgICAgICAgICAgICAgaXNBcHBlbmRlcj17IGhhc0ltYWdlcyB9XG4gICAgICAgICAgICAgICAgICAgIGRyb3Bab25lVUlPbmx5PXsgaGFzSW1hZ2VzICYmICEgaXNTZWxlY3RlZCB9XG4gICAgICAgICAgICAgICAgICAgIGljb249eyAhIGhhc0ltYWdlcyAmJiA8QmxvY2tJY29uIGljb249eyB0aGlzLnByb3BzLmljb24gfSAvPiB9XG4gICAgICAgICAgICAgICAgICAgIGxhYmVscz17IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAhIGhhc0ltYWdlcyAmJiBzcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRyYW5zbGF0b3JzOiAlczogVHlwZSBvZiBnYWxsZXJ5ICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX18oICclcyBHYWxsZXJ5JywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uczogISBoYXNJbWFnZXMgJiYgX18oICdVcGxvYWQgYW4gaW1hZ2UgZmlsZSwgcGljayBvbmUgZnJvbSB5b3VyIG1lZGlhIGxpYnJhcnksIG9yIGFkZCBvbmUgd2l0aCBhIFVSTC4nLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsgdGhpcy5vblNlbGVjdEltYWdlcyB9XG4gICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICAgICAgICAgICAgICBhbGxvd2VkVHlwZXM9eyBoZWxwZXIuQUxMT1dFRF9HQUxMRVJZX01FRElBX1RZUEVTIH1cbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBoYXNJbWFnZXMgPyBpbWFnZXMgOiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yPXsgbm90aWNlT3BlcmF0aW9ucy5jcmVhdGVFcnJvck5vdGljZSB9XG4gICAgICAgICAgICAgICAgICAgIG5vdGljZXM9eyBoYXNJbWFnZXMgPyB1bmRlZmluZWQgOiBub3RpY2VVSSB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR2FsbGVyeVBsYWNlaG9sZGVyO1xuIiwiLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgbWVkaWFVcGxvYWQgfSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgeyBEcm9wWm9uZSB9ID0gd3AuY29tcG9uZW50cztcblxuXG5pbXBvcnQgKiBhcyBoZWxwZXIgZnJvbSAnLi8uLi9oZWxwZXIvbWVkaWEtaGVscGVyJztcblxuY2xhc3MgR2FsbGVyeURyb3Bab25lIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuXG4gICAgICAgIHRoaXMuYWRkTWVkaWFGaWxlcyA9IHRoaXMuYWRkTWVkaWFGaWxlcy5iaW5kKCB0aGlzICk7XG4gICAgfVxuXG4gICAgYWRkTWVkaWFGaWxlcyggZmlsZXMgKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbWFnZXMgPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW1hZ2VzIHx8IFtdO1xuICAgICAgICBjb25zdCB7IG5vdGljZU9wZXJhdGlvbnMsIHNldEF0dHJpYnV0ZXMgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIG1lZGlhVXBsb2FkKCB7XG4gICAgICAgICAgICBhbGxvd2VkVHlwZXM6IGhlbHBlci5BTExPV0VEX0dBTExFUllfTUVESUFfVFlQRVMsXG4gICAgICAgICAgICBmaWxlc0xpc3Q6IGZpbGVzLFxuICAgICAgICAgICAgb25GaWxlQ2hhbmdlOiAoIGltYWdlcyApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZXNOb3JtYWxpemVkID0gaW1hZ2VzLm1hcCggKCBpbWFnZSApID0+IGhlbHBlci5waWNrUmVsZXZhbnRNZWRpYUZpbGVzKCBpbWFnZSApICk7XG4gICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcygge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IGN1cnJlbnRJbWFnZXMuY29uY2F0KCBpbWFnZXNOb3JtYWxpemVkICksXG4gICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRXJyb3I6IG5vdGljZU9wZXJhdGlvbnMuY3JlYXRlRXJyb3JOb3RpY2UsXG4gICAgICAgIH0gKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPERyb3Bab25lXG4gICAgICAgICAgICAgICAgICAgIG9uRmlsZXNEcm9wPXsgdGhpcy5hZGRNZWRpYUZpbGVzIH1cbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyB0aGlzLnByb3BzLmxhYmVsIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdhbGxlcnlEcm9wWm9uZTtcbiIsIlxuaW1wb3J0IGZpbHRlciBmcm9tICdsb2Rhc2gvZmlsdGVyJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuaW1wb3J0IFNsaWRlciBmcm9tIFwicmVhY3Qtc2xpY2tcIjtcbi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IEdhbGxlcnlJbWFnZSBmcm9tICcuLi8uLi91dGlscy9nYWxsZXJ5L2dhbGxlcnktaW1hZ2UnO1xuaW1wb3J0IEdhbGxlcnlQbGFjZWhvbGRlciBmcm9tICcuLi8uLi91dGlscy9nYWxsZXJ5L2dhbGxlcnktcGxhY2Vob2xkZXInO1xuaW1wb3J0IEdhbGxlcnlEcm9wWm9uZSBmcm9tICcuLi8uLi91dGlscy9nYWxsZXJ5L2dhbGxlcnktZHJvcHpvbmUnO1xuLy9cbmltcG9ydCAqIGFzIGhlbHBlciBmcm9tIFwiLi4vLi4vdXRpbHMvaGVscGVyL21lZGlhLWhlbHBlclwiO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHsgX18sIHNwcmludGYgfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IHdpdGhOb3RpY2VzLCBSZXNpemFibGVCb3gsVG9vbGJhcixJY29uQnV0dG9uIH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3Qge1xuICAgIEJsb2NrQ29udHJvbHMsXG4gICAgTWVkaWFVcGxvYWQsXG4gICAgTWVkaWFVcGxvYWRDaGVjayxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgR2FsbGVyeUNhcm91c2VsRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcblxuICAgICAgICB0aGlzLm9uU2VsZWN0SW1hZ2UgPSB0aGlzLm9uU2VsZWN0SW1hZ2UuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uUmVtb3ZlSW1hZ2UgPSB0aGlzLm9uUmVtb3ZlSW1hZ2UuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uTW92ZUZvcndhcmQgPSB0aGlzLm9uTW92ZUZvcndhcmQuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uTW92ZUJhY2t3YXJkID0gdGhpcy5vbk1vdmVCYWNrd2FyZC5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VBdHRyaWJ1dGVzID0gdGhpcy5zZXRJbWFnZUF0dHJpYnV0ZXMuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uSXRlbUNsaWNrID0gdGhpcy5vbkl0ZW1DbGljay5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMub25FZGl0U2VsZWN0SW1hZ2VzID0gdGhpcy5vbkVkaXRTZWxlY3RJbWFnZXMuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZTogbnVsbCxcbiAgICAgICAgICAgIGNhcHRpb25Gb2N1c2VkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgLy8gVGhpcyBibG9jayBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcy5cbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICBsaWdodGJveDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbGlnaHRib3hTdHlsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hhZG93OiB1bmRlZmluZWQsXG4gICAgICAgIH0gKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUoIHByZXZQcm9wcyApIHtcbiAgICAgICAgLy8gRGVzZWxlY3QgaW1hZ2VzIHdoZW4gZGVzZWxlY3RpbmcgdGhlIGJsb2NrLlxuICAgICAgICBpZiAoICEgdGhpcy5wcm9wcy5pc1NlbGVjdGVkICYmIHByZXZQcm9wcy5pc1NlbGVjdGVkICkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2U6IG51bGwsXG4gICAgICAgICAgICAgICAgY2FwdGlvblNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjYXB0aW9uRm9jdXNlZDogZmFsc2UsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoICEgdGhpcy5wcm9wcy5pc1NlbGVjdGVkICYmIHByZXZQcm9wcy5pc1NlbGVjdGVkICYmIHRoaXMuc3RhdGUuY2FwdGlvbkZvY3VzZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7XG4gICAgICAgICAgICAgICAgY2FwdGlvbkZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZ3V0dGVyIDw9IDAgKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgICAgICByYWRpdXM6IDAsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMucHJvcHMuYXR0cmlidXRlcy5ncmlkU2l6ZSA9PT0gJ3hscmcnICYmIHByZXZQcm9wcy5hdHRyaWJ1dGVzLmFsaWduID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgICAgICBndXR0ZXI6IDAsXG4gICAgICAgICAgICAgICAgZ3V0dGVyTW9iaWxlOiAwLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RJbWFnZSggaW5kZXggKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuc3RhdGUuc2VsZWN0ZWRJbWFnZSAhPT0gaW5kZXggKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgY2FwdGlvbkZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbk1vdmUoIG9sZEluZGV4LCBuZXdJbmRleCApIHtcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gWyAuLi50aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW1hZ2VzIF07XG4gICAgICAgIGltYWdlcy5zcGxpY2UoIG5ld0luZGV4LCAxLCB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW1hZ2VzWyBvbGRJbmRleCBdICk7XG4gICAgICAgIGltYWdlcy5zcGxpY2UoIG9sZEluZGV4LCAxLCB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW1hZ2VzWyBuZXdJbmRleCBdICk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoIHsgc2VsZWN0ZWRJbWFnZTogbmV3SW5kZXggfSApO1xuICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHsgaW1hZ2VzIH0gKTtcbiAgICB9XG5cbiAgICBvbk1vdmVGb3J3YXJkKCBvbGRJbmRleCApIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmICggb2xkSW5kZXggPT09IHRoaXMucHJvcHMuYXR0cmlidXRlcy5pbWFnZXMubGVuZ3RoIC0gMSApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uTW92ZSggb2xkSW5kZXgsIG9sZEluZGV4ICsgMSApO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIG9uTW92ZUJhY2t3YXJkKCBvbGRJbmRleCApIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmICggb2xkSW5kZXggPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbk1vdmUoIG9sZEluZGV4LCBvbGRJbmRleCAtIDEgKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvblJlbW92ZUltYWdlKCBpbmRleCApIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlcyA9IGZpbHRlciggdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcywgKCBfaW1nLCBpICkgPT4gaW5kZXggIT09IGkgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHsgc2VsZWN0ZWRJbWFnZTogbnVsbCB9ICk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2V0SW1hZ2VBdHRyaWJ1dGVzKCBpbmRleCwgYXR0cmlidXRlcyApIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7IGltYWdlcyB9LCBzZXRBdHRyaWJ1dGVzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoICEgaW1hZ2VzWyBpbmRleCBdICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggMCwgaW5kZXggKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmltYWdlc1sgaW5kZXggXSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggaW5kZXggKyAxICksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9ICk7XG4gICAgfVxuXG5cbiAgICBvbkl0ZW1DbGljaygpIHtcbiAgICAgICAgaWYgKCAhIHRoaXMucHJvcHMuaXNTZWxlY3RlZCApIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25TZWxlY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggdGhpcy5zdGF0ZS5jYXB0aW9uRm9jdXNlZCApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uRm9jdXNlZDogZmFsc2UsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkVkaXRTZWxlY3RJbWFnZXMoIGltYWdlcyApIHtcblxuICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgIGltYWdlczogaW1hZ2VzLm1hcCggKCBpbWFnZSApID0+IGhlbHBlci5waWNrUmVsZXZhbnRNZWRpYUZpbGVzKCBpbWFnZSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcyApICksXG4gICAgICAgIH0gKTtcblxuICAgIH1cblxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICAgICAgbnVtYmVyb2ZTbGlkZSxcbiAgICAgICAgICAgICAgICBjYXJvdXNlbFNwZWVkLFxuICAgICAgICAgICAgICAgIHNob3dzbGlkZXJOZXh0UHJldixcbiAgICAgICAgICAgICAgICBjYXJvdXNlbE5leHRJY29uLFxuICAgICAgICAgICAgICAgIHNob3dEb3RzLFxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Db2xvcixcbiAgICAgICAgICAgICAgICBndXR0ZXJTcGFjZSxcbiAgICAgICAgICAgICAgICBjb2xvckZpbHRlcixcbiAgICAgICAgICAgICAgICBzaG93T3JpZ2luYWxPbkhvdmVyLFxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb25TaXplLFxuICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9QbGF5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIG5vdGljZVVJLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCBoYXNJbWFnZXMgPSAhISBpbWFnZXMubGVuZ3RoO1xuXG4gICAgICAgIC8vIEFuIGFkZGl0aW9uYWwgZHJvcHpvbmUgdG8gd3JhcCB0aGUgZW50aXJlIGdhbGxlcnkgaW4uXG4gICAgICAgIGNvbnN0IGRyb3Bab25lID0gKFxuICAgICAgICAgICAgPEdhbGxlcnlEcm9wWm9uZVxuICAgICAgICAgICAgICAgIHsgLi4udGhpcy5wcm9wcyB9XG4gICAgICAgICAgICAvPlxuICAgICAgICApO1xuXG5cbiAgICAgICAgaWYgKCAhIGhhc0ltYWdlcyApIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEdhbGxlcnlQbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICB7IC4uLnRoaXMucHJvcHMgfVxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnQ2Fyb3VzZWwnLCAnYmxvY2tzcGFyZScgKSB9XG5cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuZXh0YXJyb3cgPSAnZmFzIGZhLWFuZ2xlLXJpZ2h0JztcbiAgICAgICAgdmFyIHByZXZhcnJvdyA9ICdmYXMgZmEtYW5nbGUtbGVmdCc7XG4gICAgICAgIGlmIChjYXJvdXNlbE5leHRJY29uID09PSAnZmFzIGZhLWFuZ2xlLXJpZ2h0Jykge1xuICAgICAgICAgICAgbmV4dGFycm93ID0gPEJzTmV4dEFycm93MS8+O1xuICAgICAgICAgICAgcHJldmFycm93ID0gPEJzUHJldkFycm93MS8+O1xuICAgICAgICB9IGVsc2UgaWYgKGNhcm91c2VsTmV4dEljb24gPT09ICdmYXMgZmEtY2hldnJvbi1jaXJjbGUtcmlnaHQnKSB7XG4gICAgICAgICAgICBuZXh0YXJyb3cgPSA8QnNOZXh0QXJyb3cyLz47XG4gICAgICAgICAgICBwcmV2YXJyb3cgPSA8QnNQcmV2QXJyb3cyLz5cbiAgICAgICAgfSBlbHNlIGlmIChjYXJvdXNlbE5leHRJY29uID09PSAnZmFzIGZhLWNhcmV0LXJpZ2h0Jykge1xuICAgICAgICAgICAgbmV4dGFycm93ID0gPEJzTmV4dEFycm93My8+O1xuICAgICAgICAgICAgcHJldmFycm93ID0gPEJzUHJldkFycm93My8+O1xuICAgICAgICB9IGVsc2UgaWYgKGNhcm91c2VsTmV4dEljb24gPT09ICdmYXMgZmEtY2hldnJvbi1yaWdodCcpIHtcbiAgICAgICAgICAgIG5leHRhcnJvdyA9IDxCc05leHRBcnJvdzQvPjtcbiAgICAgICAgICAgIHByZXZhcnJvdyA9IDxCc1ByZXZBcnJvdzQvPjtcbiAgICAgICAgfSBlbHNlIGlmIChjYXJvdXNlbE5leHRJY29uID09PSAnZmFzIGZhLWFycm93LWNpcmNsZS1yaWdodCcpIHtcbiAgICAgICAgICAgIG5leHRhcnJvdyA9IDxCc05leHRBcnJvdzUvPjtcbiAgICAgICAgICAgIHByZXZhcnJvdyA9IDxCc1ByZXZBcnJvdzUvPjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRhcnJvdyA9ICdmYXMgZmEtYW5nbGUtcmlnaHQnO1xuICAgICAgICAgICAgcHJldmFycm93ID0gJ2ZhcyBmYS1hbmdsZS1sZWZ0JztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0ge1xuICAgICAgICAgICAgZG90czpzaG93RG90cyxcbiAgICAgICAgICAgIGxvb3A6dHJ1ZSxcbiAgICAgICAgICAgIHNwZWVkOmNhcm91c2VsU3BlZWQsXG4gICAgICAgICAgICBhcnJvd3M6c2hvd3NsaWRlck5leHRQcmV2LFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBudW1iZXJvZlNsaWRlLFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0YXJyb3csXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZhcnJvd1xuXG4gICAgICAgIH07XG5cblxuXG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzPlxuICAgICAgICAgICAgICAgICAgICB7IGhhc0ltYWdlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8RnJhZ21lbnQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lZGlhVXBsb2FkQ2hlY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVkaWFVcGxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17IHRoaXMub25FZGl0U2VsZWN0SW1hZ2VzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkVHlwZXM9eyBoZWxwZXIuQUxMT1dFRF9HQUxMRVJZX01FRElBX1RZUEVTIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhbGxlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGltYWdlcy5tYXAoICggaW1nICkgPT4gaW1nLmlkICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17ICggeyBvcGVuIH0gKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjb21wb25lbnRzLXRvb2xiYXJfX2NvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0VkaXQgZ2FsbGVyeScsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJlZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyBvcGVuIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWVkaWFVcGxvYWRDaGVjaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICAgICAgeyBkcm9wWm9uZSB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtY2Fyb3VzZWwtd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnaGFzLWd1dHRlci1zcGFjZS0nK2d1dHRlclNwYWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAoY29sb3JGaWx0ZXIhPT0nYmxvY2tzcGFyZS1vcmlnaW5hbCcgJiYgc2hvd09yaWdpbmFsT25Ib3Zlcik/J2hhcy1ob3Zlci1lZmZlY3QnOicnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvblNpemVcbiAgICAgICAgICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGBibG9ja3NwYXJlLWNhcm91c2VsLWl0ZW1zYCB9IHN0eWxlPXt7Y29sb3I6IG5hdmlnYXRpb25Db2xvcn19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTbGlkZXIgey4uLnNldHRpbmdzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpbWFnZXMubWFwKCAoIGltZywgaW5kZXggKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcmlhTGFiZWwgPSBzcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRyYW5zbGF0b3JzOiAlMSRkIGlzIHRoZSBvcmRlciBudW1iZXIgb2YgdGhlIGltYWdlLCAlMiRkIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18oICdpbWFnZSAlMSRkIG9mICUyJGQgaW4gZ2FsbGVyeScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5kZXggKyAxICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWdhbGxlcnktaXRlbVwiIGtleT17IGltZy5pZCB8fCBpbWcudXJsIH0gb25DbGljaz17IHRoaXMub25JdGVtQ2xpY2sgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdhbGxlcnlJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXsgaW1nLnVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9eyBpbWcuYWx0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXsgaW1nLmlkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXsgaXNTZWxlY3RlZCAmJiB0aGlzLnN0YXRlLnNlbGVjdGVkSW1hZ2UgPT09IGluZGV4IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlPXsgdGhpcy5vblJlbW92ZUltYWdlKCBpbmRleCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsgdGhpcy5vblNlbGVjdEltYWdlKCBpbmRleCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXM9eyAoIGF0dHJzICkgPT4gdGhpcy5zZXRJbWFnZUF0dHJpYnV0ZXMoIGluZGV4LCBhdHRycyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb249eyBpbWcuY2FwdGlvbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXsgYXJpYUxhYmVsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzQ2FwdGlvbj17IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW92ZUJhY2t3YXJkPXsgdGhpcy5vbk1vdmVCYWNrd2FyZCggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdmVGb3J3YXJkPXsgdGhpcy5vbk1vdmVGb3J3YXJkKCBpbmRleCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzTW92aW5nPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz17aW1nLnNpemVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdG9yU2l6ZT17YG1lZGl1bWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlzU2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWFkZC1tb3JlLXNsaWRlIGJsb2Nrc3BhcmUtYWRkLW1vcmUtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNZWRpYVVwbG9hZENoZWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVkaWFVcGxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsgdGhpcy5vbkVkaXRTZWxlY3RJbWFnZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZFR5cGVzPXsgaGVscGVyLkFMTE9XRURfR0FMTEVSWV9NRURJQV9UWVBFUyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FsbGVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBpbWFnZXMubWFwKCAoIGltZyApID0+IGltZy5pZCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17ICggeyBvcGVuIH0gKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWZ0LWN0YS1pbnNwZWN0b3ItbWVkaWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0VkaXQgaW1hZ2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGx1cy1hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvcGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge19fKCdBZGQgSW1hZ2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWVkaWFVcGxvYWRDaGVjaz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU2xpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZSggW1xuICAgIHdpdGhOb3RpY2VzLFxuXSApKCBHYWxsZXJ5Q2Fyb3VzZWxFZGl0ICk7XG5cbmZ1bmN0aW9uIEJzUHJldkFycm93MShwcm9wcykge1xuXG4gICAgY29uc3Qge2NsYXNzTmFtZSwgc3R5bGUsIG9uQ2xpY2ssfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnc2xpZGUtcHJldiBzbGljay1hcnJvdyBmYXMgZmEtYW5nbGUtbGVmdCdcbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gQnNOZXh0QXJyb3cxKHByb3BzKSB7XG5cbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBzdHlsZSwgb25DbGlja30gPSBwcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdzbGlkZS1uZXh0IHNsaWNrLWFycm93IGZhcyBmYS1hbmdsZS1yaWdodCdcbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gQnNQcmV2QXJyb3cyKHByb3BzKSB7XG5cbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBzdHlsZSwgb25DbGljayx9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdzbGlkZS1wcmV2IHNsaWNrLWFycm93IGZhcyBmYS1jaGV2cm9uLWNpcmNsZS1sZWZ0J1xuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5mdW5jdGlvbiBCc05leHRBcnJvdzIocHJvcHMpIHtcblxuICAgIGNvbnN0IHtjbGFzc05hbWUsIHN0eWxlLCBvbkNsaWNrfSA9IHByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ3NsaWRlLW5leHQgc2xpY2stYXJyb3cgZmFzIGZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0J1xuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5mdW5jdGlvbiBCc1ByZXZBcnJvdzMocHJvcHMpIHtcblxuICAgIGNvbnN0IHtjbGFzc05hbWUsIHN0eWxlLCBvbkNsaWNrLH0gPSBwcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ3NsaWRlLXByZXYgc2xpY2stYXJyb3cgZmFzIGZhLWNhcmV0LWxlZnQnXG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmZ1bmN0aW9uIEJzTmV4dEFycm93Myhwcm9wcykge1xuXG4gICAgY29uc3Qge2NsYXNzTmFtZSwgc3R5bGUsIG9uQ2xpY2t9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdzbGlkZS1uZXh0IHNsaWNrLWFycm93IGZhcyBmYS1jYXJldC1yaWdodCdcbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gQnNQcmV2QXJyb3c0KHByb3BzKSB7XG5cbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBzdHlsZSwgb25DbGljayx9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdzbGlkZS1wcmV2IHNsaWNrLWFycm93IGZhcyBmYS1jaGV2cm9uLWxlZnQnXG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmZ1bmN0aW9uIEJzTmV4dEFycm93NChwcm9wcykge1xuICAgIGNvbnN0IHtjbGFzc05hbWUsIHN0eWxlLCBvbkNsaWNrfSA9IHByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ3NsaWRlLW5leHQgc2xpY2stYXJyb3cgZmFzIGZhLWNoZXZyb24tcmlnaHQnXG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmZ1bmN0aW9uIEJzUHJldkFycm93NShwcm9wcykge1xuXG4gICAgY29uc3Qge2NsYXNzTmFtZSwgc3R5bGUsIG9uQ2xpY2ssfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnc2xpZGUtcHJldiBzbGljay1hcnJvdyBmYXMgZmEtYXJyb3ctY2lyY2xlLWxlZnQnXG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmZ1bmN0aW9uIEJzTmV4dEFycm93NShwcm9wcykge1xuICAgIGNvbnN0IHtjbGFzc05hbWUsIHN0eWxlLCBvbkNsaWNrfSA9IHByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ3NsaWRlLW5leHQgc2xpY2stYXJyb3cgZmFzIGZhLWFycm93LWNpcmNsZS1yaWdodCdcbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuIiwiY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50e1xuXG4gICAgcmVuZGVyKCl7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgaW1hZ2VzLFxuICAgICAgICAgICAgICAgIG51bWJlcm9mU2xpZGUsXG4gICAgICAgICAgICAgICAgY2Fyb3VzZWxTcGVlZCxcbiAgICAgICAgICAgICAgICBzaG93c2xpZGVyTmV4dFByZXYsXG4gICAgICAgICAgICAgICAgY2Fyb3VzZWxOZXh0SWNvbixcbiAgICAgICAgICAgICAgICBzaG93RG90cyxcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uQ29sb3IsXG4gICAgICAgICAgICAgICAgZ3V0dGVyU3BhY2UsXG4gICAgICAgICAgICAgICAgY29sb3JGaWx0ZXIsXG4gICAgICAgICAgICAgICAgc2hvd09yaWdpbmFsT25Ib3ZlcixcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uU2l6ZSxcbiAgICAgICAgICAgICAgICBlbmFibGVBdXRvUGxheVxuICAgICAgICAgICAgfVxuICAgICAgICB9PSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGxldCBuZXh0ID0gY2Fyb3VzZWxOZXh0SWNvbjtcbiAgICAgICAgbGV0IHByZXZzdHIgPSBjYXJvdXNlbE5leHRJY29uLnJlcGxhY2UoXCItcmlnaHRcIiwgXCItbGVmdFwiKTtcblxuXG5cbiAgICAgICAgbGV0ICBjYXJvdXNlbF9hcmdzID0ge1xuICAgICAgICAgICAgbG9vcDp0cnVlLFxuICAgICAgICAgICAgYXV0b3BsYXk6IGVuYWJsZUF1dG9QbGF5LFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBudW1iZXJvZlNsaWRlLFxuICAgICAgICAgICAgc3BlZWQ6IGNhcm91c2VsU3BlZWQsXG4gICAgICAgICAgICBhcnJvd3M6IHNob3dzbGlkZXJOZXh0UHJldixcbiAgICAgICAgICAgIGRvdHM6IHNob3dEb3RzLFxuXG4gICAgICAgIH1cblxuICAgICAgICB2YXIganNvbkRhdGEgPSBKU09OLnN0cmluZ2lmeShjYXJvdXNlbF9hcmdzKTtcbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtY2Fyb3VzZWwtd3JhcCcsXG4gICAgICAgICAgICAgICAgJ2hhcy1ndXR0ZXItc3BhY2UtJytndXR0ZXJTcGFjZSxcbiAgICAgICAgICAgICAgICBjb2xvckZpbHRlcixcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uU2l6ZSxcbiAgICAgICAgICAgICAgICAoY29sb3JGaWx0ZXIhPT0nYmxvY2tzcGFyZS1vcmlnaW5hbCcgJiYgc2hvd09yaWdpbmFsT25Ib3Zlcik/J2hhcy1ob3Zlci1lZmZlY3QnOicnXG4gICAgICAgICAgICApfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGBibG9ja3NwYXJlLWNhcm91c2VsLWl0ZW1zYCB9IGRhdGEtbmV4dD17bmV4dH0gZGF0YS1wcmV2PXtwcmV2c3RyfSBkYXRhLXNsaWNrPXtqc29uRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Y29sb3I6IG5hdmlnYXRpb25Db2xvcn19PlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXMubWFwKChpbWcsaW5kZXgpPT57XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1ndXJsID0nJztcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiBpbWcuc2l6ZXMubWVkaXVtID09PSBcInVuZGVmaW5lZFwiICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1ndXJsID0gaW1nLnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ3VybCA9IGltZy5zaXplcy5tZWRpdW0udXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1nYWxsZXJ5LWZpZ3VyZSBgfT4gPGltZyBzcmM9e2ltZ3VybH0vPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuXG59IiwiaW1wb3J0ICcuL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgR2FsbGVyeUNhcm91c2VsRWRpdCBmcm9tICcuL2NvbXBvbmVudHMvZWRpdCc7XG5pbXBvcnQgU2F2ZSBmcm9tICcuL2NvbXBvbmVudHMvc2F2ZSc7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmNvbnN0IHByZXZfaW1nID0gYmxvY2tzcGFyZV9nbG9iYWxzO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyBuYW1lLCBjYXRlZ29yeSwgYXR0cmlidXRlcyB9ID0gbWV0YWRhdGE7XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICAvKiB0cmFuc2xhdG9yczogYmxvY2sgbmFtZSAqL1xuICAgIHRpdGxlOiBfXygnQlMgSW1hZ2UgQ2Fyb3VzZWwnLCAnYmxvY2tzcGFyZScpLFxuICAgIC8qIHRyYW5zbGF0b3JzOiBibG9jayBkZXNjcmlwdGlvbiAqL1xuICAgIGRlc2NyaXB0aW9uOiBfXygnQWRkIGxvZ29zLCBiYWRnZXMgYW5kIGltYWdlcyB0byBidWlsZCBjYXJvdXNlbC4nLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLmltYWdlY2Fyb3VzZWwsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnaW1hZ2UnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY2Fyb3VzZWwnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2xpZGVyJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2dhbGxlcnknLCAnYmxvY2tzcGFyZScpLFxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyd3aWRlJywgJ2Z1bGwnLCdjZW50ZXInXSxcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgYWxpZ246ICdmdWxsJyxcbiAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmV2X2ltZy5pbWcsXG5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmV2X2ltZy5pbWcsXG5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmV2X2ltZy5pbWcsXG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc2hvd3NsaWRlck5leHRQcmV2OnRydWUsXG4gICAgICAgICAgICBzaG93RG90czp0cnVlXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGVkaXQ6R2FsbGVyeUNhcm91c2VsRWRpdCxcblxuICAgIHNhdmU6U2F2ZVxufSk7XG5cbiIsImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpbmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGluZGljYXRvcjogMCxcbiAgICAgICAgICAgIGlzQWN0aXZlOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRvcjogdGhpcy5wcm9wcy5wZXJjZW50LFxuICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgMTAwMFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzQWN0aXZlICYmIHRoaXMucHJvcHMucGVyY2VudCAhPT0gbmV4dFByb3BzLnBlcmNlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpbmRpY2F0b3I6IG5leHRQcm9wcy5wZXJjZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGluZGljYXRvciwgaXNBY3RpdmUgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgYmFyQ29sb3IsIGJhclRoaWNrbmVzcywgcGVyY2VudCxiYWNrZ3JvdW5kQ29sb3IsIHBlcmNlbnRhZ2VUZXh0Q29sb3IgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHByb2dyZXNzQmFyUGF0aCA9IGBNICR7YmFyVGhpY2tuZXNzIC8gMn0sJHtiYXJUaGlja25lc3MgL1xuICAgICAgICAyfSBMICR7MTAwIC0gYmFyVGhpY2tuZXNzIC8gMn0sJHtiYXJUaGlja25lc3MgLyAyfWA7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmVfcHJvZ3Jlc3MtYmFyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZV9wcm9ncmVzcy1iYXItbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBpc0FjdGl2ZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6cGVyY2VudGFnZVRleHRDb2xvcj9wZXJjZW50YWdlVGV4dENvbG9yOlwiIzhiMjQ5Y1wiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3BlcmNlbnR9JVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZV9wcm9ncmVzcy1iYXItbGluZVwiXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9e2AwIDAgMTAwICR7YmFyVGhpY2tuZXNzfWB9XG4gICAgICAgICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlX3Byb2dyZXNzLWJhci1saW5lLXRyYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9e3Byb2dyZXNzQmFyUGF0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXtiYXJUaGlja25lc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTpiYWNrZ3JvdW5kQ29sb3I/YmFja2dyb3VuZENvbG9yOlwiIzhiMjQ5Y1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZV9wcm9ncmVzcy1iYXItbGluZS1wYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9e3Byb2dyZXNzQmFyUGF0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT17YmFyQ29sb3I/YmFyQ29sb3I6XCIjMkRCN0Y1XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17YmFyVGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VEYXNob2Zmc2V0OiBgJHsxMDAgLSBpbmRpY2F0b3J9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59IiwiXG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBQYW5lbEJvZHksXG4gICAgU2VsZWN0Q29udHJvbCxcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIHBlcmNlbnRhZ2VUZXh0Q29sb3IsXG4gICAgICAgICAgICB0ZXh0U2l6ZSxcbiAgICAgICAgICAgIGJhckNvbG9yLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgYmFyVGhpY2tuZXNzXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3Qge3NldEF0dHJpYnV0ZXN9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFyQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYXJDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrZ3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlVGV4dENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7dGV4dENvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZVBlcmNlbnRhZ2VUZXh0Q29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtwZXJjZW50YWdlVGV4dENvbG9yOiB2YWx1ZX0pO1xuXG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keSB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJyl9IGluaXRpYWxPcGVuPXtmYWxzZX0+XG4gICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVGl0bGUgU2l6ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGV4dFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3RleHRTaXplOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heD17MzJ9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwPXsyfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJhckNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQmFyQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0JhciBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwZXJjZW50YWdlVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlUGVyY2VudGFnZVRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnUGVyY2VudGFnZSBUZXh0cyBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF19PlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IExpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9jb21wb25lbnRzL2luc3BlY3Rvcic7XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge0Jsb2NrQ29udHJvbHMsUmljaFRleHQsQWxpZ25tZW50VG9vbGJhcn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHtcbiAgICBUb29sYmFyLFxuICAgIFJhbmdlQ29udHJvbCxcblxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50e1xuXG4gICAgcmVuZGVyKCl7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dFNpemUsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgICBiYXJDb2xvcixcbiAgICAgICAgICAgICAgICBiYXJUaGlja25lc3MsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG4gICAgICAgIH09dGhpcy5wcm9wcztcblxuXG4gICAgICAgIHJldHVybihcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8QmxvY2tDb250cm9scz5cbiAgICAgICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWN0aW9uQWxpZ25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe3NlY3Rpb25BbGlnbm1lbnQ6IHZhbHVlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8VG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlX3Byb2dyZXNzX2Jhcl92YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BlcmNlbnRhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHNldEF0dHJpYnV0ZXMoeyBwZXJjZW50YWdlOiB2YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXI+XG4gICAgICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPlxuICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpdGxlfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6dGV4dENvbG9yP3RleHRDb2xvcjpcIiM0MDQwNDBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOnRleHRTaXplKydweCdcbiAgICAgICAgICAgICAgICAgICAgfX1cblxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgIDxMaW5lXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ9e3BlcmNlbnRhZ2V9XG4gICAgICAgICAgICAgICAgICAgIGJhckNvbG9yPXtiYXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgYmFyVGhpY2tuZXNzPXtiYXJUaGlja25lc3N9XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcj17YmFja2dyb3VuZENvbG9yfVxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcblxuICAgIH1cbn1cblxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5jb25zdCB7Q29tcG9uZW50fSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7UmljaFRleHR9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpe1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYmxvY2tJRCxcbiAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0U2l6ZSxcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZVRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBwZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIGJhckNvbG9yLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBiYXJUaGlja25lc3MsXG4gICAgICAgICAgICAgICAgc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgbGluZVN0eWxlID17XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6YmFyQ29sb3I/YmFyQ29sb3I6XCIjMkRCN0Y1XCIsXG5cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4oXG5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlX3Byb2dyZXNzLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpdGxlfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOnNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjp0ZXh0Q29sb3I/dGV4dENvbG9yOlwiIzQwNDA0MFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6dGV4dFNpemUrXCJweFwiXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc2tpbGxiYXItaXRlbVwiIGRhdGEtcGVyY2VudD17cGVyY2VudGFnZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmVfcHJvZ3Jlc3MtYmFyLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnBlcmNlbnRhZ2VUZXh0Q29sb3I/cGVyY2VudGFnZVRleHRDb2xvcjpcIiM4YjI0OWNcIixcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPntwZXJjZW50YWdlfSU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1za2lsbGJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFydGhpY2tuZXNzLScrYmFyVGhpY2tuZXNzXG4gICAgICAgICAgICAgICAgICAgICl9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6YmFja2dyb3VuZENvbG9yP2JhY2tncm91bmRDb2xvcjpcIiM4YjI0OWNcIlxuICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1za2lsbGJhci1iYXJcIiBzdHlsZT17bGluZVN0eWxlfT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgIClcbiAgICB9XG59IiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9zYXZlJ1xuLy8gSW50ZXJuYXRpb25hbGl6YXRpb25cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5cblxuY29uc3Qge25hbWUsIGF0dHJpYnV0ZXMsIGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5cbmV4cG9ydCBjb25zdCBwcm9ncmVzc0l0ZW1TZXR0aW5ncyA9IHtcbiAgICB0aXRsZTogX18oJ3Byb2dyZXNzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0Rpc3BsYXkgY3JlYXRpdmUgY29sbGFwc2libGUgdGV4dHMgQWNjb3JkaW9uLicsICdibG9ja3NwYXJlJyksXG4gICAgcGFyZW50OiBbJ2Jsb2Nrc3BhcmUvbGluZWFycHJvZ3Jlc3NiYXInXSxcbiAgICBpY29uOiAnbGluaycsXG4gICAgY2F0ZWdvcnksXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgaHRtbDogZmFsc2UsXG4gICAgICAgIGluc2VydGVyOiBmYWxzZSxcbiAgICAgICAgcmV1c2FibGU6IGZhbHNlLFxuICAgIH0sXG4gICAgYXR0cmlidXRlcyxcblxuICAgIGVkaXQ6IEVkaXQsXG4gICAgc2F2ZTogU2F2ZVxufTtcblxucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwgcHJvZ3Jlc3NJdGVtU2V0dGluZ3MpOyIsImNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24gfSA9IHdwLmNvbXBvbmVudHM7XG5jb25zdCB7ICBJbm5lckJsb2NrcyB9ID0gd3AuYmxvY2tFZGl0b3I7XG5jb25zdCB7IGNyZWF0ZUJsb2NrIH0gPSB3cC5ibG9ja3M7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IHdpdGhTZWxlY3QsIHdpdGhEaXNwYXRjaCB9ID0gd3AuZGF0YTtcblxuaW1wb3J0IHsgcHJvZ3Jlc3NJdGVtU2V0dGluZ3MgfSBmcm9tICcuL3Byb2dyZXNzYmFyJztcblxuY2xhc3MgTGluZWFyUHJvZ3Jlc3NCbG9jayBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgY29uc3QgeyBzZXRBdHRyaWJ1dGVzLCBjbGllbnRJZCwgYXR0cmlidXRlczogeyB1bmlxdWVJZCB9IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBfY2xpZW50ID0gY2xpZW50SWQuc3Vic3RyKDAsIDYpXG4gICAgICAgIGlmICghdW5pcXVlSWQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh1bmlxdWVJZCAmJiB1bmlxdWVJZCAhPSBfY2xpZW50KSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdW5pcXVlSWQ6IF9jbGllbnQgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRQcm9ncmVzc2Jhckl0ZW0oKSB7XG4gICAgICAgIGxldCBuZXdCbG9ja0F0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQsIGluc2VydEJsb2NrLCBibG9jayB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGJsb2NrLmlubmVyQmxvY2tzICYmIGJsb2NrLmlubmVyQmxvY2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbGFzdEJsb2NrQXR0cmlidXRlcyA9IGJsb2NrLmlubmVyQmxvY2tzW2Jsb2NrLmlubmVyQmxvY2tzLmxlbmd0aCAtIDFdLmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICBjb25zdCBpdGVtTnVtYmVyID0gbGFzdEJsb2NrQXR0cmlidXRlcy5pdGVtTnVtYmVyICsgMTtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlMSA9IHByb2dyZXNzSXRlbVNldHRpbmdzLnRpdGxlO1xuICAgICAgICAgICAgbmV3QmxvY2tBdHRyaWJ1dGVzID0gT2JqZWN0LmFzc2lnbih7fSwge30sIHsgaXRlbU51bWJlciwgdGl0bGUxLCBhY3RpdmU6IGZhbHNlLCBkZWZhdWx0VGV4dDogJycgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdCbG9ja0F0dHJpYnV0ZXMgPSBwcm9ncmVzc0l0ZW1TZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRCbG9jayhjcmVhdGVCbG9jaygnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNraWxsYmFyJywgbmV3QmxvY2tBdHRyaWJ1dGVzKSwgdW5kZWZpbmVkLCBjbGllbnRJZCk7XG4gICAgfVxuXG4gICAgZ2V0UHJvZ3Jlc3NiYXJUZW1wbGF0ZSA9IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBjb25zdCBkZWZhdWx0SXRlbXMgPSBhdHRyaWJ1dGVzLmRlZmF1bHRJdGVtcztcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBkZWZhdWx0SXRlbXM7IGsrKykge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9ICdDcmVhdGUgc3R5bGlzaCBMaW5lYXIgcHJvZ3Jlc3NiYXIuJztcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNraWxsYmFyJywgeyBpdGVtTnVtYmVyOiBrLCBkZWZhdWx0VGV4dDogY29udGVudCB9XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBpc1NlbGVjdGVkQmxvY2tJblJvb3QsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgYXR0cmlidXRlczogeyB1bmlxdWVJZCwgfSB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1ibG9jay1wcm9ncmVzcy1iYXIgYmxvY2tzcGFyZS1ibG9jay0ke3VuaXF1ZUlkfWB9PlxuICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXt0aGlzLmdldFByb2dyZXNzYmFyVGVtcGxhdGUoYXR0cmlidXRlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkQmxvY2tzPXtbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1za2lsbGJhciddfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudCA+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoU2VsZWN0KChzZWxlY3QsIG93blByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQgfSA9IG93blByb3BzO1xuICAgICAgICBjb25zdCB7IGdldEJsb2NrLCBpc0Jsb2NrU2VsZWN0ZWQsIGhhc1NlbGVjdGVkSW5uZXJCbG9jayB9ID0gc2VsZWN0KCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2s6IGdldEJsb2NrKGNsaWVudElkKSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdDogaXNCbG9ja1NlbGVjdGVkKGNsaWVudElkKSB8fCBoYXNTZWxlY3RlZElubmVyQmxvY2soY2xpZW50SWQsIHRydWUpLFxuICAgICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhEaXNwYXRjaCgoZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnNlcnRCbG9jaywgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzIH0gPSBkaXNwYXRjaCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluc2VydEJsb2NrLFxuICAgICAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzXG4gICAgICAgIH07XG4gICAgfSksXG5dKShMaW5lYXJQcm9ncmVzc0Jsb2NrKVxuIiwiY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IElubmVyQmxvY2tzIH0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgU2F2ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGFuaW1hdGlvbiwgdW5pcXVlSWQsIGl0ZW1Ub2dnbGUsIGludGVyYWN0aW9ufSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgaW50ZXJhY3Rpb25DbGFzcyA9ICdibG9ja3NwYXJlLWJsb2NrLWludGVyYWN0aW9uJztcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGJsb2Nrc3BhcmUtYmxvY2stcHJvZ3Jlc3MtYmFyICR7aW50ZXJhY3Rpb25DbGFzc30gYmxvY2tzcGFyZS1ibG9jay0ke3VuaXF1ZUlkfWA7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGNsYXNzTmFtZSB9PlxuICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBTYXZlOyIsImltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IExpbmVhclByb2dyZXNzQmxvY2sgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBTYXZlIGZyb20gJy4vc2F2ZSc7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zJztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge25hbWUsY2F0ZWdvcnksYXR0cmlidXRlc30gPSBtZXRhZGF0YTtcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIFByb2dyZXNzYmFyJywnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheSBjcmVhdGl2ZSBMaW5lYXIgUHJvZ3Jlc3NiYXIuJywnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246aWNvbnMucHJvZ3Jlc3NCYXIsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygncHJvZ3Jlc3MnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYmFyJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ251bWJlcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdjb3VudGVyJywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgaHRtbDogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogZmFsc2UsXG4gICAgICAgIGFsaWduOiBbJ2NlbnRlcicsICd3aWRlJywgJ2Z1bGwnXSxcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgfSxcbiAgICBlZGl0OkxpbmVhclByb2dyZXNzQmxvY2ssXG4gICAgc2F2ZTpTYXZlXG59KTsiLCJleHBvcnQgZGVmYXVsdCBbXG4gICAgXCJibG9ja3NwYXJlLWxpc3QtY2hlY2tcIixcImJsb2Nrc3BhcmUtbGlzdC1jaGVjay1zcXVhcmVcIixcImJsb2Nrc3BhcmUtbGlzdC1jaGVjay1zcXVhcmUtb3V0bGluZVwiLFwiYmxvY2tzcGFyZS1saXN0LWNoZWNrLWRvdWJsZVwiLFwiYmxvY2tzcGFyZS1saXN0LWNoZWNrLWNpcmNsZVwiLFwiYmxvY2tzcGFyZS1saXN0LWNoZWNrLWNpcmNsZS1vdXRsaW5lXCIsXG4gICAgXCJibG9ja3NwYXJlLWxpc3Qtc3F1YXJlXCIsXCJibG9ja3NwYXJlLWxpc3Qtc3F1YXJlLW91dGxpbmVcIlxuXSIsIlxuY29uc3QgeyBfXyB9ID0gd3AuaTE4blxuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuXG5pbXBvcnQgSWNvbkxpc3REYXRhIGZyb20gJy4uLy4uL2luYy9pY29uLWxpYi9jdXN0b20taWNvbnMnO1xuXG5jbGFzcyBJY29uTGlzdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGlzT3BlbjogZmFsc2UsXG4gICAgICAgICAgICBmaWx0ZXJUZXh0OiAnJyxcbiAgICAgICAgICAgIHNob3dJY29uczogZmFsc2VcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgZGlzYWJsZVRvZ2dsZSwgY29sb3JTZXR0aW5ncywgaWNvbkNvbG9yLCBvbkNvbG9yQ2hhbmdlIH0gPSB0aGlzLnByb3BzXG4gICAgICAgIGNvbnN0IHsgZmlsdGVyVGV4dCB9ID0gdGhpcy5zdGF0ZVxuICAgICAgICB2YXIgZmluYWxEYXRhID0gW107XG4gICAgICAgIGlmIChmaWx0ZXJUZXh0Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIEljb25MaXN0RGF0YS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChuYW1lLmluY2x1ZGVzKGZpbHRlclRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsRGF0YS5wdXNoKG5hbWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsRGF0YSA9IEljb25MaXN0RGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWZpZWxkIGJsb2Nrc3BhcmUtZmllbGQtaWNvbi1saXN0ICR7ZGlzYWJsZVRvZ2dsZSA/ICcnIDogJ2Jsb2Nrc3BhcmUtdG9nZ2xlLWVuYWJsZWQnfWB9PlxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmxhYmVsICYmXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICB7IWRpc2FibGVUb2dnbGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZSBsYWJlbD17dGhpcy5wcm9wcy5sYWJlbH0gY2xhc3NOYW1lPXsnYmxvY2tzcGFyZS1pY29uLWxpc3QtdG9nZ2xlJ30gdmFsdWU9e3RoaXMucHJvcHMudmFsdWUgPyB0cnVlIDogZmFsc2V9IG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMucHJvcHMudmFsdWUgPyAnJyA6ICcgJyl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3RoaXMucHJvcHMubGFiZWx9PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtjb2xvclNldHRpbmdzICYmIDxDb2xvciBsYWJlbD17X18oJyBDb2xvcicpfSB2YWx1ZT17aWNvbkNvbG9yIHx8ICcjY2NjJ30gb25DaGFuZ2U9eyhjb2xvcikgPT4gb25Db2xvckNoYW5nZShjb2xvcil9IC8+fVxuXG4gICAgICAgICAgICAgICAgeyhkaXNhYmxlVG9nZ2xlIHx8IHRoaXMucHJvcHMudmFsdWUgIT0gJycpICYmXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWljb24tbGlzdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPXt0aGlzLnN0YXRlLmZpbHRlclRleHR9IHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgb25DaGFuZ2U9e2UgPT4gdGhpcy5zZXRTdGF0ZSh7IGZpbHRlclRleHQ6IGUudGFyZ2V0LnZhbHVlIH0pfSBhdXRvQ29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaWNvbi1saXN0LWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmluYWxEYXRhLm1hcChuYW1lID0+IHsgcmV0dXJuICg8c3BhbiBjbGFzc05hbWU9e3ZhbHVlID09IG5hbWUgPyAnYmxvY2tzcGFyZS1hY3RpdmUnIDogJyd9IG9uQ2xpY2s9e2UgPT4geyB0aGlzLnByb3BzLm9uQ2hhbmdlKG5hbWUpIH19PjxzcGFuIGNsYXNzTmFtZT17bmFtZX0gLz48L3NwYW4+KSB9KX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBJY29uTGlzdCIsImltcG9ydCBJY29uTGlzdCBmcm9tICcuLi9pY29uLWxpc3QnO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7RnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQlNMaXN0SWNvblNldHRpbmdzKCBwcm9wcyApIHtcblxuICAgIGNvbnN0IHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgb25DaGFuZ2VOYW1lID0gKCkgPT4ge30sXG5cbiAgICAgICAgbGlzdFR5cGUsXG4gICAgICAgIG9uQ2hhbmdlTGlzdFN0eWxlID0oKSA9Pnt9LFxuXG4gICAgICAgIG9yZGVyTGlzdFN0eWxlLFxuICAgICAgICBvbkNoYW5nZU9yZGVyTGlzdFN0eWxlID0gKCkgPT4ge30sXG5cbiAgICAgICAgY29sb3IsXG4gICAgICAgIG9uY2hhbmdlQ29sb3I9ICgpID0+IHt9XG5cblxuICAgIH0gPSBwcm9wcztcblxuXG4gICAgY29uc3QgbGlzdFR5cGVzT3B0aW9ucyA9IFtcbiAgICAgICAge3ZhbHVlOiAndWwnLCBsYWJlbDogX18oJ0xpc3QgV2l0aCBpY29uJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ29sJywgbGFiZWw6IF9fKCdPcmRlcmVkIExpc3QnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAnbm9uZScsIGxhYmVsOiBfXygnTm9uZScsICdibG9ja3NwYXJlJyl9LFxuXG4gICAgXTtcblxuICAgIGNvbnN0IG9yZGVyTGlzdFN0eWxlT3B0aW9ucyA9IFtcbiAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zdHlsZTEnLCBsYWJlbDogX18oJ1N0eWxlMScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXN0eWxlMicsIGxhYmVsOiBfXygnU3R5bGUyJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc3R5bGUzJywgbGFiZWw6IF9fKCdTdHlsZTMnLCAnYmxvY2tzcGFyZScpfSxcblxuICAgIF07XG5cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxGcmFnbWVudD5cblxuXG4gICAgICAgICAgICB7bGlzdFR5cGUgPT0gJ3VsJyAmJlxuICAgICAgICAgICAgPEljb25MaXN0XG4gICAgICAgICAgICAgICAgdmFsdWU9e25hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlTmFtZX0vPlxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W3tcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25jaGFuZ2VDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdJY29uIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICB9XX0+XG4gICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuXG4gICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKVxufSIsImltcG9ydCBCU0xpc3RJY29uU2V0dGluZ3MgZnJvbSAnLi9pY29uLXNldHRpbmdzJztcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIjtcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFRvZ2dsZUNvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG5cblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG5cbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBsaXN0VHlwZSxcbiAgICAgICAgICAgIG9yZGVyTGlzdFN0eWxlLFxuICAgICAgICAgICAgY29sb3IsXG4gICAgICAgICAgICBsaXN0QmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgZW5hYmxlQm94U2hhZG93LFxuICAgICAgICAgICAgeE9mZnNldCxcbiAgICAgICAgICAgIHlPZmZzZXQsXG4gICAgICAgICAgICBibHVyLFxuICAgICAgICAgICAgc3ByZWFkLFxuICAgICAgICAgICAgc2hhZG93Q29sb3IsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXNcblxuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHtzZXRBdHRyaWJ1dGVzfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7bGlzdEJhY2tHcm91bmRDb2xvcjogdmFsdWV9KTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5IHRpdGxlPXtfXygnSWNvbiBTZXR0aW5ncycpfSBpbml0aWFsT3Blbj17ZmFsc2V9PlxuXG4gICAgICAgICAgICAgICAgICAgIDxCU0xpc3RJY29uU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU5hbWU9e25hbWUgPT4gc2V0QXR0cmlidXRlcyh7IG5hbWUgfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RUeXBlPXtsaXN0VHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTGlzdFN0eWxlPXtsaXN0VHlwZSA9PiBzZXRBdHRyaWJ1dGVzKHtsaXN0VHlwZX0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJMaXN0U3R5bGU9e29yZGVyTGlzdFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VPcmRlckxpc3RTdHlsZT17b3JkZXJMaXN0U3R5bGUgPT4gc2V0QXR0cmlidXRlcyh7b3JkZXJMaXN0U3R5bGV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2NvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VDb2xvcj17Y29sb3I9PnNldEF0dHJpYnV0ZXMoe2NvbG9yfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vY29tcG9uZW50cy9pbnNwZWN0b3InO1xuaW1wb3J0IGJveFNoYWRvd1N0eWxlcyBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL2JveC1zaGFkb3dcIjtcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge0FsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9scyx9ID0gd3AuYmxvY2tFZGl0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgICAgICBsaXN0RGF0YSxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGxpc3RUeXBlLFxuICAgICAgICAgICAgICAgIG9yZGVyTGlzdFN0eWxlLFxuICAgICAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgICAgIGxpc3RCYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgbGV0IGNsYXNzZXNOYW1lID0gJyc7XG4gICAgICAgIGlmKGxpc3RUeXBlPT0ndWwnKXtcbiAgICAgICAgICAgIGNsYXNzZXNOYW1lID1uYW1lXG4gICAgICAgIH1lbHNlIGlmKGxpc3RUeXBlPT0nb2wnKXtcbiAgICAgICAgICAgIGlmKG9yZGVyTGlzdFN0eWxlID09ICdibG9ja3NwYXJlLXN0eWxlMicpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzTmFtZSA9IG9yZGVyTGlzdFN0eWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZihvcmRlckxpc3RTdHlsZSA9PSAnYmxvY2tzcGFyZS1zdHlsZTMnKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSBvcmRlckxpc3RTdHlsZTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gb3JkZXJMaXN0U3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSAnJztcbiAgICAgICAgfVxuXG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWN0aW9uQWxpZ25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe3NlY3Rpb25BbGlnbm1lbnQ6IHZhbHVlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICBcImJsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtbGlzdC13cmFwXCIsXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmxpc3RCYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcDpsaXN0QmFja0dyb3VuZENvbG9yPycyMHB4JzonJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tOmxpc3RCYWNrR3JvdW5kQ29sb3I/JzIwcHgnOicnLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0Omxpc3RCYWNrR3JvdW5kQ29sb3I/JzIwcHgnOicnLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDpsaXN0QmFja0dyb3VuZENvbG9yPycyMHB4JzonJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6Ym9yZGVyUmFkaXVzK1wicHhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtsaXN0VHlwZT09J25vbmUnPyd1bCc6bGlzdFR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmU9XCJsaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUHJvcD1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtsaXN0RGF0YX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2xpc3REYXRhOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6Y29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOnNlY3Rpb25BbGlnbm1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9GcmFnbWVudD5cblxuICAgICAgICApXG4gICAgfVxufSIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1JpY2hUZXh0fSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgICAgICBsaXN0RGF0YSxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGxpc3RUeXBlLFxuICAgICAgICAgICAgICAgIG9yZGVyTGlzdFN0eWxlLFxuICAgICAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgICAgIGxpc3RCYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgICAgIGxldCBjbGFzc2VzTmFtZSA9ICcnO1xuICAgICAgICBpZihsaXN0VHlwZT09J3VsJyl7XG4gICAgICAgICAgICBjbGFzc2VzTmFtZSA9bmFtZVxuICAgICAgICB9ZWxzZSBpZihsaXN0VHlwZT09J29sJyl7XG4gICAgICAgICAgICBpZihvcmRlckxpc3RTdHlsZSA9PSAnYmxvY2tzcGFyZS1zdHlsZTInKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSBvcmRlckxpc3RTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYob3JkZXJMaXN0U3R5bGUgPT0gJ2Jsb2Nrc3BhcmUtc3R5bGUzJykge1xuICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gIG9yZGVyTGlzdFN0eWxlO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSBvcmRlckxpc3RTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBjbGFzc2VzTmFtZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICBcImJsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtbGlzdC13cmFwXCIsXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6bGlzdEJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOmJvcmRlclJhZGl1cytcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A6bGlzdEJhY2tHcm91bmRDb2xvcj8nMjBweCc6JycsXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206bGlzdEJhY2tHcm91bmRDb2xvcj8nMjBweCc6JycsXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0Omxpc3RCYWNrR3JvdW5kQ29sb3I/JzIwcHgnOicnLFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ6bGlzdEJhY2tHcm91bmRDb2xvcj8nMjBweCc6JycsXG4gICAgICAgICAgICAgICAgICAgIC4uLmJveFNoYWRvd1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9e2xpc3RUeXBlPT0nbm9uZSc/J3VsJzpsaXN0VHlwZX1cbiAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPVwibGlcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bGlzdERhdGF9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlc05hbWV9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjpjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjpzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2F2ZTsiLCJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9zYXZlJ1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmltcG9ydCBib3hTaGFkb3dBdHRyaWJ1dGVzIGZyb20gXCIuLi91dGlscy9hdHRyaWJ1dGVzL2JveC1zaGFkb3dcIjtcblxuY29uc3R7bmFtZSxjYXRlZ29yeX0gPSBtZXRhZGF0YTtcblxuY29uc3QgYXR0cmlidXRlcyA9e1xuICAgIC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXMsXG4gICAgLi4uYm94U2hhZG93QXR0cmlidXRlc1xufVxuXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIEljb24gTGlzdCcsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdJY29uIExpc3QgYWxsb3cgeW91IHRvIGFkZCBsaXN0IHdpdGggdmFyaW91cyB0eXBlIG9mIGljb25zJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5pY29ubGlzdCxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdibG9jaycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdsaXN0JywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2ljb24nLCAnYmxvY2tzcGFyZScpLFxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyd3aWRlJywgJ2Z1bGwnLCdjZW50ZXInXSxcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ0Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOlNhdmVcbn0pO1xuIiwiXG5jb25zdHtfX30gPSB3cC5pMThuO1xuaW1wb3J0IGZpbHRlciBmcm9tIFwibG9kYXNoL2ZpbHRlclwiO1xuaW1wb3J0IEdhbGxlcnlJbWFnZSBmcm9tIFwiLi4vLi4vdXRpbHMvZ2FsbGVyeS9nYWxsZXJ5LWltYWdlXCI7XG5pbXBvcnQgKiBhcyBoZWxwZXIgZnJvbSBcIi4uLy4uL3V0aWxzL2hlbHBlci9tZWRpYS1oZWxwZXJcIjtcblxuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBSZXNpemFibGVCb3ggfSA9IHdwLmNvbXBvbmVudHM7XG5jb25zdCB7IEJBQ0tTUEFDRSB9ID0gd3Aua2V5Y29kZXM7XG5cbmNsYXNzIExvZ29zIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgICAgICB0aGlzLm9uUmVtb3ZlSW1hZ2UgPSB0aGlzLm9uUmVtb3ZlSW1hZ2UuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uU2VsZWN0SW1hZ2UgPSB0aGlzLm9uU2VsZWN0SW1hZ2UuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uTW92ZUZvcndhcmQgPSB0aGlzLm9uTW92ZUZvcndhcmQuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uTW92ZUJhY2t3YXJkID0gdGhpcy5vbk1vdmVCYWNrd2FyZC5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VBdHRyaWJ1dGVzID0gdGhpcy5zZXRJbWFnZUF0dHJpYnV0ZXMuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uRWRpdFNlbGVjdEltYWdlcyA9IHRoaXMub25FZGl0U2VsZWN0SW1hZ2VzLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2U6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZ3JpZFNpemUgPT09ICd4bHJnJyApIHtcblxuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICAgICAgYWxpZ246ICd3aWRlJyxcbiAgICAgICAgICAgICAgICBncmlkU2l6ZTogJ2xyZycsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSggcHJldlByb3BzICkge1xuICAgICAgICAvLyBEZXNlbGVjdCBpbWFnZXMgd2hlbiBkZXNlbGVjdGluZyB0aGUgYmxvY2suXG4gICAgICAgIGlmICggISB0aGlzLnByb3BzLmlzU2VsZWN0ZWQgJiYgcHJldlByb3BzLmlzU2VsZWN0ZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZTogbnVsbCxcbiAgICAgICAgICAgICAgICBjYXB0aW9uU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RJbWFnZSggaW5kZXggKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuc3RhdGUuc2VsZWN0ZWRJbWFnZSAhPT0gaW5kZXggKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlOiBpbmRleCxcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Nb3ZlKCBvbGRJbmRleCwgbmV3SW5kZXggKSB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IFsgLi4udGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcyBdO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBuZXdJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgb2xkSW5kZXggXSApO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBvbGRJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgbmV3SW5kZXggXSApO1xuICAgICAgICB0aGlzLnNldFN0YXRlKCB7IHNlbGVjdGVkSW1hZ2U6IG5ld0luZGV4IH0gKTtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IGltYWdlcyB9ICk7XG4gICAgfVxuICAgIG9uTW92ZUZvcndhcmQoIG9sZEluZGV4ICkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCBvbGRJbmRleCA9PT0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcy5sZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlKCBvbGRJbmRleCwgb2xkSW5kZXggKyAxICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Nb3ZlQmFja3dhcmQoIG9sZEluZGV4ICkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCBvbGRJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uTW92ZSggb2xkSW5kZXgsIG9sZEluZGV4IC0gMSApO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBvblJlbW92ZUltYWdlKCBpbmRleCApIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlcyA9IGZpbHRlciggdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcywgKCBfaW1nLCBpICkgPT4gaW5kZXggIT09IGkgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHsgc2VsZWN0ZWRJbWFnZTogbnVsbCB9ICk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2V0SW1hZ2VBdHRyaWJ1dGVzKCBpbmRleCwgYXR0cmlidXRlcyApIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7IGltYWdlcyB9LCBzZXRBdHRyaWJ1dGVzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoICEgaW1hZ2VzWyBpbmRleCBdICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggMCwgaW5kZXggKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmltYWdlc1sgaW5kZXggXSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggaW5kZXggKyAxICksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9ICk7XG4gICAgfVxuXG4gICAgb25FZGl0U2VsZWN0SW1hZ2VzKCBpbWFnZXMgKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcygge1xuICAgICAgICAgICAgaW1hZ2VzOiBpbWFnZXMubWFwKCAoIGltYWdlICkgPT4gaGVscGVyLnBpY2tSZWxldmFudE1lZGlhRmlsZXMoIGltYWdlLCB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW1hZ2VzICkgKSxcbiAgICAgICAgfSApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgbGV0IGNvdW50O1xuXG4gICAgICAgIHN3aXRjaCAoIHRoaXMucHJvcHMuYXR0cmlidXRlcy5hbGlnbiApIHtcbiAgICAgICAgICAgIGNhc2UgJ3dpZGUnOlxuICAgICAgICAgICAgICAgIGNvdW50ID0gNDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Z1bGwnOlxuICAgICAgICAgICAgICAgIGNvdW50ID0gNTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY291bnQgPSAzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlcyxcblxuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBjYXB0aW9ucyxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIGxpbmtUbyxcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1sb2dvLXdyYXBcIj5cbiAgICAgICAgICAgICAgICB7IGltYWdlcy5tYXAoICggaW1nLCBpbmRleCApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJpYUxhYmVsID0gc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRyYW5zbGF0b3JzOiAlMSRkIGlzIHRoZSBvcmRlciBudW1iZXIgb2YgdGhlIGltYWdlLCAlMiRkIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzICovXG4gICAgICAgICAgICAgICAgICAgICAgICBfXyggJ2ltYWdlICUxJGQgb2YgJTIkZCBpbiBnYWxsZXJ5JywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGluZGV4ICsgMSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW1cIiBrZXk9eyBpbWcuaWQgfHwgaW1nLnVybCB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHYWxsZXJ5SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXsgaW1nLnVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17IGltZy5hbHQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17IGltZy5pZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0xpbms9eyBpbWcuaW1nTGluayB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUbz17IGxpbmtUbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmlyc3RJdGVtPXsgaW5kZXggPT09IDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xhc3RJdGVtPXsgKCBpbmRleCArIDEgKSA9PT0gaW1hZ2VzLmxlbmd0aCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9eyBpc1NlbGVjdGVkICYmIHRoaXMuc3RhdGUuc2VsZWN0ZWRJbWFnZSA9PT0gaW5kZXggfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17IHRoaXMub25TZWxlY3RJbWFnZSggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW92ZUJhY2t3YXJkPXsgdGhpcy5vbk1vdmVCYWNrd2FyZCggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW92ZUZvcndhcmQ9eyB0aGlzLm9uTW92ZUZvcndhcmQoIGluZGV4ICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlbW92ZT17IHRoaXMub25SZW1vdmVJbWFnZSggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXM9eyAoIGF0dHJzICkgPT4gdGhpcy5zZXRJbWFnZUF0dHJpYnV0ZXMoIGluZGV4LCBhdHRycyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbj17IGltZy5jYXB0aW9uIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17IGFyaWFMYWJlbCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb25zPXsgY2FwdGlvbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0NhcHRpb249eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9ICkgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9nb3M7XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IHBpY2tSZWxldmFudE1lZGlhRmlsZXMgfSBmcm9tICcuLy4uLy4uL3V0aWxzL2hlbHBlci9tZWRpYS1oZWxwZXInO1xuaW1wb3J0IEdhbGxlcnlEcm9wWm9uZSBmcm9tICcuLy4uLy4uL3V0aWxzL2dhbGxlcnkvZ2FsbGVyeS1kcm9wem9uZSc7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmltcG9ydCBMb2dvcyBmcm9tICcuL2xvZ29zJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IHdpdGhOb3RpY2VzIH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyBNZWRpYVBsYWNlaG9sZGVyLCBCbG9ja0ljb24gfSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgICAgICB0aGlzLm9uU2VsZWN0SW1hZ2VzID0gdGhpcy5vblNlbGVjdEltYWdlcy5iaW5kKCB0aGlzICk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RJbWFnZXMoIGltYWdlcyApIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICBpbWFnZXM6IGltYWdlcy5tYXAoIGltYWdlID0+IHBpY2tSZWxldmFudE1lZGlhRmlsZXMoIGltYWdlICkgKSxcbiAgICAgICAgfSApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgbm90aWNlT3BlcmF0aW9ucyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBub3RpY2VVSSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHsgaW1hZ2VzLCBncmF5c2NhbGUgfSA9IGF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3QgaGFzSW1hZ2VzID0gISEgaW1hZ2VzLmxlbmd0aDtcblxuICAgICAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyggY2xhc3NOYW1lLCB7XG4gICAgICAgICAgICAnaGFzLWZpbHRlci1ncmF5c2NhbGUnOiBncmF5c2NhbGUsXG4gICAgICAgIH0gKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEdhbGxlcnlEcm9wWm9uZSB7IC4uLnRoaXMucHJvcHMgfSAvPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWxvZ29zLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPExvZ29zIHsgLi4udGhpcy5wcm9wcyB9IGltYWdlcz17IGltYWdlcyB9IC8+XG5cbiAgICAgICAgICAgICAgICAgICAgeyAoICEgaGFzSW1hZ2VzIHx8IGlzU2VsZWN0ZWQgKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVkaWFQbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR2FsbGVyeT17IGhhc0ltYWdlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBcHBlbmRlcj17IGhhc0ltYWdlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17IDxCbG9ja0ljb24gaWNvbj17IGljb25zLmVkaXQgfSAvPiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPXsge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogX18oICdMb2dvcyBHcmlkJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uczogX18oICdVcGxvYWQgYW4gaW1hZ2UgZmlsZSwgcGljayBvbmUgZnJvbSB5b3VyIG1lZGlhIGxpYnJhcnksIG9yIGFkZCBvbmUgd2l0aCBhIFVSTCcsICdibG9ja3NwYXJlJyApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZFR5cGVzPXsgWyAnaW1hZ2UnIF0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgaGFzSW1hZ2VzID8gaW1hZ2VzIDogdW5kZWZpbmVkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yPXsgbm90aWNlT3BlcmF0aW9ucy5jcmVhdGVFcnJvck5vdGljZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWNlcz17IG5vdGljZVVJIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17IHRoaXMub25TZWxlY3RJbWFnZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoIHsgJ2lzLWFwcGVuZGVyJzogaGFzSW1hZ2VzIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKCBbIHdpdGhOb3RpY2VzIF0gKSggRWRpdCApOyIsIi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5cblxuY29uc3QgeyBSaWNoVGV4dCB9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHNhdmUgPSAoIHsgYXR0cmlidXRlcywgY2xhc3NOYW1lIH0gKSA9PiB7XG4gICAgY29uc3Qge1xuXG4gICAgICAgIGNhcHRpb25zLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIGxpbmtUbyxcbiAgICAgICAgcmVsLFxuICAgICAgICB0YXJnZXQsXG4gICAgfSA9IGF0dHJpYnV0ZXM7XG5cblxuXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtbG9nb3Mtd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtbG9nby13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgIHsgaW1hZ2VzLm1hcCggKCBpbWFnZSApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBocmVmO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKCBsaW5rVG8gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVkaWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gaW1hZ2UudXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdHRhY2htZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IGltYWdlLmxpbms7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGltYWdlLmltZ0xpbmsgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IGltYWdlLmltZ0xpbms7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IDxpbWcgc3JjPXsgaW1hZ2UudXJsIH0gYWx0PXsgaW1hZ2UuYWx0IH0gZGF0YS1pZD17IGltYWdlLmlkIH0gZGF0YS1pbWdsaW5rPXsgaW1hZ2UuaW1nTGluayB9IGRhdGEtbGluaz17IGltYWdlLmxpbmsgfSBjbGFzc05hbWU9eyBpbWFnZS5pZCA/IGB3cC1pbWFnZS0keyBpbWFnZS5pZCB9YCA6IG51bGwgfSAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXsgaW1hZ2UuaWQgfHwgaW1hZ2UudXJsIH0gY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWdhbGxlcnktZmlndXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGhyZWYgPyA8YSBocmVmPXsgaHJlZiB9IHRhcmdldD17IHRhcmdldCB9IHJlbD17IHJlbCB9PnsgaW1nIH08L2E+IDogaW1nIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FwdGlvbnMgJiYgaW1hZ2UuY2FwdGlvbiAmJiBpbWFnZS5jYXB0aW9uLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50IHRhZ05hbWU9XCJmaWdjYXB0aW9uXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWNhcHRpb25cIiB2YWx1ZT17IGltYWdlLmNhcHRpb24gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlndXJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9ICkgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzYXZlO1xuIiwiaW1wb3J0ICcuL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2NvbXBvbmVudC9lZGl0JztcbmltcG9ydCBzYXZlIGZyb20gJy4vY29tcG9uZW50L3NhdmUnO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucyc7XG5jb25zdCBwcmV2X2ltZyA9IGJsb2Nrc3BhcmVfZ2xvYmFscztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHsgbmFtZSwgY2F0ZWdvcnksIGF0dHJpYnV0ZXMgfSA9IG1ldGFkYXRhO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgLyogdHJhbnNsYXRvcnM6IGJsb2NrIG5hbWUgKi9cbiAgICB0aXRsZTogX18oJ0JTIExvZ28gR3JpZCcsICdibG9ja3NwYXJlJyksXG4gICAgLyogdHJhbnNsYXRvcnM6IGJsb2NrIGRlc2NyaXB0aW9uICovXG4gICAgZGVzY3JpcHRpb246IF9fKCdBZGQgbG9nb3MsIGJhZGdlcywgb3IgY2VydGlmaWNhdGlvbnMgdG8gYnVpbGQgY3JlZGliaWxpdHkuJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5sb2dvYmFkZ2UsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbG9nbycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdicmFuZCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdjbGllbnRzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2dyaWQnLCAnYmxvY2tzcGFyZScpLFxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyd3aWRlJywgJ2Z1bGwnLCdjZW50ZXInXSxcbiAgICB9LFxuICAgICAgICBleGFtcGxlOiB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYWxpZ246ICdmdWxsJyxcbiAgICAgICAgICAgICAgICBpbWFnZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmV2X2ltZy5pbWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDIwXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcHJldl9pbWcuaW1nLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQyMFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHByZXZfaW1nLmltZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MjBcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmV2X2ltZy5pbWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDIwXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIGVkaXQ6RWRpdCxcblxuICAgIHNhdmUsXG59KTtcblxuIiwiaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vLi4vdXRpbHMvbWFyZ2luXCI7XG5pbXBvcnQgSW1hZ2VEZXNpZ25TdHlsZTEgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtMS5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlMiBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1ncmlkLWxheW91dC0yLnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGUzIGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTMucG5nXCI7XG5cbmltcG9ydCBEZXNpZ25QYW5lbEJvZHkgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tcGFuZWwtYm9keS9cIjtcblxuY29uc3Qge2FkZEZpbHRlciwgYXBwbHlGaWx0ZXJzfSA9IHdwLmhvb2tzO1xuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuaW1wb3J0IGNvbXBhY3QgZnJvbSAnbG9kYXNoL2NvbXBhY3QnO1xuaW1wb3J0IG1hcCBmcm9tICdsb2Rhc2gvbWFwJztcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIjtcblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbiAgICBRdWVyeUNvbnRyb2xzLFxuICAgIFJhbmdlQ29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sLFxuICAgIFRleHRDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wsXG5cblxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmNvbnN0IHthZGRRdWVyeUFyZ3N9ID0gd3AudXJsO1xuXG5jb25zdCB7YXBpRmV0Y2h9ID0gd3A7XG5cbmNvbnN0IE1BWF9QT1NUU19DT0xVTU5TID0gMztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtjYXRlZ29yaWVzTGlzdDogW119XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMuc3RpbGxNb3VudGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5mZXRjaFJlcXVlc3QgPSBhcGlGZXRjaCh7XG4gICAgICAgICAgICBwYXRoOiBhZGRRdWVyeUFyZ3MoJy93cC92Mi9jYXRlZ29yaWVzJywge3Blcl9wYWdlOiAtMX0pXG4gICAgICAgIH0pLnRoZW4oXG4gICAgICAgICAgICAoY2F0ZWdvcmllc0xpc3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGlsbE1vdW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2F0ZWdvcmllc0xpc3R9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICkuY2F0Y2goXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RpbGxNb3VudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2NhdGVnb3JpZXNMaXN0OiBbXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgdGhpcy5zdGlsbE1vdW50ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpbWFnZVNpemVTZWxlY3QoKSB7XG4gICAgICAgIGNvbnN0IGdldFNldHRpbmdzID0gd3AuZGF0YS5zZWxlY3QoJ2NvcmUvZWRpdG9yJykuZ2V0RWRpdG9yU2V0dGluZ3MoKTtcblxuICAgICAgICByZXR1cm4gY29tcGFjdChtYXAoZ2V0U2V0dGluZ3MuaW1hZ2VTaXplcywgKHtuYW1lLCBzbHVnfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2x1ZyxcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIHBvc3RUeXBlLFxuICAgICAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBkZXNpZ24gPSAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC0xJyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdFRpdGxlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0Q2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RBdXRob3IsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3REYXRlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RXhjZXJwdCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdExpbmssXG4gICAgICAgICAgICAgICAgZXhjZXJwdExlbmd0aCxcbiAgICAgICAgICAgICAgICByZWFkTW9yZVRleHQsXG4gICAgICAgICAgICAgICAgcG9zdHNUb1Nob3csXG4gICAgICAgICAgICAgICAgZW5hYmxlQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgaW1hZ2VTaXplLFxuICAgICAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICAgICAgIG9yZGVyQnksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgY29udGVudE9yZGVyLFxuICAgICAgICAgICAgICAgIGVxdWFsSW1hZ2VIZWlnaHQsXG4gICAgICAgICAgICAgICAgcG9zdFRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgcG9zdFRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgbGlua0NvbG9yLFxuICAgICAgICAgICAgICAgIGdlbmVyYWxDb2xvcixcbiAgICAgICAgICAgICAgICBlbmFibGVCb3hTaGFkb3csXG4gICAgICAgICAgICAgICAgeE9mZnNldCxcbiAgICAgICAgICAgICAgICB5T2Zmc2V0LFxuICAgICAgICAgICAgICAgIGJsdXIsXG4gICAgICAgICAgICAgICAgc3ByZWFkLFxuICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBsYXRlc3RQb3N0cyxcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIGNvbnN0IHtjYXRlZ29yaWVzTGlzdH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlVGl0bGVjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe3Bvc3RUaXRsZUNvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZUxpbmtjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2xpbmtDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VHZW5lcmFsY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtnZW5lcmFsQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja0dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuXG4gICAgICAgIGNvbnN0IGNvbnRlbnRPZGVyT3B0aW9uID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnY29udGVudC1vcmRlci0xJywgbGFiZWw6IF9fKCdEZWZhdWx0JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdjb250ZW50LW9yZGVyLTInLCBsYWJlbDogX18oJ01ldGEg4oaSIFRpdGxlIOKGkiBDYXRlZ29yeSDihpIgQ29udGVudCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnY29udGVudC1vcmRlci0zJywgbGFiZWw6IF9fKCdUaXRsZSDihpIgTWV0YSDihpIgQ2F0ZWdvcnkg4oaSIENvbnRlbnQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2NvbnRlbnQtb3JkZXItNCcsIGxhYmVsOiBfXygnVGl0bGUg4oaSIENhdGVnb3J5IOKGkiBNZXRhIOKGkiBDb250ZW50JywgJ2Jsb2Nrc3BhcmUnKX0sXG5cbiAgICAgICAgXTtcbiAgICAgICAgLy8gQ2hlY2sgZm9yIHBvc3RzXG4gICAgICAgIGNvbnN0IGhhc1Bvc3RzID0gQXJyYXkuaXNBcnJheShsYXRlc3RQb3N0cykgJiYgbGF0ZXN0UG9zdHMubGVuZ3RoO1xuXG4gICAgICAgIC8vIENoZWNrIHRoZSBwb3N0IHR5cGVcbiAgICAgICAgY29uc3QgaXNQb3N0ID0gcG9zdFR5cGUgPT09ICdwb3N0JztcblxuXG4gICAgICAgIGNvbnN0IGltYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLmltYWdlU2l6ZVNlbGVjdCgpO1xuXG5cbiAgICAgICAgY29uc3QgaW1hZ2VTaXplVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlU2l6ZU9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2VTaXplT3B0aW9uc1tpXS52YWx1ZSA9PT0gaW1hZ2VTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbWFnZVNpemU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdmdWxsJztcbiAgICAgICAgfTtcblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxEZXNpZ25QYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtkZXNpZ259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXthcHBseUZpbHRlcnMoJ2Jsb2Nrc3BhcmUuY3RhLmVkaXQubGF5b3V0cycsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnU3R5bGUgMScsICdibG9ja3NwYXJlJyksIHZhbHVlOiAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC0xJywgaW1hZ2U6IEltYWdlRGVzaWduU3R5bGUxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1N0eWxlIDInLCAnYmxvY2tzcGFyZScpLCB2YWx1ZTogJ2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtMicsIGltYWdlOiBJbWFnZURlc2lnblN0eWxlMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdTdHlsZSAzJywgJ2Jsb2Nrc3BhcmUnKSwgdmFsdWU6ICdibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTMnLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBdKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtkZXNpZ24gPT4gc2V0QXR0cmlidXRlcyh7ZGVzaWdufSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9EZXNpZ25QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2lzUG9zdCA/IG51bGwgOiAnYmxvY2tzcGFyZS1oaWRlLXF1ZXJ5J31cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdDb2x1bW5zJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2x1bW5zOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9eyFoYXNQb3N0cyA/IE1BWF9QT1NUU19DT0xVTU5TIDogTWF0aC5taW4oTUFYX1BPU1RTX0NPTFVNTlMsIGxhdGVzdFBvc3RzLmxlbmd0aCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdUaXRsZSBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBvc3RUaXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VUaXRsZWNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1RpdGxlIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlIEZvbnQgU2l6ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Bvc3RUaXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7cG9zdFRpdGxlRm9udFNpemU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezYwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc1Bvc3QgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IENhdGVnb3J5JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtkaXNwbGF5UG9zdENhdGVnb3J5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2Rpc3BsYXlQb3N0Q2F0ZWdvcnk6ICFkaXNwbGF5UG9zdENhdGVnb3J5fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgQXV0aG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtkaXNwbGF5UG9zdEF1dGhvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtkaXNwbGF5UG9zdEF1dGhvcjogIWRpc3BsYXlQb3N0QXV0aG9yfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgRGF0ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZGlzcGxheVBvc3REYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2Rpc3BsYXlQb3N0RGF0ZTogIWRpc3BsYXlQb3N0RGF0ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAge2Rlc2lnbiAhPSAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC00JyAgJiYgZGVzaWduICE9ICdibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTUnICAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtNicgICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwgUGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCcgQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBsaW5rQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VMaW5rY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0xpbmsgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ2VuZXJhbENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlR2VuZXJhbGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdHZW5lcmFsIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnUG9zdCBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2lzUG9zdCA/IG51bGwgOiAnYmxvY2tzcGFyZS1oaWRlLXF1ZXJ5J31cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxRdWVyeUNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLntvcmRlciwgb3JkZXJCeX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllc0xpc3Q9e2NhdGVnb3JpZXNMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnlJZD17Y2F0ZWdvcmllc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNhdGVnb3J5Q2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2NhdGVnb3JpZXM6ICcnICE9PSB2YWx1ZSA/IHZhbHVlIDogdW5kZWZpbmVkfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25PcmRlckNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtvcmRlcjogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk9yZGVyQnlDaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7b3JkZXJCeTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IFwiaW1hZ2VzL2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtMS5wbmdcIjsiLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9ibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTIucG5nXCI7IiwiZXhwb3J0IGRlZmF1bHQgXCJpbWFnZXMvYmxvY2tzcGFyZS1ncmlkLWxheW91dC0zLnBuZ1wiOyIsImNvbnN0IGJsb2dQb3N0U3R5bGVzPSAoYXR0cmlidXRlcykgPT57XG4gICAgbGV0IGJsb2dTdHlsZXMgPSAnJztcblxuXG4gICAgICAgIGJsb2dTdHlsZXMgPSB7XG4gICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkXCIgKyBhdHRyaWJ1dGVzLmJvcmRlckNvbG9yID8gYXR0cmlidXRlcy5ib3JkZXJDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYXR0cmlidXRlcy5iYWNrR3JvdW5kQ29sb3IgPyBhdHRyaWJ1dGVzLmJhY2tHcm91bmRDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJveFNoYWRvdzogKGF0dHJpYnV0ZXMuZW5hYmxlQm94U2hhZG93KT9hdHRyaWJ1dGVzLnhPZmZzZXQgKyBcInB4IFwiICsgYXR0cmlidXRlcy55T2Zmc2V0ICsgXCJweCBcIiArIGF0dHJpYnV0ZXMuYmx1ciArIFwicHggXCIgKyBhdHRyaWJ1dGVzLnNwcmVhZCArIFwicHggXCIgKyBhdHRyaWJ1dGVzLnNoYWRvd0NvbG9yOlwiXCIsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGF0dHJpYnV0ZXMuYm9yZGVyUmFkaXVzPyBhdHRyaWJ1dGVzLmJvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgIH1cblxuICAgIHJldHVybiBibG9nU3R5bGVzXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgYmxvZ1Bvc3RTdHlsZXMiLCJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IGlzVW5kZWZpbmVkIGZyb20gJ2xvZGFzaC9pc1VuZGVmaW5lZCc7XG5pbXBvcnQgcGlja0J5IGZyb20gJ2xvZGFzaC9waWNrQnknO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vY29tcG9uZW50cy9pbnNwZWN0b3InO1xuXG5pbXBvcnQgYmxvZ1Bvc3RTdHlsZXMgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9ibG9nLXBvc3Qtc3R5bGVzXCI7XG5cbmNvbnN0IHtjb21wb3NlfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5jb25zdCB7ZGVjb2RlRW50aXRpZXN9ID0gd3AuaHRtbEVudGl0aWVzO1xuXG5jb25zdCB7XG4gICAgd2l0aFNlbGVjdCxcbn0gPSB3cC5kYXRhO1xuXG5jb25zdCB7XG4gICAgUGxhY2Vob2xkZXIsXG4gICAgU3Bpbm5lcixcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5jbGFzcyBMYXRlc3RQb3N0c0Jsb2NrR3JpZCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgcG9zdFR5cGUsXG4gICAgICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGRlc2lnbixcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdFRpdGxlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0Q2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RBdXRob3IsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3REYXRlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RXhjZXJwdCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdExpbmssXG4gICAgICAgICAgICAgICAgZXhjZXJwdExlbmd0aCxcbiAgICAgICAgICAgICAgICByZWFkTW9yZVRleHQsXG4gICAgICAgICAgICAgICAgcG9zdHNUb1Nob3csXG4gICAgICAgICAgICAgICAgZW5hYmxlQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgaW1hZ2VTaXplID0gJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29udGVudE9yZGVyLFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25UYWcsXG4gICAgICAgICAgICAgICAgZXF1YWxJbWFnZUhlaWdodCxcbiAgICAgICAgICAgICAgICBwb3N0VGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBwb3N0VGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgICAgICBsaW5rQ29sb3IsXG4gICAgICAgICAgICAgICAgZ2VuZXJhbENvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIHBvc3RzXG4gICAgICAgIGNvbnN0IGhhc1Bvc3RzID0gQXJyYXkuaXNBcnJheShsYXRlc3RQb3N0cykgJiYgbGF0ZXN0UG9zdHMubGVuZ3RoO1xuXG5cbiAgICAgICAgLy8gQ2hlY2sgdGhlIHBvc3QgdHlwZVxuICAgICAgICBjb25zdCBpc1Bvc3QgPSBwb3N0VHlwZSA9PT0gJ3Bvc3QnO1xuXG4gICAgICAgIGlmICghaGFzUG9zdHMpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJhZG1pbi1wb3N0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnQlMgQmxvY2tzIFBvc3RzIEdyaWQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IUFycmF5LmlzQXJyYXkobGF0ZXN0UG9zdHMpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3Bpbm5lci8+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXygnTm8gcG9zdHMgZm91bmQuJywgJ2Jsb2Nrc3BhcmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVtb3ZpbmcgcG9zdHMgZnJvbSBkaXNwbGF5IHNob3VsZCBiZSBpbnN0YW50LlxuICAgICAgICBjb25zdCBkaXNwbGF5UG9zdHMgPSBsYXRlc3RQb3N0cy5sZW5ndGggPiBwb3N0c1RvU2hvdyA/XG4gICAgICAgICAgICBsYXRlc3RQb3N0cy5zbGljZSgwLCBwb3N0c1RvU2hvdykgOlxuICAgICAgICAgICAgbGF0ZXN0UG9zdHM7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBzZWN0aW9uIHRhZ1xuICAgICAgICBjb25zdCBTZWN0aW9uVGFnID0gc2VjdGlvblRhZyA/IHNlY3Rpb25UYWcgOiBcInNlY3Rpb25cIjtcblxuICAgICAgICAvLyBHZXQgdGhlIHNlY3Rpb24gc3R5bGVcbiAgICAgICAgbGV0IGl0ZW1TdHlsZSA9IHt9O1xuICAgICAgICBpZiAoZGVzaWduICE9PSAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC00JyAmJiBkZXNpZ24gIT09ICdibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTUnICYmIGRlc2lnbiAhPT0gJ2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtNicpIHtcbiAgICAgICAgICAgIGl0ZW1TdHlsZSA9IHtcblxuICAgICAgICAgICAgICAgIC4uLmJsb2dQb3N0U3R5bGVzKGF0dHJpYnV0ZXMpLFxuXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGlua2NvbG9yID0ge1xuICAgICAgICAgICAgY29sb3I6IGxpbmtDb2xvciA/IGxpbmtDb2xvciA6IFwiIzE5NzdhY1wiXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZ2VuZXJhbGNvbG9yID0ge1xuICAgICAgICAgICAgY29sb3I6IGdlbmVyYWxDb2xvciA/IGdlbmVyYWxDb2xvciA6ICcjMDAwJ1xuICAgICAgICB9O1xuXG5cbiAgICAgICAgLy8gR2V0IHRoZSBwb3N0IHRpdGxlIHRhZ1xuICAgICAgICBjb25zdCBQb3N0VGFnID0gXCJoNFwiO1xuICAgICAgICBjb25zdCBlZGl0Q29udGVudFBhZGRpbmcgPSB7XG4gICAgICAgICAgICBtYXJnaW5Ub3A6IG1hcmdpblRvcCA/IG1hcmdpblRvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbSA/IG1hcmdpbkJvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxTZWN0aW9uVGFnXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcG9zdC13cmFwJ1xuICAgICAgICAgICAgICAgICAgICApfSBzdHlsZT17ZWRpdENvbnRlbnRQYWRkaW5nfT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtbGF0ZXN0LXBvc3Qtd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ24sXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1pcy1ncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2x1bW4tJyArIGNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RzLm1hcCgocG9zdCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlZEltYWdlU3JjID0gKChwb3N0LmZlYXR1cmVkX2ltYWdlX3VybHMgJiYgcG9zdC5mZWF0dXJlZF9pbWFnZV91cmxzW2ltYWdlU2l6ZSB8fCAnbGFyZ2UnXSkgfHwgW10pWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlZEltYWdlID0gZmVhdHVyZWRJbWFnZVNyYztcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJibG9ja3NwYXJlLXBvc3Qtc2luZ2xlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWxJbWFnZUhlaWdodCA/IFwiaGFzLWltZy1lcXVhbC1oZWlnaHRcIiA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlc2lnbiAhPSAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC00JyAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtNScgJiYgZGVzaWduICE9ICdibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTYnKSA/ICdoYXMtYmFja2dyb3VuZCcgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9IHN0eWxlPXtpdGVtU3R5bGV9PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlZEltYWdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXBvc3QtaW1nJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e2ZlYXR1cmVkSW1hZ2V9IGFsdD17X18oJ2ZlYXR1cmVkJywgJ2Jsb2Nrc3BhcmUnKX0vPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWd1cmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcG9zdC1jb250ZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudE9yZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX0+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmctb3ZlcmxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tiYWNrZ3JvdW5kQ29sb3I6IGVuYWJsZUJhY2tncm91bmRDb2xvciA/IGJhY2tHcm91bmRDb2xvciA6ICcnfX0+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1ibG9jay1wb3N0LWdyaWQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RDYXRlZ29yeSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtcG9zdC1jYXRlZ29yeSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tfX2h0bWw6IHBvc3QuY2F0ZWdvcnlfaW5mby5yZXBsYWNlKC9ocmVmPVsnXCJdLio/WydcIl0vZywgJycpfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2xpbmtjb2xvcn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlQb3N0VGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3N0VGFnIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLXRpdGxlXCIgc3R5bGU9e3tmb250U2l6ZTogcG9zdFRpdGxlRm9udFNpemUgKyAncHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBvc3RUaXRsZUNvbG9yID8gcG9zdFRpdGxlQ29sb3IgOiAnIzQwNDA0MCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJib29rbWFya1wiPntkZWNvZGVFbnRpdGllcyhwb3N0LnRpdGxlLnJlbmRlcmVkLnRyaW0oKSkgfHwgX18oJyhVbnRpdGxlZCknLCAnYmxvY2tzcGFyZScpfTwvYT48L1Bvc3RUYWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJiAoZGlzcGxheVBvc3RBdXRob3IgfHwgZGlzcGxheVBvc3REYXRlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWJsb2NrLXBvc3QtZ3JpZC1ieWxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RBdXRob3IgJiYgcG9zdC5hdXRob3JfaW5mby5kaXNwbGF5X25hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLWF1dGhvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBzdHlsZT17bGlua2NvbG9yfSBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXRleHQtbGlua1wiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e3Bvc3QuYXV0aG9yX2luZm8uYXV0aG9yX2xpbmt9Pntwb3N0LmF1dGhvcl9pbmZvLmRpc3BsYXlfbmFtZX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlQb3N0RGF0ZSAmJiBwb3N0LmRhdGVfZ210ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRpbWUgZGF0ZVRpbWU9e21vbWVudChwb3N0LmRhdGVfZ210KS51dGMoKS5mb3JtYXQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydibG9ja3NwYXJlLWJsb2NrLXBvc3QtZ3JpZC1kYXRlJ30gc3R5bGU9e2dlbmVyYWxjb2xvcn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQocG9zdC5kYXRlX2dtdCkubG9jYWwoKS5mb3JtYXQoJ01NTU0gREQsIFknLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGltZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhkaXNwbGF5UG9zdEV4Y2VycHQgfHwgZGlzcGxheVBvc3RMaW5rKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLWV4Y2VycHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkaXNwbGF5UG9zdEV4Y2VycHQgJiYgcG9zdC5leGNlcnB0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtnZW5lcmFsY29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7X19odG1sOiB0cnVuY2F0ZShwb3N0LmV4Y2VycHQucmVuZGVyZWQsIGV4Y2VycHRMZW5ndGgpfX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RMaW5rICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YSBzdHlsZT17bGlua2NvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1ibG9jay1wb3N0LWdyaWQtbW9yZS1saW5rIGJsb2Nrc3BhcmUtdGV4dC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e3Bvc3QubGlua31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cImJvb2ttYXJrXCI+e3JlYWRNb3JlVGV4dH08L2E+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1NlY3Rpb25UYWc+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShbXG4gICAgd2l0aFNlbGVjdCgoc2VsZWN0LCBwcm9wcykgPT4ge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBvcmRlcixcbiAgICAgICAgICAgIGNhdGVnb3JpZXMsXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuXG4gICAgICAgIGNvbnN0IHtnZXRFbnRpdHlSZWNvcmRzfSA9IHNlbGVjdCgnY29yZScpO1xuXG4gICAgICAgIGNvbnN0IGxhdGVzdFBvc3RzUXVlcnkgPSBwaWNrQnkoe1xuICAgICAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICAgb3JkZXJieTogcHJvcHMuYXR0cmlidXRlcy5vcmRlckJ5LFxuICAgICAgICAgICAgcGVyX3BhZ2U6IHByb3BzLmF0dHJpYnV0ZXMucG9zdHNUb1Nob3csXG4gICAgICAgICAgICBvZmZzZXQ6IHByb3BzLmF0dHJpYnV0ZXMub2Zmc2V0LFxuICAgICAgICB9LCAodmFsdWUpID0+ICFpc1VuZGVmaW5lZCh2YWx1ZSkpO1xuXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzOiBnZXRFbnRpdHlSZWNvcmRzKCdwb3N0VHlwZScsIHByb3BzLmF0dHJpYnV0ZXMucG9zdFR5cGUsIGxhdGVzdFBvc3RzUXVlcnkpLFxuICAgICAgICB9O1xuICAgIH0pLFxuXSkoTGF0ZXN0UG9zdHNCbG9ja0dyaWQpO1xuXG4vLyBUcnVuY2F0ZSBleGNlcnB0XG5mdW5jdGlvbiB0cnVuY2F0ZShzdHIsIG5vX3dvcmRzKSB7XG4gICAgcmV0dXJuIHN0ci5zcGxpdChcIiBcIikuc3BsaWNlKDAsIG5vX3dvcmRzKS5qb2luKFwiIFwiKTtcbn1cbiIsIi8qKlxuICogQkxPQ0s6IEFGVCBCbG9ja3MgUG9zdCBhbmQgUGFnZSBHcmlkXG4gKi9cblxuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IExhdGVzdFBvc3RzQmxvY2tHcmlkIGZyb20gJy4vZWRpdCc7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcblxuXG4vLyBDb21wb25lbnRzXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuXG4vLyBSZWdpc3RlciBibG9jayBjb250cm9sc1xuY29uc3Qge1xuICAgIHJlZ2lzdGVyQmxvY2tUeXBlLFxufSA9IHdwLmJsb2NrcztcblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1sYXRlc3QtcG9zdHMtZ3JpZCcsIHtcbiAgICB0aXRsZTogX18oICdCUyBQb3N0cyBHcmlkJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkIHBvc3RzIGdyaWQgZnJvbSBzZWxlY3RlZCBjYXRlZ29yaWVzLicsICdibG9ja3NwYXJlJyApLFxuICAgIGNhdGVnb3J5OiAnYmxvY2tzcGFyZScsXG4gICAgaWNvbjogaWNvbnMucG9zdGdyaWQsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3Bvc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYmxvZycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdhcmNoaXZlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2FydGljbGUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbGlzdCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdncmlkJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2xhdGVzdCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdjYXRlZ29yeScsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbJ3dpZGUnLCAnZnVsbCcsJ2NlbnRlciddLFxuICAgIH0sXG4gICAgZXhhbXBsZTp7XG4gICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgZGVzaWduOlwiYmxvY2tzcGFyZS1ncmlkLWxheW91dC0xXCIsXG4gICAgICAgICAgICBwb3N0c1RvU2hvdzoyLFxuICAgICAgICAgICAgZGlzcGxheVBvc3RDYXRlZ29yeTpmYWxzZSxcbiAgICAgICAgICAgIGRpc3BsYXlQb3N0QXV0aG9yOmZhbHNlLFxuICAgICAgICAgICAgZGlzcGxheVBvc3REYXRlOmZhbHNlLFxuICAgICAgICAgICAgaW1hZ2VTaXplOlwibWVkaXVtXCIsXG4gICAgICAgICAgICBwb3N0VGl0bGVGb250U2l6ZToxNlxuICAgICAgICB9XG4gICAgfSxcblxuICAgIGVkaXQ6TGF0ZXN0UG9zdHNCbG9ja0dyaWQsXG4gICAgc2F2ZSgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbn0gKTtcbiIsIlxuaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vLi4vdXRpbHMvbWFyZ2luXCI7XG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5pbXBvcnQgY29tcGFjdCBmcm9tICdsb2Rhc2gvY29tcGFjdCc7XG5pbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGUxIGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTEucG5nXCI7XG5pbXBvcnQgSW1hZ2VEZXNpZ25TdHlsZTIgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtMi5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlMyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1saXN0LWxheW91dC0zLnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGU0IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTQucG5nXCI7XG5pbXBvcnQgSW1hZ2VEZXNpZ25TdHlsZTUgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtNS5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlNiBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1saXN0LWxheW91dC02LnBuZ1wiO1xuXG5pbXBvcnQgRGVzaWduUGFuZWxCb2R5IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXBhbmVsLWJvZHlcIjtcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIjtcblxuY29uc3QgeyBhZGRGaWx0ZXIsIGFwcGx5RmlsdGVycyB9ID0gd3AuaG9va3M7XG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFF1ZXJ5Q29udHJvbHMsXG4gICAgUmFuZ2VDb250cm9sLFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgVGV4dENvbnRyb2wsXG4gICAgVG9nZ2xlQ29udHJvbCxcblxuXG5cbn0gPSB3cC5jb21wb25lbnRzO1xuXG5jb25zdCB7YWRkUXVlcnlBcmdzfSA9IHdwLnVybDtcblxuY29uc3Qge2FwaUZldGNofSA9IHdwO1xuXG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7Y2F0ZWdvcmllc0xpc3Q6IFtdfVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnN0aWxsTW91bnRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZmV0Y2hSZXF1ZXN0ID0gYXBpRmV0Y2goe1xuICAgICAgICAgICAgcGF0aDogYWRkUXVlcnlBcmdzKCcvd3AvdjIvY2F0ZWdvcmllcycsIHtwZXJfcGFnZTogLTF9KVxuICAgICAgICB9KS50aGVuKFxuICAgICAgICAgICAgKGNhdGVnb3JpZXNMaXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RpbGxNb3VudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2NhdGVnb3JpZXNMaXN0fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0aWxsTW91bnRlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtjYXRlZ29yaWVzTGlzdDogW119KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIHRoaXMuc3RpbGxNb3VudGVkID0gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBpbWFnZVNpemVTZWxlY3QoKSB7XG4gICAgICAgIGNvbnN0IGdldFNldHRpbmdzID0gd3AuZGF0YS5zZWxlY3QoICdjb3JlL2VkaXRvcicgKS5nZXRFZGl0b3JTZXR0aW5ncygpO1xuXG4gICAgICAgIHJldHVybiBjb21wYWN0KCBtYXAoIGdldFNldHRpbmdzLmltYWdlU2l6ZXMsICh7IG5hbWUsIHNsdWcgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2x1ZyxcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgcG9zdFR5cGUsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RUaXRsZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0QXV0aG9yLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RGF0ZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdEV4Y2VycHQsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RMaW5rLFxuICAgICAgICAgICAgICAgIGV4Y2VycHRMZW5ndGgsXG4gICAgICAgICAgICAgICAgcmVhZE1vcmVUZXh0LFxuICAgICAgICAgICAgICAgIGRlc2lnbj0nYmxvY2tzcGFyZS1saXN0LWxheW91dC0xJyxcbiAgICAgICAgICAgICAgICBwb3N0c1RvU2hvdyxcbiAgICAgICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgZW5hYmxlQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgaW1hZ2VTaXplLFxuICAgICAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICAgICAgIG9yZGVyQnksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgY29udGVudE9yZGVyLFxuICAgICAgICAgICAgICAgIHBvc3RUaXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIHBvc3RUaXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGxpbmtDb2xvcixcbiAgICAgICAgICAgICAgICBnZW5lcmFsQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgICAgIGVuYWJsZUJveFNoYWRvdyxcbiAgICAgICAgICAgICAgICB4T2Zmc2V0LFxuICAgICAgICAgICAgICAgIHlPZmZzZXQsXG4gICAgICAgICAgICAgICAgYmx1cixcbiAgICAgICAgICAgICAgICBzcHJlYWQsXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG5cbiAgICAgICAgY29uc3Qge2NhdGVnb3JpZXNMaXN0fSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlVGl0bGVjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe3Bvc3RUaXRsZUNvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZUxpbmtjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2xpbmtDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VHZW5lcmFsY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtnZW5lcmFsQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja0dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuXG5cblxuICAgICAgICBjb25zdCBpbWFnZVNpemVPcHRpb25zID0gdGhpcy5pbWFnZVNpemVTZWxlY3QoKTtcblxuXG4gICAgICAgIGNvbnN0IGltYWdlU2l6ZVZhbHVlID0gKCkgPT4ge1xuICAgICAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgaW1hZ2VTaXplT3B0aW9ucy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIGltYWdlU2l6ZU9wdGlvbnNbaV0udmFsdWUgPT09IGltYWdlU2l6ZSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ2Z1bGwnO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENoZWNrIHRoZSBwb3N0IHR5cGVcbiAgICAgICAgY29uc3QgaXNQb3N0ID0gcG9zdFR5cGUgPT09ICdwb3N0JztcblxuICAgICAgICBjb25zdCBjb250ZW50T2Rlck9wdGlvbiA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2NvbnRlbnQtb3JkZXItMScsIGxhYmVsOiBfXygnRGVmYXVsdCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnY29udGVudC1vcmRlci0yJywgbGFiZWw6IF9fKCdNZXRhIOKGkiBUaXRsZSDihpIgQ2F0ZWdvcnkg4oaSIENvbnRlbnQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2NvbnRlbnQtb3JkZXItMycsIGxhYmVsOiBfXygnVGl0bGUg4oaSIE1ldGEg4oaSIENhdGVnb3J5IOKGkiBDb250ZW50JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdjb250ZW50LW9yZGVyLTQnLCBsYWJlbDogX18oJ1RpdGxlIOKGkiBDYXRlZ29yeSDihpIgTWV0YSDihpIgQ29udGVudCcsICdibG9ja3NwYXJlJyl9LFxuXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxEZXNpZ25QYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9eyBkZXNpZ24gfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17IGFwcGx5RmlsdGVycyggJ2Jsb2Nrc3BhcmUuY3RhLmVkaXQubGF5b3V0cycsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ1N0eWxlIDEnLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTEnLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ1N0eWxlIDInLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTInLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ1N0eWxlIDMnLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTMnLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgZGVzaWduID0+IHNldEF0dHJpYnV0ZXMoIHsgZGVzaWduIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9EZXNpZ25QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtpc1Bvc3QgPyBudWxsIDogJ2Jsb2Nrc3BhcmUtaGlkZS1xdWVyeSd9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnVGl0bGUgQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwb3N0VGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VUaXRsZWNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnVGl0bGUgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdUaXRsZSBGb250IFNpemUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Bvc3RUaXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtwb3N0VGl0bGVGb250U2l6ZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezYwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD17MX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG5cbiAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJlxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IENhdGVnb3J5JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2Rpc3BsYXlQb3N0Q2F0ZWdvcnl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtkaXNwbGF5UG9zdENhdGVnb3J5OiAhZGlzcGxheVBvc3RDYXRlZ29yeX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJlxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IEF1dGhvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtkaXNwbGF5UG9zdEF1dGhvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2Rpc3BsYXlQb3N0QXV0aG9yOiAhZGlzcGxheVBvc3RBdXRob3J9KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7aXNQb3N0ICYmXG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgRGF0ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtkaXNwbGF5UG9zdERhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtkaXNwbGF5UG9zdERhdGU6ICFkaXNwbGF5UG9zdERhdGV9KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7ZGVzaWduICE9ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTYnICYmIGRlc2lnbiAhPSAnYmxvY2tzcGFyZS1saXN0LWxheW91dC01JyAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtNCcgJiZcblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB9XX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdDb2xvciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGxpbmtDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUxpbmtjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnTGluayBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBnZW5lcmFsQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VHZW5lcmFsY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0dlbmVyYWwgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdQb3N0IFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17aXNQb3N0ID8gbnVsbCA6ICdibG9ja3NwYXJlLWhpZGUtcXVlcnknfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFF1ZXJ5Q29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ue29yZGVyLCBvcmRlckJ5fX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzTGlzdD17Y2F0ZWdvcmllc0xpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDYXRlZ29yeUlkPXtjYXRlZ29yaWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2F0ZWdvcnlDaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7Y2F0ZWdvcmllczogJycgIT09IHZhbHVlID8gdmFsdWUgOiB1bmRlZmluZWR9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk9yZGVyQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe29yZGVyOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uT3JkZXJCeUNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtvcmRlckJ5OiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgR2FwcycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYXJnaW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlVG9wPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcD17bWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Ub3A9e21hcmdpblRvcCA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Ub3B9KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIG1hcmdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZUJvdHRvbT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luQm90dG9tfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cblxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9ibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTEucG5nXCI7IiwiZXhwb3J0IGRlZmF1bHQgXCJpbWFnZXMvYmxvY2tzcGFyZS1saXN0LWxheW91dC0yLnBuZ1wiOyIsImV4cG9ydCBkZWZhdWx0IFwiaW1hZ2VzL2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtMy5wbmdcIjsiLCJcbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSAnbG9kYXNoL2lzVW5kZWZpbmVkJztcbmltcG9ydCBwaWNrQnkgZnJvbSAnbG9kYXNoL3BpY2tCeSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9jb21wb25lbnRzL2luc3BlY3Rvcic7XG5pbXBvcnQgYmxvZ1Bvc3RTdHlsZXMgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9ibG9nLXBvc3Qtc3R5bGVzXCI7XG5cbmNvbnN0IHtjb21wb3NlfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5jb25zdCB7ZGVjb2RlRW50aXRpZXN9ID0gd3AuaHRtbEVudGl0aWVzO1xuXG5jb25zdCB7XG4gICAgd2l0aFNlbGVjdCxcbn0gPSB3cC5kYXRhO1xuXG5jb25zdCB7XG4gICAgUGxhY2Vob2xkZXIsXG4gICAgU3Bpbm5lcixcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5cbmNsYXNzIExhdGVzdFBvc3RzQmxvY2tMaXN0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgcG9zdFR5cGUsXG4gICAgICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RUaXRsZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0QXV0aG9yLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RGF0ZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdEV4Y2VycHQsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RMaW5rLFxuICAgICAgICAgICAgICAgIGV4Y2VycHRMZW5ndGgsXG4gICAgICAgICAgICAgICAgcmVhZE1vcmVUZXh0LFxuICAgICAgICAgICAgICAgIGRlc2lnbixcbiAgICAgICAgICAgICAgICBwb3N0c1RvU2hvdyxcbiAgICAgICAgICAgICAgICBzZWN0aW9uVGFnLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgaW1hZ2VTaXplID0gJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29udGVudE9yZGVyLFxuICAgICAgICAgICAgICAgIHBvc3RUaXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIHBvc3RUaXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGxpbmtDb2xvcixcbiAgICAgICAgICAgICAgICBnZW5lcmFsQ29sb3IsXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBwb3N0c1xuICAgICAgICBjb25zdCBoYXNQb3N0cyA9IEFycmF5LmlzQXJyYXkobGF0ZXN0UG9zdHMpICYmIGxhdGVzdFBvc3RzLmxlbmd0aDtcblxuXG4gICAgICAgIC8vIENoZWNrIHRoZSBwb3N0IHR5cGVcbiAgICAgICAgY29uc3QgaXNQb3N0ID0gcG9zdFR5cGUgPT09ICdwb3N0JztcblxuICAgICAgICBpZiAoIWhhc1Bvc3RzKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiYWRtaW4tcG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0JTIEJsb2NrcyBQb3N0cyBMaXN0JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgeyFBcnJheS5pc0FycmF5KGxhdGVzdFBvc3RzKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNwaW5uZXIvPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX18oJ05vIHBvc3RzIGZvdW5kLicsICdibG9ja3NwYXJlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9QbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92aW5nIHBvc3RzIGZyb20gZGlzcGxheSBzaG91bGQgYmUgaW5zdGFudC5cbiAgICAgICAgY29uc3QgZGlzcGxheVBvc3RzID0gbGF0ZXN0UG9zdHMubGVuZ3RoID4gcG9zdHNUb1Nob3cgP1xuICAgICAgICAgICAgbGF0ZXN0UG9zdHMuc2xpY2UoMCwgcG9zdHNUb1Nob3cpIDpcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzO1xuXG4gICAgICAgIC8vIEFkZCB0b29sYmFyIGNvbnRyb2xzIHRvIGNoYW5nZSBsYXlvdXRcblxuXG4gICAgICAgIC8vIEdldCB0aGUgc2VjdGlvbiB0YWdcbiAgICAgICAgY29uc3QgU2VjdGlvblRhZyA9IHNlY3Rpb25UYWcgPyBzZWN0aW9uVGFnIDogXCJzZWN0aW9uXCI7XG5cblxuICAgICAgICAvLyBHZXQgdGhlIHNlY3Rpb24gc3R5bGVcbiAgICAgICAgbGV0ICBpdGVtU3R5bGUgPSB7fTtcbiAgICAgICAgaWYoZGVzaWduICE9ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTYnICYmIGRlc2lnbiAhPSAnYmxvY2tzcGFyZS1saXN0LWxheW91dC01JyAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtNCcpIHtcbiAgICAgICAgICAgIGl0ZW1TdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAuLi5ibG9nUG9zdFN0eWxlcyhhdHRyaWJ1dGVzKSxcblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgLy8gR2V0IHRoZSBwb3N0IHRpdGxlIHRhZ1xuICAgICAgICBjb25zdCBQb3N0VGFnID0gXCJoNFwiO1xuXG5cbiAgICAgICAgY29uc3QgZWRpdENvbnRlbnRQYWRkaW5nID0ge1xuICAgICAgICAgICAgbWFyZ2luVG9wOiBtYXJnaW5Ub3AgPyBtYXJnaW5Ub3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBtYXJnaW5Cb3R0b20gPyBtYXJnaW5Cb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGxpbmtjb2xvciA9IHtcbiAgICAgICAgICAgIGNvbG9yOmxpbmtDb2xvciA/IGxpbmtDb2xvciA6XCIjMTk3N2FjXCJcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBnZW5lcmFsY29sb3IgPXtcbiAgICAgICAgICAgIGNvbG9yOmdlbmVyYWxDb2xvcj9nZW5lcmFsQ29sb3I6JyMwMDAnXG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8U2VjdGlvblRhZ1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXBvc3Qtd3JhcCdcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2VkaXRDb250ZW50UGFkZGluZ30+XG5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWxhdGVzdC1wb3N0LXdyYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduLFxuICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1pcy1saXN0JyxcbiAgICAgICAgICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RzLm1hcCgocG9zdCwgaSkgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZWRJbWFnZVNyYyA9ICggKCBwb3N0LmZlYXR1cmVkX2ltYWdlX3VybHMgJiYgcG9zdC5mZWF0dXJlZF9pbWFnZV91cmxzWyBpbWFnZVNpemUgfHwgJ2xhcmdlJyBdICkgfHwgW10gKVsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVkSW1hZ2UgPSBmZWF0dXJlZEltYWdlU3JjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzc05hbWU9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXBvc3Qtc2luZ2xlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlc2lnbiAhPSAnYmxvY2tzcGFyZS1saXN0LWxheW91dC02JyAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtNScgJiYgZGVzaWduICE9ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTQnKT8naGFzLWJhY2tncm91bmQnOicnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtpdGVtU3R5bGV9PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVkSW1hZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXBvc3QtaW1nJyA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE+PGltZyBzcmM9eyBmZWF0dXJlZEltYWdlIH0gYWx0PXsgX18oICdmZWF0dXJlZCcsICdibG9ja3NwYXJlJyApIH0gLz48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZ3VyZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcG9zdC1jb250ZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRPcmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfSA+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWJsb2NrLXBvc3QtZ3JpZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RDYXRlZ29yeSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXBvc3QtY2F0ZWdvcnknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e19faHRtbDogcG9zdC5jYXRlZ29yeV9pbmZvLnJlcGxhY2UoL2hyZWY9WydcIl0uKj9bJ1wiXS9nLCAnJyl9fSBzdHlsZT17bGlua2NvbG9yfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkaXNwbGF5UG9zdFRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvc3RUYWcgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1ibG9jay1wb3N0LWdyaWQtdGl0bGVcIiBzdHlsZT17e2ZvbnRTaXplOnBvc3RUaXRsZUZvbnRTaXplKydweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnBvc3RUaXRsZUNvbG9yP3Bvc3RUaXRsZUNvbG9yOicjNDA0MDQwJyxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fXRhcmdldD1cIl9ibGFua1wiIHJlbD1cImJvb2ttYXJrXCI+e2RlY29kZUVudGl0aWVzKHBvc3QudGl0bGUucmVuZGVyZWQudHJpbSgpKSB8fCBfXygnKFVudGl0bGVkKScsICdibG9ja3NwYXJlJyl9PC9hPjwvUG9zdFRhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc1Bvc3QgJiYgKGRpc3BsYXlQb3N0QXV0aG9yIHx8IGRpc3BsYXlQb3N0RGF0ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLWJ5bGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RBdXRob3IgJiYgcG9zdC5hdXRob3JfaW5mby5kaXNwbGF5X25hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWJsb2NrLXBvc3QtZ3JpZC1hdXRob3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHN0eWxlPXtsaW5rY29sb3J9IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtdGV4dC1saW5rXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e3Bvc3QuYXV0aG9yX2luZm8uYXV0aG9yX2xpbmt9Pntwb3N0LmF1dGhvcl9pbmZvLmRpc3BsYXlfbmFtZX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlQb3N0RGF0ZSAmJiBwb3N0LmRhdGVfZ210ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aW1lIGRhdGVUaW1lPXttb21lbnQocG9zdC5kYXRlX2dtdCkudXRjKCkuZm9ybWF0KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2Jsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLWRhdGUnfSBzdHlsZT17Z2VuZXJhbGNvbG9yfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQocG9zdC5kYXRlX2dtdCkubG9jYWwoKS5mb3JtYXQoJ01NTU0gREQsIFknLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RpbWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoZGlzcGxheVBvc3RFeGNlcnB0IHx8IGRpc3BsYXlQb3N0TGluaykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1ibG9jay1wb3N0LWdyaWQtZXhjZXJwdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkaXNwbGF5UG9zdEV4Y2VycHQgJiYgcG9zdC5leGNlcnB0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17Z2VuZXJhbGNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tfX2h0bWw6IHRydW5jYXRlKHBvc3QuZXhjZXJwdC5yZW5kZXJlZCwgZXhjZXJwdExlbmd0aCl9fS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlQb3N0TGluayAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxhIHN0eWxlPXtsaW5rY29sb3J9IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLW1vcmUtbGluayBibG9ja3NwYXJlLXRleHQtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17cG9zdC5saW5rfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cImJvb2ttYXJrXCI+e3JlYWRNb3JlVGV4dH08L2E+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvU2VjdGlvblRhZz5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoU2VsZWN0KChzZWxlY3QsIHByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3Qge2dldEVudGl0eVJlY29yZHN9ID0gc2VsZWN0KCdjb3JlJyk7XG5cbiAgICAgICAgY29uc3QgbGF0ZXN0UG9zdHNRdWVyeSA9IHBpY2tCeSh7XG4gICAgICAgICAgICBjYXRlZ29yaWVzLFxuICAgICAgICAgICAgb3JkZXIsXG4gICAgICAgICAgICBvcmRlcmJ5OiBwcm9wcy5hdHRyaWJ1dGVzLm9yZGVyQnksXG4gICAgICAgICAgICBwZXJfcGFnZTogcHJvcHMuYXR0cmlidXRlcy5wb3N0c1RvU2hvdyxcbiAgICAgICAgICAgIG9mZnNldDogcHJvcHMuYXR0cmlidXRlcy5vZmZzZXQsXG4gICAgICAgIH0sICh2YWx1ZSkgPT4gIWlzVW5kZWZpbmVkKHZhbHVlKSk7XG5cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGF0ZXN0UG9zdHM6IGdldEVudGl0eVJlY29yZHMoJ3Bvc3RUeXBlJywgcHJvcHMuYXR0cmlidXRlcy5wb3N0VHlwZSwgbGF0ZXN0UG9zdHNRdWVyeSksXG4gICAgICAgIH07XG4gICAgfSksXG5dKShMYXRlc3RQb3N0c0Jsb2NrTGlzdCk7XG5cbi8vIFRydW5jYXRlIGV4Y2VycHRcbmZ1bmN0aW9uIHRydW5jYXRlKHN0ciwgbm9fd29yZHMpIHtcbiAgICByZXR1cm4gc3RyLnNwbGl0KFwiIFwiKS5zcGxpY2UoMCwgbm9fd29yZHMpLmpvaW4oXCIgXCIpO1xufVxuIiwiXG5pbXBvcnQgTGF0ZXN0UG9zdHNCbG9ja0xpc3QgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuXG5cbi8vIENvbXBvbmVudHNcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5cbi8vIFJlZ2lzdGVyIGJsb2NrIGNvbnRyb2xzXG5jb25zdCB7XG4gICAgcmVnaXN0ZXJCbG9ja1R5cGUsXG59ID0gd3AuYmxvY2tzO1xuXG4vLyBSZWdpc3RlciBhbGlnbm1lbnRzXG5jb25zdCBhbGlnbm1lbnRPcHRpb25zID0gWyAnY2VudGVyJywgJ3dpZGUnLCAnZnVsbCcgXTtcblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1sYXRlc3QtcG9zdHMtbGlzdCcsIHtcbiAgICB0aXRsZTogX18oICdCUyBQb3N0cyBMaXN0JywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkIHBvc3RzIGxpc3QgZnJvbSBzZWxlY3RlZCBjYXRlZ29yaWVzLicsICdibG9ja3NwYXJlJyApLFxuICAgIGNhdGVnb3J5OiAnYmxvY2tzcGFyZScsXG4gICAgaWNvbjogaWNvbnMucG9zdGxpc3QsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3Bvc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbGlzdCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdibG9nJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2FyY2hpdmUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYXJ0aWNsZScsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdsYXRlc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY2F0ZWdvcnknLCAnYmxvY2tzcGFyZScpLFxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyd3aWRlJywgJ2Z1bGwnLCdjZW50ZXInXSxcbiAgICB9LFxuICAgIGV4YW1wbGU6e1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgZGVzaWduOlwiYmxvY2tzcGFyZS1saXN0LWxheW91dC0xXCIsXG4gICAgICAgICAgICAgICAgcG9zdHNUb1Nob3c6MyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdENhdGVnb3J5OmZhbHNlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0QXV0aG9yOmZhbHNlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RGF0ZTpmYWxzZSxcbiAgICAgICAgICAgICAgICBpbWFnZVNpemU6XCJtZWRpdW1cIixcbiAgICAgICAgICAgICAgICBwb3N0VGl0bGVGb250U2l6ZToxNlxuICAgICAgICAgICAgfVxuICAgIH0sXG5cbiAgICBlZGl0OkxhdGVzdFBvc3RzQmxvY2tMaXN0LFxuICAgIHNhdmUoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG59ICk7XG4iLCIvKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcblxuLyoqXG4gKiBMaW5rIG9wdGlvbnMuXG4gKi9cbmNvbnN0IGNhcHRpb25PcHRpb25zID0gW1xuICAgIHtcbiAgICAgICAgdmFsdWU6ICdkYXJrJyxcbiAgICAgICAgLyogdHJhbnNsYXRvcnM6IHZpc3VhbCBzdHlsZSBvcHRpb24gKi9cbiAgICAgICAgbGFiZWw6IF9fKCAnRGFyaycsICdibG9ja3NwYXJlJyApLFxuICAgIH0sXG4gICAge1xuICAgICAgICB2YWx1ZTogJ2xpZ2h0JyxcbiAgICAgICAgLyogdHJhbnNsYXRvcnM6IHZpc3VhbCBzdHlsZSBvcHRpb24gKi9cbiAgICAgICAgbGFiZWw6IF9fKCAnTGlnaHQnLCAnYmxvY2tzcGFyZScgKSxcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdmFsdWU6ICdub25lJyxcbiAgICAgICAgLyogdHJhbnNsYXRvcnM6IHZpc3VhbCBzdHlsZSBvcHRpb24gKi9cbiAgICAgICAgbGFiZWw6IF9fKCAnTm9uZScsICdibG9ja3NwYXJlJyApLFxuICAgIH0sXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBjYXB0aW9uT3B0aW9ucztcbiIsIlxuXG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgU2VsZWN0Q29udHJvbCwgVG9nZ2xlQ29udHJvbCwgUGFuZWxCb2R5LCBUZXh0Q29udHJvbCB9ID0gd3AuY29tcG9uZW50cztcblxuY2xhc3MgR2FsbGVyeUxpbmtTZXR0aW5ncyBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICAgICAgdGhpcy5zZXROZXdUYWIgPSB0aGlzLnNldE5ld1RhYi5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc2V0TGlua1JlbCA9IHRoaXMuc2V0TGlua1JlbC5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc2V0TGlua1RvID0gdGhpcy5zZXRMaW5rVG8uYmluZCggdGhpcyApO1xuICAgIH1cblxuICAgIHNldExpbmtUbyggdmFsdWUgKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyggeyBsaW5rVG86IHZhbHVlIH0gKTtcbiAgICB9XG5cbiAgICBzZXRMaW5rUmVsKCB2YWx1ZSApIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IHJlbDogdmFsdWUgfSApO1xuICAgIH1cblxuICAgIHNldE5ld1RhYiggdmFsdWUgKSB7XG4gICAgICAgIGNvbnN0IHsgcmVsIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHZhbHVlID8gJ19ibGFuaycgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgbGV0IHVwZGF0ZWRSZWwgPSByZWw7XG4gICAgICAgIGlmICggdGFyZ2V0ICYmICEgcmVsICkge1xuICAgICAgICAgICAgdXBkYXRlZFJlbCA9ICdub3JlZmVycmVyIG5vb3BlbmVyJztcbiAgICAgICAgfSBlbHNlIGlmICggISB0YXJnZXQgJiYgcmVsID09PSAnbm9yZWZlcnJlciBub29wZW5lcicgKSB7XG4gICAgICAgICAgICB1cGRhdGVkUmVsID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICByZWw6IHVwZGF0ZWRSZWwsXG4gICAgICAgIH0gKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBsaWdodGJveCxcbiAgICAgICAgICAgIGxpbmtUbyxcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIHJlbCxcbiAgICAgICAgfSA9IGF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3QgbGlua09wdGlvbnMgPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiAnbm9uZScsIGxhYmVsOiBfXyggJ05vbmUnLCAnYmxvY2tzcGFyZScgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ21lZGlhJywgbGFiZWw6IF9fKCAnTWVkaWEgRmlsZScsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYXR0YWNobWVudCcsIGxhYmVsOiBfXyggJ0F0dGFjaG1lbnQgUGFnZScsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnY3VzdG9tJywgbGFiZWw6IF9fKCAnQ3VzdG9tIFVSTCcsICdibG9ja3NwYXJlJyApIH0sXG5cbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHsgISBsaWdodGJveCAmJlxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBfXyggJ0xpbmsgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdMaW5rIFRvJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBsaW5rVG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17IGxpbmtPcHRpb25zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgdGhpcy5zZXRMaW5rVG8gfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7IGxpbmtUbyAhPT0gJ25vbmUnICYmXG4gICAgICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ09wZW4gaW4gTmV3IFRhYicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IHRoaXMuc2V0TmV3VGFiIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXsgdGFyZ2V0ID09PSAnX2JsYW5rJyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHJhbnNsYXRvcnM6IGh0bWwgYXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0d28gcGFnZXMgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnTGluayBSZWwnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyByZWwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoIHsgcmVsOiB2YWx1ZSB9ICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHYWxsZXJ5TGlua1NldHRpbmdzO1xuIiwiaW1wb3J0IGNhcHRpb25PcHRpb25zIGZyb20gJy4vLi4vLi4vdXRpbHMvZ2FsbGVyeS9jYXB0aW9uLW9wdGlvbnMnO1xuaW1wb3J0IEdhbGxlcnlMaW5rU2V0dGluZ3MgZnJvbSBcIi4vLi4vLi4vdXRpbHMvZ2FsbGVyeS9nYWxsZXJ5LWxpbmstc2V0dGluZ3NcIjtcbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEluc3BlY3RvckNvbnRyb2xzIH0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHsgUGFuZWxCb2R5LCBSYW5nZUNvbnRyb2wsIFRvZ2dsZUNvbnRyb2wsIFNlbGVjdENvbnRyb2wgfSA9IHdwLmNvbXBvbmVudHM7XG5jbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgICAgIHRoaXMuc2V0Q2FwdGlvblN0eWxlVG8gPSB0aGlzLnNldENhcHRpb25TdHlsZVRvLmJpbmQoIHRoaXMgKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICAgIGlmICggdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmd1dHRlciA8PSAwICkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICAgICAgcmFkaXVzOiAwLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxuICAgIHNldENhcHRpb25TdHlsZVRvKCB2YWx1ZSApIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IGNhcHRpb25TdHlsZTogdmFsdWUgfSApO1xuICAgIH1cblxuICAgIGdldENhcHRpb25zSGVscCggY2hlY2tlZCApIHtcbiAgICAgICAgcmV0dXJuIGNoZWNrZWQgPyBfXyggJ1Nob3dpbmcgY2FwdGlvbnMgZm9yIGVhY2ggbWVkaWEgaXRlbS4nLCAnYmxvY2tzcGFyZScgKSA6IF9fKCAnVG9nZ2xlIHRvIHNob3cgbWVkaWEgY2FwdGlvbnMuJywgJ2Jsb2Nrc3BhcmUnICk7XG4gICAgfVxuXG5cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNhcHRpb25zLFxuICAgICAgICAgICAgY2FwdGlvblN0eWxlLFxuICAgICAgICAgICAgZ3V0dGVyLFxuICAgICAgICAgICAgZ3JpZFNpemVcblxuXG4gICAgICAgIH0gPSBhdHRyaWJ1dGVzO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtblNpemVzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnc21sJyxcbiAgICAgICAgICAgICAgICAvKiB0cmFuc2xhdG9yczogdmlzdWFsIHN0eWxlIG9wdGlvbiAqL1xuICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ1NtYWxsJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnbWVkJyxcbiAgICAgICAgICAgICAgICAvKiB0cmFuc2xhdG9yczogdmlzdWFsIHN0eWxlIG9wdGlvbiAqL1xuICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ01lZGl1bScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ2xyZycsXG4gICAgICAgICAgICAgICAgLyogdHJhbnNsYXRvcnM6IHZpc3VhbCBzdHlsZSBvcHRpb24gKi9cbiAgICAgICAgICAgICAgICBsYWJlbDogX18oICdMYXJnZScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5IHRpdGxlPXsgX18oICdNYXNvbnJ5IFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnICkgfT5cblxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0d1dHRlcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z3V0dGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtndXR0ZXI6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezUwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD17NX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnNwZWN0b3I7XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBmaWx0ZXIgZnJvbSAnbG9kYXNoL2ZpbHRlcic7XG5pbXBvcnQgKiBhcyBoZWxwZXIgZnJvbSBcIi4vLi4vLi4vdXRpbHMvaGVscGVyL21lZGlhLWhlbHBlci5qc1wiO1xuaW1wb3J0IEdhbGxlcnlJbWFnZSBmcm9tICBcIi4uLy4uL3V0aWxzL2dhbGxlcnkvZ2FsbGVyeS1pbWFnZVwiO1xuaW1wb3J0IEdhbGxlcnlEcm9wWm9uZSBmcm9tIFwiLi4vLi4vdXRpbHMvZ2FsbGVyeS9nYWxsZXJ5LWRyb3B6b25lXCI7XG5pbXBvcnQgR2FsbGVyeVBsYWNlaG9sZGVyIGZyb20gXCIuLi8uLi91dGlscy9nYWxsZXJ5L2dhbGxlcnktcGxhY2Vob2xkZXJcIjtcbmltcG9ydCBNYXNvbnJ5IGZyb20gJ3JlYWN0LW1hc29ucnktY29tcG9uZW50JztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSBcIi4vaW5zcGVjdG9yXCI7XG5cblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbmNvbnN0IHtDb21wb25lbnQsRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtjb21wb3NlfSA9d3AuY29tcG9zZTtcbmNvbnN0IHsgd2l0aFNlbGVjdCB9ID0gd3AuZGF0YTtcbmNvbnN0IHsgd2l0aE5vdGljZXMsVG9vbGJhcixJY29uQnV0dG9uIH0gPSB3cC5jb21wb25lbnRzO1xuXG5jb25zdCB7XG4gICAgQmxvY2tDb250cm9scyxcbiAgICBNZWRpYVVwbG9hZCxcbiAgICBNZWRpYVVwbG9hZENoZWNrLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmNvbnN0IG1hc29ucnlPcHRpb25zID0ge1xuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogMCxcbiAgICBwZXJjZW50UG9zaXRpb246IHRydWUsXG59O1xuY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICAgICAgdGhpcy5vblJlbW92ZUltYWdlID0gdGhpcy5vblJlbW92ZUltYWdlLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdEltYWdlID0gdGhpcy5vblNlbGVjdEltYWdlLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vbk1vdmVGb3J3YXJkID0gdGhpcy5vbk1vdmVGb3J3YXJkLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vbk1vdmVCYWNrd2FyZCA9IHRoaXMub25Nb3ZlQmFja3dhcmQuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLnNldEltYWdlQXR0cmlidXRlcyA9IHRoaXMuc2V0SW1hZ2VBdHRyaWJ1dGVzLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vbkVkaXRTZWxlY3RJbWFnZXMgPSB0aGlzLm9uRWRpdFNlbGVjdEltYWdlcy5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlOiBudWxsLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmdyaWRTaXplID09PSAneGxyZycgKSB7XG5cbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcygge1xuICAgICAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBncmlkU2l6ZTogJ2xyZycsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSggcHJldlByb3BzICkge1xuICAgICAgICAvLyBEZXNlbGVjdCBpbWFnZXMgd2hlbiBkZXNlbGVjdGluZyB0aGUgYmxvY2suXG4gICAgICAgIGlmICggISB0aGlzLnByb3BzLmlzU2VsZWN0ZWQgJiYgcHJldlByb3BzLmlzU2VsZWN0ZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZTogbnVsbCxcbiAgICAgICAgICAgICAgICBjYXB0aW9uU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RJbWFnZSggaW5kZXggKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuc3RhdGUuc2VsZWN0ZWRJbWFnZSAhPT0gaW5kZXggKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlOiBpbmRleCxcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Nb3ZlKCBvbGRJbmRleCwgbmV3SW5kZXggKSB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IFsgLi4udGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcyBdO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBuZXdJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgb2xkSW5kZXggXSApO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBvbGRJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgbmV3SW5kZXggXSApO1xuICAgICAgICB0aGlzLnNldFN0YXRlKCB7IHNlbGVjdGVkSW1hZ2U6IG5ld0luZGV4IH0gKTtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IGltYWdlcyB9ICk7XG4gICAgfVxuICAgIG9uTW92ZUZvcndhcmQoIG9sZEluZGV4ICkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCBvbGRJbmRleCA9PT0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcy5sZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlKCBvbGRJbmRleCwgb2xkSW5kZXggKyAxICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Nb3ZlQmFja3dhcmQoIG9sZEluZGV4ICkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCBvbGRJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uTW92ZSggb2xkSW5kZXgsIG9sZEluZGV4IC0gMSApO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBvblJlbW92ZUltYWdlKCBpbmRleCApIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlcyA9IGZpbHRlciggdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcywgKCBfaW1nLCBpICkgPT4gaW5kZXggIT09IGkgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHsgc2VsZWN0ZWRJbWFnZTogbnVsbCB9ICk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2V0SW1hZ2VBdHRyaWJ1dGVzKCBpbmRleCwgYXR0cmlidXRlcyApIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7IGltYWdlcyB9LCBzZXRBdHRyaWJ1dGVzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoICEgaW1hZ2VzWyBpbmRleCBdICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggMCwgaW5kZXggKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmltYWdlc1sgaW5kZXggXSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggaW5kZXggKyAxICksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9ICk7XG4gICAgfVxuXG4gICAgb25FZGl0U2VsZWN0SW1hZ2VzKCBpbWFnZXMgKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcygge1xuICAgICAgICAgICAgaW1hZ2VzOiBpbWFnZXMubWFwKCAoIGltYWdlICkgPT4gaGVscGVyLnBpY2tSZWxldmFudE1lZGlhRmlsZXMoIGltYWdlLCB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW1hZ2VzICkgKSxcbiAgICAgICAgfSApO1xuICAgIH1cblxuXG5cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBub3RpY2VVSSxcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgIGNhcHRpb25zLFxuICAgICAgICAgICAgZ3JpZFNpemUsXG4gICAgICAgICAgICBndXR0ZXIsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICBsaW5rVG8sXG4gICAgICAgIH0gPSBhdHRyaWJ1dGVzO1xuXG4gICAgICAgIGNvbnN0IGhhc0ltYWdlcyA9ICEhIGltYWdlcy5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgZHJvcFpvbmUgPSAoXG4gICAgICAgICAgICA8R2FsbGVyeURyb3Bab25lXG4gICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICk7XG5cblxuXG4gICAgICAgIGNvbnN0IG1hc29ucnlDbGFzc2VzID0gY2xhc3NuYW1lcyhcbiAgICAgICAgICAgIGBoYXMtZ3JpZC0keyBncmlkU2l6ZSB9YCwge1xuICAgICAgICAgICAgICAgIFsgYGhhcy1ndXR0ZXItJHsgZ3V0dGVyIH1gIF06IGd1dHRlciA+IDBcbiAgICAgICAgICAgIH1cblxuICAgICAgICApO1xuXG4gICAgICAgIGlmICggISBoYXNJbWFnZXMgKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxHYWxsZXJ5UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ01hc29ucnknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGljb249J2xpb25rJ1xuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgeyBpc1NlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7IC4uLnRoaXMucHJvcHMgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgICAgIHsgaGFzSW1hZ2VzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVkaWFVcGxvYWRDaGVjaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNZWRpYVVwbG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsgdGhpcy5vbkVkaXRTZWxlY3RJbWFnZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRUeXBlcz17IGhlbHBlci5BTExPV0VEX0dBTExFUllfTUVESUFfVFlQRVMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FsbGVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgaW1hZ2VzLm1hcCggKCBpbWcgKSA9PiBpbWcuaWQgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsgKCB7IG9wZW4gfSApID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbXBvbmVudHMtdG9vbGJhcl9fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnRWRpdCBnYWxsZXJ5JywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17IG9wZW4gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NZWRpYVVwbG9hZENoZWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLW1hc29ucnktd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgIHsgZHJvcFpvbmUgfVxuICAgICAgICAgICAgICAgICAgICA8TWFzb25yeVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFR5cGU9eyAndWwnIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IG1hc29ucnlDbGFzc2VzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9eyBtYXNvbnJ5T3B0aW9ucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlSW1hZ2VzTG9hZGVkPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlT25FYWNoSW1hZ2VMb2FkPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHsgaW1hZ2VzLm1hcCggKCBpbWcsIGluZGV4ICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJpYUxhYmVsID0gc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cmFuc2xhdG9yczogJTEkZCBpcyB0aGUgb3JkZXIgbnVtYmVyIG9mIHRoZSBpbWFnZSwgJTIkZCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGltYWdlcyAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fKCAnaW1hZ2UgJTEkZCBvZiAlMiRkIGluIGdhbGxlcnknLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGluZGV4ICsgMSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZ2FsbGVyeS1pdGVtXCIga2V5PXsgaW1nLmlkIHx8IGltZy51cmwgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdhbGxlcnlJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXsgaW1nLnVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9eyBpbWcuYWx0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXsgaW1nLmlkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0xpbms9eyBpbWcuaW1nTGluayB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVG89eyBsaW5rVG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaXJzdEl0ZW09eyBpbmRleCA9PT0gMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xhc3RJdGVtPXsgKCBpbmRleCArIDEgKSA9PT0gaW1hZ2VzLmxlbmd0aCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXsgaXNTZWxlY3RlZCAmJiB0aGlzLnN0YXRlLnNlbGVjdGVkSW1hZ2UgPT09IGluZGV4IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsgdGhpcy5vblNlbGVjdEltYWdlKCBpbmRleCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW92ZUJhY2t3YXJkPXsgdGhpcy5vbk1vdmVCYWNrd2FyZCggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdmVGb3J3YXJkPXsgdGhpcy5vbk1vdmVGb3J3YXJkKCBpbmRleCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlPXsgdGhpcy5vblJlbW92ZUltYWdlKCBpbmRleCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXM9eyAoIGF0dHJzICkgPT4gdGhpcy5zZXRJbWFnZUF0dHJpYnV0ZXMoIGluZGV4LCBhdHRycyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb249eyBpbWcuY2FwdGlvbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXsgYXJpYUxhYmVsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb25zPXsgY2FwdGlvbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNDYXB0aW9uPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW0gYmxvY2tzcGFyZS1nYWxsZXJ5LXVwbG9hZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaXNTZWxlY3RlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1hZGQtbW9yZS1zbGlkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lZGlhVXBsb2FkQ2hlY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lZGlhVXBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsgdGhpcy5vbkVkaXRTZWxlY3RJbWFnZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkVHlwZXM9eyBoZWxwZXIuQUxMT1dFRF9HQUxMRVJZX01FRElBX1RZUEVTIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FsbGVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGltYWdlcy5tYXAoICggaW1nICkgPT4gaW1nLmlkICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyAoIHsgb3BlbiB9ICkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhZnQtY3RhLWluc3BlY3Rvci1tZWRpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFZGl0IGltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGx1cy1hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge19fKCdBZGQgSW1hZ2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NZWRpYVVwbG9hZENoZWNrPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9NYXNvbnJ5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cblxuXG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZSggW1xuICAgIHdpdGhTZWxlY3QoICggc2VsZWN0ICkgPT4gKCB7XG4gICAgICAgIGVkaXRvclNpZGViYXJPcGVuZWQ6IHNlbGVjdCggJ2NvcmUvZWRpdC1wb3N0JyApLmlzRWRpdG9yU2lkZWJhck9wZW5lZCgpLFxuICAgICAgICBwbHVnaW5TaWRlYmFyT3BlbmVkOiBzZWxlY3QoICdjb3JlL2VkaXQtcG9zdCcgKS5pc1BsdWdpblNpZGViYXJPcGVuZWQoKSxcbiAgICAgICAgcHVibGlzaFNpZGViYXJPcGVuZWQ6IHNlbGVjdCggJ2NvcmUvZWRpdC1wb3N0JyApLmlzUHVibGlzaFNpZGViYXJPcGVuZWQoKSxcbiAgICAgICAgd2lkZUNvbnRyb2xzRW5hYmxlZDogc2VsZWN0KCAnY29yZS9lZGl0b3InICkuZ2V0RWRpdG9yU2V0dGluZ3MoKS5hbGlnbldpZGUsXG4gICAgfSApICksXG4gICAgd2l0aE5vdGljZXMsXG5dICkoIEVkaXQgKTtcbiIsIi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5cblxuY29uc3QgeyBSaWNoVGV4dCB9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHNhdmUgPSAoIHsgYXR0cmlidXRlcywgY2xhc3NOYW1lIH0gKSA9PiB7XG4gICAgY29uc3Qge1xuXG4gICAgICAgIGNhcHRpb25zLFxuICAgICAgICBncmlkU2l6ZSxcbiAgICAgICAgZ3V0dGVyLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIGxpbmtUbyxcbiAgICAgICAgbGlnaHRib3gsXG4gICAgICAgIHJlbCxcbiAgICAgICAgdGFyZ2V0LFxuICAgIH0gPSBhdHRyaWJ1dGVzO1xuXG4gICAgY29uc3QgaW5uZXJDbGFzc2VzID0gY2xhc3NuYW1lcyhcbiAgICAgICAgIHtcbiAgICAgICAgICAgICdoYXMtZ3V0dGVyJzogZ3V0dGVyID4gMCxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBtYXNvbnJ5Q2xhc3NlcyA9IGNsYXNzbmFtZXMoXG4gICAgICAgIGBoYXMtZ3JpZC0ke2dyaWRTaXplfWAsIHtcbiAgICAgICAgICAgIFsgYGhhcy1ndXR0ZXItJHsgZ3V0dGVyIH1gIF06IGd1dHRlciA+IDBcbiAgICAgICAgfVxuICAgICk7XG5cblxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtbWFzb25yeS13cmFwcGVyJyA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGlubmVyQ2xhc3NlcyB9ID5cbiAgICAgICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgbWFzb25yeUNsYXNzZXMgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgeyBpbWFnZXMubWFwKCAoIGltYWdlICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhyZWY7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoIGxpbmtUbyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZWRpYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBpbWFnZS51cmw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2F0dGFjaG1lbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gaW1hZ2UubGluaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW1hZ2UuaW1nTGluayApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gaW1hZ2UuaW1nTGluaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nID0gPGltZyBzcmM9eyBpbWFnZS51cmwgfSBhbHQ9eyBpbWFnZS5hbHQgfSBkYXRhLWlkPXsgaW1hZ2UuaWQgfSBkYXRhLWltZ2xpbms9eyBpbWFnZS5pbWdMaW5rIH0gZGF0YS1saW5rPXsgaW1hZ2UubGluayB9IGNsYXNzTmFtZT17IGltYWdlLmlkID8gYHdwLWltYWdlLSR7IGltYWdlLmlkIH1gIDogbnVsbCB9IC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9eyBpbWFnZS5pZCB8fCBpbWFnZS51cmwgfSBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWdhbGxlcnktaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlndXJlIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZ2FsbGVyeS1maWd1cmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaHJlZiA/IDxhIGhyZWY9eyBocmVmIH0gdGFyZ2V0PXsgdGFyZ2V0IH0gcmVsPXsgcmVsIH0+eyBpbWcgfTwvYT4gOiBpbWcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYXB0aW9ucyAmJiBpbWFnZS5jYXB0aW9uICYmIGltYWdlLmNhcHRpb24ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnQgdGFnTmFtZT1cImZpZ2NhcHRpb25cIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWdhbGxlcnktY2FwdGlvblwiIHZhbHVlPXsgaW1hZ2UuY2FwdGlvbiB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWd1cmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gKSB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgc2F2ZTtcbiIsIlxuY29uc3QgQnNHYWxsZXJ5QXR0cmlidXRlcyA9IHtcbiAgICBpbWFnZXM6IHtcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgZGVmYXVsdDogW10sXG4gICAgICAgIHNvdXJjZTogJ3F1ZXJ5JyxcbiAgICAgICAgc2VsZWN0b3I6ICcuYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW0nLFxuICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgdXJsOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogJ2ltZycsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnc3JjJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaW5rOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogJ2ltZycsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGF0YS1saW5rJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWdMaW5rOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogJ2ltZycsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGF0YS1pbWdsaW5rJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhbHQ6IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAnaW1nJyxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICdhbHQnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogJ2ltZycsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGF0YS1pZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FwdGlvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgICAgICAgc291cmNlOiAnY2hpbGRyZW4nLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAnZmlnY2FwdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgbGlua1RvOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0OiAnbm9uZScsXG4gICAgfSxcbiAgICB0YXJnZXQ6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgfSxcbiAgICByZWw6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgIH0sXG4gICAgYWxpZ246IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgfSxcbiAgICBndXR0ZXI6IHtcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlZmF1bHQ6IDE1LFxuICAgIH0sXG5cbiAgICBjYXB0aW9uczoge1xuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0sXG4gICAgY2FwdGlvblN0eWxlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0OiAnZGFyaycsXG4gICAgfSxcbiAgICBjYXB0aW9uQ29sb3I6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQnNHYWxsZXJ5QXR0cmlidXRlcztcbiIsImltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnXG5pbXBvcnQgc2F2ZSBmcm9tICcuL2NvbXBvbmVudHMvc2F2ZSc7XG5jb25zdCBwcmV2X2ltZyA9IGJsb2Nrc3BhcmVfZ2xvYmFscztcbmltcG9ydCBCc0dhbGxlcnlBdHRyaWJ1dGVzIGZyb20gJy4uL3V0aWxzL2dhbGxlcnkvYXR0cmlidXRlcyc7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5jb25zdCB7IG5hbWUsIGNhdGVnb3J5IH0gPSBtZXRhZGF0YTtcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMnO1xuY29uc3QgYXR0cmlidXRlcz17XG4gICAgLi4uQnNHYWxsZXJ5QXR0cmlidXRlcyxcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzXG59O1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgSW1hZ2UgTWFzb25yeScsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdBZGQgTWFzb25yeSBJdGVtcycsICdibG9ja3NwYXJlJyksXG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLm1hc29ucnksXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnaW1hZ2UnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbWFzb25yeScsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdnYWxsZXJ5JywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2NvbHVtbicsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbICd3aWRlJywgJ2Z1bGwnLCAnY2VudGVyJyBdLFxuICAgICAgICBodG1sOiB0cnVlXG4gICAgfSxcbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGdyaWRTaXplOiAnbHJnJyxcbiAgICAgICAgICAgIGd1dHRlcjogNSxcbiAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5pbWd9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5pbWd9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5pbWd9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5pbWd9XG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZWRpdDpFZGl0LFxuICAgIHNhdmVcblxufSk7IiwiaW1wb3J0IFBhZGRpbmcgZnJvbSAnLi8uLi8uLi91dGlscy9wYWRkaW5nJztcbmltcG9ydCBNYXJnaW4gZnJvbSAnLi8uLi8uLi91dGlscy9tYXJnaW4nO1xuaW1wb3J0IEJ1dHRvblNldHRpbmdzIGZyb20gJy4vLi4vLi4vYnV0dG9uL2J1dHRvbi1zZXR0aW5ncyc7XG5pbXBvcnQgR3JhZGllbnRDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ncmFkaWVudFwiO1xuaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiO1xuaW1wb3J0IEJTYnV0dG9uU2V0dGluZ3MgZnJvbSBcIi4uLy4uL2J1dHRvbi9idXR0b24tc2V0dGluZ3NcIjtcblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFRvZ2dsZUNvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgdGV4dHNDb2xvcixcbiAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgIGJveEJvcmRlckNvbG9yLFxuICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yLFxuICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgIGVuYWJsZUJ1dHRvbixcbiAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGVuYWJsZUdyYWRpZW50LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjIsXG4gICAgICAgICAgICBncmFkaWVudEFuZ2xlLFxuICAgICAgICAgICAgY29sb3JMb2NhdGlvbjEsXG4gICAgICAgICAgICBjb2xvckxvY2F0aW9uMixcbiAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgIGVuYWJsZUJveFNoYWRvdyxcbiAgICAgICAgICAgIHhPZmZzZXQsXG4gICAgICAgICAgICB5T2Zmc2V0LFxuICAgICAgICAgICAgYmx1cixcbiAgICAgICAgICAgIHNwcmVhZCxcbiAgICAgICAgICAgIHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgYnRuRm9udFdlaWdodCxcbiAgICAgICAgICAgIGJ0bkJvcmRlcldpZHRoXG5cblxuICAgICAgICB9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7c2V0QXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2VUZXh0c2NvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7dGV4dHNDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQm9yZGVyY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtib3hCb3JkZXJDb2xvcjogdmFsdWV9KTtcblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oXCJGb250IFNpemVcIixcImJsb2Nrc3BhcmVcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IGZvbnRTaXplOiB2YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwPXsyfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXszNn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdUZXh0cyBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0ZXh0c0NvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VUZXh0c2NvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1RleHRzIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYm94Qm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUJvcmRlcmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0Rhc2ggQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdQYWRkaW5nIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wPXtwYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9e3BhZGRpbmdUb3AgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVSaWdodD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1JpZ2h0PXtwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1JpZ2h0fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17cGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdCb3R0b219KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlZnQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nTGVmdH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdNYXJnaW4gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cblxuLyoqXG4gKiBDcmVhdGUgYSBCU05vdGljZUJhciB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCU05vdGljZUJhciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBib3hCb3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXNcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG4gICAgICAgICAgICAvL3RleHRBbGlnbjpcbiAgICAgICAgICAgIC4uLmJveFNoYWRvd1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpiYWNrR3JvdW5kQ29sb3I/YmFja0dyb3VuZENvbG9yOicjZmZmJyxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOmJveEJvcmRlckNvbG9yP2JveEJvcmRlckNvbG9yOicjY2MwMDAwJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogcGFkZGluZ1JpZ2h0ID8gcGFkZGluZ1JpZ2h0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1hcmdpblRvcDogbWFyZ2luVG9wID8gbWFyZ2luVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogbWFyZ2luQm90dG9tID8gbWFyZ2luQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czpib3JkZXJSYWRpdXMrXCJweFwiXG5cblxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1ub3RpY2ViYXItd3JhcHBlciBibG9ja3NwYXJlLWJsb2Nrcycgc3R5bGU9e2VkaXRTdHlsZXN9PnsgdGhpcy5wcm9wcy5jaGlsZHJlbiB9PC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBCU0J1dHRvbiBmcm9tICcuLy4uL2J1dHRvbi9lZGl0JztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSBcIi4vY29tcG9uZW50cy9pbnNwZWN0b3JcIjtcbmltcG9ydCBCU05vdGljZUJhciBmcm9tIFwiLi9jb21wb25lbnRzL2VkaXRcIjtcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tICcuLi91dGlscy9zdHlsZXMnO1xuaW1wb3J0IGJ1dHRvbkF0dHJpYnV0ZXMgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9idXR0b24nO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucyc7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1xuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgVVJMSW5wdXQsXG4gICAgQmxvY2tDb250cm9scyxcbiAgICBSaWNoVGV4dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBSZWdpc3RlciBjb21wb25lbnRzXG5jb25zdCB7XG5cbiAgICBJY29uQnV0dG9uLFxuICAgIERhc2hpY29uLFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuY29uc3Qge25hbWUsY2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cblxuY2xhc3MgQlNOb3RpY2VCYXJCbG9jayBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0LFxuICAgICAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgICAgICBidXR0b25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICBub3RpY2VDb250ZW50LFxuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgdGV4dHNDb2xvcixcbiAgICAgICAgICAgICAgICBlbmFibGVCdXR0b24sXG4gICAgICAgICAgICAgICAgZm9udFNpemUsXG5cblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBidG5TdHlsZXMgPXtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uKGF0dHJpYnV0ZXMpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1xuXG4gICAgICAgICAgICAvLyBTaG93IHRoZSBhbGlnbm1lbnQgdG9vbGJhciBvbiBmb2N1c1xuICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlY3Rpb25BbGlnbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe3NlY3Rpb25BbGlnbm1lbnQ6IHZhbHVlfSk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz4sXG5cblxuICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAvPixcblxuICAgICAgICAgICAgPEJTTm90aWNlQmFyIHsuLi50aGlzLnByb3BzfSA+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc2VjdGlvbi1ub3RpY2Utd3JhcFwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRleHRzQ29sb3IsXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cImRpdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ0FkZCB5b3VyIG5vdGljZSBoZXJlLi4nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25vdGljZUNvbnRlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOmZvbnRTaXplICsgXCJweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7bm90aWNlQ29udGVudDogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgeyBlbmFibGVCdXR0b24gJiYgKFxuXG4gICAgICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7Li4udGhpcy5wcm9wc30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdCdXR0b24gdGV4dC4uLicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtidXR0b25UZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRGb3JtYXRzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2J0blN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtidXR0b25UZXh0OiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzU2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cImZvcm0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJsb2Nrcy1idXR0b25fX2lubGluZS1saW5rIGJsb2Nrc3BhcmUtYnV0dG9uLSR7YnV0dG9uQWxpZ25tZW50fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hpY29uIGljb249eydhZG1pbi1saW5rcyd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVSTElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidXR0b24tdXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtidXR0b25Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtidXR0b25Vcmw6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWRpdG9yLWJyZWFrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnQXBwbHknLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICA8L0JTQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JTTm90aWNlQmFyPlxuICAgICAgICBdO1xuICAgIH1cbn1cblxuY29uc3QgYXR0cmlidXRlcyA9e1xuICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJ1dHRvbkF0dHJpYnV0ZXMsXG4gICAgLi4uYm94U2hhZG93QXR0cmlidXRlc1xufTtcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIE5vdGljZSBCYXInLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnQlMgTm90aWNlIEJhciBhbGxvdyB5b3UgdG8gYWRkIHZhcmlvdXMgdHlwZSBvZiBub3RpY2VzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5ub3RpY2UsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbm90aWNlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2JhcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdhbm5vdW5jZW1lbnQnLCAnYmxvY2tzcGFyZScpLFxuXG5cbiAgICBdLFxuXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgYWxpZ246IFsgJ3dpZGUnLCAnZnVsbCcsICdjZW50ZXInIF0sXG4gICAgICAgIGh0bWw6IHRydWVcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ0Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBlZGl0OiBCU05vdGljZUJhckJsb2NrLFxuICAgIHNhdmU6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgICAgICBidXR0b25VcmwsXG4gICAgICAgICAgICBidXR0b25UYXJnZXQsXG4gICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgbm90aWNlQ29udGVudCxcbiAgICAgICAgICAgIHRleHRzQ29sb3IsXG4gICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBib3hCb3JkZXJDb2xvcixcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICBlbmFibGVCdXR0b24sXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKHByb3BzLmF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgdGV4dEFsaWduOiBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrR3JvdW5kQ29sb3I/YmFja0dyb3VuZENvbG9yOicjZmZmJyxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBib3hCb3JkZXJDb2xvcj9ib3hCb3JkZXJDb2xvcjonI2NjMDAwMCcsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IHBhZGRpbmdSaWdodCA/IHBhZGRpbmdSaWdodCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBwYWRkaW5nQm90dG9tID8gcGFkZGluZ0JvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogcGFkZGluZ0xlZnQgPyBwYWRkaW5nTGVmdCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6IG1hcmdpblRvcCA/IG1hcmdpblRvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbSA/IG1hcmdpbkJvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6Ym9yZGVyUmFkaXVzK1wicHhcIlxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGJ0blN0eWxlcyA9e1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24ocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ub3RpY2ViYXItd3JhcHBlcicsXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzJyxcbiAgICAgICAgICAgICAgICAnYWxpZ24nICsgYWxpZ25cbiAgICAgICAgICAgICl9IHN0eWxlPXtlZGl0U3R5bGVzfT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zZWN0aW9uLW5vdGljZS13cmFwXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGV4dHNDb2xvcj90ZXh0c0NvbG9yOicjNGM0YzRjJyxcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcCc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm9wc30+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bm90aWNlQ29udGVudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJkaXZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtbm90aWNlLWNvbnRlbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtub3RpY2VDb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6Zm9udFNpemUgK1wicHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7IGVuYWJsZUJ1dHRvbiAmJiAoXG4gICAgICAgICAgICAgICAgPEJTQnV0dG9uIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgICAgICAgIHtcdC8vIENoZWNrIGlmIHRoZXJlIGlzIGJ1dHRvbiB0ZXh0IGFuZCBvdXRwdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2J1dHRvblVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PXtidXR0b25UYXJnZXQgPyAnX2JsYW5rJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD17YnV0dG9uVGFyZ2V0ID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2J0blN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YnV0dG9uVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvQlNCdXR0b24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn0pO1xuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbi8qKlxuICogQ3JlYXRlIGEgUHJpY2luZyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmljaW5nTGlzdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGFsaWduXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBjbGFzc25hbWVzKFtcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNlLWxpc3Qtc2VjdGlvbi1hZG1pbiBibG9ja3NwYXJlLXByaWNlLWxpc3QnXG4gICAgICAgIF0sIHtcbiAgICAgICAgICAgIFsgJ2FsaWduJyArYWxpZ24gXTogYWxpZ25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc05hbWUgPyBjbGFzc05hbWUgOiB1bmRlZmluZWQgfT5cbiAgICAgICAgICAgICAgICB7IHRoaXMucHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufSIsImltcG9ydCBCU0ljb25TZXR0aW5ncyBmcm9tICcuLi8uLi8uLi9pY29uLXNldC9jb21wb25lbnRzL2ljb24tc2V0dGluZ3MnO1xuaW1wb3J0IFBhZGRpbmcgZnJvbSAnLi8uLi8uLi8uLi91dGlscy9wYWRkaW5nJztcbmltcG9ydCBNYXJnaW4gZnJvbSAnLi8uLi8uLi8uLi91dGlscy9tYXJnaW4nO1xuaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50fSA9IHdwLmVsZW1lbnQ7XG5cblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbiAgICBUb2dnbGVDb250cm9sLFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGxheW91dE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgcHJpY2VVbml0UG9zaXRpb24sXG4gICAgICAgICAgICAgICAgc2hvd0RvdHMsXG4gICAgICAgICAgICAgICAgcHJpY2VUaXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIHByaWNlQ29sb3IsXG4gICAgICAgICAgICAgICAgcHJpY2VVbml0Q29sb3IsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIHByaWNlRGVzY3JpcHRpb25Db2xvcixcbiAgICAgICAgICAgICAgICBzaG93SW1hZ2UsXG4gICAgICAgICAgICAgICAgaW1nSWNvbk9wdGlvbixcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgIGljb25TdHlsZXMsXG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBpY29uQm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgYmxvY2tCb3JkZXJSYWRpdXMsXG4gICAgICAgICAgICAgICAgZW5hYmxlQm94U2hhZG93LFxuICAgICAgICAgICAgICAgIHhPZmZzZXQsXG4gICAgICAgICAgICAgICAgeU9mZnNldCxcbiAgICAgICAgICAgICAgICBibHVyLFxuICAgICAgICAgICAgICAgIHNwcmVhZCxcbiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcixcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBsaXN0TGF5b3V0T3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGF5b3V0MScsIGxhYmVsOiBfXygnTGF5b3V0IDEnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGF5b3V0MicsIGxhYmVsOiBfXygnTGF5b3V0IDInLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGF5b3V0MycsIGxhYmVsOiBfXygnTGF5b3V0IDMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHByaWNlVW5pdFBvc2l0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtYmVmb3JlLXByaWNlJywgbGFiZWw6IF9fKCdCZWZvcmUgUHJpY2UnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtYWZ0ZXItcHJpY2UnLCBsYWJlbDogX18oJ0FmdGVyIFByaWNlJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgaW1nSWNvbk9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6J2ljb24nLGxhYmVsOl9fKCdJY29uJywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTonaW1hZ2UnLGxhYmVsOl9fKCdJbWFnZScsJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBvbkNoYW5nZVRpdGxlQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtwcmljZVRpdGxlQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZVByaWNlQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtwcmljZUNvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZVByaWNlVW5pdENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7cHJpY2VVbml0Q29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlUHJpY2VEb3RDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe3ByaWNlRG90Q29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlUHJpY2VEZXNjcmlwdGlvbkNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7cHJpY2VEZXNjcmlwdGlvbkNvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZWltZ0ljb25PcHRpb24gPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtpbWdJY29uT3B0aW9uOiB2YWx1ZX0pO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgSW1hZ2UgJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3Nob3dJbWFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3Nob3dJbWFnZTogIXNob3dJbWFnZX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRGlzcGxheSBEb3RzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3Nob3dEb3RzfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7c2hvd0RvdHM6ICFzaG93RG90c30pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbG9yIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdDb2xvcnMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcmljZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VQcmljZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1ByaWNlIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJpY2VVbml0Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVByaWNlVW5pdENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1VuaXQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgR2FwcyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnUGFkZGluZyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wPXtwYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9e3BhZGRpbmdUb3AgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVSaWdodD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1JpZ2h0PXtwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1JpZ2h0fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17cGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdCb3R0b219KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlZnQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nTGVmdH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdNYXJnaW4gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYXJnaW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlVG9wPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcD17bWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Ub3A9e21hcmdpblRvcCA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Ub3B9KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIG1hcmdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZUJvdHRvbT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luQm90dG9tfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuXG4gICAgICAgICk7XG4gICAgfVxuXG59IiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vY29tcG9uZW50cy9pbnNwZWN0b3InO1xuaW1wb3J0IHBhZGRpbmdNYXJnaW4gZnJvbSAnLi4vLi4vdXRpbHMvc3R5bGVzL21hcmdpbi1wYWRkaW5nJztcbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgaWNvbkNvbG9yT3B0aW9ucyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL2ljb24tY29sb3JcIlxuY29uc3QgcHJldl9pbWcgPSBibG9ja3NwYXJlX2dsb2JhbHM7XG5cbmNvbnN0IEFMTE9XRURfQkxPQ0tTID0gWyAnY29yZS9pbWFnZSddO1xuY29uc3QgVEVNUExBVEUgPSBbXG4gICAgWydjb3JlL2ltYWdlJyx7XG4gICAgICAgIHVybDpwcmV2X2ltZy5tZW51X2ltZ191cmwsXG4gICAgICAgIGNsYXNzTmFtZTonaXMtc3R5bGUtY2lyY2xlLW1hc2snLFxuICAgICAgICB3aWR0aDoxMjAsXG4gICAgICAgIGhlaWdodDoxMjAsXG4gICAgICAgIGFsaWduOidjZW50ZXInLFxuXG4gICAgfV1cbl07XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5jb25zdCB7XG4gICAgUmljaFRleHQsXG4gICAgSW5uZXJCbG9ja3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuXG5cbi8qKlxuICogQmxvY2sgZWRpdCBmdW5jdGlvblxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHByaWNlLFxuICAgICAgICAgICAgICAgIHByaWNlVGl0bGUsXG4gICAgICAgICAgICAgICAgcHJpY2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBwcmljZVVuaXQsXG4gICAgICAgICAgICAgICAgbGF5b3V0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICBwcmljZVVuaXRQb3NpdGlvbixcbiAgICAgICAgICAgICAgICBzaG93RG90cyxcbiAgICAgICAgICAgICAgICBwcmljZVRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgcHJpY2VDb2xvcixcbiAgICAgICAgICAgICAgICBwcmljZVVuaXRDb2xvcixcbiAgICAgICAgICAgICAgICBwcmljZURlc2NyaXB0aW9uQ29sb3IsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIHNob3dJbWFnZSxcbiAgICAgICAgICAgICAgICBpbWdJY29uT3B0aW9uLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgaWNvblN0eWxlcyxcbiAgICAgICAgICAgICAgICBibG9ja0JvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgaWNvblN0eWxlc2NzcyA9e1xuXG4gICAgICAgICAgIC4uLmljb25Db2xvck9wdGlvbnMoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gKFxuXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvciAgey4uLnRoaXMucHJvcHN9Lz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1wcmljZS1saXN0LXdyYXAnLFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBwcmljZVVuaXRQb3NpdGlvblxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgLi4ucGFkZGluZ01hcmdpbihhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvcj9iYWNrZ3JvdW5kQ29sb3I6XCIjZmZmXCIsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogYmxvY2tCb3JkZXJSYWRpdXMgPyBibG9ja0JvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWltZy13cmFwcGVyYH0+XG5cbiAgICAgICAgICAgICAgICAgICAge3Nob3dJbWFnZSAmJiBpbWdJY29uT3B0aW9uID09J2ltYWdlJyAmJlxuICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXsgVEVNUExBVEUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEJsb2Nrcz17IEFMTE9XRURfQkxPQ0tTIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlTG9jaz17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVJbnNlcnRVcGRhdGVzU2VsZWN0aW9uPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIHtzaG93SW1hZ2UgJiYgaW1nSWNvbk9wdGlvbiA9PSdpY29uJyAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1ibG9jay1pY29uLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2staWNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0eWxlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtpY29uU3R5bGVzY3NzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9e25hbWV9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtcHJpY2UtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNlLWhlYWRlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJoNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtwcmljZVRpdGxlOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJpY2VUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlVGl0bGVDb2xvcj9wcmljZVRpdGxlQ29sb3I6XCIjNDA0MDQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93RG90cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtcHJpY2UtZGl2aWRlcicgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlRGVzY3JpcHRpb25Db2xvcj9wcmljZURlc2NyaXB0aW9uQ29sb3I6JyM2ZDZkNmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNlLXVuaXQtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtcHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7cHJpY2U6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJpY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlQ29sb3I/cHJpY2VDb2xvcjpcIiNhZjAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnUHJpY2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS11bml0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe3ByaWNlVW5pdDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcmljZVVuaXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlVW5pdENvbG9yP3ByaWNlVW5pdENvbG9yOlwiI2FmMDAwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCckJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe3ByaWNlRGVzY3JpcHRpb246IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ByaWNlRGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdEZXNjcmlwdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6cHJpY2VEZXNjcmlwdGlvbkNvbG9yP3ByaWNlRGVzY3JpcHRpb25Db2xvcjpcIiM2ZDZkNmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn0iLCJpbXBvcnQgcGFkZGluZ01hcmdpbiBmcm9tICcuLi8uLi91dGlscy9zdHlsZXMvbWFyZ2luLXBhZGRpbmcnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuaW1wb3J0IGljb25Db2xvck9wdGlvbnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9pY29uLWNvbG9yXCI7XG5jb25zdCB7XG4gICAgSW5uZXJCbG9ja3MsXG4gICAgUmljaFRleHRcbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnR7XG4gICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgICBwcmljZVRpdGxlLFxuICAgICAgICAgICAgICBwcmljZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICBwcmljZVVuaXQsXG4gICAgICAgICAgICAgIHByaWNlLFxuICAgICAgICAgICAgICBsYXlvdXRPcHRpb25zLFxuICAgICAgICAgICAgICBwcmljZVVuaXRQb3NpdGlvbixcbiAgICAgICAgICAgICAgc2hvd0RvdHMsXG4gICAgICAgICAgICAgIHByaWNlVGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgcHJpY2VDb2xvcixcbiAgICAgICAgICAgICAgcHJpY2VVbml0Q29sb3IsXG4gICAgICAgICAgICAgIHByaWNlRGVzY3JpcHRpb25Db2xvcixcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICBzaG93SW1hZ2UsXG4gICAgICAgICAgICAgIGltZ0ljb25PcHRpb24sXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICBpY29uU3R5bGVzLFxuICAgICAgICAgICAgICBibG9ja0JvcmRlclJhZGl1c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYXR0cmlidXRlc1xuXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCBpY29uU3R5bGVzY3NzID17XG4gICAgICAgICAgICAuLi5pY29uQ29sb3JPcHRpb25zKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1wcmljZS1saXN0LXdyYXAnLFxuICAgICAgICAgICAgICAgIGxheW91dE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgcHJpY2VVbml0UG9zaXRpb25cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAuLi5wYWRkaW5nTWFyZ2luKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3I/YmFja2dyb3VuZENvbG9yOlwiI2ZmZlwiLFxuICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBibG9ja0JvcmRlclJhZGl1cyA/IGJsb2NrQm9yZGVyUmFkaXVzIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgfX1cblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1pbWdlLXdyYXBwZXJgfT5cbiAgICAgICAgICAgICAgICB7c2hvd0ltYWdlICYmIGltZ0ljb25PcHRpb24gPT0naW1hZ2UnICYmXG4gICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge3Nob3dJbWFnZSAmJiBpbWdJY29uT3B0aW9uID09J2ljb24nICYmXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2staWNvbi13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1pY29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0eWxlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2ljb25TdHlsZXNjc3N9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPXtuYW1lfS8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtcHJpY2UtY29udGVudFwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcmljZS1oZWFkZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiaDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcmljZVRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlVGl0bGVDb2xvcj9wcmljZVRpdGxlQ29sb3I6XCIjNDA0MDQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93RG90cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXByaWNlLWRpdmlkZXInIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6cHJpY2VEZXNjcmlwdGlvbkNvbG9yP3ByaWNlRGVzY3JpcHRpb25Db2xvcjonIzZkNmQ2ZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNlLXVuaXQtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcmljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcmljZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlQ29sb3I/cHJpY2VDb2xvcjpcIiNhZjAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXVuaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJpY2VVbml0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6cHJpY2VVbml0Q29sb3I/cHJpY2VVbml0Q29sb3I6XCIjYWYwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ByaWNlRGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlRGVzY3JpcHRpb25Db2xvcj9wcmljZURlc2NyaXB0aW9uQ29sb3I6XCIjNmQ2ZDZkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cblxuXG59IiwiaW1wb3J0ICcuL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IG1hcmdpblBhZGRpbmcgZnJvbSAnLi4vLi4vdXRpbHMvYXR0cmlidXRlcy9tYXJnaW4tcGFkZGluZyc7XG5pbXBvcnQgIG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL0VkaXQnXG5pbXBvcnQgU2F2ZSBmcm9tICcuL1NhdmUnO1xuaW1wb3J0IGJveFNoYWRvd0F0dHJpYnV0ZXMgZnJvbSBcIi4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvd1wiO1xuXG5jb25zdCB7X199ID0gd3AuaTE4blxuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge2NhdGVnb3J5fSA9IG1ldGFkYXRhO1xuY29uc3QgYXR0cmlidXRlcyA9e1xuICAgIC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXMsXG4gICAgLi4ubWFyZ2luUGFkZGluZyxcbiAgICAuLi5ib3hTaGFkb3dBdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCBjb25zdCBwcmljZUxpc3RJdGVtU2V0dGluZ3MgPSB7XG4gICAgdGl0bGU6IF9fKCdQcmljZSBMaXN0IEl0ZW0nLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheSBjcmVhdGl2ZSBQcmljZSBMaXN0LCBNZW51IC4nLCAnYmxvY2tzcGFyZScpLFxuICAgIHBhcmVudDogWydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2UtbGlzdCddLFxuICAgIGljb246ICdsaW5rJyxcbiAgICBjYXRlZ29yeSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBodG1sOiBmYWxzZSxcbiAgICAgICAgaW5zZXJ0ZXI6IGZhbHNlLFxuICAgICAgICByZXVzYWJsZTogZmFsc2UsXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzLFxuXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOiBTYXZlXG59O1xuXG5yZWdpc3RlckJsb2NrVHlwZSgnYmxvY2tzcGFyZS9saXN0LWl0ZW0nLCBwcmljZUxpc3RJdGVtU2V0dGluZ3MpOyIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByaWNpbmdMaXN0IGZyb20gJy4vbGlzdC13cmFwcGVyJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24sUGFuZWxCb2R5IH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyBjcmVhdGVCbG9jayB9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyB3aXRoU2VsZWN0LCB3aXRoRGlzcGF0Y2ggfSA9IHdwLmRhdGE7XG5jb25zdCB7XG4gICAgSW5uZXJCbG9ja3MsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5jb25zdCAgeyBjb21wb3NlIH0gPXdwLmNvbXBvc2U7XG5cbmltcG9ydCB7IHByaWNlTGlzdEl0ZW1TZXR0aW5ncyB9IGZyb20gJy4vbGlzdC1pdGVtJztcbmNsYXNzIFByaWNlTGlzdEJsb2NrIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICBjb25zdCB7IHNldEF0dHJpYnV0ZXMsIGNsaWVudElkLCBhdHRyaWJ1dGVzOiB7IHVuaXF1ZUlkIH0gfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IF9jbGllbnQgPSBjbGllbnRJZC5zdWJzdHIoMCwgNik7XG4gICAgICAgIGlmICghdW5pcXVlSWQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh1bmlxdWVJZCAmJiB1bmlxdWVJZCAhPSBfY2xpZW50KSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdW5pcXVlSWQ6IF9jbGllbnQgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRQcmljZUl0ZW0oKSB7XG4gICAgICAgIGxldCBuZXdCbG9ja0F0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQsIGluc2VydEJsb2NrLCBibG9jayB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGJsb2NrLmlubmVyQmxvY2tzICYmIGJsb2NrLmlubmVyQmxvY2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbGFzdEJsb2NrQXR0cmlidXRlcyA9IGJsb2NrLmlubmVyQmxvY2tzW2Jsb2NrLmlubmVyQmxvY2tzLmxlbmd0aCAtIDFdLmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICBjb25zdCBpdGVtTnVtYmVyID0gbGFzdEJsb2NrQXR0cmlidXRlcy5pdGVtTnVtYmVyICsgMTtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRpbmcgPSBwcmljZUxpc3RJdGVtU2V0dGluZ3MuaGVhZGluZztcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIHt9LCB7IGl0ZW1OdW1iZXIsIGhlYWRpbmcsIGFjdGl2ZTogZmFsc2UsIGRlZmF1bHRUZXh0OiAnJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IHByaWNlTGlzdEl0ZW1TZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRCbG9jayhjcmVhdGVCbG9jaygnYmxvY2tzcGFyZS9saXN0LWl0ZW0nLCBuZXdCbG9ja0F0dHJpYnV0ZXMpLCB1bmRlZmluZWQsIGNsaWVudElkKTtcbiAgICB9XG5cbiAgICBnZXRQcmljZVRlbXBsYXRlID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtcyA9IGF0dHJpYnV0ZXMuZGVmYXVsdEl0ZW1zO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGRlZmF1bHRJdGVtczsgaysrKSB7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsnYmxvY2tzcGFyZS9saXN0LWl0ZW0nLCB7fV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgaXNTZWxlY3RlZEJsb2NrSW5Sb290LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQsIH0gfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrZ3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG5cblxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8UHJpY2luZ0xpc3Qgey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXt0aGlzLmdldFByaWNlVGVtcGxhdGUoYXR0cmlidXRlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkQmxvY2tzPXtbJ2Jsb2Nrc3BhcmUvbGlzdC1pdGVtJ119XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L1ByaWNpbmdMaXN0PlxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICBdXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoU2VsZWN0KChzZWxlY3QsIG93blByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQgfSA9IG93blByb3BzO1xuICAgICAgICBjb25zdCB7IGdldEJsb2NrLCBpc0Jsb2NrU2VsZWN0ZWQsIGhhc1NlbGVjdGVkSW5uZXJCbG9jayB9ID0gc2VsZWN0KCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2s6IGdldEJsb2NrKGNsaWVudElkKSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdDogaXNCbG9ja1NlbGVjdGVkKGNsaWVudElkKSB8fCBoYXNTZWxlY3RlZElubmVyQmxvY2soY2xpZW50SWQsIHRydWUpLFxuICAgICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhEaXNwYXRjaCgoZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnNlcnRCbG9jaywgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzIH0gPSBkaXNwYXRjaCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluc2VydEJsb2NrLFxuICAgICAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzXG4gICAgICAgIH07XG4gICAgfSksXG5dKShQcmljZUxpc3RCbG9jaylcblxuIiwiY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IElubmVyQmxvY2tzIH0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgU2F2ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGNvbnN0IHsgdW5pcXVlSWQsIGl0ZW1Ub2dnbGUsYWxpZ24sYmFja2dyb3VuZENvbG9yfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgaW50ZXJhY3Rpb25DbGFzcyA9ICdibG9ja3NwYXJlLWJsb2Nrcyc7XG5cbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGJsb2Nrc3BhcmUtYmxvY2stcHJpY2VsaXN0ICR7aW50ZXJhY3Rpb25DbGFzc30gYmxvY2tzcGFyZS1ibG9jay0ke3VuaXF1ZUlkfSBhbGlnbiR7YWxpZ259YDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NOYW1lIH0+XG4gICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFNhdmU7IiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBQcmljZUxpc3RCbG9jayBmcm9tICcuL2VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9zYXZlJztcbmltcG9ydCBpY29ucyBmcm9tIFwiLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4XCI7XG4vLyBJbnRlcm5hdGlvbmFsaXphdGlvblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbi8vIEV4dGVuZCBjb21wb25lbnRcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuLy8gUmVnaXN0ZXIgYmxvY2tcbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5cbi8vIFJlZ2lzdGVyIGVkaXRvciBjb21wb25lbnRzXG5jb25zdCB7XG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtuYW1lLCBjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG4vLyBSZWdpc3RlciB0aGUgYmxvY2tcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIFByaWNlIExpc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnQWRkIGEgcHJpY2UgbGlzdC4nLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLnByaWNpbmdMaXN0LFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3ByaWNlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2xpc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygndGFibGUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygncHJpY2luZycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdzaG9wJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3B1cmNoYXNlJywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgYWxpZ246IFsgJ3dpZGUnLCAnZnVsbCcsICdjZW50ZXInIF0sXG4gICAgICAgIGh0bWw6IHRydWVcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ2Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBlZGl0OiBQcmljZUxpc3RCbG9jayxcbiAgICBzYXZlOlNhdmVcblxufSk7XG4iLCIvLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuLyoqXG4gKiBDcmVhdGUgYSBQcmljaW5nIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByaWNpbmdUYWJsZSBleHRlbmRzIENvbXBvbmVudCB7XG5cblx0Y29uc3RydWN0b3IoIHByb3BzICkge1xuXHRcdHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcblx0fVxuXG5cdHJlbmRlcigpIHtcblxuXHRcdC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG5cdFx0Y29uc3Qge1xuXHRcdFx0YXR0cmlidXRlczoge1xuXHRcdFx0XHRjb2x1bW5zLFxuXHRcdFx0XHRjb2x1bW5zR2FwLFxuXHRcdFx0XHRhbGlnbixcblx0XHRcdH0sXG5cdFx0XHRhdHRyaWJ1dGVzXG5cdFx0fSA9IHRoaXMucHJvcHM7XG5cdFx0Y29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG5cdFx0XHR0aGlzLnByb3BzLmNsYXNzTmFtZSxcblx0XHRcdCdibG9ja3NwYXJlLXByaWNpbmctY29sdW1ucy0nICsgY29sdW1uc1xuXHRcdF0sIHtcblx0XHRcdFsgJ2FsaWduJyArIGFsaWduIF06IGFsaWduXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRpdiBjbGFzc05hbWU9eyBjbGFzc05hbWUgPyBjbGFzc05hbWUgOiB1bmRlZmluZWQgfSA+XG5cdFx0XHRcdHsgdGhpcy5wcm9wcy5jaGlsZHJlbiB9XG5cdFx0XHQ8L2Rpdj5cblx0XHQpO1xuXHR9XG59XG5cbiIsImltcG9ydCBNYXJnaW4gZnJvbSAnLi8uLi8uLi91dGlscy9tYXJnaW4nO1xuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcblx0SW5zcGVjdG9yQ29udHJvbHNcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG5cdFRvb2xiYXIsXG5cdEJ1dHRvbixcblx0UGFuZWxCb2R5LFxuXHRQYW5lbFJvdyxcblx0UmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblx0Y29uc3RydWN0b3IoIHByb3BzICkge1xuXHRcdHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcblx0fVxuXG5cdHJlbmRlcigpIHtcblxuXHRcdC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG5cdFx0Y29uc3Qge1xuXHRcdFx0YXR0cmlidXRlczoge1xuXHRcdFx0XHRjb2x1bW5zLFxuXHRcdFx0XHRjb2x1bW5zR2FwLFxuXHRcdFx0XHRtYXJnaW5Ub3AsXG5cdFx0XHRcdG1hcmdpbkJvdHRvbSxcblx0XHRcdH0sXG5cdFx0XHRpc1NlbGVjdGVkLFxuXHRcdFx0Y2xhc3NOYW1lLFxuXHRcdFx0c2V0QXR0cmlidXRlc1xuXHRcdH0gPSB0aGlzLnByb3BzO1xuXG5cdFx0cmV0dXJuIChcblx0XHQ8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXIgcHJpY2luZy10YWJsZS1ibG9ja3NwYXJlXCI+XG5cdFx0XHRcdDxQYW5lbEJvZHlcblx0XHRcdFx0XHR0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRpbml0aWFsT3Blbj17ZmFsc2V9XG5cdFx0XHRcdD5cblx0XHRcdFx0PFJhbmdlQ29udHJvbFxuXHRcdFx0XHRcdGxhYmVsPXsgX18oICdQcmljaW5nIENvbHVtbnMnLCAnYmxvY2tzcGFyZScgKSB9XG5cdFx0XHRcdFx0dmFsdWU9eyBjb2x1bW5zIH1cblx0XHRcdFx0XHRvbkNoYW5nZT17ICggdmFsdWUgKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoeyBjb2x1bW5zOiB2YWx1ZSB9KSB9XG5cdFx0XHRcdFx0bWluPXsgMSB9XG5cdFx0XHRcdFx0bWF4PXsgMyB9XG5cdFx0XHRcdFx0d2l0aElucHV0RmllbGQ9e2ZhbHNlfVxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8UmFuZ2VDb250cm9sXG5cdFx0XHRcdFx0bGFiZWw9eyBfXyggJ1ByaWNpbmcgQ29sdW1ucyBHYXAnLCAnYmxvY2tzcGFyZScgKSB9XG5cdFx0XHRcdFx0dmFsdWU9eyBjb2x1bW5zR2FwIH1cblx0XHRcdFx0XHR3aXRoSW5wdXRGaWVsZD17ZmFsc2V9XG5cdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY29sdW1uc0dhcDogdmFsdWUgfSkgfVxuXHRcdFx0XHRcdG1pbj17IDAgfVxuXHRcdFx0XHRcdG1heD17IDQgfVxuXHRcdFx0XHRcdHN0ZXA9eyAxIH1cblxuXG5cdFx0XHRcdC8+XG5cdFx0XHRcdDwvUGFuZWxCb2R5PlxuXHRcdFx0XHQ8UGFuZWxCb2R5XG5cdFx0XHRcdHRpdGxlPXtfXygnQmxvY2sgR2FwcycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdD5cblx0XHRcdFx0PE1hcmdpblxuXG5cdFx0XHRcdFx0Ly8gVG9wIHBhZGRpbmdcblx0XHRcdFx0XHRtYXJnaW5FbmFibGVUb3A9e3RydWV9XG5cdFx0XHRcdFx0bWFyZ2luVG9wPXttYXJnaW5Ub3B9XG5cdFx0XHRcdFx0bWFyZ2luVG9wTWluPVwiMFwiXG5cdFx0XHRcdFx0bWFyZ2luVG9wTWF4PVwiMTAwXCJcblx0XHRcdFx0XHRvbkNoYW5nZU1hcmdpblRvcD17bWFyZ2luVG9wID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpblRvcH0pfVxuXG5cblx0XHRcdFx0XHQvLyBCb3R0b20gbWFyZ2luXG5cdFx0XHRcdFx0bWFyZ2luRW5hYmxlQm90dG9tPXt0cnVlfVxuXHRcdFx0XHRcdG1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tfVxuXHRcdFx0XHRcdG1hcmdpbkJvdHRvbU1pbj1cIjBcIlxuXHRcdFx0XHRcdG1hcmdpbkJvdHRvbU1heD1cIjEwMFwiXG5cdFx0XHRcdFx0b25DaGFuZ2VNYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Cb3R0b219KX1cblxuXG5cdFx0XHRcdC8+XG5cdFx0XHQ8L1BhbmVsQm9keT5cblxuXHRcdFx0PC9kaXY+XG5cdFx0PC9JbnNwZWN0b3JDb250cm9scz5cblx0XHQpO1xuXHR9XG59XG4iLCJpbXBvcnQgaWNvbnMgZnJvbSBcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIjtcbmNvbnN0IEFMTE9XRURfTUVESUFfVFlQRVMgPSBbJ2ltYWdlJ107XG4vKipcbiAqIEluc3BlY3RvciBDb250cm9sc1xuICovXG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50LEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuXHRJbnNwZWN0b3JDb250cm9scyxcblx0QmxvY2tEZXNjcmlwdGlvbixcblx0TWVkaWFVcGxvYWQsXG5cdFBhbmVsQ29sb3JTZXR0aW5nc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcblx0RGFzaGljb24sXG5cdEJ1dHRvbixcblx0UGFuZWxCb2R5LFxuXHRTZWxlY3RDb250cm9sLFxuXHRGb3JtVG9nZ2xlLFxuXHRSYW5nZUNvbnRyb2wsXG5cdFRleHRDb250cm9sLFxuXHRUb2dnbGVDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblx0Y29uc3RydWN0b3IoIHByb3BzICkge1xuXHRcdHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcblx0fVxuXG5cdHJlbmRlcigpIHtcblxuXHRcdC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG5cdFx0Y29uc3QgeyBhdHRyaWJ1dGVzOiB7XG5cdFx0XHRib3JkZXJXaWR0aCxcblx0XHRcdGJvcmRlckNvbG9yLFxuXHRcdFx0Ym9yZGVyUmFkaXVzLFxuXHRcdFx0YmFja2dyb3VuZENvbG9yLFxuXHRcdFx0cGFkZGluZyxcblx0XHRcdHNlY3Rpb25TY2FsZSxcblx0XHRcdGVuYWJsZUJhZGdlLFxuXHRcdFx0YmFkZ2VUZXh0LFxuXHRcdFx0YmFkZ2VTdHlsZSxcblx0XHRcdGJhZGdlT3B0aW9uLFxuXHRcdFx0aW1nSUQxLFxuXHRcdFx0aW1nVVJMMSxcblx0XHRcdGltZ0FsdDEsXG5cdFx0XHRiYWRnZVRleHRDb2xvcixcblx0XHRcdGJhZGdlQmFja0dyb3VuZENvbG9yLFxuXHRcdFx0YmFkZ2VJbWdTaXplLFxuXHRcdFx0ZW5hYmxlQm94U2hhZG93LFxuXHRcdFx0eE9mZnNldCxcblx0XHRcdHlPZmZzZXQsXG5cdFx0XHRibHVyLFxuXHRcdFx0c3ByZWFkLFxuXHRcdFx0c2hhZG93Q29sb3IsXG5cblx0XHR9LFxuXHRcdFx0aXNTZWxlY3RlZCxcblx0XHRcdGNsYXNzTmFtZSxcblx0XHRcdHNldEF0dHJpYnV0ZXNcblx0XHR9ID0gdGhpcy5wcm9wcztcblxuXHRcdGNvbnN0IG9uQ2hhbmdlQm9yZGVyQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYm9yZGVyQ29sb3I6IHZhbHVlIH0pO1xuXHRcdGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IGJhY2tncm91bmRDb2xvcjogdmFsdWUgfSk7XG5cdFx0Y29uc3Qgb25DaGFuZ2VCYWRnZVN0eWxlID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFkZ2VTdHlsZTogdmFsdWV9KTtcblx0XHRjb25zdCBvbkNoYW5nZUJhZGdlT3B0aW9uID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFkZ2VPcHRpb246IHZhbHVlfSk7XG5cdFx0Y29uc3Qgb25DaGFuZ2VCYWRnZVRleHRDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2JhZGdlVGV4dENvbG9yOiB2YWx1ZX0pO1xuXHRcdGNvbnN0IG9uQ2hhbmdlQmFkZ2VCYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWRnZUJhY2tHcm91bmRDb2xvcjogdmFsdWV9KTtcblxuXHRcdGNvbnN0IGJhZGdlU3R5bGVPcHRpb25zID0gW1xuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1iYWRnZS1zdHlsZTEnLCBsYWJlbDogX18oJ1N0eWxlIDEnLCAnYmxvY2tzcGFyZScpfSxcblx0XHRcdHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtYmFkZ2Utc3R5bGUyJywgbGFiZWw6IF9fKCdTdHlsZSAyJywgJ2Jsb2Nrc3BhcmUnKX0sXG5cdFx0XHR7dmFsdWU6ICdibG9ja3NwYXJlLWJhZGdlLXN0eWxlMycsIGxhYmVsOiBfXygnU3R5bGUgMycsICdibG9ja3NwYXJlJyl9XG5cdFx0XTtcblxuXHRcdGNvbnN0IGJhZGdlT3B0aW9ucyA9IFtcblx0XHRcdHt2YWx1ZTogJ2JhZGdlLXRleHQnLCBsYWJlbDogX18oJ1RleHQnLCAnYmxvY2tzcGFyZScpfSxcblx0XHRcdHt2YWx1ZTogJ2JhZGdlLWltYWdlJywgbGFiZWw6IF9fKCdJbWFnZScsICdibG9ja3NwYXJlJyl9LFxuXG5cdFx0XTtcblxuXHRcdHJldHVybiAoXG5cdFx0PEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG5cblx0XHRcdFx0PFBhbmVsQm9keVxuXHRcdFx0XHRcdHRpdGxlPXtfXygnQmxvY2sgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PFJhbmdlQ29udHJvbFxuXHRcdFx0XHRcdFx0XHRsYWJlbD17IF9fKCAnUHJpY2luZyBDb2x1bW4gUGFkZGluZycsICdibG9ja3NwYXJlJyApIH1cblx0XHRcdFx0XHRcdFx0dmFsdWU9eyBwYWRkaW5nIH1cblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgcGFkZGluZzogdmFsdWUgfSkgfVxuXHRcdFx0XHRcdFx0XHRtaW49eyAwIH1cblx0XHRcdFx0XHRcdFx0bWF4PXsgMjAgfVxuXHRcdFx0XHRcdFx0XHRzdGVwPXsgMSB9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PFJhbmdlQ29udHJvbFxuXHRcdFx0XHRcdFx0XHRsYWJlbD17IF9fKCAnUHJpY2luZyBDb2x1bW4gQm9yZGVyJywgJ2Jsb2Nrc3BhcmUnICkgfVxuXHRcdFx0XHRcdFx0XHR2YWx1ZT17IGJvcmRlcldpZHRoIH1cblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgYm9yZGVyV2lkdGg6IHZhbHVlIH0pIH1cblx0XHRcdFx0XHRcdFx0bWluPXsgMCB9XG5cdFx0XHRcdFx0XHRcdG1heD17IDEwIH1cblx0XHRcdFx0XHRcdFx0c3RlcD17IDEgfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDxSYW5nZUNvbnRyb2xcblx0XHRcdFx0XHRcdFx0bGFiZWw9eyBfXyggJ1NjYWxlIFJhdGlvJywgJ2Jsb2Nrc3BhcmUnICkgfVxuXHRcdFx0XHRcdFx0XHR2YWx1ZT17IHNlY3Rpb25TY2FsZSB9XG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IHNlY3Rpb25TY2FsZTogdmFsdWUgfSkgfVxuXHRcdFx0XHRcdFx0XHRtaW49eyAwIH1cblx0XHRcdFx0XHRcdFx0bWF4PXsgMiB9XG5cdFx0XHRcdFx0XHRcdHN0ZXA9eyAxIH1cblx0XHRcdFx0XHRcdC8+XG5cblx0XHRcdFx0PC9QYW5lbEJvZHk+XG5cdFx0XHRcdDxQYW5lbEJvZHlcblx0XHRcdFx0XHR0aXRsZT17X18oJ0NvbG9yIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRpbml0aWFsT3Blbj17ZmFsc2V9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHRcdHsgKCAwIDwgYm9yZGVyV2lkdGggKSAmJiAoXG5cdFx0XHRcdFx0XHRcdDxQYW5lbENvbG9yU2V0dGluZ3Ncblx0XHRcdFx0XHRcdFx0XHR0aXRsZT17IF9fKCAnQm9yZGVyIENvbG9yJywgJ2Jsb2Nrc3BhcmUnICkgfVxuXHRcdFx0XHRcdFx0XHRcdGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuXHRcdFx0XHRcdFx0XHRcdGNvbG9yU2V0dGluZ3M9eyBbIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBib3JkZXJDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBvbkNoYW5nZUJvcmRlckNvbG9yLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCAnQm9yZGVyIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcblx0XHRcdFx0XHRcdFx0XHR9IF0gfVxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXHRcdFx0XHRcdFx0XHQpIH1cblx0XHRcdFx0XHRcdDxQYW5lbENvbG9yU2V0dGluZ3Ncblx0XHRcdFx0XHRcdFx0dGl0bGU9eyBfXyggJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScgKSB9XG5cdFx0XHRcdFx0XHRcdGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuXHRcdFx0XHRcdFx0XHRjb2xvclNldHRpbmdzPXsgWyB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGJhY2tncm91bmRDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCAnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyApXG5cdFx0XHRcdFx0XHRcdH0gXSB9XG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuXHRcdFx0XHQ8L1BhbmVsQm9keT5cblx0XHRcdDwvZGl2PlxuXHRcdDwvSW5zcGVjdG9yQ29udHJvbHM+XG5cdFx0KTtcblx0fVxufVxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9jb21wb25lbnRzL2luc3BlY3Rvcic7XG5cbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCBib3hTaGFkb3dBdHRyaWJ1dGVzIGZyb20gJy4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvdyc7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuXG4vLyBJbnRlcm5hdGlvbmFsaXphdGlvblxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcblxuLy8gRXh0ZW5kIGNvbXBvbmVudFxuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbi8vIFJlZ2lzdGVyIGJsb2NrXG5jb25zdCB7IHJlZ2lzdGVyQmxvY2tUeXBlIH0gPSB3cC5ibG9ja3M7XG5cbi8vIFJlZ2lzdGVyIGVkaXRvciBjb21wb25lbnRzXG5jb25zdCB7XG5cdElubmVyQmxvY2tzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG5cdEZyYWdtZW50XG59ID0gd3AuZWxlbWVudDtcblxuY29uc3QgQUxMT1dFRF9CTE9DS1MgPSBbXG5cdCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci10aXRsZScsXG5cdCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci1wcmljZScsXG5cdCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci1kZXNjcmlwdGlvbicsXG5cdCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci1idXR0b24nLFxuXHQnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWljb25zZXQnLFxuXTtcblxuY29uc3Qge25hbWUsY2F0ZWdvcnksfSA9IG1ldGFkYXRhO1xuXG5jb25zdCBhdHRyaWJ1dGVzPSB7XG5cdFx0Li4ubWV0YWRhdGEuYXR0cmlidXRlcyxcblx0XHQuLi5ib3hTaGFkb3dBdHRyaWJ1dGVzXG59O1xuXG5cbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xuXG5leHBvcnQgY29uc3QgcHJpY2VJdGVtU2V0dGluZ3MgPXtcblxuXHR0aXRsZTogX18oICdCUyBQcmljaW5nIENvbHVtbicsICdibG9ja3NwYXJlJyApLFxuXHRkZXNjcmlwdGlvbjogX18oICdBZGQgYSBwcmljaW5nIGNvbHVtbi4nLCAnYmxvY2tzcGFyZScgKSxcblx0aWNvbjogJ2NhcnQnLFxuXHRjYXRlZ29yeSxcblx0cGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZycgXSxcblx0a2V5d29yZHM6IFtcblx0XHRfXyggJ3ByaWNpbmcnLCAnYmxvY2tzcGFyZScgKSxcblx0XHRfXyggJ3Nob3AnLCAnYmxvY2tzcGFyZScgKSxcblx0XHRfXyggJ2J1eScsICdibG9ja3NwYXJlJyApXG5cdF0sXG5cdGF0dHJpYnV0ZXMsXG5cblx0Ly8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG5cdGVkaXQ6IGZ1bmN0aW9uKHByb3BzKXtcblxuXHRcdGNvbnN0IHtcblxuXHRcdFx0Ym9yZGVyV2lkdGgsXG5cdFx0XHRib3JkZXJDb2xvcixcblx0XHRcdGJvcmRlclJhZGl1cyxcblx0XHRcdGJhY2tncm91bmRDb2xvcixcblx0XHRcdHBhZGRpbmcsXG5cdFx0XHRhbGlnbm1lbnQsXG5cdFx0XHRzZWN0aW9uU2NhbGUsXG5cdFx0XHRlbmFibGVCYWRnZSxcblx0XHRcdGJhZGdlVGV4dCxcblx0XHRcdGJhZGdlU3R5bGUsXG5cdFx0XHRiYWRnZU9wdGlvbixcblx0XHRcdGltZ0lEMSxcblx0XHRcdGltZ1VSTDEsXG5cdFx0XHRpbWdBbHQxLFxuXHRcdFx0YmFkZ2VUZXh0Q29sb3IsXG5cdFx0XHRiYWRnZUJhY2tHcm91bmRDb2xvcixcblx0XHRcdGJhZGdlSW1nU2l6ZSxcblx0XHRcdGF0dHJpYnV0ZXMsXG5cdFx0XHRpc1NlbGVjdGVkLFxuXHRcdFx0Y2xhc3NOYW1lLFxuXHRcdFx0c2V0QXR0cmlidXRlc1xuXHRcdH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuXG5cdFx0Y29uc3Qgc3R5bGVzID0ge1xuXHRcdFx0Li4uYm94U2hhZG93U3R5bGVzKHByb3BzLmF0dHJpYnV0ZXMpLFxuXHRcdFx0Ym9yZGVyV2lkdGg6IGJvcmRlcldpZHRoID8gYm9yZGVyV2lkdGggOiBudWxsLFxuXHRcdFx0Ym9yZGVyU3R5bGU6IDAgPCBib3JkZXJXaWR0aCA/ICdzb2xpZCcgOiBudWxsLFxuXHRcdFx0Ym9yZGVyQ29sb3I6IGJvcmRlckNvbG9yID8gYm9yZGVyQ29sb3IgOiAnI2VjZWNlYycsXG5cdFx0XHRib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyA/IGJvcmRlclJhZGl1cyA6IG51bGwsXG5cdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvcj9iYWNrZ3JvdW5kQ29sb3I6JyNmZmYnLFxuXHRcdFx0cGFkZGluZzogcGFkZGluZyA/IHBhZGRpbmcgKyAnJScgOiBudWxsXG5cdFx0fTtcblx0XHRjb25zdCBiYWRnZVN0eWxlcyA9e1xuXHRcdFx0Y29sb3I6YmFkZ2VUZXh0Q29sb3I/YmFkZ2VUZXh0Q29sb3I6JyNmZmYnLFxuXHRcdFx0YmFja2dyb3VuZENvbG9yOmJhZGdlQmFja0dyb3VuZENvbG9yLFxuXG5cblx0XHR9O1xuXG5cdFx0Y29uc3QgYmFkZ2VJbWdTdHlsZT17XG5cdFx0XHR3aWR0aDpiYWRnZUltZ1NpemUrJ3B4J1xuXHRcdH07XG5cblx0XHRsZXQgYmFkZ2VjbGFzcyA9Jyc7XG5cdFx0aWYoZW5hYmxlQmFkZ2UgJiYgYmFkZ2VUZXh0ICYmIGJhZGdlT3B0aW9uPT09J2JhZGdlLXRleHQnKXtcblx0XHRcdGJhZGdlY2xhc3MgPSBiYWRnZVN0eWxlO1xuXHRcdH1cblx0XHRlbHNlIGlmKGVuYWJsZUJhZGdlICYmIGJhZGdlT3B0aW9uPT09J2JhZGdlLWltYWdlJyl7XG5cdFx0XHRiYWRnZWNsYXNzID0gYmFkZ2VTdHlsZStcIiBoYXMtaW1hZ2VcIjtcblx0XHR9ZWxzZXtcblx0XHRcdGJhZGdlY2xhc3MgPScnO1xuXHRcdH1cblxuXHRcdHJldHVybihcblxuXHRcdFx0PEZyYWdtZW50PlxuXG5cdFx0XHRcdDxJbnNwZWN0b3Jcblx0XHRcdFx0XHR7Li4ucHJvcHN9XG5cdFx0XHRcdC8+XG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRjbGFzc05hbWU9eyBjbGFzc25hbWVzKFxuXHRcdFx0XHRcdFx0YWxpZ25tZW50ID8gJ2Jsb2Nrc3BhcmUtYmxvY2stcHJpY2luZy10YWJsZS0nICsgYWxpZ25tZW50IDogJ2Jsb2Nrc3BhcmUtYmxvY2stcHJpY2luZy10YWJsZS1jZW50ZXInLFxuXHRcdFx0XHRcdFx0J2Jsb2Nrc3BhcmUtYmxvY2stcHJpY2luZy10YWJsZScsXG5cdFx0XHRcdFx0KSB9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG5cdFx0XHRcdFx0XHRcdCdibG9ja3NwYXJlLWJsb2NrLXByaWNpbmctdGFibGUtaW5zaWRlJyxcblx0XHRcdFx0XHRcdFx0YmFkZ2VjbGFzcyxcblx0XHRcdFx0XHRcdFx0c2NhbGVSYXRpb0NsYXNzKHNlY3Rpb25TY2FsZSksXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQnaGFzLXNjYWxlLXJhdGlvJzogMCAhPT0gc2VjdGlvblNjYWxlXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRzdHlsZT17IHN0eWxlcyB9PlxuXG5cdFx0XHRcdFx0XHR7ZW5hYmxlQmFkZ2UgJiYgYmFkZ2VUZXh0ICYmIGJhZGdlT3B0aW9uPT09J2JhZGdlLXRleHQnICYmXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmFkZ2Utd3JhcHBlclwiPlxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmFkZ2VcIj5cblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoYmFkZ2VTdHlsZSl9IHN0eWxlPXtiYWRnZVN0eWxlc30+e2JhZGdlVGV4dH08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR7ZW5hYmxlQmFkZ2UgJiYgYmFkZ2VPcHRpb249PT0nYmFkZ2UtaW1hZ2UnICYmXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhiYWRnZVN0eWxlKX0gc3R5bGU9e2JhZGdlSW1nU3R5bGV9PjxpbWcgc3JjPXtpbWdVUkwxfSBhbHQ9e2ltZ0FsdDF9Lz48L2Rpdj5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdDxJbm5lckJsb2Nrc1xuXHRcdFx0XHRcdFx0XHR0ZW1wbGF0ZT17W1xuXHRcdFx0XHRcdFx0XHRcdFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWljb25zZXQnLHtcblxuXHRcdFx0XHRcdFx0XHRcdH1dLFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQWRkIHBsYWNlaG9sZGVyIGJsb2Nrc1xuXHRcdFx0XHRcdFx0XHRcdFsgJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1wcmljaW5nLWlubmVyLXRpdGxlJywge1xuXHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyVGl0bGU6ICc8c3Ryb25nPiBQcmljZSBUaXRsZSA8L3N0cm9uZz4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyU3ViVGl0bGU6J0VudGVyIFN1YnRpdGxlJyxcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlUGFkZGluZ1RvcDogNSxcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlUGFkZGluZ0JvdHRvbTogNSxcblx0XHRcdFx0XHRcdFx0XHRcdHN1YnRpdGxlUGFkZGluZ1RvcDogMTAsXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJ0aXRsZVBhZGRpbmdCb3R0b206IDEwXG5cdFx0XHRcdFx0XHRcdFx0fSBdLFxuXG5cdFx0XHRcdFx0XHRcdFx0WyAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXItcHJpY2UnLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwcmljZTogJzU5Jyxcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbmN5OiAnJCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21Gb250U2l6ZTogMzIsXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXJtOiAnL21vJyxcblx0XHRcdFx0XHRcdFx0XHRcdHBhZGRpbmdUb3A6IDEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ1JpZ2h0OiAyMCxcblx0XHRcdFx0XHRcdFx0XHRcdHBhZGRpbmdCb3R0b206IDEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ0xlZnQ6IDIwXG5cdFx0XHRcdFx0XHRcdFx0fSBdLFxuXG5cdFx0XHRcdFx0XHRcdFx0WydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci1kZXNjcmlwdGlvbicse1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmVhdHVyZXM6ICc8bGk+NDAgVGVhbSBNZW1iZXJzPC9saT48bGk+NDAgUGVyc29uYWwgQ29udGFjdHM8L2xpPjxsaT40MDAwIE1lc3NhZ2U8L2xpPicsXG5cdFx0XHRcdFx0XHRcdFx0XHRtdWx0aWxpbmVUYWc6ICdsaScsXG5cdFx0XHRcdFx0XHRcdFx0XHRvcmRlcmVkOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbUZvbnRTaXplOiAxNixcblx0XHRcdFx0XHRcdFx0XHRcdEZvbnRTaXplOiAnc21hbGwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ1RvcDogMTUsXG5cdFx0XHRcdFx0XHRcdFx0XHRwYWRkaW5nUmlnaHQ6IDIwLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ0JvdHRvbTogMTUsXG5cdFx0XHRcdFx0XHRcdFx0XHRwYWRkaW5nTGVmdDogMjAsXG5cblx0XHRcdFx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHRcdFx0XHRbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1wcmljaW5nLWlubmVyLWJ1dHRvbicse1xuXHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uVGV4dDogJ0dldCBTdGFydGVkJyxcblx0XHRcdFx0XHRcdFx0XHRcdHBhZGRpbmdUb3A6IDE1LFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ1JpZ2h0OiAyMCxcblx0XHRcdFx0XHRcdFx0XHRcdHBhZGRpbmdCb3R0b206IDM1LFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ0xlZnQ6IDIwXG5cdFx0XHRcdFx0XHRcdFx0fV1cblx0XHRcdFx0XHRcdFx0XX1cblxuXHRcdFx0XHRcdFx0XHRhbGxvd2VkQmxvY2tzPXsgQUxMT1dFRF9CTE9DS1MgfVxuXHRcdFx0XHRcdFx0XHRyZW5kZXJBcHBlbmRlcj17ZmFsc2V9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvRnJhZ21lbnQ+XG5cdFx0KTtcblxuXHR9LFxuXG5cdC8vIFNhdmUgdGhlIGF0dHJpYnV0ZXMgYW5kIG1hcmt1cFxuXHRzYXZlOiBmdW5jdGlvbiggcHJvcHMgKSB7XG5cblx0XHQvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuXHRcdGNvbnN0IHtcblx0XHRcdGJvcmRlcldpZHRoLFxuXHRcdFx0Ym9yZGVyQ29sb3IsXG5cdFx0XHRib3JkZXJSYWRpdXMsXG5cdFx0XHRiYWNrZ3JvdW5kQ29sb3IsXG5cdFx0XHRhbGlnbm1lbnQsXG5cdFx0XHRwYWRkaW5nLFxuXHRcdFx0c2VjdGlvblNjYWxlLFxuXHRcdFx0ZW5hYmxlQmFkZ2UsXG5cdFx0XHRiYWRnZVRleHQsXG5cdFx0XHRiYWRnZVN0eWxlLFxuXHRcdFx0YmFkZ2VPcHRpb24sXG5cdFx0XHRpbWdJRDEsXG5cdFx0XHRpbWdVUkwxLFxuXHRcdFx0aW1nQWx0MSxcblx0XHRcdGJhZGdlVGV4dENvbG9yLFxuXHRcdFx0YmFkZ2VCYWNrR3JvdW5kQ29sb3IsXG5cdFx0XHRiYWRnZUltZ1NpemVcblx0XHR9ID0gcHJvcHMuYXR0cmlidXRlcztcblxuXHRcdGNvbnN0IHN0eWxlcyA9IHtcblx0XHRcdC4uLmJveFNoYWRvd1N0eWxlcyhwcm9wcy5hdHRyaWJ1dGVzKSxcblx0XHRcdGJvcmRlcldpZHRoOiBib3JkZXJXaWR0aCA/IGJvcmRlcldpZHRoIDogbnVsbCxcblx0XHRcdGJvcmRlclN0eWxlOiAwIDwgYm9yZGVyV2lkdGggPyAnc29saWQnIDogbnVsbCxcblx0XHRcdGJvcmRlckNvbG9yOiBib3JkZXJDb2xvciA/IGJvcmRlckNvbG9yIDogbnVsbCxcblx0XHRcdGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzID8gYm9yZGVyUmFkaXVzIDogbnVsbCxcblx0XHRcdGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yP2JhY2tncm91bmRDb2xvcjonI2ZmZicgLFxuXHRcdFx0cGFkZGluZzogcGFkZGluZyA/IHBhZGRpbmcgKyAnJScgOiBudWxsLFxuXHRcdH07XG5cblx0XHRjb25zdCBiYWRnZVN0eWxlcyA9e1xuXHRcdFx0Y29sb3I6YmFkZ2VUZXh0Q29sb3I/YmFkZ2VUZXh0Q29sb3I6JyNmZmYnLFxuXHRcdFx0YmFja2dyb3VuZENvbG9yOmJhZGdlQmFja0dyb3VuZENvbG9yLFxuXG5cdFx0fTtcblxuXHRcdGNvbnN0IGJhZGdlSW1nU3R5bGU9e1xuXHRcdFx0d2lkdGg6YmFkZ2VJbWdTaXplKydweCdcblx0XHR9O1xuXHRcdGxldCBiYWRnZWNsYXNzID0nJztcblx0XHRpZihlbmFibGVCYWRnZSAmJiBiYWRnZVRleHQgJiYgYmFkZ2VPcHRpb249PT0nYmFkZ2UtdGV4dCcpe1xuXHRcdFx0YmFkZ2VjbGFzcyA9IGJhZGdlU3R5bGU7XG5cdFx0fVxuXHRcdGVsc2UgaWYoZW5hYmxlQmFkZ2UgJiYgYmFkZ2VPcHRpb249PT0nYmFkZ2UtaW1hZ2UnKXtcblx0XHRcdGJhZGdlY2xhc3MgPSBiYWRnZVN0eWxlK1wiIGhhcy1pbWFnZVwiO1xuXHRcdH1lbHNle1xuXHRcdFx0YmFkZ2VjbGFzcyA9Jyc7XG5cdFx0fVxuXG5cdFx0Ly8gU2F2ZSB0aGUgYmxvY2sgbWFya3VwIGZvciB0aGUgZnJvbnQgZW5kXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXZcblx0XHRcdFx0Y2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcblx0XHRcdFx0XHRhbGlnbm1lbnQgPyAnYmxvY2tzcGFyZS1ibG9jay1wcmljaW5nLXRhYmxlLScgKyBhbGlnbm1lbnQgOiAnYmxvY2tzcGFyZS1ibG9jay1wcmljaW5nLXRhYmxlLWNlbnRlcicsXG5cdFx0XHRcdFx0J2Jsb2Nrc3BhcmUtYmxvY2stcHJpY2luZy10YWJsZScsXG5cdFx0XHRcdCkgfVxuXHRcdFx0XHRpdGVtU2NvcGVcblx0XHRcdFx0aXRlbVR5cGU9XCJodHRwOi8vc2NoZW1hLm9yZy9Qcm9kdWN0XCJcblx0XHRcdD5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcblx0XHRcdFx0XHRcdCdibG9ja3NwYXJlLWJsb2NrLXByaWNpbmctdGFibGUtaW5zaWRlJyxcblx0XHRcdFx0XHRcdGJhZGdlY2xhc3MsXG5cdFx0XHRcdFx0XHRzY2FsZVJhdGlvQ2xhc3Moc2VjdGlvblNjYWxlKSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQnaGFzLXNjYWxlLXJhdGlvJzogMCAhPT0gc2VjdGlvblNjYWxlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0c3R5bGU9eyBzdHlsZXMgfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e2VuYWJsZUJhZGdlICYmIGJhZGdlVGV4dCAmJiBiYWRnZU9wdGlvbj09PSdiYWRnZS10ZXh0JyAmJlxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1iYWRnZS13cmFwcGVyXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmFkZ2VcIj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPXtjbGFzc25hbWVzKGJhZGdlU3R5bGUpfSBzdHlsZT17YmFkZ2VTdHlsZXN9PntiYWRnZVRleHR9PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHtlbmFibGVCYWRnZSAmJiBiYWRnZU9wdGlvbj09PSdiYWRnZS1pbWFnZScgJiZcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhiYWRnZVN0eWxlKX0gc3R5bGU9e2JhZGdlSW1nU3R5bGV9PjxpbWcgc3JjPXtpbWdVUkwxfSBhbHQ9e2ltZ0FsdDF9Lz48L2Rpdj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0PElubmVyQmxvY2tzLkNvbnRlbnQgLz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQpO1xuXHR9XG59O1xuXG5yZWdpc3RlckJsb2NrVHlwZSgnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXInLCBwcmljZUl0ZW1TZXR0aW5ncyk7XG5cbmZ1bmN0aW9uIHNjYWxlUmF0aW9DbGFzcyhyYXRpbykge1xuXHRyZXR1cm4gJ2hhcy1zY2FsZS1yYXRpby0nICsgKDEgKiBNYXRoLnJvdW5kKHJhdGlvKSk7XG59XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcmljaW5nVGFibGUgZnJvbSAnLi9wcmljaW5nJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24sUGFuZWxCb2R5LFJhbmdlQ29udHJvbCxUb2dnbGVDb250cm9sIH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyBjcmVhdGVCbG9jayB9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyB3aXRoU2VsZWN0LCB3aXRoRGlzcGF0Y2ggfSA9IHdwLmRhdGE7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vaW5zcGVjdG9yJztcbmNvbnN0IHtcbiAgICBJbm5lckJsb2NrcyxcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0ICB7IGNvbXBvc2UgfSA9d3AuY29tcG9zZTtcblxuaW1wb3J0IHtwcmljZUl0ZW1TZXR0aW5ncyB9IGZyb20gJy4uL3ByaWNpbmctdGFibGUtaW5uZXInO1xuY2xhc3MgUHJpY2VMaXN0QmxvY2sgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcywgY2xpZW50SWQsIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQgfSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgX2NsaWVudCA9IGNsaWVudElkLnN1YnN0cigwLCA2KTtcbiAgICAgICAgaWYgKCF1bmlxdWVJZCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXF1ZUlkICYmIHVuaXF1ZUlkICE9IF9jbGllbnQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydFNlcnZpY2VJdGVtKCkge1xuICAgICAgICBsZXQgbmV3QmxvY2tBdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7IGNsaWVudElkLCBpbnNlcnRCbG9jaywgYmxvY2sgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChibG9jay5pbm5lckJsb2NrcyAmJiBibG9jay5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RCbG9ja0F0dHJpYnV0ZXMgPSBibG9jay5pbm5lckJsb2Nrc1tibG9jay5pbm5lckJsb2Nrcy5sZW5ndGggLSAxXS5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgY29uc3QgaXRlbU51bWJlciA9IGxhc3RCbG9ja0F0dHJpYnV0ZXMuaXRlbU51bWJlciArIDE7XG4gICAgICAgICAgICBjb25zdCBoZWFkaW5nID0gcHJpY2VJdGVtU2V0dGluZ3MuaGVhZGluZztcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIHt9LCB7IGl0ZW1OdW1iZXIsIGhlYWRpbmcsIGFjdGl2ZTogZmFsc2UsIGRlZmF1bHRUZXh0OiAnJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IHByaWNlSXRlbVNldHRpbmdzO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEJsb2NrKGNyZWF0ZUJsb2NrKCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lcicsIG5ld0Jsb2NrQXR0cmlidXRlcyksIHVuZGVmaW5lZCwgY2xpZW50SWQpO1xuICAgIH1cblxuICAgIGdldFNlcnZpY2VUZW1wbGF0ZSA9IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBjb25zdCBkZWZhdWx0SXRlbXMgPSBhdHRyaWJ1dGVzLmRlZmF1bHRJdGVtcztcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBkZWZhdWx0SXRlbXM7IGsrKykge1xuXG4gICAgICAgICAgICByZXN1bHQucHVzaChbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1wcmljaW5nLWlubmVyJywge31dKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICAgIGNvbHVtbnNHYXBcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtcHJpY2luZy1ibG9jay13cmFwcGVyJ1xuXG4gICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogbWFyZ2luVG9wID8gbWFyZ2luVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbSA/IG1hcmdpbkJvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICB9fT5cblxuICAgICAgICAgICAgICAgIDxQcmljaW5nVGFibGUgey4uLnRoaXMucHJvcHN9PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1wcmljaW5nLXRhYmxlLXdyYXAtYWRtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLXByaWNpbmctdGFibGUtZ2FwLScgKyBjb2x1bW5zR2FwXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU9e3RoaXMuZ2V0U2VydmljZVRlbXBsYXRlKGF0dHJpYnV0ZXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEJsb2Nrcz17WydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lciddfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQXBwZW5kZXI9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvUHJpY2luZ1RhYmxlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApXG5cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhTZWxlY3QoKHNlbGVjdCwgb3duUHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRJZCB9ID0gb3duUHJvcHM7XG4gICAgICAgIGNvbnN0IHsgZ2V0QmxvY2ssIGlzQmxvY2tTZWxlY3RlZCwgaGFzU2VsZWN0ZWRJbm5lckJsb2NrIH0gPSBzZWxlY3QoJ2NvcmUvYmxvY2stZWRpdG9yJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9jazogZ2V0QmxvY2soY2xpZW50SWQpLFxuICAgICAgICAgICAgaXNTZWxlY3RlZEJsb2NrSW5Sb290OiBpc0Jsb2NrU2VsZWN0ZWQoY2xpZW50SWQpIHx8IGhhc1NlbGVjdGVkSW5uZXJCbG9jayhjbGllbnRJZCwgdHJ1ZSksXG4gICAgICAgIH07XG4gICAgfSksXG4gICAgd2l0aERpc3BhdGNoKChkaXNwYXRjaCkgPT4ge1xuICAgICAgICBjb25zdCB7IGluc2VydEJsb2NrLCB1cGRhdGVCbG9ja0F0dHJpYnV0ZXMgfSA9IGRpc3BhdGNoKCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5zZXJ0QmxvY2ssXG4gICAgICAgICAgICB1cGRhdGVCbG9ja0F0dHJpYnV0ZXNcbiAgICAgICAgfTtcbiAgICB9KSxcbl0pKFByaWNlTGlzdEJsb2NrKVxuXG4iLCJpbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByaWNpbmdUYWJsZSBmcm9tICcuL2NvbXBvbmVudHMvcHJpY2luZyc7XG5pbXBvcnQgUHJpY2VMaXN0QmxvY2sgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnbWVtaXplJztcbmltcG9ydCB0aW1lcyBmcm9tICdsb2Rhc2gvdGltZXMnO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5cbi8vIEludGVybmF0aW9uYWxpemF0aW9uXG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuLy8gRXh0ZW5kIGNvbXBvbmVudFxuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG4vLyBSZWdpc3RlciBibG9ja1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcblxuLy8gUmVnaXN0ZXIgZWRpdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbm5lckJsb2Nrc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBTZXQgYWxsb3dlZCBibG9ja3MgYW5kIG1lZGlhXG5jb25zdCBBTExPV0VEX0JMT0NLUyA9IFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXInXTtcblxuLy8gR2V0IHRoZSBwcmljaW5nIHRlbXBsYXRlXG5jb25zdCBnZXRQcmljaW5nVGVtcGxhdGUgPSBtZW1vaXplKChjb2x1bW5zKSA9PiB7XG4gICAgcmV0dXJuIHRpbWVzKGNvbHVtbnMsICgpID0+IFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXInXSk7XG59KTtcblxuY29uc3Qge25hbWUsY2F0ZWdvcnksYXR0cmlidXRlc30gPSBtZXRhZGF0YTtcblxuXG4vLyBSZWdpc3RlciB0aGUgYmxvY2tcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIFByaWNpbmcgVGFibGUnLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnQWRkIGEgcHJpY2luZyB0YWJsZS4nLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLnByaWNpbmdUYWJsZSxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdibG9jaycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdwcmljZScsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdsaXN0JywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3RhYmxlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3ByaWNpbmcnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2hvcCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdwdXJjaGFzZScsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbICd3aWRlJywgJ2Z1bGwnLCAnY2VudGVyJyBdLFxuICAgICAgICBodG1sOiB0cnVlXG4gICAgfSxcblxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ2Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZWRpdDogUHJpY2VMaXN0QmxvY2ssXG5cbiAgICAvLyBTYXZlIHRoZSBhdHRyaWJ1dGVzIGFuZCBtYXJrdXBcbiAgICBzYXZlOiBmdW5jdGlvbiAocHJvcHMpIHtcblxuICAgICAgICBjb25zdCB7XG5cbiAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgIGNvbHVtbnNHYXAsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG5cbiAgICAgICAgfT1wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBjbGFzc25hbWVzKFtcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctdGFibGUtd3JhcCcsXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1wcmljaW5nLXRhYmxlLWdhcC0nICsgY29sdW1uc0dhcFxuICAgICAgICBdKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtcHJpY2luZy1ibG9jay13cmFwcGVyJyxcbiAgICAgICAgICAgICAgICAnYWxpZ24nICsgYWxpZ25cblxuICAgICAgICAgICAgKX0gIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiBtYXJnaW5Ub3AgPyBtYXJnaW5Ub3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogbWFyZ2luQm90dG9tID8gbWFyZ2luQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxQcmljaW5nVGFibGUgey4uLnByb3BzfT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lID8gY2xhc3NOYW1lIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9QcmljaW5nVGFibGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcblxuICAgIH1cbn0pO1xuIiwiaW1wb3J0IEJTSGVhZGVyU2V0dGluZ3MgZnJvbSBcIi4uLy4uLy4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyLXNldHRpbmdzXCI7XG4vLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge1xuICAgIHdpdGhGYWxsYmFja1N0eWxlcyxcbiAgICBQYW5lbEJvZHlcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVyc3VidGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIGRhc2hDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvclxuICAgICAgICAgICAgfSxcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3Qge3NldEF0dHJpYnV0ZXN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnSGVhZGVyIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPEJTSGVhZGVyU2V0dGluZ3NcblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQmxvY2tHYXBzPXtmYWxzZX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemUgPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVGb250U2l6ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb249e2hlYWRlcmxheW91dE9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSGVhZGVyU3R5bGU9e2hlYWRlcmxheW91dE9wdGlvbiA9PiBzZXRBdHRyaWJ1dGVzKHsgaGVhZGVybGF5b3V0T3B0aW9uIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUhlYWRlclRhZz17aGVhZGVyVGFnT3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRhZ09wdGlvbn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcj17aGVhZGVyYm94Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWJveGNvbG9yPXtoZWFkZXJib3hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJib3hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlRGFzaENvbG9yPXtkYXNoQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7ZGFzaENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3I9e2hlYWRlcnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tPXt0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ0JvdHRvbT0ge3RpdGxlUGFkZGluZ0JvdHRvbSA9PnNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZWNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJzdWJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ0JvdHRvbT17c3VidGl0bGVQYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ0JvdHRvbX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cblxuIiwiLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uLy4uLy4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5pbXBvcnQgZGFzaENvbG9ycyBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2hcIjtcbmltcG9ydCB0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGVcIjtcbmltcG9ydCBzdWJ0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGVcIjtcblxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge1xuXHRSaWNoVGV4dCxcblx0QWxpZ25tZW50VG9vbGJhcixcblx0QmxvY2tDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlciggLi4uYXJndW1lbnRzICk7XG5cdH1cblxuXHRyZW5kZXIoKSB7XG5cblx0XHQvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuXHRcdGNvbnN0IHtcblx0XHRcdGF0dHJpYnV0ZXM6IHtcblx0XHRcdFx0c2VjdGlvbkFsaWdubWVudCxcblx0XHRcdFx0aGVhZGVyVGFnT3B0aW9uLFxuXHRcdFx0XHRoZWFkZXJUaXRsZSxcblx0XHRcdFx0aGVhZGVyU3ViVGl0bGVcblx0XHRcdH0sXG5cdFx0XHRhdHRyaWJ1dGVzLFxuXHRcdFx0c2V0QXR0cmlidXRlcyxcblx0XHR9ID0gdGhpcy5wcm9wcztcblxuXHRcdGNvbnN0IHRpdGxlRGFzaFN0eWxlcyA9IHtcblx0XHRcdC4uLmRhc2hDb2xvcnMoYXR0cmlidXRlcylcblx0XHR9O1xuXG5cdFx0Y29uc3QgdGl0bGVTdHlsZXMgPSB7XG5cdFx0XHQuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG5cdFx0fTtcblxuXHRcdGNvbnN0IHN1YnRpdGxlU3R5bGVzID0ge1xuXHRcdFx0Li4uc3VidGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuXHRcdH07XG5cblxuXHRcdHJldHVybiBbXG5cdFx0XHQ8RnJhZ21lbnQ+XG5cblx0XHRcdFx0PEJsb2NrQ29udHJvbHMga2V5PVwiY29udHJvbHNcIj5cblx0XHRcdFx0XHQ8QWxpZ25tZW50VG9vbGJhclxuXHRcdFx0XHRcdFx0dmFsdWU9eyBzZWN0aW9uQWxpZ25tZW50IH1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCBuZXh0QWxpZ24gKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHNldEF0dHJpYnV0ZXMoeyBzZWN0aW9uQWxpZ25tZW50OiBuZXh0QWxpZ24gfSk7XG5cdFx0XHRcdFx0XHR9IH1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L0Jsb2NrQ29udHJvbHM+XG5cblx0XHRcdFx0PEluc3BlY3RvclxuXHRcdFx0XHRcdHsgLi4udGhpcy5wcm9wcyB9XG5cdFx0XHRcdC8+XG5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXNlY3Rpb24taGVhZC13cmFwXCI+XG5cdFx0XHRcdFx0PEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cblxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcHBlcic+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHQ8UmljaFRleHRcblx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG5cdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0XHRcdFx0a2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtoZWFkZXJUaXRsZX1cblx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9e3RpdGxlU3R5bGVzfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRpdGxlOiB2YWx1ZX0pfVxuXG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZS13cmFwcGVyJz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDxSaWNoVGV4dFxuXHRcdFx0XHRcdFx0XHRcdHRhZ05hbWU9XCJwXCJcblx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17X18oJ1N1YiBUaXRsZScsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0XHRcdFx0a2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cblx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclN1YlRpdGxlOiB2YWx1ZX0pfVxuXG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9CU0hlYWRlcj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L0ZyYWdtZW50PlxuXHRcdF07XG5cdH1cbn1cblxuXG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXJcIjtcbmltcG9ydCAgaWNvbnMgZnJvbSAnLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zJztcbmltcG9ydCBkYXNoQ29sb3JzIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvZGFzaFwiO1xuaW1wb3J0IHRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci90aXRsZVwiO1xuaW1wb3J0IHN1YnRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9zdWJ0aXRsZVwiO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge1xuXHRSaWNoVGV4dCxcblx0Z2V0Rm9udFNpemVDbGFzcyxcblx0Z2V0Q29sb3JDbGFzc05hbWVcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge25hbWUsIGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG5jb25zdCBhdHRyaWJ1dGVzID17XG5cdC4uLnNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzXG59O1xuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggbmFtZSwge1xuXHR0aXRsZTogX18oICdQcmljZSBUaXRsZScsICdibG9ja3NwYXJlJyApLFxuXHRkZXNjcmlwdGlvbjogX18oICdBZGRzIGEgcHJvZHVjdCB0aXRsZSBjb21wb25lbnQgd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuXHRjYXRlZ29yeSxcblx0aWNvbjogaWNvbnMuc2VjdGlvbkhlYWRlcixcblx0YXR0cmlidXRlcyxcblx0cGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lcicgXSxcblx0a2V5d29yZHM6IFtcblx0XHRfXyggJ3ByaWNpbmcgdGFibGUnLCAnYmxvY2tzcGFyZScgKSxcblx0XHRfXyggJ3RpdGxlJywgJ2Jsb2Nrc3BhcmUnICksXG5cdFx0X18oICdzaG9wJywgJ2Jsb2Nrc3BhcmUnIClcblx0XSxcblxuXHQvLyBSZW5kZXIgdGhlIGJsb2NrIGNvbXBvbmVudHNcblx0ZWRpdDogRWRpdCxcblxuXHQvLyBTYXZlIHRoZSBhdHRyaWJ1dGVzIGFuZCBtYXJrdXBcblx0c2F2ZTogZnVuY3Rpb24oIHByb3BzICkge1xuXG5cdFx0Y29uc3Qge1xuXHRcdFx0aGVhZGVyVGFnT3B0aW9uLFxuXHRcdFx0aGVhZGVyVGl0bGUsXG5cdFx0XHRoZWFkZXJTdWJUaXRsZVxuXHRcdH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuXG5cdFx0Y29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuXHRcdFx0Li4uZGFzaENvbG9ycyhwcm9wcy5hdHRyaWJ1dGVzKVxuXHRcdH07XG5cblx0XHRjb25zdCB0aXRsZVN0eWxlcyA9IHtcblx0XHRcdC4uLnRpdGxlQ29sb3IocHJvcHMuYXR0cmlidXRlcylcblx0XHR9O1xuXG5cdFx0Y29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG5cdFx0XHQuLi5zdWJ0aXRsZUNvbG9yKHByb3BzLmF0dHJpYnV0ZXMpXG5cdFx0fTtcblxuXHRcdC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuXHRcdHJldHVybiAoXG5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcCc+XG5cdFx0XHRcdFx0PEJTSGVhZGVyIHsuLi5wcm9wc30+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdHtoZWFkZXJUaXRsZSAmJlxuXG5cdFx0XHRcdFx0XHRcdDxSaWNoVGV4dC5Db250ZW50XG5cdFx0XHRcdFx0XHRcdFx0dGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT17dGl0bGVTdHlsZXN9XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e2hlYWRlclRpdGxlfVxuXG5cdFx0XHRcdFx0XHRcdC8+XG5cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHR7aGVhZGVyU3ViVGl0bGUgJiZcblx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0LkNvbnRlbnRcblx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPVwicFwiXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlJ1xuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG5cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvQlNIZWFkZXI+XG5cblx0XHRcdDwvZGl2PlxuXHRcdCk7XG5cdH1cbn0pO1xuIiwiXG5pbXBvcnQgUGFkZGluZyBmcm9tICcuLy4uLy4uLy4uLy4uL3V0aWxzL3BhZGRpbmcnO1xuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xuXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgRm9udFNpemVQaWNrZXIsXG4gICAgd2l0aEZvbnRTaXplcyxcbiAgICB3aXRoQ29sb3JzLFxuICAgIENvbnRyYXN0Q2hlY2tlcixcbiAgICBQYW5lbENvbG9yU2V0dGluZ3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge1xuICAgIHdpdGhGYWxsYmFja1N0eWxlcyxcbiAgICBQYW5lbEJvZHksXG4gICAgVG9nZ2xlQ29udHJvbCxcbiAgICBUZXh0Q29udHJvbCxcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vLyBBcHBseSBmYWxsYmFjayBzdHlsZXNcbmNvbnN0IGFwcGx5RmFsbGJhY2tTdHlsZXMgPSB3aXRoRmFsbGJhY2tTdHlsZXMoICggbm9kZSwgb3duUHJvcHMgKSA9PiB7XG4gICAgY29uc3QgeyB0ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvciwgZm9udFNpemUsIGN1c3RvbUZvbnRTaXplIH0gPSBvd25Qcm9wcy5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IGVkaXRhYmxlTm9kZSA9IG5vZGUucXVlcnlTZWxlY3RvciggJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyApO1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGVzID0gZWRpdGFibGVOb2RlID8gZ2V0Q29tcHV0ZWRTdHlsZSggZWRpdGFibGVOb2RlICkgOiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IgfHwgISBjb21wdXRlZFN0eWxlcyA/IHVuZGVmaW5lZCA6IGNvbXB1dGVkU3R5bGVzLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3I6IHRleHRDb2xvciB8fCAhIGNvbXB1dGVkU3R5bGVzID8gdW5kZWZpbmVkIDogY29tcHV0ZWRTdHlsZXMuY29sb3IsXG4gICAgICAgIGZhbGxiYWNrRm9udFNpemU6IGZvbnRTaXplIHx8IGN1c3RvbUZvbnRTaXplIHx8ICEgY29tcHV0ZWRTdHlsZXMgPyB1bmRlZmluZWQgOiBwYXJzZUludCggY29tcHV0ZWRTdHlsZXMuZm9udFNpemUgKSB8fCB1bmRlZmluZWRcbiAgICB9O1xufSk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5jbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBzaG93VGVybSxcbiAgICAgICAgICAgICAgICBzaG93Q3VycmVuY3ksXG4gICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBmYWxsYmFja0ZvbnRTaXplLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBzZXRGb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHNldFRleHRDb2xvcixcbiAgICAgICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3JcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5IHRpdGxlPXsgX18oICdCbG9jayBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnU2hvdyBjdXJyZW5jeSBzeW1ib2wnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXsgc2hvd0N1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc2hvd0N1cnJlbmN5OiAhIHNob3dDdXJyZW5jeSB9KSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIHsgc2hvd0N1cnJlbmN5ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdDdXJyZW5jeSBTeW1ib2wnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgY3VycmVuY3kgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IGN1cnJlbmN5OiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdTaG93IHByaWNpbmcgZHVyYXRpb24nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXsgc2hvd1Rlcm0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoeyBzaG93VGVybTogISBzaG93VGVybSB9KSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIHsgc2hvd1Rlcm0gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ1ByaWNpbmcgRHVyYXRpb24nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgdGVybSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgdGVybTogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgX18oICdDb2xvciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17IFtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRleHRDb2xvci5jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHNldFRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnVGV4dCBDb2xvcicsICdibG9ja3NwYXJlJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb250cmFzdENoZWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC4uLntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiB0ZXh0Q29sb3IuY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1RleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17IGZvbnRTaXplLnNpemUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQmxvY2sgR2FwcyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UGFkZGluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcD17IHBhZGRpbmdUb3AgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nVG9wIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVJpZ2h0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9eyBwYWRkaW5nUmlnaHQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nUmlnaHQ9eyBwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdSaWdodCB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlQm90dG9tPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tPXsgcGFkZGluZ0JvdHRvbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ0JvdHRvbT17IHBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdCb3R0b20gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWZ0IHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdD17IHBhZGRpbmdMZWZ0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXsgcGFkZGluZ0xlZnQgPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdMZWZ0IH0pIH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICBhcHBseUZhbGxiYWNrU3R5bGVzLFxuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJywgeyB0ZXh0Q29sb3I6ICdjb2xvcicgfSlcbl0pKCBJbnNwZWN0b3IgKTtcbiIsIi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IHJlZ2lzdGVyQmxvY2tUeXBlIH0gPSB3cC5ibG9ja3M7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnMsXG4gICAgQWxpZ25tZW50VG9vbGJhcixcbiAgICBCbG9ja0NvbnRyb2xzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIHByaWNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5LFxuICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgc2hvd1Rlcm0sXG4gICAgICAgICAgICAgICAgc2hvd0N1cnJlbmN5LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGZhbGxiYWNrRm9udFNpemUsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvclxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICAvLyBTZXR1cCB3cmFwcGVyIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGVkaXRDbGFzc1dyYXBwZXJOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1wcmljaW5nLXRhYmxlLXByaWNlLXdyYXAnOiB0cnVlLFxuICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgWyBiYWNrZ3JvdW5kQ29sb3IuY2xhc3MgXTogYmFja2dyb3VuZENvbG9yLmNsYXNzLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy1oYXMtY3VycmVuY3knOiBzaG93Q3VycmVuY3lcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2V0dXAgcHJpY2UgY2xhc3MgbmFtZXNcbiAgICAgICAgY29uc3QgZWRpdENsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy10YWJsZS1wcmljZSc6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplLmNsYXNzIF06IGZvbnRTaXplLmNsYXNzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldHVwIHdyYXBwZXIgc3R5bGVzXG4gICAgICAgIGNvbnN0IGVkaXRXcmFwU3R5bGVzID0ge1xuICAgICAgICAgICAgdGV4dEFsaWduOnNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvci5jb2xvcixcbiAgICAgICAgICAgIGNvbG9yOiB0ZXh0Q29sb3IuY29sb3I/dGV4dENvbG9yLmNvbG9yOlwiI2FmMDAwMFwiLFxuICAgICAgICAgICAgcGFkZGluZ1RvcDogcGFkZGluZ1RvcCA/IHBhZGRpbmdUb3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgPyBwYWRkaW5nUmlnaHQgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IHBhZGRpbmdMZWZ0ID8gcGFkZGluZ0xlZnQgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgcHJpY2Ugc3R5bGVzXG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG4gICAgICAgICAgICBmb250U2l6ZTogZm9udFNpemUuc2l6ZSA/IGZvbnRTaXplLnNpemUgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgY3VycmVuY3kgc3R5bGVzXG4gICAgICAgIHZhciBjdXJyZW5jeVNpemUgPSBNYXRoLmZsb29yKCBmb250U2l6ZS5zaXplIC8gMi41ICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5U3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLnNpemUgPyBjdXJyZW5jeVNpemUgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgdGVybSBzdHlsZXNcbiAgICAgICAgdmFyIHRlcm1TaXplID0gTWF0aC5mbG9vciggZm9udFNpemUuc2l6ZSAvIDIuNSApO1xuICAgICAgICBjb25zdCB0ZXJtU3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLnNpemUgPyB0ZXJtU2l6ZSArICdweCcgOiB1bmRlZmluZWRcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzIGtleT1cImNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHNlY3Rpb25BbGlnbm1lbnQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIG5leHRBbGlnbiApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgc2VjdGlvbkFsaWdubWVudDogbmV4dEFsaWduIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgZWRpdENsYXNzV3JhcHBlck5hbWUgPyBlZGl0Q2xhc3NXcmFwcGVyTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXsgZWRpdFdyYXBTdHlsZXMgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpdGVtUHJvcD1cIm9mZmVyc1wiIGl0ZW1TY29wZSBpdGVtVHlwZT1cImh0dHA6Ly9zY2hlbWEub3JnL09mZmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNob3dDdXJyZW5jeSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVByb3A9XCJwcmljZUN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9eyBfXyggJyQnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBjdXJyZW5jeSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBjdXJyZW5jeTogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNpbmctdGFibGUtY3VycmVuY3lcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGN1cnJlbmN5U3R5bGVzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtUHJvcD1cInByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17IF9fKCAnNDknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgcHJpY2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBwcmljZTogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXsgZWRpdFN0eWxlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgZWRpdENsYXNzTmFtZSA/IGVkaXRDbGFzc05hbWUgOiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hvd1Rlcm0gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgdGVybSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgX18oICcvbW8nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gc2V0QXR0cmlidXRlcyh7IHRlcm06IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcmljaW5nLXRhYmxlLXRlcm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17IHRlcm1TdHlsZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShbXG4gICAgd2l0aEZvbnRTaXplcyggJ2ZvbnRTaXplJyApLFxuICAgIHdpdGhDb2xvcnMoICdiYWNrZ3JvdW5kQ29sb3InLCB7IHRleHRDb2xvcjogJ2NvbG9yJyB9KVxuXSkoIEVkaXQgKTtcbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2VkaXQnO1xuXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7XG4gICAgUmljaFRleHQsXG4gICAgZ2V0Rm9udFNpemVDbGFzcyxcbiAgICBnZXRDb2xvckNsYXNzTmFtZVxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7bmFtZSwgY2F0ZWdvcnksYXR0cmlidXRlc30gPSBtZXRhZGF0YTtcblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggbmFtZSwge1xuICAgIHRpdGxlOiBfXyggJ1ByaWNlJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkcyBhIHByb2R1Y3QgcHJpY2UgY29tcG9uZW50IHdpdGggc2NoZW1hIG1hcmt1cC4nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBpY29uOiAnY2FydCcsXG4gICAgY2F0ZWdvcnksXG4gICAgcGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lcicgXSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXyggJ3ByaWNpbmcgdGFibGUnLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgX18oICd0aXRsZScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ3Nob3AnLCAnYmxvY2tzcGFyZScgKVxuICAgIF0sXG5cbiAgICBhdHRyaWJ1dGVzLFxuXG4gICAgLy8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG4gICAgZWRpdDpFZGl0LFxuXG4gICAgLy8gU2F2ZSB0aGUgYXR0cmlidXRlcyBhbmQgbWFya3VwXG4gICAgc2F2ZTogZnVuY3Rpb24oIHByb3BzICkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICBwcmljZSxcbiAgICAgICAgICAgIGN1cnJlbmN5LFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBjdXN0b21Gb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbVRleHRDb2xvcixcbiAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICBzaG93VGVybSxcbiAgICAgICAgICAgIHNob3dDdXJyZW5jeSxcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnRcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGZvbnRTaXplQ2xhc3NcbiAgICAgICAgY29uc3QgZm9udFNpemVDbGFzcyA9IGdldEZvbnRTaXplQ2xhc3MoIGZvbnRTaXplICk7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGdldENvbG9yQ2xhc3NOYW1lXG4gICAgICAgIGNvbnN0IHRleHRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCAnY29sb3InLCB0ZXh0Q29sb3IgKTtcbiAgICAgICAgY29uc3QgYmFja2dyb3VuZENsYXNzID0gZ2V0Q29sb3JDbGFzc05hbWUoICdiYWNrZ3JvdW5kLWNvbG9yJywgYmFja2dyb3VuZENvbG9yICk7XG5cbiAgICAgICAgLy8gU2V0dXAgd3JhcHBlciBjbGFzcyBuYW1lc1xuICAgICAgICBjb25zdCB3cmFwcGVyQ2xhc3NOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnaGFzLWJhY2tncm91bmQnOiBiYWNrZ3JvdW5kQ29sb3IgfHwgY3VzdG9tQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy10YWJsZS1wcmljZS13cmFwJzogdHJ1ZSxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzcyxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctaGFzLWN1cnJlbmN5Jzogc2hvd0N1cnJlbmN5ICYmIGN1cnJlbmN5XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy10YWJsZS1wcmljZSc6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplQ2xhc3MgXTogZm9udFNpemVDbGFzc1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZXR1cCBzdHlsZXNcbiAgICAgICAgY29uc3Qgd3JhcHBlclN0eWxlcyA9IHtcbiAgICAgICAgICAgIHRleHRBbGlnbjpzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ2xhc3MgPyB1bmRlZmluZWQgOiBjdXN0b21CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBjb2xvcjogdGV4dENvbG9yID8gdGV4dENvbG9yIDogJyNhZjAwMDAnLFxuICAgICAgICAgICAgcGFkZGluZ1RvcDogcGFkZGluZ1RvcCA/IHBhZGRpbmdUb3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgPyBwYWRkaW5nUmlnaHQgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IHBhZGRpbmdMZWZ0ID8gcGFkZGluZ0xlZnQgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZUNsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tRm9udFNpemVcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTZXR1cCBjdXJyZW5jeSBzdHlsZXNcbiAgICAgICAgdmFyIGNvbXB1dGVkRm9udFNpemUgPSBmb250U2l6ZUNsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tRm9udFNpemU7XG4gICAgICAgIHZhciBjdXJyZW5jeVNpemUgPSBNYXRoLmZsb29yKCBjb21wdXRlZEZvbnRTaXplIC8gMi41ICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5U3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGNvbXB1dGVkRm9udFNpemUgPyBjdXJyZW5jeVNpemUgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgdGVybSBzdHlsZXNcbiAgICAgICAgdmFyIHRlcm1TaXplID0gTWF0aC5mbG9vciggY29tcHV0ZWRGb250U2l6ZSAvIDIuNSApO1xuICAgICAgICBjb25zdCB0ZXJtU3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGNvbXB1dGVkRm9udFNpemUgPyB0ZXJtU2l6ZSArICdweCcgOiB1bmRlZmluZWRcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTYXZlIHRoZSBibG9jayBtYXJrdXAgZm9yIHRoZSBmcm9udCBlbmRcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyB3cmFwcGVyQ2xhc3NOYW1lID8gd3JhcHBlckNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyB3cmFwcGVyU3R5bGVzIH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1Qcm9wPVwib2ZmZXJzXCIgaXRlbVNjb3BlIGl0ZW1UeXBlPVwiaHR0cDovL3NjaGVtYS5vcmcvT2ZmZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgeyBjdXJyZW5jeSAmJiBzaG93Q3VycmVuY3kgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVByb3A9XCJwcmljZUN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNpbmctdGFibGUtY3VycmVuY3lcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXsgY3VycmVuY3lTdHlsZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Qcm9wPVwicHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBwcmljZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc05hbWUgPyBjbGFzc05hbWUgOiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7IHRlcm0gJiYgc2hvd1Rlcm0gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyB0ZXJtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNpbmctdGFibGUtdGVybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyB0ZXJtU3R5bGVzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfSxcbn0pO1xuIiwiaW1wb3J0IFBhZGRpbmcgZnJvbSBcIi4vLi4vLi4vLi4vLi4vdXRpbHMvcGFkZGluZ1wiO1xuaW1wb3J0IEJTTGlzdEljb25TZXR0aW5ncyAgZnJvbSAnLi4vLi4vLi4vLi4vbGlzdC9jb21wb25lbnRzL2ljb24tc2V0dGluZ3MnO1xuXG4vKipcbiAqIEluc3BlY3RvciBDb250cm9sc1xuICovXG5cblxuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xuXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgRm9udFNpemVQaWNrZXIsXG4gICAgd2l0aEZvbnRTaXplcyxcbiAgICB3aXRoQ29sb3JzLFxuICAgIENvbnRyYXN0Q2hlY2tlcixcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG4gICAgQ29sb3JQYWxldHRlXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICB3aXRoRmFsbGJhY2tTdHlsZXMsXG4gICAgUGFuZWxCb2R5LFxuICAgIFBhbmVsUm93LFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgQmFzZUNvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLy8gQXBwbHkgZmFsbGJhY2sgc3R5bGVzXG5jb25zdCBhcHBseUZhbGxiYWNrU3R5bGVzID0gd2l0aEZhbGxiYWNrU3R5bGVzKCAoIG5vZGUsIG93blByb3BzICkgPT4ge1xuICAgIGNvbnN0IHsgdGV4dENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IsIGZvbnRTaXplLCBjdXN0b21Gb250U2l6ZSB9ID0gb3duUHJvcHMuYXR0cmlidXRlcztcbiAgICBjb25zdCBlZGl0YWJsZU5vZGUgPSBub2RlLnF1ZXJ5U2VsZWN0b3IoICdbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScgKTtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlcyA9IGVkaXRhYmxlTm9kZSA/IGdldENvbXB1dGVkU3R5bGUoIGVkaXRhYmxlTm9kZSApIDogbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBmYWxsYmFja0JhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yIHx8ICEgY29tcHV0ZWRTdHlsZXMgPyB1bmRlZmluZWQgOiBjb21wdXRlZFN0eWxlcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgIGZhbGxiYWNrVGV4dENvbG9yOiB0ZXh0Q29sb3IgfHwgISBjb21wdXRlZFN0eWxlcyA/IHVuZGVmaW5lZCA6IGNvbXB1dGVkU3R5bGVzLmNvbG9yLFxuICAgICAgICBmYWxsYmFja0ZvbnRTaXplOiBmb250U2l6ZSB8fCBjdXN0b21Gb250U2l6ZSB8fCAhIGNvbXB1dGVkU3R5bGVzID8gdW5kZWZpbmVkIDogcGFyc2VJbnQoIGNvbXB1dGVkU3R5bGVzLmZvbnRTaXplICkgfHwgdW5kZWZpbmVkXG4gICAgfTtcbn0pO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBJbnNwZWN0b3IgQ29udHJvbHMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGUsXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGgsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGxpc3RUeXBlLFxuICAgICAgICAgICAgICAgIG9yZGVyTGlzdFN0eWxlLFxuICAgICAgICAgICAgICAgIGNvbG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBmYWxsYmFja0ZvbnRTaXplLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBzZXRGb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHNldFRleHRDb2xvcixcbiAgICAgICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3JcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgLy8gQm9yZGVyIHN0eWxlc1xuICAgICAgICBjb25zdCBib3JkZXJTdHlsZXMgPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1saXN0LWJvcmRlci1ub25lJywgbGFiZWw6IF9fKCAnTm9uZScgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGlzdC1ib3JkZXItc29saWQnLCBsYWJlbDogX18oICdTb2xpZCcgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGlzdC1ib3JkZXItZG90dGVkJywgbGFiZWw6IF9fKCAnRG90dGVkJyApIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1saXN0LWJvcmRlci1kYXNoZWQnLCBsYWJlbDogX18oICdEYXNoZWQnICkgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQm9yZGVyQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYm9yZGVyQ29sb3I6IHZhbHVlIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5IHRpdGxlPXtfXygnQ3VzdG9tIExpc3QgU2V0dGluZ3MnKX0gaW5pdGlhbE9wZW49e2ZhbHNlfT5cblxuICAgICAgICAgICAgICAgICAgICA8QlNMaXN0SWNvblNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VOYW1lPXtuYW1lID0+IHNldEF0dHJpYnV0ZXMoeyBuYW1lIH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0VHlwZT17bGlzdFR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUxpc3RTdHlsZT17bGlzdFR5cGUgPT4gc2V0QXR0cmlidXRlcyh7bGlzdFR5cGV9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyTGlzdFN0eWxlPXtvcmRlckxpc3RTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlT3JkZXJMaXN0U3R5bGU9e29yZGVyTGlzdFN0eWxlID0+IHNldEF0dHJpYnV0ZXMoe29yZGVyTGlzdFN0eWxlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlQ29sb3I9e2NvbG9yPT5zZXRBdHRyaWJ1dGVzKHtjb2xvcn0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9eyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogc2V0QmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbnRyYXN0Q2hlY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4ue1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IHRleHRDb2xvci5jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IuY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0JhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXsgZm9udFNpemUuc2l6ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBfXyggJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVUb3A9eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nVG9wPXsgcGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHsgcGFkZGluZ1RvcCB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJpZ2h0IHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVSaWdodD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0PXsgcGFkZGluZ1JpZ2h0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1JpZ2h0PXsgcGFkZGluZ1JpZ2h0ID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nUmlnaHQgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZUJvdHRvbT17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17IHBhZGRpbmdCb3R0b20gfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdCb3R0b209eyBwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nQm90dG9tIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVmdCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlTGVmdD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ9eyBwYWRkaW5nTGVmdCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nTGVmdD17IHBhZGRpbmdMZWZ0ID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nTGVmdCB9KSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShbXG4gICAgYXBwbHlGYWxsYmFja1N0eWxlcyxcbiAgICB3aXRoRm9udFNpemVzKCAnZm9udFNpemUnICksXG4gICAgd2l0aENvbG9ycyggJ2JhY2tncm91bmRDb2xvcicsIHsgdGV4dENvbG9yOiAnY29sb3InIH0pXG5dKSggSW5zcGVjdG9yICk7XG4iLCIvLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuXG5jb25zdCB7XG4gICAgUmljaFRleHQsXG4gICAgd2l0aEZvbnRTaXplcyxcbiAgICB3aXRoQ29sb3JzLFxuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9scyxcbiAgICBCbG9ja0FsaWdubWVudFRvb2xiYXJcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGUsXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGgsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgbGlzdFR5cGUsXG4gICAgICAgICAgICAgICAgb3JkZXJMaXN0U3R5bGUsXG4gICAgICAgICAgICAgICAgY29sb3JcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGZhbGxiYWNrRm9udFNpemUsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvclxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgICAgICBsZXQgY2xhc3Nlc05hbWUgPSAnJztcbiAgICAgICAgICAgICAgICBpZihsaXN0VHlwZT09J3VsJyl7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID1uYW1lXG4gICAgICAgICAgICAgICAgfWVsc2UgaWYobGlzdFR5cGU9PSdvbCcpe1xuICAgICAgICAgICAgICAgICAgICBpZihvcmRlckxpc3RTdHlsZSA9PSAnYmxvY2tzcGFyZS1zdHlsZTInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzTmFtZSA9IG9yZGVyTGlzdFN0eWxlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYob3JkZXJMaXN0U3R5bGUgPT0gJ2Jsb2Nrc3BhcmUtc3R5bGUzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSBvcmRlckxpc3RTdHlsZTtcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzTmFtZSA9IG9yZGVyTGlzdFN0eWxlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGVkaXRDbGFzc05hbWUgPSBjbGFzc25hbWVzKHtcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctdGFibGUtZmVhdHVyZXMnOiB0cnVlLFxuICAgICAgICAgICAgWyBmb250U2l6ZS5jbGFzcyBdOiBmb250U2l6ZS5jbGFzcyxcbiAgICAgICAgICAgICdoYXMtdGV4dC1jb2xvcic6IHRleHRDb2xvci5jb2xvcixcbiAgICAgICAgICAgICdoYXMtYmFja2dyb3VuZCc6IGJhY2tncm91bmRDb2xvci5jb2xvcixcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENvbG9yLmNsYXNzIF06IGJhY2tncm91bmRDb2xvci5jbGFzcyxcbiAgICAgICAgICAgIFsgdGV4dENvbG9yLmNsYXNzIF06IHRleHRDb2xvci5jbGFzcyxcbiAgICAgICAgICAgIFsgYm9yZGVyU3R5bGUgXTogYm9yZGVyU3R5bGUsXG4gICAgICAgICAgICBbICdibG9ja3NwYXJlLWxpc3QtYm9yZGVyLXdpZHRoLScgKyBib3JkZXJXaWR0aCBdOiBib3JkZXJXaWR0aCxcbiAgICAgICAgICAgIFtjbGFzc2VzTmFtZV06Y2xhc3Nlc05hbWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG4gICAgICAgICAgICB0ZXh0QWxpZ246IHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICBmb250U2l6ZTogZm9udFNpemUuc2l6ZSA/IGZvbnRTaXplLnNpemUgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IuY29sb3IsXG4gICAgICAgICAgICBjb2xvcjogY29sb3I/Y29sb3I6JyM2ZDZkNmQnLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGJvcmRlckNvbG9yID8gYm9yZGVyQ29sb3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IHBhZGRpbmdSaWdodCA/IHBhZGRpbmdSaWdodCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBwYWRkaW5nQm90dG9tID8gcGFkZGluZ0JvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogcGFkZGluZ0xlZnQgPyBwYWRkaW5nTGVmdCArICdweCcgOiB1bmRlZmluZWRcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8QWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VjdGlvbkFsaWdubWVudH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7c2VjdGlvbkFsaWdubWVudDogdmFsdWV9KTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPixcblxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICBcImJsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtbGlzdC13cmFwXCJcbiAgICAgICAgICAgICAgICApfT5cbiAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17bGlzdFR5cGU9PSdub25lJz8ndWwnOmxpc3RUeXBlfVxuICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmU9XCJsaVwiXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Qcm9wPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17IF9fKCAnQWRkIGEgcHJvZHVjdCBmZWF0dXJlJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgZmVhdHVyZXMgfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBzZXRBdHRyaWJ1dGVzKHsgZmVhdHVyZXM6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBlZGl0U3R5bGVzIH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgZWRpdENsYXNzTmFtZSA/IGVkaXRDbGFzc05hbWUgOiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoRm9udFNpemVzKCAnZm9udFNpemUnICksXG4gICAgd2l0aENvbG9ycyggJ2JhY2tncm91bmRDb2xvcicsIHsgdGV4dENvbG9yOiAnY29sb3InIH0pXG5dKSggRWRpdCApO1xuIiwiaW1wb3J0ICcuLi8uLi8uLi8uLi9saXN0L3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICBpY29ucyBmcm9tICcuLi8uLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2VkaXQnO1xuXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7XG4gICAgUmljaFRleHQsXG4gICAgZ2V0Rm9udFNpemVDbGFzcyxcbiAgICBnZXRDb2xvckNsYXNzTmFtZVxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmNvbnN0IHtuYW1lLGNhdGVnb3J5LGF0dHJpYnV0ZXN9ID0gbWV0YWRhdGE7XG5cbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXyggJ1ByaWNlIEZlYXR1cmVzJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkcyBhIHByb2R1Y3QgZmVhdHVyZSBjb21wb25lbnQgd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLmljb25saXN0LFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgcGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lcicgXSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXyggJ3ByaWNpbmcgdGFibGUnLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgX18oICdmZWF0dXJlcycsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ3Nob3AnLCAnYmxvY2tzcGFyZScgKVxuICAgIF0sXG5cbiAgICAvLyBSZW5kZXIgdGhlIGJsb2NrIGNvbXBvbmVudHNcbiAgICBlZGl0OiBFZGl0LFxuXG4gICAgLy8gU2F2ZSB0aGUgYXR0cmlidXRlcyBhbmQgbWFya3VwXG4gICAgc2F2ZTogZnVuY3Rpb24oIHByb3BzICkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgY3VzdG9tRm9udFNpemUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICB0ZXh0Q29sb3IsXG4gICAgICAgICAgICBjdXN0b21CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBjdXN0b21UZXh0Q29sb3IsXG4gICAgICAgICAgICBib3JkZXJTdHlsZSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGgsXG4gICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGxpc3RUeXBlLFxuICAgICAgICAgICAgb3JkZXJMaXN0U3R5bGUsXG4gICAgICAgICAgICBjb2xvclxuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcblxuICAgICAgICBsZXQgY2xhc3Nlc05hbWUgPSAnJztcbiAgICAgICAgaWYobGlzdFR5cGU9PSd1bCcpe1xuICAgICAgICAgICAgY2xhc3Nlc05hbWUgPW5hbWVcbiAgICAgICAgfWVsc2UgaWYobGlzdFR5cGU9PSdvbCcpe1xuICAgICAgICAgICAgaWYob3JkZXJMaXN0U3R5bGUgPT0gJ2Jsb2Nrc3BhcmUtc3R5bGUyJykge1xuICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gb3JkZXJMaXN0U3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKG9yZGVyTGlzdFN0eWxlID09ICdibG9ja3NwYXJlLXN0eWxlMycpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzTmFtZSA9IG9yZGVyTGlzdFN0eWxlO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSBvcmRlckxpc3RTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBjbGFzc2VzTmFtZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGZvbnRTaXplQ2xhc3NcbiAgICAgICAgY29uc3QgZm9udFNpemVDbGFzcyA9IGdldEZvbnRTaXplQ2xhc3MoIGZvbnRTaXplICk7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGdldENvbG9yQ2xhc3NOYW1lXG4gICAgICAgIGNvbnN0IHRleHRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCAnY29sb3InLCB0ZXh0Q29sb3IgKTtcbiAgICAgICAgY29uc3QgYmFja2dyb3VuZENsYXNzID0gZ2V0Q29sb3JDbGFzc05hbWUoICdiYWNrZ3JvdW5kLWNvbG9yJywgYmFja2dyb3VuZENvbG9yICk7XG5cbiAgICAgICAgLy8gU2V0dXAgY2xhc3MgbmFtZXNcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnaGFzLWJhY2tncm91bmQnOiBiYWNrZ3JvdW5kQ29sb3IgfHwgY3VzdG9tQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy10YWJsZS1mZWF0dXJlcyc6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplQ2xhc3MgXTogZm9udFNpemVDbGFzcyxcbiAgICAgICAgICAgIFsgdGV4dENsYXNzIF06IHRleHRDbGFzcyxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzcyxcbiAgICAgICAgICAgIFsgYm9yZGVyU3R5bGUgXTogYm9yZGVyU3R5bGUsXG4gICAgICAgICAgICBbICdibG9ja3NwYXJlLWxpc3QtYm9yZGVyLXdpZHRoLScgKyBib3JkZXJXaWR0aCBdOiBib3JkZXJXaWR0aCxcbiAgICAgICAgICAgIFtjbGFzc2VzTmFtZV06Y2xhc3Nlc05hbWVcbiAgICAgICAgfSk7XG5cblxuXG5cbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZUNsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tRm9udFNpemUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDbGFzcyA/IHVuZGVmaW5lZCA6IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGNvbG9yOiBjb2xvcj9jb2xvcjonIzZkNmQ2ZCcsXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IgPyBib3JkZXJDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogcGFkZGluZ1JpZ2h0ID8gcGFkZGluZ1JpZ2h0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IHVuZGVmaW5lZFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgXCJibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWxpc3Qtd3JhcFwiXG4gICAgICAgICAgICApfT5cbiAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgdGFnTmFtZT17bGlzdFR5cGU9PSdub25lJz8ndWwnOmxpc3RUeXBlfVxuICAgICAgICAgICAgICAgIGl0ZW1Qcm9wPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXsgZmVhdHVyZXMgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn0pO1xuIiwiLyoqXG4gKiBJbnNwZWN0b3IgQ29udHJvbHNcbiAqIEZvbnQgc2l6ZSwgY29sb3IsIGJhY2tncm91bmQgY29sb3JcbiAqIFRoaXMgaXMgdXNlZCBmb3IgbXVsdGlwbGUgcHJpY2luZyB0YWJsZSBjb21wb25lbnRzIHVzaW5nIHRoZSBzYW1lIGluc3BlY3RvciBzZXR0aW5nc1xuICovXG5cblxuXG5pbXBvcnQgQnV0dG9uU2V0dGluZ3MgZnJvbSAnLi8uLi8uLi8uLi8uLi9idXR0b24vYnV0dG9uLXNldHRpbmdzJztcbmltcG9ydCBQYWRkaW5nIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9wYWRkaW5nXCI7XG5pbXBvcnQgR3JhZGllbnRDb2xvcnMgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2NvbXBvbmVudC9ncmFkaWVudFwiO1xuaW1wb3J0IEJTYnV0dG9uU2V0dGluZ3MgZnJvbSBcIi4uLy4uLy4uLy4uL2J1dHRvbi9idXR0b24tc2V0dGluZ3NcIjtcblxuXG4vLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICB3aXRoRmFsbGJhY2tTdHlsZXMsXG4gICAgUGFuZWxCb2R5LFxuICAgIFRvZ2dsZUNvbnRyb2wsXG59ID0gd3AuY29tcG9uZW50cztcblxuLy8gQXBwbHkgZmFsbGJhY2sgc3R5bGVzXG5jb25zdCBhcHBseUZhbGxiYWNrU3R5bGVzID0gd2l0aEZhbGxiYWNrU3R5bGVzKCAoIG5vZGUsIG93blByb3BzICkgPT4ge1xuICAgIGNvbnN0IHsgYmFja2dyb3VuZENvbG9yIH0gPSBvd25Qcm9wcy5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IGVkaXRhYmxlTm9kZSA9IG5vZGUucXVlcnlTZWxlY3RvciggJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyApO1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGVzID0gZWRpdGFibGVOb2RlID8gZ2V0Q29tcHV0ZWRTdHlsZSggZWRpdGFibGVOb2RlICkgOiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IgfHwgISBjb21wdXRlZFN0eWxlcyA/IHVuZGVmaW5lZCA6IGNvbXB1dGVkU3R5bGVzLmJhY2tncm91bmRDb2xvclxuICAgIH07XG59KTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlckJ0blRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IxLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjIsXG4gICAgICAgICAgICAgICAgZ3JhZGllbnRBbmdsZSxcbiAgICAgICAgICAgICAgICBjb2xvckxvY2F0aW9uMSxcbiAgICAgICAgICAgICAgICBjb2xvckxvY2F0aW9uMixcbiAgICAgICAgICAgICAgICBidG5Gb250V2VpZ2h0LFxuICAgICAgICAgICAgICAgIGJ0bkJvcmRlcldpZHRoXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcixcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgX18oICdCdXR0b24gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxCU2J1dHRvblNldHRpbmdzXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wZW4gaW4gbmV3IHdpbmRvd1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uVGFyZ2V0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRhcmdldD17IGJ1dHRvblRhcmdldCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblRhcmdldD17IHZhbHVlID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRhcmdldDogISBidXR0b25UYXJnZXQgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQgPSB7ZW5hYmxlR3JhZGllbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUdyYWRpZW50ID17IGVuYWJsZUdyYWRpZW50ID0+IHNldEF0dHJpYnV0ZXMoe2VuYWJsZUdyYWRpZW50fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TaXplPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZT17IGJ1dHRvblNpemUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25TaXplPXsgYnV0dG9uU2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU2l6ZSB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBTaGFwZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU2hhcGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZT17IGJ1dHRvblNoYXBlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uU2hhcGU9eyBidXR0b25TaGFwZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU2hhcGUgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkJhY2tncm91bmRDb2xvcj17IGJ1dHRvbkJhY2tncm91bmRDb2xvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvbkNvbG9yPXsgYnV0dG9uQmFja2dyb3VuZENvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gdGV4dCBjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yPXsgYnV0dG9uVGV4dENvbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uVGV4dENvbG9yPXsgYnV0dG9uVGV4dENvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25UZXh0Q29sb3IgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TdHlsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT17YnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJvcmRlclN0eWxlPXtidXR0b25TdHlsZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU3R5bGUgfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPXtib3JkZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlQm9yZGVyQ29sb3I9e2JvcmRlckNvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2JvcmRlckNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJ0blRleHRDb2xvcj17Ym9yZGVyQnRuVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCb3JkZXJCdG5UZXh0Q29sb3I9e2JvcmRlckJ0blRleHRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJCdG5UZXh0Q29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnRuQm9yZGVyV2lkdGg9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuQm9yZGVyV2lkdGg9e2J0bkJvcmRlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VidG5Cb3JkZXJXaWR0aCA9IHtidG5Cb3JkZXJXaWR0aCA9PiBzZXRBdHRyaWJ1dGVzKHtidG5Cb3JkZXJXaWR0aH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdG5Gb250V2VpZ2h0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkZvbnRXZWlnaHQ9e2J0bkZvbnRXZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZUJ0bkZvbnRXZWlnaHQ9e2J0bkZvbnRXZWlnaHQgPT4gc2V0QXR0cmlidXRlcyh7YnRuRm9udFdlaWdodH0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7ICBidXR0b25TdHlsZT09PSdub25lJyYmXG5cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRW5hYmxlIEdyYWRpZW50JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2VuYWJsZUdyYWRpZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7ZW5hYmxlR3JhZGllbnQ6ICFlbmFibGVHcmFkaWVudH0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQgJiYgYnV0dG9uU3R5bGU9PT0nbm9uZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0dyYWRpZW50IE9wdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JhZGllbnRDb2xvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMT17YmFja2dyb3VuZENvbG9yMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IxPXtiYWNrZ3JvdW5kQ29sb3IxID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tncm91bmRDb2xvcjF9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyPXtiYWNrZ3JvdW5kQ29sb3IyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjI9e2JhY2tncm91bmRDb2xvcjIgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yMn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50QW5nbGU9e2dyYWRpZW50QW5nbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlR3JhZGllbnRBbmdsZT17Z3JhZGllbnRBbmdsZSA9PiBzZXRBdHRyaWJ1dGVzKHtncmFkaWVudEFuZ2xlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjE9e2NvbG9yTG9jYXRpb24xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUNvbG9yTG9jYXRpb24xPXtjb2xvckxvY2F0aW9uMSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2xvckxvY2F0aW9uMX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yPXtjb2xvckxvY2F0aW9uMn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMj17Y29sb3JMb2NhdGlvbjIgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JMb2NhdGlvbjJ9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBfXyggJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVUb3A9eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nVG9wPXsgcGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHsgcGFkZGluZ1RvcCB9KSB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVCb3R0b209eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b209eyBwYWRkaW5nQm90dG9tIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nQm90dG9tPXsgcGFkZGluZ0JvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHsgcGFkZGluZ0JvdHRvbSB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICBhcHBseUZhbGxiYWNrU3R5bGVzLFxuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJyApXG5dKSggSW5zcGVjdG9yICk7XG4iLCIvLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuaW1wb3J0IGJ1dHRvblN0eWxlT3B0aW9uIGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcyc7XG4vLyBJbXBvcnQgQnV0dG9uIHNldHRpbmdzXG5pbXBvcnQgQlNCdXR0b24gZnJvbSAnLi8uLi8uLi8uLi8uLi9idXR0b24vZWRpdCc7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnMsXG4gICAgQWxpZ25tZW50VG9vbGJhcixcbiAgICBCbG9ja0NvbnRyb2xzLFxuICAgIFVSTElucHV0XG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICBJY29uQnV0dG9uLFxuICAgIERhc2hpY29uXG59ID0gd3AuY29tcG9uZW50cztcblxuY2xhc3MgQnV0dG9uRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0LFxuICAgICAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGVkaXRDbGFzc05hbWUgPSBjbGFzc25hbWVzKHtcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctdGFibGUtYnV0dG9uJzogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZXR1cCBzdHlsZXNcbiAgICAgICAgY29uc3QgZWRpdFN0eWxlcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgcGFkZGluZ1RvcDogcGFkZGluZ1RvcCA/IHBhZGRpbmdUb3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgPyBwYWRkaW5nUmlnaHQgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IHBhZGRpbmdMZWZ0ID8gcGFkZGluZ0xlZnQgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYnRuU3R5bGVzID17XG4gICAgICAgICAgICAuLi5idXR0b25TdHlsZU9wdGlvbihhdHRyaWJ1dGVzKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8QmxvY2tDb250cm9scyBrZXk9XCJjb250cm9sc1wiPlxuICAgICAgICAgICAgICAgICAgICA8QWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBzZWN0aW9uQWxpZ25tZW50IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCBuZXh0QWxpZ24gKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHNlY3Rpb25BbGlnbm1lbnQ6IG5leHRBbGlnbiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsgLi4udGhpcy5wcm9wcyB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGVkaXRDbGFzc05hbWUgPyBlZGl0Q2xhc3NOYW1lIDogdW5kZWZpbmVkIH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBlZGl0U3R5bGVzIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7IC4uLnRoaXMucHJvcHMgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17IF9fKCAnQnV0dG9uIHRleHQuLi4nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uVGV4dCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEZvcm1hdHM9eyBbXSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2J0blN0eWxlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRleHQ6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQlNCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIHsgaXNTZWxlY3RlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cImZvcm0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgYGJsb2Nrcy1idXR0b25fX2lubGluZS1saW5rIGJsb2Nrc3BhcmUtYnV0dG9uLSR7c2VjdGlvbkFsaWdubWVudH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsgZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXNoaWNvbiBpY29uPXsgJ2FkbWluLWxpbmtzJyB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVSTElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ1dHRvbi11cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGJ1dHRvblVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25Vcmw6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJlZGl0b3ItYnJlYWtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnQXBwbHknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJywgeyB0ZXh0Q29sb3I6ICdjb2xvcicgfSlcbl0pKCBCdXR0b25FZGl0ICk7XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEJ1dHRvbkVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCAgaWNvbnMgZnJvbSAnLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zJztcbmltcG9ydCBCU0J1dHRvbiBmcm9tICcuLy4uLy4uLy4uLy4uL2J1dHRvbi9lZGl0JztcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvc3R5bGVzXCI7XG5pbXBvcnQgYnV0dG9uQXR0cmlidXRlcyBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvYXR0cmlidXRlcy9idXR0b25cIjtcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IHJlZ2lzdGVyQmxvY2tUeXBlIH0gPSB3cC5ibG9ja3M7XG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICBnZXRDb2xvckNsYXNzTmFtZVxufSA9IHdwLmJsb2NrRWRpdG9yO1xuIGNvbnN0IHtuYW1lLGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG4gY29uc3QgYXR0cmlidXRlcyA9e1xuICAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgLi4uYnV0dG9uQXR0cmlidXRlc1xuIH1cblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggbmFtZSwge1xuICAgIHRpdGxlOiBfXyggJ0J1dHRvbicsICdibG9ja3NwYXJlJyApLFxuICAgIGRlc2NyaXB0aW9uOiBfXyggJ0FkZCBidXR0b24gd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLmJ1dHRvbixcbiAgICBhdHRyaWJ1dGVzLFxuICAgIHBhcmVudDogWyAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXInIF0sXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oICdwcmljaW5nIGJ1dHRvbicsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ2J1dHRvbicsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ2xpbmsnLCAnYmxvY2tzcGFyZScgKVxuICAgIF0sXG5cbiAgICBlZGl0OkJ1dHRvbkVkaXQsXG4gICAgc2F2ZTpmdW5jdGlvbiggcHJvcHMpe1xuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBjdXN0b21CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICAgICAgYnV0dG9uVGV4dCxcbiAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGdldENvbG9yQ2xhc3NOYW1lXG4gICAgICAgIGNvbnN0IGJhY2tncm91bmRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCAnYmFja2dyb3VuZC1jb2xvcicsIGJhY2tncm91bmRDb2xvciApO1xuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZENvbG9yIHx8IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctdGFibGUtYnV0dG9uJzogdHJ1ZSxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzc1xuICAgICAgICB9KTtcblxuXG4gICAgICAgIGNvbnN0IGJ0blN0eWxlcyA9e1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24ocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldHVwIHN0eWxlc1xuICAgICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDbGFzcyA/IHVuZGVmaW5lZCA6IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogcGFkZGluZ1JpZ2h0ID8gcGFkZGluZ1JpZ2h0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IHVuZGVmaW5lZFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7IC4uLnByb3BzIH0+XG4gICAgICAgICAgICAgICAgICAgIHtcdC8vIENoZWNrIGlmIHRoZXJlIGlzIGJ1dHRvbiB0ZXh0IGFuZCBvdXRwdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9eyBidXR0b25VcmwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9eyBidXR0b25UYXJnZXQgPyAnX2JsYW5rJyA6IG51bGwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9eyBidXR0b25UYXJnZXQgPyAnbm9vcGVuZXIgbm9yZWZlcnJlcicgOiBudWxsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17YnRuU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uVGV4dCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgPC9CU0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH0sXG59KTtcbiIsIi8qKlxuICogSW5zcGVjdG9yIENvbnRyb2xzXG4gKi9cblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcblxuICAgIFBhbmVsQm9keSxcbiAgICBUZXh0Q29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgY2xpZW50c1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBpY29uT3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtaWNvbi1vbmx5JywgbGFiZWw6IF9fKCcgSWNvbiBvbmx5JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXRleHRzLW9ubHknLCBsYWJlbDogX18oJ1RleHRzIG9ubHknLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtaWNvbi13aXRoLXRleHRzJywgbGFiZWw6IF9fKCdJY29uIHdpdGggVGV4dHMnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBpY29uQ29sb3JPcHRpb25zID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1kZWZhdWx0LW9mZmljaWFsLWNvbG9yJywgbGFiZWw6IF9fKCcgT2ZmaWNpYWwnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2N1c3RvbScsIGxhYmVsOiBfXygnQ3VzdG9tJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBpY29uU2hhcGVzID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1zcXVhcmUnLCBsYWJlbDogX18oJ1NxdWFyZScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1jaXJjbGUnLCBsYWJlbDogX18oJ0NpcmNsZScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1yb3VuZGVkJywgbGFiZWw6IF9fKCdSb3VuZGVkIFNxdWFyZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGljb25TaXplcyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tc21hbGwnLCBsYWJlbDogX18oJ1NtYWxsJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLW1lZGl1bScsIGxhYmVsOiBfXygnTWVkaXVtJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLWxhcmdlJywgbGFiZWw6IF9fKCdMYXJnZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGljb25GaWxscyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tc29saWQnLCBsYWJlbDogX18oJ1NvbGlkJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLWJvcmRlcicsIGxhYmVsOiBfXygnQm9yZGVyJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLW5vbmUnLCBsYWJlbDogX18oJ05vbmUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICBdO1xuXG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2Vmb250Y29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtjdXN0b21mb250Q29sb3JPcHRpb246IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlYmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7Y3VzdG9tYmFja2dyb3VuZENvbG9yT3B0aW9uOiB2YWx1ZX0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1NvY2lhbCBJY29uIE9wdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdTaGFwZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtpY29uU2hhcGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuYnV0dG9uU2hhcGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtidXR0b25TaGFwZXM6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1NpemUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17aWNvblNpemVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuYnV0dG9uU2l6ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2J1dHRvblNpemVzOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdTb2NpYWwgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydibG9ja3NwYXJlLWhpZGUtcXVlcnknfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdGYWNlYm9vaycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXR0cmlidXRlcy5mYWNlYm9va1RpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7ZmFjZWJvb2tUaXRsZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1VSTCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuZmFjZWJvb2tVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtmYWNlYm9va1VybDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdUd2l0dGVyJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMudHdpdHRlclRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7dHdpdHRlclRpdGxlOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdVUkwnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthdHRyaWJ1dGVzLnR3aXR0ZXJVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHt0d2l0dGVyVXJsOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdJbnN0YWdyYW0nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXR0cmlidXRlcy5pbnN0YWdyYW1UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2luc3RhZ3JhbVRpdGxlOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdVUkwnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthdHRyaWJ1dGVzLmluc3RhZ3JhbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2luc3RhZ3JhbVVybDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnWW91VHViZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXR0cmlidXRlcy55b3V0dWJlVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHt5b3V0dWJlVGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1VSTCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMueW91dHViZVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3lvdXR1YmVVcmw6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnTGlua2VkSW4nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMubGlua2VkaW5UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2xpbmtlZGluVGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1VSTCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMubGlua2VkaW5Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtsaW5rZWRpblVybDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnUGludGVyZXN0JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMucGludGVyZXN0VGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtwaW50ZXJlc3RUaXRsZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVVJMJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXR0cmlidXRlcy5waW50ZXJlc3RVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtwaW50ZXJlc3RVcmw6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5cbmNvbnN0IHtcbiAgICBCbG9ja0FsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU29jaWFsTGlua3MgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGxldCBjb2xvclN0eWxlcyA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaWNvbkNvbG9yT3B0aW9uICE9ICdibG9ja3NwYXJlLWRlZmF1bHQtb2ZmaWNpYWwtY29sb3InKSB7XG4gICAgICAgICAgICAgY29sb3JTdHlsZXMgPSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMucHJvcHMuYXR0cmlidXRlcy5jdXN0b21mb250Q29sb3JPcHRpb24sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuY3VzdG9tYmFja2dyb3VuZENvbG9yT3B0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGNvbG9yU3R5bGVzPXtcblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcblxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1zb2NpYWwtbGlua3MnLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5pY29uQ29sb3JPcHRpb24sXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvblNoYXBlcyxcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuYnV0dG9uU2l6ZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbk9wdGlvbnMsXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbkZpbGxzLFxuXG4gICAgICAgICAgICApfT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9va1VybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmFjZWJvb2tVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1mYWNlYm9vay1mJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9va1RpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5saW5rZWRpblVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMubGlua2VkaW5Vcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1saW5rZWRpbic+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGluVGl0bGV9XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlclVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlclVybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLXR3aXR0ZXInPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnR3aXR0ZXJUaXRsZX1cblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5pbnN0YWdyYW1VcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmluc3RhZ3JhbVVybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLWluc3RhZ3JhbSc+PC9pPjxzcGFuIGNsYXNzTmFtZT17J3NjcmVlbi1yZWFkZXItdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW5zdGFncmFtVGl0bGV9XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnlvdXR1YmVVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnlvdXR1YmVVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS15b3V0dWJlJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy55b3V0dWJlVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMucGludGVyZXN0VXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5waW50ZXJlc3RVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1waW50ZXJlc3QnPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnBpbnRlcmVzdFRpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnR1bWJsclVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHVtYmxyVXJsfSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPSdmYWIgZmEtdHVtYmxyJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy50dW1ibHJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy50ZWxlZ3JhbVVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudGVsZWdyYW1Vcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS10ZWxlZ3JhbSc+PC9pPjxzcGFuIGNsYXNzTmFtZT17J3NjcmVlbi1yZWFkZXItdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudGVsZWdyYW1UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5yZWRkaXRVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnJlZGRpdFVybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLXJlZGRpdCc+PC9pPjxzcGFuIGNsYXNzTmFtZT17J3NjcmVlbi1yZWFkZXItdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMucmVkZGl0VGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmxpY2tyVXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5mbGlja3JVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1mbGlja3InPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmZsaWNrclRpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmRyaWJiYmxlVXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5kcmliYmJsZVVybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLWRyaWJiYmxlJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5kcmliYmJsZVRpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnZrVXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy52a1VybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLXZrJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy52a1RpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnllbHBVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnllbHBVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS15ZWxwJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy55ZWxwVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMucXVvcmFVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnF1b3JhVXJsfSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPSdmYWIgZmEtcXVvcmEnPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnF1b3JhVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMubWVldHVwVXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5tZWV0dXBVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1tZWV0dXAnPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLm1lZXR1cFRpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmdpdGh1YlVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZ2l0aHViVXJsfSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPSdmYWIgZmEtZ2l0aHViJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5naXRodWJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIClcbiAgICB9XG59XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IEluc3BlY3RvciBmcm9tIFwiLi9jb21wb25lbnRzL2luc3BlY3RvclwiO1xuXG5pbXBvcnQgU29jaWFsTGlua3MgZnJvbSBcIi4vY29tcG9uZW50cy9zb2NpYWxcIjtcblxuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cblxuY29uc3Qge1xuXG4gICAgQmxvY2tDb250cm9scyxcbiAgICBBbGlnbm1lbnRUb29sYmFyXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNvY2lhbEJsb2NrTGlua3MgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzPlxuICAgICAgICAgICAgICAgICAgICA8QWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlY3Rpb25BbGlnbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7c2VjdGlvbkFsaWdubWVudDogdmFsdWV9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrcycsXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNvY2lhbC13cmFwcGVyJ1xuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnNlY3Rpb25BbGlnbm1lbnRcbiAgICAgICAgICAgICAgICAgICAgIH19PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zZWN0aW9uLWhlYWQtd3JhcFwiPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTb2NpYWxMaW5rcyB7Li4udGhpcy5wcm9wc30vPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgXTtcbiAgICB9XG59XG4iLCJpbXBvcnQgU29jaWFsTGlua3MgIGZyb20gJy4vc29jaWFsJztcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgcmV0dXJuIChcblxuXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc29jaWFsLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgIDxTb2NpYWxMaW5rcyB7Li4udGhpcy5wcm9wc30gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuaW1wb3J0IFNvY2lhbEJsb2NrTGlua3MgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBTYXZlIGZyb20gJy4vY29tcG9uZW50cy9zYXZlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuXG5cbmNvbnN0IHtuYW1lLGNhdGVnb3J5LGF0dHJpYnV0ZXN9ID0gbWV0YWRhdGFcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgU29jaWFsIExpbmtzJywnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLnNvY2lhbGxpbmtzLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3NvY2lhbCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdsaW5rcycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdzaGFyZScsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIGV4YW1wbGU6e1xuICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgIGZhY2Vib29rVXJsOlwiaHR0cHM6Ly9mYWNlYm9vay5jb21cIixcbiAgICAgICAgICAgIHR3aXR0ZXJVcmw6XCJodHRwczovL3R3aXR0ZXIuY29tXCIsXG4gICAgICAgICAgICBsaW5rZWRpblVybDogXCJodHRwczovL3d3dy5saW5rZWRpbi5jb20vXCIsXG4gICAgICAgICAgICBpbnN0YWdyYW1Vcmw6XCJodHRwczovL2luc3RhZ3JhbS5jb21cIlxuICAgICAgICB9XG4gICAgfSxcbiAgICBlZGl0OiBTb2NpYWxCbG9ja0xpbmtzLFxuICAgIHNhdmU6IHByb3BzID0+IHtcbiAgICAgICAgcmV0dXJuIDxTYXZlIHsgLi4ucHJvcHMgfSAvPjtcbiAgICB9LFxufSk7IiwiLyoqXG4gKiBJbnNwZWN0b3IgQ29udHJvbHNcbiAqL1xuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5nc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBQYW5lbEJvZHksXG4gICAgU2VsZWN0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNsaWVudHNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgIGNvbnN0IGljb25PcHRpb25zID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1pY29uLW9ubHknLCBsYWJlbDogX18oJyBJY29uIG9ubHknLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtdGV4dHMtb25seScsIGxhYmVsOiBfXygnVGV4dHMgb25seScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1pY29uLXdpdGgtdGV4dHMnLCBsYWJlbDogX18oJ0ljb24gd2l0aCBUZXh0cycsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGljb25Db2xvck9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWRlZmF1bHQtb2ZmaWNpYWwtY29sb3InLCBsYWJlbDogX18oJyBPZmZpY2lhbCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnY3VzdG9tJywgbGFiZWw6IF9fKCdDdXN0b20nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGljb25TaGFwZXMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLXNxdWFyZScsIGxhYmVsOiBfXygnU3F1YXJlJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLWNpcmNsZScsIGxhYmVsOiBfXygnQ2lyY2xlJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLXJvdW5kZWQnLCBsYWJlbDogX18oJ1JvdW5kZWQgU3F1YXJlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaWNvblNpemVzID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1zbWFsbCcsIGxhYmVsOiBfXygnU21hbGwnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tbWVkaXVtJywgbGFiZWw6IF9fKCdNZWRpdW0nLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tbGFyZ2UnLCBsYWJlbDogX18oJ0xhcmdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaWNvbkZpbGxzID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1zb2xpZCcsIGxhYmVsOiBfXygnU29saWQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tYm9yZGVyJywgbGFiZWw6IF9fKCdCb3JkZXInLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tbm9uZScsIGxhYmVsOiBfXygnTm9uZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2Vmb250Y29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtjdXN0b21mb250Q29sb3JPcHRpb246IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlYmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7Y3VzdG9tYmFja2dyb3VuZENvbG9yT3B0aW9uOiB2YWx1ZX0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnU29jaWFsIEljb24gT3B0aW9uJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdTaGFwZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtpY29uU2hhcGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuYnV0dG9uU2hhcGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtidXR0b25TaGFwZXM6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1NpemUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17aWNvblNpemVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuYnV0dG9uU2l6ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2J1dHRvblNpemVzOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cblxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1NvY2lhbCBTaGFyaW5nIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnRmFjZWJvb2snLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRW5hYmxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXshIXRoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9va31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtmYWNlYm9vazogIXRoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9va30pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9vayAmJlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuZmFjZWJvb2tUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2ZhY2Vib29rVGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnVHdpdHRlcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnR3aXR0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7dHdpdHRlcjogIXRoaXMucHJvcHMuYXR0cmlidXRlcy50d2l0dGVyfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthdHRyaWJ1dGVzLnR3aXR0ZXJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3R3aXR0ZXJUaXRsZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1BpbnRlcmVzdCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnBpbnRlcmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtwaW50ZXJlc3Q6ICF0aGlzLnByb3BzLmF0dHJpYnV0ZXMucGludGVyZXN0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnBpbnRlcmVzdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthdHRyaWJ1dGVzLnBpbnRlcmVzdFRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7cGludGVyZXN0VGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnTGlua2VkSW4nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2xpbmtlZGluOiAhdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGlufSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMubGlua2VkaW5UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2xpbmtlZGluVGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1xuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9sc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cblxuICAgICAgICBsZXQgY29sb3JTdHlsZXMgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmljb25Db2xvck9wdGlvbiAhPSAnYmxvY2tzcGFyZS1kZWZhdWx0LW9mZmljaWFsLWNvbG9yJykge1xuICAgICAgICAgICAgY29sb3JTdHlsZXMgPSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMucHJvcHMuYXR0cmlidXRlcy5jdXN0b21mb250Q29sb3JPcHRpb24sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuY3VzdG9tYmFja2dyb3VuZENvbG9yT3B0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sb3JTdHlsZXMgPSB7fVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtcblxuICAgICAgICAgICAgLy8gU2hvdyB0aGUgYWxpZ25tZW50IHRvb2xiYXIgb24gZm9jdXNcbiAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzIGtleT1cImNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5zZWN0aW9uQWxpZ25tZW50fVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3NlY3Rpb25BbGlnbm1lbnQ6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz4sXG5cbiAgICAgICAgICAgIC8vIFNob3cgdGhlIGJsb2NrIGNvbnRyb2xzIG9uIGZvY3VzXG4gICAgICAgICAgICA8SW5zcGVjdG9yIHsuLi50aGlzLnByb3BzfS8+LFxuXG4gICAgICAgICAgICAvLyBTaG93IHRoZSBidXR0b24gbWFya3VwIGluIHRoZSBlZGl0b3JcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IHRoaXMucHJvcHMuYXR0cmlidXRlcy5zZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc29jaWFsLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNvY2lhbC1zaGFyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmljb25Db2xvck9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvblNoYXBlcyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvblNpemVzLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuYnV0dG9uT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbkZpbGxzLFxuICAgICAgICAgICAgICAgICl9PlxuXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmFjZWJvb2sgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXNoYXJlLWZhY2Vib29rJyBzdHlsZT17Y29sb3JTdHlsZXN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhYiBmYS1mYWNlYm9vay1mXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J2Jsb2Nrc3BhcmUtc29jaWFsLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHR7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmZhY2Vib29rVGl0bGV9XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlciAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc2hhcmUtdHdpdHRlcicgc3R5bGU9e2NvbG9yU3R5bGVzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYWIgZmEtdHdpdHRlclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydibG9ja3NwYXJlLXNvY2lhbC10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0e3RoaXMucHJvcHMuYXR0cmlidXRlcy50d2l0dGVyVGl0bGV9XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5waW50ZXJlc3QgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXNoYXJlLXBpbnRlcmVzdCcgc3R5bGU9e2NvbG9yU3R5bGVzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYWIgZmEtcGludGVyZXN0LXBcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnYmxvY2tzcGFyZS1zb2NpYWwtdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMucGludGVyZXN0VGl0bGV9XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMubGlua2VkaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXNoYXJlLWxpbmtlZGluJyBzdHlsZT17Y29sb3JTdHlsZXN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhYiBmYS1saW5rZWRpblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydibG9ja3NwYXJlLXNvY2lhbC10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0e3RoaXMucHJvcHMuYXR0cmlidXRlcy5saW5rZWRpblRpdGxlfVxuXHRcdFx0XHRcdFx0XHQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnJlZGRpdCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc2hhcmUtcmVkZGl0JyBzdHlsZT17Y29sb3JTdHlsZXN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhYiBmYS1yZWRkaXQtYWxpZW5cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnYmxvY2tzcGFyZS1zb2NpYWwtdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMucmVkZGl0VGl0bGV9XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZW1haWwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXNoYXJlLWVtYWlsJyBzdHlsZT17Y29sb3JTdHlsZXN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhcyBmYS1lbnZlbG9wZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydibG9ja3NwYXJlLXNvY2lhbC10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0e3RoaXMucHJvcHMuYXR0cmlidXRlcy5lbWFpbFRpdGxlfVxuXHRcdFx0XHRcdFx0XHQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgXTtcbiAgICB9XG59XG4iLCJcbi8vIEltcG9ydFxuaW1wb3J0IEVkaXQgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IGljb25zIGZyb20gXCIuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXhcIjtcbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcblxuLy8gQ29tcG9uZW50c1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbi8vIFJlZ2lzdGVyIGJsb2NrXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG4vLyBSZWdpc3RlciB0aGUgYmxvY2tcbnJlZ2lzdGVyQmxvY2tUeXBlKCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc29jaWFsLXNoYXJpbmcnLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBTb2NpYWwgU2hhcmluZycsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdBZGQgc2hhcmluZyBidXR0b25zIHRvIHlvdXIgcG9zdHMgYW5kIHBhZ2VzLicsICdibG9ja3NwYXJlJyksXG4gICAgaWNvbjogaWNvbnMuc29jaWFsU2hhcmUsXG4gICAgY2F0ZWdvcnk6ICdibG9ja3NwYXJlJyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc29jaWFsJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2xpbmtzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3NoYXJlJywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgZXhhbXBsZTp7XG4gICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgZmFjZWJvb2s6dHJ1ZSxcbiAgICAgICAgICAgIHR3aXR0ZXI6dHJ1ZSxcbiAgICAgICAgICAgIGxpbmtlZGluOnRydWVcbiAgICAgICAgfVxuICAgIH0sXG4gICAgLy8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG4gICAgZWRpdDogcHJvcHMgPT4ge1xuICAgICAgICByZXR1cm4gKFxuXG4gICAgICAgICAgICAgICAgPEVkaXQgey4uLnByb3BzfSAvPlxuXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIC8vIFJlbmRlciB2aWEgUEhQXG4gICAgc2F2ZSgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufSk7XG4iLCJpbXBvcnQgQlNIZWFkZXJTZXR0aW5ncyBmcm9tICcuL2hlYWRlci1zZXR0aW5ncyc7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICBQYW5lbEJvZHksXG5cbiAgICBUb2dnbGVDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgaGVhZGVyYm94Q29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcnBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgaGVhZGVycGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgaGVhZGVycGFkZGluZ0xlZnQsXG4gICAgICAgICAgICAgICAgaGVhZGVybWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIGhlYWRlcm1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBkYXNoQ29sb3IsXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCbG9ja0dhcHM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlRm9udFNpemV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbj17aGVhZGVybGF5b3V0T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VIZWFkZXJTdHlsZT17aGVhZGVybGF5b3V0T3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoeyBoZWFkZXJsYXlvdXRPcHRpb24gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcj17aGVhZGVyYm94Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWJveGNvbG9yPXtoZWFkZXJib3hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJib3hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlRGFzaENvbG9yPXtkYXNoQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7ZGFzaENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnBhZGRpbmdUb3A9e2hlYWRlcnBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWhlYWRlcnBhZGRpbmdUb3A9e2hlYWRlcnBhZGRpbmdUb3AgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJwYWRkaW5nVG9wfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnBhZGRpbmdSaWdodD17aGVhZGVycGFkZGluZ1JpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VoZWFkZXJwYWRkaW5nUmlnaHQ9e2hlYWRlcnBhZGRpbmdSaWdodCA9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnBhZGRpbmdSaWdodH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJwYWRkaW5nQm90dG9tPXtoZWFkZXJwYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VoZWFkZXJwYWRkaW5nQm90dG9tPXtoZWFkZXJwYWRkaW5nQm90dG9tID0+c2V0QXR0cmlidXRlcyh7aGVhZGVycGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJwYWRkaW5nTGVmdD17aGVhZGVycGFkZGluZ0xlZnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWhlYWRlcnBhZGRpbmdMZWZ0PXtoZWFkZXJwYWRkaW5nTGVmdCA9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnBhZGRpbmdMZWZ0fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcm1hcmdpblRvcD17aGVhZGVybWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VoZWFkZXJtYXJnaW5Ub3A9e2hlYWRlcm1hcmdpblRvcCA9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcm1hcmdpblRvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJtYXJnaW5Cb3R0b209e2hlYWRlcm1hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlaGVhZGVybWFyZ2luQm90dG9tPXtoZWFkZXJtYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVybWFyZ2luQm90dG9tfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3I9e2hlYWRlcnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbj17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VIZWFkZXJUYWc9e2hlYWRlclRhZ09wdGlvbiA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJUYWdPcHRpb259KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wPXt0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b209e3RpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVQYWRkaW5nQm90dG9tPSB7dGl0bGVQYWRkaW5nQm90dG9tID0+c2V0QXR0cmlidXRlcyh7dGl0bGVQYWRkaW5nQm90dG9tfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlY29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3I9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnN1YnRpdGxlQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wPXtzdWJ0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVQYWRkaW5nQm90dG9tfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCB0aXRsZUNvbG9yIGZyb20gJy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci90aXRsZSc7XG5pbXBvcnQgIHN1YnRpdGxlQ29sb3IgIGZyb20gJy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9zdWJ0aXRsZSc7XG5pbXBvcnQgIGRhc2hDb2xvcnMgZnJvbSAnLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2gnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tIFwiLi9pbnNwZWN0b3JcIjtcbmltcG9ydCBCU0hlYWRlciBmcm9tICcuL2hlYWRlcnMnO1xuXG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuXG5jb25zdCB7XG4gICAgQmxvY2tDb250cm9scyxcbiAgICBSaWNoVGV4dCxcbiAgICBCbG9ja0FsaWdubWVudFRvb2xiYXIsXG4gICAgQWxpZ25tZW50VG9vbGJhclxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgSWNvbkJ1dHRvbixcbiAgICBEYXNoaWNvbixcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZW50Qm94IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyVGl0bGUsXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBpc1NlbGVjdGVkXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uZGFzaENvbG9ycyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgIC4uLnN1YnRpdGxlQ29sb3IoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VjdGlvbkFsaWdubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtzZWN0aW9uQWxpZ25tZW50OiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgPEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1N1YiBUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclN1YlRpdGxlOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIF07XG4gICAgfVxufVxuIiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2NvbXBvbmVudHMvZWRpdCc7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSAnLi9jb21wb25lbnRzL2hlYWRlcnMnO1xuaW1wb3J0IHNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzIGZyb20gJy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXInXG5pbXBvcnQgIGRhc2hDb2xvcnMgZnJvbSAnLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2gnO1xuaW1wb3J0IHRpdGxlQ29sb3IgZnJvbSAnLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlJztcbmltcG9ydCAgc3VidGl0bGVDb2xvciAgZnJvbSAnLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMnO1xuaW1wb3J0IGJveFNoYWRvd0F0dHJpYnV0ZXMgZnJvbSBcIi4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvd1wiO1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge1xuXG4gICAgUmljaFRleHRcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge25hbWUsIGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG5jb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgIC4uLnNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzLFxuICAgIC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcbn07XG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdTZWN0aW9uIEhlYWRlcicsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdBZGQgeW91ciBZb3VyIEhlYWRlciAnLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLnNlY3Rpb25IZWFkZXIsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2VjdGlvbicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdoZWFkZXInLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygndGl0bGUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc3VidGl0bGUnLCAnYmxvY2tzcGFyZScpLFxuXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbICd3aWRlJywgJ2Z1bGwnLCAnY2VudGVyJyBdXG4gICAgfSxcbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGNvdmVyOiAnaHR0cHM6Ly9ibG9ja3NwYXJlLmNvbScsXG4gICAgICAgICAgICBhdXRob3I6ICdCbG9ja3NwYXJlJyxcbiAgICAgICAgICAgIHBhZ2VzOiA1MDBcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOiBmdW5jdGlvbiAocHJvcHMpIHtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgaGVhZGVyU3ViVGl0bGUsXG5cblxuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcblxuICAgICAgICBjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5kYXNoQ29sb3JzKHByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi50aXRsZUNvbG9yKHByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKHByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxCU0hlYWRlciB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclRpdGxlICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17dGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyU3ViVGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3VidGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclN1YlRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9CU0hlYWRlcj5cbiAgICAgICAgKVxuICAgIH1cbn0pOyIsIi8qKlxuICogUHJpY2luZyBCbG9jayBXcmFwcGVyXG4gKi9cblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbi8qKlxuICogQ3JlYXRlIGEgUHJpY2luZyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXJ2aWNlcyBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgY29sdW1uc0dhcCxcbiAgICAgICAgICAgICAgICBhbGlnblxuICAgICAgICAgICAgfVxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXNlcnZpY2UtY29sdW1ucy0nICsgY29sdW1uc1xuICAgICAgICBdLCB7XG4gICAgICAgICAgICBbICdhbGlnbicgKyBhbGlnbiBdOiBhbGlnblxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyBjbGFzc05hbWUgPyBjbGFzc05hbWUgOiB1bmRlZmluZWQgfT5cbiAgICAgICAgICAgICAgICB7IHRoaXMucHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IE1hcmdpbiBmcm9tICcuLy4uLy4uL3V0aWxzL21hcmdpbic7XG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFRvb2xiYXIsXG4gICAgQnV0dG9uLFxuICAgIFBhbmVsQm9keSxcbiAgICBQYW5lbFJvdyxcbiAgICBSYW5nZUNvbnRyb2wsXG5cbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBJbnNwZWN0b3IgQ29udHJvbHMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgc2VydmljZUl0ZW1zLFxuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgY29sdW1uc0dhcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tLFxuXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnTnVtYmVyIG9mIENvbHVtbnMnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGNvbHVtbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY29sdW1uczogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsgMSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9eyAzIH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0NvbHVtbiBHYXBzJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBjb2x1bW5zR2FwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IGNvbHVtbnNHYXA6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17IDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsgNCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwPXsgMSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiO1xuaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvbWFyZ2luXCI7XG5cbi8qKlxuICogSW5zcGVjdG9yIENvbnRyb2xzXG4gKi9cblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgQmxvY2tEZXNjcmlwdGlvbixcbiAgICBQYW5lbENvbG9yU2V0dGluZ3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgVG9nZ2xlQ29udHJvbCxcbiAgICBQYW5lbEJvZHksXG4gICAgRm9ybVRvZ2dsZSxcbiAgICBSYW5nZUNvbnRyb2wsXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBib3JkZXJXaWR0aCxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgcGFkZGluZyxcbiAgICAgICAgICAgIGVuYWJsZUJveFNoYWRvdyxcbiAgICAgICAgICAgIHhPZmZzZXQsXG4gICAgICAgICAgICB5T2Zmc2V0LFxuICAgICAgICAgICAgYmx1cixcbiAgICAgICAgICAgIHNwcmVhZCxcbiAgICAgICAgICAgIHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tXG4gICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBvbkNoYW5nZUJvcmRlckNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IGJvcmRlckNvbG9yOiB2YWx1ZSB9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYmFja2dyb3VuZENvbG9yOiB2YWx1ZSB9KTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnU2VydmljZSBDb2x1bW4gUGFkZGluZycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgcGFkZGluZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nOiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49eyAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heD17IDIwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9eyAxIH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbG9yIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgeyAoIDAgPCBib3JkZXJXaWR0aCApICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9eyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayBHYXBzIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1hcmdpblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVUb3A9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wPXttYXJnaW5Ub3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpblRvcD17bWFyZ2luVG9wID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpblRvcH0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gbWFyZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlQm90dG9tPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbU1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Cb3R0b219KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2NvbXBvbmVudHMvaW5zcGVjdG9yJztcbmltcG9ydCBib3hTaGFkb3dBdHRyaWJ1dGVzIGZyb20gJy4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvdyc7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuLy8gSW50ZXJuYXRpb25hbGl6YXRpb25cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5cbi8vIEV4dGVuZCBjb21wb25lbnRcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vLyBSZWdpc3RlciBibG9ja1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG4vLyBSZWdpc3RlciBlZGl0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIElubmVyQmxvY2tzLFxuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9sc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgRnJhZ21lbnRcbn0gPSB3cC5lbGVtZW50O1xuXG5jb25zdCBBTExPV0VEX0JMT0NLUyA9IFtcbiAgICAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWljb25zZXQnLFxuICAgICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZXMtaW5uZXItdGl0bGUnLFxuICAgICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZXMtaW5uZXItZGVzY3JpcHRpb24nLFxuICAgICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZS1pbm5lci1idXR0b24nXG5cbl07XG5jb25zdCB7Y2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cbmNvbnN0IGF0dHJpYnV0ZXMgPXtcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcbn1cblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5leHBvcnQgY29uc3Qgc2VydmljZUl0ZW1TZXR0aW5ncyA9IHtcbiAgICB0aXRsZTogX18oICdTZXJ2aWNlIElubmVyIFNlY3Rpb24nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBkZXNjcmlwdGlvbjogX18oICdBZGQgYSBzZXJ2aWNlIGNvbHVtbi4nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBpY29uOiAnY2FydCcsXG4gICAgY2F0ZWdvcnksXG4gICAgcGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZXMnIF0sXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oICdzZXJ2aWNlJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgIF9fKCAnc2hvcCcsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ2J1eScsICdibG9ja3NwYXJlJyApXG4gICAgXSxcbiAgICBhdHRyaWJ1dGVzLFxuXG4gICAgLy8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG4gICAgZWRpdDogZnVuY3Rpb24ocHJvcHMpe1xuICAgICAgICBjb25zdCB7XG5cbiAgICAgICAgICAgIGJvcmRlcldpZHRoLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBwYWRkaW5nLFxuICAgICAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcblxuICAgICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMocHJvcHMuYXR0cmlidXRlcyksXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogYm9yZGVyV2lkdGggPyBib3JkZXJXaWR0aCA6IG51bGwsXG4gICAgICAgICAgICBib3JkZXJTdHlsZTogMCA8IGJvcmRlcldpZHRoID8gJ3NvbGlkJyA6IG51bGwsXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IgPyBib3JkZXJDb2xvciA6IG51bGwsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyA/IGJvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvciA/IGJhY2tncm91bmRDb2xvciA6IG51bGwsXG4gICAgICAgICAgICBwYWRkaW5nOiBwYWRkaW5nID8gcGFkZGluZyArICclJyA6IG51bGwsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50ID8gJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS0nICsgYWxpZ25tZW50IDogJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZScsXG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICBpdGVtU2NvcGVcbiAgICAgICAgICAgICAgICAgICAgaXRlbVR5cGU9XCJodHRwOi8vc2NoZW1hLm9yZy9Qcm9kdWN0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1zZXJ2aWNlLXRhYmxlLWluc2lkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXtbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWljb25zZXQnLHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyLXRpdGxlJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVGl0bGU6ICdTZXJ2aWNlIFRpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlOidBZGQgeW91ciBzZXJ2aWNlcyB0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcDogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbTogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcDogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b206IDEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgcGxhY2Vob2xkZXIgYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1zZXJ2aWNlcy1pbm5lci1kZXNjcmlwdGlvbicsIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6ICdBc3Blcm5hdHVyIG1vcmJpIHNpdCBjdXJzdXMgbWF1cmlzIGFzcGVybmF0dXIhIFF1b3MgdG9ydG9yLiBFYSBtb250ZXMgYW5pbS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZTpcInBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRm9udFNpemU6IDE4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IDIwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogMjBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZS1pbm5lci1idXR0b24nLHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQ6ICdHZXQgU3RhcnRlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogMjAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tOiAzNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiAyMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckFwcGVuZGVyPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkQmxvY2tzPXsgQUxMT1dFRF9CTE9DS1MgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvLyBTYXZlIHRoZSBhdHRyaWJ1dGVzIGFuZCBtYXJrdXBcbiAgICBzYXZlOiBmdW5jdGlvbiggcHJvcHMgKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYm9yZGVyV2lkdGgsXG4gICAgICAgICAgICBib3JkZXJDb2xvcixcbiAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGFsaWdubWVudCxcbiAgICAgICAgICAgIHBhZGRpbmcsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG5cbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKHByb3BzLmF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGJvcmRlcldpZHRoID8gYm9yZGVyV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgYm9yZGVyU3R5bGU6IDAgPCBib3JkZXJXaWR0aCA/ICdzb2xpZCcgOiBudWxsLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGJvcmRlckNvbG9yID8gYm9yZGVyQ29sb3IgOiBudWxsLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgPyBib3JkZXJSYWRpdXMgOiBudWxsLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IgPyBiYWNrZ3JvdW5kQ29sb3IgOiBudWxsLFxuICAgICAgICAgICAgcGFkZGluZzogcGFkZGluZyA/IHBhZGRpbmcgKyAnJScgOiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2F2ZSB0aGUgYmxvY2sgbWFya3VwIGZvciB0aGUgZnJvbnQgZW5kXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc2VydmljZS1ibG9jay13cmFwcGVyJyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50ID8gJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS0nICsgYWxpZ25tZW50IDogJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1zZXJ2aWNlLXRhYmxlJyxcbiAgICAgICAgICAgICAgICApIH1cbj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLXNlcnZpY2UtdGFibGUtaW5zaWRlJyxcblxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17IHN0eWxlcyB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3MuQ29udGVudCAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufTtcblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1zZXJ2aWNlcy1pbm5lcicsIHNlcnZpY2VJdGVtU2V0dGluZ3MpO1xuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgU2VydmljZXMgZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24gfSA9IHdwLmNvbXBvbmVudHM7XG5jb25zdCB7IGNyZWF0ZUJsb2NrIH0gPSB3cC5ibG9ja3M7XG5jb25zdCB7IHdpdGhTZWxlY3QsIHdpdGhEaXNwYXRjaCB9ID0gd3AuZGF0YTtcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuY29uc3Qge1xuICAgIElubmVyQmxvY2tzLFxuICAgIEluc3BlY3RvckNvbnRyb2xzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgIHsgY29tcG9zZSB9ID13cC5jb21wb3NlO1xuXG5pbXBvcnQge3NlcnZpY2VJdGVtU2V0dGluZ3MgfSBmcm9tICcuLi9zZXJ2aWNlLWlubmVyJztcbmNsYXNzIFNlcnZpY2VMaXN0QmxvY2sgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcywgY2xpZW50SWQsIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQgfSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgX2NsaWVudCA9IGNsaWVudElkLnN1YnN0cigwLCA2KTtcbiAgICAgICAgaWYgKCF1bmlxdWVJZCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXF1ZUlkICYmIHVuaXF1ZUlkICE9IF9jbGllbnQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydFNlcnZpY2VJdGVtKCkge1xuICAgICAgICBsZXQgbmV3QmxvY2tBdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7IGNsaWVudElkLCBpbnNlcnRCbG9jaywgYmxvY2sgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChibG9jay5pbm5lckJsb2NrcyAmJiBibG9jay5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RCbG9ja0F0dHJpYnV0ZXMgPSBibG9jay5pbm5lckJsb2Nrc1tibG9jay5pbm5lckJsb2Nrcy5sZW5ndGggLSAxXS5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgY29uc3QgaXRlbU51bWJlciA9IGxhc3RCbG9ja0F0dHJpYnV0ZXMuaXRlbU51bWJlciArIDE7XG4gICAgICAgICAgICBjb25zdCBoZWFkaW5nID0gc2VydmljZUl0ZW1TZXR0aW5ncy5oZWFkaW5nO1xuICAgICAgICAgICAgbmV3QmxvY2tBdHRyaWJ1dGVzID0gT2JqZWN0LmFzc2lnbih7fSwge30sIHsgaXRlbU51bWJlciwgaGVhZGluZywgYWN0aXZlOiBmYWxzZSwgZGVmYXVsdFRleHQ6ICcnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3QmxvY2tBdHRyaWJ1dGVzID0gc2VydmljZUl0ZW1TZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRCbG9jayhjcmVhdGVCbG9jaygnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyJywgbmV3QmxvY2tBdHRyaWJ1dGVzKSwgdW5kZWZpbmVkLCBjbGllbnRJZCk7XG4gICAgfVxuXG4gICAgZ2V0U2VydmljZVRlbXBsYXRlID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtcyA9IGF0dHJpYnV0ZXMuZGVmYXVsdEl0ZW1zO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGRlZmF1bHRJdGVtczsgaysrKSB7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyJywge31dKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB1bmlxdWVJZCxcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIGNvbHVtbnNHYXAsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc2VydmljZS1ibG9jay13cmFwcGVyJ1xuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiBtYXJnaW5Ub3AgPyBtYXJnaW5Ub3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbSA/IG1hcmdpbkJvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfX0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNlcnZpY2VzIHsuLi50aGlzLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNlcnZpY2Utc2VjdGlvbi1hZG1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNlcnZpY2Utc2VjdGlvbi1nYXAtJyArIGNvbHVtbnNHYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZT17dGhpcy5nZXRTZXJ2aWNlVGVtcGxhdGUoYXR0cmlidXRlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRCbG9ja3M9e1snYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckFwcGVuZGVyPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvU2VydmljZXM+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcblxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShbXG4gICAgd2l0aFNlbGVjdCgoc2VsZWN0LCBvd25Qcm9wcykgPT4ge1xuICAgICAgICBjb25zdCB7IGNsaWVudElkIH0gPSBvd25Qcm9wcztcbiAgICAgICAgY29uc3QgeyBnZXRCbG9jaywgaXNCbG9ja1NlbGVjdGVkLCBoYXNTZWxlY3RlZElubmVyQmxvY2sgfSA9IHNlbGVjdCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJsb2NrOiBnZXRCbG9jayhjbGllbnRJZCksXG4gICAgICAgICAgICBpc1NlbGVjdGVkQmxvY2tJblJvb3Q6IGlzQmxvY2tTZWxlY3RlZChjbGllbnRJZCkgfHwgaGFzU2VsZWN0ZWRJbm5lckJsb2NrKGNsaWVudElkLCB0cnVlKSxcbiAgICAgICAgfTtcbiAgICB9KSxcbiAgICB3aXRoRGlzcGF0Y2goKGRpc3BhdGNoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5zZXJ0QmxvY2ssIHVwZGF0ZUJsb2NrQXR0cmlidXRlcyB9ID0gZGlzcGF0Y2goJ2NvcmUvYmxvY2stZWRpdG9yJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnNlcnRCbG9jayxcbiAgICAgICAgICAgIHVwZGF0ZUJsb2NrQXR0cmlidXRlc1xuICAgICAgICB9O1xuICAgIH0pLFxuXSkoU2VydmljZUxpc3RCbG9jaylcblxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBTZXJ2aWNlcyBmcm9tICcuL2NvbXBvbmVudHMvc2VydmljZXMnO1xuaW1wb3J0IFNlcnZpY2VMaXN0QmxvY2sgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IGljb25zIGZyb20gJy4vLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbi8vIEV4dGVuZCBjb21wb25lbnRcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuLy8gUmVnaXN0ZXIgYmxvY2tcbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5cbi8vIFJlZ2lzdGVyIGVkaXRvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5uZXJCbG9ja3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuXG5jb25zdCB7bmFtZSxjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG5cbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgU2VydmljZXMnLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnQWRkIGEgc2VydmljZSBzZWN0aW9uLicsICdibG9ja3NwYXJlJyksXG4gICAgaWNvbjogaWNvbnMuc2VydmljZXMsXG4gICAgY2F0ZWdvcnksXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgJ2Jsb2Nrc3BhcmUnLFxuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2VydmljZXMnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYm94JywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3BvcnRmb2xpbycsICdibG9ja3NwYXJlJyksXG5cblxuICAgIF0sXG4gICAgZXhhbXBsZToge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBjb3ZlcjogJ2h0dHBzOi8vYmxvY2tzcGFyZS5jb20nLFxuICAgICAgICAgICAgYXV0aG9yOiAnYmxvY2tzcGFyZScsXG4gICAgICAgICAgICBwYWdlczogNTAwXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzLFxuXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgYWxpZ246IFsgJ3dpZGUnLCAnZnVsbCcsICdjZW50ZXInIF0sXG4gICAgICAgIGh0bWw6IHRydWVcbiAgICB9LFxuICAgIC8vIFJlbmRlciB0aGUgYmxvY2sgY29tcG9uZW50c1xuICAgIGVkaXQ6IFNlcnZpY2VMaXN0QmxvY2ssXG5cbiAgICAvLyBTYXZlIHRoZSBhdHRyaWJ1dGVzIGFuZCBtYXJrdXBcbiAgICBzYXZlOiBmdW5jdGlvbiAocHJvcHMpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjb2x1bW5zR2FwLFxuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG5cbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1zZXJ2aWNlLXRhYmxlLXdyYXAnLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS1nYXAtJyArIGNvbHVtbnNHYXBcbiAgICAgICAgXSk7XG5cbiAgICAgICAgLy8gU2F2ZSB0aGUgYmxvY2sgbWFya3VwIGZvciB0aGUgZnJvbnQgZW5kXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9ja3MgYmxvY2tzcGFyZS1zZXJ2aWNlLWJsb2NrLXdyYXBwZXInLFxuICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNlY3Rpb24taGVhZGVyLXdyYXBwZXInLFxuICAgICAgICAgICAgICAgICdhbGlnbicgKyBhbGlnblxuICAgICAgICAgICAgKX0gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IG1hcmdpblRvcCA/IG1hcmdpblRvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBtYXJnaW5Cb3R0b20gPyBtYXJnaW5Cb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfX0+XG5cblxuICAgICAgICAgICAgICAgIDxTZXJ2aWNlcyB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lID8gY2xhc3NOYW1lIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L1NlcnZpY2VzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufSk7XG4iLCJpbXBvcnQgQlNIZWFkZXJTZXR0aW5ncyBmcm9tIFwiLi4vLi4vLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXItc2V0dGluZ3NcIjtcbi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcblxuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgd2l0aEZhbGxiYWNrU3R5bGVzLFxuICAgIFBhbmVsQm9keVxufSA9IHdwLmNvbXBvbmVudHM7XG5cblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgICAgICBoZWFkZXJUYWdPcHRpb24sXG4gICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbixcbiAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgZGFzaENvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcmJveENvbG9yXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7c2V0QXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0hlYWRlciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlclNldHRpbmdzXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJsb2NrR2Fwcz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlRm9udFNpemV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbj17aGVhZGVybGF5b3V0T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VIZWFkZXJTdHlsZT17aGVhZGVybGF5b3V0T3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoeyBoZWFkZXJsYXlvdXRPcHRpb24gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJUYWdPcHRpb249e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSGVhZGVyVGFnPXtoZWFkZXJUYWdPcHRpb24gPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGFnT3B0aW9ufSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmJveENvbG9yPXtoZWFkZXJib3hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlYm94Y29sb3I9e2hlYWRlcmJveENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlcmJveENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hDb2xvcj17ZGFzaENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VEYXNoQ29sb3I9e2Rhc2hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtkYXNoQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcj17aGVhZGVydGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVjb2xvcj17aGVhZGVydGl0bGVDb2xvciA9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnRpdGxlQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wPXt0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b209e3RpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVQYWRkaW5nQm90dG9tPSB7dGl0bGVQYWRkaW5nQm90dG9tID0+c2V0QXR0cmlidXRlcyh7dGl0bGVQYWRkaW5nQm90dG9tfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlY29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3I9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnN1YnRpdGxlQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wPXtzdWJ0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVQYWRkaW5nQm90dG9tfSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cblxuXG4iLCIvLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vaW5zcGVjdG9yJztcbmltcG9ydCBDYWxsVG9BY3Rpb24gZnJvbSBcIi4uLy4uLy4uLy4uL2NhbGwtdG8tYWN0aW9uL2NvbXBvbmVudHMvZWRpdFwiO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtcblx0UmljaFRleHQsXG5cdHdpdGhGb250U2l6ZXMsXG5cdHdpdGhDb2xvcnNcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuXHR9XG5cblx0cmVuZGVyKCkge1xuXG5cdFx0Ly8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcblx0XHRjb25zdCB7XG5cdFx0XHRhdHRyaWJ1dGVzOiB7XG5cdFx0XHRcdGhlYWRlclRhZ09wdGlvbixcblx0XHRcdFx0aGVhZGVyVGl0bGUsXG5cdFx0XHRcdGhlYWRlclN1YlRpdGxlLFxuXHRcdFx0fSxcblx0XHRcdGF0dHJpYnV0ZXMsXG5cdFx0XHRzZXRBdHRyaWJ1dGVzLFxuXHRcdH0gPSB0aGlzLnByb3BzO1xuXG5cdFx0Y29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuXHRcdFx0Li4uZGFzaENvbG9ycyhhdHRyaWJ1dGVzKVxuXHRcdH07XG5cblx0XHRjb25zdCB0aXRsZVN0eWxlcyA9IHtcblx0XHRcdC4uLnRpdGxlQ29sb3IoYXR0cmlidXRlcylcblx0XHR9O1xuXG5cdFx0Y29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG5cdFx0XHQuLi5zdWJ0aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG5cdFx0fTtcblxuXG5cdFx0cmV0dXJuIFtcblx0XHRcdDxGcmFnbWVudD5cblxuXHRcdFx0XHQ8SW5zcGVjdG9yXG5cdFx0XHRcdFx0eyAuLi50aGlzLnByb3BzIH1cblx0XHRcdFx0Lz5cblxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc2VjdGlvbi1oZWFkLXdyYXBcIj5cblx0XHRcdFx0XHQ8QlNIZWFkZXIgey4uLnRoaXMucHJvcHN9PlxuXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDxSaWNoVGV4dFxuXHRcdFx0XHRcdFx0XHRcdHRhZ05hbWU9e2hlYWRlclRhZ09wdGlvbn1cblx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRcdFx0XHRrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e2hlYWRlclRpdGxlfVxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT17dGl0bGVTdHlsZXN9XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGl0bGU6IHZhbHVlfSl9XG5cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0XG5cdFx0XHRcdFx0XHRcdFx0dGFnTmFtZT1cInBcIlxuXHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPXtfXygnU3ViIFRpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRcdFx0XHRrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e2hlYWRlclN1YlRpdGxlfVxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT17c3VidGl0bGVTdHlsZXN9XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyU3ViVGl0bGU6IHZhbHVlfSl9XG5cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L0JTSGVhZGVyPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvRnJhZ21lbnQ+XG5cdFx0XTtcblx0fVxufVxuXG5cbiIsImltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXJcIjtcbmltcG9ydCBkYXNoQ29sb3JzIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvZGFzaFwiO1xuaW1wb3J0IHRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci90aXRsZVwiO1xuaW1wb3J0IHN1YnRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9zdWJ0aXRsZVwiO1xuaW1wb3J0ICBpY29ucyBmcm9tICcuLi8uLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMnO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge1xuXHRSaWNoVGV4dCxcblx0Z2V0Rm9udFNpemVDbGFzcyxcblx0Z2V0Q29sb3JDbGFzc05hbWVcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge25hbWUsIGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuY29uc3QgYXR0cmlidXRlcyA9IHtcbi4uLnNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzXG59XG5cbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUoIG5hbWUsIHtcblx0dGl0bGU6IF9fKCAnU2VydmljZSBUaXRsZScsICdibG9ja3NwYXJlJyApLFxuXHRkZXNjcmlwdGlvbjogX18oICdBZGRzIGEgcHJvZHVjdCB0aXRsZSBjb21wb25lbnQgd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuXHRpY29uOiBpY29ucy5zZWN0aW9uSGVhZGVyLFxuXHRjYXRlZ29yeSxcblx0cGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZXMtaW5uZXInIF0sXG5cdGtleXdvcmRzOiBbXG5cdFx0X18oICdTZXJ2aWNlJywgJ2Jsb2Nrc3BhcmUnICksXG5cdFx0X18oICd0aXRsZScsICdibG9ja3NwYXJlJyApLFxuXHRdLFxuXG5cdGF0dHJpYnV0ZXMsXG5cblx0Ly8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG5cdGVkaXQ6IEVkaXQsXG5cblx0Ly8gU2F2ZSB0aGUgYXR0cmlidXRlcyBhbmQgbWFya3VwXG5cdHNhdmU6IGZ1bmN0aW9uKCBwcm9wcyApIHtcblxuXHRcdGNvbnN0IHtcblx0XHRcdGhlYWRlclRhZ09wdGlvbixcblx0XHRcdGhlYWRlclRpdGxlLFxuXHRcdFx0aGVhZGVyU3ViVGl0bGUsXG5cdFx0fSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cblx0XHRjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG5cdFx0XHQuLi5kYXNoQ29sb3JzKHByb3BzLmF0dHJpYnV0ZXMpXG5cdFx0fTtcblxuXHRcdGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuXHRcdFx0Li4udGl0bGVDb2xvcihwcm9wcy5hdHRyaWJ1dGVzKVxuXHRcdH07XG5cblx0XHRjb25zdCBzdWJ0aXRsZVN0eWxlcyA9IHtcblx0XHRcdC4uLnN1YnRpdGxlQ29sb3IocHJvcHMuYXR0cmlidXRlcylcblx0XHR9O1xuXG5cdFx0Ly8gU2F2ZSB0aGUgYmxvY2sgbWFya3VwIGZvciB0aGUgZnJvbnQgZW5kXG5cdFx0cmV0dXJuIChcblxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwJz5cblx0XHRcdFx0XHQ8QlNIZWFkZXIgey4uLnByb3BzfT5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0e2hlYWRlclRpdGxlICYmXG5cblx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0LkNvbnRlbnRcblx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlJ1xuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPXt0aXRsZVN0eWxlc31cblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17aGVhZGVyVGl0bGV9XG5cblx0XHRcdFx0XHRcdFx0Lz5cblxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZS13cmFwcGVyJz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdHtoZWFkZXJTdWJUaXRsZSAmJlxuXHRcdFx0XHRcdFx0XHQ8UmljaFRleHQuQ29udGVudFxuXHRcdFx0XHRcdFx0XHRcdHRhZ05hbWU9XCJwXCJcblx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cblxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9CU0hlYWRlcj5cblxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxufSk7XG4iLCJpbXBvcnQgUGFkZGluZyBmcm9tIFwiLi8uLi8uLi8uLi8uLi91dGlscy9wYWRkaW5nXCI7XG5cbi8qKlxuICogSW5zcGVjdG9yIENvbnRyb2xzXG4gKi9cblxuXG4vLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBGb250U2l6ZVBpY2tlcixcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnMsXG4gICAgQ29udHJhc3RDaGVja2VyLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbiAgICBDb2xvclBhbGV0dGVcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge1xuICAgIHdpdGhGYWxsYmFja1N0eWxlcyxcbiAgICBQYW5lbEJvZHksXG4gICAgUGFuZWxSb3csXG4gICAgU2VsZWN0Q29udHJvbCxcbiAgICBCYXNlQ29udHJvbCxcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vLyBBcHBseSBmYWxsYmFjayBzdHlsZXNcbmNvbnN0IGFwcGx5RmFsbGJhY2tTdHlsZXMgPSB3aXRoRmFsbGJhY2tTdHlsZXMoICggbm9kZSwgb3duUHJvcHMgKSA9PiB7XG4gICAgY29uc3QgeyB0ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvciwgZm9udFNpemUsIGN1c3RvbUZvbnRTaXplIH0gPSBvd25Qcm9wcy5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IGVkaXRhYmxlTm9kZSA9IG5vZGUucXVlcnlTZWxlY3RvciggJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyApO1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGVzID0gZWRpdGFibGVOb2RlID8gZ2V0Q29tcHV0ZWRTdHlsZSggZWRpdGFibGVOb2RlICkgOiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IgfHwgISBjb21wdXRlZFN0eWxlcyA/IHVuZGVmaW5lZCA6IGNvbXB1dGVkU3R5bGVzLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3I6IHRleHRDb2xvciB8fCAhIGNvbXB1dGVkU3R5bGVzID8gdW5kZWZpbmVkIDogY29tcHV0ZWRTdHlsZXMuY29sb3IsXG4gICAgICAgIGZhbGxiYWNrRm9udFNpemU6IGZvbnRTaXplIHx8IGN1c3RvbUZvbnRTaXplIHx8ICEgY29tcHV0ZWRTdHlsZXMgPyB1bmRlZmluZWQgOiBwYXJzZUludCggY29tcHV0ZWRTdHlsZXMuZm9udFNpemUgKSB8fCB1bmRlZmluZWRcbiAgICB9O1xufSk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5jbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZSxcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBmYWxsYmFja0ZvbnRTaXplLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBzZXRGb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHNldFRleHRDb2xvcixcbiAgICAgICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3JcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgLy8gQm9yZGVyIHN0eWxlc1xuICAgICAgICBjb25zdCBib3JkZXJTdHlsZXMgPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1saXN0LWJvcmRlci1ub25lJywgbGFiZWw6IF9fKCAnTm9uZScgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGlzdC1ib3JkZXItc29saWQnLCBsYWJlbDogX18oICdTb2xpZCcgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGlzdC1ib3JkZXItZG90dGVkJywgbGFiZWw6IF9fKCAnRG90dGVkJyApIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1saXN0LWJvcmRlci1kYXNoZWQnLCBsYWJlbDogX18oICdEYXNoZWQnICkgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQm9yZGVyQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYm9yZGVyQ29sb3I6IHZhbHVlIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgX18oICdDb2xvciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17IFtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRleHRDb2xvci5jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHNldFRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnVGV4dCBDb2xvcicsICdibG9ja3NwYXJlJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb250cmFzdENoZWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC4uLntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiB0ZXh0Q29sb3IuY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1RleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17IGZvbnRTaXplLnNpemUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQmxvY2sgR2FwcyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UGFkZGluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcD17IHBhZGRpbmdUb3AgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nVG9wIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVJpZ2h0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9eyBwYWRkaW5nUmlnaHQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nUmlnaHQ9eyBwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdSaWdodCB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlQm90dG9tPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tPXsgcGFkZGluZ0JvdHRvbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ0JvdHRvbT17IHBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdCb3R0b20gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWZ0IHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdD17IHBhZGRpbmdMZWZ0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXsgcGFkZGluZ0xlZnQgPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdMZWZ0IH0pIH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICBhcHBseUZhbGxiYWNrU3R5bGVzLFxuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJywgeyB0ZXh0Q29sb3I6ICdjb2xvcicgfSlcbl0pKCBJbnNwZWN0b3IgKTtcbiIsIi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnNcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGZhbGxiYWNrRm9udFNpemUsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvclxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICAvLyBTZXR1cCBjbGFzcyBuYW1lc1xuICAgICAgICBjb25zdCBlZGl0Q2xhc3NOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1zZXJ2aWNlcy1pbm5lci1kZXNjcmlwdGlvbic6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplLmNsYXNzIF06IGZvbnRTaXplLmNsYXNzLFxuICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgWyBiYWNrZ3JvdW5kQ29sb3IuY2xhc3MgXTogYmFja2dyb3VuZENvbG9yLmNsYXNzLFxuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldHVwIHN0eWxlc1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLnNpemUgPyBmb250U2l6ZS5zaXplICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgY29sb3I6IHRleHRDb2xvci5jb2xvcj90ZXh0Q29sb3IuY29sb3I6XCIjNmQ2ZDZkXCIsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IHBhZGRpbmdSaWdodCA/IHBhZGRpbmdSaWdodCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBwYWRkaW5nQm90dG9tID8gcGFkZGluZ0JvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogcGFkZGluZ0xlZnQgPyBwYWRkaW5nTGVmdCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZXh0QWxpZ246c2VjdGlvbkFsaWdubWVudFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7IC4uLnRoaXMucHJvcHMgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVByb3A9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgX18oICdBZGQgYSBzZXJ2aWNlIGZlYXR1cmUnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBmZWF0dXJlcyB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBmZWF0dXJlczogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGVkaXRTdHlsZXMgfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBlZGl0Q2xhc3NOYW1lID8gZWRpdENsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoRm9udFNpemVzKCAnZm9udFNpemUnICksXG4gICAgd2l0aENvbG9ycyggJ2JhY2tncm91bmRDb2xvcicsIHsgdGV4dENvbG9yOiAnY29sb3InIH0pXG5dKSggRWRpdCApO1xuIiwiLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBFZGl0IGZyb20gJy4vZWRpdCc7XG5pbXBvcnQgIGljb25zIGZyb20gJy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucyc7XG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICBnZXRGb250U2l6ZUNsYXNzLFxuICAgIGdldENvbG9yQ2xhc3NOYW1lXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtuYW1lLCBjYXRlZ29yeSwgYXR0cmlidXRlc30gPSBtZXRhZGF0YTtcbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUoIG5hbWUsIHtcbiAgICB0aXRsZTogX18oICdTZXJ2aWNlIEZlYXR1cmVzJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkcyBhIGZlYXR1cmUgY29tcG9uZW50IHdpdGggc2NoZW1hIG1hcmt1cC4nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBpY29uOmljb25zLmljb25saXN0LFxuICAgIGNhdGVnb3J5LFxuICAgIHBhcmVudDogWyAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyJyBdLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCAnU2VydmljZSB0YWJsZScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ2ZlYXR1cmVzJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgIF9fKCAnc2hvcCcsICdibG9ja3NwYXJlJyApXG4gICAgXSxcblxuICAgIGF0dHJpYnV0ZXMsXG5cbiAgICAvLyBSZW5kZXIgdGhlIGJsb2NrIGNvbXBvbmVudHNcbiAgICBlZGl0OiBFZGl0LFxuXG4gICAgLy8gU2F2ZSB0aGUgYXR0cmlidXRlcyBhbmQgbWFya3VwXG4gICAgc2F2ZTogZnVuY3Rpb24oIHByb3BzICkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBjdXN0b21Gb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbVRleHRDb2xvcixcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnRcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGZvbnRTaXplQ2xhc3NcbiAgICAgICAgY29uc3QgZm9udFNpemVDbGFzcyA9IGdldEZvbnRTaXplQ2xhc3MoIGZvbnRTaXplICk7XG5cbiAgICAgICAgY29uc3QgYmFja2dyb3VuZENsYXNzID0gZ2V0Q29sb3JDbGFzc05hbWUoICdiYWNrZ3JvdW5kLWNvbG9yJywgYmFja2dyb3VuZENvbG9yICk7XG5cbiAgICAgICAgLy8gU2V0dXAgY2xhc3MgbmFtZXNcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnaGFzLWJhY2tncm91bmQnOiBiYWNrZ3JvdW5kQ29sb3IgfHwgY3VzdG9tQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtc2VydmljZS10YWJsZS1mZWF0dXJlcyc6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplQ2xhc3MgXTogZm9udFNpemVDbGFzcyxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzcyxcblxuICAgICAgICB9KTtcbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZUNsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tRm9udFNpemUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDbGFzcyA/IHVuZGVmaW5lZCA6IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGNvbG9yOiB0ZXh0Q29sb3IgPyB0ZXh0Q29sb3IgOiBcIiM2ZDZkNmRcIixcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogcGFkZGluZ1JpZ2h0ID8gcGFkZGluZ1JpZ2h0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IHVuZGVmaW5lZFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgaXRlbVByb3A9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgdmFsdWU9eyBmZWF0dXJlcyB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NOYW1lID8gY2xhc3NOYW1lIDogdW5kZWZpbmVkIH1cbiAgICAgICAgICAgICAgICBzdHlsZT17IHN0eWxlcyB9XG4gICAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgIH1cbn0pO1xuIiwiXG5cblxuaW1wb3J0IEJ1dHRvblNldHRpbmdzIGZyb20gJy4vLi4vLi4vLi4vLi4vYnV0dG9uL2J1dHRvbi1zZXR0aW5ncyc7XG5pbXBvcnQgUGFkZGluZyBmcm9tICcuLy4uLy4uLy4uLy4uL3V0aWxzL3BhZGRpbmcnO1xuaW1wb3J0IEdyYWRpZW50Q29sb3JzIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9jb21wb25lbnQvZ3JhZGllbnRcIjtcbmltcG9ydCBCU2J1dHRvblNldHRpbmdzIGZyb20gXCIuLi8uLi8uLi8uLi9idXR0b24vYnV0dG9uLXNldHRpbmdzXCI7XG5cbi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcblxuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIHdpdGhGb250U2l6ZXMsXG4gICAgd2l0aENvbG9ycyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge1xuICAgIHdpdGhGYWxsYmFja1N0eWxlcyxcbiAgICBQYW5lbEJvZHksXG4gICAgVG9nZ2xlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbi8vIEFwcGx5IGZhbGxiYWNrIHN0eWxlc1xuY29uc3QgYXBwbHlGYWxsYmFja1N0eWxlcyA9IHdpdGhGYWxsYmFja1N0eWxlcyggKCBub2RlLCBvd25Qcm9wcyApID0+IHtcbiAgICBjb25zdCB7IGJhY2tncm91bmRDb2xvciB9ID0gb3duUHJvcHMuYXR0cmlidXRlcztcbiAgICBjb25zdCBlZGl0YWJsZU5vZGUgPSBub2RlLnF1ZXJ5U2VsZWN0b3IoICdbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScgKTtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlcyA9IGVkaXRhYmxlTm9kZSA/IGdldENvbXB1dGVkU3R5bGUoIGVkaXRhYmxlTm9kZSApIDogbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBmYWxsYmFja0JhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yIHx8ICEgY29tcHV0ZWRTdHlsZXMgPyB1bmRlZmluZWQgOiBjb21wdXRlZFN0eWxlcy5iYWNrZ3JvdW5kQ29sb3JcbiAgICB9O1xufSk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5jbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyLFxuICAgICAgICAgICAgICAgIGdyYWRpZW50QW5nbGUsXG4gICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjEsXG4gICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjIsXG4gICAgICAgICAgICAgICAgYnRuRm9udFdlaWdodCxcbiAgICAgICAgICAgICAgICBidG5Cb3JkZXJXaWR0aFxuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBzZXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBmYWxsYmFja0JhY2tncm91bmRDb2xvclxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQnV0dG9uIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QlNidXR0b25TZXR0aW5nc1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3BlbiBpbiBuZXcgd2luZG93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uVGFyZ2V0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UYXJnZXQ9eyBidXR0b25UYXJnZXQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uVGFyZ2V0PXsgdmFsdWUgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRhcmdldDogISBidXR0b25UYXJnZXQgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCA9IHtlbmFibGVHcmFkaWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUdyYWRpZW50ID17IGVuYWJsZUdyYWRpZW50ID0+IHNldEF0dHJpYnV0ZXMoe2VuYWJsZUdyYWRpZW50fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gU2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblNpemU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZT17IGJ1dHRvblNpemUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uU2l6ZT17IGJ1dHRvblNpemUgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblNpemUgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIFNoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU2hhcGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGU9eyBidXR0b25TaGFwZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25TaGFwZT17IGJ1dHRvblNoYXBlID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TaGFwZSB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3I9eyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uQ29sb3I9eyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvbkJhY2tncm91bmRDb2xvciB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gdGV4dCBjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHRDb2xvcj17IGJ1dHRvblRleHRDb2xvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25UZXh0Q29sb3I9eyBidXR0b25UZXh0Q29sb3IgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRleHRDb2xvciB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TdHlsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9e2J1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQm9yZGVyU3R5bGU9e2J1dHRvblN0eWxlID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TdHlsZSB9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPXtib3JkZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZUJvcmRlckNvbG9yPXtib3JkZXJDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQnRuVGV4dENvbG9yPXtib3JkZXJCdG5UZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCb3JkZXJCdG5UZXh0Q29sb3I9e2JvcmRlckJ0blRleHRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJCdG5UZXh0Q29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ0bkJvcmRlcldpZHRoPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG5Cb3JkZXJXaWR0aD17YnRuQm9yZGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VidG5Cb3JkZXJXaWR0aCA9IHtidG5Cb3JkZXJXaWR0aCA9PiBzZXRBdHRyaWJ1dGVzKHtidG5Cb3JkZXJXaWR0aH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnRuRm9udFdlaWdodD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuRm9udFdlaWdodD17YnRuRm9udFdlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZUJ0bkZvbnRXZWlnaHQ9e2J0bkZvbnRXZWlnaHQgPT4gc2V0QXR0cmlidXRlcyh7YnRuRm9udFdlaWdodH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICB7ICBidXR0b25TdHlsZT09PSdub25lJyYmXG5cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRW5hYmxlIEdyYWRpZW50JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2VuYWJsZUdyYWRpZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7ZW5hYmxlR3JhZGllbnQ6ICFlbmFibGVHcmFkaWVudH0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQgJiYgYnV0dG9uU3R5bGU9PT0nbm9uZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0dyYWRpZW50IE9wdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JhZGllbnRDb2xvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMT17YmFja2dyb3VuZENvbG9yMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IxPXtiYWNrZ3JvdW5kQ29sb3IxID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tncm91bmRDb2xvcjF9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyPXtiYWNrZ3JvdW5kQ29sb3IyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjI9e2JhY2tncm91bmRDb2xvcjIgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yMn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50QW5nbGU9e2dyYWRpZW50QW5nbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlR3JhZGllbnRBbmdsZT17Z3JhZGllbnRBbmdsZSA9PiBzZXRBdHRyaWJ1dGVzKHtncmFkaWVudEFuZ2xlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjE9e2NvbG9yTG9jYXRpb24xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUNvbG9yTG9jYXRpb24xPXtjb2xvckxvY2F0aW9uMSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2xvckxvY2F0aW9uMX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yPXtjb2xvckxvY2F0aW9uMn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMj17Y29sb3JMb2NhdGlvbjIgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JMb2NhdGlvbjJ9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9eyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogc2V0QmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBfXyggJ0dhcCBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UGFkZGluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcD17IHBhZGRpbmdUb3AgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nVG9wIH0pIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZUJvdHRvbT17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17IHBhZGRpbmdCb3R0b20gfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdCb3R0b209eyBwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nQm90dG9tIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIGFwcGx5RmFsbGJhY2tTdHlsZXMsXG4gICAgd2l0aEZvbnRTaXplcyggJ2ZvbnRTaXplJyApLFxuICAgIHdpdGhDb2xvcnMoICdiYWNrZ3JvdW5kQ29sb3InIClcbl0pKCBJbnNwZWN0b3IgKTtcbiIsIi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5cbi8vIEltcG9ydCBCdXR0b24gc2V0dGluZ3NcbmltcG9ydCBCU0J1dHRvbiBmcm9tICcuLy4uLy4uLy4uLy4uL2J1dHRvbi9lZGl0JztcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMnO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxuICAgIHdpdGhGb250U2l6ZXMsXG4gICAgd2l0aENvbG9ycyxcbiAgICBVUkxJbnB1dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgSWNvbkJ1dHRvbixcbiAgICBEYXNoaWNvblxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmNsYXNzIEJ1dHRvbkVkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgICAgICAgICAgYnV0dG9uVXJsLFxuICAgICAgICAgICAgICAgIGJ1dHRvbkFsaWdubWVudCxcbiAgICAgICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlckJ0blRleHRDb2xvcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgLy8gU2V0dXAgY2xhc3MgbmFtZXNcbiAgICAgICAgY29uc3QgZWRpdENsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtc2VydmljZS1idXR0b24nOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldHVwIHN0eWxlc1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IuY29sb3IsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBwYWRkaW5nQm90dG9tID8gcGFkZGluZ0JvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG5cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBidG5TdHlsZXMgPXtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uKGF0dHJpYnV0ZXMpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgZWRpdENsYXNzTmFtZSA/IGVkaXRDbGFzc05hbWUgOiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGVkaXRTdHlsZXMgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEJTQnV0dG9uIHsgLi4udGhpcy5wcm9wcyB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgX18oICdCdXR0b24gdGV4dC4uLicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBidXR0b25UZXh0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkRm9ybWF0cz17IFtdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1idXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGJ0blN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVGV4dDogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9CU0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgeyBpc1NlbGVjdGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PVwiZm9ybS1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBgYmxvY2tzLWJ1dHRvbl9faW5saW5lLWxpbmsgYmxvY2tzcGFyZS1idXR0b24tJHtidXR0b25BbGlnbm1lbnR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17IGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXsge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IGJ1dHRvbkFsaWdubWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXNoaWNvbiBpY29uPXsgJ2FkbWluLWxpbmtzJyB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVSTElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ1dHRvbi11cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGJ1dHRvblVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25Vcmw6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJlZGl0b3ItYnJlYWtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnQXBwbHknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJywgeyB0ZXh0Q29sb3I6ICdjb2xvcicgfSlcbl0pKCBCdXR0b25FZGl0ICk7XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEJ1dHRvbkVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMnO1xuaW1wb3J0ICBpY29ucyBmcm9tICcuLi8uLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMnO1xuaW1wb3J0IEJTQnV0dG9uIGZyb20gJy4vLi4vLi4vLi4vLi4vYnV0dG9uL2VkaXQnO1xuaW1wb3J0IGJ1dHRvbkF0dHJpYnV0ZXMgZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvYXR0cmlidXRlcy9idXR0b24nO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxuICAgIGdldENvbG9yQ2xhc3NOYW1lXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5jb25zdCB7bmFtZSwgY2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cbmNvbnN0IGF0dHJpYnV0ZXMgPXtcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJ1dHRvbkF0dHJpYnV0ZXNcblxufTtcbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUoIG5hbWUsIHtcbiAgICB0aXRsZTogX18oICdCdXR0b24nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBkZXNjcmlwdGlvbjogX18oICdBZGRzIGEgcHJvZHVjdCB0aXRsZSBjb21wb25lbnQgd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuICAgIGljb246IGljb25zLmJ1dHRvbixcbiAgICBjYXRlZ29yeSxcbiAgICBwYXJlbnQ6IFsgJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1zZXJ2aWNlcy1pbm5lcicgXSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXyggJ1NlcnZpY2VzJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgIF9fKCAndGl0bGUnLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgX18oICdzaG9wJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICBdLFxuXG4gICAgYXR0cmlidXRlcyxcblxuICAgIGVkaXQ6QnV0dG9uRWRpdCxcbiAgICBzYXZlOmZ1bmN0aW9uKCBwcm9wcyl7XG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgYnV0dG9uVGV4dCxcbiAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBidXR0b25UZXh0Q29sb3IsXG4gICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICBidXR0b25UYXJnZXRcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGdldENvbG9yQ2xhc3NOYW1lXG4gICAgICAgIGNvbnN0IGJhY2tncm91bmRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCAnYmFja2dyb3VuZC1jb2xvcicsIGJhY2tncm91bmRDb2xvciApO1xuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZENvbG9yIHx8IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXNlcnZpY2UtYnV0dG9uJzogdHJ1ZSxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzc1xuICAgICAgICB9KTtcblxuXG4gICAgICAgIGNvbnN0IGJ0blN0eWxlcyA9e1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24ocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgcGFkZGluZ1RvcDogcGFkZGluZ1RvcCA/IHBhZGRpbmdUb3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7IC4uLnByb3BzIH0+XG4gICAgICAgICAgICAgICAgICAgIHtcdC8vIENoZWNrIGlmIHRoZXJlIGlzIGJ1dHRvbiB0ZXh0IGFuZCBvdXRwdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9eyBidXR0b25VcmwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9eyBidXR0b25UYXJnZXQgPyAnX2JsYW5rJyA6IG51bGwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9eyBidXR0b25UYXJnZXQgPyAnbm9vcGVuZXIgbm9yZWZlcnJlcicgOiBudWxsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGJ0blN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGJ1dHRvblRleHQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvQlNCdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9LFxufSk7XG4iLCJleHBvcnQgY29uc3QgRW1wdHlTdGFyID0gcHJvcHMgPT4gKFxuICAgIDxzdmdcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHN0eWxlPXt7IGZpbGw6IHByb3BzLmZpbGxDb2xvciB9fVxuICAgICAgICBmaWxsPXtwcm9wcy5maWxsQ29sb3J9XG4gICAgICAgIHdpZHRoPXtwcm9wcy5zaXplfVxuICAgICAgICBoZWlnaHQ9e3Byb3BzLnNpemV9XG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTEwIDUxMFwiXG4gICAgPlxuICAgICAgICA8cGF0aCBkPVwiTTUxMCwxOTcuNDcybC0xODMuMzctMTUuNzM0TDI1NSwxMi43NWwtNzEuNjI5LDE2OC45ODhMMCwxOTcuNDcybDEzOS4xMDMsMTIwLjUzOUw5Ny40MSw0OTcuMjVMMjU1LDQwMi4xODYgbDE1Ny41OSw5NS4wNjRsLTQxLjY5Mi0xNzkuMjM5TDUxMCwxOTcuNDcyeiBNMjU1LDM1NC4zNDhsLTk1Ljk1Nyw1Ny44ODZsMjUuMzk4LTEwOS4xNjZsLTg0LjczNi03My4zODlsMTExLjY5LTkuNTg4IEwyNTUsMTE3LjE3Mmw0My42MDUsMTAyLjkxOGwxMTEuNjg5LDkuNTg4bC04NC43MTEsNzMuMzg5bDI1LjM5OCwxMDkuMTY2TDI1NSwzNTQuMzQ4elwiIC8+XG4gICAgPC9zdmc+XG4pO1xuXG5leHBvcnQgY29uc3QgSGFsZlN0YXIgPSBwcm9wcyA9PiAoXG4gICAgPHN2Z1xuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgc3R5bGU9e3sgZmlsbDogcHJvcHMuZmlsbENvbG9yIH19XG4gICAgICAgIGZpbGw9e3Byb3BzLmZpbGxDb2xvcn1cbiAgICAgICAgd2lkdGg9e3Byb3BzLnNpemV9XG4gICAgICAgIGhlaWdodD17cHJvcHMuc2l6ZX1cbiAgICAgICAgdmlld0JveD1cIjAgMCA1MTAgNTEwXCJcbiAgICA+XG4gICAgICAgIDxwYXRoIGQ9XCJNNTEwLDE5Ny40NzJsLTE4My4zNy0xNS43MzRMMjU1LDEyLjc1bC03MS42MjksMTY4Ljk4OEwwLDE5Ny40NzJsMCwwbDAsMGwxMzkuMTAzLDEyMC41MzlMOTcuNDEsNDk3LjI1TDI1NSw0MDIuMTg2bDAsMCBsMTU3LjU5LDk1LjAzOWwtNDEuNjkyLTE3OS4yMzlMNTEwLDE5Ny40NzJ6IE0yNTUsMzU0LjM0OFYxMTcuMTcybDQzLjYwNSwxMDIuOTE4bDExMS42ODksOS41ODhsLTg0LjcxMSw3My4zODlsMjUuMzk4LDEwOS4xNjYgTDI1NSwzNTQuMzQ4elwiIC8+XG4gICAgPC9zdmc+XG4pO1xuXG5cbmV4cG9ydCBjb25zdCBGdWxsU3RhciA9IHByb3BzID0+IChcbiAgICA8c3ZnXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICBzdHlsZT17eyBmaWxsOiBwcm9wcy5maWxsQ29sb3IgfX1cbiAgICAgICAgZmlsbD17cHJvcHMuZmlsbENvbG9yfVxuICAgICAgICB3aWR0aD17cHJvcHMuc2l6ZX1cbiAgICAgICAgaGVpZ2h0PXtwcm9wcy5zaXplfVxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUxMCA1MTBcIlxuICAgID5cbiAgICAgICAgPHBvbHlnb25cbiAgICAgICAgICAgIHBvaW50cz1cIjI1NSw0MDIuMjEyIDQxMi41OSw0OTcuMjUgMzcwLjg5NywzMTguMDExIDUxMCwxOTcuNDcyIDMyNi42MywxODEuNzM4IDI1NSwxMi43NSAxODMuMzcxLDE4MS43MzggMCwxOTcuNDcyIDEzOS4xMDMsMzE4LjAxMSA5Ny40MSw0OTcuMjVcIlxuICAgICAgICAgICAgaWQ9XCJzdGFyXCJcbiAgICAgICAgLz5cbiAgICA8L3N2Zz5cbik7IiwiXG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBzdGFyQ291bnQsXG4gICAgICAgICAgICAgICAgc3RhclNpemUsXG4gICAgICAgICAgICAgICAgc3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnU3RhciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdOdW1iZXIgT2YgU3RhcnMnLCdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c3RhckNvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHNldEF0dHJpYnV0ZXMoeyBzdGFyQ291bnQ6IHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXs1fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD17MX1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuXG4gICAgICAgICk7XG4gICAgfVxuXG59IiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmltcG9ydCB7RW1wdHlTdGFyLCBGdWxsU3RhciwgSGFsZlN0YXJ9IGZyb20gXCIuLi8uLi9pbmMvaWNvbi1saWIvc3RhclwiO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2NvbXBvbmVudHMvaW5zcGVjdG9yJ1xuY29uc3Qge0ZyYWdtZW50LENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcbiAgICBCbG9ja0NvbnRyb2xzLFxuICAgIEFsaWdubWVudFRvb2xiYXJcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudHtcblxuICAgIHJlbmRlcigpe1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgICAgIHN0YXJBbGlnbixcbiAgICAgICAgICAgICAgICBzdGFyQ291bnQsXG4gICAgICAgICAgICAgICAgc3RhclNpemUsXG4gICAgICAgICAgICAgICAgc3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RhcnMsXG4gICAgICAgICAgICAgICAgZW1wdHlTdGFyQ29sb3IsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGlnaGxpZ2h0ZWRTdGFycyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzdGFyQWxpZ259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7c3RhckFsaWduOiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvciAgey4uLiB0aGlzLnByb3BzfS8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stc3Rhci1yYXRpbmdzLXdyYXAnXG4gICAgICAgICAgICAgICAgKX0gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmJhY2tncm91bmRDb2xvcj9iYWNrZ3JvdW5kQ29sb3I6J3RyYW5zcGFyZW50J1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdibG9ja3NwYXJlLXN0YXItaW5uZXItY29udGFpbmVyJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N0YXItYWxpZ24tJytzdGFyQWxpZ25cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiB0aGlzLnNldFN0YXRlKHtoaWdobGlnaHRlZFN0YXJzOiAwfSl9XG5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoc3RhckNvdW50KV0ubWFwKChlLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtcmF0aW5nc2B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtoaWdobGlnaHRlZFN0YXJzOiBpICsgMX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRTdGFycyAlIDEgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTdGFyczogaSArIChzZWxlY3RlZFN0YXJzIC0gMSA9PT0gaSA/IDAuNSA6IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXJzOiBpICsgKHNlbGVjdGVkU3RhcnMgLSAwLjUgPT09IGkgPyAxIDogMC41KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpIDwgKGhpZ2hsaWdodGVkU3RhcnMgPyBoaWdobGlnaHRlZFN0YXJzIDogc2VsZWN0ZWRTdGFycykgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkU3RhcnMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZFN0YXJzIC0gMSA9PT0gaSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXJzICUgMSA+IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkU3RhcnMgLSBzZWxlY3RlZFN0YXJzIC0gMC41ICE9PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhbGZTdGFyIHNpemU9e3N0YXJTaXplfSBmaWxsQ29sb3I9e3N0YXJDb2xvcj9zdGFyQ29sb3I6XCIjZmJkMDEyXCJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGdWxsU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogaGlnaGxpZ2h0ZWRTdGFycyAtIHNlbGVjdGVkU3RhcnMgIT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGdWxsU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhbGZTdGFyIHNpemU9e3N0YXJTaXplfSBmaWxsQ29sb3I9e3N0YXJDb2xvcj9zdGFyQ29sb3I6XCIjZmJkMDEyXCJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGdWxsU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzZWxlY3RlZFN0YXJzIC0gaSA+PSAxID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZ1bGxTdGFyIHNpemU9e3N0YXJTaXplfSBmaWxsQ29sb3I9e3N0YXJDb2xvcj9zdGFyQ29sb3I6XCIjZmJkMDEyXCJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYWxmU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RW1wdHlTdGFyIHNpemU9e3N0YXJTaXplfSBmaWxsQ29sb3I9e2VtcHR5U3RhckNvbG9yP2VtcHR5U3RhckNvbG9yOicjZDVkM2QzJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG5cbiAgICAgICAgKTtcbiAgICB9XG5cbn0iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmNvbnN0IHtcbiAgICBSaWNoVGV4dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50e1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgc3RhckFsaWduLFxuICAgICAgICAgICAgICAgIHN0YXJDb3VudCxcbiAgICAgICAgICAgICAgICBzdGFyU2l6ZSxcbiAgICAgICAgICAgICAgICBzdGFyQ29sb3IsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTdGFycyxcbiAgICAgICAgICAgICAgICBlbXB0eVN0YXJDb2xvcixcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3JcblxuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgYmxvY2tzcGFyZV9tYWtlX2Z1bGxfc3Rhcj0gKHMsYykgPT57XG4gICAgICAgICAgICByZXR1cm4gIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1yYXRpbmdzYH0+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD17Yz9jOicjZmJkMDEyJ30gd2lkdGg9e3N9IGhlaWdodD17c30gdmlld0JveD1cIjAgMCA1MTAgNTEwXCI+XG4gICAgICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMjU1LDQwMi4yMTIgNDEyLjU5LDQ5Ny4yNSAzNzAuODk3LDMxOC4wMTEgNTEwLDE5Ny40NzIgMzI2LjYzLDE4MS43MzggMjU1LDEyLjc1IDE4My4zNzEsMTgxLjczOCAwLDE5Ny40NzIgMTM5LjEwMywzMTguMDExIDk3LjQxLDQ5Ny4yNVwiLz5cbiAgICAgICAgICAgIDwvc3ZnPjwvZGl2PjtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBibG9ja3NwYXJlX21ha2VfaGFsZl9zdGFyID0gKHMsYykgPT57XG4gICAgICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXJhdGluZ3NgfT4gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD17Yz9jOicjZmJkMDEyJ30gd2lkdGg9e3N9IGhlaWdodD17c30gdmlld0JveD1cIjAgMCA1MTAgNTEwXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk01MTAsMTk3LjQ3MmwtMTgzLjM3LTE1LjczNEwyNTUsMTIuNzVsLTcxLjYyOSwxNjguOTg4TDAsMTk3LjQ3MmwwLDBsMCwwbDEzOS4xMDMsMTIwLjUzOUw5Ny40MSw0OTcuMjVMMjU1LDQwMi4xODZsMCwwIGwxNTcuNTksOTUuMDM5bC00MS42OTItMTc5LjIzOUw1MTAsMTk3LjQ3MnogTTI1NSwzNTQuMzQ4VjExNy4xNzJsNDMuNjA1LDEwMi45MThsMTExLjY4OSw5LjU4OGwtODQuNzExLDczLjM4OWwyNS4zOTgsMTA5LjE2NiBMMjU1LDM1NC4zNDh6XCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPjwvZGl2PjtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBibG9ja3NwYXJlX21ha2VfZW1wdHlfc3RhciA9IChzLGMpID0+e1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1yYXRpbmdzYH0+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD17Yz9jOicjZDVkM2QzJ30gd2lkdGg9e3N9IGhlaWdodD17c30gdmlld0JveD1cIjAgMCA1MTAgNTEwXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk01MTAsMTk3LjQ3MmwtMTgzLjM3LTE1LjczNEwyNTUsMTIuNzVsLTcxLjYyOSwxNjguOTg4TDAsMTk3LjQ3MmwxMzkuMTAzLDEyMC41MzlMOTcuNDEsNDk3LjI1TDI1NSw0MDIuMTg2IGwxNTcuNTksOTUuMDY0bC00MS42OTItMTc5LjIzOUw1MTAsMTk3LjQ3MnogTTI1NSwzNTQuMzQ4bC05NS45NTcsNTcuODg2bDI1LjM5OC0xMDkuMTY2bC04NC43MzYtNzMuMzg5bDExMS42OS05LjU4OCBMMjU1LDExNy4xNzJsNDMuNjA1LDEwMi45MThsMTExLjY4OSw5LjU4OGwtODQuNzExLDczLjM4OWwyNS4zOTgsMTA5LjE2NkwyNTUsMzU0LjM0OHpcIiAvPlxuICAgICAgICAgICAgPC9zdmc+PC9kaXY+O1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHN0YXJzID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzdGFyQ291bnQ7IGkrKyl7XG4gICAgICAgICAgICBzdGFycy5wdXNoIChpIDwgc2VsZWN0ZWRTdGFycyA/XG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkU3RhcnMgLSBpID49IDEgP1xuICAgICAgICAgICAgICAgICAgICBibG9ja3NwYXJlX21ha2VfZnVsbF9zdGFyKHN0YXJTaXplLCBzdGFyQ29sb3IpIDogYmxvY2tzcGFyZV9tYWtlX2hhbGZfc3RhcihzdGFyU2l6ZSwgc3RhckNvbG9yKSlcbiAgICAgICAgICAgICAgICA6IGJsb2Nrc3BhcmVfbWFrZV9lbXB0eV9zdGFyKHN0YXJTaXplLGVtcHR5U3RhckNvbG9yKSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYmxvY2stc3Rhci1yYXRpbmdzLXdyYXBgfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpiYWNrZ3JvdW5kQ29sb3I/YmFja2dyb3VuZENvbG9yOid0cmFuc3BhcmVudCdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdibG9ja3NwYXJlLXN0YXItaW5uZXItY29udGFpbmVyJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N0YXItYWxpZ24tJytzdGFyQWxpZ25cbiAgICAgICAgICAgICAgICApfT5cbiAgICAgICAgICAgICAgICAgICAge3N0YXJzfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuXG5cbn0iLCJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0ICBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9FZGl0J1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9TYXZlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuXG5cbmNvbnN0IHtfX30gPSB3cC5pMThuXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7bmFtZSxjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBTdGFyIFJhdGluZ3MnLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheSBjcmVhdGl2ZSBzdGFyIHJhdGluZ3MuJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5zdGFycmF0aW5nLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgZXhhbXBsZToge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBjb3ZlcjogJ2h0dHBzOi8vYmxvY2tzcGFyZS5jb20nLFxuICAgICAgICAgICAgYXV0aG9yOiAnYmxvY2tzcGFyZScsXG4gICAgICAgICAgICBwYWdlczogNTAwXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc3RhcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdyZXZpZXcnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygncmF0aW5nJywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOiBTYXZlXG59KTtcbiIsIlxuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG5cblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgICAgICB0YWJTdHlsZSxcbiAgICAgICAgICAgICAgICB0YWJMYXlvdXQsXG4gICAgICAgICAgICAgICAgdGFiQmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICB0YWJUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgYWN0aXZldGFiVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIHRhYkFsaWdubWVudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgY29uc3QgdGFiU3R5bGVPcHRpb25zID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1ob3Jpem9udGFsJywgbGFiZWw6IF9fKCdEZWZhdWx0JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXZlcnRpY2FsJywgbGFiZWw6IF9fKCdWZXJ0aWNhbCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IHRhYkxheW91dE9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWxheW91dDEnLCBsYWJlbDogX18oJ0xheW91dCAxJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWxheW91dDInLCBsYWJlbDogX18oJ0xheW91dCAyJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCB0YWJBbGlnbm1lbnRPcHRpb25zPVtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGVmdCcsbGFiZWw6X18oJ0xlZnQnLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1yaWdodCcsbGFiZWw6X18oJ1JpZ2h0JywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtY2VudGVyJyxsYWJlbDpfXygnY2VudGVyJywnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgXTtcblxuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlVGFiVGV4dENvbG9yPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0YWJUZXh0Q29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQWN0aXZlVGFiVGV4dENvbG9yPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHthY3RpdmV0YWJUZXh0Q29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlVGFiQmFja2dyb3VuZENvbG9yPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0YWJCYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQWN0aXZlVGFiQmFja2dyb3VuZENvbG9yPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHthY3RpdmVUYWJCYWNrZ3JvdW5kQ29sb3I6IHZhbHVlfSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHkgdGl0bGU9e19fKCdUYWIgU2V0dGluZ3MnKX0gaW5pdGlhbE9wZW49e2ZhbHNlfT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RhYiBMYXlvdXQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGFiTGF5b3V0T3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJMYXlvdXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3RhYkxheW91dDogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRhYlRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlVGFiVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1RleHQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYWN0aXZldGFiVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VBY3RpdmVUYWJUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQWN0aXZlIFRleHQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGFiQmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VUYWJCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnVGFiIEJhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYWN0aXZlVGFiQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VBY3RpdmVUYWJCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQWN0aXZlIFRhYiBCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdfT5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tIFwiLi9jb21wb25lbnQvaW5zcGVjdG9yXCI7XG5jb25zdCB7IF9fIH0gPSB3cC5pMThuXG5jb25zdCB7IFRvb2x0aXAsIFBhbmVsQm9keSwgVG9vbGJhciB9ID0gd3AuY29tcG9uZW50cztcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcbmNvbnN0IHsgd2l0aFNlbGVjdCwgd2l0aERpc3BhdGNoIH0gPSB3cC5kYXRhO1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBJbm5lckJsb2NrcywgUmljaFRleHQgfSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmNsYXNzIEVkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBkZXZpY2U6ICdtZCcsXG4gICAgICAgICAgICBpbml0aWFsUmVuZGVyOiB0cnVlLFxuICAgICAgICAgICAgYWN0aXZlVGFiOiAxLFxuICAgICAgICAgICAgc3BhY2VyOiB0cnVlLFxuICAgICAgICAgICAgc2hvd0ljb25QaWNrZXI6IGZhbHNlLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcywgY2xpZW50SWQsIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQgfSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgX2NsaWVudCA9IGNsaWVudElkLnN1YnN0cigwLCA2KTtcbiAgICAgICAgaWYgKCF1bmlxdWVJZCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXF1ZUlkICYmIHVuaXF1ZUlkICE9IF9jbGllbnQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZXM6IHsgdGFicyB9LCBjbGllbnRJZCwgYmxvY2sgfSA9IHRoaXMucHJvcHNcblxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuaW5pdGlhbFJlbmRlciAmJiBwcmV2UHJvcHMuYmxvY2suaW5uZXJCbG9ja3MubGVuZ3RoIDwgYmxvY2suaW5uZXJCbG9ja3MubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFRhYkJsb2NrID0gJChgI2Jsb2NrLSR7Y2xpZW50SWR9YClcbiAgICAgICAgICAgIGxldCBhY3RpdmVUYWIgPSAkKGAjYmxvY2stJHtibG9jay5pbm5lckJsb2Nrc1t0YWJzIC0gMV0uY2xpZW50SWR9YCwgY3VycmVudFRhYkJsb2NrKTtcbiAgICAgICAgICAgICQoJy5ibG9ja3NwYXJlLWFjdGl2ZScsIGN1cnJlbnRUYWJCbG9jaykucmVtb3ZlQ2xhc3MoJ2Jsb2Nrc3BhcmUtYWN0aXZlJylcbiAgICAgICAgICAgIGFjdGl2ZVRhYi5hZGRDbGFzcyhcImJsb2Nrc3BhcmUtYWN0aXZlXCIpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVUaXRsZXMgPSAodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgYXR0cmlidXRlczogeyB0YWJUaXRsZXMgfSwgc2V0QXR0cmlidXRlcyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgbW9kaWZpZWRUaXRsZXMgPSB0YWJUaXRsZXMubWFwKCh0aXRsZSwgdGhpc0luZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXNJbmRleCkge1xuICAgICAgICAgICAgICAgIHRpdGxlID0geyAuLi50aXRsZSwgLi4udmFsdWUgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRpdGxlXG4gICAgICAgIH0pXG4gICAgICAgIHNldEF0dHJpYnV0ZXMoeyB0YWJUaXRsZXM6IG1vZGlmaWVkVGl0bGVzIH0pXG4gICAgfVxuXG4gICAgcmVuZGVyVGFiVGl0bGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOlxuICAgICAgICAgICAgICAgIHsgdGFiVGl0bGVzLFxuICAgICAgICAgICAgICAgICAgICB0YWJCYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhYkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgdGFiVGV4dENvbG9yLGFjdGl2ZXRhYlRleHRDb2xvclxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRJZFxuICAgICAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgICAgIGxldCBhY3RfdGFiX2JnID0gXCIjOGIyNDljXCI7XG4gICAgICAgIGlmKGFjdGl2ZVRhYkJhY2tncm91bmRDb2xvcil7XG4gICAgICAgICAgICBhY3RfdGFiX2JnID0gYWN0aXZlVGFiQmFja2dyb3VuZENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRhYl9iZyA9IFwiIzNjMWE1YlwiO1xuICAgICAgICBpZih0YWJCYWNrR3JvdW5kQ29sb3Ipe1xuICAgICAgICAgICAgdGFiX2JnID0gIHRhYkJhY2tHcm91bmRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhY3RfdGFiX3RleHQgPSBcIiNmZmZcIjtcbiAgICAgICAgaWYoYWN0aXZldGFiVGV4dENvbG9yKXtcbiAgICAgICAgICAgIGFjdF90YWJfdGV4dCA9IGFjdGl2ZXRhYlRleHRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0YWJfdGV4dCA9IFwiI2ZmZlwiO1xuXG4gICAgICAgIGlmKHRhYlRleHRDb2xvcil7XG4gICAgICAgICAgICB0YWJfdGV4dCA9IHRhYlRleHRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjdXJyZW50VGFiQmxvY2sgPSAkKGAjYmxvY2stJHtjbGllbnRJZH1gKVxuICAgICAgICBjb25zdCB7IHNob3dJY29uUGlja2VyIH0gPSB0aGlzLnN0YXRlXG4gICAgICAgIHJldHVybiB0YWJUaXRsZXMubWFwKCh0aXRsZSwgaW5kZXgpID0+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXRhYi1pdGVtICR7KHRoaXMuc3RhdGUuYWN0aXZlVGFiID09IGluZGV4ICsgMSkgPyAnYmxvY2tzcGFyZS1hY3RpdmUnIDogJyd9YH0+XG5cdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtdGFiLXRpdGxlICR7dGl0bGUuaWNvbk5hbWUgPyAnYmxvY2tzcGFyZS1oYXMtaWNvbi0nICsgaWNvblBvc2l0aW9uIDogJyd9YH0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYWN0aXZlVGFiID0gJChgI2Jsb2NrLSR7YmxvY2suaW5uZXJCbG9ja3NbaW5kZXhdLmNsaWVudElkfWAsIGN1cnJlbnRUYWJCbG9jayk7XG4gICAgICAgICAgICAgICAgICAgICQoJy5ibG9ja3NwYXJlLXRhYi1jb250ZW50LmJsb2Nrc3BhcmUtYWN0aXZlJywgY3VycmVudFRhYkJsb2NrKS5yZW1vdmVDbGFzcygnYmxvY2tzcGFyZS1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiLmFkZENsYXNzKFwiYmxvY2tzcGFyZS1hY3RpdmVcIik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBhY3RpdmVUYWI6IGluZGV4ICsgMSwgaW5pdGlhbFJlbmRlcjogZmFsc2UsIHNob3dJY29uUGlja2VyOiAhc2hvd0ljb25QaWNrZXIgfSlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjoodGhpcy5zdGF0ZS5hY3RpdmVUYWIgPT0gaW5kZXggKyAxKT9hY3RfdGFiX2JnOnRhYl9iZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6KHRoaXMuc3RhdGUuYWN0aXZlVGFiID09IGluZGV4ICsgMSk/YWN0X3RhYl90ZXh0OnRhYl90ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9XCJlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ0FkZCBUYWIgVGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aXRsZS50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiB0aGlzLnVwZGF0ZVRpdGxlcyh7IHRpdGxlOiB2YWx1ZSB9LCBpbmRleCl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHQ8VG9vbHRpcCB0ZXh0PXtfXygnRGVsZXRlIHRoaXMgdGFiJyl9PlxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWN0aW9uLXRhYi1yZW1vdmVcIiBvbkNsaWNrPXsoKSA9PiB0aGlzLmRlbGV0ZVRhYihpbmRleCl9IHJvbGU9XCJidXR0b25cIj5cblx0XHRcdFx0XHRcdDxpIGNsYXNzTmFtZT1cImZhcyBmYS10aW1lc1wiIC8+XG5cdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHQ8L1Rvb2x0aXA+XG5cdFx0XHQ8L3NwYW4+XG4gICAgICAgIClcbiAgICB9XG5cbiAgICBkZWxldGVUYWIgPSAodGFiSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgeyBhY3RpdmVUYWIgfSA9IHRoaXMuc3RhdGVcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7IHRhYlRpdGxlcywgdGFicyB9LCBzZXRBdHRyaWJ1dGVzLCBibG9jaywgcmVtb3ZlQmxvY2ssIHVwZGF0ZUJsb2NrQXR0cmlidXRlcywgY2xpZW50SWQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gdGFiVGl0bGVzLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IGluZGV4ICE9IHRhYkluZGV4KVxuICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdGFiVGl0bGVzOiBuZXdJdGVtcywgdGFiczogdGFicyAtIDEgfSlcbiAgICAgICAgbGV0IGkgPSB0YWJJbmRleCArIDFcbiAgICAgICAgd2hpbGUgKGkgPCB0YWJzKSB7XG4gICAgICAgICAgICB1cGRhdGVCbG9ja0F0dHJpYnV0ZXMoYmxvY2suaW5uZXJCbG9ja3NbaV0uY2xpZW50SWQsIE9iamVjdC5hc3NpZ24oYmxvY2suaW5uZXJCbG9ja3NbaV0uYXR0cmlidXRlcywgeyBpZDogYmxvY2suaW5uZXJCbG9ja3NbaV0uYXR0cmlidXRlcy5pZCAtIDEgfSkpXG4gICAgICAgICAgICBpKytcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbW92ZUJsb2NrKGJsb2NrLmlubmVyQmxvY2tzW3RhYkluZGV4XS5jbGllbnRJZClcblxuICAgICAgICBpZiAodGFiSW5kZXggKyAxID09PSBhY3RpdmVUYWIpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50VGFiQmxvY2sgPSAkKGAjYmxvY2stJHtjbGllbnRJZH1gKVxuICAgICAgICAgICAgbGV0IG5leHRBY3RpdmVUYWIgPSAkKGAjYmxvY2stJHtibG9jay5pbm5lckJsb2Nrc1t0YWJJbmRleCArIDEgPCB0YWJzID8gdGFiSW5kZXggKyAxIDogdGFicyA+PSAyID8gdGFiSW5kZXggLSAxIDogdGFiSW5kZXhdLmNsaWVudElkfWAsIGN1cnJlbnRUYWJCbG9jaylcbiAgICAgICAgICAgICQoJy5ibG9ja3NwYXJlLWFjdGl2ZScsIGN1cnJlbnRUYWJCbG9jaykucmVtb3ZlQ2xhc3MoJ2Jsb2Nrc3BhcmUtYWN0aXZlJylcbiAgICAgICAgICAgIG5leHRBY3RpdmVUYWIuYWRkQ2xhc3MoXCJibG9ja3NwYXJlLWFjdGl2ZVwiKVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZVRhYjogdGFiSW5kZXggPT0gMCA/IDEgOiB0YWJJbmRleCArIDEgPCB0YWJzID8gdGFiSW5kZXggKyAxIDogdGFiSW5kZXgsIGluaXRpYWxSZW5kZXI6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgICAgdGFiSW5kZXggKyAxIDwgYWN0aXZlVGFiICYmIHRoaXMuc2V0U3RhdGUoeyBhY3RpdmVUYWI6IGFjdGl2ZVRhYiAtIDEsIGluaXRpYWxSZW5kZXI6IGZhbHNlIH0pXG4gICAgfVxuXG4gICAgbmV3VGl0bGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZXM6IHsgdGFicywgdGFiVGl0bGVzIH0gfSA9IHRoaXMucHJvcHNcbiAgICAgICAgbGV0IG5ld1RpdGxlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGFiVGl0bGVzKSk7XG4gICAgICAgIG5ld1RpdGxlc1t0YWJzXSA9IHtcbiAgICAgICAgICAgIHRpdGxlOiBfXyhgVGFiICR7dGFicyArIDF9YCksXG4gICAgICAgICAgICBpY29uOiB7fSxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VGl0bGVzXG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdW5pcXVlSWQsXG4gICAgICAgICAgICB0YWJzLFxuICAgICAgICAgICAgdGFiVGl0bGVzLFxuICAgICAgICAgICAgdGFiU3R5bGUsXG4gICAgICAgICAgICB0YWJMYXlvdXQsXG4gICAgICAgICAgICB0YWJBbGlnbm1lbnRcblxuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgc2V0QXR0cmlidXRlcywgaXNTZWxlY3RlZCB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBsZXQgaXRlcmF0b3IgPSBbXSwgaW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCB0YWJzKSB7XG4gICAgICAgICAgICBpdGVyYXRvci5wdXNoKGluZGV4KTtcbiAgICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrLSR7dW5pcXVlSWR9YH0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stdGFiIGJsb2Nrc3BhcmUtdGFiLXN0eWxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYlN0eWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiTGF5b3V0XG4gICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2Jsb2Nrc3BhcmUtdGFiLW5hdicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhYlN0eWxlID09ICAnYmxvY2tzcGFyZS1ob3Jpem9udGFsJyk/dGFiQWxpZ25tZW50IDonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlclRhYlRpdGxlcygpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRleHQ9e19fKCdBZGQgbmV3IHRhYicpfT5cblx0XHRcdFx0XHRcdFx0XHQ8c3Ryb25nIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWRkLW5ldy10YWJcIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlVGFiOiB0YWJzICsgMSwgaW5pdGlhbFJlbmRlcjogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYnM6IHRhYnMgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlRpdGxlczogdGhpcy5uZXdUaXRsZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gcm9sZT1cImJ1dHRvblwiIGFyZWFMYWJlbD17X18oJ0FkZCBuZXcgdGFiJyl9PlxuXHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3NOYW1lPVwiZmFzIGZhLXBsdXMtY2lyY2xlXCIgLz5cblx0XHRcdFx0XHRcdFx0XHQ8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS10YWItYm9keWB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU9e2l0ZXJhdG9yLm1hcCh0YWJJbmRleCA9PiBbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS10YWInLCB7IGlkOiB0YWJJbmRleCArIDEsIGN1c3RvbUNsYXNzTmFtZTogdGFiSW5kZXggPT0gMCA/IGBibG9ja3NwYXJlLXRhYi1jb250ZW50IGJsb2Nrc3BhcmUtYWN0aXZlIHdwLWJsb2NrLWJsb2Nrc3BhcmUtYmxvY2tzcGFyZS10YWJgIDogYGJsb2Nrc3BhcmUtdGFiLWNvbnRlbnQgd3AtYmxvY2stYmxvY2tzcGFyZS1ibG9ja3NwYXJlLXRhYmAgfV0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUxvY2s9XCJhbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkQmxvY2tzPXtbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS10YWInXX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhTZWxlY3QoKHNlbGVjdCwgb3duUHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRJZCB9ID0gb3duUHJvcHM7XG4gICAgICAgIGNvbnN0IHsgZ2V0QmxvY2sgfSA9IHNlbGVjdCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJsb2NrOiBnZXRCbG9jayhjbGllbnRJZClcbiAgICAgICAgfTtcbiAgICB9KSxcbiAgICB3aXRoRGlzcGF0Y2goKGRpc3BhdGNoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5zZXJ0QmxvY2ssIHJlbW92ZUJsb2NrLCB1cGRhdGVCbG9ja0F0dHJpYnV0ZXMgfSA9IGRpc3BhdGNoKCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5zZXJ0QmxvY2ssXG4gICAgICAgICAgICByZW1vdmVCbG9jayxcbiAgICAgICAgICAgIHVwZGF0ZUJsb2NrQXR0cmlidXRlc1xuICAgICAgICB9O1xuICAgIH0pLFxuXSkoRWRpdClcbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnRcbmNvbnN0IHsgSW5uZXJCbG9ja3MgfSA9IHdwLmJsb2NrRWRpdG9yXG5cblxuY2xhc3MgU2F2ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyVGFiVGl0bGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZXM6XG4gICAgICAgICAgICB7IHRhYlRpdGxlcyxcbiAgICAgICAgICAgICAgICB0YWJCYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIHRhYlRleHRDb2xvcixhY3RpdmV0YWJUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgaWNvblBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIHRhYkFsaWdubWVudCB9XG4gICAgICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICAgICAgbGV0IGFjdF90YWJfYmcgPSBcIiM4YjI0OWNcIjtcbiAgICAgICAgaWYoYWN0aXZlVGFiQmFja2dyb3VuZENvbG9yKXtcbiAgICAgICAgICAgIGFjdF90YWJfYmcgPSBhY3RpdmVUYWJCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGFiX2JnID0gXCIjM2MxYTViXCI7XG4gICAgICAgIGlmKHRhYkJhY2tHcm91bmRDb2xvcil7XG4gICAgICAgICAgICB0YWJfYmcgPSAgdGFiQmFja0dyb3VuZENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFjdF90YWJfdGV4dCA9IFwiI2ZmZlwiO1xuICAgICAgICBpZihhY3RpdmV0YWJUZXh0Q29sb3Ipe1xuICAgICAgICAgICAgYWN0X3RhYl90ZXh0ID0gYWN0aXZldGFiVGV4dENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRhYl90ZXh0ID0gXCIjZmZmXCI7XG5cbiAgICAgICAgaWYodGFiVGV4dENvbG9yKXtcbiAgICAgICAgICAgIHRhYl90ZXh0ID0gdGFiVGV4dENvbG9yO1xuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gdGFiVGl0bGVzLm1hcCgodGl0bGUsIGluZGV4KSA9PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS10YWItaXRlbSAkeyhpbmRleCA9PSAwKSA/ICdibG9ja3NwYXJlLWFjdGl2ZScgOiAnJ31gfT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz17YGJsb2Nrc3BhcmUtdGFiLXRpdGxlICR7dGl0bGUuaWNvbk5hbWUgPyAnYmxvY2tzcGFyZS1oYXMtaWNvbi0nICsgaWNvblBvc2l0aW9uIDogJyd9YH0gcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOihpbmRleCA9PSAwKT9hY3RfdGFiX2JnOnRhYl9iZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6KGluZGV4ID09IDApP2FjdF90YWJfdGV4dDp0YWJfdGV4dFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgIHRhYi1iZz17dGFiX2JnfSBhdGFiLWJnPXthY3RfdGFiX2JnfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYi10ZXh0PXt0YWJfdGV4dH0gYXRhYi10ZXh0PXthY3RfdGFiX3RleHR9XG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIHt0aXRsZS50aXRsZX1cblxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKVxuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgdW5pcXVlSWQsIHRhYnMsIHRhYlN0eWxlLHRhYkxheW91dCx0YWJBbGlnbm1lbnR9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzXG4gICAgICAgIGxldCBpdGVyYXRvciA9IFtdLCBpbmRleCA9IDBcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgdGFicykge1xuICAgICAgICAgICAgaXRlcmF0b3IucHVzaChpbmRleClcbiAgICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrYH0gPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay10YWInLFxuICAgICAgICAgICAgICAgICAgICB0YWJTdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgdGFiTGF5b3V0XG5cbiAgICAgICAgICAgICAgICApfT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2Jsb2Nrc3BhcmUtdGFiLW5hdicsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGFiU3R5bGUgPT0gICdibG9ja3NwYXJlLWhvcml6b250YWwnKT90YWJBbGlnbm1lbnQgOicnXG4gICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucmVuZGVyVGFiVGl0bGVzKGl0ZXJhdG9yKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS10YWItYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFNhdmUiLCJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9zYXZlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMnO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7bmFtZSxjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBUYWJzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0FkZCB0YWJzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy50YWJzLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgaHRtbDogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogZmFsc2UsXG4gICAgICAgIGFsaWduOiBbJ2NlbnRlcicsICd3aWRlJywgJ2Z1bGwnXSxcbiAgICB9LFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdibG9jaycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCd0YWInLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygndGFicycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCd0YWJiZWQnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY29udGVudCcsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgdGFiVGl0bGVzOiBbXG4gICAgICAgICAgICAgICAgeyB0aXRsZTogXCJUYWIgMVwiIH0sXG4gICAgICAgICAgICAgICAgeyB0aXRsZTogXCJUYWIgMlwiIH0sXG4gICAgICAgICAgICAgICAgeyB0aXRsZTogXCJUYWIgM1wiIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgaW5uZXJCbG9ja3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXRhYicsXG4gICAgICAgICAgICAgICAgaW5uZXJCbG9ja3M6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS10YWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlRpdGxlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlRhYiAxXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJUYWIgMlwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiVGFiIDNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgIH0sXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOlNhdmVcblxufSk7XG4iLCJjb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudFxuY29uc3QgeyBJbm5lckJsb2NrcyB9ID0gd3AuYmxvY2tFZGl0b3JcbmNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7IGlkIH0gfSA9IHRoaXMucHJvcHNcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS10YWItY29udGVudCAkeyhpZCA9PSAxKSA/ICdibG9ja3NwYXJlLWFjdGl2ZScgOiAnJ31gfT5cbiAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3MuQ29udGVudCAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBTYXZlIiwiY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IElubmVyQmxvY2tzIH0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3NcblxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUxvY2s9e2ZhbHNlfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBFZGl0IiwiaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgU2F2ZSBmcm9tICcuL1NhdmUnXG5pbXBvcnQgRWRpdCBmcm9tICcuL0VkaXQnXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7bmFtZSxjYXRlZ29yeX0gPSBtZXRhZGF0YTtcblxucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnVGFiJywnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIHBhcmVudDogWydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtdGFicyddLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGh0bWw6IGZhbHNlLFxuICAgICAgICBpbnNlcnRlcjogZmFsc2UsXG4gICAgICAgIHJldXNhYmxlOiBmYWxzZSxcbiAgICB9LFxuICAgIGljb246ICdjYXJ0JyxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIHVuaXF1ZUlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnJyB9LFxuICAgICAgICBpZDogeyB0eXBlOiAnbnVtYmVyJywgZGVmYXVsdDogMSwgfSxcbiAgICAgICAgY3VzdG9tQ2xhc3NOYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnJyB9XG4gICAgfSxcbiAgICBnZXRFZGl0V3JhcHBlclByb3BzKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgcmV0dXJuIHsgJ2RhdGEtdGFiJzogYXR0cmlidXRlcy5pZCwgY2xhc3NOYW1lOiBgd3AtYmxvY2sgZWRpdG9yLWJsb2NrLWxpc3RfX2Jsb2NrIGJsb2NrLWVkaXRvci1ibG9jay1saXN0X19ibG9jayAke2F0dHJpYnV0ZXMuY3VzdG9tQ2xhc3NOYW1lfWAgfVxuICAgIH0sXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOiBTYXZlXG59KTsiLCJcblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbi8qKlxuICogQ3JlYXRlIGEgUHJpY2luZyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0aW1vbmlhbFdyYXBwZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIGNvbHVtbnNHYXAsXG4gICAgICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXRlc3RpbW9uaWFsLWNvbHVtbnMtJyArIGNvbHVtbnMsXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS10ZXN0aW1vbmlhbC1nYXAtJytjb2x1bW5zR2FwXG4gICAgICAgIF0sIHtcbiAgICAgICAgICAgIFsgJ2FsaWduJyArIGFsaWduIF06IGFsaWduXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9ID5cbiAgICAgICAgICAgICAgICB7IHRoaXMucHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IEJTSGVhZGVyU2V0dGluZ3MgZnJvbSBcIi4uLy4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyLXNldHRpbmdzXCI7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi8uLi8uLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBQYW5lbEJvZHksXG4gICAgUmFuZ2VDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgc3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIHN0YXJTaXplLFxuICAgICAgICAgICAgICAgIGVuYWJsZVJhdGluZ3MsXG4gICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVybGF5b3V0T3B0aW9uLFxuICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcixcbiAgICAgICAgICAgICAgICBkYXNoQ29sb3IsXG4gICAgICAgICAgICAgICAgdGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRTaXplLFxuICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGVuYWJsZUJveFNoYWRvdyxcbiAgICAgICAgICAgICAgICB4T2Zmc2V0LFxuICAgICAgICAgICAgICAgIHlPZmZzZXQsXG4gICAgICAgICAgICAgICAgYmx1cixcbiAgICAgICAgICAgICAgICBzcHJlYWQsXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cblxuICAgICAgICBjb25zdCBvbkNoYW5nZVN0YXJDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe3N0YXJDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VEZXNjcmlwdGlvbkNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7dGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0hlYWRlciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXJTZXR0aW5nc1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCbG9ja0dhcHM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemUgPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVGb250U2l6ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb249e2hlYWRlcmxheW91dE9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSGVhZGVyU3R5bGU9e2hlYWRlcmxheW91dE9wdGlvbiA9PiBzZXRBdHRyaWJ1dGVzKHsgaGVhZGVybGF5b3V0T3B0aW9uIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUhlYWRlclRhZz17aGVhZGVyVGFnT3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRhZ09wdGlvbn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcj17aGVhZGVyYm94Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWJveGNvbG9yPXtoZWFkZXJib3hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJib3hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlRGFzaENvbG9yPXtkYXNoQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7ZGFzaENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3I9e2hlYWRlcnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tPXt0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ0JvdHRvbT0ge3RpdGxlUGFkZGluZ0JvdHRvbSA9PnNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZWNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJzdWJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ0JvdHRvbT17c3VidGl0bGVQYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ0JvdHRvbX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdEZXNjcmlwdGlvbiBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnRGVzY3JpcHRpb24gQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VEZXNjcmlwdGlvbkNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnRGVzY3JpcHRpb24gQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcblxuXG4gICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICApO1xuICAgIH1cblxufSIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuY29uc3QgcHJldl9pbWcgPSBibG9ja3NwYXJlX2dsb2JhbHM7XG5pbXBvcnQgeyBFbXB0eVN0YXIsIEZ1bGxTdGFyLCBIYWxmU3RhciB9IGZyb20gXCIuLi8uLi8uLi9pbmMvaWNvbi1saWIvc3RhclwiO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2NvbXBvbmVudHMvaW5zcGVjdG9yJztcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgZGFzaENvbG9ycyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2hcIjtcbmltcG9ydCB0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGVcIjtcbmltcG9ydCBzdWJ0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGVcIjtcbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5jb25zdCBBTExPV0VEX0JMT0NLUyA9IFsgJ2NvcmUvaW1hZ2UnXTtcbmNvbnN0IFRFTVBMQVRFID0gW1xuICAgIFsnY29yZS9pbWFnZScse1xuICAgICAgICB1cmw6cHJldl9pbWcubWVudV9pbWdfdXJsLFxuICAgICAgICBjbGFzc05hbWU6J2lzLXN0eWxlLWNpcmNsZS1tYXNrJyxcbiAgICAgICAgd2lkdGg6MTIwLFxuICAgICAgICBoZWlnaHQ6MTIwLFxuICAgICAgICBhbGlnbjonY2VudGVyJyxcblxuICAgIH1dXG5dO1xuXG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxuICAgIElubmVyQmxvY2tzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cblxuXG4vKipcbiAqIEJsb2NrIGVkaXQgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGVuYWJsZVJhdGluZ3MsXG4gICAgICAgICAgICAgICAgc3RhckNvdW50LFxuICAgICAgICAgICAgICAgIHN0YXJTaXplLFxuICAgICAgICAgICAgICAgIHN0YXJDb2xvcixcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXJzLFxuICAgICAgICAgICAgICAgIGVtcHR5U3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJUaXRsZSxcbiAgICAgICAgICAgICAgICBoZWFkZXJTdWJUaXRsZSxcbiAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbERlc2NyaXB0aW9uVGV4dFNpemUsXG4gICAgICAgICAgICAgICAgdGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgaGlnaGxpZ2h0ZWRTdGFycyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5kYXNoQ29sb3JzKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIChcblxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3IgIHsuLi50aGlzLnByb3BzfS8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stdGVzdGltb25pYWwtd3JhcCdcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmJhY2tHcm91bmRDb2xvcj9iYWNrR3JvdW5kQ29sb3I6XCIjZmZmXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgPyBib3JkZXJSYWRpdXMgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYXV0aG9yLXdyYXBgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1pbWctd3JhcHBlcmB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZT17IFRFTVBMQVRFIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEJsb2Nrcz17IEFMTE9XRURfQkxPQ0tTIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVMb2NrPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlSW5zZXJ0VXBkYXRlc1NlbGVjdGlvbj17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWF1dGhvci1kZXNpZ25hdGlvbmB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlciB7Li4udGhpcy5wcm9wc30+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17dGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGl0bGU6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdTdWIgVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJTdWJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JTSGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIHtlbmFibGVSYXRpbmdzICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdGFyLXJhdGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN0YXItb3V0ZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN0YXItaW5uZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiB0aGlzLnNldFN0YXRlKHtoaWdobGlnaHRlZFN0YXJzOiAwfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KHN0YXJDb3VudCldLm1hcCgoZSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXJhdGluZ3NgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aGlnaGxpZ2h0ZWRTdGFyczogaSArIDF9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkU3RhcnMgJSAxID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RhcnM6IGkgKyAoc2VsZWN0ZWRTdGFycyAtIDEgPT09IGkgPyAwLjUgOiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTdGFyczogaSArIChzZWxlY3RlZFN0YXJzIC0gMC41ID09PSBpID8gMSA6IDAuNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aSA8IChoaWdobGlnaHRlZFN0YXJzID8gaGlnaGxpZ2h0ZWRTdGFycyA6IHNlbGVjdGVkU3RhcnMpID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZFN0YXJzID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0ZWRTdGFycyAtIDEgPT09IGkgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTdGFycyAlIDEgPiAwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZFN0YXJzIC0gc2VsZWN0ZWRTdGFycyAtIDAuNSAhPT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYWxmU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RnVsbFN0YXIgc2l6ZT17c3RhclNpemV9IGZpbGxDb2xvcj17c3RhckNvbG9yP3N0YXJDb2xvcjpcIiNmYmQwMTJcIn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IGhpZ2hsaWdodGVkU3RhcnMgLSBzZWxlY3RlZFN0YXJzICE9PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RnVsbFN0YXIgc2l6ZT17c3RhclNpemV9IGZpbGxDb2xvcj17c3RhckNvbG9yP3N0YXJDb2xvcjpcIiNmYmQwMTJcIn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYWxmU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RnVsbFN0YXIgc2l6ZT17c3RhclNpemV9IGZpbGxDb2xvcj17c3RhckNvbG9yP3N0YXJDb2xvcjpcIiNmYmQwMTJcIn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogc2VsZWN0ZWRTdGFycyAtIGkgPj0gMSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGdWxsU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFsZlN0YXIgc2l6ZT17c3RhclNpemV9IGZpbGxDb2xvcj17c3RhckNvbG9yP3N0YXJDb2xvcjpcIiNmYmQwMTJcIn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVtcHR5U3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtlbXB0eVN0YXJDb2xvcj9lbXB0eVN0YXJDb2xvcjonI2Q1ZDNkMyd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXRlc3RpbW9uaWFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHt0ZXN0aW1vbmlhbERlc2NyaXB0aW9uOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0ZXN0aW1vbmlhbERlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnRGVzY3JpcHRpb24nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOnRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0U2l6ZSArICdweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0Q29sb3I/dGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcjpcIiM2ZDZkNmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufSIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IGJveFNoYWRvd1N0eWxlcyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL2JveC1zaGFkb3dcIjtcbmNvbnN0IHtcbiAgICBJbm5lckJsb2NrcyxcbiAgICBSaWNoVGV4dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50e1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgdGVzdGltb25pYWxEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIGVuYWJsZVJhdGluZ3MsXG4gICAgICAgICAgICAgICAgc3RhckNvdW50LFxuICAgICAgICAgICAgICAgIHN0YXJTaXplLFxuICAgICAgICAgICAgICAgIHN0YXJDb2xvcixcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXJzLFxuICAgICAgICAgICAgICAgIGVtcHR5U3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJUaXRsZSxcbiAgICAgICAgICAgICAgICBoZWFkZXJTdWJUaXRsZSxcbiAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbERlc2NyaXB0aW9uVGV4dFNpemUsXG4gICAgICAgICAgICAgICAgdGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5kYXNoQ29sb3JzKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cblxuXG4gICAgICAgIGNvbnN0IGJsb2Nrc3BhcmVfbWFrZV9mdWxsX3N0YXI9IChzLGMpID0+e1xuICAgICAgICAgICAgcmV0dXJuICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtcmF0aW5nc2B9PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9e2M/YzonI2ZiZDAxMid9IHdpZHRoPXtzfSBoZWlnaHQ9e3N9IHZpZXdCb3g9XCIwIDAgNTEwIDUxMFwiPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjI1NSw0MDIuMjEyIDQxMi41OSw0OTcuMjUgMzcwLjg5NywzMTguMDExIDUxMCwxOTcuNDcyIDMyNi42MywxODEuNzM4IDI1NSwxMi43NSAxODMuMzcxLDE4MS43MzggMCwxOTcuNDcyIDEzOS4xMDMsMzE4LjAxMSA5Ny40MSw0OTcuMjVcIi8+XG4gICAgICAgICAgICA8L3N2Zz48L2Rpdj47XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYmxvY2tzcGFyZV9tYWtlX2hhbGZfc3RhciA9IChzLGMpID0+e1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1yYXRpbmdzYH0+IDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9e2M/YzonI2ZiZDAxMid9IHdpZHRoPXtzfSBoZWlnaHQ9e3N9IHZpZXdCb3g9XCIwIDAgNTEwIDUxMFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNTEwLDE5Ny40NzJsLTE4My4zNy0xNS43MzRMMjU1LDEyLjc1bC03MS42MjksMTY4Ljk4OEwwLDE5Ny40NzJsMCwwbDAsMGwxMzkuMTAzLDEyMC41MzlMOTcuNDEsNDk3LjI1TDI1NSw0MDIuMTg2bDAsMCBsMTU3LjU5LDk1LjAzOWwtNDEuNjkyLTE3OS4yMzlMNTEwLDE5Ny40NzJ6IE0yNTUsMzU0LjM0OFYxMTcuMTcybDQzLjYwNSwxMDIuOTE4bDExMS42ODksOS41ODhsLTg0LjcxMSw3My4zODlsMjUuMzk4LDEwOS4xNjYgTDI1NSwzNTQuMzQ4elwiIC8+XG4gICAgICAgICAgICA8L3N2Zz48L2Rpdj47XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYmxvY2tzcGFyZV9tYWtlX2VtcHR5X3N0YXIgPSAocyxjKSA9PntcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtcmF0aW5nc2B9PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9e2M/YzonI2Q1ZDNkMyd9IHdpZHRoPXtzfSBoZWlnaHQ9e3N9IHZpZXdCb3g9XCIwIDAgNTEwIDUxMFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNTEwLDE5Ny40NzJsLTE4My4zNy0xNS43MzRMMjU1LDEyLjc1bC03MS42MjksMTY4Ljk4OEwwLDE5Ny40NzJsMTM5LjEwMywxMjAuNTM5TDk3LjQxLDQ5Ny4yNUwyNTUsNDAyLjE4NiBsMTU3LjU5LDk1LjA2NGwtNDEuNjkyLTE3OS4yMzlMNTEwLDE5Ny40NzJ6IE0yNTUsMzU0LjM0OGwtOTUuOTU3LDU3Ljg4NmwyNS4zOTgtMTA5LjE2NmwtODQuNzM2LTczLjM4OWwxMTEuNjktOS41ODggTDI1NSwxMTcuMTcybDQzLjYwNSwxMDIuOTE4bDExMS42ODksOS41ODhsLTg0LjcxMSw3My4zODlsMjUuMzk4LDEwOS4xNjZMMjU1LDM1NC4zNDh6XCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPjwvZGl2PjtcblxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBzdGFycyA9IFtdO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgc3RhckNvdW50OyBpKyspe1xuICAgICAgICAgICAgc3RhcnMucHVzaCAoaSA8IHNlbGVjdGVkU3RhcnMgP1xuICAgICAgICAgICAgICAgIChzZWxlY3RlZFN0YXJzIC0gaSA+PSAxID9cbiAgICAgICAgICAgICAgICAgICAgYmxvY2tzcGFyZV9tYWtlX2Z1bGxfc3RhcihzdGFyU2l6ZSwgc3RhckNvbG9yKSA6IGJsb2Nrc3BhcmVfbWFrZV9oYWxmX3N0YXIoc3RhclNpemUsIHN0YXJDb2xvcikpXG4gICAgICAgICAgICAgICAgOiBibG9ja3NwYXJlX21ha2VfZW1wdHlfc3RhcihzdGFyU2l6ZSxlbXB0eVN0YXJDb2xvcikpO1xuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stdGVzdGltb25pYWwtd3JhcCdcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyA/IGJvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6YmFja0dyb3VuZENvbG9yP2JhY2tHcm91bmRDb2xvcjpcIiNmZmZcIn19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiAgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1hdXRob3Itd3JhcGB9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtaW1nLXdyYXBwZXJgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc2VjdGlvbi1oZWFkLXdyYXBcIiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJUaXRsZSAmJlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17dGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclN1YlRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3VidGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHtlbmFibGVSYXRpbmdzICYmXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydibG9ja3NwYXJlLXN0YXItcmF0aW5nJ30+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1zdGFyLW91dGVyLWNvbnRhaW5lcmB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXN0YXItaW5uZXItY29udGFpbmVyYH0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuXG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS10ZXN0aW1vbmlhbC1jb250ZW50XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Rlc3RpbW9uaWFsRGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOnRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0U2l6ZSArJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjp0ZXN0aW1vbmlhbERlc2NyaXB0aW9uVGV4dENvbG9yP3Rlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0Q29sb3I6XCIjNmQ2ZDZkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG5cblxuICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuXG5cbn0iLCJpbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgIG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgZnJvbSBcIi4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXJcIjtcbmltcG9ydCBFZGl0IGZyb20gJy4vRWRpdCdcbmltcG9ydCBTYXZlIGZyb20gJy4vU2F2ZSc7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7Y2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cbmNvbnN0IGF0dHJpYnV0ZXMgPXtcbiAgICAuLi5zZWN0aW9uSGVhZGVyQXR0cmlidXRlcyxcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IGNvbnN0IHRlc3RpbW9uaWFsSXRlbVNldHRpbmdzID0ge1xuICAgIHRpdGxlOiBfXygnVGVzdGltb25pYWwgIEl0ZW0nLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheSBjcmVhdGl2ZSB0ZXN0aW1vbmlhbC4nLCAnYmxvY2tzcGFyZScpLFxuICAgIHBhcmVudDogWydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtdGVzdGltb25pYWwnXSxcbiAgICBpY29uOiAnbGluaycsXG4gICAgY2F0ZWdvcnksXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgaHRtbDogZmFsc2UsXG4gICAgICAgIGluc2VydGVyOiBmYWxzZSxcbiAgICAgICAgcmV1c2FibGU6IGZhbHNlLFxuICAgIH0sXG4gICAgYXR0cmlidXRlcyxcblxuICAgIGVkaXQ6IEVkaXQsXG4gICAgc2F2ZTogU2F2ZVxufTtcblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2Jsb2Nrc3BhcmUvdGVzdGltb25pYWwtaXRlbScsIHRlc3RpbW9uaWFsSXRlbVNldHRpbmdzKTsiLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBUZXN0aW1vbmlhbFdyYXBwZXIgZnJvbSAnLi90ZXN0aW1vbmlhbC13cmFwcGVyJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24sUGFuZWxCb2R5LFJhbmdlQ29udHJvbCxUb2dnbGVDb250cm9sIH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyBjcmVhdGVCbG9jayB9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyB3aXRoU2VsZWN0LCB3aXRoRGlzcGF0Y2ggfSA9IHdwLmRhdGE7XG5cbmNvbnN0IHtcbiAgICBJbm5lckJsb2NrcyxcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0ICB7IGNvbXBvc2UgfSA9d3AuY29tcG9zZTtcblxuaW1wb3J0IHt0ZXN0aW1vbmlhbEl0ZW1TZXR0aW5ncyB9IGZyb20gJy4vdGVzdGltb25pYWwtaXRlbSc7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG5jbGFzcyBUZXN0aW1vbmlhbExpc3RCbG9jayBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgY29uc3QgeyBzZXRBdHRyaWJ1dGVzLCBjbGllbnRJZCwgYXR0cmlidXRlczogeyB1bmlxdWVJZCB9IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBfY2xpZW50ID0gY2xpZW50SWQuc3Vic3RyKDAsIDYpO1xuICAgICAgICBpZiAoIXVuaXF1ZUlkKSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdW5pcXVlSWQ6IF9jbGllbnQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pcXVlSWQgJiYgdW5pcXVlSWQgIT0gX2NsaWVudCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5zZXJ0VGVzdGltb25pYWxJdGVtKCkge1xuICAgICAgICBsZXQgbmV3QmxvY2tBdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7IGNsaWVudElkLCBpbnNlcnRCbG9jaywgYmxvY2sgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChibG9jay5pbm5lckJsb2NrcyAmJiBibG9jay5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RCbG9ja0F0dHJpYnV0ZXMgPSBibG9jay5pbm5lckJsb2Nrc1tibG9jay5pbm5lckJsb2Nrcy5sZW5ndGggLSAxXS5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgY29uc3QgaXRlbU51bWJlciA9IGxhc3RCbG9ja0F0dHJpYnV0ZXMuaXRlbU51bWJlciArIDE7XG4gICAgICAgICAgICBjb25zdCBoZWFkaW5nID0gdGVzdGltb25pYWxJdGVtU2V0dGluZ3MuaGVhZGluZztcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIHt9LCB7IGl0ZW1OdW1iZXIsIGhlYWRpbmcsIGFjdGl2ZTogZmFsc2UsIGRlZmF1bHRUZXh0OiAnJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IHRlc3RpbW9uaWFsSXRlbVNldHRpbmdzO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEJsb2NrKGNyZWF0ZUJsb2NrKCdibG9ja3NwYXJlL3Rlc3RpbW9uaWFsLWl0ZW0nLCBuZXdCbG9ja0F0dHJpYnV0ZXMpLCB1bmRlZmluZWQsIGNsaWVudElkKTtcbiAgICB9XG5cbiAgICBnZXRUZXN0aW1vbmlhbFRlbXBsYXRlID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtcyA9IGF0dHJpYnV0ZXMuZGVmYXVsdEl0ZW1zO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGRlZmF1bHRJdGVtczsgaysrKSB7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsnYmxvY2tzcGFyZS90ZXN0aW1vbmlhbC1pdGVtJywge31dKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB1bmlxdWVJZCxcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIGNvbHVtbnNHYXBcblxuICAgICAgICAgICAgfSB9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0NvbHVtbnMnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBjb2x1bW5zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoeyBjb2x1bW5zOiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsgMSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsgMyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdDb2x1bW5zIEdhcCcsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGNvbHVtbnNHYXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IGNvbHVtbnNHYXA6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49eyAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9eyA0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPXsgMSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuXG4gICAgICAgICAgICAgICAgPFRlc3RpbW9uaWFsV3JhcHBlciB7Li4udGhpcy5wcm9wc30+XG4gICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU9e3RoaXMuZ2V0VGVzdGltb25pYWxUZW1wbGF0ZShhdHRyaWJ1dGVzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRCbG9ja3M9e1snYmxvY2tzcGFyZS90ZXN0aW1vbmlhbC1pdGVtJ119XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L1Rlc3RpbW9uaWFsV3JhcHBlcj5cblxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICBdXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoU2VsZWN0KChzZWxlY3QsIG93blByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQgfSA9IG93blByb3BzO1xuICAgICAgICBjb25zdCB7IGdldEJsb2NrLCBpc0Jsb2NrU2VsZWN0ZWQsIGhhc1NlbGVjdGVkSW5uZXJCbG9jayB9ID0gc2VsZWN0KCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2s6IGdldEJsb2NrKGNsaWVudElkKSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdDogaXNCbG9ja1NlbGVjdGVkKGNsaWVudElkKSB8fCBoYXNTZWxlY3RlZElubmVyQmxvY2soY2xpZW50SWQsIHRydWUpLFxuICAgICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhEaXNwYXRjaCgoZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnNlcnRCbG9jaywgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzIH0gPSBkaXNwYXRjaCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluc2VydEJsb2NrLFxuICAgICAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzXG4gICAgICAgIH07XG4gICAgfSksXG5dKShUZXN0aW1vbmlhbExpc3RCbG9jaylcblxuIiwiaW1wb3J0IFRlc3RpbW9uaWFsV3JhcHBlciBmcm9tICcuL3Rlc3RpbW9uaWFsLXdyYXBwZXInO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBJbm5lckJsb2NrcyB9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBjb2x1bW5zR2FwLFxuICAgICAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgfVxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXRlc3RpbW9uaWFsLXdyYXBwZXInLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtdGVzdGltb25pYWwtY29sdW1ucy0nICsgY29sdW1ucyxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXRlc3RpbW9uaWFsLWdhcC0nK2NvbHVtbnNHYXBcbiAgICAgICAgXSwge1xuICAgICAgICAgICAgWyAnYWxpZ24nICsgYWxpZ24gXTogYWxpZ25cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9IHN0eWxlPXt7YmFja2dyb3VuZENvbG9yOmJhY2tncm91bmRDb2xvcj9iYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifX0+XG4gICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFNhdmU7IiwiaW1wb3J0IFRlc3RpbW9uaWFsTGlzdEJsb2NrIGZyb20gJy4vZWRpdCc7XG5pbXBvcnQgU2F2ZSBmcm9tICcuL3NhdmUnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5cbi8vIFJlZ2lzdGVyIGJsb2NrXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5cbmNvbnN0IHtuYW1lLCBjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG4vLyBSZWdpc3RlciB0aGUgYmxvY2tcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIFRlc3RpbW9uaWFsJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0FkZCBhIHRlc3RpbW9uaWFsJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy50ZXN0aW1vbmlhbCxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdibG9jaycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCd0ZXN0aW1vbmlhbCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCd0ZWFtJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3JhdGluZycsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ2Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyAnd2lkZScsICdmdWxsJywgJ2NlbnRlcicgXSxcbiAgICAgICAgaHRtbDogdHJ1ZVxuICAgIH0sXG4gICAgZWRpdDogVGVzdGltb25pYWxMaXN0QmxvY2ssXG4gICAgc2F2ZTpTYXZlXG5cbn0pOyIsImltcG9ydCBQYWRkaW5nIGZyb20gJy4vLi4vLi4vdXRpbHMvcGFkZGluZyc7XG5pbXBvcnQgTWFyZ2luIGZyb20gJy4vLi4vLi4vdXRpbHMvbWFyZ2luJztcbmltcG9ydCBCU0hlYWRlclNldHRpbmdzIGZyb20gXCIuLi8uLi9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2hlYWRlci1zZXR0aW5nc1wiO1xuaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiO1xuXG4vKiBTZXR1cCB0aGUgYmxvY2sgKi9cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLyogSW1wb3J0IGJsb2NrIGNvbXBvbmVudHMgKi9cbmNvbnN0IHtcblx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFBhbmVsQ29sb3JTZXR0aW5nc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vKiBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHMgKi9cbmNvbnN0IHtcblx0UGFuZWxCb2R5LFxuXHRUb2dnbGVDb250cm9sLFxuXHRTZWxlY3RDb250cm9sLFxuXHRUZXh0Q29udHJvbCxcblx0UmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudCAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXHRjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG5cdFx0c3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuXHR9XG5cblx0cmVuZGVyKCkge1xuXG5cdFx0LyogU2V0dXAgdGhlIGF0dHJpYnV0ZXMgKi9cblx0XHRjb25zdCB7XG5cdFx0XHRwcm9maWxlVGV4dENvbG9yLFxuXHRcdFx0cHJvZmlsZUJhY2tncm91bmRDb2xvcixcblx0XHRcdHR3aXR0ZXIsIGZhY2Vib29rLFxuXHRcdFx0aW5zdGFncmFtLFxuXHRcdFx0eW91dHViZSxcblx0XHRcdGxpbmtlZGluLFxuXHRcdFx0YnV0dG9uRmlsbCxcblx0XHRcdHBhZGRpbmdUb3AsXG5cdFx0XHRwYWRkaW5nUmlnaHQsXG5cdFx0XHRwYWRkaW5nQm90dG9tLFxuXHRcdFx0cGFkZGluZ0xlZnQsXG5cdFx0XHRtYXJnaW5Ub3AsXG5cdFx0XHRtYXJnaW5Cb3R0b20sXG5cdFx0XHRpY29uQ29sb3JPcHRpb24sXG5cdFx0XHRjdXN0b21mb250Q29sb3JPcHRpb24sXG5cdFx0XHRjdXN0b21iYWNrZ3JvdW5kQ29sb3JPcHRpb24sXG5cdFx0XHRidXR0b25TaGFwZXMsXG5cdFx0XHRidXR0b25TaXplcyxcblx0XHRcdHRpdGxlRm9udFNpemUsXG5cdFx0XHRzdWJ0aXRsZUZvbnRTaXplLFxuXHRcdFx0aGVhZGVyVGFnT3B0aW9uLFxuXHRcdFx0aGVhZGVydGl0bGVDb2xvcixcblx0XHRcdGhlYWRlcnN1YnRpdGxlQ29sb3IsXG5cdFx0XHRoZWFkZXJsYXlvdXRPcHRpb24sXG5cdFx0XHR0aXRsZVBhZGRpbmdUb3AsXG5cdFx0XHR0aXRsZVBhZGRpbmdCb3R0b20sXG5cdFx0XHRzdWJ0aXRsZVBhZGRpbmdUb3AsXG5cdFx0XHRzdWJ0aXRsZVBhZGRpbmdCb3R0b20sXG5cdFx0XHRoZWFkZXJib3hDb2xvcixcblx0XHRcdGRhc2hDb2xvcixcblx0XHRcdGVuYWJsZUJveFNoYWRvdyxcblx0XHRcdHhPZmZzZXQsXG5cdFx0XHR5T2Zmc2V0LFxuXHRcdFx0Ymx1cixcblx0XHRcdHNwcmVhZCxcblx0XHRcdHNoYWRvd0NvbG9yLFxuXHRcdFx0Ym9yZGVyUmFkaXVzXG5cblx0XHR9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuXHRcdGNvbnN0IHsgc2V0QXR0cmlidXRlcyB9ID0gdGhpcy5wcm9wcztcblxuXG5cdFx0Y29uc3QgaWNvbk9wdGlvbnMgPSBbXG5cdFx0XHR7dmFsdWU6ICdibG9ja3NwYXJlLWRlZmF1bHQtb2ZmaWNpYWwtY29sb3InLCBsYWJlbDogX18oJyBPZmZpY2lhbCcsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnY3VzdG9tJywgbGFiZWw6IF9fKCdDdXN0b20nLCAnYmxvY2tzcGFyZScpfVxuXHRcdF07XG5cblx0XHRjb25zdCBpY29uU2hhcGVzID0gW1xuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1zcXVhcmUnLCBsYWJlbDogX18oJ1NxdWFyZScsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1jaXJjbGUnLCBsYWJlbDogX18oJ0NpcmNsZScsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1yb3VuZGVkJywgbGFiZWw6IF9fKCdSb3VuZGVkIFNxdWFyZScsICdibG9ja3NwYXJlJyl9XG5cdFx0XTtcblx0XHRjb25zdCBpY29uU2l6ZXMgPSBbXG5cdFx0XHR7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLXNtYWxsJywgbGFiZWw6IF9fKCdTbWFsbCcsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1tZWRpdW0nLCBsYWJlbDogX18oJ01lZGl1bScsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1sYXJnZScsIGxhYmVsOiBfXygnTGFyZ2UnLCAnYmxvY2tzcGFyZScpfVxuXHRcdF07XG5cblx0XHRjb25zdCBpY29uRmlsbHMgPSBbXG5cdFx0XHR7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLXNvbGlkJywgbGFiZWw6IF9fKCdTb2xpZCcsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1ib3JkZXInLCBsYWJlbDogX18oJ0JvcmRlcicsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1ub25lJywgbGFiZWw6IF9fKCdOb25lJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRdO1xuXG5cdFx0LyogVXBkYXRlIGNvbG9yIHZhbHVlcyAqL1xuXHRcdGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IHByb2ZpbGVCYWNrZ3JvdW5kQ29sb3I6IHZhbHVlIH0pO1xuXHRcdGNvbnN0IG9uQ2hhbmdlUHJvZmlsZVRleHRDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoeyBwcm9maWxlVGV4dENvbG9yOiB2YWx1ZSB9KTtcblx0XHRjb25zdCBvbkNoYW5nZWZvbnRjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoIHsgY3VzdG9tZm9udENvbG9yT3B0aW9uOiB2YWx1ZSB9ICk7XG5cdFx0Y29uc3Qgb25DaGFuZ2ViYWNrZ3JvdW5kY29sb3JzID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyggeyBjdXN0b21iYWNrZ3JvdW5kQ29sb3JPcHRpb246IHZhbHVlIH0gKTtcblx0XHRyZXR1cm4gKFxuXHRcdDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuXHRcdFx0PFBhbmVsQm9keVxuXHRcdFx0XHR0aXRsZT17X18oJ0hlYWRlciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdD5cblxuXHRcdFx0XHQ8QlNIZWFkZXJTZXR0aW5nc1xuXG5cdFx0XHRcdFx0ZW5hYmxlQmxvY2tHYXBzPXtmYWxzZX1cblx0XHRcdFx0XHR0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplfVxuXHRcdFx0XHRcdG9uQ2hhbmdldGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZUZvbnRTaXplfSl9XG5cblx0XHRcdFx0XHRzdWJ0aXRsZUZvbnRTaXplPXtzdWJ0aXRsZUZvbnRTaXplfVxuXHRcdFx0XHRcdG9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZUZvbnRTaXplfSl9XG5cblx0XHRcdFx0XHRoZWFkZXJsYXlvdXRPcHRpb249e2hlYWRlcmxheW91dE9wdGlvbn1cblx0XHRcdFx0XHRvbkNoYW5nZUhlYWRlclN0eWxlPXtoZWFkZXJsYXlvdXRPcHRpb24gPT4gc2V0QXR0cmlidXRlcyh7IGhlYWRlcmxheW91dE9wdGlvbiB9KSB9XG5cblx0XHRcdFx0XHRoZWFkZXJUYWdPcHRpb249e2hlYWRlclRhZ09wdGlvbn1cblx0XHRcdFx0XHRvbkNoYW5nZUhlYWRlclRhZz17aGVhZGVyVGFnT3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRhZ09wdGlvbn0pfVxuXG5cdFx0XHRcdFx0aGVhZGVyYm94Q29sb3I9e2hlYWRlcmJveENvbG9yfVxuXHRcdFx0XHRcdG9uQ2hhbmdlYm94Y29sb3I9e2hlYWRlcmJveENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlcmJveENvbG9yfSl9XG5cblx0XHRcdFx0XHRkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cblx0XHRcdFx0XHRvbkNoYW5nZURhc2hDb2xvcj17ZGFzaENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2Rhc2hDb2xvcn0pfVxuXG5cdFx0XHRcdFx0aGVhZGVydGl0bGVDb2xvcj17aGVhZGVydGl0bGVDb2xvcn1cblx0XHRcdFx0XHRvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cblx0XHRcdFx0XHR0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcH1cblx0XHRcdFx0XHRvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ1RvcH0pfVxuXG5cdFx0XHRcdFx0dGl0bGVQYWRkaW5nQm90dG9tPXt0aXRsZVBhZGRpbmdCb3R0b219XG5cdFx0XHRcdFx0b25DaGFuZ2V0aXRsZVBhZGRpbmdCb3R0b209IHt0aXRsZVBhZGRpbmdCb3R0b20gPT5zZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdCb3R0b219KX1cblxuXHRcdFx0XHRcdGhlYWRlcnN1YnRpdGxlQ29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3J9XG5cdFx0XHRcdFx0b25DaGFuZ2VzdWJ0aXRsZWNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJzdWJ0aXRsZUNvbG9yfSl9XG5cblx0XHRcdFx0XHRzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcH1cblx0XHRcdFx0XHRvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ1RvcH0pfVxuXG5cdFx0XHRcdFx0c3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b219XG5cdFx0XHRcdFx0b25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdCb3R0b219KX1cblx0XHRcdFx0Lz5cblx0XHRcdDwvUGFuZWxCb2R5PlxuXHRcdFx0XHQ8UGFuZWxCb2R5XG5cdFx0XHRcdFx0dGl0bGU9e19fKCdDb2xvciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0aW5pdGlhbE9wZW49e2ZhbHNlfVxuXHRcdFx0XHQ+XG5cblx0XHRcdFx0PFBhbmVsQ29sb3JTZXR0aW5nc1xuXHRcdFx0XHRcdHRpdGxlPXsgX18oICdDb2xvcnMnLCAnYmxvY2tzcGFyZScgKSB9XG5cdFx0XHRcdFx0aW5pdGlhbE9wZW49eyBmYWxzZSB9XG5cdFx0XHRcdFx0Y29sb3JTZXR0aW5ncz17IFtcblxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR2YWx1ZTogcHJvZmlsZVRleHRDb2xvcixcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IG9uQ2hhbmdlUHJvZmlsZVRleHRDb2xvcixcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCAnRGVzY3JpcHRpb24gQ29sb3InLCAnYmxvY2tzcGFyZScgKVxuXHRcdFx0XHRcdFx0fV0gfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG5cdFx0XHRcdDwvUGFuZWxCb2R5PlxuXG5cdFx0XHQ8UGFuZWxCb2R5XG5cdFx0XHRcdHRpdGxlPXtfXygnU29jaWFsIGxpbmsgVXJscycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdGNsYXNzTmFtZT17J2Jsb2Nrc3BhcmUtaGlkZS1xdWVyeSd9XG5cdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdD5cblx0XHRcdFx0PFRleHRDb250cm9sXG5cdFx0XHRcdFx0bGFiZWw9e19fKCdGYWNlYm9vayBVcmwnLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHR2YWx1ZT17ZmFjZWJvb2t9XG5cdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtmYWNlYm9vazogdmFsdWV9KX1cblx0XHRcdFx0Lz5cblxuXHRcdFx0XHQ8VGV4dENvbnRyb2xcblx0XHRcdFx0XHRsYWJlbD17X18oJ0xpbmtlZEluIFVybCcsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdHZhbHVlPXtsaW5rZWRpbn1cblx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2xpbmtlZGluOiB2YWx1ZX0pfVxuXHRcdFx0XHQvPlxuXG5cdFx0XHRcdDxUZXh0Q29udHJvbFxuXHRcdFx0XHRcdGxhYmVsPXtfXygnVHdpdHRlciBVcmwnLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHR2YWx1ZT17dHdpdHRlcn1cblx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3R3aXR0ZXI6IHZhbHVlfSl9XG5cdFx0XHRcdC8+XG5cdFx0XHQ8L1BhbmVsQm9keT5cblx0XHRcdDxQYW5lbEJvZHlcblx0XHRcdFx0dGl0bGU9e19fKCdTb2NpYWwgSWNvbiBPcHRpb24nLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRpbml0aWFsT3Blbj17ZmFsc2V9XG5cdFx0XHQ+XG5cdFx0XHRcdDxTZWxlY3RDb250cm9sXG5cdFx0XHRcdFx0bGFiZWw9e19fKCdTaXplJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRvcHRpb25zPXtpY29uU2l6ZXN9XG5cdFx0XHRcdFx0dmFsdWU9e2J1dHRvblNpemVzfVxuXHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7YnV0dG9uU2l6ZXM6IHZhbHVlfSl9XG5cblx0XHRcdFx0Lz5cblx0XHRcdFx0PFNlbGVjdENvbnRyb2xcblx0XHRcdFx0XHRsYWJlbD17X18oJ1NoYXBlJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRvcHRpb25zPXtpY29uU2hhcGVzfVxuXHRcdFx0XHRcdHZhbHVlPXtidXR0b25TaGFwZXN9XG5cdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtidXR0b25TaGFwZXM6IHZhbHVlfSl9XG5cblx0XHRcdFx0Lz5cblxuXG5cdFx0XHQ8L1BhbmVsQm9keT5cblx0XHRcdFx0PFBhbmVsQm9keVxuXHRcdFx0XHRcdHRpdGxlPXtfXygnQmxvY2sgR2FwcyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0aW5pdGlhbE9wZW49e2ZhbHNlfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PFBhbmVsQm9keVxuXHRcdFx0XHRcdFx0dGl0bGU9e19fKCdQYWRkaW5nIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8UGFkZGluZ1xuXG5cdFx0XHRcdFx0XHRcdC8vIFRvcCBwYWRkaW5nXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdFbmFibGVUb3A9e3RydWV9XG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdUb3A9e3BhZGRpbmdUb3B9XG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdUb3BNaW49XCIwXCJcblx0XHRcdFx0XHRcdFx0cGFkZGluZ1RvcE1heD1cIjEwMFwiXG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlUGFkZGluZ1RvcD17cGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nVG9wfSl9XG5cblx0XHRcdFx0XHRcdFx0Ly8gUmlnaHQgcGFkZGluZ1xuXHRcdFx0XHRcdFx0XHRwYWRkaW5nRW5hYmxlUmlnaHQ9e3RydWV9XG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdSaWdodD17cGFkZGluZ1JpZ2h0fVxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nUmlnaHRNaW49XCIwXCJcblx0XHRcdFx0XHRcdFx0cGFkZGluZ1JpZ2h0TWF4PVwiMTAwXCJcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2VQYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nUmlnaHR9KX1cblxuXHRcdFx0XHRcdFx0XHQvLyBCb3R0b20gcGFkZGluZ1xuXHRcdFx0XHRcdFx0XHRwYWRkaW5nRW5hYmxlQm90dG9tPXt0cnVlfVxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tfVxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nQm90dG9tTWluPVwiMFwiXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdCb3R0b21NYXg9XCIxMDBcIlxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZVBhZGRpbmdCb3R0b209e3BhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ0JvdHRvbX0pfVxuXG5cdFx0XHRcdFx0XHRcdC8vIExlZnQgcGFkZGluZ1xuXHRcdFx0XHRcdFx0XHRwYWRkaW5nRW5hYmxlTGVmdD17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0cGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0fVxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nTGVmdE1pbj1cIjBcIlxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nTGVmdE1heD1cIjEwMFwiXG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlUGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0ID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdMZWZ0fSl9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PE1hcmdpblxuXG5cdFx0XHRcdFx0XHRcdC8vIFRvcCBwYWRkaW5nXG5cdFx0XHRcdFx0XHRcdG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0bWFyZ2luVG9wPXttYXJnaW5Ub3B9XG5cdFx0XHRcdFx0XHRcdG1hcmdpblRvcE1pbj1cIjBcIlxuXHRcdFx0XHRcdFx0XHRtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZU1hcmdpblRvcD17bWFyZ2luVG9wID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpblRvcH0pfVxuXG5cblx0XHRcdFx0XHRcdFx0Ly8gQm90dG9tIG1hcmdpblxuXHRcdFx0XHRcdFx0XHRtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG5cdFx0XHRcdFx0XHRcdG1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tfVxuXHRcdFx0XHRcdFx0XHRtYXJnaW5Cb3R0b21NaW49XCIwXCJcblx0XHRcdFx0XHRcdFx0bWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2VNYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Cb3R0b219KX1cblxuXG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvUGFuZWxCb2R5PlxuXG5cdFx0XHRcdDwvUGFuZWxCb2R5PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9JbnNwZWN0b3JDb250cm9scz5cblx0XHQpO1xuXHR9XG59XG4iLCIvKipcbiAqIFByb2ZpbGUgQm94IFdyYXBwZXJcbiAqL1xuXG4vKiBTZXR1cCB0aGUgYmxvY2sgKi9cbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5cbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vKiBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzICovXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuLyogQ3JlYXRlIGEgcHJvZmlsZSBib3ggd3JhcHBlciBDb21wb25lbnQgKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb2ZpbGVCb3ggZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcblx0XHRzdXBlciggLi4uYXJndW1lbnRzICk7XG5cdH1cblxuXHRyZW5kZXIoKSB7XG5cblx0XHQvKiBTZXR1cCB0aGUgYXR0cmlidXRlcyAqL1xuXHRcdGNvbnN0IHtcblx0XHRcdGF0dHJpYnV0ZXM6IHtcblx0XHRcdFx0c2VjdGlvbkFsaWdubWVudCxcblx0XHRcdFx0cHJvZmlsZUltZ1VSTCxcblx0XHRcdFx0cHJvZmlsZUZvbnRTaXplLFxuXHRcdFx0XHRwcm9maWxlQmFja2dyb3VuZENvbG9yLFxuXHRcdFx0XHRwcm9maWxlVGV4dENvbG9yLFxuXHRcdFx0XHRwcm9maWxlQXZhdGFyU2hhcGUsXG5cdFx0XHRcdGJvcmRlclJhZGl1c1xuXHRcdFx0fSxcblx0XHRcdGF0dHJpYnV0ZXNcblxuXHRcdH0gPSB0aGlzLnByb3BzO1xuXG5cdFx0bGV0IG9wdGluc0xheXB1dHMgPSAnJztcblxuXHRcdGlmKHNlY3Rpb25BbGlnbm1lbnQgPT0gJ2xlZnQnKXtcblx0XHRcdG9wdGluc0xheXB1dHMgPSAnYmxvY2tzcGFyZS1sYXlvdXQtbGVmdCdcblx0XHR9ZWxzZSBpZihzZWN0aW9uQWxpZ25tZW50ID09ICdyaWdodCcpe1xuXHRcdFx0b3B0aW5zTGF5cHV0cyA9ICdibG9ja3NwYXJlLWxheW91dC1yaWdodCdcblx0XHR9ZWxzZXtcblx0XHRcdG9wdGluc0xheXB1dHMgPSAnYmxvY2tzcGFyZS1sYXlvdXQtY2VudGVyJ1xuXHRcdH1cblxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXZcblx0XHRcdHN0eWxlPXsge1xuXHRcdFx0XHQuLi5ib3hTaGFkb3dTdHlsZXMoYXR0cmlidXRlcyksXG5cdFx0XHRcdGJhY2tncm91bmRDb2xvcjogcHJvZmlsZUJhY2tncm91bmRDb2xvcj9wcm9maWxlQmFja2dyb3VuZENvbG9yOicjZjJmMmYyJyxcblx0XHRcdFx0Y29sb3I6IHByb2ZpbGVUZXh0Q29sb3I/cHJvZmlsZVRleHRDb2xvcjonIzZkNmQ2ZCcsXG5cdFx0XHRcdGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzID8gYm9yZGVyUmFkaXVzIDogbnVsbCxcblx0XHRcdH0gfVxuXHRcdFx0Y2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcblx0XHRcdFx0dGhpcy5wcm9wcy5jbGFzc05hbWUsXG5cblx0XHRcdFx0cHJvZmlsZUF2YXRhclNoYXBlLFxuXHRcdFx0XHRvcHRpbnNMYXlwdXRzLFxuXHRcdFx0XHR7ICdibG9ja3NwYXJlLWhhcy1hdmF0YXInOiBwcm9maWxlSW1nVVJMIH0sXG5cdFx0XHRcdCdibG9ja3NwYXJlLWZvbnQtc2l6ZS0nICsgcHJvZmlsZUZvbnRTaXplLFxuXHRcdFx0XHQnYmxvY2tzcGFyZS1ibG9jay1wcm9maWxlJyxcblx0XHRcdFx0J2Jsb2Nrc3BhcmUtcHJvZmlsZS1jb2x1bW5zJyxcblx0XHRcdCkgfT5cblx0XHRcdFx0eyB0aGlzLnByb3BzLmNoaWxkcmVuIH1cblx0XHRcdDwvZGl2PlxuXHRcdCk7XG5cdH1cbn1cbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5cbi8qKlxuICogU29jaWFsIE1lZGlhIEljb25zXG4gKi9cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLyoqXG4gKiBDcmVhdGUgYW4gU29jaWFsSWNvbnMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU29jaWFsSWNvbnMgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcblx0XHRzdXBlciggLi4uYXJndW1lbnRzICk7XG5cdH1cblxuXG5cdHJlbmRlcigpIHtcblxuXG5cdFx0bGV0IGNvbG9yU3R5bGVzID0gJyc7XG5cblx0XHRpZiAodGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmljb25Db2xvck9wdGlvbiAhPSAnYmxvY2tzcGFyZS1kZWZhdWx0LW9mZmljaWFsLWNvbG9yJykge1xuXHRcdFx0Y29sb3JTdHlsZXMgPSB7XG5cdFx0XHRcdGNvbG9yOiB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuY3VzdG9tZm9udENvbG9yT3B0aW9uLFxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IHRoaXMucHJvcHMuYXR0cmlidXRlcy5jdXN0b21iYWNrZ3JvdW5kQ29sb3JPcHRpb25cblx0XHRcdH07XG5cdFx0fWVsc2V7XG5cdFx0XHRjb2xvclN0eWxlcz17XG5cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdDx1bCBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG5cdFx0XHRcdCdibG9ja3NwYXJlLXNvY2lhbC1saW5rcycsXG5cdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5pY29uQ29sb3JPcHRpb24sXG5cdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5idXR0b25TaGFwZXMsXG5cdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5idXR0b25TaXplcyxcblx0XHRcdFx0dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbk9wdGlvbnMsXG5cdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5idXR0b25GaWxscyxcblxuXHRcdFx0KX0+XG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmFjZWJvb2sgJiZcblx0XHRcdFx0XHQ8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmFjZWJvb2t9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG5cdFx0XHRcdFx0XHQgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG5cdFx0XHRcdFx0XHQ8aSBjbGFzc05hbWU9J2ZhYiBmYS1mYWNlYm9vay1mJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge19fKCdGYWNlYm9vaycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cblx0XHRcdFx0fVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGluICYmXG5cdFx0XHRcdFx0PGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGlufSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuXHRcdFx0XHRcdFx0ICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuXHRcdFx0XHRcdFx0PGkgY2xhc3NOYW1lPSdmYWIgZmEtbGlua2VkaW4nPjwvaT5cblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT17J3NjcmVlbi1yZWFkZXItdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHtfXygnTGlua2VkaW4nLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG5cdFx0XHRcdH1cblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5pbnN0YWdyYW0gJiZcblx0XHRcdFx0XHQ8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW5zdGFncmFtfSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuXHRcdFx0XHRcdFx0ICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuXHRcdFx0XHRcdFx0PGkgY2xhc3NOYW1lPSdmYWIgZmEtaW5zdGFncmFtJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge19fKCdJbnN0YWdyYW0nLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnR3aXR0ZXIgJiZcblx0XHRcdFx0XHQ8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlcn0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcblx0XHRcdFx0XHRcdCAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cblx0XHRcdFx0XHRcdDxpIGNsYXNzTmFtZT0nZmFiIGZhLXR3aXR0ZXInPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7X18oJ1R3aXR0ZXInLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG5cdFx0XHRcdH1cblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy55b3V0dWJlICYmXG5cdFx0XHRcdFx0PGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnlvdXR1YmV9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG5cdFx0XHRcdFx0XHQgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG5cdFx0XHRcdFx0XHQ8aSBjbGFzc05hbWU9J2ZhYiBmYS15b3V0dWJlJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge19fKCdZb3V0dWJlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L3VsPlxuXHRcdCk7XG5cdH1cbn1cbiIsIi8qKlxuICogQXZhdGFyIENvbHVtbiBXcmFwcGVyXG4gKi9cblxuLyogU2V0dXAgdGhlIGJsb2NrICovXG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLyogQ3JlYXRlIGFuIFNvY2lhbEljb25zIHdyYXBwZXIgQ29tcG9uZW50ICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdmF0YXJDb2x1bW4gZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcblx0XHRzdXBlciggLi4uYXJndW1lbnRzICk7XG5cdH1cblxuXHRyZW5kZXIoKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcm9maWxlLWNvbHVtbiBibG9ja3NwYXJlLXByb2ZpbGUtYXZhdGFyLXdyYXBcIj5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByb2ZpbGUtaW1hZ2Utd3JhcFwiPlxuXHRcdFx0XHRcdHsgdGhpcy5wcm9wcy5jaGlsZHJlbiB9XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxufVxuIiwiLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vaW5zcGVjdG9yJztcbmltcG9ydCBQcm9maWxlQm94IGZyb20gJy4vcHJvZmlsZSc7XG5pbXBvcnQgU29jaWFsSWNvbnMgZnJvbSAnLi9zb2NpYWwnO1xuaW1wb3J0IEF2YXRhckNvbHVtbiBmcm9tICcuL2F2YXRhcic7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuXG5jb25zdCBwcmV2X2ltZyA9IGJsb2Nrc3BhcmVfZ2xvYmFscztcbmNvbnN0IEFMTE9XRURfQkxPQ0tTID0gWyAnY29yZS9pbWFnZSddO1xuY29uc3QgVEVNUExBVEUgPSBbXG4gICAgWydjb3JlL2ltYWdlJyx7XG4gICAgICAgIHVybDpwcmV2X2ltZy5tZW51X2ltZ191cmwsXG4gICAgICAgIGNsYXNzTmFtZTonaXMtc3R5bGUtY2lyY2xlLW1hc2snLFxuICAgICAgICB3aWR0aDoxMjAsXG4gICAgICAgIGhlaWdodDoxMjAsXG4gICAgICAgIGFsaWduOidjZW50ZXInLFxuXG4gICAgfV1cbl07XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5jb25zdCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEZyYWdtZW50XG59ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9scyxcbiAgICBJbm5lckJsb2Nrc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVDb250ZW50LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBwcm9maWxlQ29udGVudEZvbnRTaXplXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG5cbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IHBhZGRpbmdSaWdodCA/IHBhZGRpbmdSaWdodCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6IG1hcmdpblRvcCA/IG1hcmdpblRvcCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBtYXJnaW5Cb3R0b20gPyBtYXJnaW5Cb3R0b20gKyAncHgnIDogXCIwcHhcIixcblxuXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uZGFzaENvbG9ycyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4udGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN1YnRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uc3VidGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbXG5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYXV0aG9yLXdyYXBwZXIgYmxvY2tzcGFyZS1ibG9ja3MnIHN0eWxlPXtlZGl0U3R5bGVzfT5cbiAgICAgICAgICAgICAgICA8QmxvY2tDb250cm9scyBrZXk9XCJjb250cm9sc1wiPlxuICAgICAgICAgICAgICAgICAgICA8QWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlY3Rpb25BbGlnbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtzZWN0aW9uQWxpZ25tZW50OiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPFByb2ZpbGVCb3ggey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICA8QXZhdGFyQ29sdW1uIHsuLi50aGlzLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXsgVEVNUExBVEUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRCbG9ja3M9eyBBTExPV0VEX0JMT0NLUyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVMb2NrPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVJbnNlcnRVcGRhdGVzU2VsZWN0aW9uPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0F2YXRhckNvbHVtbj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJvZmlsZS1jb2x1bW4gYmxvY2tzcGFyZS1wcm9maWxlLWNvbnRlbnQtd3JhcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRpdGxlOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1N1YiBUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3VidGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJTdWJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJkaXZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1wcm9maWxlLXRleHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdBZGQgeW91ciBjb250ZW50Li4uJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb2ZpbGVDb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOnByb2ZpbGVDb250ZW50Rm9udFNpemUrJ3B4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEZvcm1hdHM9e1snYm9sZCcsICdpdGFsaWMnLCAnc3RyaWtldGhyb3VnaCcsICdsaW5rJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7cHJvZmlsZUNvbnRlbnQ6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8U29jaWFsSWNvbnMgey4uLnRoaXMucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvUHJvZmlsZUJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBdO1xuICAgIH1cbn1cbiIsIi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByb2ZpbGVCb3ggZnJvbSAnLi9wcm9maWxlJztcbmltcG9ydCBTb2NpYWxJY29ucyBmcm9tICcuL3NvY2lhbCc7XG5pbXBvcnQgQXZhdGFyQ29sdW1uIGZyb20gJy4vYXZhdGFyJztcbmltcG9ydCBkYXNoQ29sb3JzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvZGFzaFwiO1xuaW1wb3J0IHRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci90aXRsZVwiO1xuaW1wb3J0IHN1YnRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9zdWJ0aXRsZVwiO1xuaW1wb3J0IEJTSGVhZGVyIGZyb20gXCIuLi8uLi9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2hlYWRlcnNcIjtcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICBJbm5lckJsb2Nrc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICBwcm9maWxlQ29udGVudCxcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICBoZWFkZXJUYWdPcHRpb24sXG4gICAgICAgICAgICBoZWFkZXJUaXRsZSxcbiAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuICAgICAgICAgICAgcHJvZmlsZUNvbnRlbnRGb250U2l6ZVxuICAgICAgICB9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgPyBwYWRkaW5nUmlnaHQgKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogcGFkZGluZ0xlZnQgPyBwYWRkaW5nTGVmdCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICAgICAgbWFyZ2luVG9wOiBtYXJnaW5Ub3AgPyBtYXJnaW5Ub3AgKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogbWFyZ2luQm90dG9tID8gbWFyZ2luQm90dG9tICsgJ3B4JyA6IFwiMHB4XCIsXG5cblxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlRGFzaFN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLmRhc2hDb2xvcnModGhpcy5wcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4udGl0bGVDb2xvcih0aGlzLnByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKHRoaXMucHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gKFxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1hdXRob3Itd3JhcHBlciBibG9ja3NwYXJlLWJsb2Nrcycgc3R5bGU9e2VkaXRTdHlsZXN9PlxuXG4gICAgICAgICAgICAgICAgPFByb2ZpbGVCb3ggey4uLnRoaXMucHJvcHN9PlxuXG4gICAgICAgICAgICAgICAgICAgIDxBdmF0YXJDb2x1bW4gey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0F2YXRhckNvbHVtbj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1wcm9maWxlLWNvbHVtbiBibG9ja3NwYXJlLXByb2ZpbGUtY29udGVudC13cmFwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXIgey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclRpdGxlICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJUaXRsZX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyU3ViVGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CU0hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAge3Byb2ZpbGVDb250ZW50ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcm9maWxlLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJvZmlsZUNvbnRlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTpwcm9maWxlQ29udGVudEZvbnRTaXplK1wicHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8U29jaWFsSWNvbnMgey4uLnRoaXMucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvUHJvZmlsZUJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IHNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzIGZyb20gXCIuLi91dGlscy9hdHRyaWJ1dGVzL3NlY3Rpb24taGVhZGVyXCI7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2NvbXBvbmVudHMvZWRpdCc7XG5pbXBvcnQgU2F2ZSBmcm9tICcuL2NvbXBvbmVudHMvc2F2ZSc7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcblxuXG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge25hbWUsY2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5jb25zdCBhdHRyaWJ1dGVzID17XG5cdC4uLnNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzLFxuXHRcdC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXMsXG5cdC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcblxufTtcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcblx0dGl0bGU6IF9fKCdCUyBVc2VyIFByb2ZpbGUnLCAnYmxvY2tzcGFyZScpLFxuXHRkZXNjcmlwdGlvbjogX18oJ0FkZCBVc2VyIHByb2ZpbGUnLCAnYmxvY2tzcGFyZScpLFxuXHRjYXRlZ29yeSxcblx0aWNvbjogaWNvbnMudXNlcnByb2ZpbGUsXG5cdGF0dHJpYnV0ZXMsXG5cdGtleXdvcmRzOiBbXG5cdFx0X18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcblx0XHRfXygndXNlcicsICdibG9ja3NwYXJlJyksXG5cdFx0X18oJ3Byb2ZpbGUnLCAnYmxvY2tzcGFyZScpLFxuXHRcdF9fKCd0ZWFtJywgJ2Jsb2Nrc3BhcmUnKSxcblxuXHRdLFxuXHRleGFtcGxlOntcblx0XHRhdHRyaWJ1dGVzOntcblx0XHRcdHByb2ZpbGVCYWNrZ3JvdW5kQ29sb3I6XCIjZjJmMmYyXCJcblx0XHR9XG5cblx0fSxcblxuXHRlZGl0OiBwcm9wcyA9PiB7XG5cdFx0cmV0dXJuIDxFZGl0IHsgLi4ucHJvcHMgfSAvPjtcblx0fSxcblxuXHQvKiBTYXZlIHRoZSBibG9jayBtYXJrdXAuICovXG5cdHNhdmU6IHByb3BzID0+IHtcblx0XHRyZXR1cm4gPFNhdmUgeyAuLi5wcm9wcyB9IC8+O1xuXHR9LFxuXG59KTtcbiIsIlxuaW1wb3J0IERlc2lnblBhbmVsQm9keSBmcm9tIFwiLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1wYW5lbC1ib2R5XCI7XG5pbXBvcnQgRGVzaWduU2VwYXJhdG9yQ29udHJvbCBmcm9tIFwiLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbFwiO1xuaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vdXRpbHMvbWFyZ2luXCI7XG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBJbnNwZWN0b3IgQ29udHJvbHMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGRlc2lnbj0nZG91YmxlLXdhdmUnLFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBjb2xvcixcbiAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7c2V0QXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlU2hhcGVzY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2xvcjogdmFsdWV9KTtcblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPERlc2lnblBhbmVsQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPERlc2lnblNlcGFyYXRvckNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgZGVzaWduID0+IHNldEF0dHJpYnV0ZXMoIHsgZGVzaWduIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17IGRlc2lnbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlRGVzaWducz17IFsgJ3N0cmFpZ2h0LTEnIF0gfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRGVzaWduUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdEaXZpZGVyIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdTaGFwZSBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVNoYXBlc2NvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnU2hhcGUgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXyhcIkhlaWdodFwiLFwiYmxvY2tzcGFyZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IGhlaWdodDogdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD17Mn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heD17MzAwfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnTWFyZ2luIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IG1hcmdpblBhZGRpbmdTdHlsZXMgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZ1wiO1xuXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuaW1wb3J0IENvbnRyb2xzIGZyb20gJy4vY29udHJvbHMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5pbXBvcnQgU2VwYXJhdG9yIGZyb20gJy4uL3V0aWxzL3NlcGFyYXRvcic7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudHtcbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICBkZXNpZ249J2RvdWJsZS13YXZlJyxcbiAgICAgICAgICAgIGxheWVyMVNoYWRvdyA9IGZhbHNlLFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB2ZXJ0aWNhbEZsaXAsXG4gICAgICAgICAgICBob3Jpem9udGFsRmxpcCxcbiAgICAgICAgICAgIGNvbG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgbGV0IGNsYXNzZXMgPSBjbGFzc25hbWVzKFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc3ZnLXdyYXBwZXInLFxuICAgICAgICAgICAgd2lkdGhSYXRpbyh3aWR0aCksXG4gICAgICAgICAgICBjbGFzc05hbWUsIHtcbiAgICAgICAgICAgICAgICAnaXMtdmVydGljYWxseS1mbGlwcGVkJzogdmVydGljYWxGbGlwLFxuICAgICAgICAgICAgICAgICdpcy1ob3Jpem9udGFsbHktZmxpcHBlZCc6IGhvcml6b250YWxGbGlwLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuKFxuXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7IGlzU2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8Q29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4udGhpcy5wcm9wcyB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSB9XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlc30gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6Y29sb3I/Y29sb3I6XCIjM2MxYTViXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDpoZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIC4uLm1hcmdpblBhZGRpbmdTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxTZXBhcmF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbj17IGRlc2lnbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3c9eyBsYXllcjFTaGFkb3cgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmctc3ZnLWlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L1NlcGFyYXRvcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHdpZHRoUmF0aW8od2lkdGgpIHtcbiAgICB2YXIgc3RyID0gd2lkdGgudG9TdHJpbmcoKTtcbiAgICB2YXIgbmV3V2lkdGggPSBzdHIucmVwbGFjZSgnLicsJy0nKTtcbiAgICByZXR1cm4gJ2hhcy13aWR0aC0nK25ld1dpZHRoO1xufSIsImltcG9ydCBtYXJnaW5QYWRkaW5nU3R5bGVzIGZyb20gXCIuLi91dGlscy9zdHlsZXMvbWFyZ2luLXBhZGRpbmdcIjtcblxuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuaW1wb3J0IFNlcGFyYXRvciBmcm9tICcuLi91dGlscy9zZXBhcmF0b3InO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50e1xuXG4gICAgcmVuZGVyKCl7XG4gICAgICAgIGNvbnN0IHsgY2xhc3NOYW1lIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgICAgICBkZXNpZ24gPSAnZG91YmxlLXdhdmUnLFxuICAgICAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbEZsaXAsXG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbEZsaXAsXG4gICAgICAgICAgICAgICAgY29sb3JcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgY2xhc3NlcyA9IGNsYXNzbmFtZXMoXG5cbiAgICAgICAgICAgIGNsYXNzTmFtZSwge1xuICAgICAgICAgICAgICAgICdpcy12ZXJ0aWNhbGx5LWZsaXBwZWQnOiB2ZXJ0aWNhbEZsaXAsXG4gICAgICAgICAgICAgICAgJ2lzLWhvcml6b250YWxseS1mbGlwcGVkJzogaG9yaXpvbnRhbEZsaXAsXG4gICAgICAgICAgICB9LCdhbGlnbicrYWxpZ24sXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9ja3MgYmxvY2tzcGFyZS1zdmctd3JhcHBlcicsXG4gICAgICAgICAgICB3aWR0aFJhdGlvKHdpZHRoKSk7XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjpjb2xvcj9jb2xvcjpcIiMzYzFhNWJcIixcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgLi4ubWFyZ2luUGFkZGluZ1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduPXsgZGVzaWduIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnLXN2Zy1pbm5lclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9TZXBhcmF0b3I+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuZnVuY3Rpb24gd2lkdGhSYXRpbyh3aWR0aCkge1xuICAgIHZhciBzdHIgPSB3aWR0aC50b1N0cmluZygpO1xuICAgIHZhciBuZXdXaWR0aCA9IHN0ci5yZXBsYWNlKCcuJywnLScpO1xuICAgIHJldHVybiAnaGFzLXdpZHRoLScrbmV3V2lkdGg7XG59XG5cbiIsImltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5pbXBvcnQgRWRpdCBmcm9tICcuL0VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9zYXZlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMnO1xuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyBuYW1lLCBjYXRlZ29yeSwgYXR0cmlidXRlcyB9ID0gbWV0YWRhdGE7XG4vL2NvbnNvbGUubG9nKGF0dHJpYnV0ZXMpO1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuXG4gICAgdGl0bGU6IF9fKCAnQlMgU2hhcGUgRGl2aWRlcicsICdibG9ja3NwYXJlJyApLFxuICAgIGRlc2NyaXB0aW9uOiBfXyggJ0RlY29yYXRpb25zIGZvciBzZWN0aW9uIHNoYXBlcy4nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBjYXRlZ29yeTpjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5zaGFwZWRpdml2ZXIsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2hhcGUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnZGl2aWRlcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdzcGFjZScsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbJ3dpZGUnLCAnZnVsbCcsJ2NlbnRlciddLFxuICAgIH0sXG4gICAgZXhhbXBsZTp7XG4gICAgICAgIGRlc2lnbjonZG91YmxlLXdhdmUnLFxuICAgICAgICBjb2xvcjonIzNjMWE1YidcbiAgICB9LFxuICAgIGVkaXQ6RWRpdCxcbiAgICBzYXZlOlNhdmUsXG59KTtcbiIsImNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxuICAgIEluc3BlY3RvckNvbnRyb2xzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBSYW5nZUNvbnRyb2wsXG4gICAgUGFuZWxCb2R5XG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge1xuXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3JcbiAgICAgICAgfT10aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHtzZXRBdHRyaWJ1dGVzfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja0dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuXG4gICAgICAgIHJldHVybihcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oXCJIZWlnaHRcIiwgXCJibG9ja3NwYXJlXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7aGVpZ2h0OiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9ezV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD17MTUwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUJhY2tncm91bmRjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgIClcblxuICAgIH1cbn0iLCJpbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9jb21wb25lbnRzL2luc3BlY3Rvcic7XG5pbXBvcnQgaWNvbnMgZnJvbSBcIi4uLy4uL2Fzc2V0cy9pY29uc1wiO1xuY29uc3Qge0ZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3R7bmFtZSxjYXRlZ29yeX0gPSBtZXRhZGF0YTtcblxuY29uc3QgYXR0cmlidXRlcyA9e1xuICAgIC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXNcbn1cblxuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBFbXB0eSBTZWN0aW9uJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0VtcHR5IFNlY3Rpb24nLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLmVtcHR5U3BhY2VzLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2VtcHR5JywgJ2Jsb2Nrc3BhcmUnKVxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyd3aWRlJywgJ2Z1bGwnLCdjZW50ZXInXSxcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ0Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZWRpdDogZnVuY3Rpb24ocHJvcHMpe1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvclxuXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvciB7Li4ucHJvcHN9Lz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWVtcHR5LXNlY3Rpb24td3JhcHBlcmB9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1zZWN0aW9uYH1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6aGVpZ2h0KydweCcsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOjEwMCtcIiVcIixcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmJhY2tHcm91bmRDb2xvcj9iYWNrR3JvdW5kQ29sb3I6JyNmZmYnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICB9LFxuICAgIHNhdmU6ZnVuY3Rpb24ocHJvcHMpe1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3JcblxuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgcmV0dXJuKFxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtZW1wdHktc2VjdGlvbi13cmFwcGVyYH0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXNlY3Rpb25gfVxuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6aGVpZ2h0KydweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6MTAwK1wiJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpiYWNrR3JvdW5kQ29sb3I/YmFja0dyb3VuZENvbG9yOicjZmZmJ1xuICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== |