-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.b5072f960f462cf5ddf7.bundle.js
More file actions
2 lines (2 loc) · 77 KB
/
Copy pathmain.b5072f960f462cf5ddf7.bundle.js
File metadata and controls
2 lines (2 loc) · 77 KB
1
2
(()=>{var e={842:e=>{e.exports="img/alexandra-rossi.jpg"},475:e=>{e.exports="img/chartjs.svg"},68:e=>{e.exports="img/javascript.png"},527:e=>{e.exports="img/john-doe.jpg"},961:e=>{e.exports="img/karl-miller.jpg"},657:e=>{e.exports="img/kate-stevenson.jpg"},628:e=>{e.exports="img/logo.svg"},564:e=>{e.exports="img/martha-williams.jpg"},602:e=>{e.exports="img/min-wang.jpg"},670:e=>{e.exports="img/peter-anderson.jpg"},835:e=>{e.exports="img/philip-brown.jpg"},990:e=>{e.exports="img/pic-placeholder.png"},182:e=>{e.exports="img/robert-marino.jpg"},911:e=>{e.exports="img/sarah-forrester.jpg"},499:e=>{e.exports="img/serena-johnson.jpg"},574:e=>{e.exports="img/webpack.png"}},t={};function r(o){var l=t[o];if(void 0!==l)return l.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";const e=location.href.split("/").splice(-1)[0],t="index.html"===e||""===e;if(t){const e=document.querySelector("#dashboard"),t=document.querySelector(".topbar"),r=t.querySelector("#sidebarToggle"),o=document.querySelector(".main"),l=document.querySelector("body"),n=t.querySelector(".topbar__search__form");e.addEventListener("click",(e=>{e.target===r&&a()}));const a=()=>{document.querySelector(".sidebar").classList.toggle("sidebar-hidden"),r.classList.toggle("fa-bars"),r.classList.toggle("fa-close"),o.classList.toggle("main-overlay"),l.classList.toggle("no-scroll")};n.addEventListener("submit",(e=>{e.preventDefault()}))}document.querySelectorAll(".footer__menu__list__item__link").forEach((e=>{e.href===window.location.href&&e.closest(".footer__menu__list__item").classList.add("footer__menu__list__item-active")})),document.querySelectorAll(".topbar__left__page").forEach((e=>{e.href===window.location.href&&e.classList.add("topbar__left__page-active")}));var o=r(842),l=r.n(o),n=r(527),a=r.n(n),s=r(961),i=r.n(s),c=r(657),d=r.n(c),u=r(564),p=r.n(u),g=r(602),b=r.n(g),m=r(670),y=r.n(m),_=r(835),f=r.n(_),h=r(182),S=r.n(h),A=r(911),C=r.n(A),v=r(499),x=r.n(v),q=r(990),k=r.n(q),D=r(628),L=r.n(D),j=r(574),w=r.n(j),M=r(68),$=r.n(M),H=r(475),T=r.n(H);const E=document.querySelectorAll(".alexandra"),O=document.querySelectorAll(".john"),R=document.querySelectorAll(".karl"),W=document.querySelectorAll(".kate"),F=document.querySelectorAll(".martha"),I=document.querySelectorAll(".min"),J=document.querySelectorAll(".peter"),N=document.querySelectorAll(".philip"),V=document.querySelectorAll(".robert"),U=document.querySelectorAll(".sarah"),B=document.querySelectorAll(".serena"),G=document.querySelectorAll(".pic-placeholder"),P=document.querySelectorAll(".logo__img"),Z=document.querySelectorAll(".webpack"),K=document.querySelectorAll(".javascript"),Y=document.querySelectorAll(".chartjs"),z=(e,t)=>{e.forEach((e=>{if(e.src=t,t!==k()&&t!==L()){const r=t.split("/").slice(-1)[0].split("-"),o=r[0].charAt(0).toUpperCase()+r[0].slice(1),l=r[1].split(".")[0].charAt(0).toUpperCase()+r[1].split(".")[0].slice(1);e.alt=`${o} ${l}`}}))};z(E,l()),z(O,a()),z(R,i()),z(W,d()),z(F,p()),z(I,b()),z(J,y()),z(N,f()),z(V,S()),z(U,C()),z(B,x()),z(G,k()),z(P,L());const Q=(e,t)=>{e.forEach((e=>e.src=t))};Q(Z,w()),Q(K,$()),Q(Y,T());const X="rgb(241,186,58, 1)",ee="rgba(241,186,58, .3)",te="rgba(236,93,162,.3)",re="rgba(236,107,106,1)",oe="rgba(236,107,106,.3)",le="rgba(83,172,223,1)",ne="rgba(83,172,223,.3)",ae="rgba(80,208,131,1)",se="rgba(80,208,131,.3)",ie="rgb(152,161,170)",ce="rgb(208,211,216)";if(t){const e=document.querySelectorAll(".target"),t=[{color:te,value:"48%",current:"$1.152.000",goal:"$2.400.000"},{color:ne,value:"82%",current:"#147.600",goal:"#180.000"},{color:ee,value:"61%",current:"$176.900",goal:"below $290.000"},{color:se,value:"73%",current:"#1.379.700",goal:"#1.890.000"},{color:"rgba(215,121,229, .3)",value:"75%",current:"$1.582.500",goal:"$2.110.000"},{color:oe,value:"45%",current:"$85.500",goal:"below $190.000"}];for(let r=0;r<e.length;r++){let o=t[r],l=e[r],n=l.querySelector(".target__percentage"),a=l.querySelector(".target__wrap__bar"),s=l.querySelector(".target__wrap__bar__inside"),i=l.querySelector(".target__footer__current__value"),c=l.querySelector(".target__footer__goal__value");l.style.borderColor=o.color,n.style.borderColor=o.color,a.style.backgroundColor=o.color,a.style.borderColor=o.color,s.style.backgroundColor=o.color,s.style.width=o.value,n.innerHTML=o.value,s.innerHTML=o.value,i.innerHTML=o.current,c.innerHTML=o.goal}}if(t){const e=[{content:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc augue augue, convallis et ullamcorper at, feugiat a leo",color:"#ffc",head:"#FFFFB3"},{content:"Ut tempus sodales pretium. Sed blandit nisl sit amet ex placerat, ut faucibus enim pharetra",color:se,head:"#B9D9C6"},{content:"Nullam elementum ultrices turpis vel varius. Sed iaculis quam non erat hendrerit maximus",color:ne,head:"#B7D2E1"},{content:"Nunc mi lorem, vestibulum a hendrerit non, condimentum et lorem. Vestibulum euismod diam velit",color:te,head:"#EAB4CE"}],t=document.querySelectorAll(".board__content__note");for(let r=0;r<t.length;r++){const o=t[r],l=e[r];o.querySelector(".board__content__note__body").innerHTML=l.content,o.querySelector(".board__content__note__body").style.backgroundColor=l.color,o.querySelector(".board__content__note__header").style.backgroundColor=l.head}}const de=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ue=new Date,pe=ue.getFullYear(),ge=ue.toDateString().substring(4,7),be=ue.toDateString().substring(8,10),me=ue.toDateString().substring(13,15),ye=["January","February","March","April","May","June","July","August","September","October","November","December"][de.indexOf(ge)],_e=new Date(ue.setDate(ue.getDate()-1)),fe=_e.toDateString().substring(8,10),he=_e.toDateString().substring(13,15),Se=_e.toDateString().substring(4,7),Ae=new Date(_e.setDate(_e.getDate()-1)),Ce=Ae.toDateString().substring(8,10),ve=Ae.toDateString().substring(13,15),xe=Ae.toDateString().substring(4,7),qe=new Date(ue.setDate(ue.getDate()+2)),ke=qe.toDateString().substring(8,10),De=(qe.toDateString().substring(13,15),qe.toDateString().substring(4,7)),Le=new Date(ue.setDate(ue.getDate()+3)),je=Le.toDateString().substring(8,10),we=(Le.toDateString().substring(13,15),Le.toDateString().substring(4,7));if(t){Array.from(document.querySelectorAll(".current-day"));const e=Array.from(document.querySelectorAll(".current-month")),t=Array.from(document.querySelectorAll(".current-year")),r=Array.from(document.querySelectorAll(".current-date")),o=Array.from(document.querySelectorAll(".yesterday-date")),l=Array.from(document.querySelectorAll(".twodaysago-date")),n=Array.from(document.querySelectorAll(".current-date-short")),a=Array.from(document.querySelectorAll(".yesterday-date-short")),s=Array.from(document.querySelectorAll(".inthreedays-date-short")),i=Array.from(document.querySelectorAll(".tomorrow-date-short"));e.map((e=>e.innerHTML=ye)),t.map((e=>e.innerHTML=pe)),r.map((e=>e.innerHTML=[be,Me(ge),me].join("/"))),o.map((e=>e.innerHTML=[fe,Me(Se),he].join("/"))),l.map((e=>e.innerHTML=[Ce,Me(xe),ve].join("/"))),n.map((e=>e.innerHTML=[be,Me(ge)].join("/"))),a.map((e=>e.innerHTML=[fe,Me(Se)].join("/"))),s.map((e=>e.innerHTML=[je,Me(we)].join("/"))),i.map((e=>e.innerHTML=[ke,Me(De)].join("/")))}function Me(e){const t=de.indexOf(e)+1;return t<10?`0${t}`:t}if(t){const e=document.querySelector(".calendar__body"),t=new Date(pe,de.indexOf(ge),0).getDay(),r=["Apr","Jun","Sep","Nov"].includes(ge)?30:"Feb"===ge?2024===pe||2028===pe?29:28:31;let o=[];for(let e=0;e<r+t;e++)e<t?o.push(" "):o.push(e-t+1);const l=Math.ceil((r+t)/7);for(let t=0;t<l;t++)e.insertAdjacentHTML("afterbegin",' \n <tr>\n <td class="calendar__cell"> </td>\n <td class="calendar__cell"> </td>\n <td class="calendar__cell"> </td>\n <td class="calendar__cell"> </td>\n <td class="calendar__cell"> </td>\n <td class="calendar__cell"> </td>\n <td class="calendar__cell"> </td>\n </tr>');const n=Array.from(document.querySelectorAll(".calendar__cell"));for(let e=0;e<o.length;e++)n[e].innerHTML=o[e],n[e].innerHTML===be&&n[e].classList.add("current");n.forEach((e=>{" "==e.innerHTML&&e.classList.add("empty")}))}location.href.includes("index.html")&&(Chart.defaults.font.family="'Montserrat', sans-serif",Chart.defaults.color="rgb(70,89,103)",Chart.defaults.borderColor=ce);const $e={id:"legendPlugin",afterUpdate(e,t,r,o){const l=e.options.plugins.legend.labels.generateLabels(e),n=e.canvas.id,a=document.querySelector(`#${n}-legend`);for(;a.firstChild;)a.firstChild.remove();l.forEach((t=>{const r=document.createElement("li");r.classList.add("chart__legend__list__item"),r.onclick=r=>{const{type:o}=e.config;"pie"===o||"doughnut"===o?e.toggleDataVisibility(t.index):e.setDatasetVisibility(t.datasetIndex,!e.isDatasetVisible(t.datasetIndex)),e.update()};const o=document.createElement("span");o.classList.add("chart__legend__list__item__span"),o.style.background=t.fillStyle,o.style.borderColor=t.strokeStyle;const l=He(t.fillStyle);o.classList.add(`chart__legend__list__item__span-${l}`),t.hidden?(o.style.background=ie,o.style.borderColor=ie):(o.style.background=t.fillStyle,o.style.borderColor=t.strokeStyle);const n=document.createElement("p");n.classList.add("chart__legend__list__item__text"),n.style.textDecoration=t.hidden?"line-through":"";const s=document.createTextNode(t.text);n.appendChild(s),r.appendChild(o),r.appendChild(n),a.appendChild(r)}))}},He=e=>e==ne?"blue":e==oe?"red":e==se?"green":e==ee?"yellow":e==ce?"cloudyGray":e;if(t){const e=de.slice(de.indexOf(ge)).concat(de.slice(0,de.indexOf(ge))).reverse(),t={incomeOnline:{type:"bar",label:"online sales",data:[45,53,50,48,39,60,54,47,41,32,46,39],borderColor:le,backgroundColor:ne,borderWidth:1,stack:"Stack 0"},incomeInStore:{type:"bar",label:"in store-sales",data:[33,36,45,39,43,51,41,29,39,25,37,31],borderColor:ae,backgroundColor:se,borderWidth:1,stack:"Stack 0"},expenses:{type:"bar",label:"expenses",data:[25,29,21,15,18,33,34,37,41,49,43,22],borderColor:re,backgroundColor:oe,borderWidth:1},profit:{type:"line",label:"profit",data:[53,60,74,72,64,78,61,39,39,8,40,48],pointStyle:"star",pointRadius:6,pointHoverRadius:7,borderColor:X,backgroundColor:ee,tension:.2,borderWidth:1},profitGoal:{type:"line",label:"profit goal",data:[55,63,70,68,69,67,65,42,35,12,44,46],pointStyle:"star",pointRadius:6,pointHoverRadius:7,borderColor:ie,backgroundColor:ce,tension:.2,borderWidth:1,fill:"-1"},labels:e},r={labels:t.labels,datasets:[t.incomeOnline,t.incomeInStore,t.expenses,t.profit,t.profitGoal]};new Chart("mainChart",{data:r,options:{plugins:{title:{display:!1,text:"Sales and Expenses - Last 12 Months"},legend:{display:!1},tooltip:{callbacks:{label:function(e){return e.dataset.label+": $"+e.formattedValue+"mil"},title:function(e){return de[e[0].label]}}}},responsive:!0,maintainAspectRatio:!1,scales:{y:{title:{display:!0,text:"$ dollars",beginAtZero:!0},ticks:{callback:function(e,t,r){return"$"+e+"mil"}}}}},plugins:[$e]})}if(t){const e={labels:["paid","pending","refunded","cancelled"],values:[399,120,10,15],barColors:[se,ne,ee,oe],borderColors:[ae,le,X,re]};new Chart("invoices",{type:"doughnut",data:{labels:e.labels,datasets:[{backgroundColor:e.barColors,data:e.values}]},options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},title:{display:!1,text:"Invoices by Status"},tooltip:{callbacks:{label:function(e){return`${e.label}: #${e.formattedValue}`},title:function(){return`${ye} Invoices`}}}}},plugins:[$e]});let t=document.querySelector("#invoices-legend").querySelectorAll("span");for(let r=0;r<t.length;r++)t[r].style.borderColor=e.borderColors[r]}if(t&&new Chart("sales",{type:"bar",data:{labels:["Italy","Germany","UK","Spain","France","Portugal","other"],datasets:[{label:"monthly online sales",data:[123,92,70,65,44,33,22],backgroundColor:ne,borderColor:le,borderWidth:1,stack:!0},{label:"monthly in store sales",data:[89,62,41,35,28,14,12],backgroundColor:se,borderColor:ae,borderWidth:1,stack:!0}]},options:{indexAxis:"y",responsive:!0,maintainAspectRatio:!1,scales:{y:{beginAtZero:!0},x:{ticks:{callback:function(e,t,r){return"$"+e+"k"}}}},plugins:{title:{display:!1,text:"Monthly Sales per Country"},legend:{display:!1},tooltip:{callbacks:{label:function(e){return`${e.dataset.label.replace("monthly ","").replace(" sales","")}: $${e.formattedValue}k`},title:function(e){return e[0].label+" - monthly sales"}}}}},plugins:[$e]}),t){const e={datasets:[{type:"line",label:"marketing",data:[30,37,33,28,31,26,17,24,35,19,22,16,34,23,30,19,21,27],borderColor:ae,backgroundColor:se,pointRadius:0,tension:.3,borderWidth:1,fill:!0},{type:"line",label:"consulting",data:[14,20,19,9,14,12,17,20,14,23,12,8,12,16,14,11,12,8],borderColor:le,backgroundColor:ne,pointRadius:0,tension:.3,borderWidth:1,fill:!0},{type:"line",label:"services",data:[14,16,18,16,17,18,16,16,17,15,15,19,19,13,15,15,16,14],borderColor:X,backgroundColor:ee,pointRadius:0,tension:.3,borderWidth:1,fill:!0},{type:"line",label:"other",data:[7,6,8,5,5,9,6,7,10,6,6,7,9,9,7,6,8,5],borderColor:re,backgroundColor:oe,pointRadius:0,tension:.3,borderWidth:1,fill:!0}],labels:Array.from({length:18},((e,t)=>t+1))};new Chart("expenses",{type:"line",data:e,options:{responsive:!0,maintainAspectRatio:!1,scales:{x:{beginAtZero:!0,display:!1},y:{ticks:{callback:function(e,t,r){return"$"+e+"k"}}}},plugins:{title:{display:!1,text:"Monthly Expenses by Category"},legend:{display:!1}}},plugins:[$e]})}})()})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi4wNGM5NzA4MDI2OGY3NmEyM2QzNi5idW5kbGUuanMiLCJtYXBwaW5ncyI6InFCQUFBQSxFQUFPQyxRQUFVLHlCLFVDQWpCRCxFQUFPQyxRQUFVLGlCLFNDQWpCRCxFQUFPQyxRQUFVLG9CLFVDQWpCRCxFQUFPQyxRQUFVLGtCLFVDQWpCRCxFQUFPQyxRQUFVLHFCLFVDQWpCRCxFQUFPQyxRQUFVLHdCLFVDQWpCRCxFQUFPQyxRQUFVLGMsVUNBakJELEVBQU9DLFFBQVUseUIsVUNBakJELEVBQU9DLFFBQVUsa0IsVUNBakJELEVBQU9DLFFBQVUsd0IsVUNBakJELEVBQU9DLFFBQVUsc0IsVUNBakJELEVBQU9DLFFBQVUseUIsVUNBakJELEVBQU9DLFFBQVUsdUIsVUNBakJELEVBQU9DLFFBQVUseUIsVUNBakJELEVBQU9DLFFBQVUsd0IsVUNBakJELEVBQU9DLFFBQVUsaUIsR0NDYkMsRUFBMkIsQ0FBQyxFQUdoQyxTQUFTQyxFQUFvQkMsR0FFNUIsSUFBSUMsRUFBZUgsRUFBeUJFLEdBQzVDLFFBQXFCRSxJQUFqQkQsRUFDSCxPQUFPQSxFQUFhSixRQUdyQixJQUFJRCxFQUFTRSxFQUF5QkUsR0FBWSxDQUdqREgsUUFBUyxDQUFDLEdBT1gsT0FIQU0sRUFBb0JILEdBQVVKLEVBQVFBLEVBQU9DLFFBQVNFLEdBRy9DSCxFQUFPQyxPQUNmLENDckJBRSxFQUFvQkssRUFBS1IsSUFDeEIsSUFBSVMsRUFBU1QsR0FBVUEsRUFBT1UsV0FDN0IsSUFBT1YsRUFBaUIsUUFDeEIsSUFBTSxFQUVQLE9BREFHLEVBQW9CUSxFQUFFRixFQUFRLENBQUVHLEVBQUdILElBQzVCQSxDQUFNLEVDTGROLEVBQW9CUSxFQUFJLENBQUNWLEVBQVNZLEtBQ2pDLElBQUksSUFBSUMsS0FBT0QsRUFDWFYsRUFBb0JZLEVBQUVGLEVBQVlDLEtBQVNYLEVBQW9CWSxFQUFFZCxFQUFTYSxJQUM1RUUsT0FBT0MsZUFBZWhCLEVBQVNhLEVBQUssQ0FBRUksWUFBWSxFQUFNQyxJQUFLTixFQUFXQyxJQUUxRSxFQ05EWCxFQUFvQlksRUFBSSxDQUFDSyxFQUFLQyxJQUFVTCxPQUFPTSxVQUFVQyxlQUFlQyxLQUFLSixFQUFLQyxHLG1CQ0FsRixNQUFNSSxFQUFTQyxTQUFTQyxLQUFLQyxNQUFNLEtBQUtDLFFBQVEsR0FBRyxHQUN0Q0MsRUFBd0IsZUFBWEwsR0FBc0MsS0FBWEEsRUFFckQsR0FBR0ssRUFBWSxDQUNYLE1BQU1DLEVBQVlDLFNBQVNDLGNBQWMsY0FDbkNDLEVBQVNGLFNBQVNDLGNBQWMsV0FDaENFLEVBQWdCRCxFQUFPRCxjQUFjLGtCQUNyQ0csRUFBT0osU0FBU0MsY0FBYyxTQUM5QkksRUFBT0wsU0FBU0MsY0FBYyxRQUM5QkssRUFBYUosRUFBT0QsY0FBYyx5QkFFeENGLEVBQVVRLGlCQUFpQixTQUFVQyxJQUM5QkEsRUFBRUMsU0FBV04sR0FBZU8sR0FBZ0IsSUFFbkQsTUFBTUEsRUFBaUJBLEtBQ0hWLFNBQVNDLGNBQWMsWUFDL0JVLFVBQVVDLE9BQU8sa0JBQ3pCVCxFQUFjUSxVQUFVQyxPQUFPLFdBQy9CVCxFQUFjUSxVQUFVQyxPQUFPLFlBRS9CUixFQUFLTyxVQUFVQyxPQUFPLGdCQUV0QlAsRUFBS00sVUFBVUMsT0FBTyxZQUFZLEVBRXRDTixFQUFXQyxpQkFBaUIsVUFBV0MsSUFDcENBLEVBQUVLLGdCQUFnQixHQUV6QixDQUdBYixTQUFTYyxpQkFBaUIsbUNBQW1DQyxTQUFTQyxJQUM5REEsRUFBS3JCLE9BQVNzQixPQUFPdkIsU0FBU0MsTUFDOUJxQixFQUFLRSxRQUFRLDZCQUE2QlAsVUFBVVEsSUFBSSxrQ0FDNUQsSUFHSm5CLFNBQVNjLGlCQUFpQix1QkFBdUJDLFNBQVNDLElBQ2xEQSxFQUFLckIsT0FBU3NCLE9BQU92QixTQUFTQyxNQUFNcUIsRUFBS0wsVUFBVVEsSUFBSSw0QkFBNEIsSSxtU0NsQjNGLE1BQU1DLEVBQWdCcEIsU0FBU2MsaUJBQWlCLGNBQzFDTyxFQUFXckIsU0FBU2MsaUJBQWlCLFNBQ3JDUSxFQUFXdEIsU0FBU2MsaUJBQWlCLFNBQ3JDUyxFQUFXdkIsU0FBU2MsaUJBQWlCLFNBQ3JDVSxFQUFheEIsU0FBU2MsaUJBQWlCLFdBQ3ZDVyxFQUFVekIsU0FBU2MsaUJBQWlCLFFBQ3BDWSxFQUFZMUIsU0FBU2MsaUJBQWlCLFVBQ3RDYSxFQUFhM0IsU0FBU2MsaUJBQWlCLFdBQ3ZDYyxFQUFhNUIsU0FBU2MsaUJBQWlCLFdBQ3ZDZSxFQUFZN0IsU0FBU2MsaUJBQWlCLFVBQ3RDZ0IsRUFBYTlCLFNBQVNjLGlCQUFpQixXQUN2Q2lCLEVBQXFCL0IsU0FBU2MsaUJBQWlCLG9CQUMvQ2tCLEVBQVdoQyxTQUFTYyxpQkFBaUIsY0FFckNtQixFQUFjakMsU0FBU2MsaUJBQWlCLFlBQ3hDb0IsRUFBaUJsQyxTQUFTYyxpQkFBaUIsZUFDM0NxQixFQUFjbkMsU0FBU2MsaUJBQWlCLFlBRXhDc0IsRUFBWUEsQ0FBQ0MsRUFBVUMsS0FDekJELEVBQVN0QixTQUFRd0IsSUFFYixHQURBQSxFQUFJQyxJQUFNRixFQUNQQSxJQUFVRyxLQUFrQkgsSUFBVUksSUFBTSxDQUMzQyxNQUFNQyxFQUFVTCxFQUFPMUMsTUFBTSxLQUFLZ0QsT0FBTyxHQUFHLEdBQUdoRCxNQUFNLEtBQy9DaUQsRUFBT0YsRUFBUyxHQUFHRyxPQUFPLEdBQUdDLGNBQWdCSixFQUFTLEdBQUdDLE1BQU0sR0FDL0RJLEVBQVdMLEVBQVMsR0FBRy9DLE1BQU0sS0FBSyxHQUFHa0QsT0FBTyxHQUFHQyxjQUFnQkosRUFBUyxHQUFHL0MsTUFBTSxLQUFLLEdBQUdnRCxNQUFNLEdBQ3JHTCxFQUFJVSxJQUFPLEdBQUVKLEtBQVFHLEdBQ3pCLElBQ0YsRUFHTlosRUFBVWhCLEVBQWU4QixLQUN6QmQsRUFBVWYsRUFBVThCLEtBQ3BCZixFQUFVZCxFQUFVOEIsS0FDcEJoQixFQUFVYixFQUFVOEIsS0FDcEJqQixFQUFVWixFQUFZOEIsS0FDdEJsQixFQUFVWCxFQUFTOEIsS0FDbkJuQixFQUFVVixFQUFXOEIsS0FDckJwQixFQUFVVCxFQUFZOEIsS0FDdEJyQixFQUFVUixFQUFZOEIsS0FDdEJ0QixFQUFVUCxFQUFXOEIsS0FDckJ2QixFQUFVTixFQUFZOEIsS0FDdEJ4QixFQUFVTCxFQUFvQlUsS0FDOUJMLEVBQVVKLEVBQVVVLEtBR3BCLE1BQU1tQixFQUFXQSxDQUFDeEIsRUFBVUMsS0FDeEJELEVBQVN0QixTQUFRd0IsR0FBT0EsRUFBSUMsSUFBTUYsR0FBTyxFQUU3Q3VCLEVBQVM1QixFQUFhNkIsS0FDdEJELEVBQVMzQixFQUFnQjZCLEtBQ3pCRixFQUFTMUIsRUFBYTZCLEtDckVmLE1BRU1DLEVBQVMscUJBQ1RDLEdBQVcsdUJBR1hDLEdBQVMsc0JBQ1RDLEdBQU0sc0JBQ05DLEdBQVEsdUJBQ1JDLEdBQU8scUJBQ1BDLEdBQVMsc0JBQ1RDLEdBQVEscUJBQ1JDLEdBQVUsc0JBSVZDLEdBQWEsbUJBQ2JDLEdBQWEsbUJDZDFCLEdBQUc3RSxFQUFXLENBQ1YsTUFBTThFLEVBQVc1RSxTQUFTYyxpQkFBaUIsV0FFckMrRCxFQUFVLENBQ1osQ0FBQ0MsTUFBTVgsR0FBUVksTUFBTSxNQUFPQyxRQUFTLGFBQWNDLEtBQU0sY0FDekQsQ0FBQ0gsTUFBTVAsR0FBUVEsTUFBTSxNQUFNQyxRQUFTLFdBQVlDLEtBQU0sWUFDdEQsQ0FBQ0gsTUFBTVosR0FBVWEsTUFBTSxNQUFPQyxRQUFTLFdBQVlDLEtBQU0sa0JBQ3pELENBQUNILE1BQU1MLEdBQVNNLE1BQU0sTUFBT0MsUUFBUyxhQUFjQyxLQUFNLGNBQzFELENBQUNILE1ETmUsd0JDTUNDLE1BQU0sTUFBT0MsUUFBUyxhQUFjQyxLQUFNLGNBQzNELENBQUNILE1BQU1ULEdBQU9VLE1BQU0sTUFBT0MsUUFBUyxVQUFXQyxLQUFNLG1CQUd6RCxJQUFLLElBQUlDLEVBQUksRUFBR0EsRUFBSU4sRUFBU08sT0FBUUQsSUFBSyxDQUN0QyxJQUFJRSxFQUFNUCxFQUFRSyxHQUNkRyxFQUFVVCxFQUFTTSxHQUNuQkksRUFBYUQsRUFBUXBGLGNBQWMsdUJBQ25Dc0YsRUFBTUYsRUFBUXBGLGNBQWMsc0JBQzVCdUYsRUFBWUgsRUFBUXBGLGNBQWMsOEJBQ2xDK0UsRUFBVUssRUFBUXBGLGNBQWMsbUNBQ2hDZ0YsRUFBT0ksRUFBUXBGLGNBQWMsZ0NBRWpDb0YsRUFBUUksTUFBTUMsWUFBY04sRUFBSU4sTUFDaENRLEVBQVdHLE1BQU1DLFlBQWNOLEVBQUlOLE1BQ25DUyxFQUFJRSxNQUFNRSxnQkFBa0JQLEVBQUlOLE1BQ2hDUyxFQUFJRSxNQUFNQyxZQUFjTixFQUFJTixNQUM1QlUsRUFBVUMsTUFBTUUsZ0JBQWtCUCxFQUFJTixNQUV0Q1UsRUFBVUMsTUFBTUcsTUFBUVIsRUFBSUwsTUFDNUJPLEVBQVdPLFVBQVlULEVBQUlMLE1BQzNCUyxFQUFVSyxVQUFZVCxFQUFJTCxNQUMxQkMsRUFBUWEsVUFBWVQsRUFBSUosUUFDeEJDLEVBQUtZLFVBQVlULEVBQUlILElBQ3pCLENBQ0osQ0NqQ0EsR0FBR25GLEVBQVcsQ0FFVixNQUFNZ0csRUFBVyxDQUNiLENBQUNDLFFBQVMsd0hBQXlIakIsTUFBTSxPQUFRa0IsS0FBSyxXQUN0SixDQUFDRCxRQUFTLDhGQUErRmpCLE1BQU1MLEdBQVN1QixLQUFLLFdBQzdILENBQUNELFFBQVMsMkZBQTRGakIsTUFBTVAsR0FBUXlCLEtBQUssV0FDekgsQ0FBQ0QsUUFBUyxpR0FBa0dqQixNQUFNWCxHQUFRNkIsS0FBSyxZQUc3SEMsRUFBVWpHLFNBQVNjLGlCQUFpQix5QkFFMUMsSUFBSyxJQUFJb0UsRUFBSSxFQUFHQSxFQUFJZSxFQUFRZCxPQUFRRCxJQUFLLENBQ3JDLE1BQU1nQixFQUFPRCxFQUFRZixHQUNmaUIsRUFBT0wsRUFBU1osR0FFdEJnQixFQUFLakcsY0FBYywrQkFBK0I0RixVQUFZTSxFQUFLSixRQUNuRUcsRUFBS2pHLGNBQWMsK0JBQStCd0YsTUFBTUUsZ0JBQWtCUSxFQUFLckIsTUFDL0VvQixFQUFLakcsY0FBYyxpQ0FBaUN3RixNQUFNRSxnQkFBa0JRLEVBQUtILElBQ3JGLENBQ0osQ0NwQk8sTUFBTUksR0FBUyxDQUFDLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU0sTUFBTyxNQUFPLE1BQU8sTUFBTyxPQUs3RkMsR0FBUSxJQUFJQyxLQUNMQyxHQUFPRixHQUFNRyxjQUNiQyxHQUFRSixHQUFNSyxlQUFlQyxVQUFVLEVBQUUsR0FDekNDLEdBQVVQLEdBQU1LLGVBQWVDLFVBQVUsRUFBRSxJQUMzQ0UsR0FBV1IsR0FBTUssZUFBZUMsVUFBVSxHQUFHLElBQzdDRyxHQVRVLENBQUMsVUFBVSxXQUFXLFFBQVEsUUFBUSxNQUFNLE9BQU8sT0FBTyxTQUFTLFlBQVksVUFBVSxXQUFXLFlBU25GVixHQUFPVyxRQUFRTixLQUdqRE8sR0FBWSxJQUFJVixLQUFLRCxHQUFNWSxRQUFRWixHQUFNYSxVQUFZLElBQ3JEQyxHQUFlSCxHQUFVTixlQUFlQyxVQUFVLEVBQUUsSUFDcERTLEdBQWdCSixHQUFVTixlQUFlQyxVQUFVLEdBQUcsSUFDdERVLEdBQWlCTCxHQUFVTixlQUFlQyxVQUFVLEVBQUUsR0FFdERXLEdBQWEsSUFBSWhCLEtBQUtVLEdBQVVDLFFBQVFELEdBQVVFLFVBQVksSUFDOURLLEdBQWdCRCxHQUFXWixlQUFlQyxVQUFVLEVBQUUsSUFDdERhLEdBQWlCRixHQUFXWixlQUFlQyxVQUFVLEdBQUcsSUFDeERjLEdBQWtCSCxHQUFXWixlQUFlQyxVQUFVLEVBQUUsR0FFeERlLEdBQVcsSUFBSXBCLEtBQUtELEdBQU1ZLFFBQVFaLEdBQU1hLFVBQVksSUFDcERTLEdBQWNELEdBQVNoQixlQUFlQyxVQUFVLEVBQUUsSUFFbERpQixJQURlRixHQUFTaEIsZUFBZUMsVUFBVSxHQUFHLElBQ3BDZSxHQUFTaEIsZUFBZUMsVUFBVSxFQUFFLElBRXBEa0IsR0FBYyxJQUFJdkIsS0FBS0QsR0FBTVksUUFBUVosR0FBTWEsVUFBWSxJQUN2RFksR0FBaUJELEdBQVluQixlQUFlQyxVQUFVLEVBQUUsSUFFeERvQixJQURrQkYsR0FBWW5CLGVBQWVDLFVBQVUsR0FBRyxJQUN2Q2tCLEdBQVluQixlQUFlQyxVQUFVLEVBQUUsSUFFaEUsR0FBRzdHLEVBQVksQ0FHZ0JrSSxNQUFNQyxLQUFLakksU0FBU2MsaUJBQWlCLGlCQUFoRSxNQUNNb0gsRUFBdUJGLE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIsbUJBQzVEcUgsRUFBc0JILE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIsa0JBQzNEc0gsRUFBc0JKLE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIsa0JBQzNEdUgsRUFBd0JMLE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIsb0JBQzdEd0gsRUFBeUJOLE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIscUJBQzlEeUgsRUFBMkJQLE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIsd0JBQ2hFMEgsRUFBNkJSLE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIsMEJBQ2xFMkgsRUFBK0JULE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIsNEJBQ3BFNEgsRUFBNEJWLE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIseUJBR3ZFb0gsRUFBcUJTLEtBQUlDLEdBQVFBLEVBQUsvQyxVQUFZaUIsS0FDbERxQixFQUFvQlEsS0FBSUMsR0FBUUEsRUFBSy9DLFVBQVlVLEtBQ2pENkIsRUFBb0JPLEtBQUlDLEdBQVFBLEVBQUsvQyxVQUFZLENBQUNlLEdBQVNpQyxHQUFZcEMsSUFBUUksSUFBVWlDLEtBQUssT0FDOUZULEVBQXNCTSxLQUFJQyxHQUFRQSxFQUFLL0MsVUFBWSxDQUFDc0IsR0FBYzBCLEdBQVl4QixJQUFpQkQsSUFBZTBCLEtBQUssT0FDbkhSLEVBQXVCSyxLQUFJQyxHQUFRQSxFQUFLL0MsVUFBWSxDQUFDMEIsR0FBZXNCLEdBQVlwQixJQUFrQkQsSUFBZ0JzQixLQUFLLE9BQ3ZIUCxFQUF5QkksS0FBSUMsR0FBUUEsRUFBSy9DLFVBQVksQ0FBQ2UsR0FBU2lDLEdBQVlwQyxLQUFRcUMsS0FBSyxPQUN6Rk4sRUFBMkJHLEtBQUlDLEdBQVFBLEVBQUsvQyxVQUFZLENBQUNzQixHQUFjMEIsR0FBWXhCLEtBQWlCeUIsS0FBSyxPQUN6R0wsRUFBNkJFLEtBQUlDLEdBQVFBLEVBQUsvQyxVQUFZLENBQUNpQyxHQUFnQmUsR0FBWWQsS0FBbUJlLEtBQUssT0FDL0dKLEVBQTBCQyxLQUFJQyxHQUFRQSxFQUFLL0MsVUFBWSxDQUFDOEIsR0FBYWtCLEdBQVlqQixLQUFnQmtCLEtBQUssTUFDMUcsQ0FFQSxTQUFTRCxHQUFZcEMsR0FDakIsTUFBTXNDLEVBQWEzQyxHQUFPVyxRQUFRTixHQUFTLEVBQzNDLE9BQUdzQyxFQUFXLEdBQVksSUFBR0EsSUFDakJBLENBQ2hCLENDaERBLEdBQUdqSixFQUFZLENBR1gsTUFBTWtKLEVBQWVoSixTQUFTQyxjQUFjLG1CQUd0Q2dKLEVBQVcsSUFBSTNDLEtBQUtDLEdBQU1ILEdBQU9XLFFBQVFOLElBQVEsR0FBR3lDLFNBQ3BEQyxFQTRCYyxDQUFDLE1BQU8sTUFBTyxNQUFPLE9BQzNCQyxTQUFTM0MsSUFBZSxHQUN2QixRQUFSQSxHQUNRLE9BQVRGLElBQXdCLE9BQVBBLEdBQW9CLEdBQzVCLEdBRUosR0EvQlosSUFBSThDLEVBQVksR0FDaEIsSUFBSyxJQUFJbkUsRUFBSSxFQUFJQSxFQUFJaUUsRUFBY0YsRUFBVS9ELElBQ3RDQSxFQUFFK0QsRUFBVUksRUFBVUMsS0FBSyxVQUN6QkQsRUFBVUMsS0FBS3BFLEVBQUUrRCxFQUFTLEdBSW5DLE1BQU1NLEVBQVdDLEtBQUtDLE1BQU1OLEVBQWNGLEdBQVksR0FDdEQsSUFBSyxJQUFJL0QsRUFBSSxFQUFHQSxFQUFJcUUsRUFBVXJFLElBQUs4RCxFQUFhVSxtQkFBbUIsYUE3QmxELDBXQWdDakIsTUFBTUMsRUFBUTNCLE1BQU1DLEtBQUtqSSxTQUFTYyxpQkFBaUIsb0JBQ25ELElBQUssSUFBSW9FLEVBQUksRUFBR0EsRUFBSW1FLEVBQVVsRSxPQUFRRCxJQUNsQ3lFLEVBQU16RSxHQUFHVyxVQUFZd0QsRUFBVW5FLEdBQzVCeUUsRUFBTXpFLEdBQUdXLFlBQWNlLElBQVMrQyxFQUFNekUsR0FBR3ZFLFVBQVVRLElBQUksV0FHOUR3SSxFQUFNNUksU0FBUTZJLElBQ1csVUFBbEJBLEVBQUsvRCxXQUF1QitELEVBQUtqSixVQUFVUSxJQUFJLFFBQVEsR0FHbEUsQ0MvQ0d6QixTQUFTQyxLQUFLeUosU0FBUyxnQkFDdEJTLE1BQU1DLFNBQVNDLEtBQUtDLE9BQVMsMkJBQzdCSCxNQUFNQyxTQUFTaEYsTUxZTSxpQktYckIrRSxNQUFNQyxTQUFTcEUsWUFBY2YsSUNGMUIsTUFBTXNGLEdBQWUsQ0FDMUJDLEdBQUksZUFDSkMsV0FBQUEsQ0FBWUMsRUFBT0MsRUFBTUMsRUFBU0MsR0FDaEMsTUFBTUMsRUFBUUosRUFBTUUsUUFBUUcsUUFBUUMsT0FBT0MsT0FBT0MsZUFBZVIsR0FDM0RGLEVBQUtFLEVBQU1TLE9BQU9YLEdBQ2xCWSxFQUFLOUssU0FBU0MsY0FBZSxJQUFHaUssWUFHdEMsS0FBT1ksRUFBR0MsWUFDUkQsRUFBR0MsV0FBV0MsU0FHaEJSLEVBQU16SixTQUFRa0ssSUFDWixNQUFNQyxFQUFLbEwsU0FBU21MLGNBQWMsTUFDbENELEVBQUd2SyxVQUFVUSxJQUFJLDZCQUNqQitKLEVBQUdFLFFBQVc1SyxJQUNaLE1BQU0sS0FBQzZLLEdBQVFqQixFQUFNa0IsT0FDUixRQUFURCxHQUEyQixhQUFUQSxFQUVwQmpCLEVBQU1tQixxQkFBcUJOLEVBQUtPLE9BRWhDcEIsRUFBTXFCLHFCQUFxQlIsRUFBS1MsY0FBZXRCLEVBQU11QixpQkFBaUJWLEVBQUtTLGVBRzdFdEIsRUFBTXdCLFFBQVEsRUFHaEIsTUFBTUMsRUFBVTdMLFNBQVNtTCxjQUFjLFFBQ3ZDVSxFQUFRbEwsVUFBVVEsSUFBSSxtQ0FDdEIwSyxFQUFRcEcsTUFBTXFHLFdBQWFiLEVBQUtjLFVBQ2hDRixFQUFRcEcsTUFBTUMsWUFBY3VGLEVBQUtlLFlBQ2pDLE1BQU1DLEVBQWFDLEdBQWlCakIsRUFBS2MsV0FDekNGLEVBQVFsTCxVQUFVUSxJQUFLLG1DQUFrQzhLLEtBQ3REaEIsRUFBS2tCLFFBQ05OLEVBQVFwRyxNQUFNcUcsV0FBYXBILEdBQzNCbUgsRUFBUXBHLE1BQU1DLFlBQWNoQixLQUU1Qm1ILEVBQVFwRyxNQUFNcUcsV0FBYWIsRUFBS2MsVUFDaENGLEVBQVFwRyxNQUFNQyxZQUFjdUYsRUFBS2UsYUFLbkMsTUFBTUksRUFBZ0JwTSxTQUFTbUwsY0FBYyxLQUM3Q2lCLEVBQWN6TCxVQUFVUSxJQUFJLG1DQUM1QmlMLEVBQWMzRyxNQUFNNEcsZUFBaUJwQixFQUFLa0IsT0FBUyxlQUFpQixHQUVwRSxNQUFNRyxFQUFPdE0sU0FBU3VNLGVBQWV0QixFQUFLcUIsTUFDMUNGLEVBQWNJLFlBQVlGLEdBRTFCcEIsRUFBR3NCLFlBQVlYLEdBQ2ZYLEVBQUdzQixZQUFZSixHQUNmdEIsRUFBRzBCLFlBQVl0QixFQUFHLEdBRXRCLEdBR0lnQixHQUFvQk8sR0FDckJBLEdBQVVsSSxHQUFlLE9BQ3pCa0ksR0FBVXBJLEdBQWMsTUFDeEJvSSxHQUFVaEksR0FBZ0IsUUFDMUJnSSxHQUFVdkksR0FBaUIsU0FDM0J1SSxHQUFVOUgsR0FBbUIsYUFDcEI4SCxFQzNEZCxHQUFHM00sRUFBVyxDQUVWLE1BQU00TSxFQUFpQnRHLEdBQU94RCxNQUFNd0QsR0FBT1csUUFBUU4sS0FBUWtHLE9BQU92RyxHQUFPeEQsTUFBTSxFQUFHd0QsR0FBT1csUUFBUU4sTUFBU21HLFVBRXBHQyxFQUFXLENBQ2JDLGFBQWMsQ0FDVnpCLEtBQU0sTUFDTjBCLE1BQU8sZUFDUDVHLEtBQU0sQ0FBQyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksSUFDbkRULFlBQWFwQixHQUNicUIsZ0JBQWlCcEIsR0FDakJ5SSxZQUFZLEVBQ1pDLE1BQU8sV0FFWEMsY0FBZSxDQUNYN0IsS0FBTSxNQUNOMEIsTUFBTyxpQkFDUDVHLEtBQU0sQ0FBQyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksSUFDbkRULFlBQWFsQixHQUNibUIsZ0JBQWlCbEIsR0FDakJ1SSxZQUFZLEVBQ1pDLE1BQU8sV0FFWEUsU0FBVSxDQUNOOUIsS0FBTSxNQUNOMEIsTUFBTyxXQUNQNUcsS0FBTSxDQUFDLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxJQUNuRFQsWUFBYXRCLEdBQ2J1QixnQkFBaUJ0QixHQUNqQjJJLFlBQVksR0FFaEJJLE9BQVEsQ0FDSi9CLEtBQU0sT0FDTjBCLE1BQU8sU0FDUDVHLEtBQU0sQ0FBQyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksSUFDbERrSCxXQUFZLE9BQ1pDLFlBQWEsRUFDYkMsaUJBQWtCLEVBQ2xCN0gsWUFBYXpCLEVBQ2IwQixnQkFBaUJ6QixHQUNqQnNKLFFBQVEsR0FDUlIsWUFBWSxHQUdoQlMsV0FBWSxDQUNScEMsS0FBTSxPQUNOMEIsTUFBTSxjQUNONUcsS0FBTSxDQUFDLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxJQUNuRGtILFdBQVksT0FDWkMsWUFBYSxFQUNiQyxpQkFBa0IsRUFDbEI3SCxZQUFhaEIsR0FDYmlCLGdCQUFpQmhCLEdBQ2pCNkksUUFBUSxHQUNSUixZQUFZLEVBQ1pVLEtBQUssTUFHVC9DLE9BQVErQixHQUdOaUIsRUFBZ0IsQ0FDbEJoRCxPQUFRa0MsRUFBU2xDLE9BQ2pCaUQsU0FBVSxDQUNOZixFQUFTQyxhQUNURCxFQUFTSyxjQUNUTCxFQUFTTSxTQUNUTixFQUFTTyxPQUNUUCxFQUFTWSxhQTRDakIsSUFBSTVELE1BQU0sWUF6Q2MsQ0FDcEIxRCxLQUFNd0gsRUFDTnJELFFBQVMsQ0FDTEcsUUFBUyxDQUNMb0QsTUFBTyxDQUNIQyxTQUFTLEVBQ1R4QixLQUFNLHVDQUVWNUIsT0FBUSxDQUNKb0QsU0FBUSxHQUVaQyxRQUFTLENBQ0xDLFVBQVcsQ0FDUGpCLE1BQU8sU0FBU2tCLEdBQ1osT0FBT0EsRUFBUUMsUUFBUW5CLE1BQWhCa0IsTUFBcUNBLEVBQVFFLGVBQWlCLEtBQ3pFLEVBQ0FOLE1BQU0sU0FBU0ksR0FDWCxPQUFPN0gsR0FBTzZILEVBQVEsR0FBR2xCLE1BQzdCLEtBSVpxQixZQUFXLEVBQ1hDLHFCQUFvQixFQUNwQkMsT0FBUSxDQUNKQyxFQUFHLENBQ0NWLE1BQU8sQ0FDSEMsU0FBUSxFQUNSeEIsS0FBSyxZQUNMa0MsYUFBYSxHQUVqQkMsTUFBTSxDQUNGQyxTQUFTLFNBQVMzSixFQUFPeUcsRUFBT2lELEdBQzVCLE1BQU8sSUFBTTFKLEVBQVEsS0FDekIsTUFLaEIwRixRQUFTLENBQUNSLEtBR2xCLENDbEhBLEdBQUduSyxFQUFXLENBRVosTUFBTTZPLEVBQWUsQ0FDbkJoRSxPQUFRLENBQUMsT0FBUSxVQUFXLFdBQVksYUFDeENpRSxPQUFRLENBQUMsSUFBSyxJQUFLLEdBQUksSUFDdkJDLFVBQVcsQ0FBQ3BLLEdBQVNGLEdBQVFMLEdBQVVHLElBQ3ZDeUssYUFBYyxDQUFDdEssR0FBTUYsR0FBTUwsRUFBUUcsS0FHckMsSUFBSXlGLE1BQU0sV0FBWSxDQUNwQndCLEtBQU0sV0FDTmxGLEtBQU0sQ0FDSndFLE9BQVFnRSxFQUFhaEUsT0FDckJpRCxTQUFVLENBQUMsQ0FDVGpJLGdCQUFpQmdKLEVBQWFFLFVBQzlCMUksS0FBTXdJLEVBQWFDLFVBR3JCdEUsUUFBUyxDQUNQOEQsWUFBVyxFQUNYQyxxQkFBb0IsRUFDcEI1RCxRQUFTLENBQ1BDLE9BQVEsQ0FDTm9ELFNBQVEsR0FFVkQsTUFBTyxDQUNMQyxTQUFRLEVBQ1J4QixLQUFLLHNCQUVQeUIsUUFBUyxDQUNQQyxVQUFXLENBQ1RqQixNQUFPLFNBQVNrQixHQUNaLE1BQVEsR0FBRUEsRUFBUWxCLFdBQVdrQixFQUFRRSxnQkFDekMsRUFDQU4sTUFBTSxXQUNKLE1BQVEsR0FBRS9HLGFBQ1osTUFLVjJELFFBQVMsQ0FBQ1IsTUFJWixJQUFJOEUsRUFBc0IvTyxTQUFTQyxjQUFjLG9CQUFvQmEsaUJBQWlCLFFBQ3RGLElBQUssSUFBSW9FLEVBQUksRUFBR0EsRUFBSTZKLEVBQW9CNUosT0FBUUQsSUFDOUM2SixFQUFvQjdKLEdBQUdPLE1BQU1DLFlBQWNpSixFQUFhRyxhQUFhNUosRUFFekUsQ0NqREEsR0NER3BGLEdBbUVELElBQUkrSixNQUFNLFFBNUNVLENBQ2hCd0IsS0FBTSxNQUNObEYsS0F4QmMsQ0FDaEJ3RSxPQUFRLENBQUMsUUFBUyxVQUFXLEtBQU0sUUFBUyxTQUFVLFdBQVksU0FDbEVpRCxTQUFVLENBQ1IsQ0FDRWIsTUFBTyx1QkFDUDVHLEtBQUssQ0FBQyxJQUFLLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxJQUMvQlIsZ0JBQWdCcEIsR0FDaEJtQixZQUFZcEIsR0FDWjBJLFlBQWEsRUFDYkMsT0FBTyxHQUVULENBQ0VGLE1BQU8seUJBQ1A1RyxLQUFNLENBQUMsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksSUFDL0JSLGdCQUFpQmxCLEdBQ2pCaUIsWUFBWWxCLEdBQ1p3SSxZQUFhLEVBQ2JDLE9BQU8sS0FRVDNDLFFBQVMsQ0FDUDBFLFVBQVcsSUFDVFosWUFBVyxFQUNYQyxxQkFBb0IsRUFDdEJDLE9BQVEsQ0FDTkMsRUFBRyxDQUNEQyxhQUFhLEdBRWZTLEVBQUcsQ0FDRFIsTUFBTSxDQUNKQyxTQUFTLFNBQVMzSixFQUFPeUcsRUFBT2lELEdBQzVCLE1BQU8sSUFBTTFKLEVBQVEsR0FDekIsS0FJTjBGLFFBQVMsQ0FDUG9ELE1BQU8sQ0FDUEMsU0FBUyxFQUVUeEIsS0FBSyw2QkFFTDVCLE9BQVEsQ0FDSm9ELFNBQVEsR0FFWkMsUUFBUyxDQUNMQyxVQUFXLENBQ1RqQixNQUFPLFNBQVNrQixHQUVaLE1BQVEsR0FETUEsRUFBUUMsUUFBUW5CLE1BQU1tQyxRQUFRLFdBQVksSUFBSUEsUUFBUSxTQUFVLFNBQ3pEakIsRUFBUUUsaUJBQ2pDLEVBQ0FOLE1BQU0sU0FBU0ksR0FDYixPQUFPQSxFQUFRLEdBQUdsQixNQUFRLGtCQUM1QixNQUtWdEMsUUFBUyxDQUFDUixNRC9EYm5LLEVBQVcsQ0FFWixNQUFNcVAsRUFBZSxDQUNuQnZCLFNBQVUsQ0FDUixDQUNFdkMsS0FBTSxPQUNOMEIsTUFBTyxZQUNQNUcsS0FBTSxDQUFDLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxJQUMzRVQsWUFBYWxCLEdBQ2JtQixnQkFBaUJsQixHQUNqQjZJLFlBQVksRUFDWkUsUUFBUyxHQUNUUixZQUFZLEVBQ1pVLE1BQUssR0FFUCxDQUNFckMsS0FBTSxPQUNOMEIsTUFBTyxhQUNQNUcsS0FBTSxDQUFDLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUN6RVQsWUFBYXBCLEdBQ2JxQixnQkFBaUJwQixHQUNqQitJLFlBQVksRUFDWkUsUUFBUyxHQUNUUixZQUFZLEVBQ1pVLE1BQUssR0FFUCxDQUNFckMsS0FBTSxPQUNOMEIsTUFBTyxXQUNQNUcsS0FBTSxDQUFDLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxJQUMzRVQsWUFBYXpCLEVBQ2IwQixnQkFBaUJ6QixHQUNqQm9KLFlBQVksRUFDWkUsUUFBUyxHQUNUUixZQUFZLEVBQ1pVLE1BQUssR0FFUCxDQUNFckMsS0FBTSxPQUNOMEIsTUFBTyxRQUNQNUcsS0FBTSxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUMzRFQsWUFBYXRCLEdBQ2J1QixnQkFBaUJ0QixHQUNqQmlKLFlBQVksRUFDWkUsUUFBUyxHQUNUUixZQUFZLEVBQ1pVLE1BQUssSUFHVC9DLE9BQVEzQyxNQUFNQyxLQUFLLENBQUM5QyxPQUFRLEtBQUssQ0FBQ2lLLEVBQUdsSyxJQUFNQSxFQUFJLEtBa0NqRCxJQUFJMkUsTUFBTSxXQS9Ca0IsQ0FDMUJ3QixLQUFNLE9BQ05sRixLQUFLZ0osRUFDTDdFLFFBQVMsQ0FDUDhELFlBQVcsRUFDWEMscUJBQW9CLEVBQ3BCQyxPQUFRLENBQ05XLEVBQUcsQ0FDRFQsYUFBYSxFQUNiVixTQUFRLEdBRVZTLEVBQUcsQ0FDREUsTUFBTSxDQUNKQyxTQUFTLFNBQVMzSixFQUFPeUcsRUFBT2lELEdBQzVCLE1BQU8sSUFBTTFKLEVBQVEsR0FDekIsS0FJTjBGLFFBQVMsQ0FDUG9ELE1BQU8sQ0FDTEMsU0FBUyxFQUNUeEIsS0FBSyxnQ0FFUDVCLE9BQVEsQ0FDTm9ELFNBQVEsS0FJZHJELFFBQVMsQ0FBQ1IsS0FHZCxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvaW1nL2FsZXhhbmRyYS1yb3NzaS5qcGciLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvaW1nL2NoYXJ0anMuc3ZnIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2ltZy9qYXZhc2NyaXB0LnBuZyIsIndlYnBhY2s6Ly9hbmFseXRpY3MtZGFzaGJvYXJkLXRlbXBsYXRlLy4vc3JjL2Fzc2V0cy9pbWcvam9obi1kb2UuanBnIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2ltZy9rYXJsLW1pbGxlci5qcGciLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvaW1nL2thdGUtc3RldmVuc29uLmpwZyIsIndlYnBhY2s6Ly9hbmFseXRpY3MtZGFzaGJvYXJkLXRlbXBsYXRlLy4vc3JjL2Fzc2V0cy9pbWcvbG9nby5zdmciLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvaW1nL21hcnRoYS13aWxsaWFtcy5qcGciLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvaW1nL21pbi13YW5nLmpwZyIsIndlYnBhY2s6Ly9hbmFseXRpY3MtZGFzaGJvYXJkLXRlbXBsYXRlLy4vc3JjL2Fzc2V0cy9pbWcvcGV0ZXItYW5kZXJzb24uanBnIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2ltZy9waGlsaXAtYnJvd24uanBnIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2ltZy9waWMtcGxhY2Vob2xkZXIucG5nIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2ltZy9yb2JlcnQtbWFyaW5vLmpwZyIsIndlYnBhY2s6Ly9hbmFseXRpY3MtZGFzaGJvYXJkLXRlbXBsYXRlLy4vc3JjL2Fzc2V0cy9pbWcvc2FyYWgtZm9ycmVzdGVyLmpwZyIsIndlYnBhY2s6Ly9hbmFseXRpY3MtZGFzaGJvYXJkLXRlbXBsYXRlLy4vc3JjL2Fzc2V0cy9pbWcvc2VyZW5hLWpvaG5zb24uanBnIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2ltZy93ZWJwYWNrLnBuZyIsIndlYnBhY2s6Ly9hbmFseXRpY3MtZGFzaGJvYXJkLXRlbXBsYXRlL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2pzL2Jhc2UuanMiLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvanMvaW1hZ2VzLmpzIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2pzL2NvbG9ycy5qcyIsIndlYnBhY2s6Ly9hbmFseXRpY3MtZGFzaGJvYXJkLXRlbXBsYXRlLy4vc3JjL2Fzc2V0cy9qcy90YXJnZXRzLmpzIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2pzL25vdGVzLmpzIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2pzL3VwZGF0ZURhdGUuanMiLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvanMvY2FsZW5kYXIuanMiLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvanMvb3B0aW9ucy5qcyIsIndlYnBhY2s6Ly9hbmFseXRpY3MtZGFzaGJvYXJkLXRlbXBsYXRlLy4vc3JjL2Fzc2V0cy9qcy9sZWdlbmQtcGx1Z2luLmpzIiwid2VicGFjazovL2FuYWx5dGljcy1kYXNoYm9hcmQtdGVtcGxhdGUvLi9zcmMvYXNzZXRzL2pzL2NoYXJ0LW1haW4uanMiLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvanMvY2hhcnQtaW52b2ljZXMuanMiLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvanMvY2hhcnQtZXhwZW5zZXMuanMiLCJ3ZWJwYWNrOi8vYW5hbHl0aWNzLWRhc2hib2FyZC10ZW1wbGF0ZS8uL3NyYy9hc3NldHMvanMvY2hhcnQtc2FsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcImltZy9hbGV4YW5kcmEtcm9zc2kuanBnXCI7IiwibW9kdWxlLmV4cG9ydHMgPSBcImltZy9jaGFydGpzLnN2Z1wiOyIsIm1vZHVsZS5leHBvcnRzID0gXCJpbWcvamF2YXNjcmlwdC5wbmdcIjsiLCJtb2R1bGUuZXhwb3J0cyA9IFwiaW1nL2pvaG4tZG9lLmpwZ1wiOyIsIm1vZHVsZS5leHBvcnRzID0gXCJpbWcva2FybC1taWxsZXIuanBnXCI7IiwibW9kdWxlLmV4cG9ydHMgPSBcImltZy9rYXRlLXN0ZXZlbnNvbi5qcGdcIjsiLCJtb2R1bGUuZXhwb3J0cyA9IFwiaW1nL2xvZ28uc3ZnXCI7IiwibW9kdWxlLmV4cG9ydHMgPSBcImltZy9tYXJ0aGEtd2lsbGlhbXMuanBnXCI7IiwibW9kdWxlLmV4cG9ydHMgPSBcImltZy9taW4td2FuZy5qcGdcIjsiLCJtb2R1bGUuZXhwb3J0cyA9IFwiaW1nL3BldGVyLWFuZGVyc29uLmpwZ1wiOyIsIm1vZHVsZS5leHBvcnRzID0gXCJpbWcvcGhpbGlwLWJyb3duLmpwZ1wiOyIsIm1vZHVsZS5leHBvcnRzID0gXCJpbWcvcGljLXBsYWNlaG9sZGVyLnBuZ1wiOyIsIm1vZHVsZS5leHBvcnRzID0gXCJpbWcvcm9iZXJ0LW1hcmluby5qcGdcIjsiLCJtb2R1bGUuZXhwb3J0cyA9IFwiaW1nL3NhcmFoLWZvcnJlc3Rlci5qcGdcIjsiLCJtb2R1bGUuZXhwb3J0cyA9IFwiaW1nL3NlcmVuYS1qb2huc29uLmpwZ1wiOyIsIm1vZHVsZS5leHBvcnRzID0gXCJpbWcvd2VicGFjay5wbmdcIjsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiY29uc3QgdXJsU3RyID0gbG9jYXRpb24uaHJlZi5zcGxpdCgnLycpLnNwbGljZSgtMSlbMF1cclxuZXhwb3J0IGNvbnN0IGlzSG9tZVBhZ2UgPSB1cmxTdHIgPT09IFwiaW5kZXguaHRtbFwiIHx8IHVybFN0ciA9PT0gXCJcIlxyXG5cclxuaWYoaXNIb21lUGFnZSkge1xyXG4gICAgY29uc3QgZGFzaGJvYXJkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2Rhc2hib2FyZCcpO1xyXG4gICAgY29uc3QgdG9wYmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRvcGJhcicpXHJcbiAgICBjb25zdCBzaWRlYmFyVG9nZ2xlID0gdG9wYmFyLnF1ZXJ5U2VsZWN0b3IoJyNzaWRlYmFyVG9nZ2xlJylcclxuICAgIGNvbnN0IG1haW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWFpbicpXHJcbiAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpXHJcbiAgICBjb25zdCBzZWFyY2hGb3JtID0gdG9wYmFyLnF1ZXJ5U2VsZWN0b3IoJy50b3BiYXJfX3NlYXJjaF9fZm9ybScpXHJcblxyXG4gICAgZGFzaGJvYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICBpZihlLnRhcmdldCA9PT0gc2lkZWJhclRvZ2dsZSkgZGlzcGxheVNpZGViYXIoKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZGlzcGxheVNpZGViYXIgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2lkZWJhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zaWRlYmFyJyk7XHJcbiAgICAgICAgc2lkZWJhci5jbGFzc0xpc3QudG9nZ2xlKCdzaWRlYmFyLWhpZGRlbicpO1xyXG4gICAgICAgIHNpZGViYXJUb2dnbGUuY2xhc3NMaXN0LnRvZ2dsZSgnZmEtYmFycycpXHJcbiAgICAgICAgc2lkZWJhclRvZ2dsZS5jbGFzc0xpc3QudG9nZ2xlKCdmYS1jbG9zZScpXHJcbiAgICAgICAgLy8gYWRqdXN0IG1haW4gb3ZlcmxheSB3aGVuIHNpZGViYXIgaXMgb3BlbiBmb3Igc21hbGwgYW5kIG1lZGl1bSBzY3JlZW5cclxuICAgICAgICBtYWluLmNsYXNzTGlzdC50b2dnbGUoJ21haW4tb3ZlcmxheScpIFxyXG4gICAgICAgIC8vIGFkanVzdCBib2R5IHNjcm9sbGluZyB3aGVuIHNpZGViYXIgaXMgb3BlbiBmb3Igc21hbGwgYW5kIG1lZGl1bSBzY3JlZW5cclxuICAgICAgICBib2R5LmNsYXNzTGlzdC50b2dnbGUoJ25vLXNjcm9sbCcpICAgICAgICAgXHJcbiAgICB9XHJcbiAgICBzZWFyY2hGb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIChlKSA9PiB7XHJcbiAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7IFxyXG4gICAgfSkgXHJcbn1cclxuXHJcbi8vIEZvb3RlciBNZW51XHJcbmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZm9vdGVyX19tZW51X19saXN0X19pdGVtX19saW5rXCIpLmZvckVhY2goKGxpbmspID0+IHtcclxuICAgIGlmIChsaW5rLmhyZWYgPT09IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSB7XHJcbiAgICAgICAgbGluay5jbG9zZXN0KCcuZm9vdGVyX19tZW51X19saXN0X19pdGVtJykuY2xhc3NMaXN0LmFkZChcImZvb3Rlcl9fbWVudV9fbGlzdF9faXRlbS1hY3RpdmVcIik7XHJcbiAgICB9XHJcbn0pO1xyXG4vLyBUb3BiYXIgTWVudVxyXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnRvcGJhcl9fbGVmdF9fcGFnZVwiKS5mb3JFYWNoKChsaW5rKSA9PiB7XHJcbiAgICBpZiAobGluay5ocmVmID09PSB3aW5kb3cubG9jYXRpb24uaHJlZikgbGluay5jbGFzc0xpc3QuYWRkKFwidG9wYmFyX19sZWZ0X19wYWdlLWFjdGl2ZVwiKTtcclxufSk7XHJcbiIsImltcG9ydCBhbGV4YW5kcmEgZnJvbSAnLi4vaW1nL2FsZXhhbmRyYS1yb3NzaS5qcGcnO1xyXG5pbXBvcnQgam9obiBmcm9tICcuLi9pbWcvam9obi1kb2UuanBnJztcclxuaW1wb3J0IGthcmwgZnJvbSAnLi4vaW1nL2thcmwtbWlsbGVyLmpwZyc7XHJcbmltcG9ydCBrYXRlIGZyb20gJy4uL2ltZy9rYXRlLXN0ZXZlbnNvbi5qcGcnO1xyXG5pbXBvcnQgbWFydGhhIGZyb20gJy4uL2ltZy9tYXJ0aGEtd2lsbGlhbXMuanBnJztcclxuaW1wb3J0IG1pbiBmcm9tICcuLi9pbWcvbWluLXdhbmcuanBnJztcclxuaW1wb3J0IHBldGVyIGZyb20gJy4uL2ltZy9wZXRlci1hbmRlcnNvbi5qcGcnO1xyXG5pbXBvcnQgcGhpbGlwIGZyb20gJy4uL2ltZy9waGlsaXAtYnJvd24uanBnJztcclxuaW1wb3J0IHJvYmVydCBmcm9tICcuLi9pbWcvcm9iZXJ0LW1hcmluby5qcGcnO1xyXG5pbXBvcnQgc2FyYWggZnJvbSAnLi4vaW1nL3NhcmFoLWZvcnJlc3Rlci5qcGcnO1xyXG5pbXBvcnQgc2VyZW5hIGZyb20gJy4uL2ltZy9zZXJlbmEtam9obnNvbi5qcGcnO1xyXG5pbXBvcnQgcGljUGxhY2Vob2xkZXIgZnJvbSAnLi4vaW1nL3BpYy1wbGFjZWhvbGRlci5wbmcnO1xyXG4vLyBJY29ucyBhbmQgbG9nb1xyXG5pbXBvcnQgbG9nbyBmcm9tICcuLi9pbWcvbG9nby5zdmcnO1xyXG5pbXBvcnQgd2VicGFja0xvZ28gZnJvbSAnLi4vaW1nL3dlYnBhY2sucG5nJztcclxuaW1wb3J0IGphdmFzY3JpcHRMb2dvIGZyb20gJy4uL2ltZy9qYXZhc2NyaXB0LnBuZyc7XHJcbmltcG9ydCBjaGFydGpzTG9nbyBmcm9tICcuLi9pbWcvY2hhcnRqcy5zdmcnO1xyXG5cclxuLy8gSW1hZ2VzXHJcbmNvbnN0IGFsZXhhbmRyYUltZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYWxleGFuZHJhJyk7XHJcbmNvbnN0IGpvaG5JbWdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmpvaG4nKTtcclxuY29uc3Qga2FybEltZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcua2FybCcpO1xyXG5jb25zdCBrYXRlSW1ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5rYXRlJyk7XHJcbmNvbnN0IG1hcnRoYUltZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFydGhhJyk7XHJcbmNvbnN0IG1pbkltZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWluJyk7XHJcbmNvbnN0IHBldGVySW1ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wZXRlcicpO1xyXG5jb25zdCBwaGlsaXBJbWdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBoaWxpcCcpO1xyXG5jb25zdCByb2JlcnRJbWdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJvYmVydCcpO1xyXG5jb25zdCBzYXJhaEltZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2FyYWgnKTtcclxuY29uc3Qgc2VyZW5hSW1ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZXJlbmEnKTtcclxuY29uc3QgcGljUGxhY2Vob2xkZXJJbWdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBpYy1wbGFjZWhvbGRlcicpO1xyXG5jb25zdCBsb2dvSW1ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2dvX19pbWcnKTtcclxuLy8gSWNvbnNcclxuY29uc3Qgd2VicGFja0ltZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcud2VicGFjaycpO1xyXG5jb25zdCBqYXZhc2NyaXB0SW1ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qYXZhc2NyaXB0Jyk7XHJcbmNvbnN0IGNoYXJ0anNJbWdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNoYXJ0anMnKTtcclxuXHJcbmNvbnN0IHNldEltYWdlcyA9IChpbWdOb2RlcywgaW1nVXJsKSA9PiB7XHJcbiAgICBpbWdOb2Rlcy5mb3JFYWNoKGltZyA9PiB7XHJcbiAgICAgICAgaW1nLnNyYyA9IGltZ1VybFxyXG4gICAgICAgIGlmKGltZ1VybCAhPT1waWNQbGFjZWhvbGRlciAmJiBpbWdVcmwgIT09bG9nbykge1xyXG4gICAgICAgICAgICBjb25zdCBmdWxsTmFtZT0gaW1nVXJsLnNwbGl0KCcvJykuc2xpY2UoLTEpWzBdLnNwbGl0KCctJylcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGZ1bGxOYW1lWzBdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZnVsbE5hbWVbMF0uc2xpY2UoMSlcclxuICAgICAgICAgICAgY29uc3QgbGFzdE5hbWUgPSBmdWxsTmFtZVsxXS5zcGxpdCgnLicpWzBdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZnVsbE5hbWVbMV0uc3BsaXQoJy4nKVswXS5zbGljZSgxKVxyXG4gICAgICAgICAgICBpbWcuYWx0ID0gYCR7bmFtZX0gJHtsYXN0TmFtZX1gXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuLy8gaG9tZSBwYWdlIGFuZCBjcmVkaXRzIHBhZ2Vcclxuc2V0SW1hZ2VzKGFsZXhhbmRyYUltZ3MsIGFsZXhhbmRyYSlcclxuc2V0SW1hZ2VzKGpvaG5JbWdzLCBqb2huKVxyXG5zZXRJbWFnZXMoa2FybEltZ3MsIGthcmwpXHJcbnNldEltYWdlcyhrYXRlSW1ncywga2F0ZSlcclxuc2V0SW1hZ2VzKG1hcnRoYUltZ3MsIG1hcnRoYSlcclxuc2V0SW1hZ2VzKG1pbkltZ3MsIG1pbilcclxuc2V0SW1hZ2VzKHBldGVySW1ncywgcGV0ZXIpXHJcbnNldEltYWdlcyhwaGlsaXBJbWdzLCBwaGlsaXApXHJcbnNldEltYWdlcyhyb2JlcnRJbWdzLCByb2JlcnQpXHJcbnNldEltYWdlcyhzYXJhaEltZ3MsIHNhcmFoKVxyXG5zZXRJbWFnZXMoc2VyZW5hSW1ncywgc2VyZW5hKVxyXG5zZXRJbWFnZXMocGljUGxhY2Vob2xkZXJJbWdzLCBwaWNQbGFjZWhvbGRlcilcclxuc2V0SW1hZ2VzKGxvZ29JbWdzLCBsb2dvKVxyXG5cclxuLy8gU2V0IEljb25zIFxyXG5jb25zdCBzZXRJY29ucyA9IChpbWdOb2RlcywgaW1nVXJsKSA9PiB7XHJcbiAgICBpbWdOb2Rlcy5mb3JFYWNoKGltZyA9PiBpbWcuc3JjID0gaW1nVXJsKTtcclxufVxyXG5zZXRJY29ucyh3ZWJwYWNrSW1ncywgd2VicGFja0xvZ28pXHJcbnNldEljb25zKGphdmFzY3JpcHRJbWdzLCBqYXZhc2NyaXB0TG9nbylcclxuc2V0SWNvbnMoY2hhcnRqc0ltZ3MsIGNoYXJ0anNMb2dvKSIsImV4cG9ydCBjb25zdCBvcmFuZ2VUciA9IFwicmdiYSgyMzUsMTU3LDkwLCAuMylcIjtcclxuZXhwb3J0IGNvbnN0IG9yYW5nZSA9IFwicmdiYSgyMzUsMTU3LDkwLCAxKVwiO1xyXG5leHBvcnQgY29uc3QgeWVsbG93ID0gXCJyZ2IoMjQxLDE4Niw1OCwgMSlcIjtcclxuZXhwb3J0IGNvbnN0IHllbGxvd1RyID0gXCJyZ2JhKDI0MSwxODYsNTgsIC4zKVwiO1xyXG5leHBvcnQgY29uc3QgcHVycGxlID0gXCJyZ2JhKDIxNSwxMjEsMjI5LCAxKVwiO1xyXG5leHBvcnQgY29uc3QgcHVycGxlVHIgPSBcInJnYmEoMjE1LDEyMSwyMjksIC4zKVwiO1xyXG5leHBvcnQgY29uc3QgcGlua1RyID0gXCJyZ2JhKDIzNiw5MywxNjIsLjMpXCI7XHJcbmV4cG9ydCBjb25zdCByZWQgPSBcInJnYmEoMjM2LDEwNywxMDYsMSlcIjtcclxuZXhwb3J0IGNvbnN0IHJlZFRyID0gXCJyZ2JhKDIzNiwxMDcsMTA2LC4zKVwiO1xyXG5leHBvcnQgY29uc3QgYmx1ZSA9IFwicmdiYSg4MywxNzIsMjIzLDEpXCI7XHJcbmV4cG9ydCBjb25zdCBibHVlVHIgPSBcInJnYmEoODMsMTcyLDIyMywuMylcIjtcclxuZXhwb3J0IGNvbnN0IGdyZWVuID0gXCJyZ2JhKDgwLDIwOCwxMzEsMSlcIjtcclxuZXhwb3J0IGNvbnN0IGdyZWVuVHIgPSBcInJnYmEoODAsMjA4LDEzMSwuMylcIjtcclxuXHJcbiAgICAvLyAvLyB0eXBvZ3JhcGh5XHJcbmV4cG9ydCBjb25zdCBzbGF0ZUdyYXkgPSBcInJnYig3MCw4OSwxMDMpXCI7XHJcbmV4cG9ydCBjb25zdCBzaGFya0dyYXkgPSAgXCJyZ2IoMTUyLDE2MSwxNzApXCI7XHJcbmV4cG9ydCBjb25zdCBjbG91ZHlHcmF5ID0gXCJyZ2IoMjA4LDIxMSwyMTYpXCI7XHJcbiAgXHJcbiIsImltcG9ydCB7IHBpbmtUciwgYmx1ZVRyLCB5ZWxsb3dUciwgZ3JlZW5UciwgcHVycGxlVHIsIHJlZFRyIH0gZnJvbSAnLi9jb2xvcnMnO1xyXG5pbXBvcnQgeyBpc0hvbWVQYWdlIH0gZnJvbSAnLi9iYXNlJztcclxuXHJcbmlmKGlzSG9tZVBhZ2Upe1xyXG4gICAgY29uc3QgdHJnTm9kZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGFyZ2V0Jyk7XHJcblxyXG4gICAgY29uc3QgdGdzRGF0YSA9IFtcclxuICAgICAgICB7Y29sb3I6cGlua1RyLCB2YWx1ZTonNDglJywgY3VycmVudDogJyQxLjE1Mi4wMDAnLCBnb2FsOiAnJDIuNDAwLjAwMCd9LFxyXG4gICAgICAgIHtjb2xvcjpibHVlVHIsIHZhbHVlOic4MiUnLGN1cnJlbnQ6ICcjMTQ3LjYwMCcsIGdvYWw6ICcjMTgwLjAwMCd9LFxyXG4gICAgICAgIHtjb2xvcjp5ZWxsb3dUciwgdmFsdWU6JzYxJScsIGN1cnJlbnQ6ICckMTc2LjkwMCcsIGdvYWw6ICdiZWxvdyAkMjkwLjAwMCd9LFxyXG4gICAgICAgIHtjb2xvcjpncmVlblRyLCB2YWx1ZTonNzMlJywgY3VycmVudDogJyMxLjM3OS43MDAnLCBnb2FsOiAnIzEuODkwLjAwMCd9LFxyXG4gICAgICAgIHtjb2xvcjpwdXJwbGVUciwgdmFsdWU6Jzc1JScsIGN1cnJlbnQ6ICckMS41ODIuNTAwJywgZ29hbDogJyQyLjExMC4wMDAnfSxcclxuICAgICAgICB7Y29sb3I6cmVkVHIsIHZhbHVlOic0NSUnLCBjdXJyZW50OiAnJDg1LjUwMCcsIGdvYWw6ICdiZWxvdyAkMTkwLjAwMCd9LFxyXG4gICAgXVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJnTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgdHJnID0gdGdzRGF0YVtpXTtcclxuICAgICAgICBsZXQgdHJnTm9kZSA9IHRyZ05vZGVzW2ldO1xyXG4gICAgICAgIGxldCBwZXJjZW50YWdlID0gdHJnTm9kZS5xdWVyeVNlbGVjdG9yKCcudGFyZ2V0X19wZXJjZW50YWdlJyk7XHJcbiAgICAgICAgbGV0IGJhciA9IHRyZ05vZGUucXVlcnlTZWxlY3RvcignLnRhcmdldF9fd3JhcF9fYmFyJyk7XHJcbiAgICAgICAgbGV0IGJhckluc2lkZSA9IHRyZ05vZGUucXVlcnlTZWxlY3RvcignLnRhcmdldF9fd3JhcF9fYmFyX19pbnNpZGUnKTtcclxuICAgICAgICBsZXQgY3VycmVudCA9IHRyZ05vZGUucXVlcnlTZWxlY3RvcignLnRhcmdldF9fZm9vdGVyX19jdXJyZW50X192YWx1ZScpOyAgIFxyXG4gICAgICAgIGxldCBnb2FsID0gdHJnTm9kZS5xdWVyeVNlbGVjdG9yKCcudGFyZ2V0X19mb290ZXJfX2dvYWxfX3ZhbHVlJyk7ICBcclxuICAgICAgICAvLyBzZXQgY29sb3JzXHJcbiAgICAgICAgdHJnTm9kZS5zdHlsZS5ib3JkZXJDb2xvciA9IHRyZy5jb2xvcjtcclxuICAgICAgICBwZXJjZW50YWdlLnN0eWxlLmJvcmRlckNvbG9yID0gdHJnLmNvbG9yO1xyXG4gICAgICAgIGJhci5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0cmcuY29sb3I7XHJcbiAgICAgICAgYmFyLnN0eWxlLmJvcmRlckNvbG9yID0gdHJnLmNvbG9yO1xyXG4gICAgICAgIGJhckluc2lkZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0cmcuY29sb3I7XHJcbiAgICAgICAgLy8gc2V0IHZhbHVlc1xyXG4gICAgICAgIGJhckluc2lkZS5zdHlsZS53aWR0aCA9IHRyZy52YWx1ZTtcclxuICAgICAgICBwZXJjZW50YWdlLmlubmVySFRNTCA9IHRyZy52YWx1ZTtcclxuICAgICAgICBiYXJJbnNpZGUuaW5uZXJIVE1MID0gdHJnLnZhbHVlO1xyXG4gICAgICAgIGN1cnJlbnQuaW5uZXJIVE1MID0gdHJnLmN1cnJlbnQ7XHJcbiAgICAgICAgZ29hbC5pbm5lckhUTUwgPSB0cmcuZ29hbDtcclxuICAgIH0gICAgXHJcbn1cclxuXHJcblxyXG4iLCJpbXBvcnQgeyBpc0hvbWVQYWdlIH0gZnJvbSAnLi9iYXNlJztcclxuaW1wb3J0IHsgZ3JlZW5UciwgYmx1ZVRyLCBwaW5rVHJ9IGZyb20gJy4vY29sb3JzJztcclxuXHJcbmlmKGlzSG9tZVBhZ2UpeyBcclxuXHJcbiAgICBjb25zdCBub3RlRGF0YSA9IFtcclxuICAgICAgICB7Y29udGVudDogXCJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBOdW5jIGF1Z3VlIGF1Z3VlLCBjb252YWxsaXMgZXQgdWxsYW1jb3JwZXIgYXQsIGZldWdpYXQgYSBsZW9cIiwgY29sb3I6XCIjZmZjXCIsIGhlYWQ6XCIjRkZGRkIzXCJ9LFxyXG4gICAgICAgIHtjb250ZW50OiBcIlV0IHRlbXB1cyBzb2RhbGVzIHByZXRpdW0uIFNlZCBibGFuZGl0IG5pc2wgc2l0IGFtZXQgZXggcGxhY2VyYXQsIHV0IGZhdWNpYnVzIGVuaW0gcGhhcmV0cmFcIiwgY29sb3I6Z3JlZW5UciwgaGVhZDpcIiNCOUQ5QzZcIn0sXHJcbiAgICAgICAge2NvbnRlbnQ6IFwiTnVsbGFtIGVsZW1lbnR1bSB1bHRyaWNlcyB0dXJwaXMgdmVsIHZhcml1cy4gU2VkIGlhY3VsaXMgcXVhbSBub24gZXJhdCBoZW5kcmVyaXQgbWF4aW11c1wiLCBjb2xvcjpibHVlVHIsIGhlYWQ6XCIjQjdEMkUxXCJ9LFxyXG4gICAgICAgIHtjb250ZW50OiBcIk51bmMgbWkgbG9yZW0sIHZlc3RpYnVsdW0gYSBoZW5kcmVyaXQgbm9uLCBjb25kaW1lbnR1bSBldCBsb3JlbS4gVmVzdGlidWx1bSBldWlzbW9kIGRpYW0gdmVsaXRcIiwgY29sb3I6cGlua1RyLCBoZWFkOicjRUFCNENFJ31cclxuICAgIF07XHJcbiBcclxuICAgIGNvbnN0IG5vdGVUcmcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYm9hcmRfX2NvbnRlbnRfX25vdGUnKTtcclxuICBcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm90ZVRyZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5vdGUgPSBub3RlVHJnW2ldO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBub3RlRGF0YVtpXTtcclxuXHJcbiAgICAgICAgbm90ZS5xdWVyeVNlbGVjdG9yKCcuYm9hcmRfX2NvbnRlbnRfX25vdGVfX2JvZHknKS5pbm5lckhUTUwgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgbm90ZS5xdWVyeVNlbGVjdG9yKCcuYm9hcmRfX2NvbnRlbnRfX25vdGVfX2JvZHknKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmNvbG9yO1xyXG4gICAgICAgIG5vdGUucXVlcnlTZWxlY3RvcignLmJvYXJkX19jb250ZW50X19ub3RlX19oZWFkZXInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmhlYWQ7XHJcbiAgICB9XHJcbn0gIiwiaW1wb3J0IHsgaXNIb21lUGFnZSB9IGZyb20gXCIuL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBtb250aHMgPSBbXCJKYW5cIiwgXCJGZWJcIiwgXCJNYXJcIiwgXCJBcHJcIiwgXCJNYXlcIiwgXCJKdW5cIiwgXCJKdWxcIixcIkF1Z1wiLCBcIlNlcFwiLCBcIk9jdFwiLCBcIk5vdlwiLCBcIkRlY1wiXTtcclxuY29uc3QgbW9udGhzRXh0ZW5kZWQgPSBbXCJKYW51YXJ5XCIsXCJGZWJydWFyeVwiLFwiTWFyY2hcIixcIkFwcmlsXCIsXCJNYXlcIixcIkp1bmVcIixcIkp1bHlcIixcIkF1Z3VzdFwiLFwiU2VwdGVtYmVyXCIsXCJPY3RvYmVyXCIsXCJOb3ZlbWJlclwiLFwiRGVjZW1iZXJcIl07XHJcblxyXG5cclxuLy8gVE9EQVlcclxuY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpXHJcbmV4cG9ydCBjb25zdCB5ZWFyID0gdG9kYXkuZ2V0RnVsbFllYXIoKVxyXG5leHBvcnQgY29uc3QgbW9udGggPSB0b2RheS50b0RhdGVTdHJpbmcoKS5zdWJzdHJpbmcoNCw3KVxyXG5leHBvcnQgY29uc3QgY3VyckRheSA9IHRvZGF5LnRvRGF0ZVN0cmluZygpLnN1YnN0cmluZyg4LDEwKVxyXG5leHBvcnQgY29uc3QgY3VyclllYXIgPSB0b2RheS50b0RhdGVTdHJpbmcoKS5zdWJzdHJpbmcoMTMsMTUpXHJcbmV4cG9ydCBjb25zdCBjdXJyTW9udGggPSBtb250aHNFeHRlbmRlZFttb250aHMuaW5kZXhPZihtb250aCldXHJcblxyXG4vLyBZRVNURVJEQVlcclxuY29uc3QgeWVzdGVyZGF5ID0gbmV3IERhdGUodG9kYXkuc2V0RGF0ZSh0b2RheS5nZXREYXRlKCkgLSAxKSlcclxuY29uc3QgeWVzdGVyZGF5RGF5ID0geWVzdGVyZGF5LnRvRGF0ZVN0cmluZygpLnN1YnN0cmluZyg4LDEwKVxyXG5jb25zdCB5ZXN0ZXJkYXlZZWFyID0geWVzdGVyZGF5LnRvRGF0ZVN0cmluZygpLnN1YnN0cmluZygxMywxNSlcclxuY29uc3QgeWVzdGVyZGF5TW9udGggPSB5ZXN0ZXJkYXkudG9EYXRlU3RyaW5nKCkuc3Vic3RyaW5nKDQsNylcclxuLy8gVFdPIERBWVMgQUdPXHJcbmNvbnN0IHR3b0RheXNBZ28gPSBuZXcgRGF0ZSh5ZXN0ZXJkYXkuc2V0RGF0ZSh5ZXN0ZXJkYXkuZ2V0RGF0ZSgpIC0gMSkpXHJcbmNvbnN0IHR3b0RheXNBZ29EYXkgPSB0d29EYXlzQWdvLnRvRGF0ZVN0cmluZygpLnN1YnN0cmluZyg4LDEwKVxyXG5jb25zdCB0d29EYXlzQWdvWWVhciA9IHR3b0RheXNBZ28udG9EYXRlU3RyaW5nKCkuc3Vic3RyaW5nKDEzLDE1KVxyXG5jb25zdCB0d29EYXlzQWdvTW9udGggPSB0d29EYXlzQWdvLnRvRGF0ZVN0cmluZygpLnN1YnN0cmluZyg0LDcpXHJcbi8vIFRPTU9SUk9XXHJcbmNvbnN0IHRvbW9ycm93ID0gbmV3IERhdGUodG9kYXkuc2V0RGF0ZSh0b2RheS5nZXREYXRlKCkgKyAyKSlcclxuY29uc3QgdG9tb3Jyb3dEYXkgPSB0b21vcnJvdy50b0RhdGVTdHJpbmcoKS5zdWJzdHJpbmcoOCwxMClcclxuY29uc3QgdG9tb3Jyb3dZZWFyID0gdG9tb3Jyb3cudG9EYXRlU3RyaW5nKCkuc3Vic3RyaW5nKDEzLDE1KVxyXG5jb25zdCB0b21vcnJvd01vbnRoID0gdG9tb3Jyb3cudG9EYXRlU3RyaW5nKCkuc3Vic3RyaW5nKDQsNylcclxuLy8gSU4gMyBEQVlTXHJcbmNvbnN0IGluVGhyZWVEYXlzID0gbmV3IERhdGUodG9kYXkuc2V0RGF0ZSh0b2RheS5nZXREYXRlKCkgKyAzKSlcclxuY29uc3QgaW5UaHJlZURheXNEYXkgPSBpblRocmVlRGF5cy50b0RhdGVTdHJpbmcoKS5zdWJzdHJpbmcoOCwxMClcclxuY29uc3QgaW5UaHJlZURheXNZZWFyID0gaW5UaHJlZURheXMudG9EYXRlU3RyaW5nKCkuc3Vic3RyaW5nKDEzLDE1KVxyXG5jb25zdCBpblRocmVlRGF5c01vbnRoID0gaW5UaHJlZURheXMudG9EYXRlU3RyaW5nKCkuc3Vic3RyaW5nKDQsNylcclxuXHJcbmlmKGlzSG9tZVBhZ2UpIHtcclxuXHJcbiAgICAvLyBEb20gRWxlbWVudHNcclxuICAgIGNvbnN0IGN1cnJlbnREYXlFbGVtZW50cyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5jdXJyZW50LWRheVwiKSlcclxuICAgIGNvbnN0IGN1cnJlbnRNb250aEVsZW1lbnRzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmN1cnJlbnQtbW9udGhcIikpXHJcbiAgICBjb25zdCBjdXJyZW50WWVhckVsZW1lbnRzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmN1cnJlbnQteWVhclwiKSlcclxuICAgIGNvbnN0IGN1cnJlbnREYXRlRWxlbWVudHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuY3VycmVudC1kYXRlXCIpKVxyXG4gICAgY29uc3QgeWVzdGVyZGF5RGF0ZUVsZW1lbnRzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnllc3RlcmRheS1kYXRlXCIpKVxyXG4gICAgY29uc3QgdHdvRGF5c0Fnb0RhdGVFbGVtZW50cyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi50d29kYXlzYWdvLWRhdGVcIikpXHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZVNob3J0RWxlbWVudHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuY3VycmVudC1kYXRlLXNob3J0XCIpKVxyXG4gICAgY29uc3QgeWVzdGVyZGF5RGF0ZVNob3J0RWxlbWVudHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIueWVzdGVyZGF5LWRhdGUtc2hvcnRcIikpXHJcbiAgICBjb25zdCBpblRocmVlRGF5c0RhdGVTaG9ydEVsZW1lbnRzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmludGhyZWVkYXlzLWRhdGUtc2hvcnRcIikpXHJcbiAgICBjb25zdCB0b21vcnJvd0RhdGVTaG9ydEVsZW1lbnRzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnRvbW9ycm93LWRhdGUtc2hvcnRcIikpXHJcblxyXG4gICAgLy8gVXBkYXRlIERvbSBFbGVtZW50c1xyXG4gICAgY3VycmVudE1vbnRoRWxlbWVudHMubWFwKGN1cnIgPT4gY3Vyci5pbm5lckhUTUwgPSBjdXJyTW9udGgpXHJcbiAgICBjdXJyZW50WWVhckVsZW1lbnRzLm1hcChjdXJyID0+IGN1cnIuaW5uZXJIVE1MID0geWVhcilcclxuICAgIGN1cnJlbnREYXRlRWxlbWVudHMubWFwKGN1cnIgPT4gY3Vyci5pbm5lckhUTUwgPSBbY3VyckRheSwgZm9ybWF0TW9udGgobW9udGgpLCBjdXJyWWVhcl0uam9pbihcIi9cIikpXHJcbiAgICB5ZXN0ZXJkYXlEYXRlRWxlbWVudHMubWFwKGN1cnIgPT4gY3Vyci5pbm5lckhUTUwgPSBbeWVzdGVyZGF5RGF5LCBmb3JtYXRNb250aCh5ZXN0ZXJkYXlNb250aCksIHllc3RlcmRheVllYXJdLmpvaW4oXCIvXCIpKVxyXG4gICAgdHdvRGF5c0Fnb0RhdGVFbGVtZW50cy5tYXAoY3VyciA9PiBjdXJyLmlubmVySFRNTCA9IFt0d29EYXlzQWdvRGF5LCBmb3JtYXRNb250aCh0d29EYXlzQWdvTW9udGgpLCB0d29EYXlzQWdvWWVhcl0uam9pbihcIi9cIikpXHJcbiAgICBjdXJyZW50RGF0ZVNob3J0RWxlbWVudHMubWFwKGN1cnIgPT4gY3Vyci5pbm5lckhUTUwgPSBbY3VyckRheSwgZm9ybWF0TW9udGgobW9udGgpXS5qb2luKFwiL1wiKSlcclxuICAgIHllc3RlcmRheURhdGVTaG9ydEVsZW1lbnRzLm1hcChjdXJyID0+IGN1cnIuaW5uZXJIVE1MID0gW3llc3RlcmRheURheSwgZm9ybWF0TW9udGgoeWVzdGVyZGF5TW9udGgpXS5qb2luKFwiL1wiKSlcclxuICAgIGluVGhyZWVEYXlzRGF0ZVNob3J0RWxlbWVudHMubWFwKGN1cnIgPT4gY3Vyci5pbm5lckhUTUwgPSBbaW5UaHJlZURheXNEYXksIGZvcm1hdE1vbnRoKGluVGhyZWVEYXlzTW9udGgpXS5qb2luKFwiL1wiKSlcclxuICAgIHRvbW9ycm93RGF0ZVNob3J0RWxlbWVudHMubWFwKGN1cnIgPT4gY3Vyci5pbm5lckhUTUwgPSBbdG9tb3Jyb3dEYXksIGZvcm1hdE1vbnRoKHRvbW9ycm93TW9udGgpXS5qb2luKFwiL1wiKSlcclxufVxyXG5cclxuZnVuY3Rpb24gZm9ybWF0TW9udGgobW9udGgpIHtcclxuICAgIGNvbnN0IG1vbnRoRGlnaXQgPSBtb250aHMuaW5kZXhPZihtb250aCkgKyAxO1xyXG4gICAgaWYobW9udGhEaWdpdDwxMCkgcmV0dXJuIGAwJHttb250aERpZ2l0fWA7XHJcbiAgICBlbHNlIHJldHVybiBtb250aERpZ2l0XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IGlzSG9tZVBhZ2UgfSBmcm9tIFwiLi9iYXNlXCI7XHJcbmltcG9ydCB7IHllYXIgfSBmcm9tIFwiLi91cGRhdGVEYXRlXCI7XHJcbmltcG9ydCB7IG1vbnRoIH0gZnJvbSBcIi4vdXBkYXRlRGF0ZVwiO1xyXG5pbXBvcnQgeyBtb250aHMgfSBmcm9tIFwiLi91cGRhdGVEYXRlXCI7XHJcbmltcG9ydCB7IGN1cnJEYXkgfSBmcm9tIFwiLi91cGRhdGVEYXRlXCI7XHJcblxyXG5jb25zdCBjYWxlbmRhclJvdyA9IGAgXHJcbiAgICA8dHI+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwiY2FsZW5kYXJfX2NlbGxcIj4mbmJzcDs8L3RkPlxyXG4gICAgICAgIDx0ZCBjbGFzcz1cImNhbGVuZGFyX19jZWxsXCI+Jm5ic3A7PC90ZD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJjYWxlbmRhcl9fY2VsbFwiPiZuYnNwOzwvdGQ+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwiY2FsZW5kYXJfX2NlbGxcIj4mbmJzcDs8L3RkPlxyXG4gICAgICAgIDx0ZCBjbGFzcz1cImNhbGVuZGFyX19jZWxsXCI+Jm5ic3A7PC90ZD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJjYWxlbmRhcl9fY2VsbFwiPiZuYnNwOzwvdGQ+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwiY2FsZW5kYXJfX2NlbGxcIj4mbmJzcDs8L3RkPlxyXG4gICAgPC90cj5gO1xyXG5cclxuaWYoaXNIb21lUGFnZSkge1xyXG5cclxuICAgIC8vIEdldCB0aGUgRE9NIEVsZW1lbnRcclxuICAgIGNvbnN0IGNhbGVuZGVyQm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuY2FsZW5kYXJfX2JvZHlcIik7XHJcblxyXG4gICAgLy8gR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIGN1cnIgbW9udGhcclxuICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGhzLmluZGV4T2YobW9udGgpLCAwKS5nZXREYXkoKVxyXG4gICAgY29uc3QgbW9udGhMZW5ndGggPSBjYWxjdWxhdGVNb250aExlbmd0aCgpXHJcblxyXG4gICAvLyBDcmVhdGUgdGhlIGFycmF5IG9mIGRheXNcclxuICAgIGxldCBkYXlzQXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDAgOyBpIDwgbW9udGhMZW5ndGggKyBmaXJzdERheTsgaSsrKSB7XHJcbiAgICAgICAgaWYoaTxmaXJzdERheSkgZGF5c0FycmF5LnB1c2goXCImbmJzcDtcIilcclxuICAgICAgICBlbHNlIGRheXNBcnJheS5wdXNoKGktZmlyc3REYXkrMSkgICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8vIENyZWF0ZSB0aGUgcm93cyBhbmQgY2VsbHMgZm9yIHRoZSBjYWxlbmRhclxyXG4gICAgY29uc3Qgcm93c051bWIgPSBNYXRoLmNlaWwoKG1vbnRoTGVuZ3RoICsgZmlyc3REYXkpIC8gNylcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93c051bWI7IGkrKykgY2FsZW5kZXJCb2R5Lmluc2VydEFkamFjZW50SFRNTChcImFmdGVyYmVnaW5cIiwgY2FsZW5kYXJSb3cpXHJcblxyXG4gICAgLy8gSW5zZXJ0IHRoZSBkYXlzIGludG8gdGhlIGNhbGVuZGFyXHJcbiAgICBjb25zdCBjZWxscyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5jYWxlbmRhcl9fY2VsbFwiKSlcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF5c0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY2VsbHNbaV0uaW5uZXJIVE1MID0gZGF5c0FycmF5W2ldO1xyXG4gICAgICAgIGlmKGNlbGxzW2ldLmlubmVySFRNTCA9PT0gY3VyckRheSkgY2VsbHNbaV0uY2xhc3NMaXN0LmFkZChcImN1cnJlbnRcIilcclxuICAgIH1cclxuICAgIC8vIERpc2FibGUgaG92ZXIgb24gZW1wdHkgY2VsbHNcclxuICAgIGNlbGxzLmZvckVhY2goY2VsbCA9PiB7XHJcbiAgICAgICAgaWYoY2VsbC5pbm5lckhUTUwgPT0gXCImbmJzcDtcIikgY2VsbC5jbGFzc0xpc3QuYWRkKFwiZW1wdHlcIilcclxuICAgIH0pO1xyXG4gICAgXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZU1vbnRoTGVuZ3RoKCkge1xyXG4gICAgLy8gQXByIEp1biBTZXAgTm92XHJcbiAgICBjb25zdCBzaG9ydE1vbnRocyA9IFtcIkFwclwiLCBcIkp1blwiLCBcIlNlcFwiLCBcIk5vdlwiXTtcclxuICAgIGlmKHNob3J0TW9udGhzLmluY2x1ZGVzKG1vbnRoKSkgcmV0dXJuIDMwXHJcbiAgICBlbHNlIGlmKG1vbnRoPT09XCJGZWJcIikge1xyXG4gICAgICAgIGlmKHllYXIgPT09IDIwMjQgfHwgeWVhcj09PTIwMjgpIHJldHVybiAyOVxyXG4gICAgICAgIGVsc2UgcmV0dXJuIDI4XHJcbiAgICB9XHJcbiAgICBlbHNlIHJldHVybiAzMVxyXG59IiwiaW1wb3J0IHsgc2xhdGVHcmF5LCBjbG91ZHlHcmF5IH0gZnJvbSBcIi4vY29sb3JzXCI7XHJcbmlmKGxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoXCJpbmRleC5odG1sXCIpKXtcclxuICAgIENoYXJ0LmRlZmF1bHRzLmZvbnQuZmFtaWx5ID0gXCInTW9udHNlcnJhdCcsIHNhbnMtc2VyaWZcIjtcclxuICAgIENoYXJ0LmRlZmF1bHRzLmNvbG9yID0gc2xhdGVHcmF5O1xyXG4gICAgQ2hhcnQuZGVmYXVsdHMuYm9yZGVyQ29sb3IgPSBjbG91ZHlHcmF5OyAgICBcclxufSIsImltcG9ydCB7IGJsdWVUciwgZ3JlZW5UciwgcmVkVHIsIHllbGxvd1RyLCBjbG91ZHlHcmF5LCBzaGFya0dyYXl9IGZyb20gJy4vY29sb3JzJ1xyXG5cclxuZXhwb3J0IGNvbnN0IGxlZ2VuZFBsdWdpbiA9IHtcclxuICBpZDogJ2xlZ2VuZFBsdWdpbicsXHJcbiAgYWZ0ZXJVcGRhdGUoY2hhcnQsIGFyZ3MsIG9wdGlvbnMsIHRlc3QpIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gY2hhcnQub3B0aW9ucy5wbHVnaW5zLmxlZ2VuZC5sYWJlbHMuZ2VuZXJhdGVMYWJlbHMoY2hhcnQpO1xyXG4gICAgY29uc3QgaWQgPSBjaGFydC5jYW52YXMuaWQ7XHJcbiAgICBjb25zdCB1bCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2lkfS1sZWdlbmRgKTtcclxuXHJcbiAgICAvLyBSZW1vdmUgb2xkIGxlZ2VuZCBpdGVtc1xyXG4gICAgd2hpbGUgKHVsLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgdWwuZmlyc3RDaGlsZC5yZW1vdmUoKTtcclxuICAgIH1cclxuICAgIC8vIENyZWF0ZSB0aGUgbGVnZW5kXHJcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7XHJcbiAgICAgIGxpLmNsYXNzTGlzdC5hZGQoXCJjaGFydF9fbGVnZW5kX19saXN0X19pdGVtXCIpO1xyXG4gICAgICBsaS5vbmNsaWNrID0gKGUpID0+IHtcclxuICAgICAgICBjb25zdCB7dHlwZX0gPSBjaGFydC5jb25maWc7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdwaWUnIHx8IHR5cGUgPT09ICdkb3VnaG51dCcpIHtcclxuICAgICAgICAgIC8vIFBpZSBhbmQgZG91Z2hudXQgY2hhcnRzIG9ubHkgaGF2ZSBhIHNpbmdsZSBkYXRhc2V0IGFuZCB2aXNpYmlsaXR5IGlzIHBlciBpdGVtXHJcbiAgICAgICAgICBjaGFydC50b2dnbGVEYXRhVmlzaWJpbGl0eShpdGVtLmluZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY2hhcnQuc2V0RGF0YXNldFZpc2liaWxpdHkoaXRlbS5kYXRhc2V0SW5kZXgsICFjaGFydC5pc0RhdGFzZXRWaXNpYmxlKGl0ZW0uZGF0YXNldEluZGV4KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNoYXJ0LnVwZGF0ZSgpO1xyXG4gICAgICB9O1xyXG4gICAgICAvLyBDb2xvciBib3hcclxuICAgICAgY29uc3QgYm94U3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgYm94U3Bhbi5jbGFzc0xpc3QuYWRkKFwiY2hhcnRfX2xlZ2VuZF9fbGlzdF9faXRlbV9fc3BhblwiKTtcclxuICAgICAgYm94U3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gaXRlbS5maWxsU3R5bGU7XHJcbiAgICAgIGJveFNwYW4uc3R5bGUuYm9yZGVyQ29sb3IgPSBpdGVtLnN0cm9rZVN0eWxlO1xyXG4gICAgICBjb25zdCBjb2xvckNsYXNzID0gYXNzaWduQ29sb3JDbGFzcyhpdGVtLmZpbGxTdHlsZSk7XHJcbiAgICAgIGJveFNwYW4uY2xhc3NMaXN0LmFkZChgY2hhcnRfX2xlZ2VuZF9fbGlzdF9faXRlbV9fc3Bhbi0ke2NvbG9yQ2xhc3N9YCk7XHJcbiAgICAgIGlmKGl0ZW0uaGlkZGVuKSB7XHJcbiAgICAgICAgYm94U3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gc2hhcmtHcmF5O1xyXG4gICAgICAgIGJveFNwYW4uc3R5bGUuYm9yZGVyQ29sb3IgPSBzaGFya0dyYXk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYm94U3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gaXRlbS5maWxsU3R5bGU7XHJcbiAgICAgICAgYm94U3Bhbi5zdHlsZS5ib3JkZXJDb2xvciA9IGl0ZW0uc3Ryb2tlU3R5bGU7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvLyBUZXh0XHJcbiAgICAgIGNvbnN0IHRleHRDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XHJcbiAgICAgIHRleHRDb250YWluZXIuY2xhc3NMaXN0LmFkZChcImNoYXJ0X19sZWdlbmRfX2xpc3RfX2l0ZW1fX3RleHRcIik7XHJcbiAgICAgIHRleHRDb250YWluZXIuc3R5bGUudGV4dERlY29yYXRpb24gPSBpdGVtLmhpZGRlbiA/ICdsaW5lLXRocm91Z2gnIDogJyc7XHJcblxyXG4gICAgICBjb25zdCB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaXRlbS50ZXh0KTtcclxuICAgICAgdGV4dENvbnRhaW5lci5hcHBlbmRDaGlsZCh0ZXh0KTtcclxuXHJcbiAgICAgIGxpLmFwcGVuZENoaWxkKGJveFNwYW4pO1xyXG4gICAgICBsaS5hcHBlbmRDaGlsZCh0ZXh0Q29udGFpbmVyKTtcclxuICAgICAgdWwuYXBwZW5kQ2hpbGQobGkpO1xyXG4gICAgfSk7XHJcbiAgfSAgXHJcbn1cclxuXHJcbmNvbnN0IGFzc2lnbkNvbG9yQ2xhc3MgPSAocmdiQ29sb3IpID0+IHtcclxuICBpZihyZ2JDb2xvcj09Ymx1ZVRyKSByZXR1cm4gJ2JsdWUnXHJcbiAgaWYocmdiQ29sb3I9PXJlZFRyKSByZXR1cm4gJ3JlZCdcclxuICBpZihyZ2JDb2xvcj09Z3JlZW5UcikgcmV0dXJuICdncmVlbidcclxuICBpZihyZ2JDb2xvcj09eWVsbG93VHIpIHJldHVybiAneWVsbG93J1xyXG4gIGlmKHJnYkNvbG9yPT1jbG91ZHlHcmF5KSByZXR1cm4gJ2Nsb3VkeUdyYXknXHJcbiAgZWxzZSByZXR1cm4gcmdiQ29sb3JcclxufSIsImltcG9ydCB7IGxlZ2VuZFBsdWdpbiB9IGZyb20gJy4vbGVnZW5kLXBsdWdpbidcclxuaW1wb3J0IHsgYmx1ZVRyLCBibHVlLCBncmVlblRyLCBncmVlbiwgcmVkLCByZWRUciwgeWVsbG93LCB5ZWxsb3dUciwgc2hhcmtHcmF5LCBjbG91ZHlHcmF5IH0gZnJvbSAnLi9jb2xvcnMnXHJcbmltcG9ydCB7IGlzSG9tZVBhZ2UgfSBmcm9tICcuL2Jhc2UnXHJcbmltcG9ydCB7IG1vbnRoLCBtb250aHMgfSBmcm9tICcuL3VwZGF0ZURhdGUnXHJcblxyXG5cclxuaWYoaXNIb21lUGFnZSl7XHJcblxyXG4gICAgY29uc3QgbW9udGhzQXJyYW5nZWQgPSBtb250aHMuc2xpY2UobW9udGhzLmluZGV4T2YobW9udGgpKS5jb25jYXQobW9udGhzLnNsaWNlKDAsIG1vbnRocy5pbmRleE9mKG1vbnRoKSkpLnJldmVyc2UoKVxyXG5cclxuICAgIGNvbnN0IG1haW5EYXRhID0ge1xyXG4gICAgICAgIGluY29tZU9ubGluZToge1xyXG4gICAgICAgICAgICB0eXBlOiAnYmFyJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdvbmxpbmUgc2FsZXMnLFxyXG4gICAgICAgICAgICBkYXRhOiBbNDUsIDUzLCA1MCwgNDgsIDM5LCA2MCwgNTQsIDQ3LCA0MSwgMzIsIDQ2LCAzOV0sXHJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBibHVlLFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJsdWVUcixcclxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6MSxcclxuICAgICAgICAgICAgc3RhY2s6ICdTdGFjayAwJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGluY29tZUluU3RvcmU6IHtcclxuICAgICAgICAgICAgdHlwZTogJ2JhcicsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnaW4gc3RvcmUtc2FsZXMnLFxyXG4gICAgICAgICAgICBkYXRhOiBbMzMsIDM2LCA0NSwgMzksIDQzLCA1MSwgNDEsIDI5LCAzOSwgMjUsIDM3LCAzMV0sXHJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBncmVlbixcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBncmVlblRyLFxyXG4gICAgICAgICAgICBib3JkZXJXaWR0aDoxLFxyXG4gICAgICAgICAgICBzdGFjazogJ1N0YWNrIDAnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXhwZW5zZXM6IHtcclxuICAgICAgICAgICAgdHlwZTogJ2JhcicsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnZXhwZW5zZXMnLFxyXG4gICAgICAgICAgICBkYXRhOiBbMjUsIDI5LCAyMSwgMTUsIDE4LCAzMywgMzQsIDM3LCA0MSwgNDksIDQzLCAyMl0sXHJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiByZWQsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcmVkVHIsXHJcbiAgICAgICAgICAgIGJvcmRlcldpZHRoOjEsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcm9maXQ6IHtcclxuICAgICAgICAgICAgdHlwZTogJ2xpbmUnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ3Byb2ZpdCcsXHJcbiAgICAgICAgICAgIGRhdGE6IFs1MywgNjAsIDc0LCA3MiwgNjQsIDc4LCA2MSwgMzksIDM5LCA4LCA0MCwgNDhdLFxyXG4gICAgICAgICAgICBwb2ludFN0eWxlOiAnc3RhcicsXHJcbiAgICAgICAgICAgIHBvaW50UmFkaXVzOiA2LFxyXG4gICAgICAgICAgICBwb2ludEhvdmVyUmFkaXVzOiA3LFxyXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogeWVsbG93LFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHllbGxvd1RyLFxyXG4gICAgICAgICAgICB0ZW5zaW9uOjAuMixcclxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6MSwgXHJcbiAgICBcclxuICAgICAgICB9LFxyXG4gICAgICAgIHByb2ZpdEdvYWw6IHtcclxuICAgICAgICAgICAgdHlwZTogJ2xpbmUnLFxyXG4gICAgICAgICAgICBsYWJlbDoncHJvZml0IGdvYWwnLFxyXG4gICAgICAgICAgICBkYXRhOiBbNTUsIDYzLCA3MCwgNjgsIDY5LCA2NywgNjUsIDQyLCAzNSwgMTIsIDQ0LCA0Nl0sXHJcbiAgICAgICAgICAgIHBvaW50U3R5bGU6ICdzdGFyJyxcclxuICAgICAgICAgICAgcG9pbnRSYWRpdXM6IDYsXHJcbiAgICAgICAgICAgIHBvaW50SG92ZXJSYWRpdXM6IDcsXHJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBzaGFya0dyYXksXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY2xvdWR5R3JheSxcclxuICAgICAgICAgICAgdGVuc2lvbjowLjIsXHJcbiAgICAgICAgICAgIGJvcmRlcldpZHRoOjEsXHJcbiAgICAgICAgICAgIGZpbGw6Jy0xJ1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGxhYmVsczogbW9udGhzQXJyYW5nZWRcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtYWluQ2hhcnREYXRhID0ge1xyXG4gICAgICAgIGxhYmVsczogbWFpbkRhdGEubGFiZWxzLFxyXG4gICAgICAgIGRhdGFzZXRzOiBbXHJcbiAgICAgICAgICAgIG1haW5EYXRhLmluY29tZU9ubGluZSxcclxuICAgICAgICAgICAgbWFpbkRhdGEuaW5jb21lSW5TdG9yZSxcclxuICAgICAgICAgICAgbWFpbkRhdGEuZXhwZW5zZXMsXHJcbiAgICAgICAgICAgIG1haW5EYXRhLnByb2ZpdCxcclxuICAgICAgICAgICAgbWFpbkRhdGEucHJvZml0R29hbCAgXHJcbiAgICAgICAgXSxcclxuICAgIH1cclxuICAgIGNvbnN0IG1haW5DaGFydENvbmZpZyA9IHtcclxuICAgICAgICBkYXRhOiBtYWluQ2hhcnREYXRhLFxyXG4gICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnU2FsZXMgYW5kIEV4cGVuc2VzIC0gTGFzdCAxMiBNb250aHMnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbGVnZW5kOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uKGNvbnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuZGF0YXNldC5sYWJlbCArICc6ICcgKyAnJCcgKyBjb250ZXh0LmZvcm1hdHRlZFZhbHVlICsgJ21pbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOmZ1bmN0aW9uKGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNbY29udGV4dFswXS5sYWJlbF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZXNwb25zaXZlOnRydWUsXHJcbiAgICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86ZmFsc2UsXHJcbiAgICAgICAgICAgIHNjYWxlczoge1xyXG4gICAgICAgICAgICAgICAgeToge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6dHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonJCBkb2xsYXJzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5BdFplcm86IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRpY2tzOntcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6ZnVuY3Rpb24odmFsdWUsIGluZGV4LCB0aWNrcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyQnICsgdmFsdWUgKyAnbWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwbHVnaW5zOiBbbGVnZW5kUGx1Z2luXSBcclxuICAgIH1cclxuICAgIG5ldyBDaGFydChcIm1haW5DaGFydFwiLCBtYWluQ2hhcnRDb25maWcpOyAgICBcclxufVxyXG5cclxuXHJcblxyXG4iLCJpbXBvcnQgeyBibHVlLCBibHVlVHIsIGdyZWVuLCBncmVlblRyLCByZWQsIHJlZFRyLHllbGxvdywgeWVsbG93VHIgfSBmcm9tICcuL2NvbG9ycydcclxuaW1wb3J0IHsgbGVnZW5kUGx1Z2luIH0gZnJvbSAnLi9sZWdlbmQtcGx1Z2luJ1xyXG5pbXBvcnQgeyBpc0hvbWVQYWdlIH0gZnJvbSAnLi9iYXNlJztcclxuaW1wb3J0IHsgY3Vyck1vbnRoIH0gZnJvbSAnLi91cGRhdGVEYXRlJztcclxuXHJcbmlmKGlzSG9tZVBhZ2Upe1xyXG4gIC8vIEludm9pY2VzIGJ5IFN0YXR1c1xyXG4gIGNvbnN0IGludm9pY2VzRGF0YSA9IHtcclxuICAgIGxhYmVsczogW1wicGFpZFwiLCBcInBlbmRpbmdcIiwgXCJyZWZ1bmRlZFwiLCBcImNhbmNlbGxlZFwiXSxcclxuICAgIHZhbHVlczogWzM5OSwgMTIwLCAxMCwgMTVdLFxyXG4gICAgYmFyQ29sb3JzOiBbZ3JlZW5UciwgYmx1ZVRyLCB5ZWxsb3dUciwgcmVkVHJdLFxyXG4gICAgYm9yZGVyQ29sb3JzOiBbZ3JlZW4sYmx1ZSwgeWVsbG93LCByZWRdLFxyXG4gIH1cclxuXHJcbiAgbmV3IENoYXJ0KFwiaW52b2ljZXNcIiwge1xyXG4gICAgdHlwZTogXCJkb3VnaG51dFwiLFxyXG4gICAgZGF0YToge1xyXG4gICAgICBsYWJlbHM6IGludm9pY2VzRGF0YS5sYWJlbHMsXHJcbiAgICAgIGRhdGFzZXRzOiBbe1xyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogaW52b2ljZXNEYXRhLmJhckNvbG9ycyxcclxuICAgICAgICBkYXRhOiBpbnZvaWNlc0RhdGEudmFsdWVzXHJcbiAgICAgIH1dXHJcbiAgICB9LFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgcmVzcG9uc2l2ZTp0cnVlLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86ZmFsc2UsICAgXHJcbiAgICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgICAgbGVnZW5kOiB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6ZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgICAgZGlzcGxheTpmYWxzZSxcclxuICAgICAgICAgICAgdGV4dDonSW52b2ljZXMgYnkgU3RhdHVzJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgY2FsbGJhY2tzOiB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uKGNvbnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29udGV4dC5sYWJlbH06ICMke2NvbnRleHQuZm9ybWF0dGVkVmFsdWV9YDtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRpdGxlOmZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y3Vyck1vbnRofSBJbnZvaWNlc2BcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9ICBcclxuICAgIH0sXHJcbiAgICBwbHVnaW5zOiBbbGVnZW5kUGx1Z2luXVxyXG4gIH0pO1xyXG5cclxuICAvLyBhZGQgYm9yZGVyIHRvIHNwYW5cclxuICBsZXQgaW52b2ljZXNMZWdlbmRCb3hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbnZvaWNlcy1sZWdlbmQnKS5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuJyk7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnZvaWNlc0xlZ2VuZEJveGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpbnZvaWNlc0xlZ2VuZEJveGVzW2ldLnN0eWxlLmJvcmRlckNvbG9yID0gaW52b2ljZXNEYXRhLmJvcmRlckNvbG9yc1tpXTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuIiwiaW1wb3J0IHsgbGVnZW5kUGx1Z2luIH0gZnJvbSAnLi9sZWdlbmQtcGx1Z2luJztcclxuaW1wb3J0IHsgYmx1ZSwgYmx1ZVRyLCBncmVlbiwgZ3JlZW5UciwgeWVsbG93LCB5ZWxsb3dUciwgcmVkLCByZWRUciB9IGZyb20gJy4vY29sb3JzJztcclxuaW1wb3J0IHsgaXNIb21lUGFnZSB9IGZyb20gJy4vYmFzZSc7XHJcblxyXG5cclxuaWYoaXNIb21lUGFnZSl7XHJcbiAgXHJcbiAgY29uc3QgZXhwZW5zZXNEYXRhID0ge1xyXG4gICAgZGF0YXNldHM6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdsaW5lJyxcclxuICAgICAgICBsYWJlbDogJ21hcmtldGluZycsXHJcbiAgICAgICAgZGF0YTogWzMwLCAzNywgMzMsIDI4LCAzMSwgMjYsIDE3LCAyNCwgMzUsIDE5LCAyMiwgMTYsIDM0LCAyMywgMzAsIDE5LCAyMSwgMjddLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBncmVlbixcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGdyZWVuVHIsXHJcbiAgICAgICAgcG9pbnRSYWRpdXM6MCxcclxuICAgICAgICB0ZW5zaW9uOiAuMyxcclxuICAgICAgICBib3JkZXJXaWR0aDoxLFxyXG4gICAgICAgIGZpbGw6dHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxyXG4gICAgICAgIGxhYmVsOiAnY29uc3VsdGluZycsXHJcbiAgICAgICAgZGF0YTogWzE0LCAyMCwgMTksIDksIDE0LCAxMiwgMTcsIDIwLCAxNCwgMjMsIDEyLCA4LCAxMiwgMTYsIDE0LCAxMSwgMTIsIDhdLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBibHVlLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogYmx1ZVRyLFxyXG4gICAgICAgIHBvaW50UmFkaXVzOjAsXHJcbiAgICAgICAgdGVuc2lvbjogLjMsXHJcbiAgICAgICAgYm9yZGVyV2lkdGg6MSxcclxuICAgICAgICBmaWxsOnRydWVcclxuICAgICAgfSwgXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAnbGluZScsXHJcbiAgICAgICAgbGFiZWw6ICdzZXJ2aWNlcycsXHJcbiAgICAgICAgZGF0YTogWzE0LCAxNiwgMTgsIDE2LCAxNywgMTgsIDE2LCAxNiwgMTcsIDE1LCAxNSwgMTksIDE5LCAxMywgMTUsIDE1LCAxNiwgMTRdLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiB5ZWxsb3csXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB5ZWxsb3dUcixcclxuICAgICAgICBwb2ludFJhZGl1czowLFxyXG4gICAgICAgIHRlbnNpb246IC4zLFxyXG4gICAgICAgIGJvcmRlcldpZHRoOjEsXHJcbiAgICAgICAgZmlsbDp0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxyXG4gICAgICAgIGxhYmVsOiAnb3RoZXInLFxyXG4gICAgICAgIGRhdGE6IFs3LCA2LCA4LCA1LCA1LCA5LCA2LCA3LCAxMCwgNiwgNiwgNywgOSwgOSwgNywgNiwgOCwgNV0sXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IHJlZCxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHJlZFRyLFxyXG4gICAgICAgIHBvaW50UmFkaXVzOjAsXHJcbiAgICAgICAgdGVuc2lvbjogLjMsXHJcbiAgICAgICAgYm9yZGVyV2lkdGg6MSxcclxuICAgICAgICBmaWxsOnRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgbGFiZWxzOiBBcnJheS5mcm9tKHtsZW5ndGg6IDE4fSwgKF8sIGkpID0+IGkgKyAxKVxyXG4gIH1cclxuICBcclxuICBjb25zdCBleHBlbnNlc0NoYXJ0Q29uZmlnID0ge1xyXG4gICAgdHlwZTogJ2xpbmUnLFxyXG4gICAgZGF0YTpleHBlbnNlc0RhdGEsXHJcbiAgICBvcHRpb25zOiB7XHJcbiAgICAgIHJlc3BvbnNpdmU6dHJ1ZSxcclxuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzpmYWxzZSwgICAgXHJcbiAgICAgIHNjYWxlczoge1xyXG4gICAgICAgIHg6IHtcclxuICAgICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlLFxyXG4gICAgICAgICAgZGlzcGxheTpmYWxzZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHk6IHtcclxuICAgICAgICAgIHRpY2tzOntcclxuICAgICAgICAgICAgY2FsbGJhY2s6ZnVuY3Rpb24odmFsdWUsIGluZGV4LCB0aWNrcyl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJyQnICsgdmFsdWUgKyAnayc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBwbHVnaW5zOiB7XHJcbiAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLFxyXG4gICAgICAgICAgdGV4dDonTW9udGhseSBFeHBlbnNlcyBieSBDYXRlZ29yeSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTpmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHBsdWdpbnM6IFtsZWdlbmRQbHVnaW5dIFxyXG4gIH1cclxuICBuZXcgQ2hhcnQoXCJleHBlbnNlc1wiLCBleHBlbnNlc0NoYXJ0Q29uZmlnKTtcclxufSBcclxuXHJcblxyXG4iLCJpbXBvcnQgeyBibHVlVHIsIGJsdWUsIGdyZWVuLCBncmVlblRyfSBmcm9tICcuL2NvbG9ycydcclxuaW1wb3J0IHsgbGVnZW5kUGx1Z2luIH0gZnJvbSAnLi9sZWdlbmQtcGx1Z2luJztcclxuaW1wb3J0IHsgaXNIb21lUGFnZSB9IGZyb20gJy4vYmFzZSc7XHJcblxyXG5pZihpc0hvbWVQYWdlKXtcclxuICBjb25zdCBzYWxlc0RhdGEgPSB7XHJcbiAgICBsYWJlbHM6IFsnSXRhbHknLCAnR2VybWFueScsICdVSycsICdTcGFpbicsICdGcmFuY2UnLCAnUG9ydHVnYWwnLCAnb3RoZXInXSxcclxuICAgIGRhdGFzZXRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ21vbnRobHkgb25saW5lIHNhbGVzJyxcclxuICAgICAgICBkYXRhOlsxMjMsIDkyLCA3MCwgNjUsIDQ0LCAzMywgMjJdLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjpibHVlVHIsXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6Ymx1ZSxcclxuICAgICAgICBib3JkZXJXaWR0aDogMSxcclxuICAgICAgICBzdGFjazogdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6ICdtb250aGx5IGluIHN0b3JlIHNhbGVzJyxcclxuICAgICAgICBkYXRhOiBbODksIDYyLCA0MSwgMzUsIDI4LCAxNCwgMTJdLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZ3JlZW5UcixcclxuICAgICAgICBib3JkZXJDb2xvcjpncmVlbixcclxuICAgICAgICBib3JkZXJXaWR0aDogMSxcclxuICAgICAgICBzdGFjazogdHJ1ZVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbiAgY29uc3Qgc2FsZXNDb25maWcgPSB7XHJcbiAgICAgIHR5cGU6ICdiYXInLFxyXG4gICAgICBkYXRhOiBzYWxlc0RhdGEsXHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICBpbmRleEF4aXM6ICd5JyxcclxuICAgICAgICAgIHJlc3BvbnNpdmU6dHJ1ZSxcclxuICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86ZmFsc2UsXHJcbiAgICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgICB5OiB7XHJcbiAgICAgICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgeDoge1xyXG4gICAgICAgICAgICB0aWNrczp7XHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6ZnVuY3Rpb24odmFsdWUsIGluZGV4LCB0aWNrcyl7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAnJCcgKyB2YWx1ZSArICdrJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwbHVnaW5zOiB7XHJcbiAgICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgZGlzcGxheTogZmFsc2UsXHJcbiAgICAgICAgICAvLyAvLyB0ZXh0OiAoY3R4KSA9PiAnUG9pbnQgU3R5bGU6ICcgKyBjdHguY2hhcnQuZGF0YS5kYXRhc2V0c1swXS5wb2ludFN0eWxlLFxyXG4gICAgICAgICAgdGV4dDpcIk1vbnRobHkgU2FsZXMgcGVyIENvdW50cnlcIixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OmZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgICBjYWxsYmFja3M6IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBmdW5jdGlvbihjb250ZXh0KXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGNvbnRleHQuZGF0YXNldC5sYWJlbC5yZXBsYWNlKCdtb250aGx5ICcsICcnKS5yZXBsYWNlKCcgc2FsZXMnLCAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2xhYmVsfTogJCR7Y29udGV4dC5mb3JtYXR0ZWRWYWx1ZX1rYDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0aXRsZTpmdW5jdGlvbihjb250ZXh0KXtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRbMF0ubGFiZWwgKyAnIC0gbW9udGhseSBzYWxlcydcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBwbHVnaW5zOiBbbGVnZW5kUGx1Z2luXSBcclxuICB9O1xyXG5cclxuICBuZXcgQ2hhcnQoXCJzYWxlc1wiLCBzYWxlc0NvbmZpZyk7ICBcclxufVxyXG5cclxuXHJcblxyXG5cclxuIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibiIsImdldHRlciIsIl9fZXNNb2R1bGUiLCJkIiwiYSIsImRlZmluaXRpb24iLCJrZXkiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInVybFN0ciIsImxvY2F0aW9uIiwiaHJlZiIsInNwbGl0Iiwic3BsaWNlIiwiaXNIb21lUGFnZSIsImRhc2hib2FyZCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInRvcGJhciIsInNpZGViYXJUb2dnbGUiLCJtYWluIiwiYm9keSIsInNlYXJjaEZvcm0iLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInRhcmdldCIsImRpc3BsYXlTaWRlYmFyIiwiY2xhc3NMaXN0IiwidG9nZ2xlIiwicHJldmVudERlZmF1bHQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImxpbmsiLCJ3aW5kb3ciLCJjbG9zZXN0IiwiYWRkIiwiYWxleGFuZHJhSW1ncyIsImpvaG5JbWdzIiwia2FybEltZ3MiLCJrYXRlSW1ncyIsIm1hcnRoYUltZ3MiLCJtaW5JbWdzIiwicGV0ZXJJbWdzIiwicGhpbGlwSW1ncyIsInJvYmVydEltZ3MiLCJzYXJhaEltZ3MiLCJzZXJlbmFJbWdzIiwicGljUGxhY2Vob2xkZXJJbWdzIiwibG9nb0ltZ3MiLCJ3ZWJwYWNrSW1ncyIsImphdmFzY3JpcHRJbWdzIiwiY2hhcnRqc0ltZ3MiLCJzZXRJbWFnZXMiLCJpbWdOb2RlcyIsImltZ1VybCIsImltZyIsInNyYyIsInBpY1BsYWNlaG9sZGVyIiwibG9nbyIsImZ1bGxOYW1lIiwic2xpY2UiLCJuYW1lIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJsYXN0TmFtZSIsImFsdCIsImFsZXhhbmRyYSIsImpvaG4iLCJrYXJsIiwia2F0ZSIsIm1hcnRoYSIsIm1pbiIsInBldGVyIiwicGhpbGlwIiwicm9iZXJ0Iiwic2FyYWgiLCJzZXJlbmEiLCJzZXRJY29ucyIsIndlYnBhY2tMb2dvIiwiamF2YXNjcmlwdExvZ28iLCJjaGFydGpzTG9nbyIsInllbGxvdyIsInllbGxvd1RyIiwicGlua1RyIiwicmVkIiwicmVkVHIiLCJibHVlIiwiYmx1ZVRyIiwiZ3JlZW4iLCJncmVlblRyIiwic2hhcmtHcmF5IiwiY2xvdWR5R3JheSIsInRyZ05vZGVzIiwidGdzRGF0YSIsImNvbG9yIiwidmFsdWUiLCJjdXJyZW50IiwiZ29hbCIsImkiLCJsZW5ndGgiLCJ0cmciLCJ0cmdOb2RlIiwicGVyY2VudGFnZSIsImJhciIsImJhckluc2lkZSIsInN0eWxlIiwiYm9yZGVyQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ3aWR0aCIsImlubmVySFRNTCIsIm5vdGVEYXRhIiwiY29udGVudCIsImhlYWQiLCJub3RlVHJnIiwibm90ZSIsImRhdGEiLCJtb250aHMiLCJ0b2RheSIsIkRhdGUiLCJ5ZWFyIiwiZ2V0RnVsbFllYXIiLCJtb250aCIsInRvRGF0ZVN0cmluZyIsInN1YnN0cmluZyIsImN1cnJEYXkiLCJjdXJyWWVhciIsImN1cnJNb250aCIsImluZGV4T2YiLCJ5ZXN0ZXJkYXkiLCJzZXREYXRlIiwiZ2V0RGF0ZSIsInllc3RlcmRheURheSIsInllc3RlcmRheVllYXIiLCJ5ZXN0ZXJkYXlNb250aCIsInR3b0RheXNBZ28iLCJ0d29EYXlzQWdvRGF5IiwidHdvRGF5c0Fnb1llYXIiLCJ0d29EYXlzQWdvTW9udGgiLCJ0b21vcnJvdyIsInRvbW9ycm93RGF5IiwidG9tb3Jyb3dNb250aCIsImluVGhyZWVEYXlzIiwiaW5UaHJlZURheXNEYXkiLCJpblRocmVlRGF5c01vbnRoIiwiQXJyYXkiLCJmcm9tIiwiY3VycmVudE1vbnRoRWxlbWVudHMiLCJjdXJyZW50WWVhckVsZW1lbnRzIiwiY3VycmVudERhdGVFbGVtZW50cyIsInllc3RlcmRheURhdGVFbGVtZW50cyIsInR3b0RheXNBZ29EYXRlRWxlbWVudHMiLCJjdXJyZW50RGF0ZVNob3J0RWxlbWVudHMiLCJ5ZXN0ZXJkYXlEYXRlU2hvcnRFbGVtZW50cyIsImluVGhyZWVEYXlzRGF0ZVNob3J0RWxlbWVudHMiLCJ0b21vcnJvd0RhdGVTaG9ydEVsZW1lbnRzIiwibWFwIiwiY3VyciIsImZvcm1hdE1vbnRoIiwiam9pbiIsIm1vbnRoRGlnaXQiLCJjYWxlbmRlckJvZHkiLCJmaXJzdERheSIsImdldERheSIsIm1vbnRoTGVuZ3RoIiwiaW5jbHVkZXMiLCJkYXlzQXJyYXkiLCJwdXNoIiwicm93c051bWIiLCJNYXRoIiwiY2VpbCIsImluc2VydEFkamFjZW50SFRNTCIsImNlbGxzIiwiY2VsbCIsIkNoYXJ0IiwiZGVmYXVsdHMiLCJmb250IiwiZmFtaWx5IiwibGVnZW5kUGx1Z2luIiwiaWQiLCJhZnRlclVwZGF0ZSIsImNoYXJ0IiwiYXJncyIsIm9wdGlvbnMiLCJ0ZXN0IiwiaXRlbXMiLCJwbHVnaW5zIiwibGVnZW5kIiwibGFiZWxzIiwiZ2VuZXJhdGVMYWJlbHMiLCJjYW52YXMiLCJ1bCIsImZpcnN0Q2hpbGQiLCJyZW1vdmUiLCJpdGVtIiwibGkiLCJjcmVhdGVFbGVtZW50Iiwib25jbGljayIsInR5cGUiLCJjb25maWciLCJ0b2dnbGVEYXRhVmlzaWJpbGl0eSIsImluZGV4Iiwic2V0RGF0YXNldFZpc2liaWxpdHkiLCJkYXRhc2V0SW5kZXgiLCJpc0RhdGFzZXRWaXNpYmxlIiwidXBkYXRlIiwiYm94U3BhbiIsImJhY2tncm91bmQiLCJmaWxsU3R5bGUiLCJzdHJva2VTdHlsZSIsImNvbG9yQ2xhc3MiLCJhc3NpZ25Db2xvckNsYXNzIiwiaGlkZGVuIiwidGV4dENvbnRhaW5lciIsInRleHREZWNvcmF0aW9uIiwidGV4dCIsImNyZWF0ZVRleHROb2RlIiwiYXBwZW5kQ2hpbGQiLCJyZ2JDb2xvciIsIm1vbnRoc0FycmFuZ2VkIiwiY29uY2F0IiwicmV2ZXJzZSIsIm1haW5EYXRhIiwiaW5jb21lT25saW5lIiwibGFiZWwiLCJib3JkZXJXaWR0aCIsInN0YWNrIiwiaW5jb21lSW5TdG9yZSIsImV4cGVuc2VzIiwicHJvZml0IiwicG9pbnRTdHlsZSIsInBvaW50UmFkaXVzIiwicG9pbnRIb3ZlclJhZGl1cyIsInRlbnNpb24iLCJwcm9maXRHb2FsIiwiZmlsbCIsIm1haW5DaGFydERhdGEiLCJkYXRhc2V0cyIsInRpdGxlIiwiZGlzcGxheSIsInRvb2x0aXAiLCJjYWxsYmFja3MiLCJjb250ZXh0IiwiZGF0YXNldCIsImZvcm1hdHRlZFZhbHVlIiwicmVzcG9uc2l2ZSIsIm1haW50YWluQXNwZWN0UmF0aW8iLCJzY2FsZXMiLCJ5IiwiYmVnaW5BdFplcm8iLCJ0aWNrcyIsImNhbGxiYWNrIiwiaW52b2ljZXNEYXRhIiwidmFsdWVzIiwiYmFyQ29sb3JzIiwiYm9yZGVyQ29sb3JzIiwiaW52b2ljZXNMZWdlbmRCb3hlcyIsImluZGV4QXhpcyIsIngiLCJyZXBsYWNlIiwiZXhwZW5zZXNEYXRhIiwiXyJdLCJzb3VyY2VSb290IjoiIn0=