1/*! For license information please see main.bundle.js.LICENSE.txt */ 2(()=>{var e={106(){!function(){"use strict";function e(){const e=document.querySelector(".back-to-top");if(!e)return;e.hidden=!1;let t=!1;function i(){t=!1;const i=Math.max(400,.75*window.innerHeight);e.classList.toggle("is-visible",window.scrollY>i)}function n(){t||(t=!0,window.requestAnimationFrame(i))}window.addEventListener("scroll",n,{passive:!0}),window.addEventListener("resize",n,{passive:!0}),e.addEventListener("click",e=>{e.preventDefault();const t=window.matchMedia("(prefers-reduced-motion: reduce)").matches;window.scrollTo({top:0,behavior:t?"auto":"smooth"});const i=document.querySelector(".skip-link");i&&i.focus()}),i()}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}()},823(e){e.exports=function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,n(s.key),s)}}function i(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function n(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}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)}var o=Date.now();function r(){var e={},t=!0,i=0,n=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],i++);for(var s=function(i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t&&"[object Object]"===Object.prototype.toString.call(i[n])?e[n]=r(!0,e[n],i[n]):e[n]=i[n])};i<n;i++)s(arguments[i]);return e}function a(e,t){if((A(e)||e===window||e===document)&&(e=[e]),C(e)||k(e)||(e=[e]),0!=O(e))if(C(e)&&!k(e))for(var i=e.length,n=0;n<i&&!1!==t.call(e[n],e[n],n,e);n++);else if(k(e))for(var s in e)if(L(e,s)&&!1===t.call(e[s],e[s],s,e))break}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e[o]=e[o]||[],s={all:n,evt:null,found:null};return t&&i&&O(n)>0&&a(n,function(e,n){if(e.eventName==t&&e.fn.toString()==i.toString())return s.found=!0,s.evt=n,!1}),s}function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.onElement,n=t.withCallback,s=t.avoidDuplicate,o=void 0===s||s,r=t.once,c=void 0!==r&&r,u=t.useCapture,d=void 0!==u&&u,h=arguments.length>2?arguments[2]:void 0,f=i||[];function p(e){x(n)&&n.call(h,e,this),c&&p.destroy()}return S(f)&&(f=document.querySelectorAll(f)),p.destroy=function(){a(f,function(t){var i=l(t,e,p);i.found&&i.all.splice(i.evt,1),t.removeEventListener&&t.removeEventListener(e,p,d)})},a(f,function(t){var i=l(t,e,p);(t.addEventListener&&o&&!i.found||!o)&&(t.addEventListener(e,p,d),i.all.push({eventName:e,fn:p}))}),p}function u(e,t){a(t.split(" "),function(t){return e.classList.add(t)})}function d(e,t){a(t.split(" "),function(t){return e.classList.remove(t)})}function h(e,t){return e.classList.contains(t)}function f(e,t){for(;e!==document.body;){if(!(e=e.parentElement))return!1;if("function"==typeof e.matches?e.matches(t):e.msMatchesSelector(t))return e}}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||""===t)return!1;if("none"===t)return x(i)&&i(),!1;var n=function(){var e,t=document.createElement("fakeelement"),i={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}(),s=t.split(" ");a(s,function(t){u(e,"g"+t)}),c(n,{onElement:e,avoidDuplicate:!1,once:!0,withCallback:function(e,t){a(s,function(e){d(t,"g"+e)}),x(i)&&i()}})}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===t)return e.style.webkitTransform="",e.style.MozTransform="",e.style.msTransform="",e.style.OTransform="",e.style.transform="",!1;e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t,e.style.transform=t}function m(e){e.style.display="block"}function v(e){e.style.display="none"}function y(e){var t=document.createDocumentFragment(),i=document.createElement("div");for(i.innerHTML=e;i.firstChild;)t.appendChild(i.firstChild);return t}function b(){return{width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}}function _(e,t,i,n){if(e())t();else{var s;i||(i=100);var o=setInterval(function(){e()&&(clearInterval(o),s&&clearTimeout(s),t())},i);n&&(s=setTimeout(function(){clearInterval(o)},n))}}function w(e,t,i){if(P(e))console.error("Inject assets error");else if(x(t)&&(i=t,t=!1),S(t)&&t in window)x(i)&&i();else{var n;if(-1!==e.indexOf(".css")){if((n=document.querySelectorAll('link[href="'+e+'"]'))&&n.length>0)return void(x(i)&&i());var s=document.getElementsByTagName("head")[0],o=s.querySelectorAll('link[rel="stylesheet"]'),r=document.createElement("link");return r.rel="stylesheet",r.type="text/css",r.href=e,r.media="all",o?s.insertBefore(r,o[0]):s.appendChild(r),void(x(i)&&i())}if((n=document.querySelectorAll('script[src="'+e+'"]'))&&n.length>0){if(x(i)){if(S(t))return _(function(){return void 0!==window[t]},function(){i()}),!1;i()}}else{var a=document.createElement("script");a.type="text/javascript",a.src=e,a.onload=function(){if(x(i)){if(S(t))return _(function(){return void 0!==window[t]},function(){i()}),!1;i()}},document.body.appendChild(a)}}}function E(){return"navigator"in window&&window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i)}function x(e){return"function"==typeof e}function S(e){return"string"==typeof e}function A(e){return!(!e||!e.nodeType||1!=e.nodeType)}function T(e){return Array.isArray(e)}function C(e){return e&&e.length&&isFinite(e.length)}function k(e){return"object"===s(e)&&null!=e&&!x(e)&&!T(e)}function P(e){return null==e}function L(e,t){return null!==e&&hasOwnProperty.call(e,t)}function O(e){if(k(e)){if(e.keys)return e.keys().length;var t=0;for(var i in e)L(e,i)&&t++;return t}return e.length}function M(e){return!isNaN(parseFloat(e))&&isFinite(e)}function I(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=document.querySelectorAll(".gbtn[data-taborder]:not(.disabled)");if(!t.length)return!1;if(1==t.length)return t[0];"string"==typeof e&&(e=parseInt(e));var i=[];a(t,function(e){i.push(e.getAttribute("data-taborder"))});var n=Math.max.apply(Math,i.map(function(e){return parseInt(e)})),s=e<0?1:e+1;s>n&&(s="1");var o=i.filter(function(e){return e>=parseInt(s)}),r=o.sort()[0];return document.querySelector('.gbtn[data-taborder="'.concat(r,'"]'))}var D=i(function t(i,n){var s=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;
vendor: 13,813 bytes, line 2
2if(e(this,t),this.img=i,this.slide=n,this.onclose=o,this.img.setZoomEvents)return!1;this.active=!1,this.zoomedIn=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.img.addEventListener("mousedown",function(e){return s.dragStart(e)},!1),this.img.addEventListener("mouseup",function(e){return s.dragEnd(e)},!1),this.img.addEventListener("mousemove",function(e){return s.drag(e)},!1),this.img.addEventListener("click",function(e){return s.slide.classList.contains("dragging-nav")?(s.zoomOut(),!1):s.zoomedIn?void(s.zoomedIn&&!s.dragging&&s.zoomOut()):s.zoomIn()},!1),this.img.setZoomEvents=!0},[{key:"zoomIn",value:function(){var e=this.widowWidth();if(!(this.zoomedIn||e<=768)){var t=this.img;if(t.setAttribute("data-style",t.getAttribute("style")),t.style.maxWidth=t.naturalWidth+"px",t.style.maxHeight=t.naturalHeight+"px",t.naturalWidth>e){var i=e/2-t.naturalWidth/2;this.setTranslate(this.img.parentNode,i,0)}this.slide.classList.add("zoomed"),this.zoomedIn=!0}}},{key:"zoomOut",value:function(){this.img.parentNode.setAttribute("style",""),this.img.setAttribute("style",this.img.getAttribute("data-style")),this.slide.classList.remove("zoomed"),this.zoomedIn=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.onclose&&"function"==typeof this.onclose&&this.onclose()}},{key:"dragStart",value:function(e){e.preventDefault(),this.zoomedIn?("touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset),e.target===this.img&&(this.active=!0,this.img.classList.add("dragging"))):this.active=!1}},{key:"dragEnd",value:function(e){var t=this;e.preventDefault(),this.initialX=this.currentX,this.initialY=this.currentY,this.active=!1,setTimeout(function(){t.dragging=!1,t.img.isDragging=!1,t.img.classList.remove("dragging")},100)}},{key:"drag",value:function(e){this.active&&(e.preventDefault(),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.img.isDragging=!0,this.dragging=!0,this.setTranslate(this.img,this.currentX,this.currentY))}},{key:"onMove",value:function(e){if(this.zoomedIn){var t=e.clientX-this.img.naturalWidth/2,i=e.clientY-this.img.naturalHeight/2;this.setTranslate(this.img,t,i)}}},{key:"setTranslate",value:function(e,t,i){e.style.transform="translate3d("+t+"px, "+i+"px, 0)"}},{key:"widowWidth",value:function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}}]),N=i(function t(){var i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t);var s=n.dragEl,o=n.toleranceX,r=void 0===o?40:o,a=n.toleranceY,l=void 0===a?65:a,c=n.slide,u=void 0===c?null:c,d=n.instance,h=void 0===d?null:d;this.el=s,this.active=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.direction=null,this.lastDirection=null,this.toleranceX=r,this.toleranceY=l,this.toleranceReached=!1,this.dragContainer=this.el,this.slide=u,this.instance=h,this.el.addEventListener("mousedown",function(e){return i.dragStart(e)},!1),this.el.addEventListener("mouseup",function(e){return i.dragEnd(e)},!1),this.el.addEventListener("mousemove",function(e){return i.drag(e)},!1)},[{key:"dragStart",value:function(e){if(this.slide.classList.contains("zoomed"))this.active=!1;else{"touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset);var t=e.target.nodeName.toLowerCase();e.target.classList.contains("nodrag")||f(e.target,".nodrag")||-1!==["input","select","textarea","button","a"].indexOf(t)?this.active=!1:(e.preventDefault(),(e.target===this.el||"img"!==t&&f(e.target,".gslide-inline"))&&(this.active=!0,this.el.classList.add("dragging"),this.dragContainer=f(e.target,".ginner-container")))}}},{key:"dragEnd",value:function(e){var t=this;e&&e.preventDefault(),this.initialX=0,this.initialY=0,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.active=!1,this.doSlideChange&&(this.instance.preventOutsideClick=!0,"right"==this.doSlideChange&&this.instance.prevSlide(),"left"==this.doSlideChange&&this.instance.nextSlide()),this.doSlideClose&&this.instance.close(),this.toleranceReached||this.setTranslate(this.dragContainer,0,0,!0),setTimeout(function(){t.instance.preventOutsideClick=!1,t.toleranceReached=!1,t.lastDirection=null,t.dragging=!1,t.el.isDragging=!1,t.el.classList.remove("dragging"),t.slide.classList.remove("dragging-nav"),t.dragContainer.style.transform="",t.dragContainer.style.transition=""},100)}},{key:"drag",value:function(e){if(this.active){e.preventDefault(),this.slide.classList.add("dragging-nav"),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.el.isDragging=!0,this.dragging=!0,this.doSlideChange=!1,this.doSlideClose=!1;var t=Math.abs(this.currentX),i=Math.abs(this.currentY);if(t>0&&t>=Math.abs(this.currentY)&&(!this.lastDirection||"x"==this.lastDirection)){this.yOffset=0,this.lastDirection="x",this.setTranslate(this.dragContainer,this.currentX,0);var n=this.shouldChange();if(!this.instance.settings.dragAutoSnap&&n&&(this.doSlideChange=n),this.instance.settings.dragAutoSnap&&n)return this.instance.preventOutsideClick=!0,this.toleranceReached=!0,this.active=!1,this.instance.preventOutsideClick=!0,this.dragEnd(null),"right"==n&&this.instance.prevSlide(),void("left"==n&&this.instance.nextSlide())}if(this.toleranceY>0&&i>0&&i>=t&&(!this.lastDirection||"y"==this.lastDirection)){this.xOffset=0,this.lastDirection="y",this.setTranslate(this.dragContainer,0,this.currentY);var s=this.shouldClose();return!this.instance.settings.dragAutoSnap&&s&&(this.doSlideClose=!0),void(this.instance.settings.dragAutoSnap&&s&&this.instance.close())}}}},{key:"shouldChange",value:function(){var e=!1;if(Math.abs(this.currentX)>=this.toleranceX){var t=this.currentX>0?"right":"left";("left"==t&&this.slide!==this.slide.parentNode.lastChild||"right"==t&&this.slide!==this.slide.parentNode.firstChild)&&(e=t)}return e}},{key:"shouldClose",value:function(){var e=!1;return Math.abs(this.currentY)>=this.toleranceY&&(e=!0),e}},{key:"setTranslate",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.style.transition=n?"all .2s ease":"",e.style.transform="translate3d(".concat(t,"px, ").concat(i,"px, 0)")}}]);function V(e,t,i,n){var s=this,o=e.querySelector(".ginner-container"),r="gvideo"+i,a=e.querySelector(".gslide-media"),l=this.getAllPlayers();u(o,"gvideo-container"),a.insertBefore(y('<div class="gvideo-wrapper"></div>'),a.firstChild);var c=e.querySelector(".gvideo-wrapper");w(this.settings.plyr.css,"Plyr");var d=t.href,h=null==t?void 0:t.videoProvider,f=!1;a.style.maxWidth=t.width,w(this.settings.plyr.js,"Plyr",function(){if(!h&&d.match(/vimeo\.com\/([0-9]*)/)&&(h="vimeo"),!h&&(d.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||d.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||d.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/)||d.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/))&&(h="youtube"),"local"===h||!h){h="local";var o='<video id="'+r+'" ';o+='style="background:#000; max-width: '.concat(t.width,';" '),o+='preload="metadata" ',o+='x-webkit-airplay="allow" ',o+="playsinline ",o+="controls ",o+='class="gvideo-local">',o+='<source src="'.concat(d,'">'),f=y(o+="</video>")}var a=f||y('<div id="'.concat(r,'" data-plyr-provider="').concat(h,'" data-plyr-embed-id="').concat(d,'"></div>'));u(c,"".concat(h,"-video gvideo")),c.appendChild(a),c.setAttribute("data-id",r),c.setAttribute("data-index",i);var p=L(s.settings.plyr,"config")?s.settings.plyr.config:{},g=new Plyr("#"+r,p);g.on("ready",function(e){l[r]=e.detail.plyr,x(n)&&n()}),_(function(){return e.querySelector("iframe")&&"true"==e.querySelector("iframe").dataset.ready},function(){s.resize(e)}),g.on("enterfullscreen",$),g.on("exitfullscreen",$)})}function $(e){var t=f(e.target,".gslide-media");"enterfullscreen"===e.type&&u(t,"fullscreen"),"exitfullscreen"===e.type&&d(t,"fullscreen")}function j(e,t,i,n){var s,o=this,r=e.querySelector(".gslide-media"),a=!(!L(t,"href")||!t.href)&&t.href.split("#").pop().trim(),l=!(!L(t,"content")||!t.content)&&t.content;if(l&&(S(l)&&(s=y('<div class="ginlined-content">'.concat(l,"</div>"))),A(l))){"none"==l.style.display&&(l.style.display="block");var d=document.createElement("div");d.className="ginlined-content",d.appendChild(l),s=d}if(a){var h=document.getElementById(a);if(!h)return!1;var f=h.cloneNode(!0);f.style.height=t.height,f.style.maxWidth=t.width,u(f,"ginlined-content"),s=f}if(!s)return console.error("Unable to append inline slide content",t),!1;r.style.height=t.height,r.style.width=t.width,r.appendChild(s),this.events["inlineclose"+a]=c("click",{onElement:r.querySelectorAll(".gtrigger-close"),withCallback:function(e){e.preventDefault(),o.close()}}),x(n)&&n()}function B(e,t,i,n){var s=e.querySelector(".gslide-media"),o=function(e){var t=e.url,i=e.allow,n=e.callback,s=e.appendTo,o=document.createElement("iframe");return o.className="vimeo-video gvideo",o.src=t,o.style.width="100%",o.style.height="100%",i&&o.setAttribute("allow",i),o.onload=function(){o.onload=null,u(o,"node-ready"),x(n)&&n()},s&&s.appendChild(o),o}({url:t.href,callback:n});s.parentNode.style.maxWidth=t.width,s.parentNode.style.height=t.height,s.appendChild(o)}var F=i(function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),this.defaults={href:"",sizes:"",srcset:"",title:"",type:"",videoProvider:"",description:"",alt:"",descPosition:"bottom",effect:"",width:"",height:"",content:!1,zoomable:!0,draggable:!0},k(i)&&(this.defaults=r(this.defaults,i))},[{key:"sourceType",value:function(e){var t=e;return null!==(e=e.toLowerCase()).match(/\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/)?"image":e.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||e.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||e.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/)||e.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/)||e.match(/vimeo\.com\/([0-9]*)/)||null!==e.match(/\.(mp4|ogg|webm|mov)/)?"video":null!==e.match(/\.(mp3|wav|wma|aac|ogg)/)?"audio":e.indexOf("#")>-1&&""!==t.split("#").pop().trim()?"inline":e.indexOf("goajax=true")>-1?"ajax":"external"}},{key:"parseConfig",value:function(e,t){var i=this,n=r({descPosition:t.descPosition},this.defaults);if(k(e)&&!A(e)){L(e,"type")||(L(e,"content")&&e.content?e.type="inline":L(e,"href")&&(e.type=this.sourceType(e.href)));var s=r(n,e);return this.setSize(s,t),s}var o="",l=e.getAttribute("data-glightbox"),c=e.nodeName.toLowerCase();if("a"===c&&(o=e.href),"img"===c&&(o=e.src,n.alt=e.alt),n.href=o,a(n,function(s,o){L(t,o)&&"width"!==o&&(n[o]=t[o]);var r=e.dataset[o];P(r)||(n[o]=i.sanitizeValue(r))}),n.content&&(n.type="inline"),!n.type&&o&&(n.type=this.sourceType(o)),P(l)){if(!n.title&&"a"==c){var u=e.title;P(u)||""===u||(n.title=u)}if(!n.title&&"img"==c){var d=e.alt;P(d)||""===d||(n.title=d)}}else{var h=[];a(n,function(e,t){h.push(";\\s?"+t)}),h=h.join("\\s?:|"),""!==l.trim()&&a(n,function(e,t){var s=l,o=new RegExp("s?"+t+"s?:s?(.*?)("+h+"s?:|$)"),r=s.match(o);if(r&&r.length&&r[1]){var a=r[1].trim().replace(/;\s*$/,"");n[t]=i.sanitizeValue(a)}})}if(n.description&&"."===n.description.substring(0,1)){var f;try{f=document.querySelector(n.description).innerHTML}catch(e){if(!(e instanceof DOMException))throw e}f&&(n.description=f)}if(!n.description){var p=e.querySelector(".glightbox-desc");p&&(n.description=p.innerHTML)}return this.setSize(n,t,e),this.slideConfig=n,n}},{key:"setSize",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n="video"==e.type?this.checkSize(t.videosWidth):this.checkSize(t.width),s=this.checkSize(t.height);return e.width=L(e,"width")&&""!==e.width?this.checkSize(e.width):n,e.height=L(e,"height")&&""!==e.height?this.checkSize(e.height):s,i&&"image"==e.type&&(e._hasCustomWidth=!!i.dataset.width,e._hasCustomHeight=!!i.dataset.height),e}},{key:"checkSize",value:function(e){return M(e)?"".concat(e,"px"):e}},{key:"sanitizeValue",value:function(e){return"true"!==e&&"false"!==e?e:"true"===e}}]),q=i(function t(i,n,s){e(this,t),this.element=i,this.instance=n,this.index=s},[{key:"setContent",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(h(t,"loaded"))return!1;var n=this.instance.settings,s=this.slideConfig,o=E();x(n.beforeSlideLoad)&&n.beforeSlideLoad({index:this.index,slide:t,player:!1});var r=s.type,a=s.descPosition,l=t.querySelector(".gslide-media"),c=t.querySelector(".gslide-title"),d=t.querySelector(".gslide-desc"),f=t.querySelector(".gdesc-inner"),p=i,g="gSlideTitle_"+this.index,m="gSlideDesc_"+this.index;if(x(n.afterSlideLoad)&&(p=function(){x(i)&&i(),n.afterSlideLoad({index:e.index,slide:t,player:e.instance.getSlidePlayerInstance(e.index)})}),""==s.title&&""==s.description?f&&f.parentNode.parentNode.removeChild(f.parentNode):(c&&""!==s.title?(c.id=g,c.innerHTML=s.title):c.parentNode.removeChild(c),d&&""!==s.description?(d.id=m,o&&n.moreLength>
20?(s.smallDescription=this.slideShortDesc(s.description,n.moreLength,n.moreText),d.innerHTML=s.smallDescription,this.descriptionEvents(d,s)):d.innerHTML=s.description):d.parentNode.removeChild(d),u(l.parentNode,"desc-".concat(a)),u(f.parentNode,"description-".concat(a))),u(l,"gslide-".concat(r)),u(t,"loaded"),"video"!==r){if("external"!==r)return"inline"===r?(j.apply(this.instance,[t,s,this.index,p]),void(s.draggable&&new N({dragEl:t.querySelector(".gslide-inline"),toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:this.instance}))):void("image"!==r?x(p)&&p():function(e,t,i,n){var s=e.querySelector(".gslide-media"),o=new Image,r="gSlideTitle_"+i,a="gSlideDesc_"+i;o.addEventListener("load",function(){x(n)&&n()},!1),o.src=t.href,""!=t.sizes&&""!=t.srcset&&(o.sizes=t.sizes,o.srcset=t.srcset),o.alt="",P(t.alt)||""===t.alt||(o.alt=t.alt),""!==t.title&&o.setAttribute("aria-labelledby",r),""!==t.description&&o.setAttribute("aria-describedby",a),t.hasOwnProperty("_hasCustomWidth")&&t._hasCustomWidth&&(o.style.width=t.width),t.hasOwnProperty("_hasCustomHeight")&&t._hasCustomHeight&&(o.style.height=t.height),s.insertBefore(o,s.firstChild)}(t,s,this.index,function(){var i=t.querySelector("img");s.draggable&&new N({dragEl:i,toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:e.instance}),s.zoomable&&i.naturalWidth>i.offsetWidth&&(u(i,"zoomable"),new D(i,t,function(){e.instance.resize()})),x(p)&&p()}));B.apply(this,[t,s,this.index,p])}else V.apply(this.instance,[t,s,this.index,p])}}
vendor: 21,007 bytes, line 2
2,{key:"slideShortDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=document.createElement("div");n.innerHTML=e;var s=i;if((e=n.innerText.trim()).length<=t)return e;var o=e.substr(0,t-1);return s?(n=null,o+'... <a href="#" class="desc-more">'+i+"</a>"):o}},{key:"descriptionEvents",value:function(e,t){var i=this,n=e.querySelector(".desc-more");if(!n)return!1;c("click",{onElement:n,withCallback:function(e,n){e.preventDefault();var s=document.body,o=f(n,".gslide-desc");if(!o)return!1;o.innerHTML=t.description,u(s,"gdesc-open");var r=c("click",{onElement:[s,f(o,".gslide-description")],withCallback:function(e,n){"a"!==e.target.nodeName.toLowerCase()&&(d(s,"gdesc-open"),u(s,"gdesc-closed"),o.innerHTML=t.smallDescription,i.descriptionEvents(o,t),setTimeout(function(){d(s,"gdesc-closed")},400),r.destroy())}})}})}},{key:"create",value:function(){return y(this.instance.settings.slideHTML)}},{key:"getConfig",value:function(){A(this.element)||this.element.hasOwnProperty("draggable")||(this.element.draggable=this.instance.settings.draggable);var e=new F(this.instance.settings.slideExtraAttributes);return this.slideConfig=e.parseConfig(this.element,this.instance.settings),this.slideConfig}}]);function z(e){return Math.sqrt(e.x*e.x+e.y*e.y)}var H=i(function t(i){e(this,t),this.handlers=[],this.el=i},[{key:"add",value:function(e){this.handlers.push(e)}},{key:"del",value:function(e){e||(this.handlers=[]);for(var t=this.handlers.length;t>=0;t--)this.handlers[t]===e&&this.handlers.splice(t,1)}},{key:"dispatch",value:function(){for(var e=0,t=this.handlers.length;e<t;e++){var i=this.handlers[e];"function"==typeof i&&i.apply(this.el,arguments)}}}]);function R(e,t){var i=new H(e);return i.add(t),i}var Y=i(function t(i,n){e(this,t),this.element="string"==typeof i?document.querySelector(i):i,this.start=this.start.bind(this),this.move=this.move.bind(this),this.end=this.end.bind(this),this.cancel=this.cancel.bind(this),this.element.addEventListener("touchstart",this.start,!1),this.element.addEventListener("touchmove",this.move,!1),this.element.addEventListener("touchend",this.end,!1),this.element.addEventListener("touchcancel",this.cancel,!1),this.preV={x:null,y:null},this.pinchStartLen=null,this.zoom=1,this.isDoubleTap=!1;var s=function(){};this.rotate=R(this.element,n.rotate||s),this.touchStart=R(this.element,n.touchStart||s),this.multipointStart=R(this.element,n.multipointStart||s),this.multipointEnd=R(this.element,n.multipointEnd||s),this.pinch=R(this.element,n.pinch||s),this.swipe=R(this.element,n.swipe||s),this.tap=R(this.element,n.tap||s),this.doubleTap=R(this.element,n.doubleTap||s),this.longTap=R(this.element,n.longTap||s),this.singleTap=R(this.element,n.singleTap||s),this.pressMove=R(this.element,n.pressMove||s),this.twoFingerPressMove=R(this.element,n.twoFingerPressMove||s),this.touchMove=R(this.element,n.touchMove||s),this.touchEnd=R(this.element,n.touchEnd||s),this.touchCancel=R(this.element,n.touchCancel||s),this.translateContainer=this.element,this._cancelAllHandler=this.cancelAll.bind(this),window.addEventListener("scroll",this._cancelAllHandler),this.delta=null,this.last=null,this.now=null,this.tapTimeout=null,this.singleTapTimeout=null,this.longTapTimeout=null,this.swipeTimeout=null,this.x1=this.x2=this.y1=this.y2=null,this.preTapPosition={x:null,y:null}},[{key:"start",value:function(e){if(e.touches)if(e.target&&e.target.nodeName&&["a","button","input"].indexOf(e.target.nodeName.toLowerCase())>=0)console.log("ignore drag for this touched element",e.target.nodeName.toLowerCase());else{this.now=Date.now(),this.x1=e.touches[0].pageX,this.y1=e.touches[0].pageY,this.delta=this.now-(this.last||this.now),this.touchStart.dispatch(e,this.element),null!==this.preTapPosition.x&&(this.isDoubleTap=this.delta>0&&this.delta<=250&&Math.abs(this.preTapPosition.x-this.x1)<30&&Math.abs(this.preTapPosition.y-this.y1)<30,this.isDoubleTap&&clearTimeout(this.singleTapTimeout)),this.preTapPosition.x=this.x1,this.preTapPosition.y=this.y1,this.last=this.now;var t=this.preV;if(e.touches.length>1){this._cancelLongTap(),this._cancelSingleTap();var i={x:e.touches[1].pageX-this.x1,y:e.touches[1].pageY-this.y1};t.x=i.x,t.y=i.y,this.pinchStartLen=z(t),this.multipointStart.dispatch(e,this.element)}this._preventTap=!1,this.longTapTimeout=setTimeout(function(){this.longTap.dispatch(e,this.element),this._preventTap=!0}.bind(this),750)}}},{key:"move",value:function(e){if(e.touches){var t=this.preV,i=e.touches.length,n=e.touches[0].pageX,s=e.touches[0].pageY;if(this.isDoubleTap=!1,i>1){var o=e.touches[1].pageX,r=e.touches[1].pageY,a={x:e.touches[1].pageX-n,y:e.touches[1].pageY-s};null!==t.x&&(this.pinchStartLen>0&&(e.zoom=z(a)/this.pinchStartLen,this.pinch.dispatch(e,this.element)),e.angle=function(e,t){var i=function(e,t){var i=z(e)*z(t);if(0===i)return 0;var n=function(e,t){return e.x*t.x+e.y*t.y}(e,t)/i;return n>1&&(n=1),Math.acos(n)}(e,t);return function(e,t){return e.x*t.y-t.x*e.y}(e,t)>0&&(i*=-1),180*i/Math.PI}(a,t),this.rotate.dispatch(e,this.element)),t.x=a.x,t.y=a.y,null!==this.x2&&null!==this.sx2?(e.deltaX=(n-this.x2+o-this.sx2)/2,e.deltaY=(s-this.y2+r-this.sy2)/2):(e.deltaX=0,e.deltaY=0),this.twoFingerPressMove.dispatch(e,this.element),this.sx2=o,this.sy2=r}else{if(null!==this.x2){e.deltaX=n-this.x2,e.deltaY=s-this.y2;var l=Math.abs(this.x1-this.x2),c=Math.abs(this.y1-this.y2);(l>10||c>10)&&(this._preventTap=!0)}else e.deltaX=0,e.deltaY=0;this.pressMove.dispatch(e,this.element)}this.touchMove.dispatch(e,this.element),this._cancelLongTap(),this.x2=n,this.y2=s,i>1&&e.preventDefault()}}},{key:"end",value:function(e){if(e.changedTouches){this._cancelLongTap();var t=this;e.touches.length<2&&(this.multipointEnd.dispatch(e,this.element),this.sx2=this.sy2=null),this.x2&&Math.abs(this.x1-this.x2)>30||this.y2&&Math.abs(this.y1-this.y2)>30?(e.direction=this._swipeDirection(this.x1,this.x2,this.y1,this.y2),this.swipeTimeout=setTimeout(function(){t.swipe.dispatch(e,t.element)},0)):(this.tapTimeout=setTimeout(function(){t._preventTap||t.tap.dispatch(e,t.element),t.isDoubleTap&&(t.doubleTap.dispatch(e,t.element),t.isDoubleTap=!1)},0),t.isDoubleTap||(t.singleTapTimeout=setTimeout(function(){t.singleTap.dispatch(e,t.element)},250))),this.touchEnd.dispatch(e,this.element),this.preV.x=0,this.preV.y=0,this.zoom=1,this.pinchStartLen=null,this.x1=this.x2=this.y1=this.y2=null}}},{key:"cancelAll",value:function(){this._preventTap=!0,clearTimeout(this.singleTapTimeout),clearTimeout(this.tapTimeout),clearTimeout(this.longTapTimeout),clearTimeout(this.swipeTimeout)}},{key:"cancel",value:function(e){this.cancelAll(),this.touchCancel.dispatch(e,this.element)}},{key:"_cancelLongTap",value:function(){clearTimeout(this.longTapTimeout)}},{key:"_cancelSingleTap",value:function(){clearTimeout(this.singleTapTimeout)}},{key:"_swipeDirection",value:function(e,t,i,n){return Math.abs(e-t)>=Math.abs(i-n)?e-t>0?"Left":"Right":i-n>0?"Up":"Down"}},{key:"on",value:function(e,t){this[e]&&this[e].add(t)}},{key:"off",value:function(e,t){this[e]&&this[e].del(t)}},{key:"destroy",value:function(){return this.singleTapTimeout&&clearTimeout(this.singleTapTimeout),this.tapTimeout&&clearTimeout(this.tapTimeout),this.longTapTimeout&&clearTimeout(this.longTapTimeout),this.swipeTimeout&&clearTimeout(this.swipeTimeout),this.element.removeEventListener("touchstart",this.start),this.element.removeEventListener("touchmove",this.move),this.element.removeEventListener("touchend",this.end),this.element.removeEventListener("touchcancel",this.cancel),this.rotate.del(),this.touchStart.del(),this.multipointStart.del(),this.multipointEnd.del(),this.pinch.del(),this.swipe.del(),this.tap.del(),this.doubleTap.del(),this.longTap.del(),this.singleTap.del(),this.pressMove.del(),this.twoFingerPressMove.del(),this.touchMove.del(),this.touchEnd.del(),this.touchCancel.del(),this.preV=this.pinchStartLen=this.zoom=this.isDoubleTap=this.delta=this.last=this.now=this.tapTimeout=this.singleTapTimeout=this.longTapTimeout=this.swipeTimeout=this.x1=this.x2=this.y1=this.y2=this.preTapPosition=this.rotate=this.touchStart=this.multipointStart=this.multipointEnd=this.pinch=this.swipe=this.tap=this.doubleTap=this.longTap=this.singleTap=this.pressMove=this.touchMove=this.touchEnd=this.touchCancel=this.twoFingerPressMove=null,window.removeEventListener("scroll",this._cancelAllHandler),null}}]);function W(e){var t=function(){var e,t=document.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}(),i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,n=h(e,"gslide-media")?e:e.querySelector(".gslide-media"),s=f(n,".ginner-container"),o=e.querySelector(".gslide-description");i>769&&(n=s),u(n,"greset"),g(n,"translate3d(0, 0, 0)"),c(t,{onElement:n,once:!0,withCallback:function(e,t){d(n,"greset")}}),n.style.opacity="",o&&(o.style.opacity="")}var X=E(),U=null!==E()||void 0!==document.createTouch||"ontouchstart"in window||"onmsgesturechange"in window||navigator.msMaxTouchPoints,G=document.getElementsByTagName("html")[0],Z={selector:".glightbox",elements:null,skin:"clean",theme:"clean",closeButton:!0,startAt:null,autoplayVideos:!0,autofocusVideos:!0,descPosition:"bottom",width:"900px",height:"506px",videosWidth:"960px",beforeSlideChange:null,afterSlideChange:null,beforeSlideLoad:null,afterSlideLoad:null,slideInserted:null,slideRemoved:null,slideExtraAttributes:null,onOpen:null,onClose:null,loop:!1,zoomable:!0,draggable:!0,dragAutoSnap:!1,dragToleranceX:40,dragToleranceY:65,preload:!0,oneSlidePerOpen:!1,touchNavigation:!0,touchFollowAxis:!0,keyboardNavigation:!0,closeOnOutsideClick:!0,plugins:!1,plyr:{css:"https://cdn.plyr.io/3.6.12/plyr.css",js:"https://cdn.plyr.io/3.6.12/plyr.js",config:{ratio:"16:9",fullscreen:{enabled:!0,iosNative:!0},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3},vimeo:{byline:!1,portrait:!1,title:!1,transparent:!1}}},openEffect:"zoom",closeEffect:"zoom",slideEffect:"slide",moreText:"See more",moreLength:60,cssEfects:{fade:{in:"fadeIn",out:"fadeOut"},zoom:{in:"zoomIn",out:"zoomOut"},slide:{in:"slideInRight",out:"slideOutLeft"},slideBack:{in:"slideInLeft",out:"slideOutRight"},none:{in:"none",out:"none"}},svg:{close:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z"/></g></g><g><g><path d="M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z"/></g></g></svg>',next:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"> <g><path d="M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z"/></g></svg>',prev:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"><g><path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/></g></svg>'},slideHTML:'<div class="gslide">\n <div class="gslide-inner-content">\n <div class="ginner-container">\n <div class="gslide-media">\n </div>\n <div class="gslide-description">\n <div class="gdesc-inner">\n <h4 class="gslide-title"></h4>\n <div class="gslide-desc"></div>\n </div>\n </div>\n </div>\n </div>\n</div>',lightboxHTML:'<div id="glightbox-body" class="glightbox-container" tabindex="-1" role="dialog" aria-hidden="false">\n <div class="gloader visible"></div>\n <div class="goverlay"></div>\n <div class="gcontainer">\n <div id="glightbox-slider" class="gslider"></div>\n <button class="gclose gbtn" aria-label="Close" data-taborder="3">{closeSVG}</button>\n <button class="gprev gbtn" aria-label="Previous" data-taborder="2">{prevSVG}</button>\n <button class="gnext gbtn" aria-label="Next" data-taborder="1">{nextSVG}</button>\n</div>\n</div>'},Q=i(function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),this.customOptions=i,this.settings=r(Z,i),this.effectsClasses=this.getAnimationClasses(),this.videoPlayers={},this.apiEvents=[],this.fullElementsList=!1},[{key:"init",value:function(){var e=this,t=this.getSelector();t&&(this.baseEvents=c("click",{onElement:t,withCallback:function(t,i){t.preventDefault(),e.open(i)}})),this.elements=this.getElements()}},{key:"open",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(0===this.elements.length)return!1;this.activeSlide=null,this.prevActiveSlideIndex=null,this.prevActiveSlide=null;var i=M(t)?t:this.settings.startAt;if(A(e)){var n=e.getAttribute("data-gallery");n&&(this.fullElementsList=this.elements,this.elements=this.getGalleryElements(this.elements,n)),P(i)&&(i=this.getElementIndex(e))<0&&(i=0)}M(i)||(i=0),this.build(),p(this.overlay,"none"===this.settings.openEffect?"none":this.settings.cssEfects.fade.in);var s=document.body,o=window.innerWidth-document.documentElement.clientWidth;if(o>0){var r=document.createElement("style");r.type="text/css",r.className="gcss-styles",r.innerText=".gscrollbar-fixer {margin-right: ".concat(o,"px}"),document.head.appendChild(r),u(s,"gscrollbar-fixer")}u(s,"glightbox-open"),u(G,"glightbox-open"),X&&(u(document.body,"glightbox-mobile"),this.settings.slideEffect="slide"),this.showSlide(i,!0),1===this.elements.length?(u(this.prevButton,"glightbox-button-hidden"),u(this.nextButton,"glightbox-button-hidden")):(d(this.prevButton,"glightbox-button-hidden"),d(this.nextButton,"glightbox-button-hidden")),this.lightboxOpen=!0,this.trigger("open"),x(this.settings.onOpen)&&this.settings.onOpen(),U&&this.settings.touchNavigation&&function(e){if(e.events.hasOwnProperty("touch"))return!1;var t,i,n,s=b(),o=s.width,r=s.height,a=!1,l=null,c=null,p=null,m=!1,v=1,y=1,_=!1,w=!1,E=null,x=null,S=null,A=null,T=0,C=0,k=!1,P=!1,L={},O={},M=0,I=0,D=document.getElementById("glightbox-slider"),N=document.querySelector(".goverlay"),V=new Y(D,{touchStart:function(t){if(a=!0,(h(t.targetTouches[0].target,"ginner-container")||f(t.targetTouches[0].target,".gslide-desc")||"a"==t.targetTouches[0].target.nodeName.toLowerCase())&&(a=!1),f(t.targetTouches[0].target,".gslide-inline")&&!h(t.targetTouches[0].target.parentNode,"gslide-inline")&&(a=!1),a){if(O=t.targetTouches[0],L.pageX=t.targetTouches[0].pageX,L.pageY=t.targetTouches[0].pageY,M=t.targetTouches[0].clientX,I=t.targetTouches[0].clientY,l=e.activeSlide,c=l.querySelector(".gslide-media"),n=l.querySelector(".gslide-inline"),p=null,h(c,"gslide-image")&&(p=c.querySelector("img")),(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)>769&&(c=l.querySelector(".ginner-container")),d(N,"greset"),t.pageX>20&&t.pageX<window.innerWidth-20)return;t.preventDefault()}},touchMove:function(s){if(a&&(O=s.targetTouches[0],!_&&!w)){if(n&&n.offsetHeight>r){var l=L.pageX-O.pageX;if(Math.abs(l)<=13)return!1}m=!0;var u,d=s.targetTouches[0].clientX,h=s.targetTouches[0].clientY,f=M-d,v=I-h;if(Math.abs(f)>Math.abs(v)?(k=!1,P=!0):(P=!1,k=!0),t=O.pageX-L.pageX,T=100*t/o,i=O.pageY-L.pageY,C=100*i/r,k&&p&&(u=1-Math.abs(i)/r,N.style.opacity=u,e.settings.touchFollowAxis&&(T=0)),P&&(u=1-Math.abs(t)/o,c.style.opacity=u,e.settings.touchFollowAxis&&(C=0)),!p)return g(c,"translate3d(".concat(T,"%, 0, 0)"));g(c,"translate3d(".concat(T,"%, ").concat(C,"%, 0)"))}},touchEnd:function(){if(a){if(m=!1,w||_)return S=E,void(A=x);var t=Math.abs(parseInt(C)),i=Math.abs(parseInt(T));if(!(t>29&&p))return t<29&&i<25?(u(N,"greset"),N.style.opacity=1,W(c)):void 0;e.close()}},multipointEnd:function(){setTimeout(function(){_=!1},50)},multipointStart:function(){_=!0,v=y||1},pinch:function(e){if(!p||m)return!1;_=!0,p.scaleX=p.scaleY=v*e.zoom;var t=v*e.zoom;if(w=!0,t<=1)return w=!1,t=1,A=null,S=null,E=null,x=null,void p.setAttribute("style","");t>4.5&&(t=4.5),p.style.transform="scale3d(".concat(t,", ").concat(t,", 1)"),y=t},pressMove:function(e){if(w&&!_){var t=O.pageX-L.pageX,i=O.pageY-L.pageY;S&&(t+=S),A&&(i+=A),E=t,x=i;var n="translate3d(".concat(t,"px, ").concat(i,"px, 0)");y&&(n+=" scale3d(".concat(y,", ").concat(y,", 1)")),g(p,n)}},swipe:function(t){if(!w)if(_)_=!1;else{if("Left"==t.direction){if(e.index==e.elements.length-1)return W(c);e.nextSlide()}if("Right"==t.direction){if(0==e.index)return W(c);e.prevSlide()}}}});e.events.touch=V}(this),this.settings.keyboardNavigation&&function(e){if(e.events.hasOwnProperty("keyboard"))return!1;e.events.keyboard=c("keydown",{onElement:window,withCallback:function(t,i){var n=(t=t||window.event).keyCode;if(9==n){var s=document.querySelector(".gbtn.focused");if(!s){var o=!(!document.activeElement||!document.activeElement.nodeName)&&document.activeElement.nodeName.toLocaleLowerCase();if("input"==o||"textarea"==o||"button"==o)return}t.preventDefault();var r=document.querySelectorAll(".gbtn[data-taborder]");if(!r||r.length<=0)return;if(!s){var a=I();return void(a&&(a.focus(),u(a,"focused")))}var l=I(s.getAttribute("data-taborder"));d(s,"focused"),l&&(l.focus(),u(l,"focused"))}39==n&&e.nextSlide(),37==n&&e.prevSlide(),27==n&&e.close()}})}(this)}},{key:"openAt",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.open(null,e)}},{key:"showSlide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];m(this.loader),this.index=parseInt(t);var n=this.slidesContainer.querySelector(".current");n&&d(n,"current"),this.slideAnimateOut();var s=this.slidesContainer.querySelectorAll(".gslide")[t];if(h(s,"loaded"))this.slideAnimateIn(s,i),v(this.loader);else{m(this.loader);var o=this.elements[t],r={index:this.index,slide:s,slideNode:s,slideConfig:o.slideConfig,slideIndex:this.index,trigger:o.node,player:null};this.trigger("slide_before_load",r),o.instance.setContent(s,function(){v(e.loader),e.resize(),e.slideAnimateIn(s,i),e.trigger("slide_after_load",r)})}this.slideDescription=s.querySelector(".gslide-description"),this.slideDescriptionContained=this.slideDescription&&h(this.slideDescription.parentNode,"gslide-media"),this.settings.preload&&(this.preloadSlide(t+1),this.preloadSlide(t-1)),this.updateNavigationClasses(),this.activeSlide=s}},{key:"preloadSlide",value:function(e){var t=this;if(e<0||e>this.elements.length-1)return!1;if(P(this.elements[e]))return!1;var i=this.slidesContainer.querySelectorAll(".gslide")[e];if(h(i,"loaded"))return!1;var n=this.elements[e],s=n.type,o={index:e,slide:i,slideNode:i,slideConfig:n.slideConfig,slideIndex:e,trigger:n.node,player:null};this.trigger("slide_before_load",o),"video"===s||"external"===s?setTimeout(function(){n.instance.setContent(i,function(){t.trigger("slide_after_load",o)})},200):n.instance.setContent(i,function(){t.trigger("slide_after_load",o)})}},{key:"prevSlide",value:function(){this.goToSlide(this.index-1)}},{key:"nextSlide",value:function(){this.goToSlide(this.index+1)}},{key:"goToSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.prevActiveSlide=this.activeSlide,this.prevActiveSlideIndex=this.index,!this.loop()&&(e<0||e>this.elements.length-1))return!1;e<0?e=this.elements.length-1:e>=this.elements.length&&(e=0),this.showSlide(e)}},{key:"insertSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;t<0&&(t=this.elements.length);var i=new q(e,this,t),n=i.getConfig(),s=r({},n),o=i.create(),a=this.elements.length-1;s.index=t,s.node=!1,s.instance=i,s.slideConfig=n,this.elements.splice(t,0,s);var l=null,c=null;if(this.slidesContainer){if(t>a)this.slidesContainer.appendChild(o);else{var u=this.slidesContainer.querySelectorAll(".gslide")[t];this.slidesContainer.insertBefore(o,u)}(this.settings.preload&&0==this.index&&0==t||this.index-1==t||this.index+1==t)&&this.preloadSlide(t),0===this.index&&0===t&&(this.index=1),this.updateNavigationClasses(),l=this.slidesContainer.querySelectorAll(".gslide")[t],c=this.getSlidePlayerInstance(t),s.slideNo
2de=l}this.trigger("slide_inserted",{index:t,slide:l,slideNode:l,slideConfig:n,slideIndex:t,trigger:null,player:c}),x(this.settings.slideInserted)&&this.settings.slideInserted({index:t,slide:l,player:c})}},{key:"removeSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;if(e<0||e>this.elements.length-1)return!1;var t=this.slidesContainer&&this.slidesContainer.querySelectorAll(".gslide")[e];t&&(this.getActiveSlideIndex()==e&&(e==this.elements.length-1?this.prevSlide():this.nextSlide()),t.parentNode.removeChild(t)),this.elements.splice(e,1),this.trigger("slide_removed",e),x(this.settings.slideRemoved)&&this.settings.slideRemoved(e)}},{key:"slideAnimateIn",value:function(e,t){var i=this,n=e.querySelector(".gslide-media"),s=e.querySelector(".gslide-description"),o={index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlide,slideConfig:P(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:P(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},r={index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideConfig:this.elements[this.index].slideConfig,slideIndex:this.index,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)};if(n.offsetWidth>0&&s&&(v(s),s.style.display=""),d(e,this.effectsClasses),t)p(e,this.settings.cssEfects[this.settings.openEffect].in,function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:o,current:r}),x(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[o,r])});else{var a=this.settings.slideEffect,l="none"!==a?this.settings.cssEfects[a].in:a;this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(l=this.settings.cssEfects.slideBack.in),p(e,l,function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:o,current:r}),x(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[o,r])})}setTimeout(function(){i.resize(e)},100),u(e,"current")}},{key:"slideAnimateOut",value:function(){if(!this.prevActiveSlide)return!1;var e=this.prevActiveSlide;d(e,this.effectsClasses),u(e,"prev");var t=this.settings.slideEffect,i="none"!==t?this.settings.cssEfects[t].out:t;this.slidePlayerPause(e),this.trigger("slide_before_change",{prev:{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlideIndex,slideConfig:P(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:P(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},current:{index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideIndex:this.index,slideConfig:this.elements[this.index].slideConfig,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)}}),x(this.settings.beforeSlideChange)&&this.settings.beforeSlideChange.apply(this,[{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},{index:this.index,slide:this.activeSlide,player:this.getSlidePlayerInstance(this.index)}]),this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(i=this.settings.cssEfects.slideBack.out),p(e,i,function(){var t=e.querySelector(".ginner-container"),i=e.querySelector(".gslide-media"),n=e.querySelector(".gslide-description");t.style.transform="",i.style.transform="",d(i,"greset"),i.style.opacity="",n&&(n.style.opacity=""),d(e,"prev")})}},{key:"getAllPlayers",value:function(){return this.videoPlayers}},{key:"getSlidePlayerInstance",value:function(e){var t="gvideo"+e,i=this.getAllPlayers();return!(!L(i,t)||!i[t])&&i[t]}},{key:"stopSlideVideo",value:function(e){if(A(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("stopSlideVideo is deprecated, use slidePlayerPause");var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"slidePlayerPause",value:function(e){if(A(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"playSlideVideo",value:function(e){if(A(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("playSlideVideo is deprecated, use slidePlayerPlay");var i=this.getSlidePlayerInstance(e);i&&!i.playing&&i.play()}},{key:"slidePlayerPlay",value:function(e){var t;if(!X||null!==(t=this.settings.plyr.config)&&void 0!==t&&t.muted){if(A(e)){var i=e.querySelector(".gvideo-wrapper");i&&(e=i.getAttribute("data-index"))}var n=this.getSlidePlayerInstance(e);n&&!n.playing&&(n.play(),this.settings.autofocusVideos&&n.elements.container.focus())}}},{key:"setElements",value:function(e){var t=this;this.settings.elements=!1;var i=[];e&&e.length&&a(e,function(e,n){var s=new q(e,t,n),o=s.getConfig(),a=r({},o);a.slideConfig=o,a.instance=s,a.index=n,i.push(a)}),this.elements=i,this.lightboxOpen&&(this.slidesContainer.innerHTML="",this.elements.length&&(a(this.elements,function(){var e=y(t.settings.slideHTML);t.slidesContainer.appendChild(e)}),this.showSlide(0,!0)))}},{key:"getElementIndex",value:function(e){var t=!1;return a(this.elements,function(i,n){if(L(i,"node")&&i.node==e)return t=n,!0}),t}},{key:"getElements",value:function(){var e=this,t=[];this.elements=this.elements?this.elements:[],!P(this.settings.elements)&&T(this.settings.elements)&&this.settings.elements.length&&a(this.settings.elements,function(i,n){var s=new q(i,e,n),o=s.getConfig(),a=r({},o);a.node=!1,a.index=n,a.instance=s,a.slideConfig=o,t.push(a)});var i=!1;
2return this.getSelector()&&(i=document.querySelectorAll(this.getSelector())),i?(a(i,function(i,n){var s=new q(i,e,n),o=s.getConfig(),a=r({},o);a.node=i,a.index=n,a.instance=s,a.slideConfig=o,a.gallery=i.getAttribute("data-gallery"),t.push(a)}),t):t}},{key:"getGalleryElements",value:function(e,t){return e.filter(function(e){return e.gallery==t})}},{key:"getSelector",value:function(){return!this.settings.elements&&(this.settings.selector&&"data-"==this.settings.selector.substring(0,5)?"*[".concat(this.settings.selector,"]"):this.settings.selector)}},{key:"getActiveSlide",value:function(){return this.slidesContainer.querySelectorAll(".gslide")[this.index]}},{key:"getActiveSlideIndex",value:function(){return this.index}},{key:"getAnimationClasses",value:function(){var e=[];for(var t in this.settings.cssEfects)if(this.settings.cssEfects.hasOwnProperty(t)){var i=this.settings.cssEfects[t];e.push("g".concat(i.in)),e.push("g".concat(i.out))}return e.join(" ")}},{key:"build",value:function(){var e=this;if(this.built)return!1;var t=document.body.childNodes,i=[];a(t,function(e){e.parentNode==document.body&&"#"!==e.nodeName.charAt(0)&&e.hasAttribute&&!e.hasAttribute("aria-hidden")&&(i.push(e),e.setAttribute("aria-hidden","true"))});var n=L(this.settings.svg,"next")?this.settings.svg.next:"",s=L(this.settings.svg,"prev")?this.settings.svg.prev:"",o=L(this.settings.svg,"close")?this.settings.svg.close:"",r=this.settings.lightboxHTML;r=y(r=(r=(r=r.replace(/{nextSVG}/g,n)).replace(/{prevSVG}/g,s)).replace(/{closeSVG}/g,o)),document.body.appendChild(r);var l=document.getElementById("glightbox-body");this.modal=l;var d=l.querySelector(".gclose");this.prevButton=l.querySelector(".gprev"),this.nextButton=l.querySelector(".gnext"),this.overlay=l.querySelector(".goverlay"),this.loader=l.querySelector(".gloader"),this.slidesContainer=document.getElementById("glightbox-slider"),this.bodyHiddenChildElms=i,this.events={},u(this.modal,"glightbox-"+this.settings.skin),this.settings.closeButton&&d&&(this.events.close=c("click",{onElement:d,withCallback:function(t,i){t.preventDefault(),e.close()}})),d&&!this.settings.closeButton&&d.parentNode.removeChild(d),this.nextButton&&(this.events.next=c("click",{onElement:this.nextButton,withCallback:function(t,i){t.preventDefault(),e.nextSlide()}})),this.prevButton&&(this.events.prev=c("click",{onElement:this.prevButton,withCallback:function(t,i){t.preventDefault(),e.prevSlide()}})),this.settings.closeOnOutsideClick&&(this.events.outClose=c("click",{onElement:l,withCallback:function(t,i){e.preventOutsideClick||h(document.body,"glightbox-mobile")||f(t.target,".ginner-container")||f(t.target,".gbtn")||h(t.target,"gnext")||h(t.target,"gprev")||e.close()}})),a(this.elements,function(t,i){e.slidesContainer.appendChild(t.instance.create()),t.slideNode=e.slidesContainer.querySelectorAll(".gslide")[i]}),U&&u(document.body,"glightbox-touch"),this.events.resize=c("resize",{onElement:window,withCallback:function(){e.resize()}}),this.built=!0}},{key:"resize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if((e=e||this.activeSlide)&&!h(e,"zoomed")){var t=b(),i=e.querySelector(".gvideo-wrapper"),n=e.querySelector(".gslide-image"),s=this.slideDescription,o=t.width,r=t.height;if(o<=768?u(document.body,"glightbox-mobile"):d(document.body,"glightbox-mobile"),i||n){var a=!1;if(s&&(h(s,"description-bottom")||h(s,"description-top"))&&!h(s,"gabsolute")&&(a=!0),n)if(o<=768)n.querySelector("img");else if(a){var l,c,f=s.offsetHeight,p=n.querySelector("img"),g=null===(l=this.elements[this.index])||void 0===l?void 0:l.node,m="100vh";g&&(m=null!==(c=g.getAttribute("data-height"))&&void 0!==c?c:m),p.setAttribute("style","max-height: calc(".concat(m," - ").concat(f,"px)")),s.setAttribute("style","max-width: ".concat(p.offsetWidth,"px;"))}if(i){var v=L(this.settings.plyr.config,"ratio")?this.settings.plyr.config.ratio:"";if(!v){var y=i.clientWidth,_=i.clientHeight,w=y/_;v="".concat(y/w,":").concat(_/w)}var E=v.split(":"),x=this.settings.videosWidth,S=this.settings.videosWidth,A=(S=M(x)||-1!==x.indexOf("px")?parseInt(x):-1!==x.indexOf("vw")?o*parseInt(x)/100:-1!==x.indexOf("vh")?r*parseInt(x)/100:-1!==x.indexOf("%")?o*parseInt(x)/100:parseInt(i.clientWidth))/(parseInt(E[0])/parseInt(E[1]));if(A=Math.floor(A),a&&(r-=s.offsetHeight),S>o||A>r||r<A&&o>S){var T=i.offsetWidth,C=i.offsetHeight,k=r/C,P={width:T*k,height:C*k};i.parentNode.setAttribute("style","max-width: ".concat(P.width,"px")),a&&s.setAttribute("style","max-width: ".concat(P.width,"px;"))}else i.parentNode.style.maxWidth="".concat(x),a&&s.setAttribute("style","max-width: ".concat(x,";"))}}}}},{key:"reload",value:function(){this.init()}},{key:"updateNavigationClasses",value:function(){var e=this.loop();d(this.nextButton,"disabled"),d(this.prevButton,"disabled"),0==this.index&&this.elements.length-1==0?(u(this.prevButton,"disabled"),u(this.nextButton,"disabled")):0!==this.index||e?this.index!==this.elements.length-1||e||u(this.nextButton,"disabled"):u(this.prevButton,"disabled")}},{key:"loop",value:function(){var e=L(this.settings,"loopAtEnd")?this.settings.loopAtEnd:null;return L(this.settings,"loop")?this.settings.loop:e}},{key:"close",value:function(){var e=this;if(!this.lightboxOpen){if(this.events){for(var t in this.events)this.events.hasOwnProperty(t)&&this.events[t].destroy();this.events=null}return!1}if(this.closing)return!1;this.closing=!0,this.slidePlayerPause(this.activeSlide),this.fullElementsList&&(this.elements=this.fullElementsList),this.bodyHiddenChildElms.length&&a(this.bodyHiddenChildElms,function(e){e.removeAttribute("aria-hidden")}),u(this.modal,"glightbox-closing"),p(this.overlay,"none"==this.settings.openEffect?"none":this.settings.cssEfects.fade.out),p(this.activeSlide,this.settings.cssEfects[this.settings.closeEffect].out,function(){if(e.activeSlide=null,e.prevActiveSlideIndex=null,e.prevActiveSlide=null,e.built=!1,e.events){for(var t in e.events)e.events.hasOwnProperty(t)&&e.events[t].destroy();e.events=null}var i=document.body;d(G,"glightbox-open"),d(i,"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer"),e.modal.parentNode.removeChild(e.modal),e.trigger("close"),x(e.settings.onClose)&&e.settings.onClose();var n=document.querySelector(".gcss-styles");n&&n.parentNode.removeChild(n),e.lightboxOpen=!1,e.closing=null})}},{key:"destroy",value:function(){this.close(),this.clearAllEvents(),this.baseEvents&&this.baseEvents.destroy()}},{key:"on",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||!x(t))throw new TypeError("Event name and callback must be defined");this.apiEvents.push({evt:e,once:i,callback:t})}},{key:"once",value:function(e,t){this.on(e,t,!0)}},{key:"trigger",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=[];a(this.apiEvents,function(t,s){var o=t.evt,r=t.once,a=t.callback;o==e&&(a(i),r&&n.push(s))}),n.length&&a(n,function(e){return t.apiEvents.splice(e,1)})}},{key:"clearAllEvents",value:function(){this.apiEvents.splice(0,this.apiEvents.length)}},{key:"version",value:function(){return"3.3.1"}}]);return function(){var e=new Q(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{});return e.init(),e}}()},873(){!function(){"use strict";function e(){document.querySelectorAll(".violators__violator[data-cookiename]").forEach(function(e){const t=e.getAttribute("data-cookiename");if(function(e){const t=e+"=",i=document.cookie.split(";");for(let e=0;e<i.length;e++){let n=i[e];for(;" "===n.charAt(0);)n=n.substring(1,n.length);if(0===n.indexOf(t))return n.substring(t.length,n.length)}return null}(t))e.style.display="none";else{const i=e.querySelector(".btn-close");i&&i.addEventListener("click",function(){!function(e){const t=new Date;t.setTime(t.getTime()+31536e6);const i="expires="+t.toUTCString();document.cookie=e+"=true;"+i+";path=/"}(t)})}})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}()},909(){!function(){"use strict";function e(){"undefined"!=typeof bootstrap?document.querySelectorAll(".popup__modal").forEach(function(e){const t=e.getAttribute("data-cookiename");if(!t||!function(e){const t=e+"=",i=document.cookie.split(";");for(let e=0;e<i.length;e++){let n=i[e];for(;" "===n.charAt(0);)n=n.substring(1,n.length);if(0===n.indexOf(t))return n.substring(t.length,n.length)}return null}(t)){const i=new bootstrap.Modal(e,{backdrop:"static",keyboard:!1});i.show(),e.addEventListener("hidden.bs.modal",function(e){t&&function(e){const t=new Date;t.setTime(t.getTime()+31536e6);const i="expires="+t.toUTCString();document.cookie=e+"=true;"+i+";path=/"}(t),i.dispose()},{once:!0})}}):console.warn("Bootstrap not loaded, popup modals will not function")}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}()}},t={};function i(n){var s=t[n];if(void 0!==s)return s.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,i),o.exports}i.n=e=>
vendor: 6,907 bytes, line 2
2{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";var e={};i.r(e),i.d(e,{afterMain:()=>E,afterRead:()=>b,afterWrite:()=>A,applyStyles:()=>M,arrow:()=>K,auto:()=>a,basePlacements:()=>l,beforeMain:()=>_,beforeRead:()=>v,beforeWrite:()=>x,bottom:()=>s,clippingParents:()=>d,computeStyles:()=>ie,createPopper:()=>Oe,createPopperBase:()=>Le,createPopperLite:()=>Me,detectOverflow:()=>ve,end:()=>u,eventListeners:()=>se,flip:()=>ye,hide:()=>we,left:()=>r,main:()=>w,modifierPhases:()=>T,offset:()=>Ee,placements:()=>m,popper:()=>f,popperGenerator:()=>Pe,popperOffsets:()=>xe,preventOverflow:()=>Se,read:()=>y,reference:()=>p,right:()=>o,start:()=>c,top:()=>n,variationPlacements:()=>g,viewport:()=>h,write:()=>S});var t={};i.r(t),i.d(t,{Alert:()=>Ct,Button:()=>Pt,Carousel:()=>ci,Collapse:()=>xi,Dropdown:()=>Ui,Modal:()=>Ln,Offcanvas:()=>Un,Popover:()=>_s,ScrollSpy:()=>Os,Tab:()=>eo,Toast:()=>mo,Tooltip:()=>gs});var n="top",s="bottom",o="right",r="left",a="auto",l=[n,s,o,r],c="start",u="end",d="clippingParents",h="viewport",f="popper",p="reference",g=l.reduce(function(e,t){return e.concat([t+"-"+c,t+"-"+u])},[]),m=[].concat(l,[a]).reduce(function(e,t){return e.concat([t,t+"-"+c,t+"-"+u])},[]),v="beforeRead",y="read",b="afterRead",_="beforeMain",w="main",E="afterMain",x="beforeWrite",S="write",A="afterWrite",T=[v,y,b,_,w,E,x,S,A];function C(e){return e?(e.nodeName||"").toLowerCase():null}function k(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function P(e){return e instanceof k(e).Element||e instanceof Element}function L(e){return e instanceof k(e).HTMLElement||e instanceof HTMLElement}function O(e){return"undefined"!=typeof ShadowRoot&&(e instanceof k(e).ShadowRoot||e instanceof ShadowRoot)}const M={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var i=t.styles[e]||{},n=t.attributes[e]||{},s=t.elements[e];L(s)&&C(s)&&(Object.assign(s.style,i),Object.keys(n).forEach(function(e){var t=n[e];!1===t?s.removeAttribute(e):s.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(e){var n=t.elements[e],s=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce(function(e,t){return e[t]="",e},{});L(n)&&C(n)&&(Object.assign(n.style,o),Object.keys(s).forEach(function(e){n.removeAttribute(e)}))})}},requires:["computeStyles"]};function I(e){return e.split("-")[0]}var D=Math.max,N=Math.min,V=Math.round;function $(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function j(){return!/^((?!chrome|android).)*safari/i.test($())}function B(e,t,i){void 0===t&&(t=!1),void 0===i&&(i=!1);var n=e.getBoundingClientRect(),s=1,o=1;t&&L(e)&&(s=e.offsetWidth>0&&V(n.width)/e.offsetWidth||1,o=e.offsetHeight>0&&V(n.height)/e.offsetHeight||1);var r=(P(e)?k(e):window).visualViewport,a=!j()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,u=n.width/s,d=n.height/o;return{width:u,height:d,top:c,right:l+u,bottom:c+d,left:l,x:l,y:c}}function F(e){var t=B(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function q(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&O(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function z(e){return k(e).getComputedStyle(e)}function H(e){return["table","td","th"].indexOf(C(e))>=0}function R(e){return((P(e)?e.ownerDocument:e.document)||window.document).documentElement}function Y(e){return"html"===C(e)?e:e.assignedSlot||e.parentNode||(O(e)?e.host:null)||R(e)}function W(e){return L(e)&&"fixed"!==z(e).position?e.offsetParent:null}function X(e){for(var t=k(e),i=W(e);i&&H(i)&&"static"===z(i).position;)i=W(i);return i&&("html"===C(i)||"body"===C(i)&&"static"===z(i).position)?t:i||function(e){var t=/firefox/i.test($());if(/Trident/i.test($())&&L(e)&&"fixed"===z(e).position)return null;var i=Y(e);for(O(i)&&(i=i.host);L(i)&&["html","body"].indexOf(C(i))<0;){var n=z(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||t&&"filter"===n.willChange||t&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(e)||t}function U(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function G(e,t,i){return D(e,N(t,i))}function Z(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Q(e,t){return t.reduce(function(t,i){return t[i]=e,t},{})}const K={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,i=e.state,a=e.name,c=e.options,u=i.elements.arrow,d=i.modifiersData.popperOffsets,h=I(i.placement),f=U(h),p=[r,o].indexOf(h)>=0?"height":"width";if(u&&d){var g=function(e,t){return Z("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Q(e,l))}(c.padding,i),m=F(u),v="y"===f?n:r,y="y"===f?s:o,b=i.rects.reference[p]+i.rects.reference[f]-d[f]-i.rects.popper[p],_=d[f]-i.rects.reference[f],w=X(u),E=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,x=b/2-_/2,S=g[v],A=E-m[p]-g[y],T=E/2-m[p]/2+x,C=G(S,T,A),k=f;i.modifiersData[a]=((t={})[k]=C,t.centerOffset=C-T,t)}},effect:function(e){var t=e.state,i=e.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=t.elements.popper.querySelector(n)))&&q(t.elements.popper,n)&&(t.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function J(e){return e.split("-")[1]}var ee={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(e){var t,i=e.popper,a=e.popperRect,l=e.placement,c=e.variation,d=e.offsets,h=e.position,f=e.gpuAcceleration,p=e.adaptive,g=e.roundOffsets,m=e.isFixed,v=d.x,y=void 0===v?0:v,b=d.y,_=void 0===b?0:b,w="function"==typeof g?g({x:y,y:_}):{x:y,y:_};y=w.x,_=w.y;var E=d.hasOwnProperty("x"),x=d.hasOwnProperty("y"),S=r,A=n,T=window;if(p){var C=X(i),P="clientHeight",L="clientWidth";C===k(i)&&"static"!==z(C=R(i)).position&&"absolute"===h&&(P="scrollHeight",L="scrollWidth"),(l===n||(l===r||l===o)&&c===u)&&(A=s,_-=(m&&C===T&&T.visualVie
vendor: 10,071 bytes, line 2
2wport?T.visualViewport.height:C[P])-a.height,_*=f?1:-1),l!==r&&(l!==n&&l!==s||c!==u)||(S=o,y-=(m&&C===T&&T.visualViewport?T.visualViewport.width:C[L])-a.width,y*=f?1:-1)}var O,M=Object.assign({position:h},p&&ee),I=!0===g?function(e,t){var i=e.x,n=e.y,s=t.devicePixelRatio||1;return{x:V(i*s)/s||0,y:V(n*s)/s||0}}({x:y,y:_},k(i)):{x:y,y:_};return y=I.x,_=I.y,f?Object.assign({},M,((O={})[A]=x?"0":"",O[S]=E?"0":"",O.transform=(T.devicePixelRatio||1)<=1?"translate("+y+"px, "+_+"px)":"translate3d("+y+"px, "+_+"px, 0)",O)):Object.assign({},M,((t={})[A]=x?_+"px":"",t[S]=E?y+"px":"",t.transform="",t))}const ie={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,i=e.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:I(t.placement),variation:J(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,te(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,te(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};var ne={passive:!0};const se={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,i=e.instance,n=e.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=k(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(e){e.addEventListener("scroll",i.update,ne)}),a&&l.addEventListener("resize",i.update,ne),function(){o&&c.forEach(function(e){e.removeEventListener("scroll",i.update,ne)}),a&&l.removeEventListener("resize",i.update,ne)}},data:{}};var oe={left:"right",right:"left",bottom:"top",top:"bottom"};function re(e){return e.replace(/left|right|bottom|top/g,function(e){return oe[e]})}var ae={start:"end",end:"start"};function le(e){return e.replace(/start|end/g,function(e){return ae[e]})}function ce(e){var t=k(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function ue(e){return B(R(e)).left+ce(e).scrollLeft}function de(e){var t=z(e),i=t.overflow,n=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function he(e){return["html","body","#document"].indexOf(C(e))>=0?e.ownerDocument.body:L(e)&&de(e)?e:he(Y(e))}function fe(e,t){var i;void 0===t&&(t=[]);var n=he(e),s=n===(null==(i=e.ownerDocument)?void 0:i.body),o=k(n),r=s?[o].concat(o.visualViewport||[],de(n)?n:[]):n,a=t.concat(r);return s?a:a.concat(fe(Y(r)))}function pe(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ge(e,t,i){return t===h?pe(function(e,t){var i=k(e),n=R(e),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=j();(c||!c&&"fixed"===t)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ue(e),y:l}}(e,i)):P(t)?function(e,t){var i=B(e,!1,"fixed"===t);return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}(t,i):pe(function(e){var t,i=R(e),n=ce(e),s=null==(t=e.ownerDocument)?void 0:t.body,o=D(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=D(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ue(e),l=-n.scrollTop;return"rtl"===z(s||i).direction&&(a+=D(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(R(e)))}function me(e){var t,i=e.reference,a=e.element,l=e.placement,d=l?I(l):null,h=l?J(l):null,f=i.x+i.width/2-a.width/2,p=i.y+i.height/2-a.height/2;switch(d){case n:t={x:f,y:i.y-a.height};break;case s:t={x:f,y:i.y+i.height};break;case o:t={x:i.x+i.width,y:p};break;case r:t={x:i.x-a.width,y:p};break;default:t={x:i.x,y:i.y}}var g=d?U(d):null;if(null!=g){var m="y"===g?"height":"width";switch(h){case c:t[g]=t[g]-(i[m]/2-a[m]/2);break;case u:t[g]=t[g]+(i[m]/2-a[m]/2)}}return t}function ve(e,t){void 0===t&&(t={});var i=t,r=i.placement,a=void 0===r?e.placement:r,c=i.strategy,u=void 0===c?e.strategy:c,g=i.boundary,m=void 0===g?d:g,v=i.rootBoundary,y=void 0===v?h:v,b=i.elementContext,_=void 0===b?f:b,w=i.altBoundary,E=void 0!==w&&w,x=i.padding,S=void 0===x?0:x,A=Z("number"!=typeof S?S:Q(S,l)),T=_===f?p:f,k=e.rects.popper,O=e.elements[E?T:_],M=function(e,t,i,n){var s="clippingParents"===t?function(e){var t=fe(Y(e)),i=["absolute","fixed"].indexOf(z(e).position)>=0&&L(e)?X(e):e;return P(i)?t.filter(function(e){return P(e)&&q(e,i)&&"body"!==C(e)}):[]}(e):[].concat(t),o=[].concat(s,[i]),r=o[0],a=o.reduce(function(t,i){var s=ge(e,i,n);return t.top=D(s.top,t.top),t.right=N(s.right,t.right),t.bottom=N(s.bottom,t.bottom),t.left=D(s.left,t.left),t},ge(e,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(P(O)?O:O.contextElement||R(e.elements.popper),m,y,u),I=B(e.elements.reference),V=me({reference:I,element:k,strategy:"absolute",placement:a}),$=pe(Object.assign({},k,V)),j=_===f?$:I,F={top:M.top-j.top+A.top,bottom:j.bottom-M.bottom+A.bottom,left:M.left-j.left+A.left,right:j.right-M.right+A.right},H=e.modifiersData.offset;if(_===f&&H){var W=H[a];Object.keys(F).forEach(function(e){var t=[o,s].indexOf(e)>=0?1:-1,i=[n,s].indexOf(e)>=0?"y":"x";F[e]+=W[i]*t})}return F}const ye={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,u=e.name;if(!t.modifiersData[u]._skip){for(var d=i.mainAxis,h=void 0===d||d,f=i.altAxis,p=void 0===f||f,v=i.fallbackPlacements,y=i.padding,b=i.boundary,_=i.rootBoundary,w=i.altBoundary,E=i.flipVariations,x=void 0===E||E,S=i.allowedAutoPlacements,A=t.options.placement,T=I(A),C=v||(T!==A&&x?function(e){if(I(e)===a)return[];var t=re(e);return[le(e),t,le(t)]}(A):[re(A)]),k=[A].concat(C).reduce(function(e,i){return e.concat(I(i)===a?function(e,t){void 0===t&&(t={});var i=t,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,c=i.allowedAutoPlacements,u=void 0===c?m:c,d=J(n),h=d?a?g:g.filter(function(e){return J(e)===d}):l,f=h.filter(function(e){return u.indexOf(e)>=0});0===f.length&&(f=h);var p=f.reduce(function(t,i){return t[i]=ve(e,{placement:i,boundary:s,rootBoundary:o,padding:r})[I(i)],t},{});return Object.keys(p).sort(function(e,t){return p[e]-p[t]})}(t,{placement:i,boundary:b,rootBoundary:_,padding:y,flipVariations:x,allowedAutoPlacements:S}):i)},[]),P=t.rects.reference,L=t.rects.popper,O=new Map,M=!0,D=k[0],N=0;N<k.length;N++){var V=k[N],$=I(V),j=J(V)===c,B=[n,s].indexOf($)>=0,F=B?"width":"height",q=ve(t,{placement:V,boundary:b,rootBoundary:_,altBoundary:w,padding:y}),z=B?j?o:r:j?s:n;P[F]>L[F]&&(z=re(z));var H=re(z),R=[];if(h&&R.push(q[$]<=0),p&&R.push(q[z]<=0,q[H]<=0),R.every(function(e){return e})){D=V,M=!1;break}O.set(V,R)}if(M)for(var Y=function(e){var t=k.find(function(t){var i=O.get(t);if(i)return i.slice(0,e).every(function(e){return e})});if(t)return D=t,"break"},W=x?3:1;W>0&&"break"!==Y(W);W--);t.placement!==D&&(t.modifiersData[u]._skip=!0,t.placement=D,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function be(e,t,i){return void 0===i&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function _e(e){return[n,o,s,r].some(function(t){return e[t]>=0})}const we={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,n=t.rects.reference,s=t.rects.popper,o=t.modifiersData.preventOverflow,r=ve(t,{elementContext:"reference"}),a=ve(t,{altBoundary:!0}),l=be(r,n),c=be(a,s,o),u=_e(l),d=_e(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}},Ee={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,s=e.name,a=i.offset,l=void 0===a?[0,0]:a,c=m.reduce(function(e,i){return e[i]=function(e,t,i){var s=I(e),a=[r,n].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},t,{placement:e})):i,c=l[0],u=l[1];return c=c||0,u=(u||0)*a,[r,o].indexOf(s)>=0?{x:u,y:c}:{x:c,y:u}}(i,t.rects,l),e},{}),u=c[t.placement],d=u.x,h=u.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=h),t.modifiersData[s]=c}},xe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,i=e.name;t.modifiersData[i]=me({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},Se={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,a=e.name,l=i.mainAxis,u=void 0===l||l,d=i.altAxis,h=void 0!==d&&d,f=i.boundary,p=i.rootBoundary,g=i.altBoundary,m=i.padding,v=i.tether,y=void 0===v||v,b=i.tetherOffset,_=void 0===b?0:b,w=ve(t,{boundary:f,rootBoundary:p,padding:m,altBoundary:g}),E=I(t.placement),x=J(t.placement),S=!x,A=U(E),T="x"===A?"y":"x",C=t.modifiersData.popperOffsets,k=t.rects.reference,P=t.rects.popper,L="function"==typeof _?_(Object.assign({},t.rects,{placement:t.placement})):_,O="number"==typeof L?{mainAxis:L,altAxis:L}:Object.assign({mainAxis:0,altAxis:0},L),M=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(C){if(u){var $,j="y"===A?n:r,B="y"===A?s:o,q="y"===A?"height":"width",z=C[A],H=z+w[j],R=z-w[B],Y=y?-P[q]/2:0,W=x===c?k[q]:P[q],Z=x===c?-P[q]:-k[q],Q=t.elements.arrow,K=y&&Q?F(Q):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[j],ie=ee[B],ne=G(0,k[q],K[q]),se=S?k[q]/2-Y-ne-te-O.mainAxis:W-ne-te-O.mainAxis,oe=S?-k[q]/2+Y+ne+ie+O.mainAxis:Z+ne+ie+O.mainAxis,re=t.elements.arrow&&X(t.elements.arrow),ae=re?"
2y"===A?re.clientTop||0:re.clientLeft||0:0,le=null!=($=null==M?void 0:M[A])?$:0,ce=z+oe-le,ue=G(y?N(H,z+se-le-ae):H,z,y?D(R,ce):R);C[A]=ue,V[A]=ue-z}if(h){var de,he="x"===A?n:r,fe="x"===A?s:o,pe=C[T],ge="y"===T?"height":"width",me=pe+w[he],ye=pe-w[fe],be=-1!==[n,r].indexOf(E),_e=null!=(de=null==M?void 0:M[T])?de:0,we=be?me:pe-k[ge]-P[ge]-_e+O.altAxis,Ee=be?pe+k[ge]+P[ge]-_e-O.altAxis:ye,xe=y&&be?function(e,t,i){var n=G(e,t,i);return n>i?i:n}(we,pe,Ee):G(y?we:me,pe,y?Ee:ye);C[T]=xe,V[T]=xe-pe}t.modifiersData[a]=V}},requiresIfExists:["offset"]};function Ae(e,t,i){void 0===i&&(i=!1);var n,s,o=L(t),r=L(t)&&function(e){var t=e.getBoundingClientRect(),i=V(t.width)/e.offsetWidth||1,n=V(t.height)/e.offsetHeight||1;return 1!==i||1!==n}(t),a=R(t),l=B(e,r,i),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(o||!o&&!i)&&(("body"!==C(t)||de(a))&&(c=(n=t)!==k(n)&&L(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:ce(n)),L(t)?((u=B(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=ue(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Te(e){var t=new Map,i=new Set,n=[];function s(e){i.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!i.has(e)){var n=t.get(e);n&&s(n)}}),n.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){i.has(e.name)||s(e)}),n}var Ce={placement:"bottom",modifiers:[],strategy:"absolute"};function ke(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return!t.some(function(e){return!(e&&"function"==typeof e.getBoundingClientRect)})}function Pe(e){void 0===e&&(e={});var t=e,i=t.defaultModifiers,n=void 0===i?[]:i,s=t.defaultOptions,o=void 0===s?Ce:s;return function(e,t,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},Ce,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},l=[],c=!1,u={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:P(e)?fe(e):e.contextElement?fe(e.contextElement):[],popper:fe(t)};var r,c,h=function(e){var t=Te(e);return T.reduce(function(e,i){return e.concat(t.filter(function(e){return e.phase===i}))},[])}((r=[].concat(n,a.options.modifiers),c=r.reduce(function(e,t){var i=e[t.name];return e[t.name]=i?Object.assign({},i,t,{options:Object.assign({},i.options,t.options),data:Object.assign({},i.data,t.data)}):t,e},{}),Object.keys(c).map(function(e){return c[e]})));return a.orderedModifiers=h.filter(function(e){return e.enabled}),a.orderedModifiers.forEach(function(e){var t=e.name,i=e.options,n=void 0===i?{}:i,s=e.effect;if("function"==typeof s){var o=s({state:a,name:t,instance:u,options:n});l.push(o||function(){})}}),u.update()},forceUpdate:function(){if(!c){var e=a.elements,t=e.reference,i=e.popper;if(ke(t,i)){a.rects={reference:Ae(t,X(i),"fixed"===a.options.strategy),popper:F(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach(function(e){return a.modifiersData[e.name]=Object.assign({},e.data)});for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:u})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise(function(e){u.forceUpdate(),e(a)})},function(){return r||(r=new Promise(function(e){Promise.resolve().then(function(){r=void 0,e(s())})})),r}),destroy:function(){d(),c=!0}};if(!ke(e,t))return u;function d(){l.forEach(function(e){return e()}),l=[]}return u.setOptions(i).then(function(e){!c&&i.onFirstUpdate&&i.onFirstUpdate(e)}),u}}var Le=Pe(),Oe=Pe({defaultModifiers:[se,xe,ie,M,Ee,ye,Se,K,we]}),Me=Pe({defaultModifiers:[se,xe,ie,M]});const Ie=new Map,De={set(e,t,i){Ie.has(e)||Ie.set(e,new Map);const n=Ie.get(e);n.has(t)||0===n.size?n.set(t,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(e,t)=>Ie.has(e)&&Ie.get(e).get(t)||null,remove(e,t){if(!Ie.has(e))return;const i=Ie.get(e);i.delete(t),0===i.size&&Ie.delete(e)}},Ne="transitionend",Ve=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),$e=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),je=e=>{e.dispatchEvent(new Event(Ne))},Be=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),Fe=e=>Be(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(Ve(e)):null,qe=e=>{if(!Be(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),i=e.closest("details:not([open])");if(!i)return t;if(i!==e){const t=e.closest("summary");if(t&&t.parentNode!==i)return!1;if(null===t)return!1}return t},ze=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),He=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?He(e.parentNode):null},Re=()=>{},Ye=e=>{e.offsetHeight},We=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Xe=[],Ue=()=>"rtl"===document.documentElement.dir,Ge=e=>{var t;t=()=>{const t=We();if(t){const i=e.NAME,n=t.fn[i];t.fn[i]=e.jQueryInterface,t.fn[i].Constructor=e,t.fn[i].noConflict=()=>(t.fn[i]=n,e.jQueryInterface)}},"loading"===document.readyState?(Xe.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of Xe)e()}),Xe.push(t)):t()},Ze=(e,t=[],i=e)=>
vendor: 20,439 bytes, line 2
2"function"==typeof e?e.call(...t):i,Qe=(e,t,i=!0)=>{if(!i)return void Ze(e);const n=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:i}=window.getComputedStyle(e);const n=Number.parseFloat(t),s=Number.parseFloat(i);return n||s?(t=t.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(i))):0})(t)+5;let s=!1;const o=({target:i})=>{i===t&&(s=!0,t.removeEventListener(Ne,o),Ze(e))};t.addEventListener(Ne,o),setTimeout(()=>{s||je(t)},n)},Ke=(e,t,i,n)=>{const s=e.length;let o=e.indexOf(t);return-1===o?!i&&n?e[s-1]:e[0]:(o+=i?1:-1,n&&(o=(o+s)%s),e[Math.max(0,Math.min(o,s-1))])},Je=/[^.]*(?=\..*)\.|.*/,et=/\..*/,tt=/::\d+$/,it={};let nt=1;const st={mouseenter:"mouseover",mouseleave:"mouseout"},ot=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function rt(e,t){return t&&`${t}::${nt++}`||e.uidEvent||nt++}function at(e){const t=rt(e);return e.uidEvent=t,it[t]=it[t]||{},it[t]}function lt(e,t,i=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===i)}function ct(e,t,i){const n="string"==typeof t,s=n?i:t||i;let o=ft(e);return ot.has(o)||(o=e),[n,s,o]}function ut(e,t,i,n,s){if("string"!=typeof t||!e)return;let[o,r,a]=ct(t,i,n);if(t in st){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};r=e(r)}const l=at(e),c=l[a]||(l[a]={}),u=lt(c,r,o?i:null);if(u)return void(u.oneOff=u.oneOff&&s);const d=rt(r,t.replace(Je,"")),h=o?function(e,t,i){return function n(s){const o=e.querySelectorAll(t);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return gt(s,{delegateTarget:r}),n.oneOff&&pt.off(e,s.type,t,i),i.apply(r,[s])}}(e,i,r):function(e,t){return function i(n){return gt(n,{delegateTarget:e}),i.oneOff&&pt.off(e,n.type,t),t.apply(e,[n])}}(e,r);h.delegationSelector=o?i:null,h.callable=r,h.oneOff=s,h.uidEvent=d,c[d]=h,e.addEventListener(a,h,o)}function dt(e,t,i,n,s){const o=lt(t[i],n,s);o&&(e.removeEventListener(i,o,Boolean(s)),delete t[i][o.uidEvent])}function ht(e,t,i,n){const s=t[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&dt(e,t,i,r.callable,r.delegationSelector)}function ft(e){return e=e.replace(et,""),st[e]||e}const pt={on(e,t,i,n){ut(e,t,i,n,!1)},one(e,t,i,n){ut(e,t,i,n,!0)},off(e,t,i,n){if("string"!=typeof t||!e)return;const[s,o,r]=ct(t,i,n),a=r!==t,l=at(e),c=l[r]||{},u=t.startsWith(".");if(void 0===o){if(u)for(const i of Object.keys(l))ht(e,l,i,t.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(tt,"");a&&!t.includes(s)||dt(e,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;dt(e,l,r,o,s?i:null)}},trigger(e,t,i){if("string"!=typeof t||!e)return null;const n=We();let s=null,o=!0,r=!0,a=!1;t!==ft(t)&&n&&(s=n.Event(t,i),n(e).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=gt(new Event(t,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&e.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function gt(e,t={}){for(const[i,n]of Object.entries(t))try{e[i]=n}catch(t){Object.defineProperty(e,i,{configurable:!0,get:()=>n})}return e}function mt(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function vt(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const yt={setDataAttribute(e,t,i){e.setAttribute(`data-bs-${vt(t)}`,i)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${vt(t)}`)},getDataAttributes(e){if(!e)return{};const t={},i=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1),t[i]=mt(e.dataset[n])}return t},getDataAttribute:(e,t)=>mt(e.getAttribute(`data-bs-${vt(t)}`))};class bt{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const i=Be(t)?yt.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...Be(t)?yt.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[i,n]of Object.entries(t)){const t=e[i],s=Be(t)?"element":$e(t);if(!new RegExp(n).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${n}".`)}}}class _t extends bt{constructor(e,t){super(),(e=Fe(e))&&(this._element=e,this._config=this._getConfig(t),De.set(this._element,this.constructor.DATA_KEY,this))}dispose(){De.remove(this._element,this.constructor.DATA_KEY),pt.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,i=!0){Qe(e,t,i)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return De.get(Fe(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.8"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const wt=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let i=e.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),t=i&&"#"!==i?i.trim():null}return t?t.split(",").map(e=>Ve(e)).join(","):null},Et={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const i=[];let n=e.parentNode.closest(t);for(;n;)i.push(n),n=n.parentNode.closest(t);return i},prev(e,t){let i=e.previousElementSibling;for(;i;){if(i.matches(t))return[i];i=i.previousElementSibling}return[]},next(e,t){let i=e.nextElementSibling;for(;i;){if(i.matches(t))return[i];i=i.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!ze(e)&&qe(e))},getSelectorFromElement(e){const t=wt(e);return t&&Et.findOne(t)?t:null},getElementFromSelector(e){const t=wt(e);return t?Et.findOne(t):null},getMultipleElementsFromSelector(e){const t=wt(e);return t?Et.find(t):[]}},xt=(e,t="hide")=>{const i=`click.dismiss${e.EVENT_KEY}`,n=e.NAME;pt.on(document,i,`[data-bs-dismiss="${n}"]`,function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),ze(this))return;const s=Et.getElementFromSelector(this)||this.closest(`.${n}`);e.getOrCreateInstance(s)[t]()})},St=".bs.alert",At=`close${St}`,Tt=`closed${St}`;class Ct extends _t{static get NAME(){return"alert"}close(){if(pt.trigger(this._element,At).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),pt.trigger(this._element,Tt),this.dispose()}static jQueryInterface(e){return this.each(function(){const t=Ct.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}})}}xt(Ct,"close"),Ge(Ct);const kt='[data-bs-toggle="button"]';class Pt extends _t{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(e){return this.each(function(){const t=Pt.getOrCreateInstance(this);"toggle"===e&&t[e]()})}}pt.on(document,"click.bs.button.data-api",kt,e=>{e.preventDefault();const t=e.target.closest(kt);Pt.getOrCreateInstance(t).toggle()}),Ge(Pt);const Lt=".bs.swipe",Ot=`touchstart${Lt}`,Mt=`touchmove${Lt}`,It=`touchend${Lt}`,Dt=`pointerdown${Lt}`,Nt=`pointerup${Lt}`,Vt={endCallback:null,leftCallback:null,rightCallback:null},$t={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class jt extends bt{constructor(e,t){super(),this._element=e,e&&jt.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Vt}static get DefaultType(){return $t}static get NAME(){return"swipe"}dispose(){pt.off(this._element,Lt)}_start(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),Ze(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=40)return;const t=e/this._deltaX;this._deltaX=0,t&&Ze(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(pt.on(this._element,Dt,e=>this._start(e)),pt.on(this._element,Nt,e=>this._end(e)),this._element.classList.add("pointer-event")):(pt.on(this._element,Ot,e=>this._start(e)),pt.on(this._element,Mt,e=>this._move(e)),pt.on(this._element,It,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const Bt=".bs.carousel",Ft=".data-api",qt="ArrowLeft",zt="ArrowRight",Ht="next",Rt="prev",Yt="left",Wt="right",Xt=`slide${Bt}`,Ut=`slid${Bt}`,Gt=`keydown${Bt}`,Zt=`mouseenter${Bt}`,Qt=`mouseleave${Bt}`,Kt=`dragstart${Bt}`,Jt=`load${Bt}${Ft}`,ei=`click${Bt}${Ft}`,ti="carousel",ii="active",ni=".active",si=".carousel-item",oi=ni+si,ri={[qt]:Wt,[zt]:Yt},ai={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},li={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class ci extends _t{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Et.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===ti&&this.cycle()}static get Default(){return ai}static get DefaultType(){return li}static get NAME(){return"carousel"}next(){this._slide(Ht)}nextWhenVisible(){!document.hidden&&qe(this._element)&&this.next()}prev(){this._slide(Rt)}pause(){this._isSliding&&je(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?pt.one(this._element,Ut,()=>this.cycle()):this.cycle())}to(e){const t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding)return void pt.one(this._element,Ut,()=>this.to(e));const i=this._getItemIndex(this._getActive());if(i===e)return;const n=e>i?Ht:Rt;this._slide(n,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&pt.on(this._element,Gt,e=>this._keydown(e)),"hover"===this._config.pause&&(pt.on(this._element,Zt,()=>this.pause()),pt.on(this._element,Qt,()=>this._maybeEnableCycle())),this._config.touch&&jt.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const e of Et.find(".carousel-item img",this._element))pt.on(e,Kt,e=>e.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder(Yt)),rightCallback:()=>this._slide(this._directionToOrder(Wt)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new jt(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=ri[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=Et.findOne(ni,this._indicatorsElement);t.classList.remove(ii),t.removeAttribute("aria-current");const i=Et.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);i&&(i.classList.add(ii),i.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;const i=this._getActive(),n=e===Ht,s=t||Ke(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=t=>pt.trigger(this._element,t,{relatedTarget:s,direction:this._orderToDirection(e),from:this._getItemIndex(i),to:o});if(r(Xt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),Ye(s),i.classList.add(l),s.classList.add(l),this._queueCallback(()=>{s.classList.remove(l,c),s.classList.add(ii),i.classList.remove(ii,c,l),this._isSliding=!1,r(Ut)},i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Et.findOne(oi,this._element)}_getItems(){return Et.find(si,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return Ue()?e===Yt?Rt:Ht:e===Yt?Ht:Rt}_orderToDirection(e){return Ue()?e===Rt?Yt:Wt:e===Rt?Wt:Yt}static jQueryInterface(e){return this.each(function(){const t=ci.getOrCreateInstance(this,e);if("number"!=typeof e){if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}}else t.to(e)})}}pt.on(document,ei,"[data-bs-slide], [data-bs-slide-to]",function(e){const t=Et.getElementFromSelector(this);if(!t||!t.classList.contains(ti))return;e.preventDefault();const i=ci.getOrCreateInstance(t),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===yt.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())}),pt.on(window,Jt,()=>{const e=Et.find('[data-bs-ride="carousel"]');for(const t of e)ci.getOrCreateInstance(t)}),Ge(ci);const ui=".bs.collapse",di=`show${ui}`,hi=`shown${ui}`,fi=`hide${ui}`,pi=`hidden${ui}`,gi=`click${ui}.data-api`,mi="show",vi="collapse",yi="collapsing",bi=`:scope .${vi} .${vi}`,_i='[data-bs-toggle="collapse"]',wi={parent:null,toggle:!0},Ei={parent:"(null|element)",toggle:"boolean"};class xi extends _t{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const i=Et.find(_i);for(const e of i){const t=Et.getSelectorFromElement(e),i=Et.find(t).filter(e=>e===this._element);null!==t&&i.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return wi}static get DefaultType(){return Ei}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(e=>e!==this._element).map(e=>xi.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(pt.trigger(this._element,di).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(vi),this._element.classList.add(yi),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(yi),this._element.classList.add(vi,mi),this._element.style[t]="",pt.trigger(this._element,hi)},this._element,!0),this._element.style[t]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(pt.trigger(this._element,fi).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,Ye(this._element),this._element.classList.add(yi),this._element.classList.remove(vi,mi);for(const e of this._triggerArray){const t=Et.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(yi),this._element.classList.add(vi),pt.trigger(this._element,pi)},this._element,!0)}_isShown(e=this._element){return e.classList.contains(mi)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=Fe(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(_i);for(const t of e){const e=Et.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=Et.find(bi,this._config.parent);return Et.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const i of e)i.classList.toggle("collapsed",!t),i.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each(function(){const i=xi.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}})}}pt.on(document,gi,_i,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of Et.getMultipleElementsFromSelector(this))xi.getOrCreateInstance(e,{toggle:!1}).toggle()}),Ge(xi);const Si="dropdown",Ai=".bs.dropdown",Ti=".data-api",Ci="ArrowUp",ki="ArrowDown",Pi=`hide${Ai}`,Li=`hidden${Ai}`,Oi=`show${Ai}`,Mi=`shown${Ai}`,Ii=`click${Ai}${Ti}`,Di=`keydown${Ai}${Ti}`,Ni=`keyup${Ai}${Ti}`,Vi="show",$i='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ji=`${$i}.${Vi}`,Bi=".dropdown-menu",Fi=Ue()?"top-end":"top-start",qi=Ue()?"top-start":"top-end",zi=Ue()?"bottom-end":"bottom-start",Hi=Ue()?"bottom-start":"bottom-end",Ri=Ue()?"left-start":"right-start",Yi=Ue()?"right-start":"left-start",Wi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Xi={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Ui extends _t{constructor(e,t){super(e,t),this._popper=null,this._parent=this._element.parentNode,this._menu=Et.next(this._element,Bi)[0]||Et.prev(this._element,Bi)[0]||Et.findOne(Bi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Wi}static get DefaultType(){return Xi}static get NAME(){return Si}toggle(){return this._isShown()?this.hide():this.show()}show(){if(ze(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!pt.trigger(this._element,Oi,e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".
2navbar-nav"))for(const e of[].concat(...document.body.children))pt.on(e,"mouseover",Re);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Vi),this._element.classList.add(Vi),pt.trigger(this._element,Mi,e)}}hide(){if(ze(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){if(!pt.trigger(this._element,Pi,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))pt.off(e,"mouseover",Re);this._popper&&this._popper.destroy(),this._menu.classList.remove(Vi),this._element.classList.remove(Vi),this._element.setAttribute("aria-expanded","false"),yt.removeDataAttribute(this._menu,"popper"),pt.trigger(this._element,Li,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!Be(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${Si.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){let e=this._element;"parent"===this._config.reference?e=this._parent:Be(this._config.reference)?e=Fe(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const t=this._getPopperConfig();this._popper=Oe(e,this._menu,t)}_isShown(){return this._menu.classList.contains(Vi)}_getPlacement(){const e=this._parent;if(e.classList.contains("dropend"))return Ri;if(e.classList.contains("dropstart"))return Yi;if(e.classList.contains("dropup-center"))return"top";if(e.classList.contains("dropdown-center"))return"bottom";const t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?qi:Fi:t?Hi:zi}
vendor: 10,260 bytes, line 2
2_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(yt.setDataAttribute(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,...Ze(this._config.popperConfig,[void 0,e])}}_selectMenuItem({key:e,target:t}){const i=Et.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(e=>qe(e));i.length&&Ke(i,t,e===ki,!i.includes(t)).focus()}static jQueryInterface(e){return this.each(function(){const t=Ui.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}static clearMenus(e){if(2===e.button||"keyup"===e.type&&"Tab"!==e.key)return;const t=Et.find(ji);for(const i of t){const t=Ui.getInstance(i);if(!t||!1===t._config.autoClose)continue;const n=e.composedPath(),s=n.includes(t._menu);if(n.includes(t._element)||"inside"===t._config.autoClose&&!s||"outside"===t._config.autoClose&&s)continue;if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const o={relatedTarget:t._element};"click"===e.type&&(o.clickEvent=e),t._completeHide(o)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),i="Escape"===e.key,n=[Ci,ki].includes(e.key);if(!n&&!i)return;if(t&&!i)return;e.preventDefault();const s=this.matches($i)?this:Et.prev(this,$i)[0]||Et.next(this,$i)[0]||Et.findOne($i,e.delegateTarget.parentNode),o=Ui.getOrCreateInstance(s);if(n)return e.stopPropagation(),o.show(),void o._selectMenuItem(e);o._isShown()&&(e.stopPropagation(),o.hide(),s.focus())}}pt.on(document,Di,$i,Ui.dataApiKeydownHandler),pt.on(document,Di,Bi,Ui.dataApiKeydownHandler),pt.on(document,Ii,Ui.clearMenus),pt.on(document,Ni,Ui.clearMenus),pt.on(document,Ii,$i,function(e){e.preventDefault(),Ui.getOrCreateInstance(this).toggle()}),Ge(Ui);const Gi="backdrop",Zi="show",Qi=`mousedown.bs.${Gi}`,Ki={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Ji={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class en extends bt{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return Ki}static get DefaultType(){return Ji}static get NAME(){return Gi}show(e){if(!this._config.isVisible)return void Ze(e);this._append();const t=this._getElement();this._config.isAnimated&&Ye(t),t.classList.add(Zi),this._emulateAnimation(()=>{Ze(e)})}hide(e){this._config.isVisible?(this._getElement().classList.remove(Zi),this._emulateAnimation(()=>{this.dispose(),Ze(e)})):Ze(e)}dispose(){this._isAppended&&(pt.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=Fe(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),pt.on(e,Qi,()=>{Ze(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){Qe(e,this._getElement(),this._config.isAnimated)}}const tn=".bs.focustrap",nn=`focusin${tn}`,sn=`keydown.tab${tn}`,on="backward",rn={autofocus:!0,trapElement:null},an={autofocus:"boolean",trapElement:"element"};class ln extends bt{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return rn}static get DefaultType(){return an}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),pt.off(document,tn),pt.on(document,nn,e=>this._handleFocusin(e)),pt.on(document,sn,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,pt.off(document,tn))}_handleFocusin(e){const{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;const i=Et.focusableChildren(t);0===i.length?t.focus():this._lastTabNavDirection===on?i[i.length-1].focus():i[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?on:"forward")}}const cn=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",un=".sticky-top",dn="padding-right",hn="margin-right";class fn{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,dn,t=>t+e),this._setElementAttributes(cn,dn,t=>t+e),this._setElementAttributes(un,hn,t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,dn),this._resetElementAttributes(cn,dn),this._resetElementAttributes(un,hn)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,i){const n=this.getWidth();this._applyManipulationCallback(e,e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+n)return;this._saveInitialAttribute(e,t);const s=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${i(Number.parseFloat(s))}px`)})}_saveInitialAttribute(e,t){const i=e.style.getPropertyValue(t);i&&yt.setDataAttribute(e,t,i)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,e=>{const i=yt.getDataAttribute(e,t);null!==i?(yt.removeDataAttribute(e,t),e.style.setProperty(t,i)):e.style.removeProperty(t)})}_applyManipulationCallback(e,t){if(Be(e))t(e);else for(const i of Et.find(e,this._element))t(i)}}const pn=".bs.modal",gn=`hide${pn}`,mn=`hidePrevented${pn}`,vn=`hidden${pn}`,yn=`show${pn}`,bn=`shown${pn}`,_n=`resize${pn}`,wn=`click.dismiss${pn}`,En=`mousedown.dismiss${pn}`,xn=`keydown.dismiss${pn}`,Sn=`click${pn}.data-api`,An="modal-open",Tn="show",Cn="modal-static",kn={backdrop:!0,focus:!0,keyboard:!0},Pn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ln extends _t{constructor(e,t){super(e,t),this._dialog=Et.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new fn,this._addEventListeners()}static get Default(){return kn}static get DefaultType(){return Pn}static get NAME(){return"modal"}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||pt.trigger(this._element,yn,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(An),this._adjustDialog(),this._backdrop.show(()=>this._showElement(e)))}hide(){this._isShown&&!this._isTransitioning&&(pt.trigger(this._element,gn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Tn),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated())))}dispose(){pt.off(window,pn),pt.off(this._dialog,pn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new en({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new ln({trapElement:this._element})}_showElement(e){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const t=Et.findOne(".modal-body",this._dialog);t&&(t.scrollTop=0),Ye(this._element),this._element.classList.add(Tn),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,pt.trigger(this._element,bn,{relatedTarget:e})},this._dialog,this._isAnimated())}_addEventListeners(){pt.on(this._element,xn,e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())}),pt.on(window,_n,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),pt.on(this._element,En,e=>{pt.one(this._element,wn,t=>{this._element===e.target&&this._element===t.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(An),this._resetAdjustments(),this._scrollBar.reset(),pt.trigger(this._element,vn)})}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(pt.trigger(this._element,mn).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._element.style.overflowY;"hidden"===t||this._element.classList.contains(Cn)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add(Cn),this._queueCallback(()=>{this._element.classList.remove(Cn),this._queueCallback(()=>{this._element.style.overflowY=t},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),i=t>0;if(i&&!e){const e=Ue()?"paddingLeft":"paddingRight";this._element.style[e]=`${t}px`}if(!i&&e){const e=Ue()?"paddingRight":"paddingLeft";this._element.style[e]=`${t}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each(function(){const i=Ln.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method n
2amed "${e}"`);i[e](t)}})}}pt.on(document,Sn,'[data-bs-toggle="modal"]',function(e){const t=Et.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),pt.one(t,yn,e=>{e.defaultPrevented||pt.one(t,vn,()=>{qe(this)&&this.focus()})});const i=Et.findOne(".modal.show");i&&Ln.getInstance(i).hide(),Ln.getOrCreateInstance(t).toggle(this)}),xt(Ln),Ge(Ln);const On=".bs.offcanvas",Mn=".data-api",In=`load${On}${Mn}`,Dn="show",Nn="showing",Vn="hiding",$n=".offcanvas.show",jn=`show${On}`,Bn=`shown${On}`,Fn=`hide${On}`,qn=`hidePrevented${On}`,zn=`hidden${On}`,Hn=`resize${On}`,Rn=`click${On}${Mn}`,Yn=`keydown.dismiss${On}`,Wn={backdrop:!0,keyboard:!0,scroll:!1},Xn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Un extends _t{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Wn}static get DefaultType(){return Xn}static get NAME(){return"offcanvas"}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||pt.trigger(this._element,jn,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new fn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Nn),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Dn),this._element.classList.remove(Nn),pt.trigger(this._element,Bn,{relatedTarget:e})},this._element,!0))}hide(){this._isShown&&(pt.trigger(this._element,Fn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Vn),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove(Dn,Vn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new fn).reset(),pt.trigger(this._element,zn)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=Boolean(this._config.backdrop);return new en({className:"offcanvas-backdrop",isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?()=>{"static"!==this._config.backdrop?this.hide():pt.trigger(this._element,qn)}:null})}_initializeFocusTrap(){return new ln({trapElement:this._element})}_addEventListeners(){pt.on(this._element,Yn,e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():pt.trigger(this._element,qn))})}static jQueryInterface(e){return this.each(function(){const t=Un.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}})}}pt.on(document,Rn,'[data-bs-toggle="offcanvas"]',function(e){const t=Et.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),ze(this))return;pt.one(t,zn,()=>{qe(this)&&this.focus()});const i=Et.findOne($n);i&&i!==t&&Un.getInstance(i).hide(),Un.getOrCreateInstance(t).toggle(this)}),pt.on(window,In,()=>{for(const e of Et.find($n))Un.getOrCreateInstance(e).show()}),pt.on(window,Hn,()=>{for(const e of Et.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(e).position&&Un.getOrCreateInstance(e).hide()}),xt(Un),Ge(Un);const Gn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Zn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Kn=(e,t)=>{const i=e.nodeName.toLowerCase();return t.includes(i)?!Zn.has(i)||Boolean(Qn.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(i))},Jn={allowList:Gn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},es={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ts={entry:"(string|element|function|null)",selector:"(string|element)"};class is extends bt{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Jn}static get DefaultType(){return es}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map(e=>
vendor: 9,975 bytes, line 2
2this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,i]of Object.entries(this._config.content))this._setContent(e,i,t);const t=e.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&t.classList.add(...i.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,i]of Object.entries(e))super._typeCheckConfig({selector:t,entry:i},ts)}_setContent(e,t,i){const n=Et.findOne(i,e);n&&((t=this._resolvePossibleFunction(t))?Be(t)?this._putElementInTemplate(Fe(t),n):this._config.html?n.innerHTML=this._maybeSanitize(t):n.textContent=t:n.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,i){if(!e.length)return e;if(i&&"function"==typeof i)return i(e);const n=(new window.DOMParser).parseFromString(e,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const e of s){const i=e.nodeName.toLowerCase();if(!Object.keys(t).includes(i)){e.remove();continue}const n=[].concat(...e.attributes),s=[].concat(t["*"]||[],t[i]||[]);for(const t of n)Kn(t,s)||e.removeAttribute(t.nodeName)}return n.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return Ze(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const ns=new Set(["sanitize","allowList","sanitizeFn"]),ss="fade",os="show",rs=".tooltip-inner",as=".modal",ls="hide.bs.modal",cs="hover",us="focus",ds="click",hs={AUTO:"auto",TOP:"top",RIGHT:Ue()?"left":"right",BOTTOM:"bottom",LEFT:Ue()?"right":"left"},fs={allowList:Gn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},ps={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class gs extends _t{constructor(e,t){super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return fs}static get DefaultType(){return ps}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),pt.off(this._element.closest(as),ls,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=pt.trigger(this._element,this.constructor.eventName("show")),t=(He(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),pt.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(os),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))pt.on(e,"mouseover",Re);this._queueCallback(()=>{pt.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!pt.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(os),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))pt.off(e,"mouseover",Re);this._activeTrigger[ds]=!1,this._activeTrigger[us]=!1,this._activeTrigger[cs]=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),pt.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(ss,os),t.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",i),this._isAnimated()&&t.classList.add(ss),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new is({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[rs]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ss)}_isShown(){return this.tip&&this.tip.classList.contains(os)}_createPopper(e){const t=Ze(this._config.placement,[this,e,this._element]),i=hs[t.toUpperCase()];return Oe(this._element,e,this._getPopperConfig(i))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return Ze(e,[this._element,this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...Ze(this._config.popperConfig,[void 0,t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)pt.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger[ds]=!(t._isShown()&&t._activeTrigger[ds]),t.toggle()});else if("manual"!==t){const e=t===cs?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=t===cs?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");pt.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?us:cs]=!0,t._enter()}),pt.on(this._element,i,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?us:cs]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},pt.on(this._element.closest(as),ls,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=yt.getDataAttributes(this._element);for(const e of Object.keys(t))ns.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:Fe(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,i]of Object.entries(this._config))this.constructor.Default[t]!==i&&(e[t]=i);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each(function(){const t=gs.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method n
2amed "${e}"`);t[e]()}})}}Ge(gs);const ms=".popover-header",vs=".popover-body",ys={...gs.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},bs={...gs.DefaultType,content:"(null|string|element|function)"};class _s extends gs{static get Default(){return ys}static get DefaultType(){return bs}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[ms]:this._getTitle(),[vs]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each(function(){const t=_s.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}Ge(_s);const ws=".bs.scrollspy",Es=`activate${ws}`,xs=`click${ws}`,Ss=`load${ws}.data-api`,As="active",Ts="[href]",Cs=".nav-link",ks=`${Cs}, .nav-item > ${Cs}, .list-group-item`,Ps={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Ls={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Os extends _t{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Ps}static get DefaultType(){return Ls}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=Fe(e.target)||document.body,e.rootMargin=e.offset?`${e.offset}px 0px -30%`:e.rootMargin,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(pt.off(this._config.target,xs),pt.on(this._config.target,xs,Ts,e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const i=this._rootElement||window,n=t.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}}))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),e)}_observerCallback(e){const t=e=>this._targetLinks.get(`#${e.target.id}`),i=e=>{this._previousScrollData.visibleEntryTop=e.target.offsetTop,this._process(t(e))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of e){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(o));continue}const e=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&e){if(i(o),!n)return}else s||e||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=Et.find(Ts,this._config.target);for(const t of e){if(!t.hash||ze(t))continue;const e=Et.findOne(decodeURI(t.hash),this._element);qe(e)&&(this._targetLinks.set(decodeURI(t.hash),t),this._observableSections.set(t.hash,e))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add(As),this._activateParents(e),pt.trigger(this._element,Es,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("dropdown-item"))Et.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add(As);else for(const t of Et.parents(e,".nav, .list-group"))for(const e of Et.prev(t,ks))e.classList.add(As)}_clearActiveClass(e){e.classList.remove(As);const t=Et.find(`${Ts}.${As}`,e);for(const e of t)e.classList.remove(As)}static jQueryInterface(e){return this.each(function(){const t=Os.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method n
2amed "${e}"`);t[e]()}})}}pt.on(window,Ss,()=>{for(const e of Et.find('[data-bs-spy="scroll"]'))Os.getOrCreateInstance(e)}),Ge(Os);const Ms=".bs.tab",Is=`hide${Ms}`,Ds=`hidden${Ms}`,Ns=`show${Ms}`,Vs=`shown${Ms}`,$s=`click${Ms}`,js=`keydown${Ms}`,Bs=`load${Ms}`,Fs="ArrowLeft",qs="ArrowRight",zs="ArrowUp",Hs="ArrowDown",Rs="Home",Ys="End",Ws="active",Xs="fade",Us="show",Gs=".dropdown-toggle",Zs=`:not(${Gs})`,Qs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Ks=`.nav-link${Zs}, .list-group-item${Zs}, [role="tab"]${Zs}, ${Qs}`,Js=`.${Ws}[data-bs-toggle="tab"], .${Ws}[data-bs-toggle="pill"], .${Ws}[data-bs-toggle="list"]`;class eo extends _t{constructor(e){super(e),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),pt.on(this._element,js,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),i=t?pt.trigger(t,Is,{relatedTarget:e}):null;pt.trigger(e,Ns,{relatedTarget:t}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add(Ws),this._activate(Et.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleDropDown(e,!0),pt.trigger(e,Vs,{relatedTarget:t})):e.classList.add(Us)},e,e.classList.contains(Xs)))}_deactivate(e,t){e&&(e.classList.remove(Ws),e.blur(),this._deactivate(Et.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleDropDown(e,!1),pt.trigger(e,Ds,{relatedTarget:t})):e.classList.remove(Us)},e,e.classList.contains(Xs)))}_keydown(e){if(![Fs,qs,zs,Hs,Rs,Ys].includes(e.key))return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(e=>!ze(e));let i;if([Rs,Ys].includes(e.key))i=t[e.key===Rs?0:t.length-1];else{const n=[qs,Hs].includes(e.key);i=Ke(t,e.target,n,!0)}i&&(i.focus({preventScroll:!0}),eo.getOrCreateInstance(i).show())}_getChildren(){return Et.find(Ks,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),i=this._getOuterElement(e);e.setAttribute("aria-selected",t),i!==e&&this._setAttributeIfNotExists(i,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=Et.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleDropDown(e,t){const i=this._getOuterElement(e);if(!i.classList.contains("dropdown"))return;const n=(e,n)=>{const s=Et.findOne(e,i);s&&s.classList.toggle(n,t)};n(Gs,Ws),n(".dropdown-menu",Us),i.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,i){e.hasAttribute(t)||e.setAttribute(t,i)}_elemIsActive(e){return e.classList.contains(Ws)}_getInnerElement(e){return e.matches(Ks)?e:Et.findOne(Ks,e)}
2_getOuterElement(e){return e.closest(".nav-item, .list-group-item")||e}static jQueryInterface(e){return this.each(function(){const t=eo.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}})}}pt.on(document,$s,Qs,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),ze(this)||eo.getOrCreateInstance(this).show()}),pt.on(window,Bs,()=>{for(const e of Et.find(Js))eo.getOrCreateInstance(e)}),Ge(eo);const to=".bs.toast",io=`mouseover${to}`,no=`mouseout${to}`,so=`focusin${to}`,oo=`focusout${to}`,ro=`hide${to}`,ao=`hidden${to}`,lo=`show${to}`,co=`shown${to}`,uo="hide",ho="show",fo="showing",po={animation:"boolean",autohide:"boolean",delay:"number"},go={animation:!0,autohide:!0,delay:5e3};class mo extends _t{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return go}static get DefaultType(){return po}static get NAME(){return"toast"}show(){pt.trigger(this._element,lo).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(uo),Ye(this._element),this._element.classList.add(ho,fo),this._queueCallback(()=>{this._element.classList.remove(fo),pt.trigger(this._element,co),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(pt.trigger(this._element,ro).defaultPrevented||(this._element.classList.add(fo),this._queueCallback(()=>{this._element.classList.add(uo),this._element.classList.remove(fo,ho),pt.trigger(this._element,ao)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(ho),super.dispose()}isShown(){return this._element.classList.contains(ho)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const i=e.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){pt.on(this._element,io,e=>this._onInteraction(e,!0)),pt.on(this._element,no,e=>this._onInteraction(e,!1)),pt.on(this._element,so,e=>this._onInteraction(e,!0)),pt.on(this._element,oo,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){const t=mo.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}})}}xt(mo),Ge(mo);var vo=function(){return vo=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++)for(var s in t=arguments[i])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e},vo.apply(this,arguments)},yo=function(){function e(e,t,i){var n=this;this.endVal=t,this.options=i,this.version="2.9.0",this.defaults={startVal:0,decimalPlaces:0,duration:2,useEasing:!0,useGrouping:!0,useIndianSeparators:!1,smartEasingThreshold:999,smartEasingAmount:333,separator:",",decimal:".",prefix:"",suffix:"",enableScrollSpy:!1,scrollSpyDelay:200,scrollSpyOnce:!1},this.finalEndVal=null,this.useEasing=!0,this.countDown=!1,this.error="",this.startVal=0,this.paused=!0,this.once=!1,this.count=function(e){n.startTime||(n.startTime=e);var t=e-n.startTime;n.remaining=n.duration-t,n.useEasing?n.countDown?n.frameVal=n.startVal-n.easingFn(t,0,n.startVal-n.endVal,n.duration):n.frameVal=n.easingFn(t,n.startVal,n.endVal-n.startVal,n.duration):n.frameVal=n.startVal+(n.endVal-n.startVal)*(t/n.duration);var i=n.countDown?n.frameVal<n.endVal:n.frameVal>n.endVal;n.frameVal=i?n.endVal:n.frameVal,n.frameVal=Number(n.frameVal.toFixed(n.options.decimalPlaces)),n.printValue(n.frameVal),t<n.duration?n.rAF=requestAnimationFrame(n.count):null!==n.finalEndVal?n.update(n.finalEndVal):n.options.onCompleteCallback&&n.options.onCompleteCallback()},this.formatNumber=function(e){var t,i,s,o,r=e<0?"-":"";t=Math.abs(e).toFixed(n.options.decimalPlaces);
2var a=(t+="").split(".");if(i=a[0],s=a.length>1?n.options.decimal+a[1]:"",n.options.useGrouping){o="";for(var l=3,c=0,u=0,d=i.length;u<d;++u)n.options.useIndianSeparators&&4===u&&(l=2,c=1),0!==u&&c%l==0&&(o=n.options.separator+o),c++,o=i[d-u-1]+o;i=o}return n.options.numerals&&n.options.numerals.length&&(i=i.replace(/[0-9]/g,function(e){return n.options.numerals[+e]}),s=s.replace(/[0-9]/g,function(e){return n.options.numerals[+e]})),r+n.options.prefix+i+s+n.options.suffix},this.easeOutExpo=function(e,t,i,n){return i*(1-Math.pow(2,-10*e/n))*1024/1023+t},this.options=vo(vo({},this.defaults),i),this.formattingFn=this.options.formattingFn?this.options.formattingFn:this.formatNumber,this.easingFn=this.options.easingFn?this.options.easingFn:this.easeOutExpo,this.el="string"==typeof e?document.getElementById(e):e,t=null==t?this.parse(this.el.innerHTML):t,this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.endVal=this.validateValue(t),this.options.decimalPlaces=Math.max(this.options.decimalPlaces),this.resetDuration(),this.options.separator=String(this.options.separator),this.useEasing=this.options.useEasing,""===this.options.separator&&(this.options.useGrouping=!1),this.el?this.printValue(this.startVal):this.error="[CountUp] target is null or undefined","undefined"!=typeof window&&this.options.enableScrollSpy&&(this.error?console.error(this.error,e):(window.onScrollFns=window.onScrollFns||[],window.onScrollFns.push(function(){return n.handleScroll(n)}),window.onscroll=function(){window.onScrollFns.forEach(function(e){return e()})},this.handleScroll(this)))}return e.prototype.handleScroll=function(e){if(e&&window&&!e.once){var t=window.innerHeight+window.scrollY,i=e.el.getBoundingClientRect(),n=i.top+window.pageYOffset,s=i.top+i.height+window.pageYOffset;s<t&&s>window.scrollY&&e.paused?(e.paused=!1,setTimeout(function(){return e.start()},e.options.scrollSpyDelay),e.options.scrollSpyOnce&&(e.once=!0)):(window.scrollY>s||n>t)&&!e.paused&&e.reset()}},e.prototype.determineDirectionAndSmartEasing=function(){var e=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>e;var t=e-this.startVal;if(Math.abs(t)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=e;var i=this.countDown?1:-1;this.endVal=e+i*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=e,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},e.prototype.start=function(e){this.error||(this.options.onStartCallback&&this.options.onStartCallback(),e&&(this.options.onCompleteCallback=e),this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},e.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},e.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},e.prototype.update=function(e){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(e),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},e.prototype.printValue=function(e){var t;if(this.el){var i=this.formattingFn(e);(null===(t=this.options.plugin)||void 0===t?void 0:t.render)?this.options.plugin.render(this.el,i):"INPUT"===this.el.tagName?this.el.value=i:"text"===this.el.tagName||"tspan"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i}},e.prototype.ensureNumber=function(e){return"number"==typeof e&&!isNaN(e)},e.prototype.validateValue=function(e){var t=Number(e);return this.ensureNumber(t)?t:(this.error="[CountUp] invalid start or end value: ".concat(e),null)},e.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},e.prototype.parse=function(e){var t=function(e){return e.replace(/([.,' ])/g,"\\$1")},i=t(this.options.separator),n=t(this.options.decimal),s=e.replace(new RegExp(i,"g"),"").replace(new RegExp(n,"g"),".");return parseFloat(s)},e}(),bo=i(823),_o=i.n(bo);const wo={},Eo={};function xo({plugins:e,provider:t,type:i,player:n}){(function(e){const t=[],i=Object.keys(wo);
2return e.forEach(e=>{if(!i.includes(e))throw new Error(`vlitejs :: Unknown plugin "${e}".`);t.push({id:e,Plugin:wo[e],options:Eo[e]})}),t})(e).forEach(({id:e,Plugin:s,options:o})=>{const r=new s({player:n,options:o});if(n.plugins[e]=r,!r.providers.includes(t)||!r.types.includes(i))throw new Error(`vlitejs :: The "${e}" plugin is only compatible with providers:"${r.providers}" and types:"${r.types}"`);r.init()})}const So={html5:function(e){return class extends e{constructor(e){super(e),this.events=[{type:"timeupdate",listener:super.onTimeUpdate},{type:"ended",listener:super.onMediaEnded},{type:"playing",listener:this.onPlaying},{type:"waiting",listener:this.onWaiting},{type:"seeking",listener:this.onSeeking},{type:"seeked",listener:this.onSeeked}]}init(){this.waitUntilVideoIsReady().then(()=>{this.addSpecificEvents(),super.onReady()})}waitUntilVideoIsReady(){return new window.Promise(e=>{this.media.readyState>=2&&this.media.duration||0===this.media.readyState&&"none"===this.media.preload?e():(this.media.addEventListener("loadedmetadata",e,{once:!0}),this.media.addEventListener("canplay",e,{once:!0}))})}addSpecificEvents(){this.events.forEach(e=>{this.media.addEventListener(e.type,e.listener.bind(this))})}getInstance(){return this.media}getCurrentTime(){return new window.Promise(e=>e(this.media.currentTime))}getDuration(){return new window.Promise(e=>e(this.media.duration))}methodPlay(){this.media.play()}methodPause(){this.media.pause()}methodSetVolume(e){this.media.volume=e}methodGetVolume(){return new window.Promise(e=>e(this.media.volume))}methodMute(){this.media.muted=!0,this.media.setAttribute("muted","")}methodUnMute(){this.media.muted=!1,this.media.removeAttribute("muted")}methodSeekTo(e){this.media.currentTime=e}
2onWaiting(){this.loading(!0)}onPlaying(){this.loading(!1)}onSeeking(){this.loading(!0)}onSeeked(){this.loading(!1)}removeSpecificEvents(){this.events.forEach(e=>{this.media.removeEventListener(e.type,e.listener)})}destroy(){this.removeSpecificEvents(),super.destroy()}}}},Ao={};function To(e){const t=1e3*e,i=t/1e3/60|0,n=t/1e3%60|0;let s="";return s+=i<10?"0":"",s+=`${i}:`,s+=n<10?"0":"",s+=n,s}function Co(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function ko({target:e,selectorString:t,nodeName:i}){return(i=[].concat(i)).some(i=>e.nodeName.toLowerCase()===i&&e.matches(t))}function Po({isMuted:e}){return`<button class="v-volumeButton v-controlButton${e?" v-controlPressed":""}"><svg class="v-iconUnpressed" viewBox="0 0 18 17" xmlns="http://www.w3.org/2000/svg"><path d="M0 6.461v4c0 .55.45 1 1 1h3l3.29 3.29c.63.63 1.71.18 1.71-.71V2.871c0-.89-1.08-1.34-1.71-.71L4 5.461H1c-.55 0-1 .45-1 1Zm13.5 2a4.5 4.5 0 0 0-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02ZM11 .911v.2c0 .38.25.71.6.85a7.004 7.004 0 0 1 4.4 6.5c0 2.94-1.82 5.47-4.4 6.5-.36.14-.6.47-.6.85v.2c0 .63.63 1.07 1.21.85a8.98 8.98 0 0 0 5.79-8.4c0-3.84-2.4-7.11-5.79-8.4-.58-.23-1.21.22-1.21.85Z"/></svg><svg class="v-iconPressed" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M.63.292a.996.996 0 0 0 0 1.41l3.66 3.66-.29.3H1c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h3l3.29 3.29c.63.63 1.71.18 1.71-.71v-4.17l4.18 4.18c-.49.37-1.02.68-1.6.91-.36.15-.58.53-.58.92 0 .72.73 1.18 1.39.91.8-.33 1.55-.77 2.22-1.31l1.34 1.34a.997.997 0 1 0 1.41-1.41L2.05.293c-.39-.39-1.02-.39-1.42 0ZM16 8.662c0 .82-.15 1.61-.41 2.34l1.53 1.53c.56-1.17.88-2.48.88-3.87 0-3.83-2.4-7.11-5.78-8.4
2-.59-.23-1.22.23-1.22.86v.19c0 .38.25.71.61.85 2.57 1.04 4.39 3.56 4.39 6.5Zm-8.71-6.29-.17.17L9 4.422v-1.35c0-.89-1.08-1.33-1.71-.7Zm6.21 6.29a4.5 4.5 0 0 0-2.5-4.03v1.79l2.48 2.48c.01-.08.02-.16.02-.24Z"/></svg></button>`}class Lo{constructor({player:e,type:t}){this.player=e,this.type=t,this.touchEvents=["touchstart","touchmove","touchend"],this.onInputProgressBar=this.onInputProgressBar.bind(this),this.onTouchEventProgressBar=this.onTouchEventProgressBar.bind(this),this.onClickOnControlBar=this.onClickOnControlBar.bind(this),this.togglePlayPause=this.togglePlayPause.bind(this),this.toggleVolume=this.toggleVolume.bind(this),this.toggleFullscreen=this.toggleFullscreen.bind(this)}init(){this.render(),this.cacheElements(),this.addEvents()}cacheElements(){const e=this.player.elements.container.querySelector(".v-controlBar");e&&(this.player.elements.controlBar=e,this.player.elements.playPause=e.querySelector(".v-playPauseButton"),this.player.elements.progressBar=e.querySelector(".v-progressBar"),this.player.elements.currentTime=e.querySelector(".v-currentTime"),this.player.elements.duration=e.querySelector(".v-duration"),this.player.elements.volume=e.querySelector(".v-volumeButton"),this.player.elements.fullscreen=e.querySelector(".v-fullscreenButton"),this.player.elements.volume&&this.player.elements.volume.setAttribute("aria-label",this.player.isMuted?"Unmute":"Mute"))}render(){this.player.elements.container.insertAdjacentHTML("beforeend",this.getTemplate())}onReady(){this.player.getDuration().then(e=>{this.player.elements.progressBar&&this.player.elements.progressBar.setAttribute("aria-valuemax",`${Math.round(e)}`),this.player.elements.duration&&(this.player.elements.duration.innerHTML=To(e))})}addEvents(){var e;this.player.elements.progressBar&&(this.player.elements.progressBar.addEventListener("input",this.onInputProgressBar),this.player.isTouch&&this.touchEvents.forEach(e=>{this.player.elements.progressBar.addEventListener(e,this.onTouchEventProgressBar)})),null===(e=this.player.elements.controlBar)||void 0===e||e.addEventListener("click",this.onClickOnControlBar)}onTouchEventProgressBar(e){e.preventDefault();const t=e.target,i=Number.parseFloat(t.getAttribute("max")||"100"),n=t.getBoundingClientRect(),s=(e.changedTouches[0].clientX-n.left)/n.width*100;t.value=""+100*s/i,t.dispatchEvent(new Event("input"))}onInputProgressBar(e){const t=e.target;t.style.setProperty("--vlite-progressValue",`${t.value}%`),this.player.elements.outerContainer.classList.contains("v-firstStart")&&this.player.play(),this.player.getDuration().then(e=>{this.player.seekTo(Number.parseFloat(t.value)*e/100)})}onClickOnControlBar(e){const t=e.target,i=ko({target:t,selectorString:".v-playPauseButton",nodeName:["button"]}),n=ko({target:t,selectorString:".v-volumeButton",nodeName:["button"]}),s=ko({target:t,selectorString:".v-fullscreenButton",nodeName:["button"]});i?this.togglePlayPause(e):n?this.toggleVolume(e):s&&this.toggleFullscreen(e),(i||n||s)&&this.player.elements.container.focus(),this.player.Vlitejs.startAutoHideTimer()}togglePlayPause(e){e.preventDefault(),this.player.elements.outerContainer.classList.contains("v-paused")?this.player.play():this.player.pause()}toggleVolume(e){e.preventDefault(),this.player.elements.volume.classList.contains("v-controlPressed")?this.player.unMute():this.player.mute()}toggleFullscreen(e){if(e.preventDefault(),this.player.isFullScreen)this.isOrientationApiAvailable()&&window.screen.orientation.unlock(),this.player.exitFullscreen();else{this.player.requestFullscreen();try{window.matchMedia("(orientation:portrait)").matches&&this.isOrientationApiAvailable()&&window.screen.orientation.lock("landscape").catch(()=>{})}catch(e){}}}isOrientationApiAvailable(){return window.screen.orientation&&!window.screen.mozOrientation}getTemplate(){return`${function({options:e,isMuted:t,isVideo:i}){return i?`<div class="v-controlBar">${e.playPause?'<button class="v-playPauseButton v-controlButton" aria-label="Play"><svg class="v-iconUnpressed" viewBox="0 0 11 13" xmlns="http://www.w3.org/2000/svg"><path d="M0 1v10.36c0 .79.87 1.27 1.54.84l8.14-5.18a1 1 0 0 0 0-1.69L1.54.16A.998.998 0 0 0 0 1Z"/></svg>
2<svg class="v-iconPressed" viewBox="0 0 12 14" xmlns="http://www.w3.org/2000/svg"><path d="M2 14c1.1 0 2-.9 2-2V2c0-1.1-.9-2-2-2S0 .9 0 2v10c0 1.1.9 2 2 2ZM8 2v10c0 1.1.9 2 2 2s2-.9 2-2V2c0-1.1-.9-2-2-2S8 .9 8 2Z"/></svg></button>':""}${e.time?'<div class="v-time"><span class="v-currentTime">00:00</span> / <span class="v-duration"></span></div>':""}${e.progressBar?'<input type="range" class="v-progressBar v-progressBarStyle" min="0" max="100" step="0.01" value="0" aria-label="Seek" aria-valuemin="0" />':""}${e.volume?Po({isMuted:t}):""}${e.fullscreen?'<button class="v-fullscreenButton v-controlButton" aria-label="Enter fullscreen"><svg class="v-iconUnpressed" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><path d="M1 9c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1s-.45-1-1-1H2v-2c0-.55-.45-1-1-1Zm0-4c.55 0 1-.45 1-1V2h2c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v3c0 .55.45 1 1 1Zm11 7h-2c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1s-1 .45-1 1v2ZM9 1c0 .55.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1h-3c-.55 0-1 .45-1 1Z"/></svg><svg class="v-iconPressed" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><path d="M1 11h2v2c0 .55.45 1 1 1s1-.45 1-1v-3c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1Zm2-8H1c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1S3 .45 3 1v2Zm7 11c.55 0 1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1h-3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1Zm1-11V1c0-.55-.45-1-1-1S9 .45 9 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1s-.45-1-1-1h-2Z"/></svg></span></button>':""}</div>`:`<div class="v-controlBar">${e.playPause?'<button class="v-playPauseButton v-controlButton" aria-label="Play"><svg class="v-iconUnpressed" viewBox="0 0 11 13" xmlns="http://www.w3.org/2000/svg"><path d="M0 1v10.36c0 .79.87 1.27 1.54.84l8.14-5.18a1 1 0 0 0 0-1.69L1.54.16A.998.998 0 0 0 0 1Z"/></svg><svg class="v-iconPressed" viewBox="0 0 12 14" xmlns="http://www.w3.org/2000/svg"><path d="M2 14c1.1 0 2-.9 2-2V2c0-1.1-.9-2-2-2S0 .9 0 2v10c0 1.1.9 2 2 2ZM8 2v10c0 1.1.9 2 2 2s2-.9 2-2V2c0-1.1-.9-2-2-2S8 .9 8 2Z"/></svg></button>':""}${e.time?'<div class="v-time"><span class="v-currentTime">00:00</span> / <span class="v-duration"></span></div>':""}${e.progressBar?'<input type="range" class="v-progressBar v-progressBarStyle" min="0" max="100" step="0.01" value="0" aria-label="Seek" aria-valuemin="0" />':""}${e.volume?Po({isMuted:t}):""}</div>`}({options:this.player.options,isMuted:this.player.isMuted,isVideo:"video"===this.type})}`}removeEvents(){var e;this.player.elements.progressBar&&(this.player.elements.progressBar.removeEventListener("input",this.onInputProgressBar),this.player.isTouch&&this.touchEvents.forEach(e=>{this.player.elements.progressBar.removeEventListener(e,this.onTouchEventProgressBar)})),null===(e=this.player.elements.controlBar)||void 0===e||e.removeEventListener("click",this.onClickOnControlBar)}destroy(){var e;this.removeEvents(),null===(e=this.player.elements.controlBar)||void 0===e||e.remove()}}class Oo{constructor({Vlitejs:e,type:t}){this.Vlitejs=e,this.type=t,this.plugins={},this.media=e.media,this.options=e.options,this.isCast=!1,this.isLinearAd=!1,this.elements={container:e.container,outerContainer:e.outerContainer,bigPlay:e.container.querySelector(".v-bigPlay"),poster:e.container.querySelector(".v-poster"),controlBar:null,playPause:null,progressBar:null,currentTime:null,duration:null,volume:null,fullscreen:null},this.isFullScreen=!1,this.isMuted=this.options.muted,this.isPaused=null,this.playerEvents=[],this.isTouch=Co(),this.controlBar=new Lo({player:this,type:t})}build(){this.options.controls&&this.controlBar.init(),this.init()}onReady(){this.options.muted&&this.mute(),this.media.classList.add("v-media"),this.media.setAttribute("tabindex","-1"),this.options.autoplay&&(!this.media.muted&&this.mute(),this.play()),this.Vlitejs.onReady instanceof Function&&this.Vlitejs.onReady.call(this,this),"none"===this.media.preload&&"html5"===this.Vlitejs.provider?this.media.addEventListener("loadedmetadata",()=>this.triggerOnReady()):this.triggerOnReady(),this.loading(!1)}triggerOnReady(){this.options.controls&&this.controlBar.onReady(),Object.keys(this.plugins).forEac
2h(e=>{this.plugins[e].onReady instanceof Function&&this.plugins[e].onReady()})}on(e,t){t instanceof Function&&(this.playerEvents.push({type:e,listener:t}),this.elements.container.addEventListener(e,t))}off(e,t){t instanceof Function&&this.elements.container.removeEventListener(e,t)}dispatchEvent(e,t){this.elements.container.dispatchEvent(new window.CustomEvent(e,{detail:t}))}loading(e){this.elements.outerContainer.classList[e?"add":"remove"]("v-loading"),this.dispatchEvent("progress")}onTimeUpdate(){this.options.time&&Promise.all([this.getCurrentTime(),this.getDuration()]).then(([e,t])=>this.updateProgressBar({seconds:e,duration:t}))}updateProgressBar({seconds:e,duration:t,isRemote:i=!1}){const n=Math.round(e);if(this.elements.progressBar){const i=100*n/t;this.elements.progressBar.value=`${i}`,this.elements.progressBar.style.setProperty("--vlite-progressValue",`${i}%`),this.elements.progressBar.setAttribute("aria-valuenow",`${Math.round(e)}`)}this.elements.currentTime&&(this.elements.currentTime.innerHTML=To(n)),!i&&this.dispatchEvent("timeupdate")}onMediaEnded(){this.options.loop?this.play():(this.elements.outerContainer.classList.replace("v-playing","v-paused"),this.elements.outerContainer.classList.add("v-firstStart"),this.isPaused=null),this.elements.poster&&this.elements.poster.classList.add("v-active"),"video"===this.type&&this.elements.bigPlay&&this.elements.bigPlay.setAttribute("aria-label","Play"),this.elements.playPause&&(this.elements.playPause.setAttribute("aria-label","Play"),this.elements.playPause.classList.remove("v-controlPressed")),this.elements.progressBar&&(this.elements.progressBar.value="0",this.elements.progressBar.style.setProperty("--vlite-progressValue","0%"),this.elements.progressBar.removeAttribute("aria-valuenow")),this.elements.currentTime&&(this.elements.currentTime.innerHTML="00:00"),this.dispatchEvent("ended")}play(){this.isLinearAd||(null===this.isPaused&&(this.elements.outerContainer.classList.remove("v-firstStart"),"video"===this.type&&this.elements.poster&&this.elements.poster.classList.remove("v-active")),!this.isCast&&this.methodPlay(),this.isPaused=!1,this.elements.outerContainer.classList.replace("v-paused","v-playing"),this.elements.playPause&&(this.elements.playPause.setAttribute("aria-label","Pause"),this.elements.playPause.classList.add("v-controlPressed")),"video"===this.type&&this.elements.bigPlay&&this.elements.bigPlay.setAttribute("aria-label","Pause"),this.afterPlayPause(),this.dispatchEvent("play"))}pause(){!this.isCast&&this.methodPause(),this.isPaused=!0,this.elements.outerContainer.classList.replace("v-playing","v-paused"),this.elements.playPause&&(this.elements.playPause.setAttribute("aria-label","Play"),this.elements.playPause.classList.remove("v-controlPressed")),"video"===this.type&&this.elements.bigPlay&&this.elements.bigPlay.setAttribute("aria-label","Play"),this.afterPlayPause(),this.dispatchEvent("pause")}afterPlayPause(){this.Vlitejs.autoHideGranted&&(this.Vlitejs.stopAutoHideTimer(),!this.isPaused&&this.Vlitejs.startAutoHideTimer())}setVolume(e){let t=e;t>1?t=1:t<=0?(t=0,this.isMuted=!0,this.elements.volume&&this.elements.volume.classList.add("v-controlPressed")):(this.isMuted=!1,this.elements.volume&&this.elements.volume.classList.remove("v-controlPressed")),this.methodSetVolume(t),this.dispatchEvent("volumechange",{volume:t})}getVolume(){return new window.Promise(e=>{this.methodGetVolume().then(t=>{e(t)})})}mute(){this.methodMute(),this.isMuted=!0,this.elements.volume&&(this.elements.volume.classList.add("v-controlPressed"),this.elements.volume.setAttribute("aria-label","Unmute")),this.dispatchEvent("volumechange")}unMute(){this.methodUnMute(),this.isMuted=!1,this.elements.volume&&(this.elements.volume.classList.remove("v-controlPressed"),this.elements.volume.setAttribute("aria-label","Mute")),this.dispatchEvent("volumechange")}seekTo(e){this.methodSeekTo(e)}requestFullscreen(){const{requestFn:e}=this.Vlitejs.supportFullScreen;this.media[e]&&(this.elements.container[e](),this.isFullScreen=!0,this.elements.outerContainer.classList.add("v-fullscreen"),this.elements.fullscreen&&(this.elements.fullscreen.classList.add("v-controlPressed"),this.elements.fullscreen.setAttribute("aria-label","Exit fullscreen")),this.dispatchEvent("enterfullscreen"))}exitFullscreen({escKey:e=!1}={}){const{cancelFn:t}=this.Vlitejs.supportFullScreen;document[t]&&(!e&&document[t](),this.isFullScreen=!1,this.elements.outerContainer.classList.remove("v-fullscreen"),this.elements.fullscreen&&(this.elements.fullscreen.classList.remove("v-controlPressed"),this.elements.fullscreen.setAttribute("aria-label","Enter fullscreen")),this.dispatchEvent("exitfullscreen"))}destroy(){var e;
2Object.keys(this.plugins).forEach(e=>{this.plugins[e].destroy instanceof Function&&this.plugins[e].destroy()}),null===(e=this.controlBar)||void 0===e||e.destroy(),this.playerEvents.forEach(e=>{this.elements.container.removeEventListener(e.type,e.listener)}),this.elements.container.remove()}}const Mo={audio:{controls:!0,autoplay:!1,playPause:!0,progressBar:!0,time:!0,volume:!0,loop:!1},video:{controls:!0,autoplay:!1,playPause:!0,progressBar:!0,time:!0,volume:!0,fullscreen:!0,poster:null,bigPlay:!0,playsinline:!0,loop:!1,muted:!1,autoHide:!1,autoHideDelay:3e3,providerParams:{}}};class Io{constructor(e,{options:t={},provider:i="html5",plugins:n=[],onReady:s=()=>{}}={}){if("string"==typeof e)this.media=document.querySelector(e);else{if(!(e instanceof HTMLVideoElement||e instanceof HTMLAudioElement||e instanceof HTMLDivElement))throw new TypeError("vlitejs :: The element or selector supplied is not valid.");this.media=e}this.provider=i,this.onReady=s,this.type=this.media instanceof HTMLAudioElement?"audio":"video",this.supportFullScreen=function(){const e=document.exitFullscreen instanceof Function?"":["webkit","moz","ms"].find(e=>document[`${e}ExitFullscreen`]instanceof Function||document[`${e}CancelFullScreen`]instanceof Function)||"";return{requestFn:e?`${e}RequestFullScreen`:"requestFullscreen",cancelFn:e?`${e}ExitFullscreen`:"exitFullscreen",changeEvent:e?`${e}fullscreenchange`:"fullscreenchange",isFullScreen:e?`${e}FullscreenElement`:"fullscreenElement"}}(),["autoplay","playsinline","muted","loop"].forEach(e=>{this.media.hasAttribute(e)?t[e]=!0:t[e]&&this.media.setAttribute(e,"")}),this.options=Object.assign(Object.assign({},Mo[this.type]),t),this.autoHideGranted="video"===this.type&&!!this.options.autoHide&&!!this.options.controls,/(iPhone)/gi.test(window.navigator.userAgent)&&(this.options.fullscreen=!1),this.onClickOnPlayer=this.onClickOnPlayer.bind(this),this.onDoubleClickOnPlayer=this.onDoubleClickOnPlayer.bind(this),this.onMousemove=this.onMousemove.bind(this),this.onChangeFullScreen=this.onChangeFullScreen.bind(this);const o=function(e,t){const i=So[e];if(i)return i(t,Ao[e]);throw new Error(`vlitejs :: Unknown provider "${e}"`)}(i,Oo);this.wrapElement(),this.container=this.media.closest(".v-container"),this.outerContainer=this.container.closest(".v-vlite"),"video"===this.type&&this.renderLayout(),this.player=new o({type:this.type,Vlitejs:this}),this.player.build(),this.addEvents(),xo({plugins:n,provider:i,type:this.t
2ype,player:this.player})}wrapElement(){const e=document.createElement("div");e.classList.add("v-vlite","v-firstStart","v-paused","v-loading",`v-${this.type}`);const t=document.createElement("div");t.setAttribute("tabindex","0"),t.classList.add("v-container"),e.appendChild(t),this.media.parentNode.insertBefore(e,this.media),t.appendChild(this.media)}renderLayout(){const e=`\n\t\t\t<div class="v-overlay"></div>\n\t\t\t\n\t\t<div class="v-loader">\n\t\t\t<div class="v-loaderContent">\n\t\t\t\t<div class="v-loaderBounce1"></div>\n\t\t\t\t<div class="v-loaderBounce2"></div>\n\t\t\t\t<div class="v-loaderBounce3"></div>\n\t\t\t</div>\n\t\t</div>\n\t\n\t\t\t${this.options.poster?function({posterUrl:e=""}){return`<div class="v-poster v-active"${e&&` style="background-image: url(${e})"`}></div>`}({posterUrl:this.options.poster}):""}\n\t\t\t${this.options.bigPlay?'<button class="v-bigPlay" aria-label="Play"><svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0ZM7.5 12.67V7.33c0-.79.88-1.27 1.54-.84l4.15 2.67a1 1 0 0 1 0 1.68l-4.15 2.67c-.66.43-1.54-.05-1.54-.84Z"/></svg></button>':""}\n\t\t`;this.container.insertAdjacentHTML("beforeend",e)}addEvents(){"video"===this.type&&(this.container.addEventListener("click",this.onClickOnPlayer),this.container.addEventListener("dblclick",this.onDoubleClickOnPlayer),this.autoHideGranted&&this.container.addEventListener("mousemove",this.onMousemove),document.addEventListener(this.supportFullScreen.changeEvent,this.onChangeFullScreen))}onClickOnPlayer(e){const t=e.target,i=ko({target:t,selectorString:".v-poster, .v-bigPlay",nodeName:["div","button"]}),n=ko({target:t,selectorString:".v-overlay",nodeName:["div"]});(i||n&&!Co())&&(this.player.controlBar.togglePlayPause(e),t.matches(".v-bigPlay")&&this.container.focus())}onDoubleClickOnPlayer(e){ko({target:e.target,selectorString:".v-overlay",nodeName:["div"]})&&this.player.controlBar.toggleFullscreen(e)}onMousemove(){!this.player.isPaused&&this.autoHideGranted&&(this.stopAutoHideTimer(),this.startAutoHideTimer())}onChangeFullScreen(){!document[this.supportFullScreen.isFullScreen]&&this.player.isFullScreen&&this.player.exitFullscreen({escKey:!0})}stopAutoHideTimer(){"video"===this.type&&this.player.elements.controlBar&&(this.player.elements.controlBar.classList.remove("v-hidden"),clearTimeout(this.timerAutoHide))}startAutoHideTimer(){"video"===this.type&&!this.player.isPaused&&this.player.elements.controlBar&&(this.timerAutoHide=window.setTimeout(()=>{var e;null===(e=this.player.elements.controlBar)||void 0===e||e.classList.add("v-hidden")},this.options.autoHideDelay))}removeEvents(){"video"===this.type&&(this.container.removeEventListener("click",this.onClickOnPlayer),this.container.removeEventListener("dblclick",this.onDoubleClickOnPlayer),this.autoHideGranted&&this.container.removeEventListener("mousemove",this.onMousemove),window.removeEventListener(this.supportFullScreen.changeEvent,this.onChangeFullScreen))}destroy(){this.removeEvents(),this.player.destroy(),this.player.controlBar.destroy()}}function Do(e){if(window.VlitejsYoutubeQueue=window.VlitejsYoutubeQueue||[],void 0===window.YT){const e=document.createElement("script");e.async=!0,e.type="text/javascript",e.src="https://youtube.com/iframe_api",window.onYouTubeIframeAPIReady=()=>{window.VlitejsYoutubeQueue.forEach(e=>{e.initYoutubePlayer().then(()=>{e.onReady()})}),window.VlitejsYoutubeQueue=[]},document.getElementsByTagName("body")[0].appendChild(e)}return class extends e{constructor(e){super(e);const t={autohide:1,controls:0,fs:this.options.fullscreen?1:0,modestbranding:0,playsinline:this.options.playsinline?1:0,rel:0,showinfo:0,wmode:"transparent"};this.params=Object.assign(Object.assign({},t),this.options.providerParams)}init(){this.waitUntilVideoIsReady().then(()=>{super.onReady()})}waitUntilVideoIsReady(){return new window.Promise(e=>{void 0!==window.YT?this.initYoutubePlayer().then(e):window.VlitejsYoutubeQueue.push(this)})}initYoutubePlayer(){return new window.Promise(e=>{this.instance=new window.YT.Player(this.media.getAttribute("id"),{videoId:this.media.getAttribute("data-youtube-id"),height:"100%",width:"100%",playerVars:this.params,origin:window.location.origin,events:{onReady:t=>{this.media=t.target.getIframe(),e()},onStateChange:e=>this.onPlayerStateChange(e)}})})}onPlayerStateChange(e){switch(this.rafPlaying&&window.cancelAnimationFrame(this.rafPlaying),e.data){case window.YT.PlayerState.ENDED:super.onMediaEnded();break;case window.YT.PlayerState.PLAYING:super.loading(!1),this.options.controls&&window.requestAnimationFrame(this.onRafPlaying.bind(this));break;case window.YT.PlayerState.BUFFERING:super.loading(!0)}}onRafPlaying(){super.onTimeUpdate(),this.isPaused||(this.rafTimeout=setTimeout(()=>{this.rafPlaying=window.requestAnimationFrame(this.onRafPlaying.bind(this))},100))}getInstance(){return this.instance}getCurrentTime(){return new window.Promise(e=>e(this.instance.getCurrentTime()))}getDuration(){return new window.Promise(e=>e(this.instance.getDuration()))}methodPlay(){this.instance.playVideo()}methodPause(){this.instance.pauseVideo()}methodSetVolume(e){this.instance.setVolume(100*e)}methodGetVolume(){return new window.Promise(e=>e(this.instance.getVolume()/100))}methodMute(){this.instance.mute()}methodUnMute(){this.instance.unMute()}methodSeekTo(e){null!==this.isPaused||this.options.muted||(this.mute(),this.play()),this.instance.seekTo(e),super.onTimeUpdate()}destroy(){clearTimeout(this.rafTimeout),this.instance.destroy(),super.destroy()}}}function No(e){const t="Vimeo";if(window.VlitejsVimeoQueue=window.VlitejsVimeoQueue||[],void 0===window[t]){const e=document.createElement("script");e.async=!0,e.type="text/javascript",e.src="https://player.vimeo.com/api/player.js",e.onload=()=>
2{window.VlitejsVimeoQueue.forEach(e=>{e.initVimeoPlayer().then(()=>{e.addSpecificEvents(),e.onReady()})}),window.VlitejsVimeoQueue=[]},document.getElementsByTagName("body")[0].appendChild(e)}return class extends e{constructor(e){super(e);const t={id:this.media.getAttribute("data-vimeo-id"),playsinline:this.options.playsinline?1:0,loop:this.options.loop?1:0,controls:!1};this.params=Object.assign(Object.assign({},t),this.options.providerParams),this.events=[{type:"timeupdate",listener:super.onTimeUpdate},{type:"ended",listener:super.onMediaEnded},{type:"playing",listener:this.onPlaying},{type:"waiting",listener:this.onWaiting},{type:"seeking",listener:this.onSeeking},{type:"seeked",listener:this.onSeeked}]}init(){this.waitUntilVideoIsReady().then(()=>{this.addSpecificEvents(),super.onReady()})}waitUntilVideoIsReady(){return new window.Promise(e=>{void 0!==window[t]?this.initVimeoPlayer().then(e):window.VlitejsVimeoQueue.push(this)})}initVimeoPlayer(){return new window.Promise(e=>{this.instance=new window.Vimeo.Player(this.media.getAttribute("id"),this.params),this.media=this.instance.element,this.instance.ready().then(()=>{this.media.firstElementChild.setAttribute("tabindex","-1"),e()})})}addSpecificEvents(){this.events.forEach(e=>{this.instance.on(e.type,e.listener.bind(this))})}getInstance(){return this.instance}getCurrentTime(){return new window.Promise(e=>{this.instance.getCurrentTime().then(t=>e(t))})}getDuration(){return new window.Promise(e=>{this.instance.getDuration().then(t=>e(t))})}methodPlay(){this.instance.play()}methodPause(){this.instance.pause()}methodSetVolume(e){this.instance.setVolume(e)}methodGetVolume(){return new window.Promise(e=>{this.instance.getVolume().then(t=>{e(t)})})}methodMute(){this.instance.setVolume(0)}methodUnMute(){this.instance.setVolume(1)}methodSeekTo(e){this.instance.setCurrentTime(e)}onWaiting(){this.loading(!0)}onPlaying(){this.loading(!1)}onSeeking(){this.loading(!0)}onSeeked(){this.loading(!1)}removeSpecificEvents(){this.events.forEach(e=>{this.instance.off(e.type,e.listener)})}destroy(){this.removeSpecificEvents(),this.instance.destroy(),super.destroy()}}}Io.registerProvider=function(e,t,i){if(void 0!==t){if(!Object.keys(So).includes(e))return So[e]=t,void(i&&(Ao[e]=i));throw new Error(`vlitejs :: The provider id "${e}" is already registered.`)}throw new Error(`vlitejs :: The provider id "${e}" is undefined.`)},Io.registerPlugin=function(e,t,i){if(void 0!==t){if(!Object.keys(wo).includes(e))return wo[e]=t,void(i&&(Eo[e]=i));throw new Error(`vlitejs :: The plugin id "${e}" is already registered.`)}throw new Error(`vlitejs :: The plugin id "${e}" is undefined.`)};const Vo=e=>{e||(e=document.querySelectorAll(".ele-height-as-var")),e.forEach(e=>{const t=e.closest(".ele-height-handler");if(t){const i=e.offsetHeight||0;i&&t.style.setProperty("--child-height",`${i}px`)}})};function $o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var jo="(prefers-reduced-motion: reduce)";function Bo(e){e.length=0}function Fo(e,t,i){return Array.prototype.slice.call(e,t,i)}function qo(e){return e.bind.apply(e,[null].concat(Fo(arguments,1)))}var zo=setTimeout,Ho=function(){};function Ro(e){return requestAnimationFrame(e)}function Yo(e,t){return typeof t===e}function Wo(e){return!Qo(e)&&Yo("object",e)}var Xo=Array.isArray,Uo=qo(Yo,"function"),Go=qo(Yo,"string"),Zo=qo(Yo,"undefined");function Qo(e){return null===e}function Ko(e){try{return e instanceof(e.ownerDocument.defaultView||window).HTMLElement}catch(e){return!1}}function Jo(e){return Xo(e)?e:[e]}function er(e,t){Jo(e).forEach(t)}function tr(e,t){return e.indexOf(t)>-1}function ir(e,t){return e.push.apply(e,Jo(t)),e}function nr(e,t,i){e&&er(t,function(t){t&&e.classList[i?"add":"remove"](t)})}function sr(e,t){nr(e,Go(t)?t.split(" "):t,!0)}function or(e,t){er(t,e.appendChild.bind(e))}function rr(e,t){er(e,function(e){var i=(t||e).parentNode;i&&i.insertBefore(e,t)})}function ar(e,t){return Ko(e)&&(e.msMatchesSelector||e.matches).call(e,t)}function lr(e,t){var i=e?Fo(e.children):[];return t?i.filter(function(e){return ar(e,t)}):i}function cr(e,t){return t?lr(e,t)[0]:e.firstElementChild}var ur=Object.keys;
vendor: 4,112 bytes, line 2
2function dr(e,t,i){return e&&(i?ur(e).reverse():ur(e)).forEach(function(i){"__proto__"!==i&&t(e[i],i)}),e}function hr(e){return Fo(arguments,1).forEach(function(t){dr(t,function(i,n){e[n]=t[n]})}),e}function fr(e){return Fo(arguments,1).forEach(function(t){dr(t,function(t,i){Xo(t)?e[i]=t.slice():Wo(t)?e[i]=fr({},Wo(e[i])?e[i]:{},t):e[i]=t})}),e}function pr(e,t){er(t||ur(e),function(t){delete e[t]})}function gr(e,t){er(e,function(e){er(t,function(t){e&&e.removeAttribute(t)})})}function mr(e,t,i){Wo(t)?dr(t,function(t,i){mr(e,i,t)}):er(e,function(e){Qo(i)||""===i?gr(e,t):e.setAttribute(t,String(i))})}function vr(e,t,i){var n=document.createElement(e);return t&&(Go(t)?sr(n,t):mr(n,t)),i&&or(i,n),n}function yr(e,t,i){if(Zo(i))return getComputedStyle(e)[t];Qo(i)||(e.style[t]=""+i)}function br(e,t){yr(e,"display",t)}function _r(e){e.setActive&&e.setActive()||e.focus({preventScroll:!0})}function wr(e,t){return e.getAttribute(t)}function Er(e,t){return e&&e.classList.contains(t)}function xr(e){return e.getBoundingClientRect()}function Sr(e){er(e,function(e){e&&e.parentNode&&e.parentNode.removeChild(e)})}function Ar(e){return cr((new DOMParser).parseFromString(e,"text/html").body)}function Tr(e,t){e.preventDefault(),t&&(e.stopPropagation(),e.stopImmediatePropagation())}function Cr(e,t){return e&&e.querySelector(t)}function kr(e,t){return t?Fo(e.querySelectorAll(t)):[]}function Pr(e,t){nr(e,t,!1)}function Lr(e){return e.timeStamp}function Or(e){return Go(e)?e:e?e+"px":""}var Mr="splide",Ir="data-"+Mr;function Dr(e,t){if(!e)throw new Error("["+Mr+"] "+(t||""))}var Nr=Math.min,Vr=Math.max,$r=Math.floor,jr=Math.ceil,Br=Math.abs;function Fr(e,t,i){return Br(e-t)<i}function qr(e,t,i,n){var s=Nr(t,i),o=Vr(t,i);return n?s<e&&e<o:s<=e&&e<=o}function zr(e,t,i){var n=Nr(t,i),s=Vr(t,i);return Nr(Vr(n,e),s)}function Hr(e){return+(e>0)-+(e<0)}function Rr(e,t){return er(t,function(t){e=e.replace("%s",""+t)}),e}function Yr(e){return e<10?"0"+e:""+e}var Wr={};function Xr(){var e=[];function t(e,t,i){er(e,function(e){e&&er(t,function(t){t.split(" ").forEach(function(t){var n=t.split(".");i(e,n[0],n[1])})})})}return{bind:function(i,n,s,o){t(i,n,function(t,i,n){var r="addEventListener"in t,a=r?t.removeEventListener.bind(t,i,s,o):t.removeListener.bind(t,s);r?t.addEventListener(i,s,o):t.addListener(s),e.push([t,i,n,s,a])})},unbind:function(i,n,s){t(i,n,function(t,i,n){e=e.filter(function(e){return!!(e[0]!==t||e[1]!==i||e[2]!==n||s&&e[3]!==s)||(e[4](),!1)})})},dispatch:function(e,t,i){var n,s=!0;return"function"==typeof CustomEvent?n=new CustomEvent(t,{bubbles:s,detail:i}):(n=document.createEvent("CustomEvent")).initCustomEvent(t,s,!1,i),e.dispatchEvent(n),n},destroy:function(){e.forEach(function(e){e[4]()}),Bo(e)}}}var Ur="mounted",Gr="ready",Zr="move",Qr="moved",Kr="click",Jr="refresh",ea="updated",ta="resize",ia="resized",na="scroll",sa="scrolled",oa="destroy",ra="navigation:mounted",aa="autoplay:play",la="autoplay:pause",ca="lazyload:loaded",ua="ei";function da(e){var t=e?e.event.bus:document.createDocumentFragment(),i=Xr();return e&&e.event.on(oa,i.destroy),hr(i,{bus:t,on:function(e,n){i.bind(t,Jo(e).join(" "),function(e){n.apply(n,Xo(e.detail)?e.detail:[])})},off:qo(i.unbind,t),emit:function(e){i.dispatch(t,e,Fo(arguments,1))}})}function ha(e,t,i,n){var s,o,r=Date.now,a=0,l=!0,c=0;function u(){if(!l){if(a=e?Nr((r()-s)/e,1):1,i&&i(a),a>=1&&(t(),s=r(),n&&++c>=n))return d();o=Ro(u)}}function d(){l=!0}function h(){o&&cancelAnimationFrame(o),a=0,o=0,l=!0}return{start:function(t){t||h(),s=r()-(t?a*e:0),l=!1,o=Ro(u)},rewind:function(){s=r(),a=0,i&&i(a)},pause:d,cancel:h,set:function(t){e=t},isPaused:function(){return l}}}var fa="Arrow",pa=fa+"Left",ga=fa+"Right",ma=fa+"Up",va=fa+"Down",ya="ttb",ba={width:["height"],left:["top","right"],right:["bottom","left"],x:["y"],X:["Y"],Y:["X"],ArrowLeft:[ma,ga],ArrowRight:[va,pa]};var _a="role",wa="tabindex",Ea="aria-",xa=Ea+"controls",Sa=Ea+"current",Aa=Ea+"selected",Ta=Ea+"label",Ca=Ea+"labelledby",ka=Ea+"hidden",Pa=Ea+"orientation",La=Ea+"roledescription",Oa=Ea+"live",Ma=Ea+"busy",Ia=Ea+"atomic",Da=[_a,wa,"disabled",xa,Sa,Ta,C
2a,ka,Pa,La],Na=Mr+"__",Va="is-",$a=Mr,ja=Na+"track",Ba=Na+"list",Fa=Na+"slide",qa=Fa+"--clone",za=Fa+"__container",Ha=Na+"arrows",Ra=Na+"arrow",Ya=Ra+"--prev",Wa=Ra+"--next",Xa=Na+"pagination",Ua=Xa+"__page",Ga=Na+"progress__bar",Za=Na+"toggle",Qa=Na+"sr",Ka=Va+"initialized",Ja=Va+"active",el=Va+"prev",tl=Va+"next",il=Va+"visible",nl=Va+"loading",sl=Va+"focus-in",ol=Va+"overflow",rl=[Ja,il,el,tl,nl,sl,ol],al={slide:Fa,clone:qa,arrows:Ha,arrow:Ra,prev:Ya,next:Wa,pagination:Xa,page:Ua,spinner:Na+"spinner"},ll="touchstart mousedown",cl="touchmove mousemove",ul="touchend touchcancel mouseup click",dl="slide",hl="loop",fl="fade";var pl=Ir+"-interval",gl={passive:!1,capture:!0},ml={Spacebar:" ",Right:ga,Left:pa,Up:ma,Down:va};function vl(e){return e=Go(e)?e:e.key,ml[e]||e}var yl="keydown",bl=Ir+"-lazy",_l=bl+"-srcset",wl="["+bl+"], ["+_l+"]",El=[" ","Enter"],xl=Object.freeze({__proto__:null,Media:function(e,t,i){var n=e.state,s=i.breakpoints||{},o=i.reducedMotion||{},r=Xr(),a=[];function l(e){e&&r.destroy()}function c(e,t){var i=matchMedia(t);r.bind(i,"change",u),a.push([e,i])}function u(){var t=n.is(7),s=i.direction,o=a.reduce(function(e,t){return fr(e,t[1].matches?t[0]:{})},{});pr(i),d(o),i.destroy?e.destroy("completely"===i.destroy):t?(l(!0),e.mount()):s!==i.direction&&e.refresh()}function d(t,s,o){fr(i,t),s&&fr(Object.getPrototypeOf(i),t),!o&&n.is(1)||e.emit(ea,i)}return{setup:function(){var e="min"===i.mediaQuery;ur(s).sort(function(t,i){return e?+t-+i:+i-+t}
vendor: 20,268 bytes, line 2
2).forEach(function(t){c(s[t],"("+(e?"min":"max")+"-width:"+t+"px)")}),c(o,jo),u()},destroy:l,reduce:function(e){matchMedia(jo).matches&&(e?fr(i,o):pr(i,ur(o)))},set:d}},Direction:function(e,t,i){return{resolve:function(e,t,n){var s="rtl"!==(n=n||i.direction)||t?n===ya?0:-1:1;return ba[e]&&ba[e][s]||e.replace(/width|left|right/i,function(e,t){var i=ba[e.toLowerCase()][s]||e;return t>0?i.charAt(0).toUpperCase()+i.slice(1):i})},orient:function(e){return e*("rtl"===i.direction?1:-1)}}},Elements:function(e,t,i){var n,s,o,r=da(e),a=r.on,l=r.bind,c=e.root,u=i.i18n,d={},h=[],f=[],p=[];function g(){var e,t,o;n=y("."+ja),s=cr(n,"."+Ba),Dr(n&&s,"A track/list element is missing."),ir(h,lr(s,"."+Fa+":not(."+qa+")")),dr({arrows:Ha,pagination:Xa,prev:Ya,next:Wa,bar:Ga,toggle:Za},function(e,t){d[t]=y("."+e)}),hr(d,{root:c,track:n,list:s,slides:h}),t=c.id||""+(e=Mr)+Yr(Wr[e]=(Wr[e]||0)+1),o=i.role,c.id=t,n.id=n.id||t+"-track",s.id=s.id||t+"-list",!wr(c,_a)&&"SECTION"!==c.tagName&&o&&mr(c,_a,o),mr(c,La,u.carousel),mr(s,_a,"presentation"),v()}function m(e){var t=Da.concat("style");Bo(h),Pr(c,f),Pr(n,p),gr([n,s],t),gr(c,e?t:["style",La])}function v(){Pr(c,f),Pr(n,p),f=b($a),p=b(ja),sr(c,f),sr(n,p),mr(c,Ta,i.label),mr(c,Ca,i.labelledby)}function y(e){var t=Cr(c,e);return t&&function(e,t){if(Uo(e.closest))return e.closest(t);for(var i=e;i&&1===i.nodeType&&!ar(i,t);)i=i.parentElement;return i}(t,"."+$a)===c?t:void 0}function b(e){return[e+"--"+i.type,e+"--"+i.direction,i.drag&&e+"--draggable",i.isNavigation&&e+"--nav",e===$a&&Ja]}return hr(d,{setup:g,mount:function(){a(Jr,m),a(Jr,g),a(ea,v),l(document,ll+" keydown",function(e){o="keydown"===e.type},{capture:!0}),l(c,"focusin",function(){nr(c,sl,!!o)})},destroy:m})},Slides:function(e,t,i){var n=da(e),s=n.on,o=n.emit,r=n.bind,a=t.Elements,l=a.slides,c=a.list,u=[];function d(){l.forEach(function(e,t){f(e,t,-1)})}function h(){g(function(e){e.destroy()}),Bo(u)}function f(t,i,n){var s=function(e,t,i,n){var s,o=da(e),r=o.on,a=o.emit,l=o.bind,c=e.Components,u=e.root,d=e.options,h=d.isNavigation,f=d.updateOnMove,p=d.i18n,g=d.pagination,m=d.slideFocus,v=c.Direction.resolve,y=wr(n,"style"),b=wr(n,Ta),_=i>-1,w=cr(n,"."+za);function E(){var s=e.splides.map(function(e){var i=e.splide.Components.Slides.getAt(t);return i?i.slide.id:""}).join(" ");mr(n,Ta,Rr(p.slideX,(_?i:t)+1)),mr(n,xa,s),mr(n,_a,m?"button":""),m&&gr(n,La)}function x(){s||S()}function S(){if(!s){var i=e.index;(o=A())!==Er(n,Ja)&&(nr(n,Ja,o),mr(n,Sa,h&&o||""),a(o?"active":"inactive",T)),function(){var t=function(){if(e.is(fl))return A();var t=xr(c.Elements.track),i=xr(n),s=v("left",!0),o=v("right",!0);return $r(t[s])<=jr(i[s])&&$r(i[o])<=jr(t[o])}(),i=!t&&(!A()||_);if(e.state.is([4,5])||mr(n,ka,i||""),mr(kr(n,d.focusableNodes||""),wa,i?-1:""),m&&mr(n,wa,i?-1:0),t!==Er(n,il)&&(nr(n,il,t),a(t?"visible":"hidden",T)),!t&&document.activeElement===n){var s=c.Slides.getAt(e.index);s&&_r(s.slide)}}(),nr(n,el,t===i-1),nr(n,tl,t===i+1)}var o}function A(){var n=e.index;return n===t||d.cloneStatus&&n===i}var T={index:t,slideIndex:i,slide:n,container:w,isClone:_,mount:function(){_||(n.id=u.id+"-slide"+Yr(t+1),mr(n,_a,g?"tabpanel":"group"),mr(n,La,p.slide),mr(n,Ta,b||Rr(p.slideLabel,[t+1,e.length]))),l(n,"click",qo(a,Kr,T)),l(n,"keydown",qo(a,"sk",T)),r([Qr,"sh",sa],S),r(ra,E),f&&r(Zr,x)},destroy:function(){s=!0,o.destroy(),Pr(n,rl),gr(n,Da),mr(n,"style",y),mr(n,Ta,b||"")},update:S,style:function(e,t,i){yr(i&&w||n,e,t)},isWithin:function(i,n){var s=Br(i-t);return _||!d.rewind&&!e.is(hl)||(s=Nr(s,e.length-s)),s<=n}};return T}(e,i,n,t);s.mount(),u.push(s),u.sort(function(e,t){return e.index-t.index})}function p(e){return e?m(function(e){return!e.isClone}):u}function g(e,t){p(t).forEach(e)}function m(e){return u.filter(Uo(e)?e:function(t){return Go(e)?ar(t.slide,e):tr(Jo(e),t.index)})}return{mount:function(){d(),s(Jr,h),s(Jr,d)},destroy:h,update:function(){g(function(e){e.update()})},register:f,get:p,getIn:function(e){var n=t.Controller,s=n.toIndex(e),o=n.hasFocus()?1:i.perPage;return m(function(e){return qr(e.index,s,s+o-1)})},getAt:function(e){return m(e)[0]},add:function(e,t){er(e,function(e){if(Go(e)&&(e=Ar(e)),Ko(e)){var n=l[t];n?rr(e,n):or(c,e),sr(e,i.classes.slide),s=e,a=qo(o,ta),u=kr(s,"img"),(d=u.length)?u.forEach(function(e){r(e,"load error",function(){--d||a()})}):a()}var s,a,u,d}),o(Jr)},remove:function(e){Sr(m(e).map(function(e){return e.slide})),o(Jr)},forEach:g,filter:m,style:function(e,t,i){g(function(n){n.style(e,t,i)})},getLength:function(e){return e?l.length:u.length},isEnough:function(){return u.length>i.perPage}}},Layout:function(e,t,i){var n,s,o,r=da(e),a=r.on,l=r.bind,c=r.emit,u=t.Slides,d=t.Direction.resolve,h=t.Elements,f=h.root,p=h.track,g=h.list,m=u.getAt,v=u.style;function y(){n=i.direction===ya,yr(f,"maxWidth",Or(i.width)),yr(p,d("paddingLeft"),_(!1)),yr(p,d("paddingRight"),_(!0)),b(!0)}function b(e){var t,r=xr(f);(e||s.width!==r.width||s.height!==r.height)&&(yr(p,"height",(t="",n&&(Dr(t=w(),"height or heightRatio is missing."),t="calc("+t+" - "+_(!1)+" - "+_(!0)+")"),t)),v(d("marginRight"),Or(i.gap)),v("width",i.autoWidth?null:Or(i.fixedWidth)||(n?"":E())),v("height",Or(i.fixedHeight)||(n?i.autoHeight?null:E():w()),!0),s=r,c(ia),o!==(o=k())&&(nr(f,ol,o),c("overflow",o)))}function _(e){var t=i.padding,n=d(e?"right":"left");return t&&Or(t[n]||(Wo(t)?0:t))||"0px"}function w(){return Or(i.height||xr(g).width*i.heightRatio)}function E(){var e=Or(i.gap);return"calc((100%"+(e&&" + "+e)+")/"+(i.perPage||1)+(e&&" - "+e)+")"}function x(){return xr(g)[d("width")]}function S(e,t){var i=m(e||0);return i?xr(i.slide)[d("width")]+(t?0:C()):0}function A(e,t){var i=m(e);if(i){var n=xr(i.slide)[d("right")],s=xr(g)[d("left")];return Br(n-s)+(t?0:C())}return 0}function T(t){return A(e.length-1)-A(0)+S(0,t)}function C(){var e=m(0);return e&&parseFloat(yr(e.slide,d("marginRight")))||0}function k(){return e.is(fl)||T(!0)>x()}return{mount:function(){var e,t;y(),l(window,"resize load",(e=qo(c,ta),t=ha(0,e,null,1),function(){t.isPaused()&&t.start()})),a([ea,Jr],y),a(ta,b)},resize:b,listSize:x,slideSize:S,sliderSize:T,totalSize:A,getPadding:function(e){return parseFloat(yr(p,d("padding"+(e?"Right":"Left"))))||0},isOverflow:k}},Clones:function(e,t,i){var n,s=da(e),o=s.on,r=t.Elements,a=t.Slides,l=t.Direction.resolve,c=[];function u(){o(Jr,d),o([ea,ta],f),(n=p())&&(function(t){var n=a.get().slice(),s=n.length;if(s){for(;n.length<t;)ir(n,n);ir(n.slice(-t),n.slice(0,t)).forEach(function(o,l){var u=l<t,d=function(t,n){var s=t.cloneNode(!0);return sr(s,i.classes.clone),s.id=e.root.id+"-clone"+Yr(n+1),s}(o.slide,l);u?rr(d,n[0].slide):or(r.list,d),ir(c,d),a.register(d,l-t+(u?0:s),o.index)})}}(n),t.Layout.resize(!0))}function d(){h(),u()}function h(){Sr(c),Bo(c),s.destroy()}function f(){var e=p();n!==e&&(n<e||!e)&&s.emit(Jr)}function p(){var n=i.clones;if(e.is(hl)){if(Zo(n)){var s=i[l("fixedWidth")]&&t.Layout.slideSize(0);n=s&&jr(xr(r.track)[l("width")]/s)||i[l("autoWidth")]&&e.length||2*i.perPage}}else n=0;return n}return{mount:u,destroy:h}},Move:function(e,t,i){var n,s=da(e),o=s.on,r=s.emit,a=e.state.set,l=t.Layout,c=l.slideSize,u=l.getPadding,d=l.totalSize,h=l.listSize,f=l.sliderSize,p=t.Direction,g=p.resolve,m=p.orient,v=t.Elements,y=v.list,b=v.track;function _(){t.Controller.isBusy()||(t.Scroll.cancel(),w(e.index),t.Slides.update())}function w(e){E(T(e,!0))}function E(i,n){if(!e.is(fl)){var s=n?i:function(i){if(e.is(hl)){var n=A(i),s=n>t.Controller.getEnd();(n<0||s)&&(i=x(i,s))}return i}(i);yr(y,"transform","translate"+g("X")+"("+s+"px)"),i!==s&&r("sh")}}function x(e,t){var i=e-k(t),n=f();return e-m(n*(jr(Br(i)/n)||1))*(t?1:-1)}function S(){E(C(),!0),n.cancel()}function A(e){for(var i=t.Slides.get(),n=0,s=1/0,o=0;o<i.length;o++){var r=i[o].index,a=Br(T(r,!0)-e);if(!(a<=s))break;s=a,n=r}return n}function T(t,n){var s=m(d(t-1)-function(e){var t=i.focus;return"center"===t?(h()-c(e,!0))/2:+t*c(e)||0}(t));return n?function(t){return i.trimSpace&&e.is(dl)&&(t=zr(t,0,m(f(!0)-h()))),t}(s):s}function C(){var e=g("left");return xr(y)[e]-xr(b)[e]+m(u(!1))}function k(e){return T(e?t.Controller.getEnd():0,!!i.trimSpace)}return{mount:function(){n=t.Transition,o([Ur,ia,ea,Jr],_)},move:function(e,t,i,s){var o,l;e!==t&&(o=e>i,l=m(x(C(),o)),o?l>=0:l<=y[g("scrollWidth")]-xr(b)[g("width")])&&(S(),E(x(C(),e>i),!0)),a(4),r(Zr,t,i,e),n.start(t,function(){a(3),r(Qr,t,i,e),s&&s()})},jump:w,translate:E,shift:x,cancel:S,toIndex:A,toPosition:T,getPosition:C,getLimit:k,exceededLimit:function(e,t){t=Zo(t)?C():t;var i=!0!==e&&m(t)<m(k(!1)),n=!1!==e&&m(t)>m(k(!0));return i||n},reposition:_}},Controller:function(e,t,i){var n,s,o,r,a=da(e),l=a.on,c=a.emit,u=t.Move,d=u.getPosition,h=u.getLimit,f=u.toPosition,p=t.Slides,g=p.isEnough,m=p.getLength,v=i.omitEnd,y=e.is(hl),b=e.is(dl),_=qo(T,!1),w=qo(T,!0),E=i.start||0,x=E;function S(){s=m(!0),o=i.perMove,r=i.perPage,n=P();var e=zr(E,0,v?n:s-1);e!==E&&(E=e,u.reposition())}function A(){n!==P()&&c(ua)}function T(e,t){var i=o||(I()?1:r),s=C(E+i*(e?-1:1),E,!(o||I()));return-1===s&&b&&!Fr(d(),h(!e),1)?e?0:n:t?s:k(s)}function C(t,a,l){if(g()||I()){var c=function(t){if(b&&"move"===i.trimSpace&&t!==E)for(var n=d();n===f(t,!0)&&qr(t,0,e.length-1,!i.rewind);)t<E?--t:++t;return t}(t);c!==t&&(a=t,t=c,l=!1),t<0||t>n?t=o||!qr(0,t,a,!0)&&!qr(n,a,t,!0)?y?l?t<0?-(s%r||r):s:t:i.rewind?t<0?n:0:-1:L(O(t)):l&&t!==a&&(t=L(O(a)+(t<a?-1:1)))}else t=-1;return t}function k(e){return y?(e+s)%s||0:e}function P(){for(var e=s-(I()||y&&o?1:r);v&&e-- >0;)if(f(s-1,!0)!==f(e,!0)){e++;break}return zr(e,0,s-1)}function L(e){return zr(I()?e:r*e,0,n)}function O(e){return I()?Nr(e,n):$r((e>=n?s-1:e)/r)}function M(e){e!==E&&(x=E,E=e)}function I(){return!Zo(i.focus)||i.isNavigation}function D(){return e.state.is([4,5])&&!!i.waitForTransition}return{mount:function(){S(),l([ea,Jr,ua],S),l(ia,A)},go:function(e,t,i){if(!D()){var s=function(e){var t=E;if(Go(e)){var i=e.match(/([+\-<>])(\d+)?/)||[],s=i[1],o=i[2];"+"===s||"-"===s?t=C(E+ +(""+s+(+o||1)),E):">"===s?t=o?L(+o):_(!0):"<"===s&&(t=w(!0))}else t=y?e:zr(e,0,n);return t}(e),o=k(s);o>-1&&(t||o!==E)&&(M(o),u.move(s,o,x,i))}},scroll:function(e,i,s,o){t.Scroll.scroll(e,i,s,function(){var e=k(u.toIndex(d()));M(v?Nr(e,n):e),o&&o()})},getNext:_,getPrev:w,getAdjacent:T,getEnd:P,setIndex:M,getIndex:function(e){return e?x:E},toIndex:L,toPage:O,toDest:function(e){var t=u.toIndex(e);return b?zr(t,0,n):t},hasFocus:I,isBusy:D}},Arrows:function(e,t,i){var n,s,o=da(e),r=o.on,a=o.bind,l=o.emit,c=i.classes,u=i.i18n,d=t.Elements,h=t.Controller,f=d.arrows,p=d.track,g=f,m=d.prev,v=d.next,y={};function b(){var e;!(e=i.arrows)||m&&v||(g=f||vr("div",c.arrows),m=x(!0),v=x(!1),n=!0,or(g,[m,v]),!f&&rr(g,p)),m&&v&&(hr(y,{prev:m,next:v}),br(g,e?"":"none"),sr(g,s=Ha+"--"+i.direction),e&&(r([Ur,Qr,Jr,sa,ua],S),a(v,"click",qo(E,">")),a(m,"click",qo(E,"<")),S(),mr([m,v],xa,p.id),l("arrows:mounted",m,v))),r(ea,_)}function _(){w(),b()}function w(){o.destroy(),Pr(g,s),n?(Sr(f?[m,v]:g),m=v=null):gr([m,v],Da)}function E(e){h.go(e,!0)}function x(e){return Ar('<button class="'+c.arrow+" "+(e?c.prev:c.next)+'" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40" focusable="false"><path d="'+(i.arrowPath||"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z")+'" />')}function S(){if(m&&v){var t=e.index,i=h.getPrev(),n=h.getNext(),s=i>-1&&t<i?u.last:u.prev,o=n>-1&&t>n?u.first:u.next;m.disabled=i<0,v.disabled=n<0,mr(m,Ta,s),mr(v,Ta,o),l("arrows:updated",m,v,i,n)}}return{arrows:y,mount:b,destroy:w,update:S}},Autoplay:function(e,t,i){var n,s,o=da(e),r=o.on,a=o.bind,l=o.emit,c=ha(i.interval,e.go.bind(e,">"),function(e){var t=d.bar;t&&yr(t,"width",100*e+"%"),l("autoplay:playing",e)}),u=c.isPaused,d=t.Elements,h=t.Elements,f=h.root,p=h.toggle,g=i.autoplay,m="pause"===g;function v(){u()&&t.Slides.isEnough()&&(c.start(!i.resetProgress),s=n=m=!1,_(),l(aa))}function y(e){void 0===e&&(e=!0),m=!!e,_(),u()||(c.pause(),l(la))}function b(){m||(n||s?y(!1):v())}function _(){p&&(nr(p,Ja,!m),mr(p,Ta,i.i18n[m?"play":"pause"]))}function w(e){var n=t.Slides.getAt(e);c.set(n&&+wr(n.slide,pl)||i.interval)}return{mount:function(){g&&(i.pauseOnHover&&a(f,"mouseenter mouseleave",function(e){n="mouseenter"===e.type,b()}),i.pauseOnFocus&&a(f,"focusin focusout",function(e){s="focusin"===e.type,b()}),p&&a(p,"click",function(){m?v():y(!0)}),r([Zr,na,Jr],c.rewind),r(Zr,w),p&&mr(p,xa,d.track.id),m||v(),_())},destroy:c.cancel,play:v,pause:y,isPaused:u}},Cover:function(e,t,i){var n=da(e).on;function s(e){t.Slides.forEach(function(t){var i=cr(t.container||t.slide,"img");i&&i.src&&o(e,i,t)})}function o(e,t,i){i.style("background",e?'center/cover no-repeat url("'+t.src+'")':"",!0),br(t,e?"none":"")}return{mount:function(){i.cover&&(n(ca,qo(o,!0)),n([Ur,ea,Jr],qo(s,!0)))},destroy:qo(s,!1)}},Scroll:function(e,t,i){var n,s,o=da(e),r=o.on,a=o.emit,l=e.state.set,c=t.Move,u=c.getPosition,d=c.getLimit,h=c.exceededLimit,f=c.translate,p=e.is(dl),g=1;function m(e,i,o,r,d){var f=u();if(b(),o&&(!p||!h())){var m=t.Layout.sliderSize(),_=Hr(e)*m*$r(Br(e)/m)||0;e=c.toPosition(t.Controller.toDest(e%m))+_}var w=Fr(f,e,1);g=1,i=w?0:i||Vr(Br(e-f)/1.5,800),s=r,n=ha(i,v,qo(y,f,e,d),1),l(5),a(na),n.start()}function v(){l(3),s&&s(),a(sa)}function y(e,t,n,o){var r=u(),a=e+(t-e)*function(e){var t=i.easingFunc;return t?t(e):1-Math.pow(1-e,4)}(o),l=(a-r)*g;f(r+l),p&&!n&&h()&&(g*=.6,Br(l)<10&&m(d(h(!0)),600,!1,s,!0))}function b(){n&&n.cancel()}function _(){n&&!n.isPaused()&&(b(),v())}return{mount:function(){r(Zr,b),r([ea,Jr],_)},destroy:b,scroll:m,cancel:_}},Drag:function(e,t,i){var n,s,o,r,a,l,c,u,d=da(e),h=d.on,f=d.emit,p=d.bind,g=d.unbind,m=e.state,v=t.Move,y=t.Scroll,b=t.Controller,_=t.Elements.track,w=t.Media.reduce,E=t.Direction,x=E.resolve,S=E.orient,A=v.getPosition,T=v.exceededLimit,C=!1;function k(){var e=i.drag;B(!e),r="free"===e}function P(e){if(l=!1,!c){var t=j(e);n=e.target,s=i.noDrag,ar(n,"."+Ua+", ."+Ra)||s&&ar(n,s)||!t&&e.button||(b.isBusy()?Tr(e,!0):(u=t?_:window,a=m.is([4,5]),o=null,p(u,cl,L,gl),p(u,ul,O,gl),v.cancel(),y.cancel(),I(e)))}var n,s}function L(t){if(m.is(6)||(m.set(6),f("drag")),t.cancelable)if(a){v.translate(n+D(t)/(C&&e.is(dl)?5:1));var s=N(t)>200,o=C!==(C=T());(s||o)&&I(t),l=!0,f("dragging"),Tr(t)}else(function(e){return Br(D(e))>Br(D(e,!0))})(t)&&(a=function(e){var t=i.dragMinThreshold,n=Wo(t),s=n&&t.mouse||0,o=(n?t.touch:+t)||10;return Br(D(e))>(j(e)?o:s)}(t),Tr(t))}function O(n){m.is(6)&&(m.set(3),f("dragged")),a&&(function(n){var s=function(t){if(e.is(hl)||!C){var i=N(t);if(i&&i<200)return D(t)/i}return 0}(n),o=function(e){return A()+Hr(e)*Nr(Br(e)*(i.flickPower||600),r?1/0:t.Layout.listSize()*(i.flickMaxPages||1))}(s),a=i.rewind&&i.rewindByDrag;w(!1),r?b.scroll(o,0,i.snap):e.is(fl)?b.go(S(Hr(s))<0?a?"<":"-":a?">":"+"):e.is(dl)&&C&&a?b.go(T(!0)?">":"<"):b.go(b.toDest(o),!0),w(!0)}(n),Tr(n)),g(u,cl,L),g(u,ul,O),a=!1}function M(e){!c&&l&&Tr(e,!0)}function I(e){o=s,s=e,n=A()}function D(e,t){return $(e,t)-$(V(e),t)}function N(e){return Lr(e)-Lr(V(e))}function V(e){return s===e&&o||s}function $(e,t){return(j(e)?e.changedTouches[0]:e)["page"+x(t?"Y":"X")]}function j(e){return"undefined"!=typeof TouchEvent&&e instanceof TouchEvent}function B(e){c=e}return{mount:function(){p(_,cl,Ho,gl),p(_,ul,Ho,gl),p(_,ll,P,gl),p(_,"click",M,{capture:!0}),p(_,"dragstart",Tr),h([Ur,ea],k)},disable:B,isDragging:function(){return a}}},Keyboard:function(e,t,i){var n,s,o=da(e),r=o.on,a=o.bind,l=o.unbind,c=e.root,u=t.Direction.resolve;function d(){var e=i.keyboard;e&&(n="global"===e?window:c,a(n,yl,p))}function h(){l(n,yl)}function f(){var e=s;s=!0,zo(function(){s=e})}function p(t){if(!s){var i=vl(t);i===u(pa)?e.go("<"):i===u(ga)&&e.go(">")}}return{mount:function(){d(),r(ea,h),r(ea,d),r(Zr,f)},destroy:h,disable:function(e){s=e}}},LazyLoad:function(e,t,i){var n=da(e),s=n.on,o=n.off,r=n.bind,a=n.emit,l="sequential"===i.lazyLoad,c=[Qr,sa],u=[];function d(){Bo(u),t.Slides.forEach(function(e){kr(e.slide,wl).forEach(function(t){var n=wr(t,bl),s=wr(t,_l);if(n!==t.src||s!==t.srcset){var o=i.classes.spinner,r=t.parentElement,a=cr(r,"."+o)||vr("span",o,r);u.push([t,e,a]),t.src||br(t,"none")}})}),l?g():(o(c),s(c,h),h())}function h(){(u=u.filter(function(t){var n=i.perPage*((i.preloadPages||1)+1)-1;return!t[1].isWithin(e.index,n)||f(t)})).length||o(c)}function f(e){var t=e[0];sr(e[1].slide,nl),r(t,"load error",qo(p,e)),mr(t,"src",wr(t,bl)),mr(t,"srcset",wr(t,_l)),gr(t,bl),gr(t,_l)}function p(e,t){var i=e[0],n=e[1];Pr(n.slide,nl),"error"!==t.type&&(Sr(e[2]),br(i,""),a(ca,i,n),a(ta)),l&&g()}function g(){u.length&&f(u.shift())}return{mount:function(){i.lazyLoad&&(d(),s(Jr,d))},destroy:qo(Bo,u),check:h}},Pagination:function(e,t,i){var n,s,o=da(e),r=o.on,a=o.emit,l=o.bind,c=t.Slides,u=t.Elements,d=t.Controller,h=d.hasFocus,f=d.getIndex,p=d.go,g=t.Direction.resolve,m=u.pagination,v=[];function y(){n&&(Sr(m?Fo(n.children):n),Pr(n,s),Bo(v),n=null),o.destroy()}function b(e){p(">"+e,!0)}function _(e,t){var i=v.length,n=vl(t),s=w(),o=-1;n===g(ga,!1,s)?o=++e%i:n===g(pa,!1,s)?o=(--e+i)%i:"Home"===n?o=0:"End"===n&&(o=i-1);var r=v[o];r&&(_r(r.button),p(">"+o),Tr(t,!0))}function w(){return i.paginationDirection||i.direction}function E(e){return v[d.toPage(e)]}function x(){var e=E(f(!0)),t=E(f());if(e){var i=e.button;Pr(i,Ja),gr(i,Aa),mr(i,wa,-1)}if(t){var s=t.button;sr(s,Ja),mr(s,Aa,!0),mr(s,wa,"")}a("pagination:updated",{list:n,items:v},e,t)}return{items:v,mount:function t(){y(),r([ea,Jr,ua],t);var o=i.pagination;m&&br(m,o?"":"none"),o&&(r([Zr,na,sa],x),function(){var t=e.length,o=i.classes,r=i.i18n,a=i.perPage,f=h()?d.getEnd()+1:jr(t/a);sr(n=m||vr("ul",o.pagination,u.track.parentElement),s=Xa+"--"+w()),mr(n,_a,"tablist"),mr(n,Ta,r.select),mr(n,Pa,w()===ya?"vertical":"");for(var p=0;p<f;p++){var g=vr("li",null,n),y=vr("button",{class:o.page,type:"button"},g),E=c.getIn(p).map(function(e){return e.slide.id}),x=!h()&&a>1?r.pageX:r.slideX;l(y,"click",qo(b,p)),i.paginationKeyboard&&l(y,"keydown",qo(_,p)),mr(g,_a,"presentation"),mr(y,_a,"tab"),mr(y,xa,E.join(" ")),mr(y,Ta,Rr(x,p+1)),mr(y,wa,-1),v.push({li:g,button:y,page:p})}}(),x(),a("pagination:mounted",{list:n,items:v},E(e.index)))},destroy:y,getAt:E,update:x}},Sync:function(e,t,i){var n=i.isNavigation,s=i.slideFocus,o=[];function r(){var t,i;e.splides.forEach(function(t){t.isParent||(l(e,t.splide),l(t.splide,e))}),n&&((i=(t=da(e)).on)(Kr,u),i("sk",d),i([Ur,ea],c),o.push(t),t.emit(ra,e.splides))}function a(){o.forEach(function(e){e.destroy()}),Bo(o)}function l(e,t){var i=da(e);i.on(Zr,function(e,i,n){t.go(t.is(hl)?n:e)}),o.push(i)}function c(){mr(t.Elements.list,Pa,i.direction===ya?"vertical":"")}function u(t){e.go(t.index)}function d(e,t){tr(El,vl(t))&&(u(e),Tr(t))}return{setup:qo(t.Media.set,{slideFocus:Zo(s)?n:s},!0),mount:r,destroy:a,remount:function(){a(),r()}}},Wheel:function(e,t,i){var n=da(e).bind,s=0;function o(n){if(n.cancelable){var o=n.deltaY,r=o<0,a=Lr(n),l=i.wheelMinThreshold||0,c=i.wheelSleep||0;Br(o)>l&&a-s>c&&(e.go(r?"<":">"),s=a),function(n){return!i.releaseWheel||e.state.is(4)||-1!==t.Controller.getAdjacent(n)}(r)&&Tr(n)}}return{mount:function(){i.wheel&&n(t.Elements.track,"wheel",o,gl)}}},Live:function(e,t,i){var n=da(e).on,s=t.Elements.track,o=i.live&&!i.isNavigation,r=vr("span",Qa),a=ha(90,qo(l,!1));function l(e){mr(s,Ma,e),e?(or(s,r),a.start()):(Sr(r),a.cancel())}function c(e){o&&mr(s,Oa,e?"off":"polite")}return{mount:function(){o&&(c(!t.Autoplay.isPaused()),mr(s,Ia,!0),r.textContent="…",n(aa,qo(c,!0)),n(la,qo(c,!1)),n([Qr,sa],qo(l,!0)))},disable:c,destroy:function(){gr(s,[Oa,Ia,Ma]),Sr(r)}}}}),Sl={type:"slide",role:"region",speed:400,perPage:1,cloneStatus:!0,arrows:!0,pagination:!0,paginationKeyboard:!0,interval:5e3,pauseOnHover:!0,pauseOnFocus:!0,resetProgress:!0,easing:"cubic-bezier(0.25, 1, 0.5, 1)",drag:!0,direction:"ltr",trimSpace:!0,focusableNodes:"a, button, textarea, input, select, iframe",live:!0,classes:al,i18n:{prev:"Previous slide",next:"Next slide",first:"Go to first slide",last:"Go to last slide",slideX:"Go to slide %s",pageX:"Go to page %s",play:"Start autoplay",pause:"Pause autoplay",carousel:"carousel",slide:"slide",select:"Select a slide to show",slideLabel:"%s of %s"},reducedMotion:{speed:0,rewindSpeed:0,autoplay:"pause"}};function Al(e,t,i){var n=t.Slides;
2function s(){n.forEach(function(e){e.style("transform","translateX(-"+100*e.index+"%)")})}return{mount:function(){da(e).on([Ur,Jr],s)},start:function(e,t){n.style("transition","opacity "+i.speed+"ms "+i.easing),zo(t)},cancel:Ho}}function Tl(e,t,i){var n,s=t.Move,o=t.Controller,r=t.Scroll,a=t.Elements.list,l=qo(yr,a,"transition");function c(){l(""),r.cancel()}return{mount:function(){da(e).bind(a,"transitionend",function(e){e.target===a&&n&&(c(),n())})},start:function(t,a){var c=s.toPosition(t,!0),u=s.getPosition(),d=function(t){var n=i.rewindSpeed;if(e.is(dl)&&n){var s=o.getIndex(!0),r=o.getEnd();if(0===s&&t>=r||s>=r&&0===t)return n}return i.speed}(t);Br(c-u)>=1&&d>=1?i.useScroll?r.scroll(c,d,!1,a):(l("transform "+d+"ms "+i.easing),s.translate(c,!0),n=a):(s.jump(t),a())},cancel:c}}var Cl=function(){function e(t,i){var n;this.event=da(),this.Components={},this.state=(n=1,{set:function(e){n=e},is:function(e){return tr(Jo(e),n)}}),this.splides=[],this._o={},this._E={};var s=Go(t)?Cr(document,t):t;Dr(s,s+" is invalid."),this.root=s,i=fr({label:wr(s,Ta)||"",labelledby:wr(s,Ca)||""},Sl,e.defaults,i||{});try{fr(i,JSON.parse(wr(s,Ir)))}catch(e){Dr(!1,"Invalid JSON")}this._o=Object.create(fr({},i))}var t,i,n=e.prototype;return n.mount=function(e,t){var i=this,n=this.state,s=this.Components;return Dr(n.is([1,7]),"Already mounted!"),n.set(1),this._C=s,this._T=t||this._T||(this.is(fl)?Al:Tl),this._E=e||this._E,dr(hr({},xl,this._E,{Transition:this._T}),function(e,t){var n=e(i,s,i._o);s[t]=n,n.setup&&n.setup()}),dr(s,function(e){e.mount&&e.mount()}),this.emit(Ur),sr(this.root,Ka),n.set(3),this.emit(Gr),this},n.sync=function(e){return this.splides.push({splide:e}),e.splides.push({splide:this,isParent:!0}),this.state.is(3)&&(this._C.Sync.remount(),e.Components.Sync.remount()),this},n.go=function(e){return this._C.Controller.go(e),this},n.on=function(e,t){return this.event.on(e,t),this},n.off=function(e){return this.event.off(e),this},n.emit=function(e){var t;return(t=this.event).emit.apply(t,[e].concat(Fo(arguments,1))),this},n.add=function(e,t){return this._C.Slides.add(e,t),this},n.remove=function(e){return this._C.Slides.remove(e),this},n.is=function(e){return this._o.type===e},n.refresh=function(){return this.emit(Jr),this},n.destroy=function(e){void 0===e&&(e=!0);var t=this.event,i=this.state;return i.is(1)?da(this).on(Gr,this.destroy.bind(this,e)):(dr(this._C,function(t){t.destroy&&t.destroy(e)},!0),t.emit(oa),t.destroy(),e&&Bo(this.splides),i.set(7)),this},t=e,(i=[{key:"options",get:function(){return this._o},set:function(e){this._C.Media.set(e,!0,!0)}},{key:"length",get:function(){return this._C.Slides.getLength(!0)}},{key:"index",get:function(){return this._C.Controller.getIndex()}}])&&$o(t.prototype,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function kl(e,t,i){return Array.prototype.slice.call(e,t,i)}function Pl(e){return e.bind.apply(e,[null].concat(kl(arguments,1)))}function Ll(e,t){return typeof t===e}Cl.defaults={},Cl.STATES={CREATED:1,MOUNTED:2,IDLE:3,MOVING:4,SCROLLING:5,DRAGGING:6,DESTROYED:7};var Ol=Array.isArray;function Ml(e){return Ol(e)?e:[e]}function Il(e,t){Ml(e).forEach(t)}Pl(Ll,"function"),Pl(Ll,"string"),Pl(Ll,"undefined");var Dl=Object.keys;var Nl="splide",Vl="refresh";function $l(e){var t=e?e.event.bus:document.createDocumentFragment(),i=function(){var e=[];function t(e,t,i){Il(e,function(e){e&&Il(t,function(t){t.split(" ").forEach(function(t){var n=t.split(".");i(e,n[0],n[1])})})})}return{bind:function(i,n,s,o){t(i,n,function(t,i,n){var r="addEventListener"in t,a=r?t.removeEventListener.bind(t,i,s,o):t.removeListener.bind(t,s);r?t.addEventListener(i,s,o):t.addListener(s),e.push([t,i,n,s,a])})},unbind:function(i,n,s){t(i,n,function(t,i,n){e=e.filter(function(e){return!!(e[0]!==t||e[1]!==i||e[2]!==n||s&&e[3]!==s)||(e[4](),!1)})})},dispatch:function(e,t,i){var n,s=!0;return"function"==typeof CustomEvent?n=new CustomEvent(t,{bubbles:s,detail:i}):(n=document.createEvent("CustomEvent")).initCustomEvent(t,s,!1,i),e.dispatchEvent(n),n},destroy:function(){e.forEach(function(e){e[4]()}),e.length=0}}}();return e&&e.event.on("destroy",i.destroy),function(e){return kl(arguments,1
2).forEach(function(t){!function(e,t){if(e)for(var i=Dl(e),n=0;n<i.length;n++){var s=i[n];if("__proto__"!==s&&!1===t(e[s],s))break}}(t,function(i,n){e[n]=t[n]})}),e}(i,{bus:t,on:function(e,n){i.bind(t,Ml(e).join(" "),function(e){n.apply(n,Ol(e.detail)?e.detail:[])})},off:Pl(i.unbind,t),emit:function(e){i.dispatch(t,e,kl(arguments,1))}})}var jl=Nl,Bl=Nl+"__slide",Fl=Bl+"__container";function ql(e){e.length=0}function zl(e,t,i){return Array.prototype.slice.call(e,t,i)}function Hl(e){return e.bind(null,...zl(arguments,1))}function Rl(e,t){return typeof t===e}const Yl=Array.isArray;Hl(Rl,"function");const Wl=Hl(Rl,"string"),Xl=Hl(Rl,"undefined");function Ul(e){return null===e}function Gl(e){return Yl(e)?e:[e]}function Zl(e,t){Gl(e).forEach(t)}function Ql(e,t){return e.push(...Gl(t)),e}function Kl(e,t,i){e&&Zl(t,t=>{t&&e.classList[i?"add":"remove"](t)})}function Jl(e,t){Kl(e,Wl(t)?t.split(" "):t,!0)}function ec(e,t){Zl(t,e.appendChild.bind(e))}function tc(e,t){return t?function(e,t){const i=e?zl(e.children):[];return t?i.filter(e=>function(e,t){return e instanceof HTMLElement&&(e.msMatchesSelector||e.matches).call(e,t)}(e,t)):i}(e,t)[0]:e.firstElementChild}const ic=Object.keys;function nc(e,t,i){if(e){let n=ic(e);n=i?n.reverse():n;for(let i=0;i<n.length;i++){const s=n[i];if("__proto__"!==s&&!1===t(e[s],s))break}}return e}function sc(e,t){Zl(e,e=>{Zl(t,t=>{e&&e.removeAttribute(t)})})}function oc(e,t,i){var n;!Ul(n=t)&&Rl("object",n)?nc(t,(t,i)=>{oc(e,i,t)}):Zl(e,e=>{Ul(i)||""===i?sc(e,t):e.setAttribute(t,String(i))})}function rc(e,t,i){const n=document.createElement(e);return t&&(Wl(t)?Jl(n,t):oc(n,t)),i&&ec(i,n),n}function ac(e,t,i){if(Xl(i))return getComputedStyle(e)[t];Ul(i)||(e.style[t]=`${i}`)}function lc(e,t){return t?zl(e.querySelectorAll(t)):[]}function cc(e,t){Kl(e,t,!1)}function uc(e){return Wl(e)?e:e?`${e}px`:""}const{min:dc,max:hc,floor:fc,ceil:pc,abs:gc}=Math,mc=`${Bl}__row`,vc=`${Bl}--col`,yc={rows:1,cols:1,dimensions:[],gap:{}};function bc(e,t,i){const{on:n,off:s}=$l(e),{Elements:o}=t,r={},a=function(e){function t(){const{rows:t,cols:i,dimensions:n}=e;return Yl(n)&&n.length?n:[[t,i]]}return{get:function(e){const i=t();return i[dc(e,i.length-1)]},getAt:function(e){const i=t();let n,s,o=0;for(let t=0;t<i.length;t++){const r=i[t];if(n=r[0]||1,s=r[1]||1,o+=n*s,e<o)break}return function(e){if(!e)throw new Error("[splide] Invalid dimension")}(n&&s),[n,s]}}}(r),l=function(e,t,i){const{on:n,destroy:s}=$l(e),{Components:o,options:r}=e,{resolve:a}=o.Direction,{forEach:l}=o.Slides;function c(e,t){const i=tc(e,`.${Fl}`),n=tc(i||e,"img");n&&n.src&&(ac(i||e,"background",t?"":`center/cover no-repeat url("${n.src}")`),ac(n,"display",t?"":"none"))}function u(e){return lc(e,`.${mc}`)}function d(e){return lc(e,`.${vc}`)}function h(e,t){d(e).forEach(e=>{oc(e,"tabindex",t?0:null)})}function f(e){h(e.slide,!0)}function p(e){h(e.slide,!1)}return{mount:function(){l(n=>{const{slide:s}=n,[o,r]=i.get(n.isClone?n.slideIndex:n.index);!function(e,i){const{row:n}=t.gap,s=`calc(${100/e}%${n?` - ${uc(n)} * ${(e-1)/e}`:""})`;u(i).forEach((e,t,i)=>{ac(e,"height",s),ac(e,"display","flex"),ac(e,"margin",`0 0 ${uc(n)} 0`),ac(e,"padding",0),t===i.length-1&&ac(e,"marginBottom",0)})}(o,s),function(e,i){const{col:n}=t.gap,s=`calc(${100/e}%${n?` - ${uc(n)} * ${(e-1)/e}`:""})`;
2d(i).forEach((e,t,i)=>{ac(e,"width",s),t!==i.length-1&&ac(e,a("marginRight"),uc(n))})}(r,s),d(n.slide).forEach((t,i)=>{var s;t.id=`${n.slide.id}-col${s=i+1,s<10?`0${s}`:`${s}`}`,e.options.cover&&c(t)})}),r.slideFocus&&(n("visible",f),n("hidden",p))},destroy:function(){l(e=>{const{slide:t}=e;h(t,!1),u(t).forEach(e=>{sc(e,"style")}),d(t).forEach(e=>{c(e,!0),sc(e,"style")})}),s()}}}(e,r,a),c=`${jl}--grid`,u=[];function d(){var t;Gl(ic(t=r)).forEach(e=>{delete t[e]}),function(e){zl(arguments,1).forEach(t=>{nc(t,(i,n)=>{e[n]=t[n]})})}(r,yc,i.grid||{}),function(){if(i.grid){const{rows:e,cols:t,dimensions:i}=r;return e>1||t>1||Yl(i)&&i.length>0}return!1}()?(h(),Ql(u,o.slides),Jl(e.root,c),ec(o.list,function(){const e=[];let t,i,n=0,s=0;return u.forEach((o,r)=>{const[l,c]=a.getAt(r);s||(n||(t=rc(o.tagName,Bl),e.push(t)),i=function(e,t,i){return rc("li"===t.tagName.toLowerCase()?"ul":"div",mc,i)}(0,o,t)),function(e,t,i){Jl(t,vc),ec(i,t)}(0,o,i),++s>=c&&(s=0,n=++n>=l?0:n)}),e}()),s(Vl),n(Vl,p),f()):g()&&(h(),f())}function h(){if(g()){const{slides:t}=o;l.destroy(),u.forEach(e=>{cc(e,vc),ec(o.list,e)}),Zl(t,e=>{e&&e.parentNode&&e.parentNode.removeChild(e)}),cc(e.root,c),ql(t),Ql(t,u),ql(u),s(Vl)}}function f(){e.refresh()}function p(){g()&&l.mount()}function g(){return t=e.root,i=c,t&&t.classList.contains(i);var t,i}return{mount:function(){d(),n("updated",d)},destroy:h}}i(873),i(909),i(106),window.bootstrap=t,document.querySelectorAll(".dropdown").forEach(e=>{const t=e.querySelector('[data-bs-toggle="dropdown"]');t&&(t.addEventListener("show.bs.dropdown",()=>{e.classList.add("dd-active")}),t.addEventListener("hidden.bs.dropdown",()=>{e.classList.remove("dd-active")}))});const _c=document.querySelector(".main-nav");let wc=null;_c&&(_c.querySelectorAll(".nav-item.dropdown").forEach(e=>{Ui.getOrCreateInstance(e.querySelector('[data-bs-toggle="dropdown"]'))}),wc=_c.querySelector(".container-nav")),new ResizeObserver(()=>{wc&&document.body.style.setProperty("--main-nav-left",wc.offsetLeft+"px")}).observe(document.querySelector("body")),document.querySelectorAll(".carousel").forEach(e=>{const t=e.querySelectorAll(".ele-height-as-var");t&&e.addEventListener("slid.bs.carousel",()=>{Vo(t)})}),window.addEventListener("load",()=>{Vo(),document.querySelectorAll(".svg2inline").forEach(async e=>{if(e.src.endsWith(".svg"))try{const t=await fetch(e.src);if(t.ok){const i=await t.text();e.parentElement.innerHTML=i}}catch(e){}}),document.querySelectorAll(".form-label-as-placeholder").forEach(e=>{e.querySelectorAll("input.text, textarea").forEach(e=>{const t=e.closest(".field");if(t){const i=t.querySelector("label.left");i&&(e.setAttribute("placeholder",i.innerText),i.style.display="none")}})}),document.querySelectorAll(".splide").forEach(e=>{if(e.classList.contains("init-manually"))return;const t=e.dataset.enableGrid?new Cl(e).mount({Grid:bc}):new Cl(e).mount(),i=e.querySelectorAll(".btn-prev-slide"),n=e.querySelectorAll(".btn-next-slide");e.setAttribute("data-length",t.length),e.addEventListener("click",e=>{i&&i.forEach(i=>{i.contains(e.target)&&t.go("-1")}),n&&n.forEach(i=>{i.contains(e.target)&&t.go("+1")})})}),document.querySelectorAll(".gallery-carousel").forEach(e=>{const t=e.querySelector(".gc-caption-main"),i=e.querySelector(".splide-main"),n=e.querySelector(".splide-thumbs");let s;if(n&&e?.dataset?.enableLightbox){let t=e?.dataset?.lightboxOptions||null;if(t)try{t=JSON.parse(t)}catch(e){}s=_o()(Object.assign({closeOnOutsideClick:!1},t)),n.querySelectorAll(".gc-thumb-slide").forEach(e=>{const t=e.querySelector(".gc-thumb-item")?.dataset?.imgUrl||null,i=e.querySelector(".gc-caption")?.innerHTML||null;t&&i&&s.insertSlide({href:t,type:"image",description:'<div class="gc-caption">'+i+"</div>"})}),e.addEventListener("click",e=>{e.target.classList.contains("slide-img")&&s.openAt(e.target.dataset.pos||0)})}const o=(e,i)=>{e.on("move",()=>{t&&(t.style.opacity=0)}).on("moved",i=>{const n=e.Components.Elements.slides[i].querySelector(".gc-caption");n&&t&&(t.style.opacity=1,t.innerHTML=n.innerHTML)}),s&&(s.on("slide_changed",({prev:t,current:i})=>{null!==t.index&&i.index&&e.go(i.index)}),s.on("close",()=>{setTimeout(()=>
2{i.forEach(e=>e.refresh())},50)}))};if(i&&n){const e=new Cl(i),t=new Cl(n);e.sync(t),e.mount(),t.mount(),o(t,[e,t])}else if(i)new Cl(i).mount();else if(n){const e=new Cl(n);e.mount(),o(e,[e])}}),document.querySelectorAll(".gallery-carousel-holder").forEach(e=>{const t=e.querySelector(".splide"),i={arrows:!0,arrowPath:"",classes:{arrows:"splide__arrows custom-arrows",arrow:"splide__arrow custom-arrow",prev:"splide__arrow--prev custom-arrow-prev",next:"splide__arrow--next custom-arrow-next"}},n=t.dataset.enableGrid?new Cl(t,i).mount({Grid:bc}):new Cl(t,i).mount();e.setAttribute("data-length",n.length);const s=t.querySelector(".splide__arrows"),o=e.querySelector(".gallery-arrows-above");s&&o&&(o.appendChild(s),s.style.display="flex",s.style.flexDirection="row",s.style.justifyContent="center",s.style.alignItems="center",s.style.gap="var(--es-gallery-arrow-gap, 1.5rem)",s.style.width="auto");const r=e.querySelector(".btn-prev-slide"),a=e.querySelector(".btn-next-slide");r&&r.addEventListener("click",e=>{e.stopPropagation(),n.go("-1")}),a&&a.addEventListener("click",e=>{e.stopPropagation(),n.go("+1")})}),document.addEventListener("click",e=>{(e.target.closest(".btn-prev-slide")||e.target.closest(".btn-next-slide"))&&e.stopPropagation()},!0),document.querySelectorAll("select").forEach(e=>{e.addEventListener("change",()=>{e.options[e.selectedIndex].value?e.classList.add("has-value"):e.classList.remove("has-value")})})}),window.addEventListener("resize",((e,t=300)=>{let i;return(...n)=>{clearTimeout(i),i=setTimeout(()=>{e.apply(void 0,n)},t)}})(()=>{Vo()},100)),document.querySelectorAll(".modal").forEach(e=>{e.addEventListener("hidden.bs.modal",()=>{document.body.focus()})}),window.addEventListener("DOMContentLoaded",()=>{_o()({selector:".glightbox",touchNavigation:!0,loop:!0,autoplayVideos:!0,plyr:{config:{ratio:"16:9",vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3}}},beforeSlideChange:()=>{},slideHtml:'<div class="gslide"><div class="gslide-inner-content"><div class="ginner-container"><div class="gslide-media"></div><div class="gslide-description"><div class="gdesc-inner"><h4 class="gslide-title"></h4><div class="gslide-desc"></div></div></div></div></div></div>',descPosition:"bottom",moreText:"See more",moreLength:60,closable:!0,closeButton:!0,cssEffects:{fade:{in:"fadeIn",out:"fadeOut"},zoom:{in:"zoomIn",out:"zoomOut"},slide:{in:"slideInRight",out:"slideOutLeft"},slideBack:{in:"slideInLeft",out:"slideOutRight"},none:{in:"none",out:"none"}},openEffect:"fade",closeEffect:"fade"}),document.querySelectorAll(".element-elementstatcounters .stat-value").forEach(e=>{const t=parseFloat(e.textContent.replace(/,/g,""));if(Number.isNaN(t))return;if(e.dataset.animated)return;e.dataset.animated="true";const i=()=>{const i=new yo(e,t,{duration:2,separator:","});i.error?e.textContent=t:i.start()};"IntersectionObserver"in window?new window.IntersectionObserver((t,n)=>{t.forEach(t=>{t.isIntersecting&&(i(),n.unobserve(e))})},{threshold:.5}).observe(e):i()})}),window.addEventListener("DOMContentLoaded",()=>{Io.registerProvider("youtube",Do),Io.registerProvider("vimeo",No),document.querySelectorAll(".vlite-player").forEach(e=>{new Io(e,{options:{controls:!0,autoplay:e.dataset.options&&JSON.parse(e.dataset.options).autoplay||!1,loop:e.dataset.options&&JSON.parse(e.dataset.options).loop||!1,muted:e.dataset.options&&JSON.parse(e.dataset.options).muted||!1},provider:e.dataset.provider||"html5",providerParams:{youtube:e.dataset.youtubeId||null,vimeo:e.dataset.vimeoId||null},onReady:t=>{t.elements.bigPlay.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="117" height="117" viewBox="0 0 117 117"><g transform="translate(-21744 -5605)"><path d="M58.5,0A58.5,58.5,0,1,1,0,58.5,58.5,58.5,0,0,1,58.5,0Z" transform="translate(21744 5605)" fill="#eee9f5"/><path d="M40.675,55.727,0,32V79.454Z" transform="translate(21789.17 5607.238)" fill="#2a1854"/></g></svg>';const i=e.dataset.stateEle||null;if(i){const t=document.querySelector(i);t&&(t.setAttribute("data-player","ready"),e.on("play",()=>{t.setAttribute("data-player","playing")}),e.on("pause",()=>{t.setAttribute("data-player","paused")}),e.on("ended",()=>{t.setAttribute("data-player","ended")}))}}})})}),document.body.addEventListener("htmx:beforeRequest",e=>{document.body.classList.add("http-requesting")}),document.body.addEventListener("htmx:afterRequest",e=>{if(document.body.classList.remove("http-requesting"),e.detail.target.classList.contains("page-link")){const e=document.getElementById("ele-events");let t;e&&(t=e),t&&t.scrollIntoView({behavior:"smooth"})}})})()})(); 3//# sourceMappingURL=data:application/json;charset=utf-8;base64,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kQsU0FBU29GLGlCQUFpQixpQkFBaUJxWixRQUFTdE4sSUFDbEQsSUFBSSxHQUFRQSxFQUFRLENBQ2xCbVMsUUFBUyxDQUNQNm5DLFVBQVUsRUFDVkMsU0FBVWo2QyxFQUFPN0MsUUFBUWdWLFNBQVdnYyxLQUFLQyxNQUFNcHVCLEVBQU83QyxRQUFRZ1YsU0FBUzhuQyxXQUFZLEVBQ25GdHpDLEtBQU0zRyxFQUFPN0MsUUFBUWdWLFNBQVdnYyxLQUFLQyxNQUFNcHVCLEVBQU83QyxRQUFRZ1YsU0FBU3hMLE9BQVEsRUFDM0UwRixNQUFPck0sRUFBTzdDLFFBQVFnVixTQUFXZ2MsS0FBS0MsTUFBTXB1QixFQUFPN0MsUUFBUWdWLFNBQVM5RixRQUFTLEdBRS9FcXBDLFNBQVUxMUMsRUFBTzdDLFFBQVF1NEMsVUFBWSxRQUNyQzRGLGVBQWdCLENBQ2QvekMsUUFBU3ZILEVBQU83QyxRQUFRZ21FLFdBQWEsS0FDckN4N0QsTUF
3BTzNILEVBQU83QyxRQUFRaW1FLFNBQVcsTUFFbkM1c0IsUUFBVTZzQixJQUNSQSxFQUFLdjlELFNBQVM4ekMsUUFBUTlqRCxVQUFZLDZWQUtsQyxNQUFNd3RFLEVBQW1CdGpFLEVBQU83QyxRQUFRb21FLFVBQVksS0FFcEQsR0FBSUQsRUFBa0IsQ0FDcEIsTUFBTUMsRUFBVzEwRSxTQUFTQyxjQUFjdzBFLEdBRXBDQyxJQUNGQSxFQUFTbnBFLGFBQWEsY0FBZSxTQUVyQzRGLEVBQU8vQyxHQUFHLE9BQVEsS0FDaEJzbUUsRUFBU25wRSxhQUFhLGNBQWUsYUFHdkM0RixFQUFPL0MsR0FBRyxRQUFTLEtBQ2pCc21FLEVBQVNucEUsYUFBYSxjQUFlLFlBR3ZDNEYsRUFBTy9DLEdBQUcsUUFBUyxLQUNqQnNtRSxFQUFTbnBFLGFBQWEsY0FBZSxXQUczQyxTQU9SdkwsU0FBUzRGLEtBQUs3RSxpQkFBaUIscUJBQXVCa0QsSUFDcERqRSxTQUFTNEYsS0FBS2xGLFVBQVUrRSxJQUFJLHFCQUk5QnpGLFNBQVM0RixLQUFLN0UsaUJBQWlCLG9CQUFzQmtELElBTW5ELEdBTEFqRSxTQUFTNEYsS0FBS2xGLFVBQVVnRixPQUFPLG1CQUszQnpCLEVBQUlvSyxPQUFPcEMsT0FBT3ZMLFVBQVVpRixTQUFTLGFBQWMsQ0FDckQsTUFBTStsQixFQUFPMXJCLFNBQVMrTyxlQUhKLGNBSWxCLElBQUk0bEUsRUFFQWpwRCxJQUNGaXBELEVBQVdqcEQsR0FHVGlwRCxHQUNGQSxFQUFTQyxlQUFlLENBQUVwekUsU0FBVSxVQUV4QyxHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vc3JjL2pzL2NvbXBvbmVudHMvYmFjay10by10b3AuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2dsaWdodGJveEAzLjMuMS9ub2RlX21vZHVsZXMvZ2xpZ2h0Ym94L2Rpc3QvanMvZ2xpZ2h0Ym94Lm1pbi5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9zcmMvanMvY29tcG9uZW50cy92aW9sYXRvci5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9zcmMvanMvY29tcG9uZW50cy9wb3B1cC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2VudW1zLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3cuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VzZXJBZ2VudC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzTGF5b3V0Vmlld3BvcnQuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvY29udGFpbnMuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2Nvcm
3UvbGliL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNUYWJsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRQYXJlbnROb2RlLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3dpdGhpbi5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbEJhclguanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1Njcm9sbFBhcmVudC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFNjcm9sbFBhcmVudC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2Nvcm
3UvbGliL21vZGlmaWVycy9mbGlwLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2hpZGUuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRBbHRBeGlzLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXIuanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9ib290c3RyYXBANS4zLjhfQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9ib290c3RyYXAvZGlzdC9qcy9ib290c3RyYXAuZXNtLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS9jb3VudHVwLmpzQDIuOS4wL25vZGVfbW9kdWxlcy9jb3VudHVwLmpzL2Rpc3QvY291bnRVcC5taW4uanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL3ZsaXRlanNANy40LjIvbm9kZV9tb2R1bGVzL3ZsaXRlanMvZGlzdC92bGl0ZS5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vdmxpdGVqc0A3LjQuMi9ub2RlX21vZHVsZXMvdmxpdGVqcy9kaXN0L3Byb3ZpZGVycy95b3V0dWJlLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL25vZGVfbW9kdWxlcy8ucG5wbS92bGl0ZWpzQDcuNC4yL25vZGVfbW9kdWxlcy92bGl0ZWpzL2Rpc3QvcHJvdmlkZXJzL3ZpbWVvLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL3NyYy9qcy9jb21wb25lbnRzL2hlbHBlci5qcyIsIndlYnBhY2s6Ly9lc3NlbnRpYWxzLXZpdmlkLXN0YXJ0ZXItdGhlbWUvLi9ub2RlX21vZHVsZXMvLnBucG0vQHNwbGlkZWpzK3NwbGlkZUA0LjEuNC9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS9kaXN0L2pzL3NwbGlkZS5lc20uanMiLCJ3ZWJwYWNrOi8vZXNzZW50aWFscy12aXZpZC1zdGFydGVyLXRoZW1lLy4vbm9kZV9tb2R1bGVzLy5wbnBtL0BzcGxpZGVqcytzcGxpZGUtZXh0ZW5zaW9uLWdyaWRAMC40LjEvbm9kZV9tb2R1bGVzL0BzcGxpZGVqcy9zcGxpZGUtZXh0ZW5zaW9uLWdyaWQvZGlzdC9qcy9zcGxpZGUtZXh0ZW5zaW9uLWdyaWQuZXNtLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL3NyYy9qcy9tYWluLmpzIiwid2VicGFjazovL2Vzc2VudGlhbHMtdml2aWQtc3RhcnRlci10aGVtZS8uL3NyYy9qcy9jb21wb25lbnRzL3NwbGlkZS1jYXJvdXNlbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhY2stdG8tdG9wIGNvbnRyb2wgKCMyMSlcbiAqIFJldmVhbHMgdGhlIGNvbnRyb2wgKG1hcmt1cCBzaGlwcyBoaWRkZW4gZm9yIG5vLUpTIHZpc2l0b3JzKSwgdG9nZ2xlc1xuICogdmlzaWJpbGl0eSBwYXN0IGEgc2Nyb2xsIHRocmVzaG9sZCwgYW5kIHJldHVybnMgZm9jdXMgdG8gdGhlIHNraXAgbGlua1xuICogYWZ0ZXIgc2Nyb2xsaW5nIHNvIGtleWJvYXJkIHVzZXJzIGFyZW4ndCBzdHJhbmRlZCBvbiBhIGZhZGluZyBjb250cm9sLlxuICovXG4oZnVuY3Rpb24gKCkge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gV2FpdCBmb3IgRE9NIHRvIGJlIHJlYWR5XG4gIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICBkb2
3N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgaW5pdEJhY2tUb1RvcCk7XG4gIH0gZWxzZSB7XG4gICAgaW5pdEJhY2tUb1RvcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdEJhY2tUb1RvcCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmJhY2stdG8tdG9wJyk7XG5cbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBNYXJrdXAgc2hpcHMgaGlkZGVuIHNvIG5vLUpTIHZpc2l0b3JzIG5ldmVyIHNlZSBhIGNvbnRyb2wgdGhhdCBjYW4ndFxuICAgIC8vIGhpZGUgaXRzZWxmIGFnYWluOyBKUyBpcyBydW5uaW5nLCBzbyByZXZlYWwgaXQuXG4gICAgY29udHJvbC5oaWRkZW4gPSBmYWxzZTtcblxuICAgIGxldCB0aWNraW5nID0gZmFsc2U7XG5cbiAgICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgICB0aWNraW5nID0gZmFsc2U7XG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSBNYXRoLm1heCg0MDAsIHdpbmRvdy5pbm5lckhlaWdodCAqIDAuNzUpO1xuICAgICAgY29udHJvbC5jbGFzc0xpc3QudG9nZ2xlKCdpcy12aXNpYmxlJywgd2luZG93LnNjcm9sbFkgPiB0aHJlc2hvbGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uU2Nyb2xsKCkge1xuICAgICAgaWYgKCF0aWNraW5nKSB7XG4gICAgICAgIHRpY2tpbmcgPSB0cnVlO1xuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cbiAgICBjb250cm9sLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBjb25zdCByZWR1Y2VNb3Rpb24gPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5tYXRjaGVzO1xuXG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiByZWR1Y2VNb3Rpb24gPyAnYXV0bycgOiAnc21vb3RoJyB9KTtcblxuICAgICAgLy8gVGhlIGNvbnRyb2wgaXMgYWJvdXQgdG8gZmFkZSBvdXQsIHNvIGhhbmQgZm9jdXMgYmFjayB0byB0aGUgdG9wIG9mXG4gICAgICAvLyB0aGUgZG9jdW1lbnQgcmF0aGVyIHRoYW4gc3RyYW5kaW5nIGtleWJvYXJkIHVzZXJzIG9uIGl0LlxuICAgICAgY29uc3Qgc2tpcExpbmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2tpcC1saW5rJyk7XG5cbiAgICAgIGlmIChza2lwTGluaykge1xuICAgICAgICBza2lwTGluay5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdXBkYXRlKCk7XG4gIH1cbn0oKSk7XG4iLCIhZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSh0KTooZT1lfHxzZWxmKS5HTGlnaHRib3g9dCgpfSh0aGlzLChmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGUoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIHQoZSx0KXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIHM9dFtpXTtzLmVudW1lcmFibGU9cy5lbnVtZXJhYmxlfHwhMSxzLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBzJiYocy53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbihzLmtleSkscyl9fWZ1bmN0aW9uIGkoZSxpLG4pe3JldHVybiBpJiZ0KGUucHJvdG90eXBlLGkpLG4mJnQoZSxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlfHwhZSlyZXR1cm4gZTt2YXIgaT1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09aSl7dmFyIG49aS5jYWxsKGUsdHx8XCJkZWZhdWx0XCIpO2lmKFwib2JqZWN0XCIhPXR5cGVvZiBuKXJldHVybi
3BuO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKX1yZXR1cm4oXCJzdHJpbmdcIj09PXQ/U3RyaW5nOk51bWJlcikoZSl9KGUsXCJzdHJpbmdcIik7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIHQ/dDp0K1wiXCJ9ZnVuY3Rpb24gcyhlKXtyZXR1cm4ocz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSkoZSl9dmFyIGw9RGF0ZS5ub3coKTtmdW5jdGlvbiBvKCl7dmFyIGU9e30sdD0hMCxpPTAsbj1hcmd1bWVudHMubGVuZ3RoO1wiW29iamVjdCBCb29sZWFuXVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50c1swXSkmJih0PWFyZ3VtZW50c1swXSxpKyspO2Zvcih2YXIgcz1mdW5jdGlvbihpKXtmb3IodmFyIG4gaW4gaSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxuKSYmKHQmJlwiW29iamVjdCBPYmplY3RdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaVtuXSk/ZVtuXT1vKCEwLGVbbl0saVtuXSk6ZVtuXT1pW25dKX07aTxuO2krKyl7dmFyIGw9YXJndW1lbnRzW2ldO3MobCl9cmV0dXJuIGV9ZnVuY3Rpb24gcihlLHQpe2lmKChFKGUpfHxlPT09d2luZG93fHxlPT09ZG9jdW1lbnQpJiYoZT1bZV0pLEwoZSl8fEkoZSl8fChlPVtlXSksMCE9TShlKSlpZihMKGUpJiYhSShlKSlmb3IodmFyIGk9ZS5sZW5ndGgsbj0wO248aSYmITEhPT10LmNhbGwoZVtuXSxlW25dLG4sZSk7bisrKTtlbHNlIGlmKEkoZSkpZm9yKHZhciBzIGluIGUpaWYoUChlLHMpJiYhMT09PXQuY2FsbChlW3NdLGVbc10scyxlKSlicmVha31mdW5jdGlvbiBhKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsbj1lW2xdPWVbbF18fFtdLHM9e2FsbDpuLGV2dDpudWxsLGZvdW5kOm51bGx9O3JldHVybiB0JiZpJiZNKG4pPjAmJnIobiwoZnVuY3Rpb24oZSxuKXtpZihlLmV2ZW50TmFtZT09dCYmZS5mbi50b1N0cmluZygpPT1pLnRvU3RyaW5nKCkpcmV0dXJuIHMuZm91bmQ9ITAscy5ldnQ9biwhMX0pKSxzfWZ1bmN0aW9uIGgoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGk9dC5vbkVsZW1lbnQsbj10LndpdGhDYWxsYmFjayxzPXQuYXZvaWREdXBsaWNhdGUsbD12b2lkIDA9PT1zfHxzLG89dC5vbmNlLGg9dm9pZCAwIT09byYmbyxkPXQudXNlQ2FwdHVyZSxjPXZvaWQgMCE9PWQmJmQsdT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxnPWl8fFtdO2Z1bmN0aW9uIHYoZSl7QyhuKSYmbi5jYWxsKHUsZSx0aGlzKSxoJiZ2LmRlc3Ryb3koKX1yZXR1cm4gayhnKSYmKGc9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChnKSksdi5kZXN0cm95PWZ1bmN0aW9uKCl7cihnLChmdW5jdGlvbih0KXt2YXIgaT1hKHQsZSx2KTtpLmZvdW5kJiZpLmFsbC5zcGxpY2UoaS5ldnQsMSksdC5yZW1vdmVFdmVudExpc3RlbmVyJiZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx2LGMpfSkpfSxyKGcsKGZ1bmN0aW9uKHQpe3ZhciBpPWEodCxlLHYpOyh0LmFkZEV2ZW50TGlzdGVuZXImJmwmJiFpLmZvdW5kfHwhbCkmJih0LmFkZEV2ZW50TGlzdGVuZXIoZSx2LGMpLGkuYWxsLnB1c2goe2V2ZW50TmFtZTplLGZuOnZ9KSl9KSksdn1mdW5jdGlvbiBkKGUsdCl7cih0LnNwbGl0KFwiIFwiKSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xhc3NMaXN0LmFkZCh0KX0pKX1mdW5jdGlvbiBjKGUsdCl7cih0LnNwbGl0KFwiIFwiKSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xhc3NMaXN0LnJlbW92ZSh0KX0pKX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIGUuY2xhc3NMaXN0LmNvbnRhaW5zKHQpfWZ1bmN0aW9uIGcoZSx0KXtmb3IoO2UhPT1kb2N1bWVudC5ib2R5Oyl7aWYoIShlPWUucGFyZW50RWxlbWVudCkpcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5tYXRjaGVzP2UubWF0Y2hlcyh0KTplLm1zTWF0Y2hlc1NlbGVjdG9yKHQpKXJldHVybiBlfX1mdW5jdGlvbiB2KGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIlwiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtpZighZXx8XCJcIj09PXQpcmV0dXJuITE7aWYoXCJub25lXCI9PT10KXJldHVybiBDKGkpJiZpKCksITE7dmFyIG49YigpLHM9dC5zcGxpdChcIiBcIik7cihzLChmdW5jdGlvbih0KXtkKGUsXCJnXCIrdCl9KSksaChuLHtvbkVsZW1lbnQ6ZSxhdm9pZER1cGxpY2F0ZTohMSxvbmNlOiEwLHdpdGhDYWxsYmFjazpmdW5jdGlvbihlLHQpe3IocywoZnVuY3Rpb24oZSl7Yyh0LFwiZ1wiK2UpfSkpLEMoaSkmJmkoKX19KX1mdW5jdGlvbiBmKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIlwiO2lmKFwiXCI9PT10KXJldHVybiBlLnN0eWxlLndlYmtpdFRyYW5zZm9ybT1cIlwiLGUuc3R5bGUuTW96VHJhbnNmb3JtPVwiXCIsZS5zdHlsZS5tc1RyYW5zZm9ybT1cIlwiLGUuc3R5bGUuT1RyYW5zZm9ybT1cIlwiLGUuc3R5bGUudHJhbnNmb3JtPVwiXCIsITE7ZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm09dCxlLnN0eWxlLk1velRyYW5zZm9ybT10LGUuc3R5bGUubXNUcmFuc2Zvcm09dCxlLnN0eWxlLk9UcmFuc2Zvcm09dCxlLnN0eWxlLnRyYW5zZm9ybT10fWZ1bmN0aW9uIHAoZSl7ZS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIn1mdW5jdGlvbiBtKGUpe2Uuc3R5bGUuZGlzcGxheT1cIm5vbmVcIn1mdW5jdGlvbiB5KGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7Zm9yKGkuaW5uZXJIVE1MPWU7aS5maXJzdENoaWxkOyl0LmFwcGVuZENoaWxkKGkuZmlyc3RDaGlsZCk7cmV0dXJuIHR9ZnVuY3Rpb24geCgpe3JldHVybnt3aWR0aDp3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRofHxkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLGhlaWdodDp3aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0fX1mdW5jdGlvbiBiKCl7dmFyIGUsd
3D1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmFrZWVsZW1lbnRcIiksaT17YW5pbWF0aW9uOlwiYW5pbWF0aW9uZW5kXCIsT0FuaW1hdGlvbjpcIm9BbmltYXRpb25FbmRcIixNb3pBbmltYXRpb246XCJhbmltYXRpb25lbmRcIixXZWJraXRBbmltYXRpb246XCJ3ZWJraXRBbmltYXRpb25FbmRcIn07Zm9yKGUgaW4gaSlpZih2b2lkIDAhPT10LnN0eWxlW2VdKXJldHVybiBpW2VdfWZ1bmN0aW9uIFMoZSx0LGksbil7aWYoZSgpKXQoKTtlbHNle3ZhciBzO2l8fChpPTEwMCk7dmFyIGw9c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7ZSgpJiYoY2xlYXJJbnRlcnZhbChsKSxzJiZjbGVhclRpbWVvdXQocyksdCgpKX0pLGkpO24mJihzPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChsKX0pLG4pKX19ZnVuY3Rpb24gdyhlLHQsaSl7aWYoTyhlKSljb25zb2xlLmVycm9yKFwiSW5qZWN0IGFzc2V0cyBlcnJvclwiKTtlbHNlIGlmKEModCkmJihpPXQsdD0hMSksayh0KSYmdCBpbiB3aW5kb3cpQyhpKSYmaSgpO2Vsc2V7dmFyIG47aWYoLTEhPT1lLmluZGV4T2YoXCIuY3NzXCIpKXtpZigobj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW2hyZWY9XCInK2UrJ1wiXScpKSYmbi5sZW5ndGg+MClyZXR1cm4gdm9pZChDKGkpJiZpKCkpO3ZhciBzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSxsPXMucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9XCJzdHlsZXNoZWV0XCJdJyksbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtyZXR1cm4gby5yZWw9XCJzdHlsZXNoZWV0XCIsby50eXBlPVwidGV4dC9jc3NcIixvLmhyZWY9ZSxvLm1lZGlhPVwiYWxsXCIsbD9zLmluc2VydEJlZm9yZShvLGxbMF0pOnMuYXBwZW5kQ2hpbGQobyksdm9pZChDKGkpJiZpKCkpfWlmKChuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NjcmlwdFtzcmM9XCInK2UrJ1wiXScpKSYmbi5sZW5ndGg+MCl7aWYoQyhpKSl7aWYoayh0KSlyZXR1cm4gUygoZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09d2luZG93W3RdfSksKGZ1bmN0aW9uKCl7aSgpfSkpLCExO2koKX19ZWxzZXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO3IudHlwZT1cInRleHQvamF2YXNjcmlwdFwiLHIuc3JjPWUsci5vbmxvYWQ9ZnVuY3Rpb24oKXtpZihDKGkpKXtpZihrKHQpKXJldHVybiBTKChmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT13aW5kb3dbdF19KSwoZnVuY3Rpb24oKXtpKCl9KSksITE7aSgpfX0sZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyKX19fWZ1bmN0aW9uIFQoKXtyZXR1cm5cIm5hdmlnYXRvclwiaW4gd2luZG93JiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvKGlQYWQpfChpUGhvbmUpfChpUG9kKXwoQW5kcm9pZCl8KFBsYXlCb29rKXwoQkIxMCl8KEJsYWNrQmVycnkpfChPcGVyYSBNaW5pKXwoSUVNb2JpbGUpfCh3ZWJPUyl8KE1lZUdvKS9pKX1mdW5jdGlvbiBDKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gayhlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZX1mdW5jdGlvbiBFKGUpe3JldHVybiEoIWV8fCFlLm5vZGVUeXBlfHwxIT1lLm5vZGVUeXBlKX1mdW5jdGlvbiBBKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIEwoZSl7cmV0dXJuIGUmJmUubGVuZ3RoJiZpc0Zpbml0ZShlLmxlbmd0aCl9ZnVuY3Rpb24gSShlKXtyZXR1cm5cIm9iamVjdFwiPT09cyhlKSYmbnVsbCE9ZSYmIUMoZSkmJiFBKGUpfWZ1bmN0aW9uIE8oZSl7cmV0dXJuIG51bGw9PWV9ZnVuY3Rpb24gUChlLHQpe3JldHVybiBudWxsIT09ZSYmaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfWZ1bmN0aW9uIE0oZSl7aWYoSShlKSl7aWYoZS5rZXlzKXJldHVybiBlLmtleXMoKS5sZW5ndGg7dmFyIHQ9MDtmb3IodmFyIGkgaW4gZSlQKGUsaSkmJnQrKztyZXR1cm4gdH1yZXR1cm4gZS5sZW5ndGh9ZnVuY3Rpb24geihlKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChlKSkmJmlzRmluaXRlKGUpfWZ1bmN0aW9uIFgoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06LTEsdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmdidG5bZGF0YS10YWJvcmRlcl06bm90KC5kaXNhYmxlZClcIik7aWYoIXQubGVuZ3RoKXJldHVybiExO2lmKDE9PXQubGVuZ3RoKXJldHVybiB0WzBdO1wic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT1wYXJzZUludChlKSk7dmFyIGk9W107cih0LChmdW5jdGlvbihlKXtpLnB1c2goZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRhYm9yZGVyXCIpKX0pKTt2YXIgbj1NYXRoLm1heC5hcHBseShNYXRoLGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gcGFyc2VJbnQoZSl9KSkpLHM9ZTwwPzE6ZSsxO3M+biYmKHM9XCIxXCIpO3ZhciBsPWkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZT49cGFyc2VJbnQocyl9KSksbz1sLnNvcnQoKVswXTtyZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdidG5bZGF0YS10YWJvcmRlcj1cIicuY29uY2F0KG8sJ1wiXScpKX1mdW5jdGlvbiBZKGUpe2lmKGUuZXZlbnRzLmhhc093blByb3BlcnR5KFwia2V5Ym9hcmRcIikpcmV0dXJuITE7ZS5ldmVudHMua2V5Ym9hcmQ9aChcImtleWRvd25cIix7b25FbGVtZW50OndpbmRvdyx3aXRoQ2FsbGJhY2s6ZnVuY3Rpb24odCxpKXt2YXIgbj0odD10fHx3aW5kb3cuZXZlbnQpLmtleUNvZGU7aWYoOT09bil7dmFyIHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5nYnRuLmZvY3VzZWRcIik7aWYoIXMpe3ZhciBsPSEoIWRvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fCFkb2N1bWVudC5hY3RpdmVFbGVtZW50Lm5vZGVOYW1lKSYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO2lmKFwiaW5wdXRcIj09bHx8XCJ0ZXh0YXJlYVwiPT1sfHxcImJ1dHRvblwiPT1sKXJldHVybn10LnByZXZlbnREZWZhdWx0KCk7dmFyIG89ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5nYnRuW2RhdGEtdGFib3JkZXJdXCIpO2lmKCFvfHxvLmxlbmd0aDw9MClyZXR1cm47aWYoIXMpe3ZhciByPVgoKTtyZXR1cm4gdm9pZChyJiYoci5mb2N1cygpLGQocixcImZvY3VzZWRcIikpKX12YXIgYT1YKHMuZ2V0QXR0cmlidXRlKFwiZGF0YS10YWJvcmRlclwiKSk7YyhzLFwiZm9jdXNlZFwiKSxhJiYoYS5mb2N1cygpLGQoYSxcImZvY3VzZWRcIikpfTM5PT1uJiZlLm5leHRTbGlkZSgpLDM3PT1uJiZlLnByZXZTbGlkZSgpLDI3PT1uJiZlLmNsb3NlKCl9fSl9dmFyIHE9aSgoZnVuY3Rpb24gdChpLG4pe3ZhciBzPXRoaXMsbD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZihlKHRoaXMsdCksdGhpcy5pbWc9aSx0aGlzLnNsaWRlPW4sdGhpcy5vbmNsb3NlPWwsdGhpcy5pbWcuc2V0Wm9vbUV2ZW50cylyZXR1cm4hMTt0aGlzLmFjdGl2ZT0hMSx0aGlzLnpvb21lZEluPSExLHRoaXMuZHJhZ2dpbmc9ITEsdGhpcy5jdXJyZW50WD1udWxsLHRoaXMuY3VycmVudFk9bnVsbCx0aGlzLmluaXRpYWxYPW51bGwsdGhpcy5pbml0aWFsWT1udWxsLHRoaXMueE9mZnNldD0wLHRoaXMueU9mZnNldD0wLHRoaXMuaW1nLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHMuZHJhZ1N0YXJ0KGUpfSksITEpLHRoaXMuaW1nLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBzLmRyYWdFbmQoZSl9KSwhMSksdGhpcy5pbWcuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLChmdW5jdGlvbihlKXtyZXR1cm4gcy5kcmFnKGUpfSksITEpLHRoaXMuaW1nLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLChmdW5jdGlvbihlKXtyZXR1cm4gcy5zbGlkZS5jbGFzc0xpc3QuY29udGFpbnMoXCJkcmFnZ2luZy1uYXZcIik/KHMuem9vbU91dCgpLCExKTpzLnpvb21lZEluP3ZvaWQocy56b29tZWRJbiYmIXMuZHJhZ2dpbmcmJnMuem9vbU91dCgpKTpzLnpvb21JbigpfSksITEpLHRoaXMuaW1nLnNldFpvb21FdmVudHM9ITB9KSxbe2tleTpcInpvb21JblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy53aWRvd1dpZHRoKCk7aWYoISh0aGlzLnpvb21lZElufHxlPD03NjgpKXt2YXIgdD10aGlzLmltZztpZih0LnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIix0LmdldEF0dHJpYnV0ZShcInN0eWxlXCIpKSx0LnN0eWxlLm1heFdpZHRoP
3XQubmF0dXJhbFdpZHRoK1wicHhcIix0LnN0eWxlLm1heEhlaWdodD10Lm5hdHVyYWxIZWlnaHQrXCJweFwiLHQubmF0dXJhbFdpZHRoPmUpe3ZhciBpPWUvMi10Lm5hdHVyYWxXaWR0aC8yO3RoaXMuc2V0VHJhbnNsYXRlKHRoaXMuaW1nLnBhcmVudE5vZGUsaSwwKX10aGlzLnNsaWRlLmNsYXNzTGlzdC5hZGQoXCJ6b29tZWRcIiksdGhpcy56b29tZWRJbj0hMH19fSx7a2V5Olwiem9vbU91dFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pbWcucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwiXCIpLHRoaXMuaW1nLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsdGhpcy5pbWcuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSksdGhpcy5zbGlkZS5jbGFzc0xpc3QucmVtb3ZlKFwiem9vbWVkXCIpLHRoaXMuem9vbWVkSW49ITEsdGhpcy5jdXJyZW50WD1udWxsLHRoaXMuY3VycmVudFk9bnVsbCx0aGlzLmluaXRpYWxYPW51bGwsdGhpcy5pbml0aWFsWT1udWxsLHRoaXMueE9mZnNldD0wLHRoaXMueU9mZnNldD0wLHRoaXMub25jbG9zZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5vbmNsb3NlJiZ0aGlzLm9uY2xvc2UoKX19LHtrZXk6XCJkcmFnU3RhcnRcIix2YWx1ZTpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksdGhpcy56b29tZWRJbj8oXCJ0b3VjaHN0YXJ0XCI9PT1lLnR5cGU/KHRoaXMuaW5pdGlhbFg9ZS50b3VjaGVzWzBdLmNsaWVudFgtdGhpcy54T2Zmc2V0LHRoaXMuaW5pdGlhbFk9ZS50b3VjaGVzWzBdLmNsaWVudFktdGhpcy55T2Zmc2V0KToodGhpcy5pbml0aWFsWD1lLmNsaWVudFgtdGhpcy54T2Zmc2V0LHRoaXMuaW5pdGlhbFk9ZS5jbGllbnRZLXRoaXMueU9mZnNldCksZS50YXJnZXQ9PT10aGlzLmltZyYmKHRoaXMuYWN0aXZlPSEwLHRoaXMuaW1nLmNsYXNzTGlzdC5hZGQoXCJkcmFnZ2luZ1wiKSkpOnRoaXMuYWN0aXZlPSExfX0se2tleTpcImRyYWdFbmRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2UucHJldmVudERlZmF1bHQoKSx0aGlzLmluaXRpYWxYPXRoaXMuY3VycmVudFgsdGhpcy5pbml0aWFsWT10aGlzLmN1cnJlbnRZLHRoaXMuYWN0aXZlPSExLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5kcmFnZ2luZz0hMSx0LmltZy5pc0RyYWdnaW5nPSExLHQuaW1nLmNsYXNzTGlzdC5yZW1vdmUoXCJkcmFnZ2luZ1wiKX0pLDEwMCl9fSx7a2V5OlwiZHJhZ1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuYWN0aXZlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLFwidG91Y2htb3ZlXCI9PT1lLnR5cGU/KHRoaXMuY3VycmVudFg9ZS50b3VjaGVzWzBdLmNsaWVudFgtdGhpcy5pbml0aWFsWCx0aGlzLmN1cnJlbnRZPWUudG91Y2hlc1swXS5jbGllbnRZLXRoaXMuaW5pdGlhbFkpOih0aGlzLmN1cnJlbnRYPWUuY2xpZW50WC10aGlzLmluaXRpYWxYLHRoaXMuY3VycmVudFk9ZS5jbGllbnRZLXRoaXMuaW5pdGlhbFkpLHRoaXMueE9mZnNldD10aGlzLmN1cnJlbnRYLHRoaXMueU9mZnNldD10aGlzLmN1cnJlbnRZLHRoaXMuaW1nLmlzRHJhZ2dpbmc9ITAsdGhpcy5kcmFnZ2luZz0hMCx0aGlzLnNldFRyYW5zbGF0ZSh0aGlzLmltZyx0aGlzLmN1cnJlbnRYLHRoaXMuY3VycmVudFkpKX19LHtrZXk6XCJvbk1vdmVcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLnpvb21lZEluKXt2YXIgdD1lLmNsaWVudFgtdGhpcy5pbWcubmF0dXJhbFdpZHRoLzIsaT1lLmNsaWVudFktdGhpcy5pbWcubmF0dXJhbEhlaWdodC8yO3RoaXMuc2V0VHJhbnNsYXRlKHRoaXMuaW1nLHQsaSl9fX0se2tleTpcInNldFRyYW5zbGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXtlLnN0eWxlLnRyYW5zZm9ybT1cInRyYW5zbGF0ZTNkKFwiK3QrXCJweCwgXCIraStcInB4LCAwKVwifX0se2tleTpcIndpZG93V2lkdGhcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRofHxkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRofX1dKSxOPWkoKGZ1bmN0aW9uIHQoKXt2YXIgaT10aGlzLG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O2UodGhpcyx0KTt2YXIgcz1uLmRyYWdFbCxsPW4udG9sZXJhbmNlWCxvPXZvaWQgMD09PWw/NDA6bCxyPW4udG9sZXJhbmNlWSxhPXZvaWQgMD09PXI/NjU6cixoPW4uc2xpZGUsZD12b2lkIDA9PT1oP251bGw6aCxjPW4uaW5zdGFuY2UsdT12b2lkIDA9PT1jP251bGw6Yzt0aGlzLmVsPXMsdGhpcy5hY3RpdmU9ITEsdGhpcy5kcmFnZ2luZz0hMSx0aGlzLmN1cnJlbnRYPW51bGwsdGhpcy5jdXJyZW50WT1udWxsLHRoaXMuaW5pdGlhbFg9bnVsbCx0aGlzLmluaXRpYWxZPW51bGwsdGhpcy54T2Zmc2V0PTAsdGhpcy55T2Zmc2V0PTAsdGhpcy5kaXJlY3Rpb249bnVsbCx0aGlzLmxhc3REaXJlY3Rpb249bnVsbCx0aGlzLnRvbGVyYW5jZVg9byx0aGlzLnRvbGVyYW5jZVk9YSx0aGlzLnRvbGVyYW5jZVJlYWNoZWQ9ITEsdGhpcy5kcmFnQ29udGFpbmVyPXRoaXMuZWwsdGhpcy5zbGlkZT1kLHRoaXMuaW5zdGFuY2U9dSx0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZHJhZ1N0YXJ0KGUpfSksITEpLHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZHJhZ0VuZChlKX0pLCExKSx0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZHJhZyhlKX0pLCExKX0pLFt7a2V5OlwiZHJhZ1N0YXJ0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5zbGlkZS5jbGFzc0xpc3QuY29udGFpbnMoXCJ6b29tZWRcIikpdGhpcy5hY3RpdmU9ITE7ZWxzZXtcInRvdWNoc3RhcnRcIj09PWUudHlwZT8odGhpcy5pbml0aWFsWD1lLnRvdWNoZXNbMF0uY2xpZW50WC10aGlzLnhPZmZzZXQsdGhpcy5pbml0aWFsWT1lLnRvdWNoZXNbMF0uY2xpZW50WS10aGlzLnlPZmZzZXQpOih0aGlzLmluaXRpYWxYPWUuY2xpZW50WC10aGlzLnhPZmZzZXQsdGhpcy5pbml0aWFsWT1lLmNsaWVudFktdGhpcy55T2Zmc2V0KTt2YXIgdD1lLnRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2UudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcIm5vZHJhZ1wiKXx8Zy
3hlLnRhcmdldCxcIi5ub2RyYWdcIil8fC0xIT09W1wiaW5wdXRcIixcInNlbGVjdFwiLFwidGV4dGFyZWFcIixcImJ1dHRvblwiLFwiYVwiXS5pbmRleE9mKHQpP3RoaXMuYWN0aXZlPSExOihlLnByZXZlbnREZWZhdWx0KCksKGUudGFyZ2V0PT09dGhpcy5lbHx8XCJpbWdcIiE9PXQmJmcoZS50YXJnZXQsXCIuZ3NsaWRlLWlubGluZVwiKSkmJih0aGlzLmFjdGl2ZT0hMCx0aGlzLmVsLmNsYXNzTGlzdC5hZGQoXCJkcmFnZ2luZ1wiKSx0aGlzLmRyYWdDb250YWluZXI9ZyhlLnRhcmdldCxcIi5naW5uZXItY29udGFpbmVyXCIpKSl9fX0se2tleTpcImRyYWdFbmRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2UmJmUucHJldmVudERlZmF1bHQoKSx0aGlzLmluaXRpYWxYPTAsdGhpcy5pbml0aWFsWT0wLHRoaXMuY3VycmVudFg9bnVsbCx0aGlzLmN1cnJlbnRZPW51bGwsdGhpcy5pbml0aWFsWD1udWxsLHRoaXMuaW5pdGlhbFk9bnVsbCx0aGlzLnhPZmZzZXQ9MCx0aGlzLnlPZmZzZXQ9MCx0aGlzLmFjdGl2ZT0hMSx0aGlzLmRvU2xpZGVDaGFuZ2UmJih0aGlzLmluc3RhbmNlLnByZXZlbnRPdXRzaWRlQ2xpY2s9ITAsXCJyaWdodFwiPT10aGlzLmRvU2xpZGVDaGFuZ2UmJnRoaXMuaW5zdGFuY2UucHJldlNsaWRlKCksXCJsZWZ0XCI9PXRoaXMuZG9TbGlkZUNoYW5nZSYmdGhpcy5pbnN0YW5jZS5uZXh0U2xpZGUoKSksdGhpcy5kb1NsaWRlQ2xvc2UmJnRoaXMuaW5zdGFuY2UuY2xvc2UoKSx0aGlzLnRvbGVyYW5jZVJlYWNoZWR8fHRoaXMuc2V0VHJhbnNsYXRlKHRoaXMuZHJhZ0NvbnRhaW5lciwwLDAsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5pbnN0YW5jZS5wcmV2ZW50T3V0c2lkZUNsaWNrPSExLHQudG9sZXJhbmNlUmVhY2hlZD0hMSx0Lmxhc3REaXJlY3Rpb249bnVsbCx0LmRyYWdnaW5nPSExLHQuZWwuaXNEcmFnZ2luZz0hMSx0LmVsLmNsYXNzTGlzdC5yZW1vdmUoXCJkcmFnZ2luZ1wiKSx0LnNsaWRlLmNsYXNzTGlzdC5yZW1vdmUoXCJkcmFnZ2luZy1uYXZcIiksdC5kcmFnQ29udGFpbmVyLnN0eWxlLnRyYW5zZm9ybT1cIlwiLHQuZHJhZ0NvbnRhaW5lci5zdHlsZS50cmFuc2l0aW9uPVwiXCJ9KSwxMDApfX0se2tleTpcImRyYWdcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLmFjdGl2ZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2xpZGUuY2xhc3NMaXN0LmFkZChcImRyYWdnaW5nLW5hdlwiKSxcInRvdWNobW92ZVwiPT09ZS50eXBlPyh0aGlzLmN1cnJlbnRYPWUudG91Y2hlc1swXS5jbGllbnRYLXRoaXMuaW5pdGlhbFgsdGhpcy5jdXJyZW50WT1lLnRvdWNoZXNbMF0uY2xpZW50WS10aGlzLmluaXRpYWxZKToodGhpcy5jdXJyZW50WD1lLmNsaWVudFgtdGhpcy5pbml0aWFsWCx0aGlzLmN1cnJlbnRZPWUuY2xpZW50WS10aGlzLmluaXRpYWxZKSx0aGlzLnhPZmZzZXQ9dGhpcy5jdXJyZW50WCx0aGlzLnlPZmZzZXQ9dGhpcy5jdXJyZW50WSx0aGlzLmVsLmlzRHJhZ2dpbmc9ITAsdGhpcy5kcmFnZ2luZz0hMCx0aGlzLmRvU2xpZGVDaGFuZ2U9ITEsdGhpcy5kb1NsaWRlQ2xvc2U9ITE7dmFyIHQ9TWF0aC5hYnModGhpcy5jdXJyZW50WCksaT1NYXRoLmFicyh0aGlzLmN1cnJlbnRZKTtpZih0PjAmJnQ+PU1hdGguYWJzKHRoaXMuY3VycmVudFkpJiYoIXRoaXMubGFzdERpcmVjdGlvbnx8XCJ4XCI9PXRoaXMubGFzdERpcmVjdGlvbikpe3RoaXMueU9mZnNldD0wLHRoaXMubGFzdERpcmVjdGlvbj1cInhcIix0aGlzLnNldFRyYW5zbGF0ZSh0aGlzLmRyYWdDb250YWluZXIsdGhpcy5jdXJyZW50WCwwKTt2YXIgbj10aGlzLnNob3VsZENoYW5nZSgpO2lmKCF0aGlzLmluc3RhbmNlLnNldHRpbmdzLmRyYWdBdXRvU25hcCYmbiYmKHRoaXMuZG9TbGlkZUNoYW5nZT1uKSx0aGlzLmluc3RhbmNlLnNldHRpbmdzLmRyYWdBdXRvU25hcCYmbilyZXR1cm4gdGhpcy5pbnN0YW5jZS5wcmV2ZW50T3V0c2lkZUNsaWNrPSEwLHRoaXMudG9sZXJhbmNlUmVhY2hlZD0hMCx0aGlzLmFjdGl2ZT0hMSx0aGlzLmluc3RhbmNlLnByZXZlbnRPdXRzaWRlQ2xpY2s9ITAsdGhpcy5kcmFnRW5kKG51bGwpLFwicmlnaHRcIj09biYmdGhpcy5pbnN0YW5jZS5wcmV2U2xpZGUoKSx2b2lkKFwibGVmdFwiPT1uJiZ0aGlzLmluc3RhbmNlLm5leHRTbGlkZSgpKX1pZih0aGlzLnRvbGVyYW5jZVk+MCYmaT4wJiZpPj10JiYoIXRoaXMubGFzdERpcmVjdGlvbnx8XCJ5XCI9PXRoaXMubGFzdERpcmVjdGlvbikpe3RoaXMueE9mZnNldD0wLHRoaXMubGFzdERpcmVjdGlvbj1cInlcIix0aGlzLnNldFRyYW5zbGF0ZSh0aGlzLmRyYWdDb250YWluZXIsMCx0aGlzLmN1cnJlbnRZKTt2YXIgcz10aGlzLnNob3VsZENsb3NlKCk7cmV0dXJuIXRoaXMuaW5zdGFuY2Uuc2V0dGluZ3MuZHJhZ0F1dG9TbmFwJiZzJiYodGhpcy5kb1NsaWRlQ2xvc2U9ITApLHZvaWQodGhpcy5pbnN0YW5jZS5zZXR0aW5ncy5kcmFnQXV0b1NuYXAmJnMmJnRoaXMuaW5zdGFuY2UuY2xvc2UoKSl9fX19LHtrZXk6XCJzaG91bGRDaGFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSExO2lmKE1hdGguYWJzKHRoaXMuY3VycmVudFgpPj10aGlzLnRvbGVyYW5jZVgpe3ZhciB0PXRoaXMuY3VycmVudFg+MD9cInJpZ2h0XCI6XCJsZWZ0XCI7KFwibGVmdFwiPT10JiZ0aGlzLnNsaWRlIT09dGhpcy5zbGlkZS5wYXJlbnROb2RlLmxhc3RDaGlsZHx8XCJyaWdodFwiPT10JiZ0aGlzLnNsaWRlIT09dGhpcy5zbGlkZS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpJiYoZT10KX1yZXR1cm4gZX19LHtrZXk6XCJzaG91bGRDbG9zZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9ITE7cmV0dXJuIE1hdGguYWJzKHRoaXMuY3VycmVudFkpPj10aGlzLnRvbGVyYW5jZVkmJihlPSEwKSxlfX0se2tleTpcInNldFRyYW5zbGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdO2Uuc3R5bGUudHJhbnNpdGlvbj1uP1wiYWxsIC4ycyBlYXNlXCI6XCJcIixlLnN0eWxlLnRyYW5zZm9ybT1cInRyYW5zbGF0ZTNkKFwiLmNvbmNhdCh0LFwicHgsIFwiKS5jb25jYXQoaSxcInB4LCAwKVwiKX19XSk7ZnVuY3Rpb24gRChlLHQsaSxuKXt2YXIgcz1lLnF1ZXJ5U2VsZWN0b3IoXCIuZ3NsaWRlLW1lZGlhXCIpLGw9bmV3IEltYWdlLG89XCJnU2xpZGVUaXRsZV9cIitpLHI9XCJnU2xpZGVEZXNjX1wiK2k7bC5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLChmdW5jdGlvbigpe0MobikmJm4oKX0pLCExKSxsLnNyYz10LmhyZWYsXCJcIiE9dC5zaXplcyYmXCJcIiE9dC5zcmNzZXQmJihsLnNpemVzPXQuc2l6ZXMsbC5zcmNzZXQ9dC5zcmNzZXQpLGwuYWx0PVwiXCIsTyh0LmFsdCl8fFwiXCI9PT10LmFsdHx8KGwuYWx0PXQuYWx0KSxcIlwiIT09dC50aXRsZSYmbC5zZXRB
3dHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIixvKSxcIlwiIT09dC5kZXNjcmlwdGlvbiYmbC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIsciksdC5oYXNPd25Qcm9wZXJ0eShcIl9oYXNDdXN0b21XaWR0aFwiKSYmdC5faGFzQ3VzdG9tV2lkdGgmJihsLnN0eWxlLndpZHRoPXQud2lkdGgpLHQuaGFzT3duUHJvcGVydHkoXCJfaGFzQ3VzdG9tSGVpZ2h0XCIpJiZ0Ll9oYXNDdXN0b21IZWlnaHQmJihsLnN0eWxlLmhlaWdodD10LmhlaWdodCkscy5pbnNlcnRCZWZvcmUobCxzLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIF8oZSx0LGksbil7dmFyIHM9dGhpcyxsPWUucXVlcnlTZWxlY3RvcihcIi5naW5uZXItY29udGFpbmVyXCIpLG89XCJndmlkZW9cIitpLHI9ZS5xdWVyeVNlbGVjdG9yKFwiLmdzbGlkZS1tZWRpYVwiKSxhPXRoaXMuZ2V0QWxsUGxheWVycygpO2QobCxcImd2aWRlby1jb250YWluZXJcIiksci5pbnNlcnRCZWZvcmUoeSgnPGRpdiBjbGFzcz1cImd2aWRlby13cmFwcGVyXCI+PC9kaXY+Jyksci5maXJzdENoaWxkKTt2YXIgaD1lLnF1ZXJ5U2VsZWN0b3IoXCIuZ3ZpZGVvLXdyYXBwZXJcIik7dyh0aGlzLnNldHRpbmdzLnBseXIuY3NzLFwiUGx5clwiKTt2YXIgYz10LmhyZWYsdT1udWxsPT10P3ZvaWQgMDp0LnZpZGVvUHJvdmlkZXIsZz0hMTtyLnN0eWxlLm1heFdpZHRoPXQud2lkdGgsdyh0aGlzLnNldHRpbmdzLnBseXIuanMsXCJQbHlyXCIsKGZ1bmN0aW9uKCl7aWYoIXUmJmMubWF0Y2goL3ZpbWVvXFwuY29tXFwvKFswLTldKikvKSYmKHU9XCJ2aW1lb1wiKSwhdSYmKGMubWF0Y2goLyh5b3V0dWJlXFwuY29tfHlvdXR1YmUtbm9jb29raWVcXC5jb20pXFwvd2F0Y2hcXD92PShbYS16QS1aMC05XFwtX10rKS8pfHxjLm1hdGNoKC95b3V0dVxcLmJlXFwvKFthLXpBLVowLTlcXC1fXSspLyl8fGMubWF0Y2goLyh5b3V0dWJlXFwuY29tfHlvdXR1YmUtbm9jb29raWVcXC5jb20pXFwvZW1iZWRcXC8oW2EtekEtWjAtOVxcLV9dKykvKXx8Yy5tYXRjaCgvKHlvdXR1YmVcXC5jb218eW91dHViZS1ub2Nvb2tpZVxcLmNvbSlcXC9zaG9ydHNcXC8oW2EtekEtWjAtOVxcLV9dKykvKSkmJih1PVwieW91dHViZVwiKSxcImxvY2FsXCI9PT11fHwhdSl7dT1cImxvY2FsXCI7dmFyIGw9Jzx2aWRlbyBpZD1cIicrbysnXCIgJztsKz0nc3R5bGU9XCJiYWNrZ3JvdW5kOiMwMDA7IG1heC13aWR0aDogJy5jb25jYXQodC53aWR0aCwnO1wiICcpLGwrPSdwcmVsb2FkPVwibWV0YWRhdGFcIiAnLGwrPSd4LXdlYmtpdC1haXJwbGF5PVwiYWxsb3dcIiAnLGwrPVwicGxheXNpbmxpbmUgXCIsbCs9XCJjb250cm9scyBcIixsKz0nY2xhc3M9XCJndmlkZW8tbG9jYWxcIj4nLGwrPSc8c291cmNlIHNyYz1cIicuY29uY2F0KGMsJ1wiPicpLGc9eShsKz1cIjwvdmlkZW8+XCIpfXZhciByPWd8fHkoJzxkaXYgaWQ9XCInLmNvbmNhdChvLCdcIiBkYXRhLXBseXItcHJvdmlkZXI9XCInKS5jb25jYXQodSwnXCIgZGF0YS1wbHlyLWVtYmVkLWlkPVwiJykuY29uY2F0KGMsJ1wiPjwvZGl2PicpKTtkKGgsXCJcIi5jb25jYXQodSxcIi12aWRlbyBndmlkZW9cIikpLGguYXBwZW5kQ2hpbGQociksaC5zZXRBdHRyaWJ1dGUoXCJkYXRhLWlkXCIsbyksaC5zZXRBdHRyaWJ1dGUoXCJkYXRhLWluZGV4XCIsaSk7dmFyIHY9UC
3hzLnNldHRpbmdzLnBseXIsXCJjb25maWdcIik/cy5zZXR0aW5ncy5wbHlyLmNvbmZpZzp7fSxmPW5ldyBQbHlyKFwiI1wiK28sdik7Zi5vbihcInJlYWR5XCIsKGZ1bmN0aW9uKGUpe2Fbb109ZS5kZXRhaWwucGx5cixDKG4pJiZuKCl9KSksUygoZnVuY3Rpb24oKXtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiaWZyYW1lXCIpJiZcInRydWVcIj09ZS5xdWVyeVNlbGVjdG9yKFwiaWZyYW1lXCIpLmRhdGFzZXQucmVhZHl9KSwoZnVuY3Rpb24oKXtzLnJlc2l6ZShlKX0pKSxmLm9uKFwiZW50ZXJmdWxsc2NyZWVuXCIsVyksZi5vbihcImV4aXRmdWxsc2NyZWVuXCIsVyl9KSl9ZnVuY3Rpb24gVyhlKXt2YXIgdD1nKGUudGFyZ2V0LFwiLmdzbGlkZS1tZWRpYVwiKTtcImVudGVyZnVsbHNjcmVlblwiPT09ZS50eXBlJiZkKHQsXCJmdWxsc2NyZWVuXCIpLFwiZXhpdGZ1bGxzY3JlZW5cIj09PWUudHlwZSYmYyh0LFwiZnVsbHNjcmVlblwiKX1mdW5jdGlvbiBCKGUsdCxpLG4pe3ZhciBzLGw9dGhpcyxvPWUucXVlcnlTZWxlY3RvcihcIi5nc2xpZGUtbWVkaWFcIikscj0hKCFQKHQsXCJocmVmXCIpfHwhdC5ocmVmKSYmdC5ocmVmLnNwbGl0KFwiI1wiKS5wb3AoKS50cmltKCksYT0hKCFQKHQsXCJjb250ZW50XCIpfHwhdC5jb250ZW50KSYmdC5jb250ZW50O2lmKGEmJihrKGEpJiYocz15KCc8ZGl2IGNsYXNzPVwiZ2lubGluZWQtY29udGVudFwiPicuY29uY2F0KGEsXCI8L2Rpdj5cIikpKSxFKGEpKSl7XCJub25lXCI9PWEuc3R5bGUuZGlzcGxheSYmKGEuc3R5bGUuZGlzcGxheT1cImJsb2NrXCIpO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7Yy5jbGFzc05hbWU9XCJnaW5saW5lZC1jb250ZW50XCIsYy5hcHBlbmRDaGlsZChhKSxzPWN9aWYocil7dmFyIHU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocik7aWYoIXUpcmV0dXJuITE7dmFyIGc9dS5jbG9uZU5vZGUoITApO2cuc3R5bGUuaGVpZ2h0PXQuaGVpZ2h0LGcuc3R5bGUubWF4V2lkdGg9dC53aWR0aCxkKGcsXCJnaW5saW5lZC1jb250ZW50XCIpLHM9Z31pZighcylyZXR1cm4gY29uc29sZS5lcnJvcihcIlVuYWJsZSB0byBhcHBlbmQgaW5saW5lIHNsaWRlIGNvbnRlbnRcIix0KSwhMTtvLnN0eWxlLmhlaWdodD10LmhlaWdodCxvLnN0eWxlLndpZHRoP
3XQud2lkdGgsby5hcHBlbmRDaGlsZChzKSx0aGlzLmV2ZW50c1tcImlubGluZWNsb3NlXCIrcl09aChcImNsaWNrXCIse29uRWxlbWVudDpvLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZ3RyaWdnZXItY2xvc2VcIiksd2l0aENhbGxiYWNrOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxsLmNsb3NlKCl9fSksQyhuKSYmbigpfWZ1bmN0aW9uIEgoZSx0LGksbil7dmFyIHM9ZS5xdWVyeVNlbGVjdG9yKFwiLmdzbGlkZS1tZWRpYVwiKSxsPWZ1bmN0aW9uKGUpe3ZhciB0PWUudXJsLGk9ZS5hbGxvdyxuPWUuY2FsbGJhY2sscz1lLmFwcGVuZFRvLGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtyZXR1cm4gbC5jbGFzc05hbWU9XCJ2aW1lby12aWRlbyBndmlkZW9cIixsLnNyYz10LGwuc3R5bGUud2lkdGg9XCIxMDAlXCIsbC5zdHlsZS5oZWlnaHQ9XCIxMDAlXCIsaSYmbC5zZXRBdHRyaWJ1dGUoXCJhbGxvd1wiLGkpLGwub25sb2FkPWZ1bmN0aW9uKCl7bC5vbmxvYWQ9bnVsbCxkKGwsXCJub2RlLXJlYWR5XCIpLEMobikmJm4oKX0scyYmcy5hcHBlbmRDaGlsZChsKSxsfSh7dXJsOnQuaHJlZixjYWxsYmFjazpufSk7cy5wYXJlbnROb2RlLnN0eWxlLm1heFdpZHRoPXQud2lkdGgscy5wYXJlbnROb2RlLnN0eWxlLmhlaWdodD10LmhlaWdodCxzLmFwcGVuZENoaWxkKGwpfXZhciBqPWkoKGZ1bmN0aW9uIHQoKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307ZSh0aGlzLHQpLHRoaXMuZGVmYXVsdHM9e2hyZWY6XCJcIixzaXplczpcIlwiLHNyY3NldDpcIlwiLHRpdGxlOlwiXCIsdHlwZTpcIlwiLHZpZGVvUHJvdmlkZXI6XCJcIixkZXNjcmlwdGlvbjpcIlwiLGFsdDpcIlwiLGRlc2NQb3NpdGlvbjpcImJvdHRvbVwiLGVmZmVjdDpcIlwiLHdpZHRoOlwiXCIsaGVpZ2h0OlwiXCIsY29udGVudDohMSx6b29tYWJsZTohMCxkcmFnZ2FibGU6ITB9LEkoaSkmJih0aGlzLmRlZmF1bHRzPW8odGhpcy5kZWZhdWx0cyxpKSl9KSxbe2tleTpcInNvdXJjZVR5cGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBudWxsIT09KGU9ZS50b0xvd2VyQ2FzZSgpKS5tYXRjaCgvXFwuKGpwZWd8anBnfGpwZXxnaWZ8cG5nfGFwbnx3ZWJwfGF2aWZ8c3ZnKS8pP1wiaW1hZ2VcIjplLm1hdGNoKC8oeW91dHViZVxcLmNvbXx5b3V0dWJlLW5vY29va2llXFwuY29tKVxcL3dhdGNoXFw/dj0oW2EtekEtWjAtOVxcLV9dKykvKXx8ZS5tYXRjaCgveW91dHVcXC5iZVxcLyhbYS16QS1aMC05XFwtX10rKS8pfHxlLm1hdGNoKC8oeW91dHViZVxcLmNvbXx5b3V0dWJlLW5vY29va2llXFwuY29tKVxcL2VtYmVkXFwvKFthLXpBLVowLTlcXC1fXSspLyl8fGUubWF0Y2goLyh5b3V0dWJlXFwuY29tfHlvdXR1YmUtbm9jb29raWVcXC5jb20pXFwvc2hvcnRzXFwvKFthLXpBLVowLTlcXC1fXSspLyl8fGUubWF0Y2goL3ZpbWVvXFwuY29tXFwvKFswLTldKikvKXx8bnVsbCE9PWUubWF0Y2goL1xcLihtcDR8b2dnfHdlYm18bW92KS8pP1widmlkZW9cIjpudWxsIT09ZS5tYXRjaCgvXFwuKG1wM3x3YXZ8d21hfGFhY3xvZ2cpLyk/XCJhdWRpb1wiOmUuaW5kZXhPZihcIiNcIik+LTEmJlwiXCIhPT10LnNwbGl0KFwiI1wiKS5wb3AoKS50cmltKCk/XCJpbmxpbmVcIjplLmluZGV4T2YoXCJnb2FqYXg9dHJ1ZVwiKT4tMT9cImFqYXhcIjpcImV4dGVybmFsXCJ9fSx7a2V5OlwicGFyc2VDb25maWdcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsbj1vKHtkZXNjUG9zaXRpb246dC5kZXNjUG9zaXRpb259LHRoaXMuZGVmYXVsdHMpO2lmKEkoZSkmJiFFKGUpKXtQKGUsXCJ0eXBlXCIpfHwoUChlLFwiY29udGVudFwiKSYmZS5jb250ZW50P2UudHlwZT1cImlubGluZVwiOlAoZSxcImhyZWZcIikmJihlLnR5cGU9dGhpcy5zb3VyY2VUeXBlKGUuaHJlZikpKTt2YXIgcz1vKG4sZSk7cmV0dXJuIHRoaXMuc2V0U2l6ZShzLHQpLHN9dmFyIGw9XCJcIixhPWUuZ2V0QXR0cmlidXRlKFwiZGF0YS1nbGlnaHRib3hcIiksaD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoXCJhXCI9PT1oJiYobD1lLmhyZWYpLFwiaW1nXCI9PT1oJiYobD1lLnNyYyxuLmFsdD1lLmFsdCksbi5ocmVmPWwscihuLChmdW5jdGlvbihzLGwpe1AodCxsKSYmXCJ3aWR0aFwiIT09bCYmKG5bbF09dFtsXSk7dmFyIG89ZS5kYXRhc2V0W2xdO08obyl8fChuW2xdPWkuc2FuaXRpemVWYWx1ZShvKSl9KSksbi5jb250ZW50JiYobi50eXBlPVwiaW5saW5lXCIpLCFuLnR5cGUmJmwmJihuLnR5cGU9dGhpcy5zb3VyY2VUeXBlKGwpKSxPKGEpKXtpZighbi50aXRsZSYmXCJhXCI9PWgpe3ZhciBkPWUudGl0bGU7TyhkKXx8XCJcIj09PWR8fChuLnRpdGxlPWQpfWlmKCFuLnRpdGxlJiZcImltZ1wiPT1oKXt2YXIgYz1lLmFsdDtPKGMpfHxcIlwiPT09Y3x8KG4udGl0bGU9Yyl9fWVsc2V7dmFyIHU9W107cihuLChmdW5jdGlvbihlLHQpe3UucHVzaChcIjtcXFxccz9cIit0KX0pKSx1PXUuam9pbihcIlxcXFxzPzp8XCIpLFwiXCIhPT1hLnRyaW0oKSYmcihuLChmdW5jdGlvbihlLHQpe3ZhciBzPWEsbD1uZXcgUmVnRXhwKFwicz9cIit0K1wicz86cz8oLio/KShcIit1K1wicz86fCQpXCIpLG89cy5tYXRjaChsKTtpZihvJiZvLmxlbmd0aCYmb1sxXSl7dmFyIHI9b1sxXS50cmltKCkucmVwbGFjZSgvO1xccyokLyxcIlwiKTtuW3RdPWkuc2FuaXRpemVWYWx1ZShyKX19KSl9aWYobi5kZXNjcmlwdGlvbiYmXCIuXCI9PT1uLmRlc2NyaXB0aW9uLnN1YnN0cmluZygwLDEpKXt2YXIgZzt0cnl7Zz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKG4uZGVzY3JpcHRpb24pLmlubmVySFRNTH1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBET01FeGNlcHRpb24pKXRocm93IGV9ZyYmKG4uZGVzY3JpcHRpb249Zyl9aWYoIW4uZGVzY3JpcHRpb24pe3ZhciB2PWUucXVlcnlTZWxlY3RvcihcIi5nbGlnaHRib3gtZGVzY1wiKTt2JiYobi5kZXNjcmlwdGlvbj12LmlubmVySFRNTCl9cmV0dXJuIHRoaXMuc2V0U2l6ZShuLHQsZSksdGhpcy5zbGlkZUNvbmZpZz1uLG59fSx7a2V5Olwic2V0U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsbj1cInZpZGVvXCI9PWUudHlwZT90aGlzLmNoZWNrU2l6ZSh0LnZpZGVvc1dpZHRoKTp0aGlzLmNoZWNrU2l6ZSh0LndpZHR
3oKSxzPXRoaXMuY2hlY2tTaXplKHQuaGVpZ2h0KTtyZXR1cm4gZS53aWR0aD1QKGUsXCJ3aWR0aFwiKSYmXCJcIiE9PWUud2lkdGg/dGhpcy5jaGVja1NpemUoZS53aWR0aCk6bixlLmhlaWdodD1QKGUsXCJoZWlnaHRcIikmJlwiXCIhPT1lLmhlaWdodD90aGlzLmNoZWNrU2l6ZShlLmhlaWdodCk6cyxpJiZcImltYWdlXCI9PWUudHlwZSYmKGUuX2hhc0N1c3RvbVdpZHRoPSEhaS5kYXRhc2V0LndpZHRoLGUuX2hhc0N1c3RvbUhlaWdodD0hIWkuZGF0YXNldC5oZWlnaHQpLGV9fSx7a2V5OlwiY2hlY2tTaXplXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHooZSk/XCJcIi5jb25jYXQoZSxcInB4XCIpOmV9fSx7a2V5Olwic2FuaXRpemVWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVyblwidHJ1ZVwiIT09ZSYmXCJmYWxzZVwiIT09ZT9lOlwidHJ1ZVwiPT09ZX19XSksVj1pKChmdW5jdGlvbiB0KGksbixzKXtlKHRoaXMsdCksdGhpcy5lbGVtZW50PWksdGhpcy5pbnN0YW5jZT1uLHRoaXMuaW5kZXg9c30pLFt7a2V5Olwic2V0Q29udGVudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtpZih1KHQsXCJsb2FkZWRcIikpcmV0dXJuITE7dmFyIG49dGhpcy5pbnN0YW5jZS5zZXR0aW5ncyxzPXRoaXMuc2xpZGVDb25maWcsbD1UKCk7QyhuLmJlZm9yZVNsaWRlTG9hZCkmJm4uYmVmb3JlU2xpZGVMb2FkKHtpbmRleDp0aGlzLmluZGV4LHNsaWRlOnQscGxheWVyOiExfSk7dmFyIG89cy50eXBlLHI9cy5kZXNjUG9zaXRpb24sYT10LnF1ZXJ5U2VsZWN0b3IoXCIuZ3NsaWRlLW1lZGlhXCIpLGg9dC5xdWVyeVNlbGVjdG9yKFwiLmdzbGlkZS10aXRsZVwiKSxjPXQucXVlcnlTZWxlY3RvcihcIi5nc2xpZGUtZGVzY1wiKSxnPXQucXVlcnlTZWxlY3RvcihcIi5nZGVzYy1pbm5lclwiKSx2PWksZj1cImdTbGlkZVRpdGxlX1wiK3RoaXMuaW5kZXgscD1cImdTbGlkZURlc2NfXCIrdGhpcy5pbmRleDtpZihDKG4uYWZ0ZXJTbGlkZUxvYWQpJiYodj1mdW5jdGlvbigpe0MoaSkmJmkoKSxuLmFmdGVyU2xpZGVMb2FkKHtpbmRleDplLmluZGV4LHNsaWRlOnQscGxheWVyOmUuaW5zdGFuY2UuZ2V0U2xpZGVQbGF5ZXJJbnN0YW5jZShlLmluZGV4KX0pfSksXCJcIj09cy50aXRsZSYmXCJcIj09cy5kZXNjcmlwdGlvbj9nJiZnLnBhcmVudE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChnLnBhcmVudE5vZGUpOihoJiZcIlwiIT09cy50aXRsZT8oaC5pZD1mLGguaW5uZXJIVE1MPXMudGl0bGUpOmgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoKSxjJiZcIlwiIT09cy5kZXNjcmlwdGlvbj8oYy5pZD1wLGwmJm4ubW9yZUxlbmd0aD4wPyhzLnNtYWxsRGVzY3JpcHRpb249dGhpcy5zbGlkZVNob3J0RGVzYyhzLmRlc2NyaXB0aW9uLG4ubW9yZUxlbmd0aCxuLm1vcmVUZXh0KSxjLmlubmVySFRNTD1zLnNtYWxsRGVzY3JpcHRpb24sdGhpcy5kZXNjcmlwdGlvbkV2ZW50cyhjLHMpKTpjLmlubmVySFRNTD1zLmRlc2NyaXB0aW9uKTpjLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyksZChhLnBhcmVudE5vZGUsXCJkZXNjLVwiLmNvbmNhdChyKSksZChnLnBhcmVudE5vZGUsXCJkZXNjcmlwdGlvbi1cIi5jb25jYXQocikpKSxkKGEsXCJnc2xpZGUtXCIuY29uY2F0KG8pKSxkKHQsXCJsb2FkZWRcIiksXCJ2aWRlb1wiIT09byl7aWYoXCJleHRlcm5hbFwiIT09bylyZXR1cm5cImlubGluZVwiPT09bz8oQi5hcHBseSh0aGlzLmluc3RhbmNlLFt0LHMsdGhpcy5pbmRleCx2XSksdm9pZChzLmRyYWdnYWJsZSYmbmV3IE4oe2RyYWdFbDp0LnF1ZXJ5U2VsZWN0b3IoXCIuZ3NsaWRlLWlubGluZVwiKSx0b2xlcmFuY2VYOm4uZHJhZ1RvbGVyYW5jZVgsdG9sZXJhbmNlWTpuLmRyYWdUb2xlcmFuY2VZLHNsaWRlOnQsaW5zdGFuY2U6dGhpcy5pbnN0YW5jZX0pKSk6dm9pZChcImltYWdlXCIhPT1vP0
3ModikmJnYoKTpEKHQscyx0aGlzLmluZGV4LChmdW5jdGlvbigpe3ZhciBpPXQucXVlcnlTZWxlY3RvcihcImltZ1wiKTtzLmRyYWdnYWJsZSYmbmV3IE4oe2RyYWdFbDppLHRvbGVyYW5jZVg6bi5kcmFnVG9sZXJhbmNlWCx0b2xlcmFuY2VZOm4uZHJhZ1RvbGVyYW5jZVksc2xpZGU6dCxpbnN0YW5jZTplLmluc3RhbmNlfSkscy56b29tYWJsZSYmaS5uYXR1cmFsV2lkdGg+aS5vZmZzZXRXaWR0aCYmKGQoaSxcInpvb21hYmxlXCIpLG5ldyBxKGksdCwoZnVuY3Rpb24oKXtlLmluc3RhbmNlLnJlc2l6ZSgpfSkpKSxDKHYpJiZ2KCl9KSkpO0guYXBwbHkodGhpcyxbdCxzLHRoaXMuaW5kZXgsdl0pfWVsc2UgXy5hcHBseSh0aGlzLmluc3RhbmNlLFt0LHMsdGhpcy5pbmRleCx2XSl9fSx7a2V5Olwic2xpZGVTaG9ydERlc2NcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NTAsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtuLmlubmVySFRNTD1lO3ZhciBzPW4uaW5uZXJUZXh0LGw9aTtpZigoZT1zLnRyaW0oKSkubGVuZ3RoPD10KXJldHVybiBlO3ZhciBvPWUuc3Vic3RyKDAsdC0xKTtyZXR1cm4gbD8obj1udWxsLG8rJy4uLiA8YSBocmVmPVwiI1wiIGNsYXNzPVwiZGVzYy1tb3JlXCI+JytpK1wiPC9hPlwiKTpvfX0se2tleTpcImRlc2NyaXB0aW9uRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49ZS5xdWVyeVNlbGVjdG9yKFwiLmRlc2MtbW9yZVwiKTtpZighbilyZXR1cm4hMTtoKFwiY2xpY2tcIix7b25FbGVtZW50Om4sd2l0aENhbGxiYWNrOmZ1bmN0aW9uKGUsbil7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBzPWRvY3VtZW50LmJvZHksbD1nKG4sXCIuZ3NsaWRlLWRlc2NcIik7aWYoIWwpcmV0dXJuITE7bC5pbm5lckhUTUw9dC5kZXNjcmlwdGlvbixkKHMsXCJnZGVzYy1vcGVuXCIpO3ZhciBvPWgoXCJjbGlja1wiLHtvbkVsZW1lbnQ6W3MsZyhsLFwiLmdzbGlkZS1kZXNjcmlwdGlvblwiKV0sd2l0aENhbGxiYWNrOmZ1bmN0aW9uKGUsbil7XCJhXCIhPT1lLnRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYoYyhzLFwiZ2Rlc2Mtb3BlblwiKSxkKHMsXCJnZGVzYy1jbG9zZWRcIiksbC5pbm5lckhUTUw9dC5zbWFsbERlc2NyaXB0aW9uLGkuZGVzY3JpcHRpb25FdmVudHMobCx0KSxzZXRUaW
31lb3V0KChmdW5jdGlvbigpe2MocyxcImdkZXNjLWNsb3NlZFwiKX0pLDQwMCksby5kZXN0cm95KCkpfX0pfX0pfX0se2tleTpcImNyZWF0ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcy5pbnN0YW5jZS5zZXR0aW5ncy5zbGlkZUhUTUwpfX0se2tleTpcImdldENvbmZpZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7RSh0aGlzLmVsZW1lbnQpfHx0aGlzLmVsZW1lbnQuaGFzT3duUHJvcGVydHkoXCJkcmFnZ2FibGVcIil8fCh0aGlzLmVsZW1lbnQuZHJhZ2dhYmxlPXRoaXMuaW5zdGFuY2Uuc2V0dGluZ3MuZHJhZ2dhYmxlKTt2YXIgZT1uZXcgaih0aGlzLmluc3RhbmNlLnNldHRpbmdzLnNsaWRlRXh0cmFBdHRyaWJ1dGVzKTtyZXR1cm4gdGhpcy5zbGlkZUNvbmZpZz1lLnBhcnNlQ29uZmlnKHRoaXMuZWxlbWVudCx0aGlzLmluc3RhbmNlLnNldHRpbmdzKSx0aGlzLnNsaWRlQ29uZmlnfX1dKTtmdW5jdGlvbiBGKGUpe3JldHVybiBNYXRoLnNxcnQoZS54KmUueCtlLnkqZS55KX1mdW5jdGlvbiBSKGUsdCl7dmFyIGk9ZnVuY3Rpb24oZSx0KXt2YXIgaT1GKGUpKkYodCk7aWYoMD09PWkpcmV0dXJuIDA7dmFyIG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS54KnQueCtlLnkqdC55fShlLHQpL2k7cmV0dXJuIG4+MSYmKG49MSksTWF0aC5hY29zKG4pfShlLHQpO3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBlLngqdC55LXQueCplLnl9KGUsdCk+MCYmKGkqPS0xKSwxODAqaS9NYXRoLlBJfXZhciBHPWkoKGZ1bmN0aW9uIHQoaSl7ZSh0aGlzLHQpLHRoaXMuaGFuZGxlcnM9W10sdGhpcy5lbD1pfSksW3trZXk6XCJhZGRcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzLnB1c2goZSl9fSx7a2V5OlwiZGVsXCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZXx8KHRoaXMuaGFuZGxlcnM9W10pO2Zvcih2YXIgdD10aGlzLmhhbmRsZXJzLmxlbmd0aDt0Pj0wO3QtLSl0aGlzLmhhbmRsZXJzW3RdPT09ZSYmdGhpcy5oYW5kbGVycy5zcGxpY2UodCwxKX19LHtrZXk6XCJkaXNwYXRjaFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsdD10aGlzLmhhbmRsZXJzLmxlbmd0aDtlPHQ7ZSsrKXt2YXIgaT10aGlzLmhhbmRsZXJzW2VdO1wiZnVuY3Rpb25cIj09dHlwZW9mIGkmJmkuYXBwbHkodGhpcy5lbCxhcmd1bWVudHMpfX19XSk7ZnVuY3Rpb24gWihlLHQpe3ZhciBpPW5ldyBHKGUpO3JldHVybiBpLmFkZCh0KSxpfXZhciBVPWkoKGZ1bmN0aW9uIHQoaSxuKXtlKHRoaXMsdCksdGhpcy5lbGVtZW50PVwic3RyaW5nXCI9PXR5cGVvZiBpP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoaSk6aSx0aGlzLnN0YXJ0PXRoaXMuc3RhcnQuYmluZCh0aGlzKSx0aGlzLm1vdmU9dGhpcy5tb3ZlLmJpbmQodGhpcyksdGhpcy5lbmQ9dGhpcy5lbmQuYmluZCh0aGlzKSx0aGlzLmNhbmNlbD10aGlzLmNhbmNlbC5iaW5kKHRoaXMpLHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLHRoaXMuc3RhcnQsITEpLHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsdGhpcy5tb3ZlLCExKSx0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsdGhpcy5lbmQsITEpLHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hjYW5jZWxcIix0aGlzLmNhbmNlbCwhMSksdGhpcy5wcmVWPXt4Om51bGwseTpudWxsfSx0aGlzLnBpbmNoU3RhcnRMZW49bnVsbCx0aGlzLnpvb209MSx0aGlzLmlzRG91YmxlVGFwPSExO3ZhciBzPWZ1bmN0aW9uKCl7fTt0aGlzLnJvdGF0ZT1aKHRoaXMuZWxlbWVudCxuLnJvdGF0ZXx8cyksdGhpcy50b3VjaFN0YXJ0PVoodGhpcy5lbGVtZW50LG4udG91Y2hTdGFydHx8cyksdGhpcy5tdWx0aXBvaW50U3RhcnQ9Wih0aGlzLmVsZW1lbnQsbi5tdWx0aXBvaW50U3RhcnR8fHMpLHRoaXMubXVsdGlwb2ludEVuZD1aKHRoaXMuZWxlbWVudCxuLm11bHRpcG9pbnRFbmR8fHMpLHRoaXMucGluY2g9Wih0aGlzLmVsZW1lbnQsbi5waW5jaHx8cyksdGhpcy5zd2lwZT1aKHRoaXMuZWxlbWVudCxuLnN3aXBlfHxzKSx0aGlzLnRhcD1aKHRoaXMuZWxlbWVudCxuLnRhcHx8cyksdGhpcy5kb3VibGVUYXA9Wih0aGlzLmVsZW1lbnQsbi5kb3VibGVUYXB8fHMpLHRoaXMubG9uZ1RhcD1aKHRoaXMuZWxlbWVudCxuLmxvbmdUYXB8fHMpLHRoaXMuc2luZ2xlVGFwPVoodGhpcy5lbGVtZW50LG4uc2luZ2xlVGFwfHxzKSx0aGlzLnByZXNzTW92ZT1aKHRoaXMuZWxlbWVudCxuLnByZXNzTW92ZXx8cyksdGhpcy50d29GaW5nZXJQcmVzc01vdmU9Wih0aGlzLmVsZW1lbnQsbi50d29GaW5nZXJQcmVzc01vdmV8fHMpLHRoaXMudG91Y2hNb3ZlPVoodGhpcy5lbGVtZW50LG4udG91Y2hNb3ZlfHxzKSx0aGlzLnRvdWNoRW5kPVoodGhpcy5lbGVtZW50LG4udG91Y2hFbmR8fHMpLHRoaXMudG91Y2hDYW5jZWw9Wih0aGlzLmVsZW1lbnQsbi50b3VjaENhbmNlbHx8cyksdGhpcy50cmFuc2xhdGVDb250YWluZXI9dGhpcy5lbGVtZW50LHRoaXMuX2NhbmNlbEFsbEhhbmRsZXI9dGhpcy5jYW5jZWxBbGwuYmluZCh0aGlzKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLHRoaXMuX2NhbmNlbEFsbEhhbmRsZXIpLHRoaXMuZGVsdGE9bnVsbCx0aGlzLmxhc3Q9bnVsbCx0aGlzLm5vdz1udWxsLHRoaXMudGFwVGltZW91dD1udWxsLHRoaXMuc2luZ2xlVGFwVGltZW91dD1udWxsLHRoaXMubG9uZ1RhcFRpbWVvdXQ9bnVsbCx0aGlzLnN3aXBlVGltZW91dD1udWxsLHRoaXMueDE9dGhpcy54Mj10aGlzLnkxPXRoaXMueTI9bnVsbCx0aGlzLnByZVRhcFBvc2l0aW9uPXt4Om51bGwseTpudWxsfX0pLFt7a2V5Olwic3RhcnRcIix2YWx1ZTpmdW5jdGlvbihlKXtpZihlLnRvdWNoZXMpaWYoZS50YXJnZXQmJmUudGFyZ2V0Lm5vZGVOYW1lJiZbXCJhXCIsXCJidXR0b25cIixcImlucHV0XCJdLmluZGV4T2YoZS50YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSk+PTApY29uc29sZS5sb2coXCJpZ25vcmUgZHJhZyBmb3IgdGhpcyB0b3VjaGVkIGVsZW1lbnRcIixlLnRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKTtlbHNle3RoaXMubm93PURhdGUubm93KCksdGhpcy54MT1lLnRvdWNoZXNbMF0ucGFnZVgsdGhpcy55MT1lLnRvdWNoZXNbMF0ucGFnZVksdGhpcy5kZWx0YT10aGlzLm5vdy0odGhpcy5sYXN0fHx0aGlzLm5vdyksdGhpcy50b3VjaFN0YXJ0LmRpc3BhdGNoKGUsdGhpcy5lbGVtZW50KSxudWxsIT09dGhpcy5wcmVUYXBQb3NpdGlvbi54JiYodGhpcy5pc0RvdWJsZVRhcD10aGlzLmRlbHRhPjAmJnRoaXMuZGVsdGE8PTI1MCYmTWF0aC5hYnModGhpcy5wcmVUYXBQb3NpdGlvbi54LXRoaXMueDEpPDMwJiZNYXRoLmFicyh0aGlzLnByZVRhcFBvc2l0aW9uLnktdGh
3pcy55MSk8MzAsdGhpcy5pc0RvdWJsZVRhcCYmY2xlYXJUaW1lb3V0KHRoaXMuc2luZ2xlVGFwVGltZW91dCkpLHRoaXMucHJlVGFwUG9zaXRpb24ueD10aGlzLngxLHRoaXMucHJlVGFwUG9zaXRpb24ueT10aGlzLnkxLHRoaXMubGFzdD10aGlzLm5vdzt2YXIgdD10aGlzLnByZVY7aWYoZS50b3VjaGVzLmxlbmd0aD4xKXt0aGlzLl9jYW5jZWxMb25nVGFwKCksdGhpcy5fY2FuY2VsU2luZ2xlVGFwKCk7dmFyIGk9e3g6ZS50b3VjaGVzWzFdLnBhZ2VYLXRoaXMueDEseTplLnRvdWNoZXNbMV0ucGFnZVktdGhpcy55MX07dC54PWkueCx0Lnk9aS55LHRoaXMucGluY2hTdGFydExlbj1GKHQpLHRoaXMubXVsdGlwb2ludFN0YXJ0LmRpc3BhdGNoKGUsdGhpcy5lbGVtZW50KX10aGlzLl9wcmV2ZW50VGFwPSExLHRoaXMubG9uZ1RhcFRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMubG9uZ1RhcC5kaXNwYXRjaChlLHRoaXMuZWxlbWVudCksdGhpcy5fcHJldmVudFRhcD0hMH0uYmluZCh0aGlzKSw3NTApfX19LHtrZXk6XCJtb3ZlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZS50b3VjaGVzKXt2YXIgdD10aGlzLnByZVYsaT1lLnRvdWNoZXMubGVuZ3RoLG49ZS50b3VjaGVzWzBdLnBhZ2VYLHM9ZS50b3VjaGVzWzBdLnBhZ2VZO2lmKHRoaXMuaXNEb3VibGVUYXA9ITEsaT4xKXt2YXIgbD1lLnRvdWNoZXNbMV0ucGFnZVgsbz1lLnRvdWNoZXNbMV0ucGFnZVkscj17eDplLnRvdWNoZXNbMV0ucGFnZVgtbix5OmUudG91Y2hlc1sxXS5wYWdlWS1zfTtudWxsIT09dC54JiYodGhpcy5waW5jaFN0YXJ0TGVuPjAmJihlLnpvb209RihyKS90aGlzLnBpbmNoU3RhcnRMZW4sdGhpcy5waW5jaC5kaXNwYXRjaChlLHRoaXMuZWxlbWVudCkpLGUuYW5nbGU9UihyLHQpLHRoaXMucm90YXRlLmRpc3BhdGNoKGUsdGhpcy5lbGVtZW50KSksdC54PXIueCx0Lnk9ci55LG51bGwhPT10aGlzLngyJiZudWxsIT09dGhpcy5zeDI/KGUuZGVsdGFYPShuLXRoaXMueDIrbC10aGlzLnN4MikvMixlLmRlbHRhWT0ocy10aGlzLnkyK28tdGhpcy5zeTIpLzIpOihlLmRlbHRhWD0wLGUuZGVsdGFZPTApLHRoaXMudHdvRmluZ2VyUHJlc3NNb3ZlLmRpc3BhdGNoKGUsdGhpcy5lbGVtZW50KSx0aGlzLnN4Mj1sLHRoaXMuc3kyPW99ZWxzZXtpZihudWxsIT09dGhpcy54Mil7ZS5kZWx0YVg9bi10aGlzLngyLGUuZGVsdGFZP
3XMtdGhpcy55Mjt2YXIgYT1NYXRoLmFicyh0aGlzLngxLXRoaXMueDIpLGg9TWF0aC5hYnModGhpcy55MS10aGlzLnkyKTsoYT4xMHx8aD4xMCkmJih0aGlzLl9wcmV2ZW50VGFwPSEwKX1lbHNlIGUuZGVsdGFYPTAsZS5kZWx0YVk9MDt0aGlzLnByZXNzTW92ZS5kaXNwYXRjaChlLHRoaXMuZWxlbWVudCl9dGhpcy50b3VjaE1vdmUuZGlzcGF0Y2goZSx0aGlzLmVsZW1lbnQpLHRoaXMuX2NhbmNlbExvbmdUYXAoKSx0aGlzLngyPW4sdGhpcy55Mj1zLGk+MSYmZS5wcmV2ZW50RGVmYXVsdCgpfX19LHtrZXk6XCJlbmRcIix2YWx1ZTpmdW5jdGlvbihlKXtpZihlLmNoYW5nZWRUb3VjaGVzKXt0aGlzLl9jYW5jZWxMb25nVGFwKCk7dmFyIHQ9dGhpcztlLnRvdWNoZXMubGVuZ3RoPDImJih0aGlzLm11bHRpcG9pbnRFbmQuZGlzcGF0Y2goZSx0aGlzLmVsZW1lbnQpLHRoaXMuc3gyPXRoaXMuc3kyPW51bGwpLHRoaXMueDImJk1hdGguYWJzKHRoaXMueDEtdGhpcy54Mik+MzB8fHRoaXMueTImJk1hdGguYWJzKHRoaXMueTEtdGhpcy55Mik+MzA/KGUuZGlyZWN0aW9uPXRoaXMuX3N3aXBlRGlyZWN0aW9uKHRoaXMueDEsdGhpcy54Mix0aGlzLnkxLHRoaXMueTIpLHRoaXMuc3dpcGVUaW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5zd2lwZS5kaXNwYXRjaChlLHQuZWxlbWVudCl9KSwwKSk6KHRoaXMudGFwVGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3QuX3ByZXZlbnRUYXB8fHQudGFwLmRpc3BhdGNoKGUsdC5lbGVtZW50KSx0LmlzRG91YmxlVGFwJiYodC5kb3VibGVUYXAuZGlzcGF0Y2goZSx0LmVsZW1lbnQpLHQuaXNEb3VibGVUYXA9ITEpfSksMCksdC5pc0RvdWJsZVRhcHx8KHQuc2luZ2xlVGFwVGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Quc2luZ2xlVGFwLmRpc3BhdGNoKGUsdC5lbGVtZW50KX0pLDI1MCkpKSx0aGlzLnRvdWNoRW5kLmRpc3BhdGNoKGUsdGhpcy5lbGVtZW50KSx0aGlzLnByZVYueD0wLHRoaXMucHJlVi55PTAsdGhpcy56b29tPTEsdGhpcy5waW5jaFN0YXJ0TGVuPW51bGwsdGhpcy54MT10aGlzLngyPXRoaXMueTE9dGhpcy55Mj1udWxsfX19LHtrZXk6XCJjYW5jZWxBbGxcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3ByZXZlbnRUYXA9ITAsY2xlYXJUaW1lb3V0KHRoaXMuc2luZ2xlVGFwVGltZW91dCksY2xlYXJUaW1lb3V0KHRoaXMudGFwVGltZW91dCksY2xlYXJUaW1lb3V0KHRoaXMubG9uZ1RhcFRpbWVvdXQpLGNsZWFyVGltZW91dCh0aGlzLnN3aXBlVGltZW91dCl9fSx7a2V5OlwiY2FuY2VsXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5jYW5jZWxBbGwoKSx0aGlzLnRvdWNoQ2FuY2VsLmRpc3BhdGNoKGUsdGhpcy5lbGVtZW50KX19LHtrZXk6XCJfY2FuY2VsTG9uZ1RhcFwiLHZhbHVlOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMubG9uZ1RhcFRpbWVvdXQpfX0se2tleTpcIl9jYW5jZWxTaW5nbGVUYXBcIix2YWx1ZTpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnNpbmdsZVRhcFRpbWVvdXQpfX0se2tleTpcIl9zd2lwZURpcmVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxpLG4pe3JldHVybiBNYXRoLmFicyhlLXQpPj1NYXRoLmFicyhpLW4pP2UtdD4wP1wiTGVmdFwiOlwiUmlnaHRcIjppLW4+MD9cIlVwXCI6XCJEb3duXCJ9fSx7a2V5Olwib25cIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXNbZV0mJnRoaXNbZV0uYWRkKHQpfX0se2tleTpcIm9mZlwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpc1tlXSYmdGhpc1tlXS5kZWwodCl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2luZ2xlVGFwVGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuc2luZ2xlVGFwVGltZW91dCksdGhpcy50YXBUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy50YXBUaW1lb3V0KSx0aGlzLmxvbmdUYXBUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy5sb25nVGFwVGltZW91dCksdGhpcy5zd2lwZVRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLnN3aXBlVGltZW91dCksdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsdGhpcy5zdGFydCksdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIix0aGlzLm1vdmUpLHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIix0aGlzLmVuZCksdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGNhbmNlbFwiLHRoaXMuY2FuY2VsKSx0aGlzLnJvdGF0ZS5kZWwoKSx0aGlzLnRvdWNoU3RhcnQuZGVsKCksdGhpcy5tdWx0aXBvaW50U3RhcnQuZGVsKCksdGhpcy5tdWx0aXBvaW50RW5kLmRlbCgpLHRoaXMucGluY2guZGVsKCksdGhpcy5zd2lwZS5kZWwoKSx0aGlzLnRhcC5kZWwoKSx0aGlzLmRvdWJsZVRhcC5kZWwoKSx0aGlzLmxvbmdUYXAuZGVsKCksdGhpcy5zaW5nbGVUYXAuZGVsKCksdGhpcy5wcmVzc01vdmUuZGVsKCksdGhpcy50d29GaW5nZXJQcmVzc01vdmUuZGVsKCksdGhpcy50b3VjaE1vdmUuZGVsKCksdGhpcy50b3VjaEVuZC5kZWwoKSx0aGlzLnRvdWNoQ2FuY2VsLmRlbCgpLHRoaXMucHJlVj10aGlzLnBpbmNoU3RhcnRMZW49dGhpcy56b29tPXRoaXMuaXNEb3VibGVUYXA9dGhpcy5kZWx0YT10aGlzLmxhc3Q9dGhpcy5ub3c9dGhpcy50YXBUaW1lb3V0PXRoaXMuc2luZ2xlVGFwVGltZW91dD10aGlzLmxvbmdUYXBUaW1lb3V0PXRoaXMuc3dpcGVUaW1lb3V0PXRoaXMueDE9dGhpcy54Mj10aGlzLnkxPXRoaXMueTI9dGhpcy5wcmVUYXBQb3NpdGlvbj10aGlzLnJvdGF0ZT10aGlzLnRvdWNoU3RhcnQ9dGhpcy5tdWx0aXBvaW50U3RhcnQ9dGhpcy5tdWx0aXBvaW50RW5kPXRoaXMucGluY2g9dGhpcy5zd2lwZT10aGlzLnRhcD10aGlzLmRvdWJsZVRhcD10aGlzLmxvbmdUYXA9dGhpcy5zaW5nbGVUYXA9dGhpcy5wcmVzc01vdmU9dGhpcy50b3VjaE1vdmU9dGhpcy50b3VjaEVuZD10aGlzLnRvdWNoQ2FuY2VsPXRoaXMudHdvRmluZ2VyUHJlc3NNb3ZlPW51bGwsd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIix0aGlzLl9jYW5jZWxBbGxIYW5kbGVyKSxudWxsfX1dKTtmdW5jdGlvbiAkKGUpe3ZhciB0PWZ1bmN0aW9uKCl7dmFyIGUsd
3D1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmFrZWVsZW1lbnRcIiksaT17dHJhbnNpdGlvbjpcInRyYW5zaXRpb25lbmRcIixPVHJhbnNpdGlvbjpcIm9UcmFuc2l0aW9uRW5kXCIsTW96VHJhbnNpdGlvbjpcInRyYW5zaXRpb25lbmRcIixXZWJraXRUcmFuc2l0aW9uOlwid2Via2l0VHJhbnNpdGlvbkVuZFwifTtmb3IoZSBpbiBpKWlmKHZvaWQgMCE9PXQuc3R5bGVbZV0pcmV0dXJuIGlbZV19KCksaT13aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRofHxkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLG49dShlLFwiZ3NsaWRlLW1lZGlhXCIpP2U6ZS5xdWVyeVNlbGVjdG9yKFwiLmdzbGlkZS1tZWRpYVwiKSxzPWcobixcIi5naW5uZXItY29udGFpbmVyXCIpLGw9ZS5xdWVyeVNlbGVjdG9yKFwiLmdzbGlkZS1kZXNjcmlwdGlvblwiKTtpPjc2OSYmKG49cyksZChuLFwiZ3Jlc2V0XCIpLGYobixcInRyYW5zbGF0ZTNkKDAsIDAsIDApXCIpLGgodCx7b25FbGVtZW50Om4sb25jZTohMCx3aXRoQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtjKG4sXCJncmVzZXRcIil9fSksbi5zdHlsZS5vcGFjaXR5PVwiXCIsbCYmKGwuc3R5bGUub3BhY2l0eT1cIlwiKX1mdW5jdGlvbiBKKGUpe2lmKGUuZXZlbnRzLmhhc093blByb3BlcnR5KFwidG91Y2hcIikpcmV0dXJuITE7dmFyIHQsaSxuLHM9eCgpLGw9cy53aWR0aCxvPXMuaGVpZ2h0LHI9ITEsYT1udWxsLGg9bnVsbCx2PW51bGwscD0hMSxtPTEseT0xLGI9ITEsUz0hMSx3PW51bGwsVD1udWxsLEM9bnVsbCxrPW51bGwsRT0wLEE9MCxMPSExLEk9ITEsTz17fSxQPXt9LE09MCx6PTAsWD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdsaWdodGJveC1zbGlkZXJcIiksWT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmdvdmVybGF5XCIpLHE9bmV3IFUoWCx7dG91Y2hTdGFydDpmdW5jdGlvbih0KXtpZihyPSEwLCh1KHQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQsXCJnaW5uZXItY29udGFpbmVyXCIpfHxnKHQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQsXCIuZ3NsaWRlLWRlc2NcIil8fFwiYVwiPT10LnRhcmdldFRvdWNoZXNbMF0udGFyZ2V0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiYocj0hMSksZyh0LnRhcmdldFRvdWNoZXNbMF0udGFyZ2V0LFwiLmdzbGlkZS1pbmxpbmVcIikmJiF1KHQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQucGFyZW50Tm9kZSxcImdzbGlkZS1pbmxpbmVcIikmJihyPSExKSxyKXtpZihQPXQudGFyZ2V0VG91Y2hlc1swXSxPLnBhZ2VYPXQudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCxPLnBhZ2VZPXQudGFyZ2V0VG91Y2hlc1swXS5wYWdlWSxNPXQudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRYLHo9dC50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFksYT1lLmFjdGl2ZVNsaWRlLGg9YS5xdWVyeVNlbGVjdG9yKFwiLmdzbGlkZS1tZWRpYVwiKSxuPWEucXVlcnlTZWxlY3RvcihcIi5nc2xpZGUtaW5saW5lXCIpLHY9bnVsbCx1KGgsXCJnc2xpZGUtaW1hZ2VcIikmJih2PWgucXVlcnlTZWxlY3RvcihcImltZ1wiKSksKHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGh8fGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpPjc2OSYmKGg9YS5xdWVyeVNlbGVjdG9yKFwiLmdpbm5lci1jb250YWluZXJcIikpLGMoWSxcImdyZXNldFwiKSx0LnBhZ2VYPjIwJiZ0LnBhZ2VYPHdpbmRvdy5pbm5lcldpZHRoLTIwKXJldHVybjt0LnByZXZlbnREZWZhdWx0KCl9fSx0b3VjaE1vdmU6ZnVuY3Rpb24ocyl7aWYociYmKFA9cy50YXJnZXRUb3VjaGVzWzBdLCFiJiYhUykpe2lmKG4mJm4ub2Zmc2V0SGVpZ2h0Pm8pe3ZhciBhPU8ucGFnZVgtUC5wYWdlWDtpZihNYXRoLmFicyhhKTw9MTMpcmV0dXJuITF9cD0hMDt2YXIgZCxjPXMudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRYLHU9cy50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFksZz1NLWMsbT16LXU7aWYoTWF0aC5hYnMoZyk+TWF0aC5hYnMobSk/KEw9ITEsST0hMCk6KEk9ITEsTD0hMCksdD1QLnBhZ2VYLU8ucGFnZVgsRT0xMDAqdC9sLGk9UC5wYWdlWS1PLnBhZ2VZLEE9MTAwKmkvbyxMJiZ2JiYoZD0xLU1hdGguYWJzKGkpL28sWS5zdHlsZS5vcGFjaXR5PWQsZS5zZXR0aW5ncy50b3VjaEZvbGxvd0F4aXMmJihFPTApKSxJJiYoZD0xLU1hdGguYWJzKHQpL2wsaC5zdHlsZS5vcGFjaXR5PWQsZS5zZXR0aW5ncy50b3VjaEZvbGxvd0F4aXMmJihBPTApKSwhdilyZXR1cm4gZihoLFwidHJhbnNsYXRlM2QoXCIuY29uY2F0KEUsXCIlLCAwLCAwKVwiKSk7ZihoLFwidHJhbnNsYXRlM2QoXCIuY29uY2F0KEUsXCIlLCBcIikuY29uY2F0KEEsXCIlLCAwKVwiKSl9fSx0b3VjaEVuZDpmdW5jdGlvbigpe2lmKHIpe2lmKHA9ITEsU3x8YilyZXR1cm4gQz13LHZvaWQoaz1UKTt2YXIgdD1NYXRoLmFicyhwYXJzZUludChBKSksaT1NYXRoLmFicyhwYXJzZUludChFKSk7aWYoISh0PjI5JiZ2KSlyZXR1cm4gdDwyOSYmaTwyNT8oZChZLFwiZ3Jlc2V0XCIpLFkuc3R5bGUub3BhY2l0eT0xLCQoaCkpOnZvaWQgMDtlLmNsb3NlKCl9fSxtdWx0aXBvaW50RW5kOmZ1bmN0aW9uKCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtiPSExfSksNTApfSxtdWx0aXBvaW50U3RhcnQ6ZnVuY3Rpb24oKXtiPSEwLG09eXx8MX0scGluY2g6ZnVuY3Rpb24oZSl7aWYoIXZ8fHApcmV0dXJuITE7Yj0hMCx2LnNjYWxlWD12LnNjYWxlWT1tKmUuem9vbTt2YXIgdD1tKmUuem9vbTtpZihTPSEwLHQ8PTEpcmV0dXJuIFM9ITEsdD0xLGs9bnVsbCxDPW51bGwsdz1udWxsLFQ9bnVsbCx2b2lkIHYuc2V0QXR0cmlidXRlKFwic3R5bGVcIixcIlwiKTt0PjQuNSYmKHQ9NC41KSx2LnN0eWxlLnRyYW5zZm9ybT1cInNjYWxlM2QoXCIuY29uY2F0KHQsXCIsIFwiKS5jb25jYXQodCxcIiwgMSlcIikseT10fSxwcmVzc01vdmU6ZnVuY3Rpb24oZSl7aWYoUyYmIWIpe3ZhciB0PVAucGFnZVgtTy5wYWdlWCxpPVAucGFnZVktTy5wYWdlWTtDJiYodCs9QyksayYmKGkrPWspLHc9dCxUPWk7dmFyIG49XCJ0cmFuc2xhdGUzZChcIi5jb25jYXQodCxcInB4LCBcIikuY29uY2F0KGksXCJweCwgMClcIik7eSYmKG4rPVwiIHNjYWxlM2QoXCIuY29uY2F0KHksXCIsIFwiKS5jb25jYXQoeSxcIiwgMSlcIikpLGYodixuKX19LHN3aXBlOmZ1bmN0aW9uKHQpe2lmKCFTKWlmKGIpYj0hMTtlbHNle2lmKFwiTGVmdFwiPT10LmRpcmVjdGlvbil7aWYoZS5pbmRleD09ZS5lbGVtZW50cy5sZW5ndGgtMSlyZXR1cm4gJChoKTtlLm5leHRTbGlkZSgpfWlmKFwiUmlnaHRcIj09dC5kaXJlY3Rpb24pe2lmKDA9PWUuaW5kZXgpcmV0dXJuICQoaCk7ZS5wcmV2U2xpZGUoKX19fX0pO2UuZXZlbnRzLnRvdWNoPXF9dmFyIEs9VCgpLFE9bnVsbCE9PVQoKXx8dm9pZCAwIT09ZG9jdW1lbnQuY3JlYXRlVG91Y2h8fFwib250b3VjaHN0YXJ0XCJpbiB3aW5kb3d8fFwib25tc2dlc3R1cmVjaGFuZ2VcImluIHdpbmRvd3x8bmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHMsZWU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJodG1sXCIpWzBdLHRlPXtzZWxlY3RvcjpcIi5nbGlnaHRib3hcIixlbGVtZW50czpudWxsLHNraW46XCJjbGVhblwiLHRoZW1lOlwiY2xlYW5cIixjbG9zZUJ1dHRvbjohMCxzdGFydEF0Om51bGwsYXV0b3BsYXlWaWRlb3M6ITAsYXV0b2ZvY3VzVmlkZW9zOiEwLGRlc2NQb3NpdGlvbjpcImJvdHRvbVwiLH
3dpZHRoOlwiOTAwcHhcIixoZWlnaHQ6XCI1MDZweFwiLHZpZGVvc1dpZHRoOlwiOTYwcHhcIixiZWZvcmVTbGlkZUNoYW5nZTpudWxsLGFmdGVyU2xpZGVDaGFuZ2U6bnVsbCxiZWZvcmVTbGlkZUxvYWQ6bnVsbCxhZnRlclNsaWRlTG9hZDpudWxsLHNsaWRlSW5zZXJ0ZWQ6bnVsbCxzbGlkZVJlbW92ZWQ6bnVsbCxzbGlkZUV4dHJhQXR0cmlidXRlczpudWxsLG9uT3BlbjpudWxsLG9uQ2xvc2U6bnVsbCxsb29wOiExLHpvb21hYmxlOiEwLGRyYWdnYWJsZTohMCxkcmFnQXV0b1NuYXA6ITEsZHJhZ1RvbGVyYW5jZVg6NDAsZHJhZ1RvbGVyYW5jZVk6NjUscHJlbG9hZDohMCxvbmVTbGlkZVBlck9wZW46ITEsdG91Y2hOYXZpZ2F0aW9uOiEwLHRvdWNoRm9sbG93QXhpczohMCxrZXlib2FyZE5hdmlnYXRpb246ITAsY2xvc2VPbk91dHNpZGVDbGljazohMCxwbHVnaW5zOiExLHBseXI6e2NzczpcImh0dHBzOi8vY2RuLnBseXIuaW8vMy42LjEyL3BseXIuY3NzXCIsanM6XCJodHRwczovL2Nkbi5wbHlyLmlvLzMuNi4xMi9wbHlyLmpzXCIsY29uZmlnOntyYXRpbzpcIjE2OjlcIixmdWxsc2NyZWVuOntlbmFibGVkOiEwLGlvc05hdGl2ZTohMH0seW91dHViZTp7bm9Db29raWU6ITAscmVsOjAsc2hvd2luZm86MCxpdl9sb2FkX3BvbGljeTozfSx2aW1lbzp7YnlsaW5lOiExLHBvcnRyYWl0OiExLHRpdGxlOiExLHRyYW5zcGFyZW50OiExfX19LG9wZW5FZmZlY3Q6XCJ6b29tXCIsY2xvc2VFZmZlY3Q6XCJ6b29tXCIsc2xpZGVFZmZlY3Q6XCJzbGlkZVwiLG1vcmVUZXh0OlwiU2VlIG1vcmVcIixtb3JlTGVuZ3RoOjYwLGNzc0VmZWN0czp7ZmFkZTp7aW46XCJmYWRlSW5cIixvdXQ6XCJmYWRlT3V0XCJ9LHpvb206e2luOlwiem9vbUluXCIsb3V0Olwiem9vbU91dFwifSxzbGlkZTp7aW46XCJzbGlkZUluUmlnaHRcIixvdXQ6XCJzbGlkZU91dExlZnRcIn0sc2xpZGVCYWNrOntpbjpcInNsaWRlSW5MZWZ0XCIsb3V0Olwic2xpZGVPdXRSaWdodFwifSxub25lOntpbjpcIm5vbmVcIixvdXQ6XCJub25lXCJ9fSxzdmc6e2Nsb3NlOic8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4PVwiMHB4XCIgeT1cIjBweFwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+PGc+PGc+PHBhdGggZD1cIk01MDUuOTQzLDYuMDU4Yy04LjA3Ny04LjA3Ny0yMS4xNzItOC4wNzctMjkuMjQ5LDBMNi4wNTgsNDc2LjY5M2MtOC4wNzcsOC4wNzctOC4wNzcsMjEuMTcyLDAsMjkuMjQ5QzEwLjA5Niw1MDkuOTgyLDE1LjM5LDUxMiwyMC42ODMsNTEyYzUuMjkzLDAsMTAuNTg2LTIuMDE5LDE0LjYyNS02LjA1OUw1MDUuOTQzLDM1LjMwNkM1MTQuMDE5LDI3LjIzLDUxNC4wMTksMTQuMTM1LDUwNS45NDMsNi4wNTh6XCIvPjwvZz48L2c+PGc+PGc+PHBhdGggZD1cIk01MDUuOTQyLDQ3Ni42OTRMMzUuMzA2LDYuMDU5Yy04LjA3Ni04LjA3Ny0yMS4xNzItOC4wNzctMjkuMjQ4LDBjLTguMDc3LDguMDc2LTguMDc3LDIxLjE3MSwwLDI5LjI0OGw0NzAuNjM2LDQ3MC42MzZjNC4wMzgsNC4wMzksOS4zMzIsNi4wNTgsMTQuNjI1LDYuMDU4YzUuMjkzLDAsMTAuNTg3LTIuMDE5LDE0LjYyNC02LjA1N0M1MTQuMDE4LDQ5Ny44NjYsNTE0LjAxOCw0ODQuNzcxLDUwNS45NDIsNDc2LjY5NHpcIi8+PC9nPjwvZz48L3N2Zz4nLG5leHQ6JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHg9XCIwcHhcIiB5PVwiMHB4XCIgdmlld0JveD1cIjAgMCA0NzcuMTc1IDQ3Ny4xNzVcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPiA8Zz48cGF0aCBkPVwiTTM2MC43MzEsMjI5LjA3NWwtMjI1LjEtMjI1LjFjLTUuMy01LjMtMTMuOC01LjMtMTkuMSwwcy01LjMsMTMuOCwwLDE5LjFsMjE1LjUsMjE1LjVsLTIxNS41LDIxNS41Yy01LjMsNS4zLTUuMywxMy44LDAsMTkuMWMyLjYsMi42LDYuMSw0LDkuNSw0YzMuNCwwLDYuOS0xLjMsOS41LTRsMjI1LjEtMjI1LjFDMzY1LjkzMSwyNDIuODc1LDM2NS45MzEsMjM0LjI3NSwzNjAuNzMxLDIyOS4wNzV6XCIvPjwvZz48L3N2Zz4nLHByZXY6JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHg9XCIwcHhcIiB5PVwiMHB4XCIgdmlld0JveD1cIjAgMCA0NzcuMTc1IDQ3Ny4xNzVcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPjxnPjxwYXRoIGQ9XCJNMTQ1LjE4OCwyMzguNTc1bDIxNS41LTIxNS41YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xcy0xMy44LTUuMy0xOS4xLDBsLTIyNS4xLDIyNS4xYy01LjMsNS4zLTUuMywxMy44LDAsMTkuMWwyMjUuMSwyMjVjMi42LDIuNiw2LjEsNCw5LjUsNHM2LjktMS4zLDkuNS00YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xTDE0NS4xODgsMjM4LjU3NXpcIi8+PC9nPjwvc3ZnPid9LHNsaWRlSFRNTDonPGRpdiBjbGFzcz1cImdzbGlkZVwiPlxcbiAgICA8ZGl2IGNsYXNzPVwiZ3NsaWRlLWlubmVyLWNvbnRlbnRcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnaW5uZXItY29udGFpbmVyXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdzbGlkZS1tZWRpYVwiPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnc2xpZGUtZGVzY3JpcHRpb25cIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdkZXNjLWlubmVyXCI+XFxuICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJnc2xpZGUtdGl0bGVcIj48L2g0PlxcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdzbGlkZS1kZXNjXCI+PC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbjwvZGl2PicsbGlnaHRib3hIVE1MOic8ZGl2IGlkPVwiZ2xpZ2h0Ym94LWJvZHlcIiBjbGFzcz1cImdsaWdodGJveC1jb250YWluZXJcIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtaGlkZGVuPVwiZmFsc2VcIj5cXG4gICAgPGRpdiBjbGFzcz1cImdsb2FkZXIgdmlzaWJsZVwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVwiZ292ZXJsYXlcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cImdjb250YWluZXJcIj5cXG4gICAgPGRpdiBpZD1cImdsaWdodGJveC1zbGlkZXJcIiBjbGFzcz1cImdzbGlkZXJcIj48L2Rpdj5cXG4gICAgPGJ1dHRvbiBjbGFzcz1cImdjbG9zZSBnYnRuXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgZGF0YS10YWJvcmRlcj1cIjNcIj57Y2xvc2VTVkd9PC9idXR0b24+XFxuICAgIDxidXR0b24gY2xhc3M9XCJncHJldiBnYnRuXCIgYXJpYS1sYWJlbD1cIlByZXZpb3VzXCIgZGF0YS10YWJvcmRlcj1cIjJcIj57cHJldlNWR308L2J1dHRvbj5cXG4gICAgPGJ1dHRvbiBjbGFzcz1cImduZXh0IGdidG5cIiBhcmlhLWxhYmVsPVwiTmV4dFwiIGRhdGEtdGFib3JkZXI9XCIxXCI+e25leHRTVkd9PC9idXR0b24+XFxuPC9kaXY+XFxuPC9kaXY+J30saWU9aSgoZnVuY3Rpb24gdCgpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtlKHRoaXMsdCksdGhpcy5jdXN0b21PcHRpb25zPWksdGhpcy5zZXR0aW5ncz1vKHRlLGkpLHRoaXMuZWZmZWN0c0NsYXNzZXM9dGhpcy5nZXRBbmltYXRpb25DbGFzc2VzKCksdGhpcy52aWRlb1BsYXllcnM9e30sdGhpcy5hcGlFdmVudHM9W10sdGhpcy5mdWxsRWxlbWVudHNMaXN0PSExfSksW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5nZXRTZWxlY3RvcigpO3QmJih0aGlzLmJhc2VFdmVudHM9aChcImNsaWNrXCIse29uRWxlbWVudDp0LH
3dpdGhDYWxsYmFjazpmdW5jdGlvbih0LGkpe3QucHJldmVudERlZmF1bHQoKSxlLm9wZW4oaSl9fSkpLHRoaXMuZWxlbWVudHM9dGhpcy5nZXRFbGVtZW50cygpfX0se2tleTpcIm9wZW5cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7aWYoMD09PXRoaXMuZWxlbWVudHMubGVuZ3RoKXJldHVybiExO3RoaXMuYWN0aXZlU2xpZGU9bnVsbCx0aGlzLnByZXZBY3RpdmVTbGlkZUluZGV4PW51bGwsdGhpcy5wcmV2QWN0aXZlU2xpZGU9bnVsbDt2YXIgaT16KHQpP3Q6dGhpcy5zZXR0aW5ncy5zdGFydEF0O2lmKEUoZSkpe3ZhciBuPWUuZ2V0QXR0cmlidXRlKFwiZGF0YS1nYWxsZXJ5XCIpO24mJih0aGlzLmZ1bGxFbGVtZW50c0xpc3Q9dGhpcy5lbGVtZW50cyx0aGlzLmVsZW1lbnRzPXRoaXMuZ2V0R2FsbGVyeUVsZW1lbnRzKHRoaXMuZWxlbWVudHMsbikpLE8oaSkmJihpPXRoaXMuZ2V0RWxlbWVudEluZGV4KGUpKTwwJiYoaT0wKX16KGkpfHwoaT0wKSx0aGlzLmJ1aWxkKCksdih0aGlzLm92ZXJsYXksXCJub25lXCI9PT10aGlzLnNldHRpbmdzLm9wZW5FZmZlY3Q/XCJub25lXCI6dGhpcy5zZXR0aW5ncy5jc3NFZmVjdHMuZmFkZS5pbik7dmFyIHM9ZG9jdW1lbnQuYm9keSxsPXdpbmRvdy5pbm5lcldpZHRoLWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtpZihsPjApe3ZhciBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtvLnR5cGU9XCJ0ZXh0L2Nzc1wiLG8uY2xhc3NOYW1lPVwiZ2Nzcy1zdHlsZXNcIixvLmlubmVyVGV4dD1cIi5nc2Nyb2xsYmFyLWZpeGVyIHttYXJnaW4tcmlnaHQ6IFwiLmNvbmNhdChsLFwicHh9XCIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobyksZChzLFwiZ3Njcm9sbGJhci1maXhlclwiKX1kKHMsXCJnbGlnaHRib3gtb3BlblwiKSxkKGVlLFwiZ2xpZ2h0Ym94LW9wZW5cIiksSyYmKGQoZG9jdW1lbnQuYm9keSxcImdsaWdodGJveC1tb2JpbGVcIiksdGhpcy5zZXR0aW5ncy5zbGlkZUVmZmVjdD1cInNsaWRlXCIpLHRoaXMuc2hvd1NsaWRlKGksITApLDE9PT10aGlzLmVsZW1lbnRzLmxlbmd0aD8oZCh0aGlzLnByZXZCdXR0b24sXCJnbGlnaHRib3gtYnV0dG9uLWhpZGRlblwiKSxkKHRoaXMubmV4dEJ1dHRvbixcImdsaWdodGJveC1idXR0b24taGlkZGVuXCIpKTooYyh0aGlzLnByZXZCdXR0b24sXCJnbGlnaHRib3gtYnV0dG9uLWhpZGRlblwiKSxjKHRoaXMubmV4dEJ1dHRvbixcImdsaWdodGJveC1idXR0b24taGlkZGVuXCIpKSx0aGlzLmxpZ2h0Ym94T3Blbj0hMCx0aGlzLnRyaWdnZXIoXCJvcGVuXCIpLEModGhpcy5zZXR0aW5ncy5vbk9wZW4pJiZ0aGlzLnNldHRpbmdzLm9uT3BlbigpLFEmJnRoaXMuc2V0dGluZ3MudG91Y2hOYXZpZ2F0aW9uJiZKKHRoaXMpLHRoaXMuc2V0dGluZ3Mua2V5Ym9hcmROYXZpZ2F0aW9uJiZZKHRoaXMpfX0se2tleTpcIm9wZW5BdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjA7dGhpcy5vcGVuKG51bGwsZSl9fSx7a2V5Olwic2hvd1NsaWRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAsaT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3AodGhpcy5sb2FkZXIpLHRoaXMuaW5kZXg9cGFyc2VJbnQodCk7dmFyIG49dGhpcy5zbGlkZXNDb250YWluZXIucXVlcnlTZWxlY3RvcihcIi5jdXJyZW50XCIpO24mJmMobixcImN1cnJlbnRcIiksdGhpcy5zbGlkZUFuaW1hdGVPdXQoKTt2YXIgcz10aGlzLnNsaWRlc0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLmdzbGlkZVwiKVt0XTtpZih1KHMsXCJsb2FkZWRcIikpdGhpcy5zbGlkZUFuaW1hdGVJbihzLGkpLG0odGhpcy5sb2FkZXIpO2Vsc2V7cCh0aGlzLmxvYWRlcik7dmFyIGw9dGhpcy5lbGVtZW50c1t0XSxvPXtpbmRleDp0aGlzLmluZGV4LHNsaWRlOnMsc2xpZGVOb2RlOnMsc2xpZGVDb25maWc6bC5zbGlkZUNvbmZpZyxzbGlkZUluZGV4OnRoaXMuaW5kZXgsdHJpZ2dlcjpsLm5vZGUscGxheWVyOm51bGx9O3RoaXMudHJpZ2dlcihcInNsaWRlX2JlZm9yZV9sb2FkXCIsbyksbC5pbnN0YW5jZS5zZXRDb250ZW50KHMsKGZ1bmN0aW9uKCl7bShlLmxvYWRlciksZS5yZXNpemUoKSxlLnNsaWRlQW5pbWF0ZUluKHMsaSksZS50cmlnZ2VyKFwic2xpZGVfYWZ0ZXJfbG9hZFwiLG8pfSkpfXRoaXMuc2xpZGVEZXNjcmlwdGlvbj1zLnF1ZXJ5U2VsZWN0b3IoXCIuZ3NsaWRlLWRlc2NyaXB0aW9uXCIpLHRoaXMuc2xpZGVEZXNjcmlwdGlvbkNvbnRhaW5lZD10aGlzLnNsaWRlRGVzY3JpcHRpb24mJnUodGhpcy5zbGlkZURlc2NyaXB0aW9uLnBhcmVudE5vZGUsXCJnc2xpZGUtbWVkaWFcIiksdGhpcy5zZXR0aW5ncy5wcmVsb2FkJiYodGhpcy5wcmVsb2FkU2xpZGUodCsxKSx0aGlzLnByZWxvYWRTbGlkZSh0LTEpKSx0aGlzLnVwZGF0ZU5hdmlnYXRpb25DbGFzc2VzKCksdGhpcy5hY3RpdmVTbGlkZT1zfX0se2tleTpcInByZWxvYWRTbGlkZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoZTwwfHxlPnRoaXMuZWxlbWVudHMubGVuZ3RoLTEpcmV0dXJuITE7aWYoTyh0aGlzLmVsZW1lbnRzW2VdKSlyZXR1cm4hMTt2YXIgaT10aGlzLnNsaWRlc0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLmdzbGlkZVwiKVtlXTtpZih1KGksXCJsb2FkZWRcIikpcmV0dXJuITE7dmFyIG49dGhpcy5lbGVtZW50c1tlXSxzPW4udHlwZSxsPXtpbmRleDplLHNsaWRlOmksc2xpZGVOb2RlOmksc2xpZGVDb25maWc6bi5zbGlkZUNvbmZpZyxzbGlkZUluZGV4OmUsdHJpZ2dlcjpuLm5vZGUscGxheWVyOm51bGx9O3RoaXMudHJpZ2dlcihcInNsaWRlX2JlZm9yZV9sb2FkXCIsbCksXCJ2aWRlb1wiPT09c3x8XCJleHRlcm5hbFwiPT09cz9zZXRUaW1lb3V0KChmdW5jdGlvbigpe24uaW5zdGFuY2Uuc2V0Q29udGVudChpLChmdW5jdGlvbigpe3QudHJpZ2dlcihcInNsaWRlX2FmdGVyX2xvYWRcIixsKX0pKX0pLDIwMCk6bi5pbnN0YW5jZS5zZXRDb250ZW50KGksKGZ1bmN0aW9uKCl7dC50cmlnZ2VyKFwic2xpZGVfYWZ0ZXJfbG9hZFwiLGwpfSkpfX0se2tleTpcInByZXZTbGlkZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5nb1RvU2xpZGUodGhpcy5pbmRleC0xKX19LHtrZXk6XCJuZXh0U2xpZGVcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZ29Ub1NsaWRlKHRoaXMuaW5kZXgrMSl9fSx7a2V5OlwiZ29Ub1NsaWRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2lmKHRoaXMucHJldkFjdGl2ZVNsaWRlPXRoaXMuYWN0aXZlU2xpZGUsdGhpcy5wcmV2QWN0aXZlU2xpZGVJbmRleD10aGlzLmluZGV4LCF0aGlzLmxvb3AoKSYmKGU8MHx8ZT50aGlzLmVsZW1lbnRzLmxlbmd0aC0xKSlyZXR1cm4hMTtlPDA/ZT10aGlzLmVsZW1lbnRzLmxlbmd0aC0xOmU+PXRoaXMuZWxlbWVudHMubGVuZ3RoJiYoZT0wKSx0aGlzLnNob3dTbGlkZShlKX19LHtrZXk6XCJpbnNlcnRTbGlkZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOi0xO3Q8MCYmKHQ9dGhpcy5lbGVtZW50cy5sZW5ndGgpO3ZhciBpPW5ldyBWKGUsdGhpcyx0KSxuPWkuZ2V0Q29uZmlnKCkscz1vKHt9LG4pLGw9aS5jcmVhdGUoKSxyPXRoaXMuZWxlbWVudHMubGVuZ3RoLTE7cy5pbmRleD10LHMubm9kZT0hMSxzLmluc3RhbmNlPWkscy5zbGlkZUNvbmZpZz1uLHRoaXMuZWxlbWVudHMuc3BsaWNlKHQsMCxzKTt2YXIgYT1udWxsLGg9bnVsbDtpZih0aGlzLnNsaWRlc0NvbnRhaW5lcil7aWYodD5yKXRoaXMuc2xpZGVzQ29udGFpbmVyLmFwcGVuZENoaWxkKGwpO2Vsc2V7dmFyIGQ9dGhpcy5zbGlkZXNDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcIi5nc2xpZGVcIilbdF0
37dGhpcy5zbGlkZXNDb250YWluZXIuaW5zZXJ0QmVmb3JlKGwsZCl9KHRoaXMuc2V0dGluZ3MucHJlbG9hZCYmMD09dGhpcy5pbmRleCYmMD09dHx8dGhpcy5pbmRleC0xPT10fHx0aGlzLmluZGV4KzE9PXQpJiZ0aGlzLnByZWxvYWRTbGlkZSh0KSwwPT09dGhpcy5pbmRleCYmMD09PXQmJih0aGlzLmluZGV4PTEpLHRoaXMudXBkYXRlTmF2aWdhdGlvbkNsYXNzZXMoKSxhPXRoaXMuc2xpZGVzQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZ3NsaWRlXCIpW3RdLGg9dGhpcy5nZXRTbGlkZVBsYXllckluc3RhbmNlKHQpLHMuc2xpZGVOb2RlPWF9dGhpcy50cmlnZ2VyKFwic2xpZGVfaW5zZXJ0ZWRcIix7aW5kZXg6dCxzbGlkZTphLHNsaWRlTm9kZTphLHNsaWRlQ29uZmlnOm4sc2xpZGVJbmRleDp0LHRyaWdnZXI6bnVsbCxwbGF5ZXI6aH0pLEModGhpcy5zZXR0aW5ncy5zbGlkZUluc2VydGVkKSYmdGhpcy5zZXR0aW5ncy5zbGlkZUluc2VydGVkKHtpbmRleDp0LHNsaWRlOmEscGxheWVyOmh9KX19LHtrZXk6XCJyZW1vdmVTbGlkZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOi0xO2lmKGU8MHx8ZT50aGlzLmVsZW1lbnRzLmxlbmd0aC0xKXJldHVybiExO3ZhciB0PXRoaXMuc2xpZGVzQ29udGFpbmVyJiZ0aGlzLnNsaWRlc0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLmdzbGlkZVwiKVtlXTt0JiYodGhpcy5nZXRBY3RpdmVTbGlkZUluZGV4KCk9PWUmJihlPT10aGlzLmVsZW1lbnRzLmxlbmd0aC0xP3RoaXMucHJldlNsaWRlKCk6dGhpcy5uZXh0U2xpZGUoKSksdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpKSx0aGlzLmVsZW1lbnRzLnNwbGljZShlLDEpLHRoaXMudHJpZ2dlcihcInNsaWRlX3JlbW92ZWRcIixlKSxDKHRoaXMuc2V0dGluZ3Muc2xpZGVSZW1vdmVkKSYmdGhpcy5zZXR0aW5ncy5zbGlkZVJlbW92ZWQoZSl9fSx7a2V5Olwic2xpZGVBbmltYXRlSW5cIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsbj1lLnF1ZXJ5U2VsZWN0b3IoXCIuZ3NsaWRlLW1lZGlhXCIpLHM9ZS5xdWVyeVNlbGVjdG9yKFwiLmdzbGlkZS1kZXNjcmlwdGlvblwiKSxsPXtpbmRleDp0aGlzLnByZXZBY3RpdmVTbGlkZUluZGV4LHNsaWRlOnRoaXMucHJldkFjdGl2ZVNsaWRlLHNsaWRlTm9kZTp0aGlzLnByZXZBY3RpdmVTbGlkZSxzbGlkZUluZGV4OnRoaXMucHJldkFjdGl2ZVNsaWRlLHNsaWRlQ29uZmlnOk8odGhpcy5wcmV2QWN0aXZlU2xpZGVJbmRleCk/bnVsbDp0aGlzLmVsZW1lbnRzW3RoaXMucHJldkFjdGl2ZVNsaWRlSW5kZXhdLnNsaWRlQ29uZmlnLHRyaWdnZXI6Tyh0aGlzLnByZXZBY3RpdmVTbGlkZUluZGV4KT9udWxsOnRoaXMuZWxlbWVudHNbdGhpcy5wcmV2QWN0aXZlU2xpZGVJbmRleF0ubm9kZSxwbGF5ZXI6dGhpcy5nZXRTbGlkZVBsYXllckluc3RhbmNlKHRoaXMucHJldkFjdGl2ZVNsaWRlSW5kZXgpfSxvPXtpbmRleDp0aGlzLmluZGV4LHNsaWRlOnRoaXMuYWN0aXZlU2xpZGUsc2xpZGVOb2RlOnRoaXMuYWN0aXZlU2xpZGUsc2xpZGVDb25maWc6dGhpcy5lbGVtZW50c1t0aGlzLmluZGV4XS5zbGlkZUNvbmZpZyxzbGlkZUluZGV4OnRoaXMuaW5kZXgsdHJpZ2dlcjp0aGlzLmVsZW1lbnRzW3RoaXMuaW5kZXhdLm5vZGUscGxheWVyOnRoaXMuZ2V0U2xpZGVQbGF5ZXJJbnN0YW5jZSh0aGlzLmluZGV4KX07aWYobi5vZmZzZXRXaWR0aD4wJiZzJiYobShzKSxzLnN0eWxlLmRpc3BsYXk9XCJcIiksYyhlLHRoaXMuZWZmZWN0c0NsYXNzZXMpLHQpdihlLHRoaXMuc2V0dGluZ3MuY3NzRWZlY3RzW3RoaXMuc2V0dGluZ3Mub3BlbkVmZmVjdF0uaW4sKGZ1bmN0aW9uKCl7aS5zZXR0aW5ncy5hdXRvcGxheVZpZGVvcyYmaS5zbGlkZVBsYXllclBsYXkoZSksaS50cmlnZ2VyKFwic2xpZGVfY2hhbmdlZFwiLHtwcmV2OmwsY3VycmVudDpvfSksQyhpLnNldHRpbmdzLmFmdGVyU2xpZGVDaGFuZ2UpJiZpLnNldHRpbmdzLmFmdGVyU2xpZGVDaGFuZ2UuYXBwbHkoaSxbbCxvXSl9KSk7ZWxzZXt2YXIgcj10aGlzLnNldHRpbmdzLnNsaWRlRWZmZWN0LGE9XCJub25lXCIhPT1yP3RoaXMuc2V0dGluZ3MuY3NzRWZlY3RzW3JdLmluOnI7dGhpcy5wcmV2QWN0aXZlU2xpZGVJbmRleD50aGlzLmluZGV4JiZcInNsaWRlXCI9PXRoaXMuc2V0dGluZ3Muc2xpZGVFZmZlY3QmJihhPXRoaXMuc2V0dGluZ3MuY3NzRWZlY3RzLnNsaWRlQmFjay5pbiksdihlLGEsKGZ1bmN0aW9uKCl7aS5zZXR0aW5ncy5hdXRvcGxheVZpZGVvcyYmaS5zbGlkZVBsYXllclBsYXkoZSksaS50cmlnZ2VyKFwic2xpZGVfY2hhbmdlZFwiLHtwcmV2OmwsY3VycmVudDpvfSksQyhpLnNldHRpbmdzLmFmdGVyU2xpZGVDaGFuZ2UpJiZpLnNldHRpbmdzLmFmdGVyU2xpZGVDaGFuZ2UuYXBwbHkoaSxbbCxvXSl9KSl9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLnJlc2l6ZShlKX0pLDEwMCksZChlLFwiY3VycmVudFwiKX19LHtrZXk6XCJzbGlkZUFuaW1hdGVPdXRcIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLnByZXZBY3RpdmVTbGlkZSlyZXR1cm4hMTt2YXIgZT10aGlzLnByZXZBY3RpdmVTbGlkZTtjKGUsdGhpcy5lZmZlY3RzQ2xhc3NlcyksZChlLFwicHJldlwiKTt2YXIgdD10aGlzLnNldHRpbmdzLnNsaWRlRWZmZWN0LGk9XCJub25lXCIhPT10P3RoaXMuc2V0dGluZ3MuY3NzRWZlY3RzW3RdLm91dDp0O3RoaXMuc2xpZGVQbGF5ZXJQYXVzZShlKSx0aGlzLnRyaWdnZXIoXCJzbGlkZV9iZWZvcmVfY2hhbmdlXCIse3ByZXY6e2luZGV4OnRoaXMucHJldkFjdGl2ZVNsaWRlSW5kZXgsc2xpZGU6dGhpcy5wcmV2QWN0aXZlU2xpZGUsc2xpZGVOb2RlOnRoaXMucHJldkFjdGl2ZVNsaWRlLHNsaWRlSW5kZXg6dGhpcy5wcmV2QWN0aXZlU2xpZGVJbmRleCxzbGlkZUNvbmZpZzpPKHRoaXMucHJldkFjdGl2ZVNsaWRlSW5kZXgpP251bGw6dGhpcy5lbGVtZW50c1t0aGlzLnByZXZBY3RpdmVTbGlkZUluZGV4XS5zbGlkZUNvbmZpZyx0cmlnZ2VyOk8odGhpcy5wcmV2QWN0aXZlU2xpZGVJbmRleCk/bnVsbDp0aGlzLmVsZW1lbnRzW3RoaXMucHJldkFjdGl2ZVNsaWRlSW5kZXhdLm5vZGUscGxheWVyOnRoaXMuZ2V0U2xpZGVQbGF5ZXJJbnN0YW5jZSh0aGlzLnByZXZBY3RpdmVTbGlkZUluZGV4KX0sY3VycmVudDp7aW5kZXg6dGhpcy5pbmRleCxzbGlkZTp0aGlzLmFjdGl2ZVNsaWRlLHNsaWRlTm9kZTp0aGlzLmFjdGl2ZVNsaWRlLHNsaWRlSW5kZXg6dGhpcy5pbmRleCxzbGlkZUNvbmZpZzp0aGlzLmVsZW1lbnRzW3RoaXMuaW5kZXhdLnNsaWRlQ29uZmlnLHRyaWdnZXI6dGhpcy5lbGVtZW50c1t0aGlzLmluZGV4XS5ub2RlLHBsYXllcjp0aGlzLmdldFNsaWRlUGxheWVySW5zdGFuY2UodGhpcy5pbmRleCl9fSksQyh0aGlzLnNldHRpbmdzLmJlZm9yZVNsaWRlQ2hhbmdlKSYmdGhpcy5zZXR0aW5ncy5iZWZvcmVTbGlkZUNoYW5nZS5hcHBseSh0aGlzLFt7aW5kZXg6dGhpcy5wcmV2QWN0aXZlU2xpZGVJbmRleCxzbGlkZTp0aGlzLnByZXZBY3RpdmVTbGlkZSxwbGF5ZXI6dGhpcy5nZXRTbGlkZVBsYXllckluc3RhbmNlKHRoaXMucHJldkFjdGl2ZVNsaWRlSW5kZXgpfSx7aW5kZXg6dGhpcy5pbmRleCxzbGlkZTp0aGlzLmFjdGl2ZVNsaWRlLHBsYXllcjp0aGlzLmdldFNsaWRlUGxheWVySW5zdGFuY2UodGhpcy5pbmRleCl9XSksdGhpcy5wcmV2QWN0aXZlU2xpZGVJbmRleD50aGlzLmluZGV4JiZcInNsaWRlXCI9PXRoaXMuc2V0dGluZ3Muc2xpZGVFZmZlY3QmJihpPXRoaXMuc2V0dGluZ3MuY3NzRWZlY3RzLnNsaWRlQmFjay5vdXQpLHYoZSxpLChmdW5jdGlvbigpe3ZhciB0PWUucXVlcnlTZWxlY3RvcihcIi5naW5uZXItY29udGFpbmVyXCIpLGk9ZS5xdWVyeVNlbGVjdG9yKFwiLmdzbGlkZS1tZWRpYVwiKSxuPWUucXVlcnlTZWxlY3RvcihcIi5nc2xpZGUtZGVzY3JpcHRpb25cIik7dC5zdHlsZS50cmFuc2Zvcm09XCJcIixpLnN0eWxlLnRyYW5zZm9ybT1cIlwiLGMoaSxcImdyZXNldFwiKSxpLnN0eWxlLm9wYWNpdHk9XCJcIixuJiYobi5zdHlsZS5vcGFjaXR5PVwiXCIpLGMoZSxcInByZX
3ZcIil9KSl9fSx7a2V5OlwiZ2V0QWxsUGxheWVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlkZW9QbGF5ZXJzfX0se2tleTpcImdldFNsaWRlUGxheWVySW5zdGFuY2VcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1cImd2aWRlb1wiK2UsaT10aGlzLmdldEFsbFBsYXllcnMoKTtyZXR1cm4hKCFQKGksdCl8fCFpW3RdKSYmaVt0XX19LHtrZXk6XCJzdG9wU2xpZGVWaWRlb1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKEUoZSkpe3ZhciB0PWUucXVlcnlTZWxlY3RvcihcIi5ndmlkZW8td3JhcHBlclwiKTt0JiYoZT10LmdldEF0dHJpYnV0ZShcImRhdGEtaW5kZXhcIikpfWNvbnNvbGUubG9nKFwic3RvcFNsaWRlVmlkZW8gaXMgZGVwcmVjYXRlZCwgdXNlIHNsaWRlUGxheWVyUGF1c2VcIik7dmFyIGk9dGhpcy5nZXRTbGlkZVBsYXllckluc3RhbmNlKGUpO2kmJmkucGxheWluZyYmaS5wYXVzZSgpfX0se2tleTpcInNsaWRlUGxheWVyUGF1c2VcIix2YWx1ZTpmdW5jdGlvbihlKXtpZihFKGUpKXt2YXIgdD1lLnF1ZXJ5U2VsZWN0b3IoXCIuZ3ZpZGVvLXdyYXBwZXJcIik7dCYmKGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWluZGV4XCIpKX12YXIgaT10aGlzLmdldFNsaWRlUGxheWVySW5zdGFuY2UoZSk7aSYmaS5wbGF5aW5nJiZpLnBhdXNlKCl9fSx7a2V5OlwicGxheVNsaWRlVmlkZW9cIix2YWx1ZTpmdW5jdGlvbihlKXtpZihFKGUpKXt2YXIgdD1lLnF1ZXJ5U2VsZWN0b3IoXCIuZ3ZpZGVvLXdyYXBwZXJcIik7dCYmKGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWluZGV4XCIpKX1jb25zb2xlLmxvZyhcInBsYXlTbGlkZVZpZGVvIGlzIGRlcHJlY2F0ZWQsIHVzZSBzbGlkZVBsYXllclBsYXlcIik7dmFyIGk9dGhpcy5nZXRTbGlkZVBsYXllckluc3RhbmNlKGUpO2kmJiFpLnBsYXlpbmcmJmkucGxheSgpfX0se2tleTpcInNsaWRlUGxheWVyUGxheVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKCFLfHxudWxsIT09KHQ9dGhpcy5zZXR0aW5ncy5wbHlyLmNvbmZpZykmJnZvaWQgMCE9PXQmJnQubXV0ZWQpe2lmKEUoZSkpe3ZhciBpPWUucXVlcnlTZWxlY3RvcihcIi5ndmlkZW8td3JhcHBlclwiKTtpJiYoZT1pLmdldEF0dHJpYnV0ZShcImRhdGEtaW5kZXhcIikpfXZhciBuPXRoaXMuZ2V0U2xpZGVQbGF5ZXJJbnN0YW5jZShlKTtuJiYhbi5wbGF5aW5nJiYobi5wbGF5KCksdGhpcy5zZXR0aW5ncy5hdXRvZm9jdXNWaWRlb3MmJm4uZWxlbWVudHMuY29udGFpbmVyLmZvY3VzKCkpfX19LHtrZXk6XCJzZXRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5zZXR0aW5ncy5lbGVtZW50cz0hMTt2YXIgaT1bXTtlJiZlLmxlbmd0aCYmcihlLChmdW5jdGlvbihlLG4pe3ZhciBzPW5ldyBWKGUsdCxuKSxsPXMuZ2V0Q29uZmlnKCkscj1vKHt9LGwpO3Iuc2xpZGVDb25maWc9bCxyLmluc3RhbmNlPXMsci5pbmRleD1uLGkucHVzaChyKX0pKSx0aGlzLmVsZW1lbnRzPWksdGhpcy5saWdodGJveE9wZW4mJih0aGlzLnNsaWRlc0NvbnRhaW5lci5pbm5lckhUTUw9XCJcIix0aGlzLmVsZW1lbnRzLmxlbmd0aCYmKHIodGhpcy5lbGVtZW50cywoZnVuY3Rpb24oKXt2YXIgZT15KHQuc2V0dGluZ3Muc2xpZGVIVE1MKTt0LnNsaWRlc0NvbnRhaW5lci5hcHBlbmRDaGlsZChlKX0pKSx0aGlzLnNob3dTbGlkZSgwLCEwKSkpfX0se2tleTpcImdldEVsZW1lbnRJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSExO3JldHVybiByKHRoaXMuZWxlbWVudHMsKGZ1bmN0aW9uKGksbil7aWYoUChpLFwibm9kZVwiKSYmaS5ub2RlPT1lKXJldHVybi
3B0PW4sITB9KSksdH19LHtrZXk6XCJnZXRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PVtdO3RoaXMuZWxlbWVudHM9dGhpcy5lbGVtZW50cz90aGlzLmVsZW1lbnRzOltdLCFPKHRoaXMuc2V0dGluZ3MuZWxlbWVudHMpJiZBKHRoaXMuc2V0dGluZ3MuZWxlbWVudHMpJiZ0aGlzLnNldHRpbmdzLmVsZW1lbnRzLmxlbmd0aCYmcih0aGlzLnNldHRpbmdzLmVsZW1lbnRzLChmdW5jdGlvbihpLG4pe3ZhciBzPW5ldyBWKGksZSxuKSxsPXMuZ2V0Q29uZmlnKCkscj1vKHt9LGwpO3Iubm9kZT0hMSxyLmluZGV4PW4sci5pbnN0YW5jZT1zLHIuc2xpZGVDb25maWc9bCx0LnB1c2gocil9KSk7dmFyIGk9ITE7cmV0dXJuIHRoaXMuZ2V0U2VsZWN0b3IoKSYmKGk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0aGlzLmdldFNlbGVjdG9yKCkpKSxpPyhyKGksKGZ1bmN0aW9uKGksbil7dmFyIHM9bmV3IFYoaSxlLG4pLGw9cy5nZXRDb25maWcoKSxyPW8oe30sbCk7ci5ub2RlPWksci5pbmRleD1uLHIuaW5zdGFuY2U9cyxyLnNsaWRlQ29uZmlnPWwsci5nYWxsZXJ5PWkuZ2V0QXR0cmlidXRlKFwiZGF0YS1nYWxsZXJ5XCIpLHQucHVzaChyKX0pKSx0KTp0fX0se2tleTpcImdldEdhbGxlcnlFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5nYWxsZXJ5PT10fSkpfX0se2tleTpcImdldFNlbGVjdG9yXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5zZXR0aW5ncy5lbGVtZW50cyYmKHRoaXMuc2V0dGluZ3Muc2VsZWN0b3ImJlwiZGF0YS1cIj09dGhpcy5zZXR0aW5ncy5zZWxlY3Rvci5zdWJzdHJpbmcoMCw1KT9cIipbXCIuY29uY2F0KHRoaXMuc2V0dGluZ3Muc2VsZWN0b3IsXCJdXCIpOnRoaXMuc2V0dGluZ3Muc2VsZWN0b3IpfX0se2tleTpcImdldEFjdGl2ZVNsaWRlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zbGlkZXNDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcIi5nc2xpZGVcIilbdGhpcy5pbmRleF19fSx7a2V5OlwiZ2V0QWN0aXZlU2xpZGVJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXh9fSx7a2V5OlwiZ2V0QW5pbWF0aW9uQ2xhc3Nlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMuc2V0dGluZ3MuY3NzRWZlY3RzKWlmKHRoaXMuc2V0dGluZ3MuY3NzRWZlY3RzLmhhc093blByb3BlcnR5KHQpKXt2YXIgaT10aGlzLnNldHRpbmdzLmNzc0VmZWN0c1t0XTtlLnB1c2goXCJnXCIuY29uY2F0KGkuaW4pKSxlLnB1c2goXCJnXCIuY29uY2F0KGkub3V0KSl9cmV0dXJuIGUuam9pbihcIiBcIil9fSx7a2V5OlwiYnVpbGRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5idWlsdClyZXR1cm4hMTt2YXIgdD1kb2N1bWVudC5ib2R5LmNoaWxkTm9kZXMsaT1bXTtyKHQsKGZ1bmN0aW9uKGUpe2UucGFyZW50Tm9kZT09ZG9jdW1lbnQuYm9keSYmXCIjXCIhPT1lLm5vZGVOYW1lLmNoYXJBdCgwKSYmZS5oYXNBdHRyaWJ1dGUmJiFlLmhhc0F0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpJiYoaS5wdXNoKGUpLGUuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIikpfSkpO3ZhciBuPVAodGhpcy5zZXR0aW5ncy5zdmcsXCJuZXh0XCIpP3RoaXMuc2V0dGluZ3Muc3ZnLm5leHQ6XCJcIixzPVAodGhpcy5zZXR0aW5ncy5zdmcsXCJwcmV2XCIpP3RoaXMuc2V0dGluZ3Muc3ZnLnByZXY6XCJcIixsPVAodGhpcy5zZXR0aW5ncy5zdmcsXCJjbG9zZVwiKT90aGlzLnNldHRpbmdzLnN2Zy5jbG9zZTpcIlwiLG89dGhpcy5zZXR0aW5ncy5saWdodGJveEhUTUw7bz15KG89KG89KG89by5yZXBsYWNlKC97bmV4dFNWR30vZyxuKSkucmVwbGFjZSgve3ByZXZTVkd9L2cscykpLnJlcGxhY2UoL3tjbG9zZVNWR30vZyxsKSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvKTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdsaWdodGJveC1ib2R5XCIpO3RoaXMubW9kYWw9YTt2YXIgYz1hLnF1ZXJ5U2VsZWN0b3IoXCIuZ2Nsb3NlXCIpO3RoaXMucHJldkJ1dHRvbj1hLnF1ZXJ5U2VsZWN0b3IoXCIuZ3ByZXZcIiksdGhpcy5uZXh0QnV0dG9uPWEucXVlcnlTZWxlY3RvcihcIi5nbmV4dFwiKSx0aGlzLm92ZXJsYXk9YS5xdWVyeVNlbGVjdG9yKFwiLmdvdmVybGF5XCIpLHRoaXMubG9hZGVyPWEucXVlcnlTZWxlY3RvcihcIi5nbG9hZGVyXCIpLHRoaXMuc2xpZGVzQ29udGFpbmVyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ2xpZ2h0Ym94LXNsaWRlclwiKSx0aGlzLmJvZHlIaWRkZW5DaGlsZEVsbXM9aSx0aGlzLmV2ZW50cz17fSxkKHRoaXMubW9kYWwsXCJnbGlnaHRib3gtXCIrdGhpcy5zZXR0aW5ncy5za2luKSx0aGlzLnNldHRpbmdzLmNsb3NlQnV0dG9uJiZjJiYodGhpcy5ldmVudHMuY2xvc2U9aChcImNsaWNrXCIse29uRWxlbWVudDpjLHdpdGhDYWxsYmFjazpmdW5jdGlvbih0LGkpe3QucHJldmVudERlZmF1bHQoKSxlLmNsb3NlKCl9fSkpLGMmJiF0aGlzLnNldHRpbmdzLmNsb3NlQnV0dG9uJiZjLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyksdGhpcy5uZXh0QnV0dG9uJiYodGhpcy5ldmVudHMubmV4dD1oKFwiY2xpY2tcIix7b25FbGVtZW50OnRoaXMubmV4dEJ1dHRvbix3aXRoQ2FsbGJhY2s6ZnVuY3Rpb24odCxpKXt0LnByZXZlbnREZWZhdWx0KCksZS5uZXh0U2xpZGUoKX19KSksdGhpcy5wcmV2QnV0dG9uJiYodGhpcy5ldmVudHMucHJldj1oKFwiY2xpY2tcIix7b25FbGVtZW50OnRoaXMucHJldkJ1dHRvbix3aXRoQ2FsbGJhY2s6ZnVuY3Rpb24odCxpKXt0LnByZXZlbnREZWZhdWx0KCksZS5wcmV2U2xpZGUoKX19KSksdGhpcy5zZXR0aW5ncy5jbG9zZU9uT3V0c2lkZUNsaWNrJiYodGhpcy5ldmVudHMub3V0Q2xvc2U9aChcImNsaWNrXCIse29uRWxlbWVudDphLHdpdGhDYWxsYmFjazpmdW5jdGlvbih0LGkpe2UucHJldmVudE91dHNpZGVDbGlja3x8dShkb2N1bWVudC5ib2R5LFwiZ2xpZ2h0Ym94LW1vYmlsZVwiKXx8Zyh0LnRhcmdldCxcIi5naW5uZXItY29udGFpbmVyXCIpfHxnKHQudGFyZ2V0LFwiLmdidG5cIil8fHUodC50YXJnZXQsXCJnbmV4dFwiKXx8dSh0LnRhcmdldCxcImdwcmV2XCIpfHxlLmNsb3NlKCl9fSkpLHIodGhpcy5lbGVtZW50cywoZnVuY3Rpb24odCxpKXtlLnNsaWRlc0NvbnRhaW5lci5hcHBlbmRDaGlsZCh0Lmluc3RhbmNlLmNyZWF0ZSgpKSx0LnNsaWRlTm9kZT1lLnNsaWRlc0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLmdzbGlkZVwiKVtpXX0pKSxRJiZkKGRvY3VtZW50LmJvZHksXCJnbGlnaHRib3gtdG91Y2hcIiksdGhpcy5ldmVudHMucmVzaXplPWgoXCJyZXNpemVcIix7b25FbGVtZW50OndpbmRvdyx3aXRoQ2FsbGJhY2s6ZnVuY3Rpb24oKXtlLnJlc2l6ZSgpfX0pLHRoaXMuYnVpbHQ9ITB9fSx7a2V5OlwicmVzaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtpZigoZT1lfHx0aGlzLmFjdGl2ZVNsaWRlKSYmIXUoZSxcInpvb21lZFwiKSl7dmFyIHQ9eCgpLGk9ZS5xdWVyeVNlbGVjdG9yKFwiLmd2aWRlby13cmFwcGVyXCIpLG49ZS5xdWVyeVNlbGVjdG9yKFwiLmdzbGlkZS1pbWFnZVwiKSxzPXRoaXMuc2xpZGVEZXNjcmlwdGlvbixsPXQud2lkdGgsbz10LmhlaWdodDtpZihsPD03Njg/ZChkb2N1bWVudC5ib2R5LFwiZ2xpZ2h0Ym94LW1vYmlsZVwiKTpjKGRvY3VtZW50LmJvZHksXCJnbGlnaHRib3gtbW9iaWxlXCIpLGl8fG4pe3ZhciByPSExO2lmKHMmJih1KHMsXCJkZXNjcmlwdGlvbi1ib3R0b21cIil8fHUocyxcImRlc2NyaXB0aW9uLXRvcFwiKSkmJiF1KHMsXCJnYWJzb2x1dGVcIikmJihyPSEwKSxuKWlmKGw8PTc2OCluLnF1ZXJ5U2VsZWN0b3IoXCJpbWdcIik7ZWxzZSBpZihyKXt2YXIgYS
3xoLGc9cy5vZmZzZXRIZWlnaHQsdj1uLnF1ZXJ5U2VsZWN0b3IoXCJpbWdcIiksZj1udWxsPT09KGE9dGhpcy5lbGVtZW50c1t0aGlzLmluZGV4XSl8fHZvaWQgMD09PWE/dm9pZCAwOmEubm9kZSxwPVwiMTAwdmhcIjtmJiYocD1udWxsIT09KGg9Zi5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhlaWdodFwiKSkmJnZvaWQgMCE9PWg/aDpwKSx2LnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJtYXgtaGVpZ2h0OiBjYWxjKFwiLmNvbmNhdChwLFwiIC0gXCIpLmNvbmNhdChnLFwicHgpXCIpKSxzLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJtYXgtd2lkdGg6IFwiLmNvbmNhdCh2Lm9mZnNldFdpZHRoLFwicHg7XCIpKX1pZihpKXt2YXIgbT1QKHRoaXMuc2V0dGluZ3MucGx5ci5jb25maWcsXCJyYXRpb1wiKT90aGlzLnNldHRpbmdzLnBseXIuY29uZmlnLnJhdGlvOlwiXCI7aWYoIW0pe3ZhciB5PWkuY2xpZW50V2lkdGgsYj1pLmNsaWVudEhlaWdodCxTPXkvYjttPVwiXCIuY29uY2F0KHkvUyxcIjpcIikuY29uY2F0KGIvUyl9dmFyIHc9bS5zcGxpdChcIjpcIiksVD10aGlzLnNldHRpbmdzLnZpZGVvc1dpZHRoLEM9dGhpcy5zZXR0aW5ncy52aWRlb3NXaWR0aCxrPShDPXooVCl8fC0xIT09VC5pbmRleE9mKFwicHhcIik/cGFyc2VJbnQoVCk6LTEhPT1ULmluZGV4T2YoXCJ2d1wiKT9sKnBhcnNlSW50KFQpLzEwMDotMSE9PVQuaW5kZXhPZihcInZoXCIpP28qcGFyc2VJbnQoVCkvMTAwOi0xIT09VC5pbmRleE9mKFwiJVwiKT9sKnBhcnNlSW50KFQpLzEwMDpwYXJzZUludChpLmNsaWVudFdpZHRoKSkvKHBhcnNlSW50KHdbMF0pL3BhcnNlSW50KHdbMV0pKTtpZihrPU1hdGguZmxvb3IoayksciYmKG8tPXMub2Zmc2V0SGVpZ2h0KSxDPmx8fGs+b3x8bzxrJiZsPkMpe3ZhciBFPWkub2Zmc2V0V2lkdGgsQT1pLm9mZnNldEhlaWdodCxMPW8vQSxJPXt3aWR0aDpFKkwsaGVpZ2h0OkEqTH07aS5wYXJlbnROb2RlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJtYXgtd2lkdGg6IFwiLmNvbmNhdChJLndpZHRoLFwicHhcIikpLHImJnMuc2V0QXR0cmlidXRlKFwic3R5bGVcIixcIm1heC13aWR0aDogXCIuY29uY2F0KEkud2lkdGgsXCJweDtcIikpfWVsc2UgaS5wYXJlbnROb2RlLnN0eWxlLm1heFdpZHRoPVwiXCIuY29uY2F0KFQpLHImJnMuc2V0QXR0cmlidXRlKFwic3R5bGVcIixcIm1heC13aWR0aDogXCIuY29uY2F0KFQsXCI7XCIpKX19fX19LHtrZXk6XCJyZWxvYWRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaW5pdCgpfX0se2tleTpcInVwZGF0ZU5hdmlnYXRpb25DbGFzc2VzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxvb3AoKTtjKHRoaXMubmV4dEJ1dHRvbixcImRpc2FibGVkXCIpLGModGhpcy5wcmV2QnV0dG9uLFwiZGlzYWJsZWRcIiksMD09dGhpcy5pbmRleCYmdGhpcy5lbGVtZW50cy5sZW5ndGgtMT09MD8oZCh0aGlzLnByZXZCdXR0b24sXCJkaXNhYmxlZFwiKSxkKHRoaXMubmV4dEJ1dHRvbixcImRpc2FibGVkXCIpKTowIT09dGhpcy5pbmRleHx8ZT90aGlzLmluZGV4IT09dGhpcy5lbGVtZW50cy5sZW5ndGgtMXx8ZXx8ZCh0aGlzLm5leHRCdXR0b24sXCJkaXNhYmxlZFwiKTpkKHRoaXMucHJldkJ1dHRvbixcImRpc2FibGVkXCIpfX0se2tleTpcImxvb3BcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPVAodGhpcy5zZXR0aW5ncyxcImxvb3BBdEVuZFwiKT90aGlzLnNldHRpbmdzLmxvb3BBdEVuZDpudWxsO3JldHVybiBlPVAodGhpcy5zZXR0aW5ncyxcImxvb3BcIik/dGhpcy5zZXR0aW5ncy5sb29wOmUsZX19LHtrZXk6XCJjbG9zZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighdGhpcy5saWdodGJveE9wZW4pe2lmKHRoaXMuZXZlbnRzKXtmb3IodmFyIHQgaW4gdGhpcy5ldmVudHMpdGhpcy5ldmVudHMuaGFzT3duUHJvcGVydHkodCkmJnRoaXMuZXZlbnRzW3RdLmRlc3Ryb3koKTt0aGlzLmV2ZW50cz1udWxsfXJldHVybiExfWlmKHRoaXMuY2xvc2luZylyZXR1cm4hMTt0aGlzLmNsb3Npbmc9ITAsdGhpcy5zbGlkZVBsYXllclBhdXNlKHRoaXMuYWN0aXZlU2xpZGUpLHRoaXMuZnVsbEVsZW1lbnRzTGlzdCYmKHR
3oaXMuZWxlbWVudHM9dGhpcy5mdWxsRWxlbWVudHNMaXN0KSx0aGlzLmJvZHlIaWRkZW5DaGlsZEVsbXMubGVuZ3RoJiZyKHRoaXMuYm9keUhpZGRlbkNoaWxkRWxtcywoZnVuY3Rpb24oZSl7ZS5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKX0pKSxkKHRoaXMubW9kYWwsXCJnbGlnaHRib3gtY2xvc2luZ1wiKSx2KHRoaXMub3ZlcmxheSxcIm5vbmVcIj09dGhpcy5zZXR0aW5ncy5vcGVuRWZmZWN0P1wibm9uZVwiOnRoaXMuc2V0dGluZ3MuY3NzRWZlY3RzLmZhZGUub3V0KSx2KHRoaXMuYWN0aXZlU2xpZGUsdGhpcy5zZXR0aW5ncy5jc3NFZmVjdHNbdGhpcy5zZXR0aW5ncy5jbG9zZUVmZmVjdF0ub3V0LChmdW5jdGlvbigpe2lmKGUuYWN0aXZlU2xpZGU9bnVsbCxlLnByZXZBY3RpdmVTbGlkZUluZGV4PW51bGwsZS5wcmV2QWN0aXZlU2xpZGU9bnVsbCxlLmJ1aWx0PSExLGUuZXZlbnRzKXtmb3IodmFyIHQgaW4gZS5ldmVudHMpZS5ldmVudHMuaGFzT3duUHJvcGVydHkodCkmJmUuZXZlbnRzW3RdLmRlc3Ryb3koKTtlLmV2ZW50cz1udWxsfXZhciBpPWRvY3VtZW50LmJvZHk7YyhlZSxcImdsaWdodGJveC1vcGVuXCIpLGMoaSxcImdsaWdodGJveC1vcGVuIHRvdWNoaW5nIGdkZXNjLW9wZW4gZ2xpZ2h0Ym94LXRvdWNoIGdsaWdodGJveC1tb2JpbGUgZ3Njcm9sbGJhci1maXhlclwiKSxlLm1vZGFsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZS5tb2RhbCksZS50cmlnZ2VyKFwiY2xvc2VcIiksQyhlLnNldHRpbmdzLm9uQ2xvc2UpJiZlLnNldHRpbmdzLm9uQ2xvc2UoKTt2YXIgbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmdjc3Mtc3R5bGVzXCIpO24mJm4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxlLmxpZ2h0Ym94T3Blbj0hMSxlLmNsb3Npbmc9bnVsbH0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCksdGhpcy5jbGVhckFsbEV2ZW50cygpLHRoaXMuYmFzZUV2ZW50cyYmdGhpcy5iYXNlRXZlbnRzLmRlc3Ryb3koKX19LHtrZXk6XCJvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtpZighZXx8IUModCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV2ZW50IG5hbWUgYW5kIGNhbGxiYWNrIG11c3QgYmUgZGVmaW5lZFwiKTt0aGlzLmFwaUV2ZW50cy5wdXNoKHtldnQ6ZSxvbmNlOmksY2FsbGJhY2s6dH0pfX0se2tleTpcIm9uY2VcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMub24oZSx0LCEwKX19LHtrZXk6XCJ0cmlnZ2VyXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLG49W107cih0aGlzLmFwaUV2ZW50cywoZnVuY3Rpb24odCxzKXt2YXIgbD10LmV2dCxvPXQub25jZSxyPXQuY2FsbGJhY2s7bD09ZSYmKHIoaSksbyYmbi5wdXNoKHMpKX0pKSxuLmxlbmd0aCYmcihuLChmdW5jdGlvbihlKXtyZXR1cm4gdC5hcGlFdmVudHMuc3BsaWNlKGUsMSl9KSl9fSx7a2V5OlwiY2xlYXJBbGxFdmVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYXBpRXZlbnRzLnNwbGljZSgwLHRoaXMuYXBpRXZlbnRzLmxlbmd0aCl9fSx7a2V5OlwidmVyc2lvblwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuXCIzLjMuMVwifX1dKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1uZXcgaWUoZSk7cmV0dXJuIHQuaW5pdCgpLHR9fSkpOyIsIi8qKlxuICogVmlvbGF0b3IgTm90aWZpY2F0aW9ucyBIYW5kbGVyXG4gKiBIYW5kbGVzIFwic2hvdyBvbmNlXCIgZnVuY3Rpb25hbGl0eSB1c2luZyBjb29raWVzIGZvciBCb290c3RyYXAgYWxlcnRzXG4gKi9cbihmdW5jdGlvbigpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFdhaXQgZm9yIERPTSB0byBiZSByZWFkeVxuICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRWaW9sYXRvcnMpO1xuICB9IGVsc2Uge1xuICAgIGluaXRWaW9sYXRvcnMoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRWaW9sYXRvcnMoKSB7XG4gICAgY29uc3QgdmlvbGF0b3JzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnZpb2xhdG9yc19fdmlvbGF0b3JbZGF0YS1jb29raWVuYW1lXScpO1xuICAgIFxuICAgIHZpb2xhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKHZpb2xhdG9yKSB7XG4gICAgICBjb25zdCBjb29raWVOYW1lID0gdmlvbGF0b3IuZ2V0QXR0cmlidXRlKCdkYXRhLWNvb2tpZW5hbWUnKTtcbiAgICAgIFxuICAgICAgLy8gSGlkZSBpZiBjb29raWUgZXhpc3RzXG4gICAgICBpZiAoZ2V0Q29va2llKGNvb2tpZU5hbWUpKSB7XG4gICAgICAgIHZpb2xhdG9yLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gY2xvc2UgYnV0dG9uXG4gICAgICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gdmlvbGF0b3IucXVlcnlTZWxlY3RvcignLmJ0bi1jbG9zZScpO1xuICAgICAgICBpZiAoY2xvc2VCdXR0b24pIHtcbiAgICAgICAgICBjbG9zZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgc2V0Q29va2llKGNvb2tpZU5hbWUsICd0cnVlJywgMzY1KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0Q29va2llKG5hbWUsIHZhbHVlLCBkYXlzKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgKGRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwKSk7XG4gICAgY29uc3QgZXhwaXJlcyA9IFwiZXhwaXJlcz1cIiArIGRhdGUudG9VVENTdHJpbmcoKTtcbiAgICBkb2N1bWVudC5jb29raWUgPSBuYW1lICsgXCI9XCIgKyB2YWx1ZSArIFwiO1wiICsgZXhwaXJlcyArIFwiO3BhdGg9L1wiO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Q29va2llKG5hbWUpIHtcbiAgICBjb25zdCBuYW1lRVEgPSBuYW1lICsgXCI9XCI7XG4gICAgY29uc3QgY2EgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYyA9IGNhW2ldO1xuICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09PSAnICcpIGMgPSBjLnN1YnN0cmluZygxLCBjLmxlbmd0aCk7XG4gICAgICBpZiAoYy5pbmRleE9mKG5hbWVFUSkgPT09IDApIHJldHVybi
3BjLnN1YnN0cmluZyhuYW1lRVEubGVuZ3RoLCBjLmxlbmd0aCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59KSgpO1xuIiwiLyoqXG4gKiBQb3B1cCBNb2RhbCBIYW5kbGVyXG4gKiBIYW5kbGVzIFwic2hvdyBvbmNlXCIgZnVuY3Rpb25hbGl0eSB1c2luZyBjb29raWVzIGZvciBCb290c3RyYXAgbW9kYWxzXG4gKi9cbihmdW5jdGlvbigpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFdhaXQgZm9yIERPTSB0byBiZSByZWFkeVxuICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRQb3B1cHMpO1xuICB9IGVsc2Uge1xuICAgIGluaXRQb3B1cHMoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRQb3B1cHMoKSB7XG4gICAgLy8gQ2hlY2sgaWYgQm9vdHN0cmFwIGlzIGxvYWRlZFxuICAgIGlmICh0eXBlb2YgYm9vdHN0cmFwID09PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS53YXJuKCdCb290c3RyYXAgbm90IGxvYWRlZCwgcG9wdXAgbW9kYWxzIHdpbGwgbm90IGZ1bmN0aW9uJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9wdXBNb2RhbHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucG9wdXBfX21vZGFsJyk7XG4gICAgXG4gICAgcG9wdXBNb2RhbHMuZm9yRWFjaChmdW5jdGlvbihtb2RhbCkge1xuICAgICAgY29uc3QgY29va2llTmFtZSA9IG1vZGFsLmdldEF0dHJpYnV0ZSgnZGF0YS1jb29raWVuYW1lJyk7XG5cbiAgICAgIC8vIE9ubHkgc2hvdyBwb3B1cCBpZiBubyBjb29raWUgZXhpc3RzIG9yIFNob3dPbmNlIGlzIG5vdCBzZXRcbiAgICAgIGlmICghY29va2llTmFtZSB8fCAhZ2V0Q29va2llKGNvb2tpZU5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGJvb3RzdHJhcE1vZGFsID0gbmV3IGJvb3RzdHJhcC5Nb2RhbChtb2RhbCwge1xuICAgICAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcbiAgICAgICAgICBrZXlib2FyZDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICAvLyBTaG93IHRoZSBtb2RhbFxuICAgICAgICBib290c3RyYXBNb2RhbC5zaG93KCk7XG5cbiAgICAgICAgLy8gSGFuZGxlIG1vZGFsIGNsb3NlIGV2ZW50XG4gICAgICAgIG1vZGFsLmFkZEV2ZW50TGlzdGVuZXIoJ2hpZGRlbi5icy5tb2RhbCcsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgLy8gU2V0IGNvb2tpZSB3aGVuIG1vZGFsIGlzIGNsb3NlZFxuICAgICAgICAgIGlmIChjb29raWVOYW1lKSB7XG4gICAgICAgICAgICBzZXRDb29raWUoY29va2llTmFtZSwgJ3RydWUnLCAzNjUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICAvLyBQcm9wZXJseSBkaXNwb3NlIG9mIHRoZSBtb2RhbCBpbnN0YW5jZSB0byByZW1vdmUgYmFja2Ryb3BcbiAgICAgICAgICBib290c3RyYXBNb2RhbC5kaXNwb3NlKCk7XG4gICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldENvb2tpZShuYW1lLCB2YWx1ZSwgZGF5cykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpO1xuICAgIGNvbnN0IGV4cGlyZXMgPSBcImV4cGlyZXM9XCIgKyBkYXRlLnRvVVRDU3RyaW5nKCk7XG4gICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArIFwiPVwiICsgdmFsdWUgKyBcIjtcIiArIGV4cGlyZXMgKyBcIjtwYXRoPS9cIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldENvb2tpZShuYW1lKSB7XG4gICAgY29uc3QgbmFtZUVRID0gbmFtZSArIFwiPVwiO1xuICAgIGNvbnN0IGNhID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYS5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGMgPSBjYVtpXTtcbiAgICAgIHdoaWxlIChjLmNoYXJBdCgwKSA9PT0gJyAnKSBjID0gYy5zdWJzdHJpbmcoMSwgYy5sZW5ndGgpO1xuICAgICAgaWYgKGMuaW5kZXhPZihuYW1lRVEpID09PSAwKSByZXR1cm4gYy5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCwgYy5sZW5ndGgpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufSkoKTtcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybi
3BnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJleHBvcnQgdmFyIHRvcCA9ICd0b3AnO1xuZXhwb3J0IHZhciBib3R0b20gPSAnYm90dG9tJztcbmV4cG9ydCB2YXIgcmlnaHQgPSAncmlnaHQnO1xuZXhwb3J0IHZhciBsZWZ0ID0gJ2xlZnQnO1xuZXhwb3J0IHZhciBhdXRvID0gJ2F1dG8nO1xuZXhwb3J0IHZhciBiYXNlUGxhY2VtZW50cyA9IFt0b3AsIGJvdHRvbSwgcmlnaHQsIGxlZnRdO1xuZXhwb3J0IHZhciBzdGFydCA9ICdzdGFydCc7XG5leHBvcnQgdmFyIGVuZCA9ICdlbmQnO1xuZXhwb3J0IHZhciBjbGlwcGluZ1BhcmVudHMgPSAnY2xpcHBpbmdQYXJlbnRzJztcbmV4cG9ydCB2YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xuZXhwb3J0IHZhciBwb3BwZXIgPSAncG9wcGVyJztcbmV4cG9ydCB2YXIgcmVmZXJlbmNlID0gJ3JlZmVyZW5jZSc7XG5leHBvcnQgdmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG5leHBvcnQgdmFyIGJlZm9yZVJlYWQgPSAnYmVmb3JlUmVhZCc7XG5leHBvcnQgdmFyIHJlYWQgPSAncmVhZCc7XG5leHBvcnQgdmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG5leHBvcnQgdmFyIGJlZm9yZU1haW4gPSAnYmVmb3JlTWFpbic7XG5leHBvcnQgdmFyIG1haW4gPSAnbWFpbic7XG5leHBvcnQgdmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbmV4cG9ydCB2YXIgYmVmb3JlV3JpdGUgPSAnYmVmb3JlV3JpdGUnO1xuZXhwb3J0IHZhciB3cml0ZSA9ICd3cml0ZSc7XG5leHBvcnQgdmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG5leHBvcnQgdmFyIG1vZGlmaWVyUGhhc2VzID0gW2JlZm9yZVJlYWQsIHJlYWQsIGFmdGVyUmVhZCwgYmVmb3JlTWFpbiwgbWFpbiwgYWZ0ZXJNYWluLCBiZWZvcmVXcml0ZSwgd3JpdGUsIGFmdGVyV3JpdGVdOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBUaGlzIG1vZGlmaWVyIHRha2VzIHRoZSBzdHlsZXMgcHJlcGFyZWQgYnkgdGhlIGBjb21wdXRlU3R5bGVzYCBtb2RpZmllclxuLy8gYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgSFRNTEVsZW1lbnRzIHN1Y2ggYXMgcG9wcGVyIGFuZCBhcnJvd1xuXG5mdW5jdGlvbiBhcHBseVN0eWxlcyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGU7XG4gIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHN0eWxlID0gc3RhdGUuc3R5bGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEZsb3cgZG9lc24ndCBzdXBwb3J0IHRvIGV4dGVuZCB0aGlzIHByb3BlcnR5LCBidXQgaXQncyB0aGUgbW9zdFxuICAgIC8vIGVmZmVjdGl2ZSB3YXkgdG8gYXBwbHkgc3R5bGVzIHRvIGFuIEhUTUxFbGVtZW50XG4gICAgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdXG5cblxuICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSA9PT0gdHJ1ZSA/ICcnIDogdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlO1xuICB2YXIgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICBwb3BwZXI6IHtcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCcsXG4gICAgICBtYXJnaW46ICcwJ1xuICAgIH0sXG4gICAgYXJyb3c6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgfSxcbiAgICByZWZlcmVuY2U6IHt9XG4gIH07XG4gIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLCBpbml0aWFsU3R5bGVzLnBvcHBlcik7XG4gIHN0YXRlLnN0eWxlcyA9IGluaXRpYWxTdHlsZXM7XG5cbiAgaWYgKHN0YXRlLmVsZW1lbnRzLmFycm93KSB7XG4gICAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5hcnJvdy5zdHlsZSwgaW5pdGlhbFN0eWxlcy5hcnJvdyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2Y
3XIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdO1xuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgICAgdmFyIHN0eWxlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHN0YXRlLnN0eWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHN0YXRlLnN0eWxlc1tuYW1lXSA6IGluaXRpYWxTdHlsZXNbbmFtZV0pOyAvLyBTZXQgYWxsIHZhbHVlcyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gdW5zZXQgdGhlbVxuXG4gICAgICB2YXIgc3R5bGUgPSBzdHlsZVByb3BlcnRpZXMucmVkdWNlKGZ1bmN0aW9uIChzdHlsZSwgcHJvcGVydHkpIHtcbiAgICAgICAgc3R5bGVbcHJvcGVydHldID0gJyc7XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH0sIHt9KTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogYXBwbHlTdHlsZXMsXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ11cbn07IiwiaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VUFTdHJpbmcoKSB7XG4gIHZhciB1YURhdGEgPSBuYXZpZ2F0b3IudXNlckFnZW50RGF0YTtcblxuICBpZiAodWFEYXRhICE9IG51bGwgJiYgdWFEYXRhLmJyYW5kcyAmJiBBcnJheS5pc0FycmF5KHVhRGF0YS5icmFuZHMpKSB7XG4gICAgcmV0dXJuIHVhRGF0YS5icmFuZHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5icmFuZCArIFwiL1wiICsgaXRlbS52ZXJzaW9uO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufSIsImltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0xheW91dFZpZXdwb3J0KCkge1xuICByZXR1cm4gIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2NhbGVYID0gMTtcbiAgdmFyIHNjYWxlWSA9IDE7XG5cbiAgaWYgKGluY2x1ZGVTY2FsZSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgc2NhbGVYID0gZWxlbWVudC5vZmZzZXRXaWR0aCA+IDAgPyByb3VuZChjbGllbnRSZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMSA6IDE7XG4gICAgc2NhbGVZID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgPiAwID8gcm91bmQoY2xpZW50UmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMSA6IDE7XG4gIH1cblxuICB2YXIgX3JlZiA9IGlzRWxlbWVudChlbGVtZW50KSA/IGdldFdpbmRvdyhlbGVtZW50KSA6IHdpbmRvdyxcbiAgICAgIHZpc3VhbFZpZXdwb3J0ID0gX3JlZi52aXN1YWxWaWV3cG9ydDtcblxuICB2YXIgYWRkVmlzdWFsT2Zmc2V0cyA9ICFpc0xheW91dFZpZXdwb3J0KCkgJiYgaXNGaXhlZFN0cmF0ZWd5O1xuICB2YXIgeCA9IChjbGllbnRSZWN0LmxlZnQgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQgOiAwKSkgLyBzY2FsZVg7XG4gIHZhciB5ID0gKGNsaWVudFJlY3QudG9wICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3AgOiAwKSkgLyBzY2FsZVk7XG4gIHZhciB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZVg7XG4gIHZhciBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlWTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIGxlZnQ6IHgsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjsgLy8gUmV0dXJucyB0aGUgbGF5b3V0IHJlY3Qgb2YgYW4gZWxlbWVudCByZWxhdGl2ZSB0byBpdHMgb2Zmc2V0UGFyZW50LiBMYXlvdXRcbi8vIG1lYW5zIGl0IGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdHJhbnNmb3Jtcy5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TGF5b3V0UmVjdChlbGVtZW50KSB7XG4gIHZhciBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpOyAvLyBVc2UgdGhlIGNsaWVudFJlY3Qgc2l6ZXMgaWYgaXQncyBub3QgYmVlbiB0cmFuc2Zvcm1lZC5cbiAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMjIzXG5cbiAgdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LndpZHR
3oIC0gd2lkdGgpIDw9IDEpIHtcbiAgICB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XG4gIH1cblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC5oZWlnaHQgLSBoZWlnaHQpIDw9IDEpIHtcbiAgICBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogZWxlbWVudC5vZmZzZXRMZWZ0LFxuICAgIHk6IGVsZW1lbnQub2Zmc2V0VG9wLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufSIsImltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy84MzdcbiAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufSAvLyBgLm9mZnNldFBhcmVudGAgcmVwb3J0cyBgbnVsbGAgZm9yIGZpeGVkIGVsZW1lbnRzLCB3aGlsZSBhYnNvbHV0ZSBlbGVtZW50c1xuLy8gcmV0dXJuIHRoZSBjb250YWluaW5nIGJsb2NrXG5cblxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgdmFyIGlzRmlyZWZveCA9IC9maXJlZm94L2kudGVzdChnZXRVQVN0cmluZygpKTtcbiAgdmFyIGlzSUUgPSAvVHJpZGVudC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICBpZiAoaXNTaGFkb3dSb290KGN1cnJlbnROb2RlKSkge1xuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuaG9zdDtcbiAgfVxuXG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiBbJ2h0bWwnLCAnYm9keSddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoY3VycmVudE5vZGUpKSA8IDApIHtcbiAgICB2YXIgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7IC8vIFRoaXMgaXMgbm9uLWV4aGF1c3RpdmUgYnV0IGNvdmVycyB0aGUgbW9zdCBjb21tb24gQ1NTIHByb3BlcnRpZXMgdGhhdFxuICAgIC8vIGNyZWF0ZSBhIGNvbnRhaW5pbmcgYmxvY2suXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcblxuICAgIGlmIChjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgY3NzLmNvbnRhaW4gPT09ICdwYWludCcgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnXS5pbmRleE9mKGNzcy53aWxsQ2hhbmdlKSAhPT0gLTEgfHwgaXNGaXJlZm94ICYmIGNzcy53aWxsQ2hhbmdlID09PSAnZmlsdGVyJyB8fCBpc0ZpcmVmb3ggJiYgY3NzLmZpbHRlciAmJiBjc3MuZmlsdGVyICE9PSAnbm9uZScpIHtcbiAgICAgIHJldHVybi
3BjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSAvLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQpO1xuICB9XG5cbiAgaWYgKG9mZnNldFBhcmVudCAmJiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2h0bWwnIHx8IGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdib2R5JyAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW5kb3c7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwiaW1wb3J0IHsgbWF4IGFzIG1hdGhNYXgsIG1pbiBhcyBtYXRoTWluIH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpIHtcbiAgcmV0dXJuIG1hdGhNYXgobWluLCBtYXRoTWluKHZhbHVlLCBtYXgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW5NYXhDbGFtcChtaW4sIHZhbHVlLCBtYXgpIHtcbiAgdmFyIHYgPSB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KTtcbiAgcmV0dXJuIHYgPiBtYXggPyBtYXggOiB2O1xufSIsImltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4vZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZyZXNoU2lkZU9iamVjdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDBcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi4vZG9tLXV0aWxzL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHdpdGhpbiB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2Y
3XIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRlLmVsZW1lbnRzLmFycm93ID0gYXJyb3dFbGVtZW50O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXJyb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogYXJyb3csXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J11cbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59IiwiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZiwgd2luKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgI
3HdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0sIGdldFdpbmRvdyhwb3BwZXIpKSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjQueDtcbiAgeSA9IF9yZWY0Lnk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDw9IDEgPyBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiIDogXCJ0cmFuc2xhdGUzZChcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4LCAwKVwiLCBfT2JqZWN0JGFzc2lnbikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduMiA9IHt9LCBfT2JqZWN0JGFzc2lnbjJbc2lkZVldID0gaGFzWSA/IHkgKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yW3NpZGVYXSA9IGhhc1ggPyB4ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMi50cmFuc2Zvcm0gPSAnJywgX09iamVjdCRhc3NpZ24yKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdHlsZXMoX3JlZjUpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjUuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjUub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9IG9wdGlvbnMuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZ3B1QWNjZWxlcmF0LFxuICAgICAgX29wdGlvbnMkYWRhcHRpdmUgPSBvcHRpb25zLmFkYXB0aXZlLFxuICAgICAgYWRhcHRpdmUgPSBfb3B0aW9ucyRhZGFwdGl2ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFkYXB0aXZlLFxuICAgICAgX29wdGlvbnMkcm91bmRPZmZzZXRzID0gb3B0aW9ucy5yb3VuZE9mZnNldHMsXG4gICAgICByb3VuZE9mZnNldHMgPSBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyb3VuZE9mZnNldHM7XG4gIHZhciBjb21tb25TdHlsZXMgPSB7XG4gICAgcGxhY2VtZW50OiBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCksXG4gICAgdmFyaWF0aW9uOiBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KSxcbiAgICBwb3BwZXI6IHN0YXRlLmVsZW1lbnRzLnBvcHBlcixcbiAgICBwb3BwZXJSZWN0OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiBncHVBY2NlbGVyYXRpb24sXG4gICAgaXNGaXhlZDogc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJ1xuICB9O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMucG9wcGVyLCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgYWRhcHRpdmU6IGFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3cgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5hcnJvdyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5hcnJvdywgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93LFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBhZGFwdGl2ZTogZmFsc2UsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXBsYWNlbWVudCc6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgZm46IGNvbXB1dGVTdHlsZXMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgcGFzc2l2ZSA9IHtcbiAgcGFzc2l2ZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgP
3SBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIGRhdGE6IHt9XG59OyIsInZhciBoYXNoID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7
3IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybi
3BjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gI
3HJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIHZhciB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgdmFyIGxheW91dFZpZXdwb3J0ID0gaXNMYXlvdXRWaWV3cG9ydCgpO1xuXG4gICAgaWYgKGxheW91dFZpZXdwb3J0IHx8ICFsYXlvdXRWaWV3cG9ydCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbn
3RhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7
3IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2Y
3XIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgI
3HZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHZhcmlhdGlvblBsYWNlbWVudHMsIGJhc2VQbGFjZW1lbnRzLCBwbGFjZW1lbnRzIGFzIGFsbFBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgX29wdGlvbnMkYWxsb3dlZEF1dG9QID0gX29wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gX29wdGlvbnMkYWxsb3dlZEF1dG9QID09PSB2b2lkIDAgPyBhbGxQbGFjZW1lbnRzIDogX29wdGlvbnMkYWxsb3dlZEF1dG9QO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCk7XG4gIHZhciBwbGFjZW1lbnRzID0gdmFyaWF0aW9uID8gZmxpcFZhcmlhdGlvbnMgPyB2YXJpYXRpb25QbGFjZW1lbnRzIDogdmFyaWF0aW9uUGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gdmFyaWF0aW9uO1xuICB9KSA6IGJhc2VQbGFjZW1lbnRzO1xuICB2YXIgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFsbG93ZWRBdXRvUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCkgPj0gMDtcbiAgfSk7XG5cbiAgaWYgKGFsbG93ZWRQbGFjZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cztcbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXTogRmxvdyBzZWVtcyB0byBoYXZlIHByb2JsZW1zIHdpdGggdHdvIGFycmF5IHVuaW9ucy4uLlxuXG5cbiAgdmFyIG92ZXJmbG93cyA9IGFsbG93ZWRQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pW2dldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KV07XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICByZXR1cm4gT2JqZWN0LmtleXMob3ZlcmZsb3dzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93c1thXSAtIG92ZXJmbG93c1tiXTtcbiAgfSk7XG59IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbn
3RlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVx
3dWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgI
3HZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgI
3HBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBbHRBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0
3aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBvcmRlck1vZGlmaWVycyBmcm9tIFwiLi91dGlscy9vcmRlck1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gXCIuL3V0aWxzL2RlYm91bmNlLmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbnZhciBERUZBVUxUX09QVElPTlMgPSB7XG4gIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1vZGlmaWVyczogW10sXG4gIHN0cmF0ZWd5OiAnYWJzb2x1dGUnXG59O1xuXG5mdW5jdGlvbiBhcmVWYWxpZEVsZW1lbnRzKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuICFhcmdzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gIShlbGVtZW50ICYmIHR5cGVvZiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9PT0gJ2Z1bmN0aW9uJyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9wcGVyR2VuZXJhdG9yKGdlbmVyYXRvck9wdGlvbnMpIHtcbiAgaWYgKGdlbmVyYXRvck9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIGdlbmVyYXRvck9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfZ2VuZXJhdG9yT3B0aW9ucyA9IGdlbmVyYXRvck9wdGlvbnMsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0TW9kaWZpZXJzLFxuICAgICAgZGVmYXVsdE1vZGlmaWVycyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9PT0gdm9pZCAwID8gW10gOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE9wdGlvbnMsXG4gICAgICBkZWZhdWx0T3B0aW9ucyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPT09IHZvaWQgMCA/IERFRkFVTFRfT1BUSU9OUyA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZjI7XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVQb3BwZXIocmVmZXJlbmNlLCBwb3BwZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgICBvcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgfVxuXG4gICAgdmFyIHN0YXRlID0ge1xuICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgIG9yZGVyZWRNb2RpZmllcnM6IFtdLFxuICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBkZWZhdWx0T3B0aW9ucyksXG4gICAgICBtb2RpZmllcnNEYXRhOiB7fSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlLFxuICAgICAgICBwb3BwZXI6IHBvcHBlclxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgc3R5bGVzOiB7fVxuICAgIH07XG4gICAgdmFyIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB2YXIgaXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB2YXIgaW5zdGFuY2UgPSB7XG4gICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICBzZXRPcHRpb25zOiBmdW5jdGlvbiBzZXRPcHRpb25zKHNldE9wdGlvbnNBY3Rpb24pIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2V0T3B0aW9uc0FjdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHNldE9wdGlvbnNBY3Rpb24oc3RhdGUub3B0aW9ucykgOiBzZXRPcHRpb25zQWN0aW9uO1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgI
3HN0YXRlLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0T3B0aW9ucywgc3RhdGUub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIHN0YXRlLnNjcm9sbFBhcmVudHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10sXG4gICAgICAgICAgcG9wcGVyOiBsaXN0U2Nyb2xsUGFyZW50cyhwb3BwZXIpXG4gICAgICAgIH07IC8vIE9yZGVycyB0aGUgbW9kaWZpZXJzIGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY2llcyBhbmQgYHBoYXNlYFxuICAgICAgICAvLyBwcm9wZXJ0aWVzXG5cbiAgICAgICAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlck1vZGlmaWVycyhtZXJnZUJ5TmFtZShbXS5jb25jYXQoZGVmYXVsdE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpKSk7IC8vIFN0cmlwIG91dCBkaXNhYmxlZCBtb2RpZmllcnNcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICByZXR1cm4gbS5lbmFibGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gU3RvcmUgdGhlIHJlZmVyZW5jZSBhbmQgcG9wcGVyIHJlY3RzIHRvIGJlIHJlYWQgYnkgbW9kaWZpZXJzXG5cblxuICAgICAgICBzdGF0ZS5yZWN0cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGdldENvbXBvc2l0ZVJlY3QocmVmZXJlbmNlLCBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKSwgc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJyksXG4gICAgICAgICAgcG9wcGVyOiBnZXRMYXlvdXRSZWN0KHBvcHBlcilcbiAgICAgICAgfTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gcmVzZXQgdGhlIGN1cnJlbnQgdXBkYXRlIGN5Y2xlLiBUaGVcbiAgICAgICAgLy8gbW9zdCBjb21tb24gdXNlIGNhc2UgZm9yIHRoaXMgaXMgdGhlIGBmbGlwYCBtb2RpZmllciBjaGFuZ2luZyB0aGVcbiAgICAgICAgLy8gcGxhY2VtZW50LCB3aGljaCB0aGVuIG5lZWRzIHRvIHJlLXJ1biBhbGwgdGhlIG1vZGlmaWVycywgYmVjYXVzZSB0aGVcbiAgICAgICAgLy8gbG9naWMgd2FzIHByZXZpb3VzbHkgcmFuIGZvciB0aGUgcHJldmlvdXMgcGxhY2VtZW50IGFuZCBpcyB0aGVyZWZvcmVcbiAgICAgICAgLy8gc3RhbGUvaW5jb3JyZWN0XG5cbiAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgc3RhdGUucGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7IC8vIE9uIGVhY2ggdXBkYXRlIGN5Y2xlLCB0aGUgYG1vZGlmaWVyc0RhdGFgIHByb3BlcnR5IGZvciBlYWNoIG1vZGlmaWVyXG4gICAgICAgIC8vIGlzIGZpbGxlZCB3aXRoIHRoZSBpbml0aWFsIGRhdGEgc3BlY2lmaWVkIGJ5IHRoZSBtb2RpZmllci4gVGhpcyBtZWFuc1xuICAgICAgICAvLyBpdCBkb2Vzbid0IHBlcnNpc3QgYW5kIGlzIGZyZXNoIG9uIGVhY2ggdXBkYXRlLlxuICAgICAgICAvLyBUbyBlbnN1cmUgcGVyc2lzdGVudCBkYXRhLCB1c2UgYCR7bmFtZX0jcGVyc2lzdGVudGBcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlLm1vZGlmaWVyc0RhdGFbbW9kaWZpZXIubmFtZV0gPSBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllci5kYXRhKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgI
3HN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICAgICAgICBfcmVmJG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICAgICAgICBvcHRpb25zID0gX3JlZiRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYuZWZmZWN0O1xuXG4gICAgICAgIGlmICh0eXBlb2YgZWZmZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdmFyIGNsZWFudXBGbiA9IGVmZmVjdCh7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdmFyIG5vb3BGbiA9IGZ1bmN0aW9uIG5vb3BGbigpIHt9O1xuXG4gICAgICAgICAgZWZmZWN0Q2xlYW51cEZucy5wdXNoKGNsZWFudXBGbiB8fCBub29wRm4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgZWZmZWN0Q2xlYW51cEZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuICAgICAgICByZXR1cm4gZm4oKTtcbiAgICAgIH0pO1xuICAgICAgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cbmV4cG9ydCB2YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGRldGVjdE92ZXJmbG93IH07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbn
3RPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiaW1wb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdyB9IGZyb20gXCIuL2NyZWF0ZVBvcHBlci5qc1wiO1xuaW1wb3J0IGV2ZW50TGlzdGVuZXJzIGZyb20gXCIuL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qc1wiO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSBcIi4vbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanNcIjtcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzXCI7XG5pbXBvcnQgYXBwbHlTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzXCI7XG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IFtldmVudExpc3RlbmVycywgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgYXBwbHlTdHlsZXNdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsiLCIvKiFcbiAgKiBCb290c3RyYXAgdjUuMy44IChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxuICAqIENvcHlyaWdodCAyMDExLTIwMjUgVGhlIEJvb3RzdHJhcCBBdXRob3JzIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvZ3JhcGhzL2NvbnRyaWJ1dG9ycylcbiAgKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAgKi9cbmltcG9ydCAqIGFzIFBvcHBlciBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBkb20vZGF0YS5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgZWxlbWVudE1hcCA9IG5ldyBNYXAoKTtcbmNvbnN0IERhdGEgPSB7XG4gIHNldChlbGVtZW50LCBrZXksIGluc3RhbmNlKSB7XG4gICAgaWYgKCFlbGVtZW50TWFwLmhhcyhlbGVtZW50KSkge1xuICAgICAgZWxlbWVudE1hcC5zZXQoZWxlbWVudCwgbmV3IE1hcCgpKTtcbiAgICB9XG4gICAgY29uc3QgaW5zdGFuY2VNYXAgPSBlbGVtZW50TWFwLmdldChlbGVtZW50KTtcblxuICAgIC8vIG1ha2UgaXQgY2xlYXIgd2Ugb25seSB3YW50IG9uZSBpbnN0YW5jZSBwZXIgZWxlbWVudFxuICAgIC8vIGNhbiBiZSByZW1vdmVkIGxhdGVyIHdoZW4gbXVsdGlwbGUga2V5L2luc3RhbmNlcyBhcmUgZmluZSB0byBiZSB1c2VkXG4gICAgaWYgKCFpbnN0YW5jZU1hcC5oYXMoa2V5KSAmJiBpbnN0YW5jZU1hcC5zaXplICE9PSAwKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihgQm9vdHN0cmFwIGRvZXNuJ3QgYWxsb3cgbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBwZXIgZWxlbWVudC4gQm91bmQgaW5zdGFuY2U6ICR7QXJyYXkuZnJvbShpbnN0YW5jZU1hcC5rZXlzKCkpWzBdfS5gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaW5zdGFuY2VNYXAuc2V0KGtleSwgaW5zdGFuY2UpO1xuICB9LFxuICBnZXQoZWxlbWVudCwga2V5KSB7XG4gICAgaWYgKGVsZW1lbnRNYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gZWxlbWVudE1hcC5nZXQoZWxlbWVudCkuZ2V0KGtleSkgfHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIHJlbW92ZShlbGVtZW50LCBrZXkpIHtcbiAgICBpZiAoIWVsZW1lbnRNYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlTWFwID0gZWxlbWVudE1hcC5nZXQoZWxlbWVudCk7XG4gICAgaW5zdGFuY2VNYXAuZGVsZXRlKGtleSk7XG5cbiAgICAvLyBmcmVlIHVwIGVsZW1lbnQgcmVmZXJlbmNlcyBpZiB0aGVyZSBhcmUgbm8gaW5zdGFuY2VzIGxlZnQgZm9yIGFuIGVsZW1lbnRcbiAgICBpZiAoaW5zdGFuY2VNYXAuc2l6ZSA9PT0gMCkge1xuICAgICAgZWxlbWVudE1hcC5kZWxldGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgdXRpbC9pbmRleC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmNvbnN0IE1BWF9VSUQgPSAxMDAwMDAwO1xuY29uc3QgTUlMTElTRUNPTkRTX01VTFRJUExJRVIgPSAxMDAwO1xuY29uc3QgVFJBTlNJVElPTl9FTkQgPSAndHJhbnNpdGlvbmVuZCc7XG5cbi8qKlxuICogUHJvcGVybHkgZXNjYXBlIElEcyBzZWxlY3RvcnMgdG8gaGFuZGxlIHdlaXJkIElEc1xuICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5jb25zdCBwYXJzZVNlbGVjdG9yID0gc2VsZWN0b3IgPT4ge1xuICBpZiAoc2VsZWN0b3IgJiYgd2luZG93LkNTUyAmJiB3aW5kb3cuQ1NTLmVzY2FwZSkge1xuICAgIC8vIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IgbmVlZHMgZXNjYXBpbmcgdG8gaGFuZGxlIElEcyAoaHRtbDUrKSBjb250YWluaW5nIGZvciBpbnN0YW5jZSAvXG4gICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5yZXBsYWNlKC8jKFteXFxzXCIjJ10rKS9nLCAobWF0Y2gsIGlkKSA9PiBgIyR7Q1NTLmVzY2FwZShpZCl9YCk7XG4gIH1cbiAgcmV0dXJuIHNlbGVjdG9yO1xufTtcblxuLy8gU2hvdXQtb3V0IEFuZ3VzIENyb2xsIChodHRwczovL2dvby5nbC9weHdRR3ApXG5jb25zdCB0b1R5cGUgPSBvYmplY3QgPT4ge1xuICBpZiAob2JqZWN0ID09PSBudWxsIHx8IG9iamVjdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGAke29iamVjdH1gO1xuICB9XG4gI
3HJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KS5tYXRjaCgvXFxzKFthLXpdKykvaSlbMV0udG9Mb3dlckNhc2UoKTtcbn07XG5cbi8qKlxuICogUHVibGljIFV0aWwgQVBJXG4gKi9cblxuY29uc3QgZ2V0VUlEID0gcHJlZml4ID0+IHtcbiAgZG8ge1xuICAgIHByZWZpeCArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBNQVhfVUlEKTtcbiAgfSB3aGlsZSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJlZml4KSk7XG4gIHJldHVybiBwcmVmaXg7XG59O1xuY29uc3QgZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQgPSBlbGVtZW50ID0+IHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICAvLyBHZXQgdHJhbnNpdGlvbi1kdXJhdGlvbiBvZiB0aGUgZWxlbWVudFxuICBsZXQge1xuICAgIHRyYW5zaXRpb25EdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uRGVsYXlcbiAgfSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICBjb25zdCBmbG9hdFRyYW5zaXRpb25EdXJhdGlvbiA9IE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EdXJhdGlvbik7XG4gIGNvbnN0IGZsb2F0VHJhbnNpdGlvbkRlbGF5ID0gTnVtYmVyLnBhcnNlRmxvYXQodHJhbnNpdGlvbkRlbGF5KTtcblxuICAvLyBSZXR1cm4gMCBpZiBlbGVtZW50IG9yIHRyYW5zaXRpb24gZHVyYXRpb24gaXMgbm90IGZvdW5kXG4gIGlmICghZmxvYXRUcmFuc2l0aW9uRHVyYXRpb24gJiYgIWZsb2F0VHJhbnNpdGlvbkRlbGF5KSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICAvLyBJZiBtdWx0aXBsZSBkdXJhdGlvbnMgYXJlIGRlZmluZWQsIHRha2UgdGhlIGZpcnN0XG4gIHRyYW5zaXRpb25EdXJhdGlvbiA9IHRyYW5zaXRpb25EdXJhdGlvbi5zcGxpdCgnLCcpWzBdO1xuICB0cmFuc2l0aW9uRGVsYXkgPSB0cmFuc2l0aW9uRGVsYXkuc3BsaXQoJywnKVswXTtcbiAgcmV0dXJuIChOdW1iZXIucGFyc2VGbG9hdCh0cmFuc2l0aW9uRHVyYXRpb24pICsgTnVtYmVyLnBhcnNlRmxvYXQodHJhbnNpdGlvbkRlbGF5KSkgKiBNSUxMSVNFQ09ORFNfTVVMVElQTElFUjtcbn07XG5jb25zdCB0cmlnZ2VyVHJhbnNpdGlvbkVuZCA9IGVsZW1lbnQgPT4ge1xuICBlbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFRSQU5TSVRJT05fRU5EKSk7XG59O1xuY29uc3QgaXNFbGVtZW50ID0gb2JqZWN0ID0+IHtcbiAgaWYgKCFvYmplY3QgfHwgdHlwZW9mIG9iamVjdCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBvYmplY3QuanF1ZXJ5ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG9iamVjdCA9IG9iamVjdFswXTtcbiAgfVxuICByZXR1cm4gdHlwZW9mIG9iamVjdC5ub2RlVHlwZSAhPT0gJ3VuZGVmaW5lZCc7XG59O1xuY29uc3QgZ2V0RWxlbWVudCA9IG9iamVjdCA9PiB7XG4gIC8vIGl0J3MgYSBqUXVlcnkgb2JqZWN0IG9yIGEgbm9kZSBlbGVtZW50XG4gIGlmIChpc0VsZW1lbnQob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3QuanF1ZXJ5ID8gb2JqZWN0WzBdIDogb2JqZWN0O1xuICB9XG4gIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnc3RyaW5nJyAmJiBvYmplY3QubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHBhcnNlU2VsZWN0b3Iob2JqZWN0KSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgaXNWaXNpYmxlID0gZWxlbWVudCA9PiB7XG4gIGlmICghaXNFbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZWxlbWVudElzVmlzaWJsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgndmlzaWJpbGl0eScpID09PSAndmlzaWJsZSc7XG4gIC8vIEhhbmRsZSBgZGV0YWlsc2AgZWxlbWVudCBhcyBpdHMgY29udGVudCBtYXkgZmFsc2llIGFwcGVhciB2aXNpYmxlIHdoZW4gaXQgaXMgY2xvc2VkXG4gIGNvbnN0IGNsb3NlZERldGFpbHMgPSBlbGVtZW50LmNsb3Nlc3QoJ2RldGFpbHM6bm90KFtvcGVuXSknKTtcbiAgaWYgKCFjbG9zZWREZXRhaWxzKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRJc1Zpc2libGU7XG4gIH1cbiAgaWYgKGNsb3NlZERldGFpbHMgIT09IGVsZW1lbnQpIHtcbiAgICBjb25zdCBzdW1tYXJ5ID0gZWxlbWVudC5jbG9zZXN0KCdzdW1tYXJ5Jyk7XG4gICAgaWYgKHN1bW1hcnkgJiYgc3VtbWFyeS5wYXJlbnROb2RlICE9PSBjbG9zZWREZXRhaWxzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChzdW1tYXJ5ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBlbGVtZW50SXNWaXNpYmxlO1xufTtcbmNvbnN0IGlzRGlzYWJsZWQgPSBlbGVtZW50ID0+IHtcbiAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkaXNhYmxlZCcpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBlbGVtZW50LmRpc2FibGVkICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBlbGVtZW50LmRpc2FibGVkO1xuICB9XG4gIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSAhPT0gJ2ZhbHNlJztcbn07XG5jb25zdCBmaW5kU2hhZG93Um9vdCA9IGVsZW1lbnQgPT4ge1xuICBpZiAoIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hdHRhY2hTaGFkb3cpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIENhbiBmaW5kIHRoZSBzaGFkb3cgcm9vdCBvdGhlcndpc2UgaXQnbGwgcmV0dXJuIHRoZSBkb2N1bWVudFxuICBpZiAodHlwZW9mIGVsZW1lbnQuZ2V0Um9vdE5vZGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCByb290ID0gZWxlbWVudC5nZXRSb290Tm9kZSgpO1xuICAgIHJldHVybi
3Byb290IGluc3RhbmNlb2YgU2hhZG93Um9vdCA/IHJvb3QgOiBudWxsO1xuICB9XG4gIGlmIChlbGVtZW50IGluc3RhbmNlb2YgU2hhZG93Um9vdCkge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgLy8gd2hlbiB3ZSBkb24ndCBmaW5kIGEgc2hhZG93IHJvb3RcbiAgaWYgKCFlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZmluZFNoYWRvd1Jvb3QoZWxlbWVudC5wYXJlbnROb2RlKTtcbn07XG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbi8qKlxuICogVHJpY2sgdG8gcmVzdGFydCBhbiBlbGVtZW50J3MgYW5pbWF0aW9uXG4gKlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybiB2b2lkXG4gKlxuICogQHNlZSBodHRwczovL3d3dy5oYXJyeXRoZW8uY29tL2Jsb2cvMjAyMS8wMi9yZXN0YXJ0LWEtY3NzLWFuaW1hdGlvbi13aXRoLWphdmFzY3JpcHQvI3Jlc3RhcnRpbmctYS1jc3MtYW5pbWF0aW9uXG4gKi9cbmNvbnN0IHJlZmxvdyA9IGVsZW1lbnQgPT4ge1xuICBlbGVtZW50Lm9mZnNldEhlaWdodDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcbn07XG5jb25zdCBnZXRqUXVlcnkgPSAoKSA9PiB7XG4gIGlmICh3aW5kb3cualF1ZXJ5ICYmICFkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgnZGF0YS1icy1uby1qcXVlcnknKSkge1xuICAgIHJldHVybiB3aW5kb3cualF1ZXJ5O1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmNvbnN0IERPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MgPSBbXTtcbmNvbnN0IG9uRE9NQ29udGVudExvYWRlZCA9IGNhbGxiYWNrID0+IHtcbiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykge1xuICAgIC8vIGFkZCBsaXN0ZW5lciBvbiB0aGUgZmlyc3QgY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBpcyBpbiBsb2FkaW5nIHN0YXRlXG4gICAgaWYgKCFET01Db250ZW50TG9hZGVkQ2FsbGJhY2tzLmxlbmd0aCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBET01Db250ZW50TG9hZGVkQ2FsbGJhY2tzKSB7XG4gICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIERPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gIH0gZWxzZSB7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxufTtcbmNvbnN0IGlzUlRMID0gKCkgPT4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRpciA9PT0gJ3J0bCc7XG5jb25zdCBkZWZpbmVKUXVlcnlQbHVnaW4gPSBwbHVnaW4gPT4ge1xuICBvbkRPTUNvbnRlbnRMb2FkZWQoKCkgPT4ge1xuICAgIGNvbnN0ICQgPSBnZXRqUXVlcnkoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoJCkge1xuICAgICAgY29uc3QgbmFtZSA9IHBsdWdpbi5OQU1FO1xuICAgICAgY29uc3QgSlFVRVJZX05PX0NPTkZMSUNUID0gJC5mbltuYW1lXTtcbiAgICAgICQuZm5bbmFtZV0gPSBwbHVnaW4ualF1ZXJ5SW50ZXJmYWNlO1xuICAgICAgJC5mbltuYW1lXS5Db25zdHJ1Y3RvciA9IHBsdWdpbjtcbiAgICAgICQuZm5bbmFtZV0ubm9Db25mbGljdCA9ICgpID0+IHtcbiAgICAgICAgJC5mbltuYW1lXSA9IEpRVUVSWV9OT19DT05GTElDVDtcbiAgICAgICAgcmV0dXJuIHBsdWdpbi5qUXVlcnlJbnRlcmZhY2U7XG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG59O1xuY29uc3QgZXhlY3V0ZSA9IChwb3NzaWJsZUNhbGxiYWNrLCBhcmdzID0gW10sIGRlZmF1bHRWYWx1ZSA9IHBvc3NpYmxlQ2FsbGJhY2spID0+IHtcbiAgcmV0dXJuIHR5cGVvZiBwb3NzaWJsZUNhbGxiYWNrID09PSAnZnVuY3Rpb24nID8gcG9zc2libGVDYWxsYmFjay5jYWxsKC4uLmFyZ3MpIDogZGVmYXVsdFZhbHVlO1xufTtcbmNvbnN0IGV4ZWN1dGVBZnRlclRyYW5zaXRpb24gPSAoY2FsbGJhY2ssIHRyYW5zaXRpb25FbGVtZW50LCB3YWl0Rm9yVHJhbnNpdGlvbiA9IHRydWUpID0+IHtcbiAgaWYgKCF3YWl0Rm9yVHJhbnNpdGlvbikge1xuICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBkdXJhdGlvblBhZGRpbmcgPSA1O1xuICBjb25zdCBlbXVsYXRlZER1cmF0aW9uID0gZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodHJhbnNpdGlvbkVsZW1lbnQpICsgZHVyYXRpb25QYWRkaW5nO1xuICBsZXQgY2FsbGVkID0gZmFsc2U7XG4gIGNvbnN0IGhhbmRsZXIgPSAoe1xuICAgIHRhcmdldFxuICB9KSA9PiB7XG4gICAgaWYgKHRhcmdldCAhPT0gdHJhbnNpdGlvbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2FsbGVkID0gdHJ1ZTtcbiAgICB0cmFuc2l0aW9uRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFRSQU5TSVRJT05fRU5ELCBoYW5kbGVyKTtcbiAgICBleGVjdXRlKGNhbGxiYWNrKTtcbiAgfTtcbiAgdHJhbnNpdGlvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihUUkFOU0lUSU9OX0VORCwgaGFuZGxlcik7XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGlmICghY2FsbGVkKSB7XG4gICAgICB0cmlnZ2VyVHJhbnNpdGlvbkVuZCh0cmFuc2l0aW9uRWxlbWVudCk7XG4gICAgfVxuICB9LCBlbXVsYXRlZER1cmF0aW9uKTtcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBwcmV2aW91cy9uZXh0IGVsZW1lbnQgb2YgYSBsaXN0LlxuICpcbiAqIEBwYXJhbSB7YXJyYXl9IGxpc3QgICAgVGhlIGxpc3Qgb2YgZWxlbWVudHNcbiAqIEBwYXJhbSBhY3RpdmVFbGVtZW50ICAgVGhlIGFjdGl2ZSBlbGVtZW50XG4gKiBAcGFyYW0gc2hvdWxkR2V0TmV4dCAgIENob29zZSB0byBnZXQgbmV4dCBvciBwcmV2aW91cyBlbGVtZW50XG4gKiBAcGFyYW0gaXNDeWNsZUFsbG93ZWRcbiAqIEByZXR1cm4ge0VsZW1lbnR8ZWxlbX0gVGhlIHByb3BlciBlbGVtZW50XG4gKi9cbmNvbnN0IGdldE5leHRBY3RpdmVFbGVtZW50ID0gKGxpc3QsIGFjdGl2ZUVsZW1lbnQsIHNob3VsZEdldE5leHQsIGlzQ3ljbGVBbGxvd2VkKSA9PiB7XG4gIGNvbnN0IGxpc3RMZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgbGV0IGluZGV4ID0gbGlzdC5pbmRleE9mKGFjdGl2ZUVsZW1lbnQpO1xuXG4gIC8vIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IHJldHVybi
3BhbiBlbGVtZW50XG4gIC8vIGRlcGVuZGluZyBvbiB0aGUgZGlyZWN0aW9uIGFuZCBpZiBjeWNsZSBpcyBhbGxvd2VkXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gIXNob3VsZEdldE5leHQgJiYgaXNDeWNsZUFsbG93ZWQgPyBsaXN0W2xpc3RMZW5ndGggLSAxXSA6IGxpc3RbMF07XG4gIH1cbiAgaW5kZXggKz0gc2hvdWxkR2V0TmV4dCA/IDEgOiAtMTtcbiAgaWYgKGlzQ3ljbGVBbGxvd2VkKSB7XG4gICAgaW5kZXggPSAoaW5kZXggKyBsaXN0TGVuZ3RoKSAlIGxpc3RMZW5ndGg7XG4gIH1cbiAgcmV0dXJuIGxpc3RbTWF0aC5tYXgoMCwgTWF0aC5taW4oaW5kZXgsIGxpc3RMZW5ndGggLSAxKSldO1xufTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIGRvbS9ldmVudC1oYW5kbGVyLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IG5hbWVzcGFjZVJlZ2V4ID0gL1teLl0qKD89XFwuLiopXFwufC4qLztcbmNvbnN0IHN0cmlwTmFtZVJlZ2V4ID0gL1xcLi4qLztcbmNvbnN0IHN0cmlwVWlkUmVnZXggPSAvOjpcXGQrJC87XG5jb25zdCBldmVudFJlZ2lzdHJ5ID0ge307IC8vIEV2ZW50cyBzdG9yYWdlXG5sZXQgdWlkRXZlbnQgPSAxO1xuY29uc3QgY3VzdG9tRXZlbnRzID0ge1xuICBtb3VzZWVudGVyOiAnbW91c2VvdmVyJyxcbiAgbW91c2VsZWF2ZTogJ21vdXNlb3V0J1xufTtcbmNvbnN0IG5hdGl2ZUV2ZW50cyA9IG5ldyBTZXQoWydjbGljaycsICdkYmxjbGljaycsICdtb3VzZXVwJywgJ21vdXNlZG93bicsICdjb250ZXh0bWVudScsICdtb3VzZXdoZWVsJywgJ0RPTU1vdXNlU2Nyb2xsJywgJ21vdXNlb3ZlcicsICdtb3VzZW91dCcsICdtb3VzZW1vdmUnLCAnc2VsZWN0c3RhcnQnLCAnc2VsZWN0ZW5kJywgJ2tleWRvd24nLCAna2V5cHJlc3MnLCAna2V5dXAnLCAnb3JpZW50YXRpb25jaGFuZ2UnLCAndG91Y2hzdGFydCcsICd0b3VjaG1vdmUnLCAndG91Y2hlbmQnLCAndG91Y2hjYW5jZWwnLCAncG9pbnRlcmRvd24nLCAncG9pbnRlcm1vdmUnLCAncG9pbnRlcnVwJywgJ3BvaW50ZXJsZWF2ZScsICdwb2ludGVyY2FuY2VsJywgJ2dlc3R1cmVzdGFydCcsICdnZXN0dXJlY2hhbmdlJywgJ2dlc3R1cmVlbmQnLCAnZm9jdXMnLCAnYmx1cicsICdjaGFuZ2UnLCAncmVzZXQnLCAnc2VsZWN0JywgJ3N1Ym1pdCcsICdmb2N1c2luJywgJ2ZvY3Vzb3V0JywgJ2xvYWQnLCAndW5sb2FkJywgJ2JlZm9yZXVubG9hZCcsICdyZXNpemUnLCAnbW92ZScsICdET01Db250ZW50TG9hZGVkJywgJ3JlYWR5c3RhdGVjaGFuZ2UnLCAnZXJyb3InLCAnYWJvcnQnLCAnc2Nyb2xsJ10pO1xuXG4vKipcbiAqIFByaXZhdGUgbWV0aG9kc1xuICovXG5cbmZ1bmN0aW9uIG1ha2VFdmVudFVpZChlbGVtZW50LCB1aWQpIHtcbiAgcmV0dXJuIHVpZCAmJiBgJHt1aWR9Ojoke3VpZEV2ZW50Kyt9YCB8fCBlbGVtZW50LnVpZEV2ZW50IHx8IHVpZEV2ZW50Kys7XG59XG5mdW5jdGlvbiBnZXRFbGVtZW50RXZlbnRzKGVsZW1lbnQpIHtcbiAgY29uc3QgdWlkID0gbWFrZUV2ZW50VWlkKGVsZW1lbnQpO1xuICBlbGVtZW50LnVpZEV2ZW50ID0gdWlkO1xuICBldmVudFJlZ2lzdHJ5W3VpZF0gPSBldmVudFJlZ2lzdHJ5W3VpZF0gfHwge307XG4gIHJldHVybiBldmVudFJlZ2lzdHJ5W3VpZF07XG59XG5mdW5jdGlvbiBib290c3RyYXBIYW5kbGVyKGVsZW1lbnQsIGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7XG4gICAgaHlkcmF0ZU9iaihldmVudCwge1xuICAgICAgZGVsZWdhdGVUYXJnZXQ6IGVsZW1lbnRcbiAgICB9KTtcbiAgICBpZiAoaGFuZGxlci5vbmVPZmYpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgZXZlbnQudHlwZSwgZm4pO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkoZWxlbWVudCwgW2V2ZW50XSk7XG4gIH07XG59XG5mdW5jdGlvbiBib290c3RyYXBEZWxlZ2F0aW9uSGFuZGxlcihlbGVtZW50LCBzZWxlY3RvciwgZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gICAgZm9yIChsZXQge1xuICAgICAgdGFyZ2V0XG4gICAgfSA9IGV2ZW50OyB0YXJnZXQgJiYgdGFyZ2V0ICE9PSB0aGlzOyB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZSkge1xuICAgICAgZm9yIChjb25zdCBkb21FbGVtZW50IG9mIGRvbUVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChkb21FbGVtZW50ICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBoeWRyYXRlT2JqKGV2ZW50LCB7XG4gICAgICAgICAgZGVsZWdhdGVUYXJnZXQ6IHRhcmdldFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGhhbmRsZXIub25lT2ZmKSB7XG4gICAgICAgICAgRXZlbnRIYW5kbGVyLm9mZihlbGVtZW50LCBldmVudC50eXBlLCBzZWxlY3RvciwgZm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0YXJnZXQsIFtldmVudF0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIGZpbmRIYW5kbGVyKGV2ZW50cywgY2FsbGFibGUsIGRlbGVnYXRpb25TZWxlY3RvciA9IG51bGwpIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZXZlbnRzKS5maW5kKGV2ZW50ID0+IGV2ZW50LmNhbGxhYmxlID09PSBjYWxsYWJsZSAmJiBldmVudC5kZWxlZ2F0aW9uU2VsZWN0b3IgPT09IGRlbGVnYXRpb25TZWxlY3Rvcik7XG59XG5mdW5jdGlvbiBub3JtYWxpemVQYXJhbWV0ZXJzKG9yaWdpbmFsVHlwZUV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pIHtcbiAgY29uc3QgaXNEZWxlZ2F0ZWQgPSB0eXBlb2YgaGFuZGxlciA9PT0gJ3N0cmluZyc7XG4gIC8vIFRPRE86IHRvb2x0aXAgcGFzc2VzIGBmYWxzZWAgaW5zdGVhZCBvZiBzZWxlY3Rvciwgc28gd2UgbmVlZCB0byBjaGVja1xuICBjb25zdCBjYWxsYWJsZSA9IGlzRGVsZWdhdGVkID8gZGVsZWdhdGlvbkZ1bmN0aW9uIDogaGFuZGxlciB8fCBkZWxlZ2F0aW9uRnVuY3Rpb247XG4gIGxldCB0eXBlRXZlbnQgPSBnZXRUeXBlRXZlbnQob3JpZ2luYWxUeXBlRXZlbnQpO1xuICBpZiAoIW5hdGl2ZUV2ZW50cy5oYXModHlwZUV2ZW50KSkge1xuICAgIHR5cGVFdmVudCA9IG9yaWdpbmFsVHlwZUV2ZW50O1xuICB9XG4gI
3HJldHVybiBbaXNEZWxlZ2F0ZWQsIGNhbGxhYmxlLCB0eXBlRXZlbnRdO1xufVxuZnVuY3Rpb24gYWRkSGFuZGxlcihlbGVtZW50LCBvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uLCBvbmVPZmYpIHtcbiAgaWYgKHR5cGVvZiBvcmlnaW5hbFR5cGVFdmVudCAhPT0gJ3N0cmluZycgfHwgIWVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IFtpc0RlbGVnYXRlZCwgY2FsbGFibGUsIHR5cGVFdmVudF0gPSBub3JtYWxpemVQYXJhbWV0ZXJzKG9yaWdpbmFsVHlwZUV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pO1xuXG4gIC8vIGluIGNhc2Ugb2YgbW91c2VlbnRlciBvciBtb3VzZWxlYXZlIHdyYXAgdGhlIGhhbmRsZXIgd2l0aGluIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgZm9yIGl0cyBET00gcG9zaXRpb25cbiAgLy8gdGhpcyBwcmV2ZW50cyB0aGUgaGFuZGxlciBmcm9tIGJlaW5nIGRpc3BhdGNoZWQgdGhlIHNhbWUgd2F5IGFzIG1vdXNlb3ZlciBvciBtb3VzZW91dCBkb2VzXG4gIGlmIChvcmlnaW5hbFR5cGVFdmVudCBpbiBjdXN0b21FdmVudHMpIHtcbiAgICBjb25zdCB3cmFwRnVuY3Rpb24gPSBmbiA9PiB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmICghZXZlbnQucmVsYXRlZFRhcmdldCB8fCBldmVudC5yZWxhdGVkVGFyZ2V0ICE9PSBldmVudC5kZWxlZ2F0ZVRhcmdldCAmJiAhZXZlbnQuZGVsZWdhdGVUYXJnZXQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgICBjYWxsYWJsZSA9IHdyYXBGdW5jdGlvbihjYWxsYWJsZSk7XG4gIH1cbiAgY29uc3QgZXZlbnRzID0gZ2V0RWxlbWVudEV2ZW50cyhlbGVtZW50KTtcbiAgY29uc3QgaGFuZGxlcnMgPSBldmVudHNbdHlwZUV2ZW50XSB8fCAoZXZlbnRzW3R5cGVFdmVudF0gPSB7fSk7XG4gIGNvbnN0IHByZXZpb3VzRnVuY3Rpb24gPSBmaW5kSGFuZGxlcihoYW5kbGVycywgY2FsbGFibGUsIGlzRGVsZWdhdGVkID8gaGFuZGxlciA6IG51bGwpO1xuICBpZiAocHJldmlvdXNGdW5jdGlvbikge1xuICAgIHByZXZpb3VzRnVuY3Rpb24ub25lT2ZmID0gcHJldmlvdXNGdW5jdGlvbi5vbmVPZmYgJiYgb25lT2ZmO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCB1aWQgPSBtYWtlRXZlbnRVaWQoY2FsbGFibGUsIG9yaWdpbmFsVHlwZUV2ZW50LnJlcGxhY2UobmFtZXNwYWNlUmVnZXgsICcnKSk7XG4gIGNvbnN0IGZuID0gaXNEZWxlZ2F0ZWQgPyBib290c3RyYXBEZWxlZ2F0aW9uSGFuZGxlcihlbGVtZW50LCBoYW5kbGVyLCBjYWxsYWJsZSkgOiBib290c3RyYXBIYW5kbGVyKGVsZW1lbnQsIGNhbGxhYmxlKTtcbiAgZm4uZGVsZWdhdGlvblNlbGVjdG9yID0gaXNEZWxlZ2F0ZWQgPyBoYW5kbGVyIDogbnVsbDtcbiAgZm4uY2FsbGFibGUgPSBjYWxsYWJsZTtcbiAgZm4ub25lT2ZmID0gb25lT2ZmO1xuICBmbi51aWRFdmVudCA9IHVpZDtcbiAgaGFuZGxlcnNbdWlkXSA9IGZuO1xuICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZUV2ZW50LCBmbiwgaXNEZWxlZ2F0ZWQpO1xufVxuZnVuY3Rpb24gcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvblNlbGVjdG9yKSB7XG4gIGNvbnN0IGZuID0gZmluZEhhbmRsZXIoZXZlbnRzW3R5cGVFdmVudF0sIGhhbmRsZXIsIGRlbGVnYXRpb25TZWxlY3Rvcik7XG4gIGlmICghZm4pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVFdmVudCwgZm4sIEJvb2xlYW4oZGVsZWdhdGlvblNlbGVjdG9yKSk7XG4gIGRlbGV0ZSBldmVudHNbdHlwZUV2ZW50XVtmbi51aWRFdmVudF07XG59XG5mdW5jdGlvbiByZW1vdmVOYW1lc3BhY2VkSGFuZGxlcnMoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIG5hbWVzcGFjZSkge1xuICBjb25zdCBzdG9yZUVsZW1lbnRFdmVudCA9IGV2ZW50c1t0eXBlRXZlbnRdIHx8IHt9O1xuICBmb3IgKGNvbnN0IFtoYW5kbGVyS2V5LCBldmVudF0gb2YgT2JqZWN0LmVud
3HJpZXMoc3RvcmVFbGVtZW50RXZlbnQpKSB7XG4gICAgaWYgKGhhbmRsZXJLZXkuaW5jbHVkZXMobmFtZXNwYWNlKSkge1xuICAgICAgcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgZXZlbnQuY2FsbGFibGUsIGV2ZW50LmRlbGVnYXRpb25TZWxlY3Rvcik7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBnZXRUeXBlRXZlbnQoZXZlbnQpIHtcbiAgLy8gYWxsb3cgdG8gZ2V0IHRoZSBuYXRpdmUgZXZlbnRzIGZyb20gbmFtZXNwYWNlZCBldmVudHMgKCdjbGljay5icy5idXR0b24nIC0tPiAnY2xpY2snKVxuICBldmVudCA9IGV2ZW50LnJlcGxhY2Uoc3RyaXBOYW1lUmVnZXgsICcnKTtcbiAgcmV0dXJuIGN1c3RvbUV2ZW50c1tldmVudF0gfHwgZXZlbnQ7XG59XG5jb25zdCBFdmVudEhhbmRsZXIgPSB7XG4gIG9uKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pIHtcbiAgICBhZGRIYW5kbGVyKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24sIGZhbHNlKTtcbiAgfSxcbiAgb25lKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pIHtcbiAgICBhZGRIYW5kbGVyKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24sIHRydWUpO1xuICB9LFxuICBvZmYoZWxlbWVudCwgb3JpZ2luYWxUeXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbikge1xuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxUeXBlRXZlbnQgIT09ICdzdHJpbmcnIHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IFtpc0RlbGVnYXRlZCwgY2FsbGFibGUsIHR5cGVFdmVudF0gPSBub3JtYWxpemVQYXJhbWV0ZXJzKG9yaWdpbmFsVHlwZUV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pO1xuICAgIGNvbnN0IGluTmFtZXNwYWNlID0gdHlwZUV2ZW50ICE9PSBvcmlnaW5hbFR5cGVFdmVudDtcbiAgICBjb25zdCBldmVudHMgPSBnZXRFbGVtZW50RXZlbnRzKGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0b3JlRWxlbWVudEV2ZW50ID0gZXZlbnRzW3R5cGVFdmVudF0gfHwge307XG4gICAgY29uc3QgaXNOYW1lc3BhY2UgPSBvcmlnaW5hbFR5cGVFdmVudC5zdGFydHNXaXRoKCcuJyk7XG4gICAgaWYgKHR5cGVvZiBjYWxsYWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFNpbXBsZXN0IGNhc2U6IGhhbmRsZXIgaXMgcGFzc2VkLCByZW1vdmUgdGhhdCBsaXN0ZW5lciBPTkxZLlxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhzdG9yZUVsZW1lbnRFdmVudCkubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlbW92ZUhhbmRsZXIoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIGNhbGxhYmxlLCBpc0RlbGVnYXRlZCA/IGhhbmRsZXIgOiBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzTmFtZXNwYWNlKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnRFdmVudCBvZiBPYmplY3Qua2V5cyhldmVudHMpKSB7XG4gICAgICAgIHJlbW92ZU5hbWVzcGFjZWRIYW5kbGVycyhlbGVtZW50LCBldmVudHMsIGVsZW1lbnRFdmVudCwgb3JpZ2luYWxUeXBlRXZlbnQuc2xpY2UoMSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtrZXlIYW5kbGVycywgZXZlbnRdIG9mIE9iamVjdC5lbnRyaWVzKHN0b3JlRWxlbWVudEV2ZW50KSkge1xuICAgICAgY29uc3QgaGFuZGxlcktleSA9IGtleUhhbmRsZXJzLnJlcGxhY2Uoc3RyaXBVaWRSZWdleCwgJycpO1xuICAgICAgaWYgKCFpbk5hbWVzcGFjZSB8fCBvcmlnaW5hbFR5cGVFdmVudC5pbmNsdWRlcyhoYW5kbGVyS2V5KSkge1xuICAgICAgICByZW1vdmVIYW5kbGVyKGVsZW1lbnQsIGV2ZW50cywgdHlwZUV2ZW50LCBldmVudC5jYWxsYWJsZSwgZXZlbnQuZGVsZWdhdGlvblNlbGVjdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHRyaWdnZXIoZWxlbWVudCwgZXZlbnQsIGFyZ3MpIHtcbiAgICBpZiAodHlwZW9mIGV2ZW50ICE9PSAnc3RyaW5nJyB8fCAhZWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0ICQgPSBnZXRqUXVlcnkoKTtcbiAgICBjb25zdCB0eXBlRXZlbnQgPSBnZXRUeXBlRXZlbnQoZXZlbnQpO1xuICAgIGNvbnN0IGluTmFtZXNwYWNlID0gZXZlbnQgIT09IHR5cGVFdmVudDtcbiAgICBsZXQgalF1ZXJ5RXZlbnQgPSBudWxsO1xuICAgIGxldCBidWJibGVzID0gdHJ1ZTtcbiAgICBsZXQgbmF0aXZlRGlzcGF0Y2ggPSB0cnVlO1xuICAgIGxldCBkZWZhdWx0UHJldmVudGVkID0gZmFsc2U7XG4gICAgaWYgKGluTmFtZXNwYWNlICYmICQpIHtcbiAgICAgIGpRdWVyeUV2ZW50ID0gJC5FdmVudChldmVudCwgYXJncyk7XG4gICAgICAkKGVsZW1lbnQpLnRyaWdnZXIoalF1ZXJ5RXZlbnQpO1xuICAgICAgYnViYmxlcyA9ICFqUXVlcnlFdmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO1xuICAgICAgbmF0aXZlRGlzcGF0Y2ggPSAhalF1ZXJ5RXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTtcbiAgICAgIGRlZmF1bHRQcmV2ZW50ZWQgPSBqUXVlcnlFdmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICB9XG4gICAgY29uc3QgZXZ0ID0gaHlkcmF0ZU9iaihuZXcgRXZlbnQoZXZlbnQsIHtcbiAgICAgIGJ1YmJsZXMsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgfSksIGFyZ3MpO1xuICAgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKG5hdGl2ZURpc3BhdGNoKSB7XG4gICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9XG4gICAgaWYgKGV2dC5kZWZhdWx0UHJldmVudGVkICYmIGpRdWVyeUV2ZW50KSB7XG4gICAgICBqUXVlcnlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICByZXR1cm4gZXZ0O1xuICB9XG59O1xuZnVuY3Rpb24gaHlkcmF0ZU9iaihvYmosIG1ldGEgPSB7fSkge1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhtZXRhKSkge1xuICAgIHRyeSB7XG4gICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH0gY2F0Y2ggKF91bnVzZWQpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgI
3H1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgZG9tL21hbmlwdWxhdG9yLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuZnVuY3Rpb24gbm9ybWFsaXplRGF0YSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09ICd0cnVlJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodmFsdWUgPT09IE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKSkge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICB9XG4gIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09ICdudWxsJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gIH0gY2F0Y2ggKF91bnVzZWQpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZURhdGFLZXkoa2V5KSB7XG4gIHJldHVybiBrZXkucmVwbGFjZSgvW0EtWl0vZywgY2hyID0+IGAtJHtjaHIudG9Mb3dlckNhc2UoKX1gKTtcbn1cbmNvbnN0IE1hbmlwdWxhdG9yID0ge1xuICBzZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIGtleSwgdmFsdWUpIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShgZGF0YS1icy0ke25vcm1hbGl6ZURhdGFLZXkoa2V5KX1gLCB2YWx1ZSk7XG4gIH0sXG4gIHJlbW92ZURhdGFBdHRyaWJ1dGUoZWxlbWVudCwga2V5KSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYGRhdGEtYnMtJHtub3JtYWxpemVEYXRhS2V5KGtleSl9YCk7XG4gIH0sXG4gIGdldERhdGFBdHRyaWJ1dGVzKGVsZW1lbnQpIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgIGNvbnN0IGJzS2V5cyA9IE9iamVjdC5rZXlzKGVsZW1lbnQuZGF0YXNldCkuZmlsdGVyKGtleSA9PiBrZXkuc3RhcnRzV2l0aCgnYnMnKSAmJiAha2V5LnN0YXJ0c1dpdGgoJ2JzQ29uZmlnJykpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGJzS2V5cykge1xuICAgICAgbGV0IHB1cmVLZXkgPSBrZXkucmVwbGFjZSgvXmJzLywgJycpO1xuICAgICAgcHVyZUtleSA9IHB1cmVLZXkuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBwdXJlS2V5LnNsaWNlKDEpO1xuICAgICAgYXR0cmlidXRlc1twdXJlS2V5XSA9IG5vcm1hbGl6ZURhdGEoZWxlbWVudC5kYXRhc2V0W2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgfSxcbiAgZ2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCBrZXkpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplRGF0YShlbGVtZW50LmdldEF0dHJpYnV0ZShgZGF0YS1icy0ke25vcm1hbGl6ZURhdGFLZXkoa2V5KX1gKSk7XG4gIH1cbn07XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB1dGlsL2NvbmZpZy5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQ29uZmlnIHtcbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBoYXZlIHRvIGltcGxlbWVudCB0aGUgc3RhdGljIG1ldGhvZCBcIk5BTUVcIiwgZm9yIGVhY2ggY29tcG9uZW50IScpO1xuICB9XG4gIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgY29uZmlnID0gdGhpcy5fbWVyZ2VDb25maWdPYmooY29uZmlnKTtcbiAgICBjb25maWcgPSB0aGlzLl9jb25maWdBZnRlck1lcmdlKGNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZUNoZWNrQ29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIF9tZXJnZUNvbmZpZ09iaihjb25maWcsIGVsZW1lbnQpIHtcbiAgICBjb25zdCBqc29uQ29uZmlnID0gaXNFbGVtZW50KGVsZW1lbnQpID8gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCAnY29uZmlnJykgOiB7fTsgLy8gdHJ5IHRvIHBhcnNlXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0LFxuICAgICAgLi4uKHR5cGVvZiBqc29uQ29uZmlnID09PSAnb2JqZWN0JyA/IGpzb25Db25maWcgOiB7fSksXG4gICAgICAuLi4oaXNFbGVtZW50KGVsZW1lbnQpID8gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZXMoZWxlbWVudCkgOiB7fSksXG4gICAgICAuLi4odHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgPyBjb25maWcgOiB7fSlcbiAgICB9O1xuICB9XG4gIF90eXBlQ2hlY2tDb25maWcoY29uZmlnLCBjb25maWdUeXBlcyA9IHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpIHtcbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eSwgZXhwZWN0ZWRUeXBlc10gb2YgT2JqZWN0LmVud
3HJpZXMoY29uZmlnVHlwZXMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1twcm9wZXJ0eV07XG4gICAgICBjb25zdCB2YWx1ZVR5cGUgPSBpc0VsZW1lbnQodmFsdWUpID8gJ2VsZW1lbnQnIDogdG9UeXBlKHZhbHVlKTtcbiAgICAgIGlmICghbmV3IFJlZ0V4cChleHBlY3RlZFR5cGVzKS50ZXN0KHZhbHVlVHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLk5BTUUudG9VcHBlckNhc2UoKX06IE9wdGlvbiBcIiR7cHJvcGVydHl9XCIgcHJvdmlkZWQgdHlwZSBcIiR7dmFsdWVUeXBlfVwiIGJ1dCBleHBlY3RlZCB0eXBlIFwiJHtleHBlY3RlZFR5cGVzfVwiLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgYmFzZS1jb21wb25lbnQuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgVkVSU0lPTiA9ICc1LjMuOCc7XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEJhc2VDb21wb25lbnQgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIGVsZW1lbnQgPSBnZXRFbGVtZW50KGVsZW1lbnQpO1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICBEYXRhLnNldCh0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZLCB0aGlzKTtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBkaXNwb3NlKCkge1xuICAgIERhdGEucmVtb3ZlKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuREFUQV9LRVkpO1xuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FVkVOVF9LRVkpO1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKSB7XG4gICAgICB0aGlzW3Byb3BlcnR5TmFtZV0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX3F1ZXVlQ2FsbGJhY2soY2FsbGJhY2ssIGVsZW1lbnQsIGlzQW5pbWF0ZWQgPSB0cnVlKSB7XG4gICAgZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbihjYWxsYmFjaywgZWxlbWVudCwgaXNBbmltYXRlZCk7XG4gIH1cbiAgX2dldENvbmZpZyhjb25maWcpIHtcbiAgICBjb25maWcgPSB0aGlzLl9tZXJnZUNvbmZpZ09iaihjb25maWcsIHRoaXMuX2VsZW1lbnQpO1xuICAgIGNvbmZpZyA9IHRoaXMuX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKTtcbiAgICB0aGlzLl90eXBlQ2hlY2tDb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBnZXRJbnN0YW5jZShlbGVtZW50KSB7XG4gICAgcmV0dXJuIERhdGEuZ2V0KGdldEVsZW1lbnQoZWxlbWVudCksIHRoaXMuREFUQV9LRVkpO1xuICB9XG4gIHN0YXRpYyBnZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQsIGNvbmZpZyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW5zdGFuY2UoZWxlbWVudCkgfHwgbmV3IHRoaXMoZWxlbWVudCwgdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgPyBjb25maWcgOiBudWxsKTtcbiAgfVxuICBzdGF0aWMgZ2V0IFZFUlNJT04oKSB7XG4gICAgcmV0dXJuIFZFUlNJT047XG4gIH1cbiAgc3RhdGljIGdldCBEQVRBX0tFWSgpIHtcbiAgICByZXR1cm4gYGJzLiR7dGhpcy5OQU1FfWA7XG4gIH1cbiAgc3RhdGljIGdldCBFVkVOVF9LRVkoKSB7XG4gICAgcmV0dXJuIGAuJHt0aGlzLkRBVEFfS0VZfWA7XG4gIH1cbiAgc3RhdGljIGV2ZW50TmFtZShuYW1lKSB7XG4gICAgcmV0dXJuIGAke25hbWV9JHt0aGlzLkVWRU5UX0tFWX1gO1xuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBkb20vc2VsZWN0b3ItZW5naW5lLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuY29uc3QgZ2V0U2VsZWN0b3IgPSBlbGVtZW50ID0+IHtcbiAgbGV0IHNlbGVjdG9yID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtdGFyZ2V0Jyk7XG4gIGlmICghc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09ICcjJykge1xuICAgIGxldCBocmVmQXR0cmlidXRlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcblxuICAgIC8vIFRoZSBvbmx5IHZhbGlkIGNvbnRlbnQgdGhhdCBjb3VsZCBkb3VibGUgYXMgYSBzZWxlY3RvciBhcmUgSURzIG9yIGNsYXNzZXMsXG4gICAgLy8gc28gZXZlcnl0aGluZyBzdGFydGluZyB3aXRoIGAjYCBvciBgLmAuIElmIGEgXCJyZWFsXCIgVVJMIGlzIHVzZWQgYXMgdGhlIHNlbGVjdG9yLFxuICAgIC8vIGBkb2N1bWVudC5xdWVyeVNlbGVjdG9yYCB3aWxsIHJpZ2h0ZnVsbHkgY29tcGxhaW4gaXQgaXMgaW52YWxpZC5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8zMjI3M1xuICAgIGlmICghaHJlZkF0dHJpYnV0ZSB8fCAhaHJlZkF0dHJpYnV0ZS5pbmNsdWRlcygnIycpICYmICFocmVmQXR0cmlidXRlLnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWUgQ01TIHB1dHMgb3V0IGEgZnVsbCBVUkwgd2l0aCB0aGUgYW5jaG9yIGFwcGVuZGVkXG4gICAgaWYgKGhyZWZBdHRyaWJ1dGUuaW5jbHVkZXMoJyMnKSAmJiAhaHJlZkF0dHJpYnV0ZS5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgIGhyZWZBdHRyaWJ1dGUgPSBgIyR7aHJlZkF0dHJpYnV0ZS5zcGxpdCgnIycpWzFdfWA7XG4gICAgfVxuICAgIHNlbGVjdG9yID0gaHJlZkF0dHJpYnV0ZSAmJiBocmVmQXR0cmlidXRlICE9PSAnIycgPyBocmVmQXR0cmlidXRlLnRyaW0oKSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIHNlbGVjdG9yID8gc2VsZWN0b3Iuc3BsaXQoJywnKS5tYXAoc2VsID0+IHBhcnNlU2VsZWN0b3Ioc2VsKSkuam9pbignLCcpIDogbnVsbDtcbn07XG5jb25zdCBTZWxlY3RvckVuZ2luZSA9IHtcbiAgZmluZChzZWxlY3RvciwgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIHJldHVybi
3BbXS5jb25jYXQoLi4uRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbC5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKSk7XG4gIH0sXG4gIGZpbmRPbmUoc2VsZWN0b3IsIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICByZXR1cm4gRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3Rvci5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTtcbiAgfSxcbiAgY2hpbGRyZW4oZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gW10uY29uY2F0KC4uLmVsZW1lbnQuY2hpbGRyZW4pLmZpbHRlcihjaGlsZCA9PiBjaGlsZC5tYXRjaGVzKHNlbGVjdG9yKSk7XG4gIH0sXG4gIHBhcmVudHMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICBjb25zdCBwYXJlbnRzID0gW107XG4gICAgbGV0IGFuY2VzdG9yID0gZWxlbWVudC5wYXJlbnROb2RlLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgcGFyZW50cy5wdXNoKGFuY2VzdG9yKTtcbiAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50Tm9kZS5jbG9zZXN0KHNlbGVjdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHM7XG4gIH0sXG4gIHByZXYoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICBsZXQgcHJldmlvdXMgPSBlbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgd2hpbGUgKHByZXZpb3VzKSB7XG4gICAgICBpZiAocHJldmlvdXMubWF0Y2hlcyhzZWxlY3RvcikpIHtcbiAgICAgICAgcmV0dXJuIFtwcmV2aW91c107XG4gICAgICB9XG4gICAgICBwcmV2aW91cyA9IHByZXZpb3VzLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfSxcbiAgLy8gVE9ETzogdGhpcyBpcyBub3cgdW51c2VkOyByZW1vdmUgbGF0ZXIgYWxvbmcgd2l0aCBwcmV2KClcbiAgbmV4dChlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIGxldCBuZXh0ID0gZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgd2hpbGUgKG5leHQpIHtcbiAgICAgIGlmIChuZXh0Lm1hdGNoZXMoc2VsZWN0b3IpKSB7XG4gICAgICAgIHJldHVybiBbbmV4dF07XG4gICAgICB9XG4gICAgICBuZXh0ID0gbmV4dC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfSxcbiAgZm9jdXNhYmxlQ2hpbGRyZW4oZWxlbWVudCkge1xuICAgIGNvbnN0IGZvY3VzYWJsZXMgPSBbJ2EnLCAnYnV0dG9uJywgJ2lucHV0JywgJ3RleHRhcmVhJywgJ3NlbGVjdCcsICdkZXRhaWxzJywgJ1t0YWJpbmRleF0nLCAnW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nXS5tYXAoc2VsZWN0b3IgPT4gYCR7c2VsZWN0b3J9Om5vdChbdGFiaW5kZXhePVwiLVwiXSlgKS5qb2luKCcsJyk7XG4gICAgcmV0dXJuIHRoaXMuZmluZChmb2N1c2FibGVzLCBlbGVtZW50KS5maWx0ZXIoZWwgPT4gIWlzRGlzYWJsZWQoZWwpICYmIGlzVmlzaWJsZShlbCkpO1xuICB9LFxuICBnZXRTZWxlY3RvckZyb21FbGVtZW50KGVsZW1lbnQpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGdldFNlbGVjdG9yKGVsZW1lbnQpO1xuICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoc2VsZWN0b3IpID8gc2VsZWN0b3IgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgZ2V0RWxlbWVudEZyb21TZWxlY3RvcihlbGVtZW50KSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBnZXRTZWxlY3RvcihlbGVtZW50KTtcbiAgICByZXR1cm4gc2VsZWN0b3IgPyBTZWxlY3RvckVuZ2luZS5maW5kT25lKHNlbGVjdG9yKSA6IG51bGw7XG4gIH0sXG4gIGdldE11bHRpcGxlRWxlbWVudHNGcm9tU2VsZWN0b3IoZWxlbWVudCkge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3IoZWxlbWVudCk7XG4gICAgcmV0dXJuIHNlbGVjdG9yID8gU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvcikgOiBbXTtcbiAgfVxufTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIHV0aWwvY29tcG9uZW50LWZ1bmN0aW9ucy5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmNvbnN0IGVuYWJsZURpc21pc3NUcmlnZ2VyID0gKGNvbXBvbmVudCwgbWV0aG9kID0gJ2hpZGUnKSA9PiB7XG4gIGNvbnN0IGNsaWNrRXZlbnQgPSBgY2xpY2suZGlzbWlzcyR7Y29tcG9uZW50LkVWRU5UX0tFWX1gO1xuICBjb25zdCBuYW1lID0gY29tcG9uZW50Lk5BTUU7XG4gIEV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgY2xpY2tFdmVudCwgYFtkYXRhLWJzLWRpc21pc3M9XCIke25hbWV9XCJdYCwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKFsnQScsICdBUkVBJ10uaW5jbHVkZXModGhpcy50YWdOYW1lKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGlzRGlzYWJsZWQodGhpcykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0ID0gU2VsZWN0b3JFbmdpbmUuZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKSB8fCB0aGlzLmNsb3Nlc3QoYC4ke25hbWV9YCk7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnQuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpO1xuXG4gICAgLy8gTWV0aG9kIGFyZ3VtZW50IGlzIGxlZnQsIGZvciBBbGVydCBhbmQgb25seSwgYXMgaXQgZG9lc24ndCBpbXBsZW1lbnQgdGhlICdoaWRlJyBtZXRob2RcbiAgICBpbnN0YW5jZVttZXRob2RdKCk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIGFsZXJ0LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkZiA9ICdhbGVydCc7XG5jb25zdCBEQVRBX0tFWSRhID0gJ2JzLmFsZXJ0JztcbmNvbnN0IEVWRU5UX0tFWSRiID0gYC4ke0RBVEFfS0VZJGF9YDtcbmNvbnN0IEVWRU5UX0NMT1NFID0gYGNsb3NlJHtFVkVOVF9LRVkkYn1gO1xuY29uc3QgRVZFTlRfQ0xPU0VEID0gYGNsb3NlZCR7RVZFTlRfS0VZJGJ9YDtcbmNvbnN0IENMQVNTX05BTUVfRkFERS
3Q1ID0gJ2ZhZGUnO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDggPSAnc2hvdyc7XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEFsZXJ0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGY7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgY2xvc2UoKSB7XG4gICAgY29uc3QgY2xvc2VFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0NMT1NFKTtcbiAgICBpZiAoY2xvc2VFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckOCk7XG4gICAgY29uc3QgaXNBbmltYXRlZCA9IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRkFERSQ1KTtcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHRoaXMuX2Rlc3Ryb3lFbGVtZW50KCksIHRoaXMuX2VsZW1lbnQsIGlzQW5pbWF0ZWQpO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfZGVzdHJveUVsZW1lbnQoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKTtcbiAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9DTE9TRUQpO1xuICAgIHRoaXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gQWxlcnQuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTtcbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZGF0YVtjb25maWddID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnN0YXJ0c1dpdGgoJ18nKSB8fCBjb25maWcgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgIH1cbiAgICAgIGRhdGFbY29uZmlnXSh0aGlzKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuZW5hYmxlRGlzbWlzc1RyaWdnZXIoQWxlcnQsICdjbG9zZScpO1xuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihBbGVydCk7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBidXR0b24uanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSRlID0gJ2J1dHRvbic7XG5jb25zdCBEQVRBX0tFWSQ5ID0gJ2JzLmJ1dHRvbic7XG5jb25zdCBFVkVOVF9LRVkkYSA9IGAuJHtEQVRBX0tFWSQ5fWA7XG5jb25zdCBEQVRBX0FQSV9LRVkkNiA9ICcuZGF0YS1hcGknO1xuY29uc3QgQ0xBU1NfTkFNRV9BQ1RJVkUkMyA9ICdhY3RpdmUnO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUkNSA9ICdbZGF0YS1icy10b2dnbGU9XCJidXR0b25cIl0nO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkNiA9IGBjbGljayR7RVZFTlRfS0VZJGF9JHtEQVRBX0FQSV9LRVkkNn1gO1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBCdXR0b24gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkZTtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICB0b2dnbGUoKSB7XG4gICAgLy8gVG9nZ2xlIGNsYXNzIGFuZCBzeW5jIHRoZSBgYXJpYS1wcmVzc2VkYCBhdHRyaWJ1dGUgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBgLnRvZ2dsZSgpYCBtZXRob2RcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJywgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKENMQVNTX05BTUVfQUNUSVZFJDMpKTtcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IEJ1dHRvbi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpO1xuICAgICAgaWYgKGNvbmZpZyA9PT0gJ3RvZ2dsZScpIHtcbiAgICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkNiwgU0VMRUNUT1JfREFUQV9UT0dHTEUkNSwgZXZlbnQgPT4ge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBjb25zdCBidXR0b24gPSBldmVudC50YXJnZXQuY2xvc2VzdChTRUxFQ1RPUl9EQVRBX1RPR0dMRSQ1KTtcbiAgY29uc3QgZGF0YSA9IEJ1dHRvbi5nZXRPckNyZWF0ZUluc3RhbmNlKGJ1dHRvbik7XG4gIGRhdGEudG9nZ2xlKCk7XG59KTtcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQnV0dG9uKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIHV0aWwvc3dpcGUuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSRkID0gJ3N3aXBlJztcbmNvbnN0IEVWRU5UX0tFWSQ5ID0gJy5icy5zd2lwZSc7XG5jb25zdCBFVkVOVF9UT1VDSFNUQVJUID0gYHRvdWNoc3RhcnQke0VWRU5UX0tFWSQ5fWA7XG5jb25zdCBFVkVOVF9UT1VDSE1PVkUgPSBgdG91Y2htb3ZlJHtFVkVOVF9LRVkkO
3X1gO1xuY29uc3QgRVZFTlRfVE9VQ0hFTkQgPSBgdG91Y2hlbmQke0VWRU5UX0tFWSQ5fWA7XG5jb25zdCBFVkVOVF9QT0lOVEVSRE9XTiA9IGBwb2ludGVyZG93biR7RVZFTlRfS0VZJDl9YDtcbmNvbnN0IEVWRU5UX1BPSU5URVJVUCA9IGBwb2ludGVydXAke0VWRU5UX0tFWSQ5fWA7XG5jb25zdCBQT0lOVEVSX1RZUEVfVE9VQ0ggPSAndG91Y2gnO1xuY29uc3QgUE9JTlRFUl9UWVBFX1BFTiA9ICdwZW4nO1xuY29uc3QgQ0xBU1NfTkFNRV9QT0lOVEVSX0VWRU5UID0gJ3BvaW50ZXItZXZlbnQnO1xuY29uc3QgU1dJUEVfVEhSRVNIT0xEID0gNDA7XG5jb25zdCBEZWZhdWx0JGMgPSB7XG4gIGVuZENhbGxiYWNrOiBudWxsLFxuICBsZWZ0Q2FsbGJhY2s6IG51bGwsXG4gIHJpZ2h0Q2FsbGJhY2s6IG51bGxcbn07XG5jb25zdCBEZWZhdWx0VHlwZSRjID0ge1xuICBlbmRDYWxsYmFjazogJyhmdW5jdGlvbnxudWxsKScsXG4gIGxlZnRDYWxsYmFjazogJyhmdW5jdGlvbnxudWxsKScsXG4gIHJpZ2h0Q2FsbGJhY2s6ICcoZnVuY3Rpb258bnVsbCknXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBTd2lwZSBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgaWYgKCFlbGVtZW50IHx8ICFTd2lwZS5pc1N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpO1xuICAgIHRoaXMuX2RlbHRhWCA9IDA7XG4gICAgdGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHMgPSBCb29sZWFuKHdpbmRvdy5Qb2ludGVyRXZlbnQpO1xuICAgIHRoaXMuX2luaXRFdmVudHMoKTtcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JGM7XG4gIH1cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkYztcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkZDtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBkaXNwb3NlKCkge1xuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZJDkpO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfc3RhcnQoZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzKSB7XG4gICAgICB0aGlzLl9kZWx0YVggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9ldmVudElzUG9pbnRlclBlblRvdWNoKGV2ZW50KSkge1xuICAgICAgdGhpcy5fZGVsdGFYID0gZXZlbnQuY2xpZW50WDtcbiAgICB9XG4gIH1cbiAgX2VuZChldmVudCkge1xuICAgIGlmICh0aGlzLl9ldmVudElzUG9pbnRlclBlblRvdWNoKGV2ZW50KSkge1xuICAgICAgdGhpcy5fZGVsdGFYID0gZXZlbnQuY2xpZW50WCAtIHRoaXMuX2RlbHRhWDtcbiAgICB9XG4gICAgdGhpcy5faGFuZGxlU3dpcGUoKTtcbiAgICBleGVjdXRlKHRoaXMuX2NvbmZpZy5lbmRDYWxsYmFjayk7XG4gIH1cbiAgX21vdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9kZWx0YVggPSBldmVudC50b3VjaGVzICYmIGV2ZW50LnRvdWNoZXMubGVuZ3RoID4gMSA/IDAgOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLl9kZWx0YVg7XG4gIH1cbiAgX2hhbmRsZVN3aXBlKCkge1xuICAgIGNvbnN0IGFic0RlbHRhWCA9IE1hdGguYWJzKHRoaXMuX2RlbHRhWCk7XG4gICAgaWYgKGFic0RlbHRhWCA8PSBTV0lQRV9USFJFU0hPTEQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGlyZWN0aW9uID0gYWJzRGVsdGFYIC8gdGhpcy5fZGVsdGFYO1xuICAgIHRoaXMuX2RlbHRhWCA9IDA7XG4gICAgaWYgKCFkaXJlY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXhlY3V0ZShkaXJlY3Rpb24gPiAwID8gdGhpcy5fY29uZmlnLnJpZ2h0Q2FsbGJhY2sgOiB0aGlzLl9jb25maWcubGVmdENhbGxiYWNrKTtcbiAgfVxuICBfaW5pdEV2ZW50cygpIHtcbiAgICBpZiAodGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHMpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9QT0lOVEVSRE9XTiwgZXZlbnQgPT4gdGhpcy5fc3RhcnQoZXZlbnQpKTtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9QT0lOVEVSVVAsIGV2ZW50ID0+IHRoaXMuX2VuZChldmVudCkpO1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfUE9JTlRFUl9FVkVOVCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSFNUQVJULCBldmVudCA9PiB0aGlzLl9zdGFydChldmVudCkpO1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1RPVUNITU9WRSwgZXZlbnQgPT4gdGhpcy5fbW92ZShldmVudCkpO1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1RPVUNIRU5ELCBldmVudCA9PiB0aGlzLl9lbmQoZXZlbnQpKTtcbiAgICB9XG4gIH1cbiAgX2V2ZW50SXNQb2ludGVyUGVuVG91Y2goZXZlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHMgJiYgKGV2ZW50LnBvaW50ZXJUeXBlID09PSBQT0lOVEVSX1RZUEVfUEVOIHx8IGV2ZW50LnBvaW50ZXJUeXBlID09PSBQT0lOVEVSX1RZUEVfVE9VQ0gpO1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBpc1N1cHBvcnRlZCgpIHtcbiAgICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG4gIH1cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIGNhcm91c2VsLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkYyA9ICdjYXJvdXNlbCc7XG5jb25zdCBEQVRBX0tFWSQ4ID0gJ2JzLmNhcm91c2VsJztcbmNvbnN0IEVWRU5UX0tFWSQ4ID0gYC4ke0RBVEFfS0VZJDh9YDtcbmNvbnN0IERBVEFfQVBJX0tFWSQ1ID0gJy5kYXRhLWFwaSc7XG5jb25zdCBBUlJPV19MRUZUX0tFWSQxID0gJ0Fycm93TGVmdCc7XG5jb25zdCBBUlJPV19SSUdIVF9LRVkkMSA9ICdBcnJvd1JpZ2h0JztcbmNvbnN0IFRPVUNIRVZFTlRfQ09NUEFUX1dBSVQgPSA1MDA7IC8vIFRpbWUgZm9yIG1vdXNlIGNvbXBhdCBldmVudHMgdG8gZmlyZSBhZnRlciB0b3VjaFxuXG5jb25zdCBPUkRFUl9ORVhUID0gJ25leHQnO1xuY29uc3QgT1JERVJfUFJFViA9ICdwcmV2JztcbmNvbnN0IERJUkVDVElPTl9MRUZUID0gJ2xlZnQnO1xuY29uc3QgRElSRUNUSU9OX1JJR0hUID0gJ3JpZ2h0JztcbmNvbnN0IEVWRU5UX1NMSURFID0gYHNsaWRlJHtFVkVOVF9LRVkkOH1gO1xuY29uc3QgRVZFTlRfU0xJRCA9IGBzbGlkJHtFVkVOVF9LRVkkOH1gO1xuY29uc3QgRVZFTlRfS0VZRE9XTiQxID0gYGtleWRvd24ke0VWRU5UX0tFWSQ4fWA7XG5jb25zdCBFVkVOVF9NT1VTRUVOVEVSJDEgPSBgbW91c2VlbnRlciR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX01PVVNFTEVBVkUkMSA9IGBtb3VzZWxlYXZlJHtFVkVOVF9LRVkkOH1gO1xuY29uc3QgRVZFTlRfRFJBR19TVEFSVCA9IGBkcmFnc3RhcnQke0VWRU5UX0tFWSQ4fWA7XG5jb25zdCBFVkVOVF9MT0FEX0RBVEFfQVBJJDMgPSBgbG9hZCR7RVZFTlRfS0VZJDh9JHtEQVRBX0FQSV9LRVkkNX1gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkNSA9IGBjbGljayR7RVZFTlRfS0VZJDh9JHtEQVRBX0FQSV9LRVkkNX1gO1xuY29uc3QgQ0xBU1NfTkFNRV9DQVJPVVNFTCA9ICdjYXJvdXNlbCc7XG5jb25zdCBDTEFTU19OQU1FX0FDVElWRSQyID0gJ2FjdGl2ZSc7XG5jb25zdCBDTEFTU19OQU1FX1NMSURFID0gJ3NsaWRlJztcbmNvbnN0IENMQVNTX05BTUVfRU5EID0gJ2Nhcm91c2VsLWl0ZW0tZW5kJztcbmNvbnN0IENMQVNTX05BTUVfU1RBUlQgPSAnY2Fyb3VzZWwtaXRlbS1zdGFydCc7XG5jb25zdCBDTEFTU19OQU1FX05FWFQgPSAnY2Fyb3VzZWwtaXRlbS1uZXh0JztcbmNvbnN0IENMQVNTX05BTUVfUFJFViA9ICdjYXJvdXNlbC1pdGVtLXByZXYnO1xuY29uc3QgU0VMRUNUT1JfQUNUSVZF
3ID0gJy5hY3RpdmUnO1xuY29uc3QgU0VMRUNUT1JfSVRFTSA9ICcuY2Fyb3VzZWwtaXRlbSc7XG5jb25zdCBTRUxFQ1RPUl9BQ1RJVkVfSVRFTSA9IFNFTEVDVE9SX0FDVElWRSArIFNFTEVDVE9SX0lURU07XG5jb25zdCBTRUxFQ1RPUl9JVEVNX0lNRyA9ICcuY2Fyb3VzZWwtaXRlbSBpbWcnO1xuY29uc3QgU0VMRUNUT1JfSU5ESUNBVE9SUyA9ICcuY2Fyb3VzZWwtaW5kaWNhdG9ycyc7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1NMSURFID0gJ1tkYXRhLWJzLXNsaWRlXSwgW2RhdGEtYnMtc2xpZGUtdG9dJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfUklERSA9ICdbZGF0YS1icy1yaWRlPVwiY2Fyb3VzZWxcIl0nO1xuY29uc3QgS0VZX1RPX0RJUkVDVElPTiA9IHtcbiAgW0FSUk9XX0xFRlRfS0VZJDFdOiBESVJFQ1RJT05fUklHSFQsXG4gIFtBUlJPV19SSUdIVF9LRVkkMV06IERJUkVDVElPTl9MRUZUXG59O1xuY29uc3QgRGVmYXVsdCRiID0ge1xuICBpbnRlcnZhbDogNTAwMCxcbiAga2V5Ym9hcmQ6IHRydWUsXG4gIHBhdXNlOiAnaG92ZXInLFxuICByaWRlOiBmYWxzZSxcbiAgdG91Y2g6IHRydWUsXG4gIHdyYXA6IHRydWVcbn07XG5jb25zdCBEZWZhdWx0VHlwZSRiID0ge1xuICBpbnRlcnZhbDogJyhudW1iZXJ8Ym9vbGVhbiknLFxuICAvLyBUT0RPOnY2IHJlbW92ZSBib29sZWFuIHN1cHBvcnRcbiAga2V5Ym9hcmQ6ICdib29sZWFuJyxcbiAgcGF1c2U6ICcoc3RyaW5nfGJvb2xlYW4pJyxcbiAgcmlkZTogJyhib29sZWFufHN0cmluZyknLFxuICB0b3VjaDogJ2Jvb2xlYW4nLFxuICB3cmFwOiAnYm9vbGVhbidcbn07XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIENhcm91c2VsIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZyk7XG4gICAgdGhpcy5faW50ZXJ2YWwgPSBudWxsO1xuICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX2lzU2xpZGluZyA9IGZhbHNlO1xuICAgIHRoaXMudG91Y2hUaW1lb3V0ID0gbnVsbDtcbiAgICB0aGlzLl9zd2lwZUhlbHBlciA9IG51bGw7XG4gICAgdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0lORElDQVRPUlMsIHRoaXMuX2VsZW1lbnQpO1xuICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yaWRlID09PSBDTEFTU19OQU1FX0NBUk9VU0VMKSB7XG4gICAgICB0aGlzLmN5Y2xlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkYjtcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSRiO1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSRjO1xuICB9XG5cbiAgLy8gUHVibGljXG4gIG5leHQoKSB7XG4gICAgdGhpcy5fc2xpZGUoT1JERVJfTkVYVCk7XG4gIH1cbiAgbmV4dFdoZW5WaXNpYmxlKCkge1xuICAgIC8vIEZJWE1FIFRPRE8gdXNlIGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgXG4gICAgLy8gRG9uJ3QgY2FsbCBuZXh0IHdoZW4gdGhlIHBhZ2UgaXNuJ3QgdmlzaWJsZVxuICAgIC8vIG9yIHRoZSBjYXJvdXNlbCBvciBpdHMgcGFyZW50IGlzbid0IHZpc2libGVcbiAgICBpZiAoIWRvY3VtZW50LmhpZGRlbiAmJiBpc1Zpc2libGUodGhpcy5fZWxlbWVudCkpIHtcbiAgICAgIHRoaXMubmV4dCgpO1xuICAgIH1cbiAgfVxuICBwcmV2KCkge1xuICAgIHRoaXMuX3NsaWRlKE9SREVSX1BSRVYpO1xuICB9XG4gIHBhdXNlKCkge1xuICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHtcbiAgICAgIHRyaWdnZXJUcmFuc2l0aW9uRW5kKHRoaXMuX2VsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XG4gIH1cbiAgY3ljbGUoKSB7XG4gICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xuICAgIHRoaXMuX3VwZGF0ZUludGVydmFsKCk7XG4gICAgdGhpcy5faW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLm5leHRXaGVuVmlzaWJsZSgpLCB0aGlzLl9jb25maWcuaW50ZXJ2YWwpO1xuICB9XG4gIF9tYXliZUVuYWJsZUN5Y2xlKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnJpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2lzU2xpZGluZykge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uZSh0aGlzLl9lbGVtZW50LCBFVkVOVF9TTElELCAoKSA9PiB0aGlzLmN5Y2xlKCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmN5Y2xlKCk7XG4gIH1cbiAgdG8oaW5kZXgpIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuX2dldEl0ZW1zKCk7XG4gICAgaWYgKGluZGV4ID4gaXRlbXMubGVuZ3RoIC0gMSB8fCBpbmRleCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2lzU2xpZGluZykge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uZSh0aGlzLl9lbGVtZW50LCBFVkVOVF9TTElELCAoKSA9PiB0aGlzLnRvKGluZGV4KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5fZ2V0SXRlbUluZGV4KHRoaXMuX2dldEFjdGl2ZSgpKTtcbiAgICBpZiAoYWN0aXZlSW5kZXggPT09IGluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9yZGVyID0gaW5kZXggPiBhY3RpdmVJbmRleCA/IE9SREVSX05FWFQgOiBPUkRFUl9QUkVWO1xuICAgIHRoaXMuX3NsaWRlKG9yZGVyLCBpdGVtc1tpbmRleF0pO1xuICB9XG4gIGRpc3Bvc2UoKSB7XG4gICAgaWYgKHRoaXMuX3N3aXBlSGVscGVyKSB7XG4gICAgICB0aGlzLl9zd2lwZUhlbHBlci5kaXNwb3NlKCk7XG4gICAgfVxuICAgIHN1cGVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgY29uZmlnLmRlZmF1bHRJbnRlcnZhbCA9IGNvbmZpZy5pbnRlcnZhbDtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIF9hZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5fY29uZmlnLmtleWJvYXJkKSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTiQxLCBldmVudCA9PiB0aGlzLl9rZXlkb3duKGV2ZW50KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb25maWcucGF1c2UgPT09ICdob3ZlcicpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9NT1VTRUVOVEVSJDEsICgpID0+IHRoaXMucGF1c2UoKSk7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VMRUFWRSQxLCAoKSA9PiB0aGlzLl9tYXliZUVuYWJsZUN5Y2xlKCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29uZmlnLnRvdWNoICYmIFN3aXBlLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHRoaXMuX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gI
3H1cbiAgX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZm9yIChjb25zdCBpbWcgb2YgU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9JVEVNX0lNRywgdGhpcy5fZWxlbWVudCkpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbihpbWcsIEVWRU5UX0RSQUdfU1RBUlQsIGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpO1xuICAgIH1cbiAgICBjb25zdCBlbmRDYWxsQmFjayA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jb25maWcucGF1c2UgIT09ICdob3ZlcicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBpdCdzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2UsIG1vdXNlZW50ZXIvbGVhdmUgYXJlIGZpcmVkIGFzXG4gICAgICAvLyBwYXJ0IG9mIHRoZSBtb3VzZSBjb21wYXRpYmlsaXR5IGV2ZW50cyBvbiBmaXJzdCB0YXAgLSB0aGUgY2Fyb3VzZWxcbiAgICAgIC8vIHdvdWxkIHN0b3AgY3ljbGluZyB1bnRpbCB1c2VyIHRhcHBlZCBvdXQgb2YgaXQ7XG4gICAgICAvLyBoZXJlLCB3ZSBsaXN0ZW4gZm9yIHRvdWNoZW5kLCBleHBsaWNpdGx5IHBhdXNlIHRoZSBjYXJvdXNlbFxuICAgICAgLy8gKGFzIGlmIGl0J3MgdGhlIHNlY29uZCB0aW1lIHdlIHRhcCBvbiBpdCwgbW91c2VlbnRlciBjb21wYXQgZXZlbnRcbiAgICAgIC8vIGlzIE5PVCBmaXJlZCkgYW5kIGFmdGVyIGEgdGltZW91dCAodG8gYWxsb3cgZm9yIG1vdXNlIGNvbXBhdGliaWxpdHlcbiAgICAgIC8vIGV2ZW50cyB0byBmaXJlKSB3ZSBleHBsaWNpdGx5IHJlc3RhcnQgY3ljbGluZ1xuXG4gICAgICB0aGlzLnBhdXNlKCk7XG4gICAgICBpZiAodGhpcy50b3VjaFRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMudG91Y2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLl9tYXliZUVuYWJsZUN5Y2xlKCksIFRPVUNIRVZFTlRfQ09NUEFUX1dBSVQgKyB0aGlzLl9jb25maWcuaW50ZXJ2YWwpO1xuICAgIH07XG4gICAgY29uc3Qgc3dpcGVDb25maWcgPSB7XG4gICAgICBsZWZ0Q2FsbGJhY2s6ICgpID0+IHRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoRElSRUNUSU9OX0xFRlQpKSxcbiAgICAgIHJpZ2h0Q2FsbGJhY2s6ICgpID0+IHRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoRElSRUNUSU9OX1JJR0hUKSksXG4gICAgICBlbmRDYWxsYmFjazogZW5kQ2FsbEJhY2tcbiAgICB9O1xuICAgIHRoaXMuX3N3aXBlSGVscGVyID0gbmV3IFN3aXBlKHRoaXMuX2VsZW1lbnQsIHN3aXBlQ29uZmlnKTtcbiAgfVxuICBfa2V5ZG93bihldmVudCkge1xuICAgIGlmICgvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGV2ZW50LnRhcmdldC50YWdOYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBLRVlfVE9fRElSRUNUSU9OW2V2ZW50LmtleV07XG4gICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoZGlyZWN0aW9uKSk7XG4gICAgfVxuICB9XG4gIF9nZXRJdGVtSW5kZXgoZWxlbWVudCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRJdGVtcygpLmluZGV4T2YoZWxlbWVudCk7XG4gIH1cbiAgX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQoaW5kZXgpIHtcbiAgICBpZiAoIXRoaXMuX2luZGljYXRvcnNFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZUluZGljYXRvciA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfQUNUSVZFLCB0aGlzLl9pbmRpY2F0b3JzRWxlbWVudCk7XG4gICAgYWN0aXZlSW5kaWNhdG9yLmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUkMik7XG4gICAgYWN0aXZlSW5kaWNhdG9yLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50Jyk7XG4gICAgY29uc3QgbmV3QWN0aXZlSW5kaWNhdG9yID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShgW2RhdGEtYnMtc2xpZGUtdG89XCIke2luZGV4fVwiXWAsIHRoaXMuX2luZGljYXRvcnNFbGVtZW50KTtcbiAgICBpZiAobmV3QWN0aXZlSW5kaWNhdG9yKSB7XG4gICAgICBuZXdBY3RpdmVJbmRpY2F0b3IuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSQyKTtcbiAgICAgIG5ld0FjdGl2ZUluZGljYXRvci5zZXRBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcsICd0cnVlJyk7XG4gICAgfVxuICB9XG4gIF91cGRhdGVJbnRlcnZhbCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fYWN0aXZlRWxlbWVudCB8fCB0aGlzLl9nZXRBY3RpdmUoKTtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudEludGVydmFsID0gTnVtYmVyLnBhcnNlSW50KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLWludGVydmFsJyksIDEwKTtcbiAgICB0aGlzLl9jb25maWcuaW50ZXJ2YWwgPSBlbGVtZW50SW50ZXJ2YWwgfHwgdGhpcy5fY29uZmlnLmRlZmF1bHRJbnRlcnZhbDtcbiAgfVxuICBfc2xpZGUob3JkZXIsIGVsZW1lbnQgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuX2lzU2xpZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5fZ2V0QWN0aXZlKCk7XG4gICAgY29uc3QgaXNOZXh0ID0gb3JkZXIgPT09IE9SREVSX05FWFQ7XG4gICAgY29uc3QgbmV4dEVsZW1lbnQgPSBlbGVtZW50IHx8IGdldE5leHRBY3RpdmVFbGVtZW50KHRoaXMuX2dldEl0ZW1zKCksIGFjdGl2ZUVsZW1lbnQsIGlzTmV4dCwgdGhpcy5fY29uZmlnLndyYXApO1xuICAgIGlmIChuZXh0RWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXh0RWxlbWVudEluZGV4ID0gdGhpcy5fZ2V0SXRlbUluZGV4KG5leHRFbGVtZW50KTtcbiAgICBjb25zdCB0cmlnZ2VyRXZlbnQgPSBldmVudE5hbWUgPT4ge1xuICAgICAgcmV0dXJuIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIGV2ZW50TmFtZSwge1xuICAgICAgICByZWxhdGVkVGFyZ2V0OiBuZXh0RWxlbWVudCxcbiAgICAgICAgZGlyZWN0aW9uOiB0aGlzLl9vcmRlclRvRGlyZWN0aW9uKG9yZGVyKSxcbiAgICAgICAgZnJvbTogdGhpcy5fZ2V0SXRlbUluZGV4KGFjdGl2ZUVsZW1lbnQpLFxuICAgICAgICB0bzogbmV4dEVsZW1lbnRJbmRleFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBzbGlkZUV2ZW50ID0gdHJpZ2dlckV2ZW50KEVWRU5UX1NMSURFKTtcbiAgICBpZiAoc2xpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghYWN0aXZlRWxlbWVudCB8fCAhbmV4dEVsZW1lbnQpIHtcbiAgICAgIC8vIFNvbWUgd2VpcmRuZXNzIGlzIGhhcHBlbmluZywgc28gd2UgYmFpbFxuICAgICAgLy8gVE9ETzogY2hhbmdlIHRlc3RzIHRoYXQgdXNlIGVtcHR5IGRpdnMgdG8gYXZvaWQgdGhpcyBjaGVja1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc0N5Y2xpbmcgPSBCb29sZWFuKHRoaXMuX2ludGVydmFsKTtcbiAgICB0aGlzLnBhdXNlKCk7XG4gICAgdGhpcy5faXNTbGlkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXRBY3RpdmVJbmRpY2F0b3JFbGVtZW50KG5leHRFbGVtZW50SW5kZXgpO1xuICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICBjb25zdCBkaXJlY3Rpb25hbENsYXNzTmFtZSA9IGlzTmV4dCA/IENMQVNTX05BTUVfU1RBUlQgOiBDTEFTU19OQU1FX0VORDtcbiAgICBjb25zdCBvcmRlckNsYXNzTmFtZSA9IGlzTmV4dCA/IENMQVNTX05BTUVfTkVYVCA6IENMQVNTX05BTUVfUFJFVjtcbiAgICBuZXh0RWxlbWVudC5jbGFzc0xpc3QuYWRkKG9yZGVyQ2xhc3NOYW1lKTtcbiAgICByZWZsb3cobmV4dEVsZW1lbnQpO1xuICAgIGFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChkaXJlY3Rpb25hbENsYXNzTmFtZSk7XG4gICAgbmV4dEVsZW1lbnQuY2xhc3NMaXN0LmFkZChkaXJlY3Rpb25hbENsYXNzTmFtZSk7XG4gICAgY29uc3QgY29tcGxldGVDYWxsQmFjayA9ICgpID0+IHtcbiAgICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZGlyZWN0aW9uYWxDbGFzc05hbWUsIG9yZGVyQ2xhc3NOYW1lKTtcbiAgICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMik7XG4gICAgICBhY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUkMiwgb3JkZXJDbGFzc05hbWUsIGRpcmVjdGlvbmFsQ2xhc3NOYW1lKTtcbiAgICAgIHRoaXMuX2lzU2xpZGluZyA9IGZhbHNlO1xuICAgICAgdHJpZ2dlckV2ZW50KEVWRU5UX1NMSUQpO1xuICAgIH07XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZUNhbGxCYWNrLCBhY3RpdmVFbGVtZW50LCB0aGlzLl9pc0FuaW1hdGVkKCkpO1xuICAgIGlmIChpc0N5Y2xpbmcpIHtcbiAgICAgIHRoaXMuY3ljbGUoKTtcbiAgICB9XG4gI
3H1cbiAgX2lzQW5pbWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0xJREUpO1xuICB9XG4gIF9nZXRBY3RpdmUoKSB7XG4gICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfQUNUSVZFX0lURU0sIHRoaXMuX2VsZW1lbnQpO1xuICB9XG4gIF9nZXRJdGVtcygpIHtcbiAgICByZXR1cm4gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9JVEVNLCB0aGlzLl9lbGVtZW50KTtcbiAgfVxuICBfY2xlYXJJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5faW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpO1xuICAgICAgdGhpcy5faW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cbiAgfVxuICBfZGlyZWN0aW9uVG9PcmRlcihkaXJlY3Rpb24pIHtcbiAgICBpZiAoaXNSVEwoKSkge1xuICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gRElSRUNUSU9OX0xFRlQgPyBPUkRFUl9QUkVWIDogT1JERVJfTkVYVDtcbiAgICB9XG4gICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gRElSRUNUSU9OX0xFRlQgPyBPUkRFUl9ORVhUIDogT1JERVJfUFJFVjtcbiAgfVxuICBfb3JkZXJUb0RpcmVjdGlvbihvcmRlcikge1xuICAgIGlmIChpc1JUTCgpKSB7XG4gICAgICByZXR1cm4gb3JkZXIgPT09IE9SREVSX1BSRVYgPyBESVJFQ1RJT05fTEVGVCA6IERJUkVDVElPTl9SSUdIVDtcbiAgICB9XG4gICAgcmV0dXJuIG9yZGVyID09PSBPUkRFUl9QUkVWID8gRElSRUNUSU9OX1JJR0hUIDogRElSRUNUSU9OX0xFRlQ7XG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBDYXJvdXNlbC5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZyk7XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgZGF0YS50byhjb25maWcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhW2NvbmZpZ10oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSQ1LCBTRUxFQ1RPUl9EQVRBX1NMSURFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gU2VsZWN0b3JFbmdpbmUuZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKTtcbiAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9DQVJPVVNFTCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgY29uc3QgY2Fyb3VzZWwgPSBDYXJvdXNlbC5nZXRPckNyZWF0ZUluc3RhbmNlKHRhcmdldCk7XG4gIGNvbnN0IHNsaWRlSW5kZXggPSB0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS1icy1zbGlkZS10bycpO1xuICBpZiAoc2xpZGVJbmRleCkge1xuICAgIGNhcm91c2VsLnRvKHNsaWRlSW5kZXgpO1xuICAgIGNhcm91c2VsLl9tYXliZUVuYWJsZUN5Y2xlKCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlKHRoaXMsICdzbGlkZScpID09PSAnbmV4dCcpIHtcbiAgICBjYXJvdXNlbC5uZXh0KCk7XG4gICAgY2Fyb3VzZWwuX21heWJlRW5hYmxlQ3ljbGUoKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY2Fyb3VzZWwucHJldigpO1xuICBjYXJvdXNlbC5fbWF5YmVFbmFibGVDeWNsZSgpO1xufSk7XG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJJDMsICgpID0+IHtcbiAgY29uc3QgY2Fyb3VzZWxzID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9EQVRBX1JJREUpO1xuICBmb3IgKGNvbnN0IGNhcm91c2VsIG9mIGNhcm91c2Vscykge1xuICAgIENhcm91c2VsLmdldE9yQ3JlYXRlSW5zdGFuY2UoY2Fyb3VzZWwpO1xuICB9XG59KTtcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQ2Fyb3VzZWwpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgY29sbGFwc2UuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSRiID0gJ2NvbGxhcHNlJztcbmNvbnN0IERBVEFfS0VZJDcgPSAnYnMuY29sbGFwc2UnO1xuY29uc3QgRVZFTlRfS0VZJDcgPSBgLiR7REFUQV9LRVkkN31gO1xuY29uc3QgREFUQV9BUElfS0VZJDQgPSAnLmRhdGEtYXBpJztcbmNvbnN0IEVWRU5UX1NIT1ckNiA9IGBzaG93JHtFVkVOVF9LRVkkN31gO1xuY29uc3QgRVZFTlRfU0hPV04kNiA9IGBzaG93biR7RVZFTlRfS0VZJDd9YDtcbmNvbnN0IEVWRU5UX0hJREUkNiA9IGBoaWRlJHtFVkVOVF9LRVkkN31gO1xuY29uc3QgRVZFTlRfSElEREVOJDYgPSBgaGlkZGVuJHtFVkVOVF9LRVkkN31gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkNCA9IGBjbGljayR7RVZFTlRfS0VZJDd9JHtEQVRBX0FQSV9LRVkkNH1gO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDcgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX0NPTExBUFNFID0gJ2NvbGxhcHNlJztcbmNvbnN0IENMQVNTX05BTUVfQ09MTEFQU0lORyA9ICdjb2xsYXBzaW5nJztcbmNvbnN0IENMQVNTX05BTUVfQ09MTEFQU0VEID0gJ2NvbGxhcHNlZCc7XG5jb25zdCBDTEFTU19OQU1FX0RFRVBFUl9DSElMRFJFTiA9IGA6c2NvcGUgLiR7Q0xBU1NfTkFNRV9DT0xMQVBTRX0gLiR7Q0xBU1NfTkFNRV9DT0xMQVBTRX1gO1xuY29uc3QgQ0xBU1NfTkFNRV9IT1JJWk9OVEFMID0gJ2NvbGxhcHNlLWhvcml6b250YWwnO1xuY29uc3QgV0lEVEggPSAnd2lkdGgnO1xuY29uc3QgSEVJR0hUID0gJ2hlaWdodCc7XG5jb25zdCBTRUxFQ1RPUl9BQ1RJVkVTID0gJy5jb2xsYXBzZS5zaG93LCAuY29sbGFwc2UuY29sbGFwc2luZyc7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQ0ID0gJ1tkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCJdJztcbmNvbnN0IERlZmF1bHQkYSA9IHtcbiAgcGFyZW50OiBudWxsLFxuICB0b2dnbGU6IHRydWVcbn07XG5jb25zdCBEZWZhdWx0VHlwZSRhID0ge1xuICBwYXJlbnQ6ICcobnVsbHxlbGVtZW50KScsXG4gIHRvZ2dsZTogJ2Jvb2xlYW4nXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBDb2xsYXBzZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3RyaWdnZXJBcnJheSA9IFtdO1xuICAgIGNvbnN0IHRvZ2dsZUxpc3QgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFJDQpO1xuICAgIGZvciAoY29uc3QgZWxlbSBvZiB0b2dnbGVMaXN0KSB7XG4gICAgICBjb25zdCBzZWxlY3RvciA9IFNlbGVjdG9yRW5naW5lLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZWxlbSk7XG4gICAgICBjb25zdCBmaWx0ZXJFbGVtZW50ID0gU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvcikuZmlsdGVyKGZvdW5kRWxlbWVudCA9PiBmb3VuZEVsZW1lbnQgPT09IHRoaXMuX2VsZW1lbnQpO1xuICAgICAgaWYgKHNlbGVjdG9yICE9PSBudWxsICYmIGZpbHRlckVsZW1lbnQubGVuZ3RoKSB7XG4gICAgICAgI
3HRoaXMuX3RyaWdnZXJBcnJheS5wdXNoKGVsZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9pbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5wYXJlbnQpIHtcbiAgICAgIHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLl90cmlnZ2VyQXJyYXksIHRoaXMuX2lzU2hvd24oKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb25maWcudG9nZ2xlKSB7XG4gICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JGE7XG4gIH1cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkYTtcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkYjtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cbiAgfVxuICBzaG93KCkge1xuICAgIGlmICh0aGlzLl9pc1RyYW5zaXRpb25pbmcgfHwgdGhpcy5faXNTaG93bigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBhY3RpdmVDaGlsZHJlbiA9IFtdO1xuXG4gICAgLy8gZmluZCBhY3RpdmUgY2hpbGRyZW5cbiAgICBpZiAodGhpcy5fY29uZmlnLnBhcmVudCkge1xuICAgICAgYWN0aXZlQ2hpbGRyZW4gPSB0aGlzLl9nZXRGaXJzdExldmVsQ2hpbGRyZW4oU0VMRUNUT1JfQUNUSVZFUykuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudCAhPT0gdGhpcy5fZWxlbWVudCkubWFwKGVsZW1lbnQgPT4gQ29sbGFwc2UuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50LCB7XG4gICAgICAgIHRvZ2dsZTogZmFsc2VcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgaWYgKGFjdGl2ZUNoaWxkcmVuLmxlbmd0aCAmJiBhY3RpdmVDaGlsZHJlblswXS5faXNUcmFuc2l0aW9uaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XJDYpO1xuICAgIGlmIChzdGFydEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBhY3RpdmVJbnN0YW5jZSBvZiBhY3RpdmVDaGlsZHJlbikge1xuICAgICAgYWN0aXZlSW5zdGFuY2UuaGlkZSgpO1xuICAgIH1cbiAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLl9nZXREaW1lbnNpb24oKTtcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9DT0xMQVBTRSk7XG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQ09MTEFQU0lORyk7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gMDtcbiAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy5fdHJpZ2dlckFycmF5LCB0cnVlKTtcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSB0cnVlO1xuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9DT0xMQVBTSU5HKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNFLCBDTEFTU19OQU1FX1NIT1ckNyk7XG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSAnJztcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOJDYpO1xuICAgIH07XG4gICAgY29uc3QgY2FwaXRhbGl6ZWREaW1lbnNpb24gPSBkaW1lbnNpb25bMF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSgxKTtcbiAgICBjb25zdCBzY3JvbGxTaXplID0gYHNjcm9sbCR7Y2FwaXRhbGl6ZWREaW1lbnNpb259YDtcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLl9lbGVtZW50LCB0cnVlKTtcbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSBgJHt0aGlzLl9lbGVtZW50W3Njcm9sbFNpemVdfXB4YDtcbiAgfVxuICBoaWRlKCkge1xuICAgIGlmICh0aGlzLl9pc1RyYW5zaXRpb25pbmcgfHwgIXRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdGFydEV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSQ2KTtcbiAgICBpZiAoc3RhcnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMuX2dldERpbWVuc2lvbigpO1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGVbZGltZW5zaW9uXSA9IGAke3RoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbZGltZW5zaW9uXX1weGA7XG4gICAgcmVmbG93KHRoaXMuX2VsZW1lbnQpO1xuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNFLCBDTEFTU19OQU1FX1NIT1ckNyk7XG4gICAgZm9yIChjb25zdCB0cmlnZ2VyIG9mIHRoaXMuX3RyaWdnZXJBcnJheSkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IFNlbGVjdG9yRW5naW5lLmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodHJpZ2dlcik7XG4gICAgICBpZiAoZWxlbWVudCAmJiAhdGhpcy5faXNTaG93bihlbGVtZW50KSkge1xuICAgICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW3RyaWdnZXJdLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IHRydWU7XG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQ09MTEFQU0UpO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElEREVOJDYpO1xuICAgIH07XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gJyc7XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdHJ1ZSk7XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9pc1Nob3duKGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0hPVyQ3KTtcbiAgfVxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICBjb25maWcudG9nZ2xlID0gQm9vbGVhbihjb25maWcudG9nZ2xlKTsgLy8gQ29lcmNlIHN0cmluZyB2YWx1ZXNcbiAgICBjb25maWcucGFyZW50ID0gZ2V0RWxlbWVudChjb25maWcucGFyZW50KTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIF9nZXREaW1lbnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfSE9SSVpPTlRBTCkgPyBXSURUSCA6IEhFSUdIVDtcbiAgfVxuICBfaW5pdGlhbGl6ZUNoaWxkcmVuKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuX2dldEZpcnN0TGV2ZWxDaGlsZHJlbihTRUxFQ1RPUl9EQVRBX1RPR0dMRSQ0KTtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gU2VsZWN0b3JFbmdpbmUuZ2V0RWxlbWVudEZyb21TZWxlY3RvcihlbGVtZW50KTtcbiAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW2VsZW1lbnRdLCB0aGlzLl9pc1Nob3duKHNlbGVjdGVkKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIF9nZXRGaXJzdExldmVsQ2hpbGRyZW4oc2VsZWN0b3IpIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFNlbGVjdG9yRW5naW5lLmZpbmQoQ0xBU1NfTkFNRV9ERUVQRVJfQ0hJTERSRU4sIHRoaXMuX2NvbmZpZy5wYXJlbnQpO1xuICAgIC8vIHJlbW92ZSBjaGlsZHJlbiBpZiBncmVhdGVyIGRlcHRoXG4gICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmQoc2VsZWN0b3IsIHRoaXMuX2NvbmZpZy5wYXJlbnQpLmZpbHRlcihlbGVtZW50ID0+ICFjaGlsZHJlbi5pbmNsdWRlcyhlbGVtZW50KSk7XG4gIH1cbiAgX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0cmlnZ2VyQXJyYXksIGlzT3Blbikge1xuICAgIGlmICghdHJpZ2dlckFycmF5Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdHJpZ2dlckFycmF5KSB7XG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoQ0xBU1NfTkFNRV9DT0xMQVBTRUQsICFpc09wZW4pO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBpc09wZW4pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIGNvbnN0IF9jb25maWcgPSB7fTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycgJiYgL3Nob3d8aGlkZS8udGVzdChjb25maWcpKSB7XG4gICAgICBfY29uZmlnLnRvZ2dsZSA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBDb2xsYXBzZS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIF9jb25maWcpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgI
3HRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkNCwgU0VMRUNUT1JfREFUQV9UT0dHTEUkNCwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIC8vIHByZXZlbnREZWZhdWx0IG9ubHkgZm9yIDxhPiBlbGVtZW50cyAod2hpY2ggY2hhbmdlIHRoZSBVUkwpIG5vdCBpbnNpZGUgdGhlIGNvbGxhcHNpYmxlIGVsZW1lbnRcbiAgaWYgKGV2ZW50LnRhcmdldC50YWdOYW1lID09PSAnQScgfHwgZXZlbnQuZGVsZWdhdGVUYXJnZXQgJiYgZXZlbnQuZGVsZWdhdGVUYXJnZXQudGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgU2VsZWN0b3JFbmdpbmUuZ2V0TXVsdGlwbGVFbGVtZW50c0Zyb21TZWxlY3Rvcih0aGlzKSkge1xuICAgIENvbGxhcHNlLmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCwge1xuICAgICAgdG9nZ2xlOiBmYWxzZVxuICAgIH0pLnRvZ2dsZSgpO1xuICB9XG59KTtcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQ29sbGFwc2UpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgZHJvcGRvd24uanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSRhID0gJ2Ryb3Bkb3duJztcbmNvbnN0IERBVEFfS0VZJDYgPSAnYnMuZHJvcGRvd24nO1xuY29uc3QgRVZFTlRfS0VZJDYgPSBgLiR7REFUQV9LRVkkNn1gO1xuY29uc3QgREFUQV9BUElfS0VZJDMgPSAnLmRhdGEtYXBpJztcbmNvbnN0IEVTQ0FQRV9LRVkkMiA9ICdFc2NhcGUnO1xuY29uc3QgVEFCX0tFWSQxID0gJ1RhYic7XG5jb25zdCBBUlJPV19VUF9LRVkkMSA9ICdBcnJvd1VwJztcbmNvbnN0IEFSUk9XX0RPV05fS0VZJDEgPSAnQXJyb3dEb3duJztcbmNvbnN0IFJJR0hUX01PVVNFX0JVVFRPTiA9IDI7IC8vIE1vdXNlRXZlbnQuYnV0dG9uIHZhbHVlIGZvciB0aGUgc2Vjb25kYXJ5IGJ1dHRvbiwgdXN1YWxseSB0aGUgcmlnaHQgYnV0dG9uXG5cbmNvbnN0IEVWRU5UX0hJREUkNSA9IGBoaWRlJHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfSElEREVOJDUgPSBgaGlkZGVuJHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfU0hPVyQ1ID0gYHNob3cke0VWRU5UX0tFWSQ2fWA7XG5jb25zdCBFVkVOVF9TSE9XTiQ1ID0gYHNob3duJHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMyA9IGBjbGljayR7RVZFTlRfS0VZJDZ9JHtEQVRBX0FQSV9LRVkkM31gO1xuY29uc3QgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSA9IGBrZXlkb3duJHtFVkVOVF9LRVkkNn0ke0RBVEFfQVBJX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9LRVlVUF9EQVRBX0FQSSA9IGBrZXl1cCR7RVZFTlRfS0VZJDZ9JHtEQVRBX0FQSV9LRVkkM31gO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDYgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX0RST1BVUCA9ICdkcm9wdXAnO1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QRU5EID0gJ2Ryb3BlbmQnO1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QU1RBUlQgPSAnZHJvcHN0YXJ0JztcbmNvbnN0IENMQVNTX05BTUVfRFJPUFVQX0NFTlRFUiA9ICdkcm9wdXAtY2VudGVyJztcbmNvbnN0IENMQVNTX05BTUVfRFJPUERPV05fQ0VOVEVSID0gJ2Ryb3Bkb3duLWNlbnRlcic7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzID0gJ1tkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJdOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFX1NIT1dOID0gYCR7U0VMRUNUT1JfREFUQV9UT0dHTEUkM30uJHtDTEFTU19OQU1FX1NIT1ckNn1gO1xuY29uc3QgU0VMRUNUT1JfTUVOVSA9ICcuZHJvcGRvd24tbWVudSc7XG5jb25zdCBTRUxFQ1RPUl9OQVZCQVIgPSAnLm5hdmJhcic7XG5jb25zdCBTRUxFQ1RPUl9OQVZCQVJfTkFWID0gJy5uYXZiYXItbmF2JztcbmNvbnN0IFNFTEVDVE9SX1ZJU0lCTEVfSVRFTVMgPSAnLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCknO1xuY29uc3QgUExBQ0VNRU5UX1RPUCA9IGlzUlRMKCkgPyAndG9wLWVuZCcgOiAndG9wLXN0YXJ0JztcbmNvbnN0IFBMQUNFTUVOVF9UT1BFTkQgPSBpc1JUTCgpID8gJ3RvcC1zdGFydCcgOiAndG9wLWVuZCc7XG5jb25zdCBQTEFDRU1FTlRfQk9UVE9NID0gaXNSVEwoKSA/ICdib3R0b20tZW5kJyA6ICdib3R0b20tc3RhcnQnO1xuY29uc3QgUExBQ0VNRU5UX0JPVFRPTUVORCA9IGlzUlRMKCkgPyAnYm90dG9tLXN0YXJ0JyA6ICdib3R0b20tZW5kJztcbmNvbnN0IFBMQUNFTUVOVF9SSUdIVCA9IGlzUlRMKCkgPyAnbGVmdC1zdGFydCcgOiAncmlnaHQtc3RhcnQnO1xuY29uc3QgUExBQ0VNRU5UX0xFRlQgPSBpc1JUTCgpID8gJ3JpZ2h0LXN0YXJ0JyA6ICdsZWZ0LXN0YXJ0JztcbmNvbnN0IFBMQUNFTUVOVF9UT1BDRU5URVIgPSAndG9wJztcbmNvbnN0IFBMQUNFTUVOVF9CT1RUT01DRU5URVIgPSAnYm90dG9tJztcbmNvbnN0IERlZmF1bHQkOSA9IHtcbiAgYXV0b0Nsb3NlOiB0cnVlLFxuICBib3VuZGFyeTogJ2NsaXBwaW5nUGFyZW50cycsXG4gIGRpc3BsYXk6ICdkeW5hbWljJyxcbiAgb2Zmc2V0OiBbMCwgMl0sXG4gIHBvcHBlckNvbmZpZzogbnVsbCxcbiAgcmVmZXJlbmNlOiAndG9nZ2xlJ1xufTtcbmNvbnN0IERlZmF1bHRUeXBlJDkgPSB7XG4gIGF1dG9DbG9zZTogJyhib29sZWFufHN0cmluZyknLFxuICBib3VuZGFyeTogJyhzdHJpbmd8ZWxlbWVudCknLFxuICBkaXNwbGF5OiAnc3RyaW5nJyxcbiAgb2Zmc2V0OiAnKGFycmF5fHN0cmluZ3xmdW5jdGlvbiknLFxuICBwb3BwZXJDb25maWc6ICcobnVsbHxvYmplY3R8ZnVuY3Rpb24pJyxcbiAgcmVmZXJlbmNlOiAnKHN0cmluZ3xlbGVtZW50fG9iamVjdCknXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBEcm9wZG93biBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX3BvcHBlciA9IG51bGw7XG4gICAgdGhpcy5fcGFyZW50ID0gdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlOyAvLyBkcm9wZG93biB3cmFwcGVyXG4gICAgLy8gVE9ETzogdjYgcmV2ZXJ0ICMzNzAxMSAmIGNoYW5nZSBtYXJrdXAgaHR0cHM6Ly9nZXRib290c3RyYXAuY29tL2RvY3MvNS4zL2Zvcm1zL2lucHV0LWdyb3VwL1xuICAgIHRoaXMuX21lbnUgPSBTZWxlY3RvckVuZ2luZS5uZXh0KHRoaXMuX2VsZW1lbnQsIFNFTEVDVE9SX01FTlUpWzBdIHx8IFNlbGVjdG9yRW5naW5lLnByZXYodGhpcy5fZWxlbWVudCwgU0VMRUNUT1JfTUVOVSlbMF0gfHwgU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9NRU5VLCB0aGlzLl9wYXJlbnQpO1xuICAgIHRoaXMuX2luTmF2YmFyID0gdGhpcy5fZGV0ZWN0TmF2YmFyKCk7XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gI
3HN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQ5O1xuICB9XG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDk7XG4gIH1cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGE7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgdG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Nob3duKCkgPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdygpO1xuICB9XG4gIHNob3coKSB7XG4gICAgaWYgKGlzRGlzYWJsZWQodGhpcy5fZWxlbWVudCkgfHwgdGhpcy5faXNTaG93bigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiB0aGlzLl9lbGVtZW50XG4gICAgfTtcbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XJDUsIHJlbGF0ZWRUYXJnZXQpO1xuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jcmVhdGVQb3BwZXIoKTtcblxuICAgIC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSBhZGQgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHRvIHRoZSBib2R5J3MgaW1tZWRpYXRlIGNoaWxkcmVuO1xuICAgIC8vIG9ubHkgbmVlZGVkIGJlY2F1c2Ugb2YgYnJva2VuIGV2ZW50IGRlbGVnYXRpb24gb24gaU9TXG4gICAgLy8gaHR0cHM6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDE0LzAyL21vdXNlX2V2ZW50X2J1Yi5odG1sXG4gICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiAhdGhpcy5fcGFyZW50LmNsb3Nlc3QoU0VMRUNUT1JfTkFWQkFSX05BVikpIHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9uKGVsZW1lbnQsICdtb3VzZW92ZXInLCBub29wKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7XG4gICAgdGhpcy5fbWVudS5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVyQ2KTtcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDYpO1xuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOJDUsIHJlbGF0ZWRUYXJnZXQpO1xuICB9XG4gIGhpZGUoKSB7XG4gICAgaWYgKGlzRGlzYWJsZWQodGhpcy5fZWxlbWVudCkgfHwgIXRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudFxuICAgIH07XG4gICAgdGhpcy5fY29tcGxldGVIaWRlKHJlbGF0ZWRUYXJnZXQpO1xuICB9XG4gIGRpc3Bvc2UoKSB7XG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgc3VwZXIuZGlzcG9zZSgpO1xuICB9XG4gIHVwZGF0ZSgpIHtcbiAgICB0aGlzLl9pbk5hdmJhciA9IHRoaXMuX2RldGVjdE5hdmJhcigpO1xuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlci51cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9jb21wbGV0ZUhpZGUocmVsYXRlZFRhcmdldCkge1xuICAgIGNvbnN0IGhpZGVFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREUkNSwgcmVsYXRlZFRhcmdldCk7XG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgdGhpcyBpcyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlIHdlIHJlbW92ZSB0aGUgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHdlIGFkZGVkIGZvciBpT1Mgc3VwcG9ydFxuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9mZihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlci5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuX21lbnUuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckNik7XG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQ2KTtcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgIE1hbmlwdWxhdG9yLnJlbW92ZURhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSwgJ3BvcHBlcicpO1xuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTiQ1LCByZWxhdGVkVGFyZ2V0KTtcbiAgfVxuICBfZ2V0Q29uZmlnKGNvbmZpZykge1xuICAgIGNvbmZpZyA9IHN1cGVyLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5yZWZlcmVuY2UgPT09ICdvYmplY3QnICYmICFpc0VsZW1lbnQoY29uZmlnLnJlZmVyZW5jZSkgJiYgdHlwZW9mIGNvbmZpZy5yZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBQb3BwZXIgdmlydHVhbCBlbGVtZW50cyByZXF1aXJlIGEgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG1ldGhvZFxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtOQU1FJGEudG9VcHBlckNhc2UoKX06IE9wdGlvbiBcInJlZmVyZW5jZVwiIHByb3ZpZGVkIHR5cGUgXCJvYmplY3RcIiB3aXRob3V0IGEgcmVxdWlyZWQgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBtZXRob2QuYCk7XG4gICAgfVxuICAgIHJldHVybi
3Bjb25maWc7XG4gIH1cbiAgX2NyZWF0ZVBvcHBlcigpIHtcbiAgICBpZiAodHlwZW9mIFBvcHBlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Jvb3RzdHJhcFxcJ3MgZHJvcGRvd25zIHJlcXVpcmUgUG9wcGVyIChodHRwczovL3BvcHBlci5qcy5vcmcvZG9jcy92Mi8pJyk7XG4gICAgfVxuICAgIGxldCByZWZlcmVuY2VFbGVtZW50ID0gdGhpcy5fZWxlbWVudDtcbiAgICBpZiAodGhpcy5fY29uZmlnLnJlZmVyZW5jZSA9PT0gJ3BhcmVudCcpIHtcbiAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSB0aGlzLl9wYXJlbnQ7XG4gICAgfSBlbHNlIGlmIChpc0VsZW1lbnQodGhpcy5fY29uZmlnLnJlZmVyZW5jZSkpIHtcbiAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSBnZXRFbGVtZW50KHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UgPT09ICdvYmplY3QnKSB7XG4gICAgICByZWZlcmVuY2VFbGVtZW50ID0gdGhpcy5fY29uZmlnLnJlZmVyZW5jZTtcbiAgICB9XG4gICAgY29uc3QgcG9wcGVyQ29uZmlnID0gdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKCk7XG4gICAgdGhpcy5fcG9wcGVyID0gUG9wcGVyLmNyZWF0ZVBvcHBlcihyZWZlcmVuY2VFbGVtZW50LCB0aGlzLl9tZW51LCBwb3BwZXJDb25maWcpO1xuICB9XG4gIF9pc1Nob3duKCkge1xuICAgIHJldHVybiB0aGlzLl9tZW51LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1ckNik7XG4gIH1cbiAgX2dldFBsYWNlbWVudCgpIHtcbiAgICBjb25zdCBwYXJlbnREcm9wZG93biA9IHRoaXMuX3BhcmVudDtcbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUEVORCkpIHtcbiAgICAgIHJldHVybiBQTEFDRU1FTlRfUklHSFQ7XG4gICAgfVxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QU1RBUlQpKSB7XG4gICAgICByZXR1cm4gUExBQ0VNRU5UX0xFRlQ7XG4gICAgfVxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QVVBfQ0VOVEVSKSkge1xuICAgICAgcmV0dXJuIFBMQUNFTUVOVF9UT1BDRU5URVI7XG4gICAgfVxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QRE9XTl9DRU5URVIpKSB7XG4gICAgICByZXR1cm4gUExBQ0VNRU5UX0JPVFRPTUNFTlRFUjtcbiAgICB9XG5cbiAgICAvLyBXZSBuZWVkIHRvIHRyaW0gdGhlIHZhbHVlIGJlY2F1c2UgY3VzdG9tIHByb3BlcnRpZXMgY2FuIGFsc28gaW5jbHVkZSBzcGFjZXNcbiAgICBjb25zdCBpc0VuZCA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5fbWVudSkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1icy1wb3NpdGlvbicpLnRyaW0oKSA9PT0gJ2VuZCc7XG4gICAgaWYgKHBhcmVudERyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BVUCkpIHtcbiAgICAgIHJldHVybiBpc0VuZCA/IFBMQUNFTUVOVF9UT1BFTkQgOiBQTEFDRU1FTlRfVE9QO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbmQgPyBQTEFDRU1FTlRfQk9UVE9NRU5EIDogUExBQ0VNRU5UX0JPVFRPTTtcbiAgfVxuICBfZGV0ZWN0TmF2YmFyKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsb3Nlc3QoU0VMRUNUT1JfTkFWQkFSKSAhPT0gbnVsbDtcbiAgfVxuICBfZ2V0T2Zmc2V0KCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9mZnNldFxuICAgIH0gPSB0aGlzLl9jb25maWc7XG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2Zmc2V0LnNwbGl0KCcsJykubWFwKHZhbHVlID0+IE51bWJlci5wYXJzZUludCh2YWx1ZSwgMTApKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBwb3BwZXJEYXRhID0+IG9mZnNldChwb3BwZXJEYXRhLCB0aGlzLl9lbGVtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuICBfZ2V0UG9wcGVyQ29uZmlnKCkge1xuICAgIGNvbnN0IGRlZmF1bHRCc1BvcHBlckNvbmZpZyA9IHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5fZ2V0UGxhY2VtZW50KCksXG4gICAgICBtb2RpZmllcnM6IFt7XG4gICAgICAgIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgYm91bmRhcnk6IHRoaXMuX2NvbmZpZy5ib3VuZGFyeVxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgb2Zmc2V0OiB0aGlzLl9nZXRPZmZzZXQoKVxuICAgICAgICB9XG4gICAgICB9XVxuICAgIH07XG5cbiAgICAvLyBEaXNhYmxlIFBvcHBlciBpZiB3ZSBoYXZlIGEgc3RhdGljIGRpc3BsYXkgb3IgRHJvcGRvd24gaXMgaW4gTmF2YmFyXG4gICAgaWYgKHRoaXMuX2luTmF2YmFyIHx8IHRoaXMuX2NvbmZpZy5kaXNwbGF5ID09PSAnc3RhdGljJykge1xuICAgICAgTWFuaXB1bGF0b3Iuc2V0RGF0YUF0dHJpYnV0ZSh0aGlzLl9tZW51LCAncG9wcGVyJywgJ3N0YXRpYycpOyAvLyBUT0RPOiB2NiByZW1vdmVcbiAgICAgIGRlZmF1bHRCc1BvcHBlckNvbmZpZy5tb2RpZmllcnMgPSBbe1xuICAgICAgICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgfV07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0QnNQb3BwZXJDb25maWcsXG4gICAgICAuLi5leGVjdXRlKHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcsIFt1bmRlZmluZWQsIGRlZmF1bHRCc1BvcHBlckNvbmZpZ10pXG4gICAgfTtcbiAgfVxuICBfc2VsZWN0TWVudUl0ZW0oe1xuICAgIGtleSxcbiAgICB0YXJnZXRcbiAgfSkge1xuICAgIGNvbnN0IGl0ZW1zID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9WSVNJQkxFX0lURU1TLCB0aGlzLl9tZW51KS5maWx0ZXIoZWxlbWVudCA9PiBpc1Zpc2libGUoZWxlbWVudCkpO1xuICAgIGlmICghaXRlbXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gaWYgdGFyZ2V0IGlzbid0IGluY2x1ZGVkIGluIGl0ZW1zIChlLmcuIHdoZW4gZXhwYW5kaW5nIHRoZSBkcm9wZG93bilcbiAgICAvLyBhbGxvdyBjeWNsaW5nIHRvIGdldCB0aGUgbGFzdCBpdGVtIGluIGNhc2Uga2V5IGVxdWFscyBBUlJPV19VUF9LRVlcbiAgICBnZXROZXh0QWN0aXZlRWxlbWVudChpdGVtcywgdGFyZ2V0LCBrZXkgPT09IEFSUk9XX0RPV05fS0VZJDEsICFpdGVtcy5pbmNsdWRlcyh0YXJnZXQpKS5mb2N1cygpO1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gRHJvcGRvd24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgI
3HJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIGNsZWFyTWVudXMoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuYnV0dG9uID09PSBSSUdIVF9NT1VTRV9CVVRUT04gfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJyAmJiBldmVudC5rZXkgIT09IFRBQl9LRVkkMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcGVuVG9nZ2xlcyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfREFUQV9UT0dHTEVfU0hPV04pO1xuICAgIGZvciAoY29uc3QgdG9nZ2xlIG9mIG9wZW5Ub2dnbGVzKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gRHJvcGRvd24uZ2V0SW5zdGFuY2UodG9nZ2xlKTtcbiAgICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0Ll9jb25maWcuYXV0b0Nsb3NlID09PSBmYWxzZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbXBvc2VkUGF0aCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpO1xuICAgICAgY29uc3QgaXNNZW51VGFyZ2V0ID0gY29tcG9zZWRQYXRoLmluY2x1ZGVzKGNvbnRleHQuX21lbnUpO1xuICAgICAgaWYgKGNvbXBvc2VkUGF0aC5pbmNsdWRlcyhjb250ZXh0Ll9lbGVtZW50KSB8fCBjb250ZXh0Ll9jb25maWcuYXV0b0Nsb3NlID09PSAnaW5zaWRlJyAmJiAhaXNNZW51VGFyZ2V0IHx8IGNvbnRleHQuX2NvbmZpZy5hdXRvQ2xvc2UgPT09ICdvdXRzaWRlJyAmJiBpc01lbnVUYXJnZXQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFRhYiBuYXZpZ2F0aW9uIHRocm91Z2ggdGhlIGRyb3Bkb3duIG1lbnUgb3IgZXZlbnRzIGZyb20gY29udGFpbmVkIGlucHV0cyBzaG91bGRuJ3QgY2xvc2UgdGhlIG1lbnVcbiAgICAgIGlmIChjb250ZXh0Ll9tZW51LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgKGV2ZW50LnR5cGUgPT09ICdrZXl1cCcgJiYgZXZlbnQua2V5ID09PSBUQUJfS0VZJDEgfHwgL2lucHV0fHNlbGVjdHxvcHRpb258dGV4dGFyZWF8Zm9ybS9pLnRlc3QoZXZlbnQudGFyZ2V0LnRhZ05hbWUpKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGNvbnRleHQuX2VsZW1lbnRcbiAgICAgIH07XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICByZWxhdGVkVGFyZ2V0LmNsaWNrRXZlbnQgPSBldmVudDtcbiAgICAgIH1cbiAgICAgIGNvbnRleHQuX2NvbXBsZXRlSGlkZShyZWxhdGVkVGFyZ2V0KTtcbiAgICB9XG4gIH1cbiAgc3RhdGljIGRhdGFBcGlLZXlkb3duSGFuZGxlcihldmVudCkge1xuICAgIC8vIElmIG5vdCBhbiBVUCB8IERPV04gfCBFU0NBUEUga2V5ID0+IG5vdCBhIGRyb3Bkb3duIGNvbW1hbmRcbiAgICAvLyBJZiBpbnB1dC90ZXh0YXJlYSAmJiBpZiBrZXkgaXMgb3RoZXIgdGhhbiBFU0NBUEUgPT4gbm90IGEgZHJvcGRvd24gY29tbWFuZFxuXG4gICAgY29uc3QgaXNJbnB1dCA9IC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZXZlbnQudGFyZ2V0LnRhZ05hbWUpO1xuICAgIGNvbnN0IGlzRXNjYXBlRXZlbnQgPSBldmVudC5rZXkgPT09IEVTQ0FQRV9LRVkkMjtcbiAgICBjb25zdCBpc1VwT3JEb3duRXZlbnQgPSBbQVJST1dfVVBfS0VZJDEsIEFSUk9XX0RPV05fS0VZJDFdLmluY2x1ZGVzKGV2ZW50LmtleSk7XG4gICAgaWYgKCFpc1VwT3JEb3duRXZlbnQgJiYgIWlzRXNjYXBlRXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzSW5wdXQgJiYgIWlzRXNjYXBlRXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIFRPRE86IHY2IHJldmVydCAjMzcwMTEgJiBjaGFuZ2UgbWFya3VwIGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS9kb2NzLzUuMy9mb3Jtcy9pbnB1dC1ncm91cC9cbiAgICBjb25zdCBnZXRUb2dnbGVCdXR0b24gPSB0aGlzLm1hdGNoZXMoU0VMRUNUT1JfREFUQV9UT0dHTEUkMykgPyB0aGlzIDogU2VsZWN0b3JFbmdpbmUucHJldih0aGlzLCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzKVswXSB8fCBTZWxlY3RvckVuZ2luZS5uZXh0KHRoaXMsIFNFTEVDVE9SX0RBVEFfVE9HR0xFJDMpWzBdIHx8IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfREFUQV9UT0dHTEUkMywgZXZlbnQuZGVsZWdhdGVUYXJnZXQucGFyZW50Tm9kZSk7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBEcm9wZG93bi5nZXRPckNyZWF0ZUluc3RhbmNlKGdldFRvZ2dsZUJ1dHRvbik7XG4gICAgaWYgKGlzVXBPckRvd25FdmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBpbnN0YW5jZS5zaG93KCk7XG4gICAgICBpbnN0YW5jZS5fc2VsZWN0TWVudUl0ZW0oZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaW5zdGFuY2UuX2lzU2hvd24oKSkge1xuICAgICAgLy8gZWxzZSBpcyBlc2NhcGUgYW5kIHdlIGNoZWNrIGlmIGl0IGlzIHNob3duXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICAgIGdldFRvZ2dsZUJ1dHRvbi5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9LRVlET1dOX0RBVEFfQVBJLCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzLCBEcm9wZG93bi5kYXRhQXBpS2V5ZG93bkhhbmRsZXIpO1xuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9LRVlET1dOX0RBVEFfQVBJLCBTRUxFQ1RPUl9NRU5VLCBEcm9wZG93bi5kYXRhQXBpS2V5ZG93bkhhbmRsZXIpO1xuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSQzLCBEcm9wZG93bi5jbGVhck1lbnVzKTtcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZVVBfREFUQV9BUEksIERyb3Bkb3duLmNsZWFyTWVudXMpO1xuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSQzLCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgRHJvcGRvd24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKS50b2dnbGUoKTtcbn0pO1xuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihEcm9wZG93bik7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB1dGlsL2JhY2tkcm9wLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkOSA9ICdiYWNrZHJvcCc7XG5jb25zdCBDTEFTU19OQU1FX0ZBREUkNCA9ICdmYWRlJztcbmNvbnN0IENMQVNTX05BTUVfU0hPVyQ1ID0gJ3Nob3cnO1xuY29uc3QgRVZFTlRfTU9VU0VET1dOID0gYG1vdXNlZG93bi5icy4ke05BTUUkOX1gO1xuY29uc3QgRGVmYXVsdCQ4ID0ge1xuICBjbGFzc05hbWU6ICdtb2RhbC1iYWNrZHJvcCcsXG4gIGNsaWNrQ2FsbGJhY2s6IG51bGwsXG4gIGlzQW5pbWF0ZWQ6IGZhbHNlLFxuICBpc1Zpc2libGU6IHRydWUsXG4gIC8vIGlmIGZhbHNlLCB3ZSB1c2UgdGhlIGJhY2tkcm9wIGhlbHBlciB3aXRob3V0IGFkZGluZyBhbnkgZWxlbWVudCB0byB0aGUgZG9tXG4gIHJvb3RFbGVtZW50OiAnYm9keScgLy8gZ2l2ZSB0aGUgY2hvaWNlIHRvIHBsYWNlIGJhY2tkcm9wIHVuZGVyIGRpZmZlcmVudCBlbGVtZW50c1xufTtcbmNvbnN0IERlZmF1bHRUeXBlJDggPSB7XG4gIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gIGNsaWNrQ2FsbGJhY2s6ICcoZnVuY3Rpb258bnVsbCknLFxuICBpc0FuaW1hdGVkOiAnYm9vbGVhbicsXG4gIGlzVmlzaWJsZTogJ2Jvb2xlYW4nLFxuICByb290RWxlbWVudDogJyhlbGVtZW50fHN0cmluZyknXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBCYWNrZHJvcCBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fY29uZmlnID0gdGh
3pcy5fZ2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgdGhpcy5faXNBcHBlbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2VsZW1lbnQgPSBudWxsO1xuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkODtcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQ4O1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQ5O1xuICB9XG5cbiAgLy8gUHVibGljXG4gIHNob3coY2FsbGJhY2spIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5pc1Zpc2libGUpIHtcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9hcHBlbmQoKTtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZ2V0RWxlbWVudCgpO1xuICAgIGlmICh0aGlzLl9jb25maWcuaXNBbmltYXRlZCkge1xuICAgICAgcmVmbG93KGVsZW1lbnQpO1xuICAgIH1cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDUpO1xuICAgIHRoaXMuX2VtdWxhdGVBbmltYXRpb24oKCkgPT4ge1xuICAgICAgZXhlY3V0ZShjYWxsYmFjayk7XG4gICAgfSk7XG4gIH1cbiAgaGlkZShjYWxsYmFjaykge1xuICAgIGlmICghdGhpcy5fY29uZmlnLmlzVmlzaWJsZSkge1xuICAgICAgZXhlY3V0ZShjYWxsYmFjayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2dldEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQ1KTtcbiAgICB0aGlzLl9lbXVsYXRlQW5pbWF0aW9uKCgpID0+IHtcbiAgICAgIHRoaXMuZGlzcG9zZSgpO1xuICAgICAgZXhlY3V0ZShjYWxsYmFjayk7XG4gICAgfSk7XG4gIH1cbiAgZGlzcG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzQXBwZW5kZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LCBFVkVOVF9NT1VTRURPV04pO1xuICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlKCk7XG4gICAgdGhpcy5faXNBcHBlbmRlZCA9IGZhbHNlO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfZ2V0RWxlbWVudCgpIHtcbiAgICBpZiAoIXRoaXMuX2VsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGJhY2tkcm9wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBiYWNrZHJvcC5jbGFzc05hbWUgPSB0aGlzLl9jb25maWcuY2xhc3NOYW1lO1xuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkKSB7XG4gICAgICAgIGJhY2tkcm9wLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9GQURFJDQpO1xuICAgICAgfVxuICAgICAgdGhpcy5fZWxlbWVudCA9IGJhY2tkcm9wO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudDtcbiAgfVxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICAvLyB1c2UgZ2V0RWxlbWVudCgpIHdpdGggdGhlIGRlZmF1bHQgXCJib2R5XCIgdG8gZ2V0IGEgZnJlc2ggRWxlbWVudCBvbiBlYWNoIGluc3RhbnRpYXRpb25cbiAgICBjb25maWcucm9vdEVsZW1lbnQgPSBnZXRFbGVtZW50KGNvbmZpZy5yb290RWxlbWVudCk7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICBfYXBwZW5kKCkge1xuICAgIGlmICh0aGlzLl9pc0FwcGVuZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9nZXRFbGVtZW50KCk7XG4gICAgdGhpcy5fY29uZmlnLnJvb3RFbGVtZW50LmFwcGVuZChlbGVtZW50KTtcbiAgICBFdmVudEhhbmRsZXIub24oZWxlbWVudCwgRVZFTlRfTU9VU0VET1dOLCAoKSA9PiB7XG4gICAgICBleGVjdXRlKHRoaXMuX2NvbmZpZy5jbGlja0NhbGxiYWNrKTtcbiAgICB9KTtcbiAgICB0aGlzLl9pc0FwcGVuZGVkID0gdHJ1ZTtcbiAgfVxuICBfZW11bGF0ZUFuaW1hdGlvbihjYWxsYmFjaykge1xuICAgIGV4ZWN1dGVBZnRlclRyYW5zaXRpb24oY2FsbGJhY2ssIHRoaXMuX2dldEVsZW1lbnQoKSwgdGhpcy5fY29uZmlnLmlzQW5pbWF0ZWQpO1xuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB1dGlsL2ZvY3VzdHJhcC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDggPSAnZm9jdXN0cmFwJztcbmNvbnN0IERBVEFfS0VZJDUgPSAnYnMuZm9jdXN0cmFwJztcbmNvbnN0IEVWRU5UX0tFWSQ1ID0gYC4ke0RBVEFfS0VZJDV9YDtcbmNvbnN0IEVWRU5UX0ZPQ1VTSU4kMiA9IGBmb2N1c2luJHtFVkVOVF9LRVkkNX1gO1xuY29uc3QgRVZFTlRfS0VZRE9XTl9UQUIgPSBga2V5ZG93bi50YWIke0VWRU5UX0tFWSQ1fWA7XG5jb25zdCBUQUJfS0VZID0gJ1RhYic7XG5jb25zdCBUQUJfTkFWX0ZPUldBUkQgPSAnZm9yd2FyZCc7XG5jb25zdCBUQUJfTkFWX0JBQ0tXQVJEID0gJ2JhY2t3YXJkJztcbmNvbnN0IERlZmF1bHQkNyA9IHtcbiAgYXV0b2ZvY3VzOiB0cnVlLFxuICB0cmFwRWxlbWVudDogbnVsbCAvLyBUaGUgZWxlbWVudCB0byB0cmFwIGZvY3VzIGluc2lkZSBvZlxufTtcbmNvbnN0IERlZmF1bHRUeXBlJDcgPSB7XG4gIGF1dG9mb2N1czogJ2Jvb2xlYW4nLFxuICB0cmFwRWxlbWVudDogJ2VsZW1lbnQnXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBGb2N1c1RyYXAgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpO1xuICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbiA9IG51bGw7XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gI
3HN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQ3O1xuICB9XG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDc7XG4gIH1cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDg7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgYWN0aXZhdGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzQWN0aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb25maWcuYXV0b2ZvY3VzKSB7XG4gICAgICB0aGlzLl9jb25maWcudHJhcEVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgRXZlbnRIYW5kbGVyLm9mZihkb2N1bWVudCwgRVZFTlRfS0VZJDUpOyAvLyBndWFyZCBhZ2FpbnN0IGluZmluaXRlIGZvY3VzIGxvb3BcbiAgICBFdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0ZPQ1VTSU4kMiwgZXZlbnQgPT4gdGhpcy5faGFuZGxlRm9jdXNpbihldmVudCkpO1xuICAgIEV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZRE9XTl9UQUIsIGV2ZW50ID0+IHRoaXMuX2hhbmRsZUtleWRvd24oZXZlbnQpKTtcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IHRydWU7XG4gIH1cbiAgZGVhY3RpdmF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzQWN0aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2U7XG4gICAgRXZlbnRIYW5kbGVyLm9mZihkb2N1bWVudCwgRVZFTlRfS0VZJDUpO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfaGFuZGxlRm9jdXNpbihldmVudCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHRyYXBFbGVtZW50XG4gICAgfSA9IHRoaXMuX2NvbmZpZztcbiAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBkb2N1bWVudCB8fCBldmVudC50YXJnZXQgPT09IHRyYXBFbGVtZW50IHx8IHRyYXBFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudHMgPSBTZWxlY3RvckVuZ2luZS5mb2N1c2FibGVDaGlsZHJlbih0cmFwRWxlbWVudCk7XG4gICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdHJhcEVsZW1lbnQuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb24gPT09IFRBQl9OQVZfQkFDS1dBUkQpIHtcbiAgICAgIGVsZW1lbnRzW2VsZW1lbnRzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnRzWzBdLmZvY3VzKCk7XG4gICAgfVxuICB9XG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gVEFCX0tFWSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9sYXN0VGFiTmF2RGlyZWN0aW9uID0gZXZlbnQuc2hpZnRLZXkgPyBUQUJfTkFWX0JBQ0tXQVJEIDogVEFCX05BVl9GT1JXQVJEO1xuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB1dGlsL3Njcm9sbEJhci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBTRUxFQ1RPUl9GSVhFRF9DT05URU5UID0gJy5maXhlZC10b3AsIC5maXhlZC1ib3R0b20sIC5pcy1maXhlZCwgLnN0aWNreS10b3AnO1xuY29uc3QgU0VMRUNUT1JfU1RJQ0tZX0NPTlRFTlQgPSAnLnN0aWNreS10b3AnO1xuY29uc3QgUFJPUEVSVFlfUEFERElORyA9ICdwYWRkaW5nLXJpZ2h0JztcbmNvbnN0IFBST1BFUlRZX01BUkdJTiA9ICdtYXJnaW4tcmlnaHQnO1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBTY3JvbGxCYXJIZWxwZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBnZXRXaWR0aCgpIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2luZG93L2lubmVyV2lkdGgjdXNhZ2Vfbm90ZXNcbiAgICBjb25zdCBkb2N1bWVudFdpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIHJldHVybiBNYXRoLmFicyh3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50V2lkdGgpO1xuICB9XG4gIGhpZGUoKSB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLmdldFdpZHRoKCk7XG4gICAgdGhpcy5fZGlzYWJsZU92ZXJGbG93KCk7XG4gICAgLy8gZ2l2ZSBwYWRkaW5nIHRvIGVsZW1lbnQgdG8gYmFsYW5jZSB0aGUgaGlkZGVuIHNjcm9sbGJhciB3aWR0aFxuICAgIHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsIFBST1BFUlRZX1BBRERJTkcsIGNhbGN1bGF0ZWRWYWx1ZSA9PiBjYWxjdWxhdGVkVmFsdWUgKyB3aWR0aCk7XG4gICAgLy8gdHJpY2s6IFdlIGFkanVzdCBwb3NpdGl2ZSBwYWRkaW5nUmlnaHQgYW5kIG5lZ2F0aXZlIG1hcmdpblJpZ2h0IHRvIHN0aWNreS10b3AgZWxlbWVudHMgdG8ga2VlcCBzaG93aW5nIGZ1bGx3aWR0aFxuICAgIHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKFNFTEVDVE9SX0ZJWEVEX0NPTlRFTlQsIFBST1BFUlRZX1BBRERJTkcsIGNhbGN1bGF0ZWRWYWx1ZSA9PiBjYWxjdWxhdGVkVmFsdWUgKyB3aWR0aCk7XG4gICAgdGhpcy5fc2V0RWxlbWVudEF0dHJpYnV0ZXMoU0VMRUNUT1JfU1RJQ0tZX0NPTlRFTlQsIFBST1BFUlRZX01BUkdJTiwgY2FsY3VsYXRlZFZhbHVlID0+IGNhbGN1bGF0ZWRWYWx1ZSAtIHdpZHRoKTtcbiAgfVxuICByZXNldCgpIHtcbiAgICB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsICdvdmVyZmxvdycpO1xuICAgIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgUFJPUEVSVFlfUEFERElORyk7XG4gICAgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9GSVhFRF9DT05URU5ULCBQUk9QRVJUWV9QQURESU5HKTtcbiAgICB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKFNFTEVDVE9SX1NUSUNLWV9DT05URU5ULCBQUk9QRVJUWV9NQVJHSU4pO1xuICB9XG4gIGlzT3ZlcmZsb3dpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0V2lkdGgoKSA+IDA7XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9kaXNhYmxlT3ZlckZsb3coKSB7XG4gICAgdGhpcy5fc2F2ZUluaXRpYWxBdHRyaWJ1dGUodGhpcy5fZWxlbWVudCwgJ292ZXJmbG93Jyk7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICB9XG4gIF9zZXRFbGVtZW50QXR0cmlidXRlcyhzZWxlY3Rvciwgc3R5bGVQcm9wZXJ0eSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHRoaXMuZ2V0V2lkdGgoKTtcbiAgICBjb25zdCBtYW5pcHVsYXRpb25DYWxsQmFjayA9IGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQgIT09IHRoaXMuX2VsZW1lbnQgJiYgd2luZG93LmlubmVyV2lkdGggPiBlbGVtZW50LmNsaWVudFdpZHRoICsgc2Nyb2xsYmFyV2lkdGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fc2F2ZUluaXRpYWxBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVQcm9wZXJ0eSk7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkVmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlUHJvcGVydHkpO1xuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShzdHlsZVByb3BlcnR5LCBgJHtjYWxsYmFjayhOdW1iZXIucGFyc2VGbG9hdChjYWxjdWxhdGVkVmFsdWUpKX1weGApO1xuICAgIH07XG4gICAgdGhpcy5fYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayhzZWxlY3RvciwgbWFuaXB1bGF0aW9uQ2FsbEJhY2spO1xuICB9XG4gIF9zYXZlSW5pdGlhbEF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZVByb3BlcnR5KSB7XG4gICAgY29uc3QgYWN0dWFsVmFsdWUgPSBlbGVtZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoc3R5bGVQcm9wZXJ0eSk7XG4gICAgaWYgKGFjdHVhbFZhbHVlKSB7XG4gICAgICBNYW5pcHVsYXRvci5zZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHksIGFjdHVhbFZhbHVlKTtcbiAgICB9XG4gI
3H1cbiAgX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMoc2VsZWN0b3IsIHN0eWxlUHJvcGVydHkpIHtcbiAgICBjb25zdCBtYW5pcHVsYXRpb25DYWxsQmFjayA9IGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpO1xuICAgICAgLy8gV2Ugb25seSB3YW50IHRvIHJlbW92ZSB0aGUgcHJvcGVydHkgaWYgdGhlIHZhbHVlIGlzIGBudWxsYDsgdGhlIHZhbHVlIGNhbiBhbHNvIGJlIHplcm9cbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBlbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KHN0eWxlUHJvcGVydHkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBNYW5pcHVsYXRvci5yZW1vdmVEYXRhQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpO1xuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShzdHlsZVByb3BlcnR5LCB2YWx1ZSk7XG4gICAgfTtcbiAgICB0aGlzLl9hcHBseU1hbmlwdWxhdGlvbkNhbGxiYWNrKHNlbGVjdG9yLCBtYW5pcHVsYXRpb25DYWxsQmFjayk7XG4gIH1cbiAgX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2soc2VsZWN0b3IsIGNhbGxCYWNrKSB7XG4gICAgaWYgKGlzRWxlbWVudChzZWxlY3RvcikpIHtcbiAgICAgIGNhbGxCYWNrKHNlbGVjdG9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzZWwgb2YgU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvciwgdGhpcy5fZWxlbWVudCkpIHtcbiAgICAgIGNhbGxCYWNrKHNlbCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBtb2RhbC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDcgPSAnbW9kYWwnO1xuY29uc3QgREFUQV9LRVkkNCA9ICdicy5tb2RhbCc7XG5jb25zdCBFVkVOVF9LRVkkNCA9IGAuJHtEQVRBX0tFWSQ0fWA7XG5jb25zdCBEQVRBX0FQSV9LRVkkMiA9ICcuZGF0YS1hcGknO1xuY29uc3QgRVNDQVBFX0tFWSQxID0gJ0VzY2FwZSc7XG5jb25zdCBFVkVOVF9ISURFJDQgPSBgaGlkZSR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0hJREVfUFJFVkVOVEVEJDEgPSBgaGlkZVByZXZlbnRlZCR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0hJRERFTiQ0ID0gYGhpZGRlbiR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX1NIT1ckNCA9IGBzaG93JHtFVkVOVF9LRVkkNH1gO1xuY29uc3QgRVZFTlRfU0hPV04kNCA9IGBzaG93biR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX1JFU0laRSQxID0gYHJlc2l6ZSR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RJU01JU1MgPSBgY2xpY2suZGlzbWlzcyR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX01PVVNFRE9XTl9ESVNNSVNTID0gYG1vdXNlZG93bi5kaXNtaXNzJHtFVkVOVF9LRVkkNH1gO1xuY29uc3QgRVZFTlRfS0VZRE9XTl9ESVNNSVNTJDEgPSBga2V5ZG93bi5kaXNtaXNzJHtFVkVOVF9LRVkkNH1gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMiA9IGBjbGljayR7RVZFTlRfS0VZJDR9JHtEQVRBX0FQSV9LRVkkMn1gO1xuY29uc3QgQ0xBU1NfTkFNRV9PUEVOID0gJ21vZGFsLW9wZW4nO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDMgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckNCA9ICdzaG93JztcbmNvbnN0IENMQVNTX05BTUVfU1RBVElDID0gJ21vZGFsLXN0YXRpYyc7XG5jb25zdCBPUEVOX1NFTEVDVE9SJDEgPSAnLm1vZGFsLnNob3cnO1xuY29uc3QgU0VMRUNUT1JfRElBTE9HID0gJy5tb2RhbC1kaWFsb2cnO1xuY29uc3QgU0VMRUNUT1JfTU9EQUxfQk9EWSA9ICcubW9kYWwtYm9keSc7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQyID0gJ1tkYXRhLWJzLXRvZ2dsZT1cIm1vZGFsXCJdJztcbmNvbnN0IERlZmF1bHQkNiA9IHtcbiAgYmFja2Ryb3A6IHRydWUsXG4gIGZvY3VzOiB0cnVlLFxuICBrZXlib2FyZDogdHJ1ZVxufTtcbmNvbnN0IERlZmF1bHRUeXBlJDYgPSB7XG4gIGJhY2tkcm9wOiAnKGJvb2xlYW58c3RyaW5nKScsXG4gIGZvY3VzOiAnYm9vbGVhbicsXG4gIGtleWJvYXJkOiAnYm9vbGVhbidcbn07XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIE1vZGFsIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZyk7XG4gICAgdGhpcy5fZGlhbG9nID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9ESUFMT0csIHRoaXMuX2VsZW1lbnQpO1xuICAgIHRoaXMuX2JhY2tkcm9wID0gdGhpcy5faW5pdGlhbGl6ZUJhY2tEcm9wKCk7XG4gICAgdGhpcy5fZm9jdXN0cmFwID0gdGhpcy5faW5pdGlhbGl6ZUZvY3VzVHJhcCgpO1xuICAgIHRoaXMuX2lzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9zY3JvbGxCYXIgPSBuZXcgU2Nyb2xsQmFySGVscGVyKCk7XG4gICAgdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDY7XG4gIH1cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkNjtcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkNztcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICB0b2dnbGUocmVsYXRlZFRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Nob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3cocmVsYXRlZF
3RhcmdldCk7XG4gIH1cbiAgc2hvdyhyZWxhdGVkVGFyZ2V0KSB7XG4gICAgaWYgKHRoaXMuX2lzU2hvd24gfHwgdGhpcy5faXNUcmFuc2l0aW9uaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1ckNCwge1xuICAgICAgcmVsYXRlZFRhcmdldFxuICAgIH0pO1xuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pc1Nob3duID0gdHJ1ZTtcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSB0cnVlO1xuICAgIHRoaXMuX3Njcm9sbEJhci5oaWRlKCk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfT1BFTik7XG4gICAgdGhpcy5fYWRqdXN0RGlhbG9nKCk7XG4gICAgdGhpcy5fYmFja2Ryb3Auc2hvdygoKSA9PiB0aGlzLl9zaG93RWxlbWVudChyZWxhdGVkVGFyZ2V0KSk7XG4gIH1cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU2hvd24gfHwgdGhpcy5faXNUcmFuc2l0aW9uaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhpZGVFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREUkNCk7XG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSB0cnVlO1xuICAgIHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKCk7XG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQ0KTtcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHRoaXMuX2hpZGVNb2RhbCgpLCB0aGlzLl9lbGVtZW50LCB0aGlzLl9pc0FuaW1hdGVkKCkpO1xuICB9XG4gIGRpc3Bvc2UoKSB7XG4gICAgRXZlbnRIYW5kbGVyLm9mZih3aW5kb3csIEVWRU5UX0tFWSQ0KTtcbiAgICBFdmVudEhhbmRsZXIub2ZmKHRoaXMuX2RpYWxvZywgRVZFTlRfS0VZJDQpO1xuICAgIHRoaXMuX2JhY2tkcm9wLmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9mb2N1c3RyYXAuZGVhY3RpdmF0ZSgpO1xuICAgIHN1cGVyLmRpc3Bvc2UoKTtcbiAgfVxuICBoYW5kbGVVcGRhdGUoKSB7XG4gICAgdGhpcy5fYWRqdXN0RGlhbG9nKCk7XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9pbml0aWFsaXplQmFja0Ryb3AoKSB7XG4gICAgcmV0dXJuIG5ldyBCYWNrZHJvcCh7XG4gICAgICBpc1Zpc2libGU6IEJvb2xlYW4odGhpcy5fY29uZmlnLmJhY2tkcm9wKSxcbiAgICAgIC8vICdzdGF0aWMnIG9wdGlvbiB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gdHJ1ZSwgYW5kIGJvb2xlYW5zIHdpbGwga2VlcCB0aGVpciB2YWx1ZSxcbiAgICAgIGlzQW5pbWF0ZWQ6IHRoaXMuX2lzQW5pbWF0ZWQoKVxuICAgIH0pO1xuICB9XG4gIF9pbml0aWFsaXplRm9jdXNUcmFwKCkge1xuICAgIHJldHVybiBuZXcgRm9jdXNUcmFwKHtcbiAgICAgIHRyYXBFbGVtZW50OiB0aGlzLl9lbGVtZW50XG4gICAgfSk7XG4gIH1cbiAgX3Nob3dFbGVtZW50KHJlbGF0ZWRUYXJnZXQpIHtcbiAgICAvLyB0cnkgdG8gYXBwZW5kIGR5bmFtaWMgbW9kYWxcbiAgICBpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnModGhpcy5fZWxlbWVudCkpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHRoaXMuX2VsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpO1xuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgdHJ1ZSk7XG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZGlhbG9nJyk7XG4gICAgdGhpcy5fZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgIGNvbnN0IG1vZGFsQm9keSA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfTU9EQUxfQk9EWSwgdGhpcy5fZGlhbG9nKTtcbiAgICBpZiAobW9kYWxCb2R5KSB7XG4gICAgICBtb2RhbEJvZHkuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG4gICAgcmVmbG93KHRoaXMuX2VsZW1lbnQpO1xuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1ckNCk7XG4gICAgY29uc3QgdHJhbnNpdGlvbkNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5mb2N1cykge1xuICAgICAgICB0aGlzLl9mb2N1c3RyYXAuYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPV04kNCwge1xuICAgICAgICByZWxhdGVkVGFyZ2V0XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2sodHJhbnNpdGlvbkNvbXBsZXRlLCB0aGlzLl9kaWFsb2csIHRoaXMuX2lzQW5pbWF0ZWQoKSk7XG4gIH1cbiAgX2FkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVlET1dOX0RJU01JU1MkMSwgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gRVNDQVBFX0tFWSQxKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9jb25maWcua2V5Ym9hcmQpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24oKTtcbiAgICB9KTtcbiAgICBFdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9SRVNJWkUkMSwgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzU2hvd24gJiYgIXRoaXMuX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgICB0aGlzLl9hZGp1c3REaWFsb2coKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VET1dOX0RJU01JU1MsIGV2ZW50ID0+IHtcbiAgICAgIC8vIGEgYmFkIHRyaWNrIHRvIHNlZ3JlZ2F0ZSBjbGlja3MgdGhhdCBtY
3Xkgc3RhcnQgaW5zaWRlIGRpYWxvZyBidXQgZW5kIG91dHNpZGUsIGFuZCBhdm9pZCBsaXN0ZW4gdG8gc2Nyb2xsYmFyIGNsaWNrc1xuICAgICAgRXZlbnRIYW5kbGVyLm9uZSh0aGlzLl9lbGVtZW50LCBFVkVOVF9DTElDS19ESVNNSVNTLCBldmVudDIgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZWxlbWVudCAhPT0gZXZlbnQudGFyZ2V0IHx8IHRoaXMuX2VsZW1lbnQgIT09IGV2ZW50Mi50YXJnZXQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgICB0aGlzLl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuYmFja2Ryb3ApIHtcbiAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgX2hpZGVNb2RhbCgpIHtcbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgdHJ1ZSk7XG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtbW9kYWwnKTtcbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgncm9sZScpO1xuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX2JhY2tkcm9wLmhpZGUoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfT1BFTik7XG4gICAgICB0aGlzLl9yZXNldEFkanVzdG1lbnRzKCk7XG4gICAgICB0aGlzLl9zY3JvbGxCYXIucmVzZXQoKTtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTiQ0KTtcbiAgICB9KTtcbiAgfVxuICBfaXNBbmltYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9GQURFJDMpO1xuICB9XG4gIF90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCkge1xuICAgIGNvbnN0IGhpZGVFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREVfUFJFVkVOVEVEJDEpO1xuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc01vZGFsT3ZlcmZsb3dpbmcgPSB0aGlzLl9lbGVtZW50LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgaW5pdGlhbE92ZXJmbG93WSA9IHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3dZO1xuICAgIC8vIHJldHVybiBpZiB0aGUgZm9sbG93aW5nIGJhY2tncm91bmQgdHJhbnNpdGlvbiBoYXNuJ3QgeWV0IGNvbXBsZXRlZFxuICAgIGlmIChpbml0aWFsT3ZlcmZsb3dZID09PSAnaGlkZGVuJyB8fCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NUQVRJQykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFpc01vZGFsT3ZlcmZsb3dpbmcpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gJ2hpZGRlbic7XG4gICAgfVxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NUQVRJQyk7XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TVEFUSUMpO1xuICAgICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gaW5pdGlhbE92ZXJmbG93WTtcbiAgICAgIH0sIHRoaXMuX2RpYWxvZyk7XG4gICAgfSwgdGhpcy5fZGlhbG9nKTtcbiAgICB0aGlzLl9lbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIGhhbmRsZSBvdmVyZmxvd2luZyBtb2RhbHNcbiAgICovXG5cbiAgX2FkanVzdERpYWxvZygpIHtcbiAgICBjb25zdCBpc01vZGFsT3ZlcmZsb3dpbmcgPSB0aGlzLl9lbGVtZW50LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB0aGlzLl9zY3JvbGxCYXIuZ2V0V2lkdGgoKTtcbiAgICBjb25zdCBpc0JvZHlPdmVyZmxvd2luZyA9IHNjcm9sbGJhcldpZHRoID4gMDtcbiAgICBpZiAoaXNCb2R5T3ZlcmZsb3dpbmcgJiYgIWlzTW9kYWxPdmVyZmxvd2luZykge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBpc1JUTCgpID8gJ3BhZGRpbmdMZWZ0JyA6ICdwYWRkaW5nUmlnaHQnO1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBgJHtzY3JvbGxiYXJXaWR0aH1weGA7XG4gICAgfVxuICAgIGlmICghaXNCb2R5T3ZlcmZsb3dpbmcgJiYgaXNNb2RhbE92ZXJmbG93aW5nKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGlzUlRMKCkgPyAncGFkZGluZ1JpZ2h0JyA6ICdwYWRkaW5nTGVmdCc7XG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IGAke3Njcm9sbGJhcldpZHRofXB4YDtcbiAgICB9XG4gIH1cbiAgX3Jlc2V0QWRqdXN0bWVudHMoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdCA9ICcnO1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJyc7XG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcsIHJlbGF0ZWRUYXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBNb2RhbC5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZyk7XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgI
3HRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG4gICAgICBkYXRhW2NvbmZpZ10ocmVsYXRlZFRhcmdldCk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMiwgU0VMRUNUT1JfREFUQV9UT0dHTEUkMiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGNvbnN0IHRhcmdldCA9IFNlbGVjdG9yRW5naW5lLmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcyk7XG4gIGlmIChbJ0EnLCAnQVJFQSddLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG4gIEV2ZW50SGFuZGxlci5vbmUodGFyZ2V0LCBFVkVOVF9TSE9XJDQsIHNob3dFdmVudCA9PiB7XG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAvLyBvbmx5IHJlZ2lzdGVyIGZvY3VzIHJlc3RvcmVyIGlmIG1vZGFsIHdpbGwgYWN0dWFsbHkgZ2V0IHNob3duXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIEV2ZW50SGFuZGxlci5vbmUodGFyZ2V0LCBFVkVOVF9ISURERU4kNCwgKCkgPT4ge1xuICAgICAgaWYgKGlzVmlzaWJsZSh0aGlzKSkge1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIGF2b2lkIGNvbmZsaWN0IHdoZW4gY2xpY2tpbmcgbW9kYWwgdG9nZ2xlciB3aGlsZSBhbm90aGVyIG9uZSBpcyBvcGVuXG4gIGNvbnN0IGFscmVhZHlPcGVuID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShPUEVOX1NFTEVDVE9SJDEpO1xuICBpZiAoYWxyZWFkeU9wZW4pIHtcbiAgICBNb2RhbC5nZXRJbnN0YW5jZShhbHJlYWR5T3BlbikuaGlkZSgpO1xuICB9XG4gIGNvbnN0IGRhdGEgPSBNb2RhbC5nZXRPckNyZWF0ZUluc3RhbmNlKHRhcmdldCk7XG4gIGRhdGEudG9nZ2xlKHRoaXMpO1xufSk7XG5lbmFibGVEaXNtaXNzVHJpZ2dlcihNb2RhbCk7XG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKE1vZGFsKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIG9mZmNhbnZhcy5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDYgPSAnb2ZmY2FudmFzJztcbmNvbnN0IERBVEFfS0VZJDMgPSAnYnMub2ZmY2FudmFzJztcbmNvbnN0IEVWRU5UX0tFWSQzID0gYC4ke0RBVEFfS0VZJDN9YDtcbmNvbnN0IERBVEFfQVBJX0tFWSQxID0gJy5kYXRhLWFwaSc7XG5jb25zdCBFVkVOVF9MT0FEX0RBVEFfQVBJJDIgPSBgbG9hZCR7RVZFTlRfS0VZJDN9JHtEQVRBX0FQSV9LRVkkMX1gO1xuY29uc3QgRVNDQVBFX0tFWSA9ICdFc2NhcGUnO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDMgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1dJTkckMSA9ICdzaG93aW5nJztcbmNvbnN0IENMQVNTX05BTUVfSElESU5HID0gJ2hpZGluZyc7XG5jb25zdCBDTEFTU19OQU1FX0JBQ0tEUk9QID0gJ29mZmNhbnZhcy1iYWNrZHJvcCc7XG5jb25zdCBPUEVOX1NFTEVDVE9SID0gJy5vZmZjYW52YXMuc2hvdyc7XG5jb25zdCBFVkVOVF9TSE9XJDMgPSBgc2hvdyR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IEVWRU5UX1NIT1dOJDMgPSBgc2hvd24ke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9ISURFJDMgPSBgaGlkZSR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IEVWRU5UX0hJREVfUFJFVkVOVEVEID0gYGhpZGVQcmV2ZW50ZWQke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9ISURERU4kMyA9IGBoaWRkZW4ke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9SRVNJWkUgPSBgcmVzaXplJHtFVkVOVF9LRVkkM31gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMSA9IGBjbGljayR7RVZFTlRfS0VZJDN9JHtEQVRBX0FQSV9LRVkkMX1gO1xuY29uc3QgRVZFTlRfS0VZRE9XTl9ESVNNSVNTID0gYGtleWRvd24uZGlzbWlzcyR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFJDEgPSAnW2RhdGEtYnMtdG9nZ2xlPVwib2ZmY2FudmFzXCJdJztcbmNvbnN0IERlZmF1bHQkNSA9IHtcbiAgYmFja2Ryb3A6IHRydWUsXG4gIGtleWJvYXJkOiB0cnVlLFxuICBzY3JvbGw6IGZhbHNlXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkNSA9IHtcbiAgYmFja2Ryb3A6ICcoYm9vbGVhbnxzdHJpbmcpJyxcbiAga2V5Ym9hcmQ6ICdib29sZWFuJyxcbiAgc2Nyb2xsOiAnYm9vbGVhbidcbn07XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIE9mZmNhbnZhcyBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX2lzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLl9iYWNrZHJvcCA9IHRoaXMuX2luaXRpYWxpemVCYWNrRHJvcCgpO1xuICAgIHRoaXMuX2ZvY3VzdHJhcCA9IHRoaXMuX2luaXRpYWxpemVGb2N1c1RyYXAoKTtcbiAgICB0aGlzLl9hZGRFdmVudExpc3RlbmVycygpO1xuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkNTtcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQ1O1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQ2O1xuICB9XG5cbiAgLy8gUHVibGljXG4gIHRvZ2dsZShyZWxhdGVkVGFyZ2V0KSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU2hvd24gPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdyhyZWxhdGVkVGFyZ2V0KTtcbiAgfVxuICBzaG93KHJlbGF0ZWRUYXJnZXQpIHtcbiAgICBpZiAodGhpcy5faXNTaG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XJDMsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXRcbiAgICB9KTtcbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faXNTaG93biA9IHRydWU7XG4gICAgdGhpcy5fYmFja2Ryb3Auc2hvdygpO1xuICAgIGlmICghdGhpcy5fY29uZmlnLnNjcm9sbCkge1xuICAgICAgbmV3IFNjcm9sbEJhckhlbHBlcigpLmhpZGUoKTtcbiAgICB9XG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbW9kYWwnLCB0cnVlKTtcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgncm9sZScsICdkaWFsb2cnKTtcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XSU5HJDEpO1xuICAgIGNvbnN0IGNvbXBsZXRlQ2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2NvbmZpZy5zY3JvbGwgfHwgdGhpcy5fY29uZmlnLmJhY2tkcm9wKSB7XG4gICAgICAgI
3HRoaXMuX2ZvY3VzdHJhcC5hY3RpdmF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVyQzKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1dJTkckMSk7XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTiQzLCB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXRcbiAgICAgIH0pO1xuICAgIH07XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZUNhbGxCYWNrLCB0aGlzLl9lbGVtZW50LCB0cnVlKTtcbiAgfVxuICBoaWRlKCkge1xuICAgIGlmICghdGhpcy5faXNTaG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFJDMpO1xuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9mb2N1c3RyYXAuZGVhY3RpdmF0ZSgpO1xuICAgIHRoaXMuX2VsZW1lbnQuYmx1cigpO1xuICAgIHRoaXMuX2lzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9ISURJTkcpO1xuICAgIHRoaXMuX2JhY2tkcm9wLmhpZGUoKTtcbiAgICBjb25zdCBjb21wbGV0ZUNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQzLCBDTEFTU19OQU1FX0hJRElORyk7XG4gICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1tb2RhbCcpO1xuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKTtcbiAgICAgIGlmICghdGhpcy5fY29uZmlnLnNjcm9sbCkge1xuICAgICAgICBuZXcgU2Nyb2xsQmFySGVscGVyKCkucmVzZXQoKTtcbiAgICAgIH1cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTiQzKTtcbiAgICB9O1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGVDYWxsYmFjaywgdGhpcy5fZWxlbWVudCwgdHJ1ZSk7XG4gIH1cbiAgZGlzcG9zZSgpIHtcbiAgICB0aGlzLl9iYWNrZHJvcC5kaXNwb3NlKCk7XG4gICAgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKTtcbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9pbml0aWFsaXplQmFja0Ryb3AoKSB7XG4gICAgY29uc3QgY2xpY2tDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jb25maWcuYmFja2Ryb3AgPT09ICdzdGF0aWMnKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREVfUFJFVkVOVEVEKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfTtcblxuICAgIC8vICdzdGF0aWMnIG9wdGlvbiB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gdHJ1ZSwgYW5kIGJvb2xlYW5zIHdpbGwga2VlcCB0aGVpciB2YWx1ZVxuICAgIGNvbnN0IGlzVmlzaWJsZSA9IEJvb2xlYW4odGhpcy5fY29uZmlnLmJhY2tkcm9wKTtcbiAgICByZXR1cm4gbmV3IEJhY2tkcm9wKHtcbiAgICAgIGNsYXNzTmFtZTogQ0xBU1NfTkFNRV9CQUNLRFJPUCxcbiAgICAgIGlzVmlzaWJsZSxcbiAgICAgIGlzQW5pbWF0ZWQ6IHRydWUsXG4gICAgICByb290RWxlbWVudDogdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLFxuICAgICAgY2xpY2tDYWxsYmFjazogaXNWaXNpYmxlID8gY2xpY2tDYWxsYmFjayA6IG51bGxcbiAgICB9KTtcbiAgfVxuICBfaW5pdGlhbGl6ZUZvY3VzVHJhcCgpIHtcbiAgICByZXR1cm4gbmV3IEZvY3VzVHJhcCh7XG4gICAgICB0cmFwRWxlbWVudDogdGhpcy5fZWxlbWVudFxuICAgIH0pO1xuICB9XG4gIF9hZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTl9ESVNNSVNTLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSBFU0NBUEVfS0VZKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9jb25maWcua2V5Ym9hcmQpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREVfUFJFVkVOVEVEKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZyk7XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG4gICAgICBkYXRhW2NvbmZpZ10odGhpcyk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMSwgU0VMRUNUT1JfREFUQV9UT0dHTEUkMSwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGNvbnN0IHRhcmdldCA9IFNlbGVjdG9yRW5naW5lLmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcyk7XG4gIGlmIChbJ0EnLCAnQVJFQSddLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG4gIGlmIChpc0Rpc2FibGVkKHRoaXMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIEV2ZW50SGFuZGxlci5vbmUodGFyZ2V0LCBFVkVOVF9ISURERU4kMywgKCkgPT4ge1xuICAgIC8vIGZvY3VzIG9uIHRyaWdnZXIgd2hlbiBpdCBpcyBjbG9zZWRcbiAgICBpZiAoaXNWaXNpYmxlKHRoaXMpKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBhdm9pZCBjb25mbGljdCB3aGVuIGNsaWNraW5nIGEgdG9nZ2xlciBvZiBhbiBvZmZjYW52YXMsIHdoaWxlIGFub3RoZXIgaXMgb3BlblxuICBjb25zdCBhbHJlYWR5T3BlbiA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoT1BFTl9TRUxFQ1RPUik7XG4gIGlmIChhbHJlYWR5T3BlbiAmJiBhbHJlYWR5T3BlbiAhPT0gdGFyZ2V0KSB7XG4gICAgT2ZmY2FudmFzLmdldEluc3RhbmNlKGFscmVhZHlPcGVuKS5oaWRlKCk7XG4gIH1cbiAgY29uc3QgZGF0YSA9IE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKHRhcmdldCk7XG4gIGRhdGEudG9nZ2xlKHRoaXMpO1xufSk7XG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJJDIsICgpID0+IHtcbiAgZm9yIChjb25zdCBzZWxlY3RvciBvZiBTZWxlY3RvckVuZ2luZS5maW5kKE9QRU5fU0VMRUNUT1IpKSB7XG4gICAgT2ZmY2FudmFzLmdldE9yQ3JlYXRlSW5zdGFuY2Uoc2VsZWN0b3IpLnNob3coKTtcbiAgfVxufSk7XG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9SRVNJWkUsICgpID0+IHtcbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoJ1thcmlhLW1vZGFsXVtjbGFzcyo9c2hvd11bY2xhc3MqPW9mZmNhbnZhcy1dJykpIHtcbiAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiAhPT0gJ2ZpeGVkJykge1xuICAgICAgT2ZmY2FudmFzLmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCkuaGlkZSgpO1xuICAgIH1cbiAgfVxufSk7XG5lbmFibGVEaXNtaXNzVHJpZ2dlcihPZmZjYW52YXMpO1xuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihPZmZjYW52YXMpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgdXRpbC9zYW5pdGl6ZXIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vLyBqcy1kb2NzLXN0YXJ0IGFsbG93LWxpc3RcbmNvbnN0IEFSSUFfQVRUUklCVVRFX1BBVFRFUk4gPSAv
3XmFyaWEtW1xcdy1dKiQvaTtcbmNvbnN0IERlZmF1bHRBbGxvd2xpc3QgPSB7XG4gIC8vIEdsb2JhbCBhdHRyaWJ1dGVzIGFsbG93ZWQgb24gYW55IHN1cHBsaWVkIGVsZW1lbnQgYmVsb3cuXG4gICcqJzogWydjbGFzcycsICdkaXInLCAnaWQnLCAnbGFuZycsICdyb2xlJywgQVJJQV9BVFRSSUJVVEVfUEFUVEVSTl0sXG4gIGE6IFsndGFyZ2V0JywgJ2hyZWYnLCAndGl0bGUnLCAncmVsJ10sXG4gIGFyZWE6IFtdLFxuICBiOiBbXSxcbiAgYnI6IFtdLFxuICBjb2w6IFtdLFxuICBjb2RlOiBbXSxcbiAgZGQ6IFtdLFxuICBkaXY6IFtdLFxuICBkbDogW10sXG4gIGR0OiBbXSxcbiAgZW06IFtdLFxuICBocjogW10sXG4gIGgxOiBbXSxcbiAgaDI6IFtdLFxuICBoMzogW10sXG4gIGg0OiBbXSxcbiAgaDU6IFtdLFxuICBoNjogW10sXG4gIGk6IFtdLFxuICBpbWc6IFsnc3JjJywgJ3NyY3NldCcsICdhbHQnLCAndGl0bGUnLCAnd2lkdGgnLCAnaGVpZ2h0J10sXG4gIGxpOiBbXSxcbiAgb2w6IFtdLFxuICBwOiBbXSxcbiAgcHJlOiBbXSxcbiAgczogW10sXG4gIHNtYWxsOiBbXSxcbiAgc3BhbjogW10sXG4gIHN1YjogW10sXG4gIHN1cDogW10sXG4gIHN0cm9uZzogW10sXG4gIHU6IFtdLFxuICB1bDogW11cbn07XG4vLyBqcy1kb2NzLWVuZCBhbGxvdy1saXN0XG5cbmNvbnN0IHVyaUF0dHJpYnV0ZXMgPSBuZXcgU2V0KFsnYmFja2dyb3VuZCcsICdjaXRlJywgJ2hyZWYnLCAnaXRlbXR5cGUnLCAnbG9uZ2Rlc2MnLCAncG9zdGVyJywgJ3NyYycsICd4bGluazpocmVmJ10pO1xuXG4vKipcbiAqIEEgcGF0dGVybiB0aGF0IHJlY29nbml6ZXMgVVJMcyB0aGF0IGFyZSBzYWZlIHdydC4gWFNTIGluIFVSTCBuYXZpZ2F0aW9uXG4gKiBjb250ZXh0cy5cbiAqXG4gKiBTaG91dC1vdXQgdG8gQW5ndWxhciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvMTUuMi44L3BhY2thZ2VzL2NvcmUvc3JjL3Nhbml0aXphdGlvbi91cmxfc2FuaXRpemVyLnRzI0wzOFxuICovXG5jb25zdCBTQUZFX1VSTF9QQVRURVJOID0gL14oPyFqYXZhc2NyaXB0OikoPzpbYS16MC05Ky4tXSs6fFteJjovPyNdKig/OlsvPyNdfCQpKS9pO1xuY29uc3QgYWxsb3dlZEF0dHJpYnV0ZSA9IChhdHRyaWJ1dGUsIGFsbG93ZWRBdHRyaWJ1dGVMaXN0KSA9PiB7XG4gIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgaWYgKGFsbG93ZWRBdHRyaWJ1dGVMaXN0LmluY2x1ZGVzKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgaWYgKHVyaUF0dHJpYnV0ZXMuaGFzKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihTQUZFX1VSTF9QQVRURVJOLnRlc3QoYXR0cmlidXRlLm5vZGVWYWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGEgcmVndWxhciBleHByZXNzaW9uIHZhbGlkYXRlcyB0aGUgYXR0cmlidXRlLlxuICByZXR1cm4gYWxsb3dlZEF0dHJpYnV0ZUxpc3QuZmlsdGVyKGF0dHJpYnV0ZVJlZ2V4ID0+IGF0dHJpYnV0ZVJlZ2V4IGluc3RhbmNlb2YgUmVnRXhwKS5zb21lKHJlZ2V4ID0+IHJlZ2V4LnRlc3QoYXR0cmlidXRlTmFtZSkpO1xufTtcbmZ1bmN0aW9uIHNhbml0aXplSHRtbCh1bnNhZmVIdG1sLCBhbGxvd0xpc3QsIHNhbml0aXplRnVuY3Rpb24pIHtcbiAgaWYgKCF1bnNhZmVIdG1sLmxlbmd0aCkge1xuICAgIHJldHVybiB1bnNhZmVIdG1sO1xuICB9XG4gIGlmIChzYW5pdGl6ZUZ1bmN0aW9uICYmIHR5cGVvZiBzYW5pdGl6ZUZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHNhbml0aXplRnVuY3Rpb24odW5zYWZlSHRtbCk7XG4gIH1cbiAgY29uc3QgZG9tUGFyc2VyID0gbmV3IHdpbmRvdy5ET01QYXJzZXIoKTtcbiAgY29uc3QgY3JlYXRlZERvY3VtZW50ID0gZG9tUGFyc2VyLnBhcnNlRnJvbVN0cmluZyh1bnNhZmVIdG1sLCAndGV4dC9odG1sJyk7XG4gIGNvbnN0IGVsZW1lbnRzID0gW10uY29uY2F0KC4uLmNyZWF0ZWREb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKSk7XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgIGNvbnN0IGVsZW1lbnROYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICghT2JqZWN0LmtleXMoYWxsb3dMaXN0KS5pbmNsdWRlcyhlbGVtZW50TmFtZSkpIHtcbiAgICAgIGVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgYXR0cmlidXRlTGlzdCA9IFtdLmNvbmNhdCguLi5lbGVtZW50LmF0dHJpYnV0ZXMpO1xuICAgIGNvbnN0IGFsbG93ZWRBdHRyaWJ1dGVzID0gW10uY29uY2F0KGFsbG93TGlzdFsnKiddIHx8IFtdLCBhbGxvd0xpc3RbZWxlbWVudE5hbWVdIHx8IFtdKTtcbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVMaXN0KSB7XG4gICAgICBpZiAoIWFsbG93ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLCBhbGxvd2VkQXR0cmlidXRlcykpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlLm5vZGVOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZWREb2N1bWVudC5ib2R5LmlubmVySFRNTDtcbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIHV0aWwvdGVtcGxhdGUtZmFjdG9yeS5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDUgPSAnVGVtcGxhdGVGYWN0b3J5JztcbmNvbnN0IERlZmF1bHQkNCA9IHtcbiAgYWxsb3dMaXN0OiBEZWZhdWx0QWxsb3dsaXN0LFxuICBjb250ZW50OiB7fSxcbiAgLy8geyBzZWxlY3RvciA6IHRleHQgLCAgc2VsZWN0b3IyIDogdGV4dDIgLCB9XG4gIGV4dHJhQ2xhc3M6ICcnLFxuICBodG1sOiBmYWxzZSxcbiAgc2FuaXRpemU6IHRydWUsXG4gIHNhbml0aXplRm46IG51bGwsXG4gIHRlbXBsYXRlOiAnPGRpdj48L2Rpdj4nXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkNCA9IHtcbiAgYWxsb3dMaXN0OiAnb2JqZWN0JyxcbiAgY29udGVudDogJ29iamVjdCcsXG4gIGV4dHJhQ2xhc3M6ICcoc3RyaW5nfGZ1bmN0aW9uKScsXG4gIGh0bWw6ICdib29sZWFuJyxcbiAgc2FuaXRpemU6ICdib29sZWFuJyxcbiAgc2FuaXRpemVGbjogJyhudWxsfGZ1bmN0aW9uKScsXG4gIHRlbXBsYXRlOiAnc3RyaW5nJ1xufTtcbmNvbnN0IERlZmF1bHRDb250ZW50VHlwZSA9IHtcbiAgZW50cnk6ICcoc3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb258bnVsbCknLFxuICBzZWxlY3RvcjogJyhzdHJpbmd8ZWxlbWVudCknXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBUZW1wbGF0ZUZhY3RvcnkgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkNDtcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybi
3BEZWZhdWx0VHlwZSQ0O1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQ1O1xuICB9XG5cbiAgLy8gUHVibGljXG4gIGdldENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fY29uZmlnLmNvbnRlbnQpLm1hcChjb25maWcgPT4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24oY29uZmlnKSkuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG4gIGhhc0NvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29udGVudCgpLmxlbmd0aCA+IDA7XG4gIH1cbiAgY2hhbmdlQ29udGVudChjb250ZW50KSB7XG4gICAgdGhpcy5fY2hlY2tDb250ZW50KGNvbnRlbnQpO1xuICAgIHRoaXMuX2NvbmZpZy5jb250ZW50ID0ge1xuICAgICAgLi4udGhpcy5fY29uZmlnLmNvbnRlbnQsXG4gICAgICAuLi5jb250ZW50XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB0b0h0bWwoKSB7XG4gICAgY29uc3QgdGVtcGxhdGVXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGVtcGxhdGVXcmFwcGVyLmlubmVySFRNTCA9IHRoaXMuX21heWJlU2FuaXRpemUodGhpcy5fY29uZmlnLnRlbXBsYXRlKTtcbiAgICBmb3IgKGNvbnN0IFtzZWxlY3RvciwgdGV4dF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fY29uZmlnLmNvbnRlbnQpKSB7XG4gICAgICB0aGlzLl9zZXRDb250ZW50KHRlbXBsYXRlV3JhcHBlciwgdGV4dCwgc2VsZWN0b3IpO1xuICAgIH1cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRlbXBsYXRlV3JhcHBlci5jaGlsZHJlblswXTtcbiAgICBjb25zdCBleHRyYUNsYXNzID0gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmV4dHJhQ2xhc3MpO1xuICAgIGlmIChleHRyYUNsYXNzKSB7XG4gICAgICB0ZW1wbGF0ZS5jbGFzc0xpc3QuYWRkKC4uLmV4dHJhQ2xhc3Muc3BsaXQoJyAnKSk7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX3R5cGVDaGVja0NvbmZpZyhjb25maWcpIHtcbiAgICBzdXBlci5fdHlwZUNoZWNrQ29uZmlnKGNvbmZpZyk7XG4gICAgdGhpcy5fY2hlY2tDb250ZW50KGNvbmZpZy5jb250ZW50KTtcbiAgfVxuICBfY2hlY2tDb250ZW50KGFyZykge1xuICAgIGZvciAoY29uc3QgW3NlbGVjdG9yLCBjb250ZW50XSBvZiBPYmplY3QuZW50cmllcyhhcmcpKSB7XG4gICAgICBzdXBlci5fdHlwZUNoZWNrQ29uZmlnKHtcbiAgICAgICAgc2VsZWN0b3IsXG4gICAgICAgIGVudHJ5OiBjb250ZW50XG4gICAgICB9LCBEZWZhdWx0Q29udGVudFR5cGUpO1xuICAgIH1cbiAgfVxuICBfc2V0Q29udGVudCh0ZW1wbGF0ZSwgY29udGVudCwgc2VsZWN0b3IpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZUVsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKHNlbGVjdG9yLCB0ZW1wbGF0ZSk7XG4gICAgaWYgKCF0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29udGVudCA9IHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKGNvbnRlbnQpO1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgdGVtcGxhdGVFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNFbGVtZW50KGNvbnRlbnQpKSB7XG4gICAgICB0aGlzLl9wdXRFbGVtZW50SW5UZW1wbGF0ZShnZXRFbGVtZW50KGNvbnRlbnQpLCB0ZW1wbGF0ZUVsZW1lbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29uZmlnLmh0bWwpIHtcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLl9tYXliZVNhbml0aXplKGNvbnRlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0ZW1wbGF0ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBjb250ZW50O1xuICB9XG4gIF9tYXliZVNhbml0aXplKGFyZykge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuc2FuaXRpemUgPyBzYW5pdGl6ZUh0bWwoYXJnLCB0aGlzLl9jb25maWcuYWxsb3dMaXN0LCB0aGlzLl9jb25maWcuc2FuaXRpemVGbikgOiBhcmc7XG4gIH1cbiAgX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBleGVjdXRlKGFyZywgW3VuZGVmaW5lZCwgdGhpc10pO1xuICB9XG4gIF9wdXRFbGVtZW50SW5UZW1wbGF0ZShlbGVtZW50LCB0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY29uZmlnLmh0bWwpIHtcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5hcHBlbmQoZWxlbWVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRlbXBsYXRlRWxlbWVudC50ZXh0Q29udGVudCA9IGVsZW1lbnQudGV4dENvbnRlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIHRvb2x0aXAuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQ0ID0gJ3Rvb2x0aXAnO1xuY29uc3QgRElTQUxMT1dFRF9BVFRSSUJVVEVTID0gbmV3IFNldChbJ3Nhbml0aXplJywgJ2FsbG93TGlzdCcsICdzYW5pdGl6ZUZuJ10pO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDIgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX01PREFMID0gJ21vZGFsJztcbmNvbnN0IENMQVNTX05BTUVfU0hPVyQyID0gJ3Nob3cnO1xuY29uc3QgU0VMRUNUT1JfVE9PTFRJUF9JTk5FUiA9ICcudG9vbHRpcC1pbm5lcic7XG5jb25zdCBTRUxFQ1RPUl9NT0RBTCA9IGAuJHtDTEFTU19OQU1FX01PREFMfWA7XG5jb25zdCBFVkVOVF9NT0RBTF9ISURFID0gJ2hpZGUuYnMubW9kYWwnO1xuY29uc3QgVFJJR0dFUl9IT1ZFUiA9ICdob3Zlcic7XG5jb25zdCBUUklHR0VSX0ZPQ1VTID0gJ2ZvY3VzJztcbmNvbnN0IFRSSUdHRVJfQ0xJQ0sgPSAnY2xpY2snO1xuY29uc3QgVFJJR0dFUl9NQU5VQUwgPSAnbWFudWFsJztcbmNvbnN0IEVWRU5UX0hJREUkMiA9ICdoaWRlJztcbmNvbnN0IEVWRU5UX0hJRERFTiQyID0gJ2hpZGRlbic7XG5jb25zdCBFVkVOVF9TSE9XJDIgPSAnc2hvdyc7XG5jb25zdCBFVkVOVF9TSE9XTiQyID0gJ3Nob3duJztcbmNvbnN0IEVWRU5UX0lOU0VSVEVEID0gJ2luc2VydGVkJztcbmNvbnN0IEVWRU5UX0NMSUNLJDEgPSAnY2xpY2snO1xuY29uc3QgRVZFTlRfRk9DVVNJTiQxID0gJ2ZvY3VzaW4nO1xuY29uc3QgRVZFTlRfRk9DVVNPVVQkMSA9ICdmb2N1c291dCc7XG5jb25zdCBFVkVOVF9NT1VTRUVOVEVSID0gJ21vdXNlZW50ZXInO1xuY29uc3QgRVZFTlRfTU9VU0VMRUFWRSA9ICdtb3VzZWxlYXZlJztcbmNvbnN0IEF0dGFjaG1lbnRNYXAgPSB7XG4gIEFVVE86
3ICdhdXRvJyxcbiAgVE9QOiAndG9wJyxcbiAgUklHSFQ6IGlzUlRMKCkgPyAnbGVmdCcgOiAncmlnaHQnLFxuICBCT1RUT006ICdib3R0b20nLFxuICBMRUZUOiBpc1JUTCgpID8gJ3JpZ2h0JyA6ICdsZWZ0J1xufTtcbmNvbnN0IERlZmF1bHQkMyA9IHtcbiAgYWxsb3dMaXN0OiBEZWZhdWx0QWxsb3dsaXN0LFxuICBhbmltYXRpb246IHRydWUsXG4gIGJvdW5kYXJ5OiAnY2xpcHBpbmdQYXJlbnRzJyxcbiAgY29udGFpbmVyOiBmYWxzZSxcbiAgY3VzdG9tQ2xhc3M6ICcnLFxuICBkZWxheTogMCxcbiAgZmFsbGJhY2tQbGFjZW1lbnRzOiBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICBodG1sOiBmYWxzZSxcbiAgb2Zmc2V0OiBbMCwgNl0sXG4gIHBsYWNlbWVudDogJ3RvcCcsXG4gIHBvcHBlckNvbmZpZzogbnVsbCxcbiAgc2FuaXRpemU6IHRydWUsXG4gIHNhbml0aXplRm46IG51bGwsXG4gIHNlbGVjdG9yOiBmYWxzZSxcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwidG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+JyArICc8ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PicgKyAnPGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48L2Rpdj4nICsgJzwvZGl2PicsXG4gIHRpdGxlOiAnJyxcbiAgdHJpZ2dlcjogJ2hvdmVyIGZvY3VzJ1xufTtcbmNvbnN0IERlZmF1bHRUeXBlJDMgPSB7XG4gIGFsbG93TGlzdDogJ29iamVjdCcsXG4gIGFuaW1hdGlvbjogJ2Jvb2xlYW4nLFxuICBib3VuZGFyeTogJyhzdHJpbmd8ZWxlbWVudCknLFxuICBjb250YWluZXI6ICcoc3RyaW5nfGVsZW1lbnR8Ym9vbGVhbiknLFxuICBjdXN0b21DbGFzczogJyhzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgZGVsYXk6ICcobnVtYmVyfG9iamVjdCknLFxuICBmYWxsYmFja1BsYWNlbWVudHM6ICdhcnJheScsXG4gIGh0bWw6ICdib29sZWFuJyxcbiAgb2Zmc2V0OiAnKGFycmF5fHN0cmluZ3xmdW5jdGlvbiknLFxuICBwbGFjZW1lbnQ6ICcoc3RyaW5nfGZ1bmN0aW9uKScsXG4gIHBvcHBlckNvbmZpZzogJyhudWxsfG9iamVjdHxmdW5jdGlvbiknLFxuICBzYW5pdGl6ZTogJ2Jvb2xlYW4nLFxuICBzYW5pdGl6ZUZuOiAnKG51bGx8ZnVuY3Rpb24pJyxcbiAgc2VsZWN0b3I6ICcoc3RyaW5nfGJvb2xlYW4pJyxcbiAgdGVtcGxhdGU6ICdzdHJpbmcnLFxuICB0aXRsZTogJyhzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbiknLFxuICB0cmlnZ2VyOiAnc3RyaW5nJ1xufTtcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgVG9vbHRpcCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBpZiAodHlwZW9mIFBvcHBlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Jvb3RzdHJhcFxcJ3MgdG9vbHRpcHMgcmVxdWlyZSBQb3BwZXIgKGh0dHBzOi8vcG9wcGVyLmpzLm9yZy9kb2NzL3YyLyknKTtcbiAgICB9XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcblxuICAgIC8vIFByaXZhdGVcbiAgICB0aGlzLl9pc0VuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuX3RpbWVvdXQgPSAwO1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IG51bGw7XG4gICAgdGhpcy5fYWN0aXZlVHJpZ2dlciA9IHt9O1xuICAgIHRoaXMuX3BvcHBlciA9IG51bGw7XG4gICAgdGhpcy5fdGVtcGxhdGVGYWN0b3J5ID0gbnVsbDtcbiAgICB0aGlzLl9uZXdDb250ZW50ID0gbnVsbDtcblxuICAgIC8vIFByb3RlY3RlZFxuICAgIHRoaXMudGlwID0gbnVsbDtcbiAgICB0aGlzLl9zZXRMaXN0ZW5lcnMoKTtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5zZWxlY3Rvcikge1xuICAgICAgdGhpcy5fZml4VGl0bGUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQzO1xuICB9XG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDM7XG4gIH1cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDQ7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgZW5hYmxlKCkge1xuICAgIHRoaXMuX2lzRW5hYmxlZCA9IHRydWU7XG4gIH1cbiAgZGlzYWJsZSgpIHtcbiAgICB0aGlzLl9pc0VuYWJsZWQgPSBmYWxzZTtcbiAgfVxuICB0b2dnbGVFbmFibGVkKCkge1xuICAgIHRoaXMuX2lzRW5hYmxlZCA9ICF0aGlzLl9pc0VuYWJsZWQ7XG4gIH1cbiAgdG9nZ2xlKCkge1xuICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHRoaXMuX2xlYXZlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2VudGVyKCk7XG4gIH1cbiAgZGlzcG9zZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7XG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LmNsb3Nlc3QoU0VMRUNUT1JfTU9EQUwpLCBFVkVOVF9NT0RBTF9ISURFLCB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyKTtcbiAgICBpZiAodGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnKSkge1xuICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnKSk7XG4gICAgfVxuICAgIHRoaXMuX2Rpc3Bvc2VQb3BwZXIoKTtcbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cbiAgc2hvdygpIHtcbiAgICBpZiAodGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHVzZSBzaG93IG9uIHZpc2libGUgZWxlbWVudHMnKTtcbiAgICB9XG4gICAgaWYgKCEodGhpcy5faXNXaXRoQ29udGVudCgpICYmIHRoaXMuX2lzRW5hYmxlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfU0hPVyQyKSk7XG4gICAgY29uc3Qgc2hhZG93Um9vdCA9IGZpbmRTaGFkb3dSb290KHRoaXMuX2VsZW1lbnQpO1xuICAgIGNvbnN0IGlzSW5UaGVEb20gPSAoc2h
3hZG93Um9vdCB8fCB0aGlzLl9lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5jb250YWlucyh0aGlzLl9lbGVtZW50KTtcbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgfHwgIWlzSW5UaGVEb20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiB2NiByZW1vdmUgdGhpcyBvciBtYWtlIGl0IG9wdGlvbmFsXG4gICAgdGhpcy5fZGlzcG9zZVBvcHBlcigpO1xuICAgIGNvbnN0IHRpcCA9IHRoaXMuX2dldFRpcEVsZW1lbnQoKTtcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIHRpcC5nZXRBdHRyaWJ1dGUoJ2lkJykpO1xuICAgIGNvbnN0IHtcbiAgICAgIGNvbnRhaW5lclxuICAgIH0gPSB0aGlzLl9jb25maWc7XG4gICAgaWYgKCF0aGlzLl9lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHRoaXMudGlwKSkge1xuICAgICAgY29udGFpbmVyLmFwcGVuZCh0aXApO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfSU5TRVJURUQpKTtcbiAgICB9XG4gICAgdGhpcy5fcG9wcGVyID0gdGhpcy5fY3JlYXRlUG9wcGVyKHRpcCk7XG4gICAgdGlwLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDIpO1xuXG4gICAgLy8gSWYgdGhpcyBpcyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlIHdlIGFkZCBleHRyYVxuICAgIC8vIGVtcHR5IG1vdXNlb3ZlciBsaXN0ZW5lcnMgdG8gdGhlIGJvZHkncyBpbW1lZGlhdGUgY2hpbGRyZW47XG4gICAgLy8gb25seSBuZWVkZWQgYmVjYXVzZSBvZiBicm9rZW4gZXZlbnQgZGVsZWdhdGlvbiBvbiBpT1NcbiAgICAvLyBodHRwczovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTQvMDIvbW91c2VfZXZlbnRfYnViLmh0bWxcbiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfU0hPV04kMikpO1xuICAgICAgaWYgKHRoaXMuX2lzSG92ZXJlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5fbGVhdmUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICAgIH07XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy50aXAsIHRoaXMuX2lzQW5pbWF0ZWQoKSk7XG4gIH1cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9ISURFJDIpKTtcbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGlwID0gdGhpcy5fZ2V0VGlwRWxlbWVudCgpO1xuICAgIHRpcC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQyKTtcblxuICAgIC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSByZW1vdmUgdGhlIGV4dHJhXG4gICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB3ZSBhZGRlZCBmb3IgaU9TIHN1cHBvcnRcbiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgJ21vdXNlb3ZlcicsIG5vb3ApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfQ0xJQ0tdID0gZmFsc2U7XG4gICAgdGhpcy5fYWN0aXZlVHJpZ2dlcltUUklHR0VSX0ZPQ1VTXSA9IGZhbHNlO1xuICAgIHRoaXMuX2FjdGl2ZVRyaWdnZXJbVFJJR0dFUl9IT1ZFUl0gPSBmYWxzZTtcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSBudWxsOyAvLyBpdCBpcyBhIHRyaWNrIHRvIHN1cHBvcnQgbWFudWFsIHRyaWdnZXJpbmdcblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgICB0aGlzLl9kaXNwb3NlUG9wcGVyKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfSElEREVOJDIpKTtcbiAgICB9O1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIHRoaXMudGlwLCB0aGlzLl9pc0FuaW1hdGVkKCkpO1xuICB9XG4gIHVwZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIudXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJvdGVjdGVkXG4gIF9pc1dpdGhDb250ZW50KCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuX2dldFRpdGxlKCkpO1xuICB9XG4gIF9nZXRUaXBFbGVtZW50KCkge1xuICAgIGlmICghdGhpcy50aXApIHtcbiAgICAgIHRoaXMudGlwID0gdGhpcy5fY3JlYXRlVGlwRWxlbWVudCh0aGlzLl9uZXdDb250ZW50IHx8IHRoaXMuX2dldENvbnRlbnRGb3JUZW1wbGF0ZSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGlwO1xuICB9XG4gIF9jcmVhdGVUaXBFbGVtZW50KGNvbnRlbnQpIHtcbiAgICBjb25zdCB0aXAgPSB0aGlzLl9nZXRUZW1wbGF0ZUZhY3RvcnkoY29udGVudCkudG9IdG1sKCk7XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyBjaGVjayBpbiB2NlxuICAgIGlmICghdGlwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdGlwLmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9GQURFJDIsIENMQVNTX05BTUVfU0hPVyQyKTtcbiAgICAvLyBUT0RPOiB2NiB0aGUgZm9sbG93aW5nIGNhbiBiZSBhY2hpZXZlZCB3aXRoIENTUyBvbmx5XG4gICAgdGlwLmNsYXNzTGlzdC5hZGQoYGJzLSR7dGhpcy5jb25zdHJ1Y3Rvci5OQU1FfS1hdXRvYCk7XG4gICAgY29uc3QgdGlwSWQgPSBnZXRVSUQodGhpcy5jb25zdHJ1Y3Rvci5OQU1FKS50b1N0cmluZygpO1xuICAgIHRpcC5zZXRBdHRyaWJ1dGUoJ2lkJywgdGlwSWQpO1xuICAgIGlmICh0aGlzLl9pc0FuaW1hdGVkKCkpIHtcbiAgICAgIHRpcC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfRkFERS
3QyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRpcDtcbiAgfVxuICBzZXRDb250ZW50KGNvbnRlbnQpIHtcbiAgICB0aGlzLl9uZXdDb250ZW50ID0gY29udGVudDtcbiAgICBpZiAodGhpcy5faXNTaG93bigpKSB7XG4gICAgICB0aGlzLl9kaXNwb3NlUG9wcGVyKCk7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9XG4gIH1cbiAgX2dldFRlbXBsYXRlRmFjdG9yeShjb250ZW50KSB7XG4gICAgaWYgKHRoaXMuX3RlbXBsYXRlRmFjdG9yeSkge1xuICAgICAgdGhpcy5fdGVtcGxhdGVGYWN0b3J5LmNoYW5nZUNvbnRlbnQoY29udGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3RlbXBsYXRlRmFjdG9yeSA9IG5ldyBUZW1wbGF0ZUZhY3Rvcnkoe1xuICAgICAgICAuLi50aGlzLl9jb25maWcsXG4gICAgICAgIC8vIHRoZSBgY29udGVudGAgdmFyIGhhcyB0byBiZSBhZnRlciBgdGhpcy5fY29uZmlnYFxuICAgICAgICAvLyB0byBvdmVycmlkZSBjb25maWcuY29udGVudCBpbiBjYXNlIG9mIHBvcG92ZXJcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgZXh0cmFDbGFzczogdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmN1c3RvbUNsYXNzKVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZUZhY3Rvcnk7XG4gIH1cbiAgX2dldENvbnRlbnRGb3JUZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgW1NFTEVDVE9SX1RPT0xUSVBfSU5ORVJdOiB0aGlzLl9nZXRUaXRsZSgpXG4gICAgfTtcbiAgfVxuICBfZ2V0VGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy50aXRsZSkgfHwgdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnKTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldChldmVudCkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLmdldE9yQ3JlYXRlSW5zdGFuY2UoZXZlbnQuZGVsZWdhdGVUYXJnZXQsIHRoaXMuX2dldERlbGVnYXRlQ29uZmlnKCkpO1xuICB9XG4gIF9pc0FuaW1hdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuYW5pbWF0aW9uIHx8IHRoaXMudGlwICYmIHRoaXMudGlwLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUkMik7XG4gIH1cbiAgX2lzU2hvd24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGlwICYmIHRoaXMudGlwLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1ckMik7XG4gIH1cbiAgX2NyZWF0ZVBvcHBlcih0aXApIHtcbiAgICBjb25zdCBwbGFjZW1lbnQgPSBleGVjdXRlKHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQsIFt0aGlzLCB0aXAsIHRoaXMuX2VsZW1lbnRdKTtcbiAgICBjb25zdCBhdHRhY2htZW50ID0gQXR0YWNobWVudE1hcFtwbGFjZW1lbnQudG9VcHBlckNhc2UoKV07XG4gICAgcmV0dXJuIFBvcHBlci5jcmVhdGVQb3BwZXIodGhpcy5fZWxlbWVudCwgdGlwLCB0aGlzLl9nZXRQb3BwZXJDb25maWcoYXR0YWNobWVudCkpO1xuICB9XG4gIF9nZXRPZmZzZXQoKSB7XG4gICAgY29uc3Qge1xuICAgICAgb2Zmc2V0XG4gICAgfSA9IHRoaXMuX2NvbmZpZztcbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBvZmZzZXQuc3BsaXQoJywnKS5tYXAodmFsdWUgPT4gTnVtYmVyLnBhcnNlSW50KHZhbHVlLCAxMCkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHBvcHBlckRhdGEgPT4gb2Zmc2V0KHBvcHBlckRhdGEsIHRoaXMuX2VsZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG4gIF9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZXhlY3V0ZShhcmcsIFt0aGlzLl9lbGVtZW50LCB0aGlzLl9lbGVtZW50XSk7XG4gIH1cbiAgX2dldFBvcHBlckNvbmZpZyhhdHRhY2htZW50KSB7XG4gICAgY29uc3QgZGVmYXVsdEJzUG9wcGVyQ29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50OiBhdHRhY2htZW50LFxuICAgICAgbW9kaWZpZXJzOiBbe1xuICAgICAgICBuYW1lOiAnZmxpcCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHRoaXMuX2NvbmZpZy5mYWxsYmFja1BsYWNlbWVudHNcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG9mZnNldDogdGhpcy5fZ2V0T2Zmc2V0KClcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGJvdW5kYXJ5OiB0aGlzLl9jb25maWcuYm91bmRhcnlcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiAnYXJyb3cnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZWxlbWVudDogYC4ke3RoaXMuY29uc3RydWN0b3IuTkFNRX0tYXJyb3dgXG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogJ3ByZVNldFBsYWNlbWVudCcsXG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIHBoYXNlOiAnYmVmb3JlTWFpbicsXG4gICAgICAgIGZuOiBkYXRhID0+IHtcbiAgICAgICAgICAvLyBQcmUtc2V0IFBvcHBlcidzIHBsYWNlbWVudCBhdHRyaWJ1dGUgaW4gb3JkZXIgdG8gcmVhZCB0aGUgYXJyb3cgc2l6ZXMgcHJvcGVybHkuXG4gICAgICAgICAgLy8gT3RoZXJ3aXNlLCBQb3BwZXIgbWl4ZXMgdXAgdGhlIHdpZHRoIGFuZCBoZWlnaHQgZGltZW5zaW9ucyBzaW5jZSB0aGUgaW5pdGlhbCBhcnJvdyBzdHlsZSBpcyBmb3IgdG9wIHBsYWNlbWVudFxuICAgICAgICAgIHRoaXMuX2dldFRpcEVsZW1lbnQoKS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcG9wcGVyLXBsYWNlbWVudCcsIGRhdGEuc3RhdGUucGxhY2VtZW50KTtcbiAgICAgICAgfVxuICAgICAgfV1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0QnNQb3BwZXJDb25maWcsXG4gICAgICAuLi5leGVjdXRlKHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcsIFt1bmRlZmluZWQsIGRlZmF1bHRCc1BvcHBlckNvbmZpZ10pXG4gICAgfTtcbiAgfVxuICBfc2V0TGlzdGVuZXJzKCkge1xuICAgIGNvbnN0IHRyaWdnZXJzID0gdGhpcy5fY29uZmlnLnRyaWdnZXIuc3BsaXQoJyAnKTtcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpIHtcbiAgICAgIGlmICh0cmlnZ2VyID09PSAnY2xpY2snKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9DTElDSyQxKSwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZF
3RhcmdldChldmVudCk7XG4gICAgICAgICAgY29udGV4dC5fYWN0aXZlVHJpZ2dlcltUUklHR0VSX0NMSUNLXSA9ICEoY29udGV4dC5faXNTaG93bigpICYmIGNvbnRleHQuX2FjdGl2ZVRyaWdnZXJbVFJJR0dFUl9DTElDS10pO1xuICAgICAgICAgIGNvbnRleHQudG9nZ2xlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0cmlnZ2VyICE9PSBUUklHR0VSX01BTlVBTCkge1xuICAgICAgICBjb25zdCBldmVudEluID0gdHJpZ2dlciA9PT0gVFJJR0dFUl9IT1ZFUiA/IHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX01PVVNFRU5URVIpIDogdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfRk9DVVNJTiQxKTtcbiAgICAgICAgY29uc3QgZXZlbnRPdXQgPSB0cmlnZ2VyID09PSBUUklHR0VSX0hPVkVSID8gdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfTU9VU0VMRUFWRSkgOiB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9GT0NVU09VVCQxKTtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIGV2ZW50SW4sIHRoaXMuX2NvbmZpZy5zZWxlY3RvciwgZXZlbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpO1xuICAgICAgICAgIGNvbnRleHQuX2FjdGl2ZVRyaWdnZXJbZXZlbnQudHlwZSA9PT0gJ2ZvY3VzaW4nID8gVFJJR0dFUl9GT0NVUyA6IFRSSUdHRVJfSE9WRVJdID0gdHJ1ZTtcbiAgICAgICAgICBjb250ZXh0Ll9lbnRlcigpO1xuICAgICAgICB9KTtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIGV2ZW50T3V0LCB0aGlzLl9jb25maWcuc2VsZWN0b3IsIGV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KGV2ZW50KTtcbiAgICAgICAgICBjb250ZXh0Ll9hY3RpdmVUcmlnZ2VyW2V2ZW50LnR5cGUgPT09ICdmb2N1c291dCcgPyBUUklHR0VSX0ZPQ1VTIDogVFJJR0dFUl9IT1ZFUl0gPSBjb250ZXh0Ll9lbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpO1xuICAgICAgICAgIGNvbnRleHQuX2xlYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX01PREFMKSwgRVZFTlRfTU9EQUxfSElERSwgdGhpcy5faGlkZU1vZGFsSGFuZGxlcik7XG4gIH1cbiAgX2ZpeFRpdGxlKCkge1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyk7XG4gICAgaWYgKCF0aXRsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiYgIXRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRpdGxlKTtcbiAgICB9XG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnLCB0aXRsZSk7IC8vIERPIE5PVCBVU0UgSVQuIElzIG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3RpdGxlJyk7XG4gIH1cbiAgX2VudGVyKCkge1xuICAgIGlmICh0aGlzLl9pc1Nob3duKCkgfHwgdGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlO1xuICAgIHRoaXMuX3NldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLl9jb25maWcuZGVsYXkuc2hvdyk7XG4gIH1cbiAgX2xlYXZlKCkge1xuICAgIGlmICh0aGlzLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdGhpcy5fc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLl9jb25maWcuZGVsYXkuaGlkZSk7XG4gIH1cbiAgX3NldFRpbWVvdXQoaGFuZGxlciwgdGltZW91dCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KTtcbiAgICB0aGlzLl90aW1lb3V0ID0gc2V0VGltZW91dChoYW5kbGVyLCB0aW1lb3V0KTtcbiAgfVxuICBfaXNXaXRoQWN0aXZlVHJpZ2dlcigpIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9hY3RpdmVUcmlnZ2VyKS5pbmNsdWRlcyh0cnVlKTtcbiAgfVxuICBfZ2V0Q29uZmlnKGNvbmZpZykge1xuICAgIGNvbnN0IGRhdGFBdHRyaWJ1dGVzID0gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCk7XG4gICAgZm9yIChjb25zdCBkYXRhQXR0cmlidXRlIG9mIE9iamVjdC5rZXlzKGRhdGFBdHRyaWJ1dGVzKSkge1xuICAgICAgaWYgKERJU0FMTE9XRURfQVRUUklCVVRFUy5oYXMoZGF0YUF0dHJpYnV0ZSkpIHtcbiAgICAgICAgZGVsZXRlIGRhdGFBdHRyaWJ1dGVzW2RhdGFBdHRyaWJ1dGVdO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25maWcgPSB7XG4gICAgICAuLi5kYXRhQXR0cmlidXRlcyxcbiAgICAgIC4uLih0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyAmJiBjb25maWcgPyBjb25maWcgOiB7fSlcbiAgICB9O1xuICAgIGNvbmZpZyA9IHRoaXMuX21lcmdlQ29uZmlnT2JqKGNvbmZpZyk7XG4gICAgY29uZmlnID0gdGhpcy5fY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpO1xuICAgIHRoaXMuX3R5cGVDaGVja0NvbmZpZyhjb25maWcpO1xuICAgIHJldHVybi
3Bjb25maWc7XG4gIH1cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgY29uZmlnLmNvbnRhaW5lciA9IGNvbmZpZy5jb250YWluZXIgPT09IGZhbHNlID8gZG9jdW1lbnQuYm9keSA6IGdldEVsZW1lbnQoY29uZmlnLmNvbnRhaW5lcik7XG4gICAgaWYgKHR5cGVvZiBjb25maWcuZGVsYXkgPT09ICdudW1iZXInKSB7XG4gICAgICBjb25maWcuZGVsYXkgPSB7XG4gICAgICAgIHNob3c6IGNvbmZpZy5kZWxheSxcbiAgICAgICAgaGlkZTogY29uZmlnLmRlbGF5XG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGNvbmZpZy50aXRsZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbmZpZy50aXRsZSA9IGNvbmZpZy50aXRsZS50b1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGNvbmZpZy5jb250ZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgY29uZmlnLmNvbnRlbnQgPSBjb25maWcuY29udGVudC50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIF9nZXREZWxlZ2F0ZUNvbmZpZygpIHtcbiAgICBjb25zdCBjb25maWcgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9jb25maWcpKSB7XG4gICAgICBpZiAodGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0W2tleV0gIT09IHZhbHVlKSB7XG4gICAgICAgIGNvbmZpZ1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbmZpZy5zZWxlY3RvciA9IGZhbHNlO1xuICAgIGNvbmZpZy50cmlnZ2VyID0gJ21hbnVhbCc7XG5cbiAgICAvLyBJbiB0aGUgZnV0dXJlIGNhbiBiZSByZXBsYWNlZCB3aXRoOlxuICAgIC8vIGNvbnN0IGtleXNXaXRoRGlmZmVyZW50VmFsdWVzID0gT2JqZWN0LmVud
3HJpZXModGhpcy5fY29uZmlnKS5maWx0ZXIoZW50cnkgPT4gdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0W2VudHJ5WzBdXSAhPT0gdGhpcy5fY29uZmlnW2VudHJ5WzBdXSlcbiAgICAvLyBgT2JqZWN0LmZyb21FbnRyaWVzKGtleXNXaXRoRGlmZmVyZW50VmFsdWVzKWBcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIF9kaXNwb3NlUG9wcGVyKCkge1xuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy50aXApIHtcbiAgICAgIHRoaXMudGlwLnJlbW92ZSgpO1xuICAgICAgdGhpcy50aXAgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFRvb2x0aXAuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oVG9vbHRpcCk7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBwb3BvdmVyLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkMyA9ICdwb3BvdmVyJztcbmNvbnN0IFNFTEVDVE9SX1RJVExFID0gJy5wb3BvdmVyLWhlYWRlcic7XG5jb25zdCBTRUxFQ1RPUl9DT05URU5UID0gJy5wb3BvdmVyLWJvZHknO1xuY29uc3QgRGVmYXVsdCQyID0ge1xuICAuLi5Ub29sdGlwLkRlZmF1bHQsXG4gIGNvbnRlbnQ6ICcnLFxuICBvZmZzZXQ6IFswLCA4XSxcbiAgcGxhY2VtZW50OiAncmlnaHQnLFxuICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJwb3BvdmVyXCIgcm9sZT1cInRvb2x0aXBcIj4nICsgJzxkaXYgY2xhc3M9XCJwb3BvdmVyLWFycm93XCI+PC9kaXY+JyArICc8aDMgY2xhc3M9XCJwb3BvdmVyLWhlYWRlclwiPjwvaDM+JyArICc8ZGl2IGNsYXNzPVwicG9wb3Zlci1ib2R5XCI+PC9kaXY+JyArICc8L2Rpdj4nLFxuICB0cmlnZ2VyOiAnY2xpY2snXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkMiA9IHtcbiAgLi4uVG9vbHRpcC5EZWZhdWx0VHlwZSxcbiAgY29udGVudDogJyhudWxsfHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKSdcbn07XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFBvcG92ZXIgZXh0ZW5kcyBUb29sdGlwIHtcbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkMjtcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQyO1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQzO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGVzXG4gIF9pc1dpdGhDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRUaXRsZSgpIHx8IHRoaXMuX2dldENvbnRlbnQoKTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2dldENvbnRlbnRGb3JUZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgW1NFTEVDVE9SX1RJVExFXTogdGhpcy5fZ2V0VGl0bGUoKSxcbiAgICAgIFtTRUxFQ1RPUl9DT05URU5UXTogdGhpcy5fZ2V0Q29udGVudCgpXG4gICAgfTtcbiAgfVxuICBfZ2V0Q29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmNvbnRlbnQpO1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gUG9wb3Zlci5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZyk7XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG4gICAgICBkYXRhW2NvbmZpZ10oKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihQb3BvdmVyKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIHNjcm9sbHNweS5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDIgPSAnc2Nyb2xsc3B5JztcbmNvbnN0IERBVEFfS0VZJDIgPSAnYnMuc2Nyb2xsc3B5JztcbmNvbnN0IEVWRU5UX0tFWSQyID0gYC4ke0RBVEFfS0VZJDJ9YDtcbmNvbnN0IERBVEFfQVBJX0tFWSA9ICcuZGF0YS1hcGknO1xuY29uc3QgRVZFTlRfQUNUSVZBVEUgPSBgYWN0aXZhdGUke0VWRU5UX0tFWSQyfWA7XG5jb25zdCBFVkVOVF9DTElDSyA9IGBjbGljayR7RVZFTlRfS0VZJDJ9YDtcbmNvbnN0IEVWRU5UX0xPQURfREFUQV9BUEkkMSA9IGBsb2FkJHtFVkVOVF9LRVkkMn0ke0RBVEFfQVBJX0tFWX1gO1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QRE9XTl9JVEVNID0gJ2Ryb3Bkb3duLWl0ZW0nO1xuY29uc3QgQ0xBU1NfTkFNRV9BQ1RJVkUkMSA9ICdhY3RpdmUnO1xuY29uc3QgU0VMRUNUT1JfREFUQV9TUFkgPSAnW2RhdGEtYnMt
3c3B5PVwic2Nyb2xsXCJdJztcbmNvbnN0IFNFTEVDVE9SX1RBUkdFVF9MSU5LUyA9ICdbaHJlZl0nO1xuY29uc3QgU0VMRUNUT1JfTkFWX0xJU1RfR1JPVVAgPSAnLm5hdiwgLmxpc3QtZ3JvdXAnO1xuY29uc3QgU0VMRUNUT1JfTkFWX0xJTktTID0gJy5uYXYtbGluayc7XG5jb25zdCBTRUxFQ1RPUl9OQVZfSVRFTVMgPSAnLm5hdi1pdGVtJztcbmNvbnN0IFNFTEVDVE9SX0xJU1RfSVRFTVMgPSAnLmxpc3QtZ3JvdXAtaXRlbSc7XG5jb25zdCBTRUxFQ1RPUl9MSU5LX0lURU1TID0gYCR7U0VMRUNUT1JfTkFWX0xJTktTfSwgJHtTRUxFQ1RPUl9OQVZfSVRFTVN9ID4gJHtTRUxFQ1RPUl9OQVZfTElOS1N9LCAke1NFTEVDVE9SX0xJU1RfSVRFTVN9YDtcbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOID0gJy5kcm9wZG93bic7XG5jb25zdCBTRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEUkMSA9ICcuZHJvcGRvd24tdG9nZ2xlJztcbmNvbnN0IERlZmF1bHQkMSA9IHtcbiAgb2Zmc2V0OiBudWxsLFxuICAvLyBUT0RPOiB2NiBAZGVwcmVjYXRlZCwga2VlcCBpdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29uc1xuICByb290TWFyZ2luOiAnMHB4IDBweCAtMjUlJyxcbiAgc21vb3RoU2Nyb2xsOiBmYWxzZSxcbiAgdGFyZ2V0OiBudWxsLFxuICB0aHJlc2hvbGQ6IFswLjEsIDAuNSwgMV1cbn07XG5jb25zdCBEZWZhdWx0VHlwZSQxID0ge1xuICBvZmZzZXQ6ICcobnVtYmVyfG51bGwpJyxcbiAgLy8gVE9ETyB2NiBAZGVwcmVjYXRlZCwga2VlcCBpdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29uc1xuICByb290TWFyZ2luOiAnc3RyaW5nJyxcbiAgc21vb3RoU2Nyb2xsOiAnYm9vbGVhbicsXG4gIHRhcmdldDogJ2VsZW1lbnQnLFxuICB0aHJlc2hvbGQ6ICdhcnJheSdcbn07XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFNjcm9sbFNweSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuXG4gICAgLy8gdGhpcy5fZWxlbWVudCBpcyB0aGUgb2JzZXJ2YWJsZXNDb250YWluZXIgYW5kIGNvbmZpZy50YXJnZXQgdGhlIG1lbnUgbGlua3Mgd3JhcHBlclxuICAgIHRoaXMuX3RhcmdldExpbmtzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9yb290RWxlbWVudCA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5fZWxlbWVudCkub3ZlcmZsb3dZID09PSAndmlzaWJsZScgPyBudWxsIDogdGhpcy5fZWxlbWVudDtcbiAgICB0aGlzLl9hY3RpdmVUYXJnZXQgPSBudWxsO1xuICAgIHRoaXMuX29ic2VydmVyID0gbnVsbDtcbiAgICB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEgPSB7XG4gICAgICB2aXNpYmxlRW50cnlUb3A6IDAsXG4gICAgICBwYXJlbnRTY3JvbGxUb3A6IDBcbiAgICB9O1xuICAgIHRoaXMucmVmcmVzaCgpOyAvLyBpbml0aWFsaXplXG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQxO1xuICB9XG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDE7XG4gIH1cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDI7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9pbml0aWFsaXplVGFyZ2V0c0FuZE9ic2VydmFibGVzKCk7XG4gICAgdGhpcy5fbWF5YmVFbmFibGVTbW9vdGhTY3JvbGwoKTtcbiAgICBpZiAodGhpcy5fb2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSB0aGlzLl9nZXROZXdPYnNlcnZlcigpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5fb2JzZXJ2YWJsZVNlY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHNlY3Rpb24pO1xuICAgIH1cbiAgfVxuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIC8vIFRPRE86IG9uIHY2IHRhcmdldCBzaG91bGQgYmUgZ2l2ZW4gZXhwbGljaXRseSAmIHJlbW92ZSB0aGUge3RhcmdldDogJ3NzLXRhcmdldCd9IGNhc2VcbiAgICBjb25maWcudGFyZ2V0ID0gZ2V0RWxlbWVudChjb25maWcudGFyZ2V0KSB8fCBkb2N1bWVudC5ib2R5O1xuXG4gICAgLy8gVE9ETzogdjYgT25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gVXNlIHJvb3RNYXJnaW4gb25seVxuICAgIGNvbmZpZy5yb290TWFyZ2luID0gY29uZmlnLm9mZnNldCA/IGAke2NvbmZpZy5vZmZzZXR9cHggMHB4IC0zMCVgIDogY29uZmlnLnJvb3RNYXJnaW47XG4gICAgaWYgKHR5cGVvZiBjb25maWcudGhyZXNob2xkID09PSAnc3RyaW5nJykge1xuICAgICAgY29uZmlnLnRocmVzaG9sZCA9IGNvbmZpZy50aHJlc2hvbGQuc3BsaXQoJywnKS5tYXAodmFsdWUgPT4gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICBfbWF5YmVFbmFibGVTbW9vdGhTY3JvbGwoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuc21vb3RoU2Nyb2xsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gdW5yZWdpc3RlciBhbnkgcHJldmlvdXMgbGlzdGVuZXJzXG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9jb25maWcudGFyZ2V0LCBFVkVOVF9DTElDSyk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2NvbmZpZy50YXJnZXQsIEVWRU5UX0NMSUNLLCBTRUxFQ1RPUl9UQVJHRVRfTElOS1MsIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IG9ic2VydmFibGVTZWN0aW9uID0gdGhpcy5fb2JzZXJ2YWJsZVNlY3Rpb25zLmdldChldmVudC50YXJnZXQuaGFzaCk7XG4gICAgICBpZiAob2JzZXJ2YWJsZVNlY3Rpb24pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuX3Jvb3RFbGVtZW50IHx8IHdpbmRvdztcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gb2JzZXJ2YWJsZVNlY3Rpb24ub2Zmc2V0VG9wIC0gdGhpcy5fZWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIGlmIChyb290LnNjcm9sbFRvKSB7XG4gICAgICAgICAgcm9vdC5zY3JvbGxUbyh7XG4gICAgICAgICAgICB0b3A6IGhlaWdodCxcbiAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgICAgI
3H0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENocm9tZSA2MCBkb2Vzbid0IHN1cHBvcnQgYHNjcm9sbFRvYFxuICAgICAgICByb290LnNjcm9sbFRvcCA9IGhlaWdodDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBfZ2V0TmV3T2JzZXJ2ZXIoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IHRoaXMuX3Jvb3RFbGVtZW50LFxuICAgICAgdGhyZXNob2xkOiB0aGlzLl9jb25maWcudGhyZXNob2xkLFxuICAgICAgcm9vdE1hcmdpbjogdGhpcy5fY29uZmlnLnJvb3RNYXJnaW5cbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZW50cmllcyA9PiB0aGlzLl9vYnNlcnZlckNhbGxiYWNrKGVudHJpZXMpLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIFRoZSBsb2dpYyBvZiBzZWxlY3Rpb25cbiAgX29ic2VydmVyQ2FsbGJhY2soZW50cmllcykge1xuICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBlbnRyeSA9PiB0aGlzLl90YXJnZXRMaW5rcy5nZXQoYCMke2VudHJ5LnRhcmdldC5pZH1gKTtcbiAgICBjb25zdCBhY3RpdmF0ZSA9IGVudHJ5ID0+IHtcbiAgICAgIHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS52aXNpYmxlRW50cnlUb3AgPSBlbnRyeS50YXJnZXQub2Zmc2V0VG9wO1xuICAgICAgdGhpcy5fcHJvY2Vzcyh0YXJnZXRFbGVtZW50KGVudHJ5KSk7XG4gICAgfTtcbiAgICBjb25zdCBwYXJlbnRTY3JvbGxUb3AgPSAodGhpcy5fcm9vdEVsZW1lbnQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxUb3A7XG4gICAgY29uc3QgdXNlclNjcm9sbHNEb3duID0gcGFyZW50U2Nyb2xsVG9wID49IHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS5wYXJlbnRTY3JvbGxUb3A7XG4gICAgdGhpcy5fcHJldmlvdXNTY3JvbGxEYXRhLnBhcmVudFNjcm9sbFRvcCA9IHBhcmVudFNjcm9sbFRvcDtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmICghZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2xlYXJBY3RpdmVDbGFzcyh0YXJnZXRFbGVtZW50KGVudHJ5KSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgZW50cnlJc0xvd2VyVGhhblByZXZpb3VzID0gZW50cnkudGFyZ2V0Lm9mZnNldFRvcCA+PSB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEudmlzaWJsZUVudHJ5VG9wO1xuICAgICAgLy8gaWYgd2UgYXJlIHNjcm9sbGluZyBkb3duLCBwaWNrIHRoZSBiaWdnZXIgb2Zmc2V0VG9wXG4gICAgICBpZiAodXNlclNjcm9sbHNEb3duICYmIGVudHJ5SXNMb3dlclRoYW5QcmV2aW91cykge1xuICAgICAgICBhY3RpdmF0ZShlbnRyeSk7XG4gICAgICAgIC8vIGlmIHBhcmVudCBpc24ndCBzY3JvbGxlZCwgbGV0J3Mga2VlcCB0aGUgZmlyc3QgdmlzaWJsZSBpdGVtLCBicmVha2luZyB0aGUgaXRlcmF0aW9uXG4gICAgICAgIGlmICghcGFyZW50U2Nyb2xsVG9wKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiB3ZSBhcmUgc2Nyb2xsaW5nIHVwLCBwaWNrIHRoZSBzbWFsbGVzdCBvZmZzZXRUb3BcbiAgICAgIGlmICghdXNlclNjcm9sbHNEb3duICYmICFlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMpIHtcbiAgICAgICAgYWN0aXZhdGUoZW50cnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBfaW5pdGlhbGl6ZVRhcmdldHNBbmRPYnNlcnZhYmxlcygpIHtcbiAgICB0aGlzLl90YXJnZXRMaW5rcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgdGFyZ2V0TGlua3MgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX1RBUkdFVF9MSU5LUywgdGhpcy5fY29uZmlnLnRhcmdldCk7XG4gICAgZm9yIChjb25zdCBhbmNob3Igb2YgdGFyZ2V0TGlua3MpIHtcbiAgICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBhbmNob3IgaGFzIGFuIGlkIGFuZCBpcyBub3QgZGlzYWJsZWRcbiAgICAgIGlmICghYW5jaG9yLmhhc2ggfHwgaXNEaXNhYmxlZChhbmNob3IpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2JzZXJ2YWJsZVNlY3Rpb24gPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKGRlY29kZVVSSShhbmNob3IuaGFzaCksIHRoaXMuX2VsZW1lbnQpO1xuXG4gICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgb2JzZXJ2YWJsZVNlY3Rpb24gZXhpc3RzICYgaXMgdmlzaWJsZVxuICAgICAgaWYgKGlzVmlzaWJsZShvYnNlcnZhYmxlU2VjdGlvbikpIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0TGlua3Muc2V0KGRlY29kZVVSSShhbmNob3IuaGFzaCksIGFuY2hvcik7XG4gICAgICAgIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucy5zZXQoYW5jaG9yLmhhc2gsIG9ic2VydmFibGVTZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgX3Byb2Nlc3ModGFyZ2V0KSB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVRhcmdldCA9PT0gdGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NsZWFyQWN0aXZlQ2xhc3ModGhpcy5fY29uZmlnLnRhcmdldCk7XG4gICAgdGhpcy5fYWN0aXZlVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFJDEpO1xuICAgIHRoaXMuX2FjdGl2YXRlUGFyZW50cyh0YXJnZXQpO1xuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0FDVElWQVRFLCB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiB0YXJnZXRcbiAgICB9KTtcbiAgfVxuICBfYWN0aXZhdGVQYXJlbnRzKHRhcmdldCkge1xuICAgIC8vIEFjdGl2YXRlIGRyb3Bkb3duIHBhcmVudHNcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BET1dOX0lURU0pKSB7XG4gICAgICBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSQxLCB0YXJnZXQuY2xvc2VzdChTRUxFQ1RPUl9EUk9QRE9XTikpLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgbGlzdEdyb3VwIG9mIFNlbGVjdG9yRW5naW5lLnBhcmVudHModGFyZ2V0LCBTRUxFQ1RPUl9OQVZfTElTVF9HUk9VUCkpIHtcbiAgICAgIC8vIFNldCB0cmlnZ2VyZWQgbGlua3MgcGFyZW50cyBhcyBhY3RpdmVcbiAgICAgIC8vIFdpdGggYm90aCA8dWw+IGFuZCA8bmF2PiBtYXJrdXAgYSBwYXJlbnQgaXMgdGhlIHByZXZpb3VzIHNpYmxpbmcgb2YgYW55IG5hdiBhbmNlc3RvclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIFNlbGVjdG9yRW5naW5lLnByZXYobGlzdEdyb3VwLCBTRUxFQ1RPUl9MSU5LX0lURU1TKSkge1xuICAgICAgICBpdGVtLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIF9jbGVhckFjdGl2ZUNsYXNzKHBhcmVudCkge1xuICAgIHBhcmVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQUNUSVZFJDEpO1xuICAgIGNvbnN0IGFjdGl2ZU5vZGVzID0gU2VsZWN0b3JFbmdpbmUuZmluZChgJHtTRUxFQ1RPUl9UQVJHRVRfTElOS1N9LiR7Q0xBU1NfTkFNRV9BQ1RJVkUkMX1gLCBwYXJlbnQpO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBhY3RpdmVOb2Rlcykge1xuICAgICAgbm9kZS5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQUNUSVZFJDEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybi
3B0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFNjcm9sbFNweS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZyk7XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG4gICAgICBkYXRhW2NvbmZpZ10oKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfTE9BRF9EQVRBX0FQSSQxLCAoKSA9PiB7XG4gIGZvciAoY29uc3Qgc3B5IG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfREFUQV9TUFkpKSB7XG4gICAgU2Nyb2xsU3B5LmdldE9yQ3JlYXRlSW5zdGFuY2Uoc3B5KTtcbiAgfVxufSk7XG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFNjcm9sbFNweSk7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB0YWIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQxID0gJ3RhYic7XG5jb25zdCBEQVRBX0tFWSQxID0gJ2JzLnRhYic7XG5jb25zdCBFVkVOVF9LRVkkMSA9IGAuJHtEQVRBX0tFWSQxfWA7XG5jb25zdCBFVkVOVF9ISURFJDEgPSBgaGlkZSR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX0hJRERFTiQxID0gYGhpZGRlbiR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX1NIT1ckMSA9IGBzaG93JHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgRVZFTlRfU0hPV04kMSA9IGBzaG93biR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJID0gYGNsaWNrJHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgRVZFTlRfS0VZRE9XTiA9IGBrZXlkb3duJHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSA9IGBsb2FkJHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgQVJST1dfTEVGVF9LRVkgPSAnQXJyb3dMZWZ0JztcbmNvbnN0IEFSUk9XX1JJR0hUX0tFWSA9ICdBcnJvd1JpZ2h0JztcbmNvbnN0IEFSUk9XX1VQX0tFWSA9ICdBcnJvd1VwJztcbmNvbnN0IEFSUk9XX0RPV05fS0VZID0gJ0Fycm93RG93bic7XG5jb25zdCBIT01FX0tFWSA9ICdIb21lJztcbmNvbnN0IEVORF9LRVkgPSAnRW5kJztcbmNvbnN0IENMQVNTX05BTUVfQUNUSVZF
3ID0gJ2FjdGl2ZSc7XG5jb25zdCBDTEFTU19OQU1FX0ZBREUkMSA9ICdmYWRlJztcbmNvbnN0IENMQVNTX05BTUVfU0hPVyQxID0gJ3Nob3cnO1xuY29uc3QgQ0xBU1NfRFJPUERPV04gPSAnZHJvcGRvd24nO1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFID0gJy5kcm9wZG93bi10b2dnbGUnO1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV05fTUVOVSA9ICcuZHJvcGRvd24tbWVudSc7XG5jb25zdCBOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFID0gYDpub3QoJHtTRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEV9KWA7XG5jb25zdCBTRUxFQ1RPUl9UQUJfUEFORUwgPSAnLmxpc3QtZ3JvdXAsIC5uYXYsIFtyb2xlPVwidGFibGlzdFwiXSc7XG5jb25zdCBTRUxFQ1RPUl9PVVRFUiA9ICcubmF2LWl0ZW0sIC5saXN0LWdyb3VwLWl0ZW0nO1xuY29uc3QgU0VMRUNUT1JfSU5ORVIgPSBgLm5hdi1saW5rJHtOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFfSwgLmxpc3QtZ3JvdXAtaXRlbSR7Tk9UX1NFTEVDVE9SX0RST1BET1dOX1RPR0dMRX0sIFtyb2xlPVwidGFiXCJdJHtOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFfWA7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSA9ICdbZGF0YS1icy10b2dnbGU9XCJ0YWJcIl0sIFtkYXRhLWJzLXRvZ2dsZT1cInBpbGxcIl0sIFtkYXRhLWJzLXRvZ2dsZT1cImxpc3RcIl0nOyAvLyBUT0RPOiBjb3VsZCBvbmx5IGJlIGB0YWJgIGluIHY2XG5jb25zdCBTRUxFQ1RPUl9JTk5FUl9FTEVNID0gYCR7U0VMRUNUT1JfSU5ORVJ9LCAke1NFTEVDVE9SX0RBVEFfVE9HR0xFfWA7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRV9BQ1RJVkUgPSBgLiR7Q0xBU1NfTkFNRV9BQ1RJVkV9W2RhdGEtYnMtdG9nZ2xlPVwidGFiXCJdLCAuJHtDTEFTU19OQU1FX0FDVElWRX1bZGF0YS1icy10b2dnbGU9XCJwaWxsXCJdLCAuJHtDTEFTU19OQU1FX0FDVElWRX1bZGF0YS1icy10b2dnbGU9XCJsaXN0XCJdYDtcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgVGFiIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcbiAgICB0aGlzLl9wYXJlbnQgPSB0aGlzLl9lbGVtZW50LmNsb3Nlc3QoU0VMRUNUT1JfVEFCX1BBTkVMKTtcbiAgICBpZiAoIXRoaXMuX3BhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgICAgLy8gVE9ETzogc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBpbiB2NlxuICAgICAgLy8gdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtlbGVtZW50Lm91dGVySFRNTH0gaGFzIG5vdCBhIHZhbGlkIHBhcmVudCAke1NFTEVDVE9SX0lOTkVSX0VMRU19YClcbiAgICB9XG5cbiAgICAvLyBTZXQgdXAgaW5pdGlhbCBhcmlhIGF0dHJpYnV0ZXNcbiAgICB0aGlzLl9zZXRJbml0aWFsQXR0cmlidXRlcyh0aGlzLl9wYXJlbnQsIHRoaXMuX2dldENoaWxkcmVuKCkpO1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVlET1dOLCBldmVudCA9PiB0aGlzLl9rZXlkb3duKGV2ZW50KSk7XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQxO1xuICB9XG5cbiAgLy8gUHVibGljXG4gIHNob3coKSB7XG4gICAgLy8gU2hvd3MgdGhpcyBlbGVtIGFuZCBkZWFjdGl2YXRlIHRoZSBhY3RpdmUgc2libGluZyBpZiBleGlzdHNcbiAgICBjb25zdCBpbm5lckVsZW0gPSB0aGlzLl9lbGVtZW50O1xuICAgIGlmICh0aGlzLl9lbGVtSXNBY3RpdmUoaW5uZXJFbGVtKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBmb3IgYWN0aXZlIHRhYiBvbiBzYW1lIHBhcmVudCB0byBkZWFjdGl2YXRlIGl0XG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5fZ2V0QWN0aXZlRWxlbSgpO1xuICAgIGNvbnN0IGhpZGVFdmVudCA9IGFjdGl2ZSA/IEV2ZW50SGFuZGxlci50cmlnZ2VyKGFjdGl2ZSwgRVZFTlRfSElERSQxLCB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiBpbm5lckVsZW1cbiAgICB9KSA6IG51bGw7XG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIoaW5uZXJFbGVtLCBFVkVOVF9TSE9XJDEsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXQ6IGFjdGl2ZVxuICAgIH0pO1xuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCBoaWRlRXZlbnQgJiYgaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZGVhY3RpdmF0ZShhY3RpdmUsIGlubmVyRWxlbSk7XG4gICAgdGhpcy5fYWN0aXZhdGUoaW5uZXJFbGVtLCBhY3RpdmUpO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfYWN0aXZhdGUoZWxlbWVudCwgcmVsYXRlZEVsZW0pIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFKTtcbiAgICB0aGlzLl9hY3RpdmF0ZShTZWxlY3RvckVuZ2luZS5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKGVsZW1lbnQpKTsgLy8gU2VhcmNoIGFuZCBhY3RpdmF0ZS9zaG93IHRoZSBwcm9wZXIgc2VjdGlvblxuXG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSAhPT0gJ3RhYicpIHtcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVyQxKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIHRydWUpO1xuICAgICAgdGhpcy5fdG9nZ2xlRHJvcERvd24oZWxlbWVudCwgdHJ1ZSk7XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcihlbGVtZW50LCBFVkVOVF9TSE9XTiQxLCB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHJlbGF0ZWRFbGVtXG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIGVsZW1lbnQsIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRkFERS
3QxKSk7XG4gIH1cbiAgX2RlYWN0aXZhdGUoZWxlbWVudCwgcmVsYXRlZEVsZW0pIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQUNUSVZFKTtcbiAgICBlbGVtZW50LmJsdXIoKTtcbiAgICB0aGlzLl9kZWFjdGl2YXRlKFNlbGVjdG9yRW5naW5lLmdldEVsZW1lbnRGcm9tU2VsZWN0b3IoZWxlbWVudCkpOyAvLyBTZWFyY2ggYW5kIGRlYWN0aXZhdGUgdGhlIHNob3duIHNlY3Rpb24gdG9vXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgncm9sZScpICE9PSAndGFiJykge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XJDEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIGZhbHNlKTtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgdGhpcy5fdG9nZ2xlRHJvcERvd24oZWxlbWVudCwgZmFsc2UpO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIoZWxlbWVudCwgRVZFTlRfSElEREVOJDEsIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldDogcmVsYXRlZEVsZW1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgZWxlbWVudCwgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9GQURFJDEpKTtcbiAgfVxuICBfa2V5ZG93bihldmVudCkge1xuICAgIGlmICghW0FSUk9XX0xFRlRfS0VZLCBBUlJPV19SSUdIVF9LRVksIEFSUk9XX1VQX0tFWSwgQVJST1dfRE9XTl9LRVksIEhPTUVfS0VZLCBFTkRfS0VZXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBzdG9wUHJvcGFnYXRpb24vcHJldmVudERlZmF1bHQgYm90aCBhZGRlZCB0byBzdXBwb3J0IHVwL2Rvd24ga2V5cyB3aXRob3V0IHNjcm9sbGluZyB0aGUgcGFnZVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLl9nZXRDaGlsZHJlbigpLmZpbHRlcihlbGVtZW50ID0+ICFpc0Rpc2FibGVkKGVsZW1lbnQpKTtcbiAgICBsZXQgbmV4dEFjdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKFtIT01FX0tFWSwgRU5EX0tFWV0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgbmV4dEFjdGl2ZUVsZW1lbnQgPSBjaGlsZHJlbltldmVudC5rZXkgPT09IEhPTUVfS0VZID8gMCA6IGNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpc05leHQgPSBbQVJST1dfUklHSFRfS0VZLCBBUlJPV19ET1dOX0tFWV0uaW5jbHVkZXMoZXZlbnQua2V5KTtcbiAgICAgIG5leHRBY3RpdmVFbGVtZW50ID0gZ2V0TmV4dEFjdGl2ZUVsZW1lbnQoY2hpbGRyZW4sIGV2ZW50LnRhcmdldCwgaXNOZXh0LCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKG5leHRBY3RpdmVFbGVtZW50KSB7XG4gICAgICBuZXh0QWN0aXZlRWxlbWVudC5mb2N1cy
3h7XG4gICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgIH0pO1xuICAgICAgVGFiLmdldE9yQ3JlYXRlSW5zdGFuY2UobmV4dEFjdGl2ZUVsZW1lbnQpLnNob3coKTtcbiAgICB9XG4gIH1cbiAgX2dldENoaWxkcmVuKCkge1xuICAgIC8vIGNvbGxlY3Rpb24gb2YgaW5uZXIgZWxlbWVudHNcbiAgICByZXR1cm4gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9JTk5FUl9FTEVNLCB0aGlzLl9wYXJlbnQpO1xuICB9XG4gIF9nZXRBY3RpdmVFbGVtKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRDaGlsZHJlbigpLmZpbmQoY2hpbGQgPT4gdGhpcy5fZWxlbUlzQWN0aXZlKGNoaWxkKSkgfHwgbnVsbDtcbiAgfVxuICBfc2V0SW5pdGlhbEF0dHJpYnV0ZXMocGFyZW50LCBjaGlsZHJlbikge1xuICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHBhcmVudCwgJ3JvbGUnLCAndGFibGlzdCcpO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIHRoaXMuX3NldEluaXRpYWxBdHRyaWJ1dGVzT25DaGlsZChjaGlsZCk7XG4gICAgfVxuICB9XG4gIF9zZXRJbml0aWFsQXR0cmlidXRlc09uQ2hpbGQoY2hpbGQpIHtcbiAgICBjaGlsZCA9IHRoaXMuX2dldElubmVyRWxlbWVudChjaGlsZCk7XG4gICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLl9lbGVtSXNBY3RpdmUoY2hpbGQpO1xuICAgIGNvbnN0IG91dGVyRWxlbSA9IHRoaXMuX2dldE91dGVyRWxlbWVudChjaGlsZCk7XG4gICAgY2hpbGQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgaXNBY3RpdmUpO1xuICAgIGlmIChvdXRlckVsZW0gIT09IGNoaWxkKSB7XG4gICAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhvdXRlckVsZW0sICdyb2xlJywgJ3ByZXNlbnRhdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgfVxuICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKGNoaWxkLCAncm9sZScsICd0YWInKTtcblxuICAgIC8vIHNldCBhdHRyaWJ1dGVzIHRvIHRoZSByZWxhdGVkIHBhbmVsIHRvb1xuICAgIHRoaXMuX3NldEluaXRpYWxBdHRyaWJ1dGVzT25UYXJnZXRQYW5lbChjaGlsZCk7XG4gIH1cbiAgX3NldEluaXRpYWxBdHRyaWJ1dGVzT25UYXJnZXRQYW5lbChjaGlsZCkge1xuICAgIGNvbnN0IHRhcmdldCA9IFNlbGVjdG9yRW5naW5lLmdldEVsZW1lbnRGcm9tU2VsZWN0b3IoY2hpbGQpO1xuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHRhcmdldCwgJ3JvbGUnLCAndGFicGFuZWwnKTtcbiAgICBpZiAoY2hpbGQuaWQpIHtcbiAgICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHRhcmdldCwgJ2FyaWEtbGFiZWxsZWRieScsIGAke2NoaWxkLmlkfWApO1xuICAgIH1cbiAgfVxuICBfdG9nZ2xlRHJvcERvd24oZWxlbWVudCwgb3Blbikge1xuICAgIGNvbnN0IG91dGVyRWxlbSA9IHRoaXMuX2dldE91dGVyRWxlbWVudChlbGVtZW50KTtcbiAgICBpZiAoIW91dGVyRWxlbS5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfRFJPUERPV04pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRvZ2dsZSA9IChzZWxlY3RvciwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShzZWxlY3Rvciwgb3V0ZXJFbGVtKTtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShjbGFzc05hbWUsIG9wZW4pO1xuICAgICAgfVxuICAgIH07XG4gICAgdG9nZ2xlKFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSwgQ0xBU1NfTkFNRV9BQ1RJVkUpO1xuICAgIHRvZ2dsZShTRUxFQ1RPUl9EUk9QRE9XTl9NRU5VLCBDTEFTU19OQU1FX1NIT1ckMSk7XG4gICAgb3V0ZXJFbGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIG9wZW4pO1xuICB9XG4gIF9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhlbGVtZW50LCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGUpKSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgX2VsZW1Jc0FjdGl2ZShlbGVtKSB7XG4gICAgcmV0dXJuIGVsZW0uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfQUNUSVZFKTtcbiAgfVxuXG4gIC8vIFRyeSB0byBnZXQgdGhlIGlubmVyIGVsZW1lbnQgKHVzdWFsbHkgdGhlIC5uYXYtbGluaylcbiAgX2dldElubmVyRWxlbWVudChlbGVtKSB7XG4gICAgcmV0dXJuIGVsZW0ubWF0Y2hlcyhTRUxFQ1RPUl9JTk5FUl9FTEVNKSA/IGVsZW0gOiBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0lOTkVSX0VMRU0sIGVsZW0pO1xuICB9XG5cbiAgLy8gVHJ5IHRvIGdldCB0aGUgb3V0ZXIgZWxlbWVudCAodXN1YWxseSB0aGUgLm5hdi1pdGVtKVxuICBfZ2V0T3V0ZXJFbGVtZW50KGVsZW0pIHtcbiAgICByZXR1cm4gZWxlbS5jbG9zZXN0KFNFTEVDVE9SX09VVEVSKSB8fCBlbGVtO1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gVGFiLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyk7XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG4gICAgICBkYXRhW2NvbmZpZ10oKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUsIGZ1bmN0aW9uIChldmVudCkge1xuICBpZiAoWydBJywgJ0FSRUEnXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuICBpZiAoaXNEaXNhYmxlZCh0aGlzKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBUYWIuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKS5zaG93KCk7XG59KTtcblxuLyoqXG4gKiBJbml0aWFsaXplIG9uIGZvY3VzXG4gKi9cbkV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX0xPQURfREFUQV9BUEksICgpID0+IHtcbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfREFUQV9UT0dHTEVfQUNUSVZFKSkge1xuICAgIFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQpO1xuICB9XG59KTtcbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFRhYik7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB0b2FzdC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ3RvYXN0JztcbmNvbnN0IERBVEFfS0VZID0gJ2JzLnRvYXN0JztcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gO1xuY29uc3QgRVZFTlRfTU9VU0VPVkVSID0gYG1vdXNlb3ZlciR7RVZFTlRfS0VZfWA7XG5jb25zdCBFVkVOVF9NT1VTRU9VVCA9IGBtb3VzZW91dCR7RVZFTlRfS0VZfWA7XG5jb25zdCBFVkVOVF9GT0NVU0lOID0gYGZvY3VzaW4ke0VWRU5UX0tFWX1gO1xuY29uc3QgRVZFTlRfRk9DVVNPVVQgPSBgZm9jdXNvdXQke0VWRU5UX0tFWX1gO1xuY29uc3QgRVZFTlRfSElERSA9IGBoaWRlJHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX0hJRERFTiA9IGBoaWRkZW4ke0VWRU5UX0tFWX1gO1xuY29uc3QgRVZFTlRfU0hPVyA9IGBzaG93JHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX1NIT1dOID0gYHNob3duJHtFVkVOVF9LRVl9YDtcbmNvbnN0IENMQVNTX05BTUVfRkFERSA9ICdmYWRlJztcbmNvbnN0IENMQVNTX05BTUVfSElERSA9ICdoaWRlJzsgLy8gQGRlcHJlY2F0ZWQgLSBrZXB0IGhlcmUgb25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbmNvbnN0IENMQVNTX05BTUVfU0hPVyA9ICdzaG93JztcbmNvbnN0IENMQVNTX05BTUVfU0hPV0lORyA9ICdzaG93aW5nJztcbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBhbmltYXRpb246ICdib29sZWFuJyxcbiAgYXV0b2hpZGU6ICdib29sZWFuJyxcbiAgZGVsYXk6ICdudW1iZXInXG59O1xuY29uc3QgRGVmYXVsdCA9IHtcbiAgYW5pbWF0aW9uOiB0cnVlLFxuICBhdXRvaGl
3kZTogdHJ1ZSxcbiAgZGVsYXk6IDUwMDBcbn07XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFRvYXN0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZyk7XG4gICAgdGhpcy5fdGltZW91dCA9IG51bGw7XG4gICAgdGhpcy5faGFzTW91c2VJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLl9zZXRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0O1xuICB9XG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlO1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRTtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBzaG93KCkge1xuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1cpO1xuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jbGVhclRpbWVvdXQoKTtcbiAgICBpZiAodGhpcy5fY29uZmlnLmFuaW1hdGlvbikge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfRkFERSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPV0lORyk7XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTik7XG4gICAgICB0aGlzLl9tYXliZVNjaGVkdWxlSGlkZSgpO1xuICAgIH07XG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfSElERSk7IC8vIEBkZXByZWNhdGVkXG4gICAgcmVmbG93KHRoaXMuX2VsZW1lbnQpO1xuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1csIENMQVNTX05BTUVfU0hPV0lORyk7XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbik7XG4gIH1cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNTaG93bigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhpZGVFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREUpO1xuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0hJREUpOyAvLyBAZGVwcmVjYXRlZFxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPV0lORywgQ0xBU1NfTkFNRV9TSE9XKTtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTik7XG4gICAgfTtcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XSU5HKTtcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLl9lbGVtZW50LCB0aGlzLl9jb25maWcuYW5pbWF0aW9uKTtcbiAgfVxuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuX2NsZWFyVGltZW91dCgpO1xuICAgIGlmICh0aGlzLmlzU2hvd24oKSkge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyk7XG4gICAgfVxuICAgIHN1cGVyLmRpc3Bvc2UoKTtcbiAgfVxuICBpc1Nob3duKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1cpO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfbWF5YmVTY2hlZHVsZUhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuYXV0b2hpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gfHwgdGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9LCB0aGlzLl9jb25maWcuZGVsYXkpO1xuICB9XG4gIF9vbkludGVyYWN0aW9uKGV2ZW50LCBpc0ludGVyYWN0aW5nKSB7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdtb3VzZW92ZXInOlxuICAgICAgY2FzZSAnbW91c2VvdXQnOlxuICAgICAgICB7XG4gICAgICAgICAgdGhpcy5faGFzTW91c2VJbnRlcmFjdGlvbiA9IGlzSW50ZXJhY3Rpbmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2ZvY3VzaW4nOlxuICAgICAgY2FzZSAnZm9jdXNvdXQnOlxuICAgICAgICB7XG4gICAgICAgICAgdGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IGlzSW50ZXJhY3Rpbmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSW50ZXJhY3RpbmcpIHtcbiAgICAgIHRoaXMuX2NsZWFyVGltZW91dCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXh0RWxlbWVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG4gICAgaWYgKHRoaXMuX2VsZW1lbnQgPT09IG5leHRFbGVtZW50IHx8IHRoaXMuX2VsZW1lbnQuY29udGFpbnMobmV4dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX21heWJlU2NoZWR1bGVIaWRlKCk7XG4gIH1cbiAgX3NldExpc3RlbmVycygpIHtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VPVkVSLCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCB0cnVlKSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFT1VULCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCBmYWxzZSkpO1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9GT0NVU0lOLCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCB0cnVlKSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0ZPQ1VTT1VULCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCBmYWxzZSkpO1xuICB9XG4gIF9jbGVhclRpbWVvdXQoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpO1xuICAgIHRoaXMuX3RpbWVvdXQgP
3SBudWxsO1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gVG9hc3QuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YVtjb25maWddKHRoaXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5lbmFibGVEaXNtaXNzVHJpZ2dlcihUb2FzdCk7XG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFRvYXN0KTtcblxuZXhwb3J0IHsgQWxlcnQsIEJ1dHRvbiwgQ2Fyb3VzZWwsIENvbGxhcHNlLCBEcm9wZG93biwgTW9kYWwsIE9mZmNhbnZhcywgUG9wb3ZlciwgU2Nyb2xsU3B5LCBUYWIsIFRvYXN0LCBUb29sdGlwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ib290c3RyYXAuZXNtLmpzLm1hcFxuIiwidmFyIHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGksbj0xLHM9YXJndW1lbnRzLmxlbmd0aDtuPHM7bisrKWZvcih2YXIgYSBpbiBpPWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxhKSYmKHRbYV09aVthXSk7cmV0dXJuIHR9LHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaShpLG4scyl7dmFyIGE9dGhpczt0aGlzLmVuZFZhbD1uLHRoaXMub3B0aW9ucz1zLHRoaXMudmVyc2lvbj1cIjIuOS4wXCIsdGhpcy5kZWZhdWx0cz17c3RhcnRWYWw6MCxkZWNpbWFsUGxhY2VzOjAsZHVyYXRpb246Mix1c2VFYXNpbmc6ITAsdXNlR3JvdXBpbmc6ITAsdXNlSW5kaWFuU2VwYXJhdG9yczohMSxzbWFydEVhc2luZ1RocmVzaG9sZDo5OTksc21hcnRFYXNpbmdBbW91bnQ6MzMzLHNlcGFyYXRvcjpcIixcIixkZWNpbWFsOlwiLlwiLHByZWZpeDpcIlwiLHN1ZmZpeDpcIlwiLGVuYWJsZVNjcm9sbFNweTohMSxzY3JvbGxTcHlEZWxheToyMDAsc2Nyb2xsU3B5T25jZTohMX0sdGhpcy5maW5hbEVuZFZhbD1udWxsLHRoaXMudXNlRWFzaW5nPSEwLHRoaXMuY291bnREb3duPSExLHRoaXMuZXJyb3I9XCJcIix0aGlzLnN0YXJ0VmFsPTAsdGhpcy5wYXVzZWQ9ITAsdGhpcy5vbmNlPSExLHRoaXMuY291bnQ9ZnVuY3Rpb24odCl7YS5zdGFydFRpbWV8fChhLnN0YXJ0VGltZT10KTt2YXIgaT10LWEuc3RhcnRUaW1lO2EucmVtYWluaW5nPWEuZHVyYXRpb24taSxhLnVzZUVhc2luZz9hLmNvdW50RG93bj9hLmZyYW1lVmFsPWEuc3RhcnRWYWwtYS5lYXNpbmdGbihpLDAsYS5zdGFydFZhbC1hLmVuZFZhbCxhLmR1cmF0aW9uKTphLmZyYW1lVmFsPWEuZWFzaW5nRm4oaSxhLnN0YXJ0VmFsLGEuZW5kVmFsLWEuc3RhcnRWYWwsYS5kdXJhdGlvbik6YS5mcmFtZVZhbD1hLnN0YXJ0VmFsKyhhLmVuZFZhbC1hLnN0YXJ0VmFsKSooaS9hLmR1cmF0aW9uKTt2YXIgbj1hLmNvdW50RG93bj9hLmZyYW1lVmFsPGEuZW5kVmFsOmEuZnJhbWVWYWw+YS5lbmRWYWw7YS5mcmFtZVZhbD1uP2EuZW5kVmFsOmEuZnJhbWVWYWwsYS5mcmFtZVZhbD1OdW1iZXIoYS5mcmFtZVZhbC50b0ZpeGVkKGEub3B0aW9ucy5kZWNpbWFsUGxhY2VzKSksYS5wcmludFZhbHVlKGEuZnJhbWVWYWwpLGk8YS5kdXJhdGlvbj9hLnJBRj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYS5jb3VudCk6bnVsbCE9PWEuZmluYWxFbmRWYWw/YS51cGRhdGUoYS5maW5hbEVuZFZhbCk6YS5vcHRpb25zLm9uQ29tcGxldGVDYWxsYmFjayYmYS5vcHRpb25zLm9uQ29tcGxldGVDYWxsYmFjaygpfSx0aGlzLmZvcm1hdE51bWJlcj1mdW5jdGlvbih0KXt2YXIgaSxuLHMsZSxvPXQ8MD9cIi1cIjpcIlwiO2k9TWF0aC5hYnModCkudG9GaXhlZChhLm9wdGlvbnMuZGVjaW1hbFBsYWNlcyk7dmFyIHI9KGkrPVwiXCIpLnNwbGl0KFwiLlwiKTtpZihuPXJbMF0scz1yLmxlbmd0aD4xP2Eub3B0aW9ucy5kZWNpbWFsK3JbMV06XCJcIixhLm9wdGlvbnMudXNlR3JvdXBpbmcpe2U9XCJcIjtmb3IodmFyIGw9MyxoPTAsdT0wLHA9bi5sZW5ndGg7dTxwOysrdSlhLm9wdGlvbnMudXNlSW5kaWFuU2VwYXJhdG9ycyYmND09PXUmJihsPTIsaD0xKSwwIT09dSYmaCVsPT0wJiYoZT1hLm9wdGlvbnMuc2VwYXJhdG9yK2UpLGgrKyxlPW5bcC11LTFdK2U7bj1lfXJldHVybiBhLm9wdGlvbnMubnVtZXJhbHMmJmEub3B0aW9ucy5udW1lcmFscy5sZW5ndGgmJihuPW4ucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24odCl7cmV0dXJuIGEub3B0aW9ucy5udW1lcmFsc1srdF19KSkscz1zLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKHQpe3JldHVybiBhLm9wdGlvbnMubnVtZXJhbHNbK3RdfSkpKSxvK2Eub3B0aW9ucy5wcmVmaXgrbitzK2Eub3B0aW9ucy5zdWZmaXh9LHRoaXMuZWFzZU91dEV4cG89ZnVuY3Rpb24odCxpLG4scyl7cmV0dXJuIG4qKDEtTWF0aC5wb3coMiwtMTAqdC9zKSkqMTAyNC8xMDIzK2l9LHRoaXMub3B0aW9ucz10KHQoe30sdGhpcy5kZWZhdWx0cykscyksdGhpcy5mb3JtYXR0aW5nRm49dGhpcy5vcHRpb25zLmZvcm1hdHRpbmdGbj90aGlzLm9wdGlvbnMuZm9ybWF0dGluZ0ZuOnRoaXMuZm9ybWF0TnVtYmVyLHRoaXMuZWFzaW5nRm49dGhpcy5vcHRpb25zLmVhc2luZ0ZuP3RoaXMub3B0aW9ucy5lYXNpbmdGbjp0aGlzLmVhc2VPdXRFeHBvLHRoaXMuZWw9XCJzdHJpbmdcIj09dHlwZW9mIGk/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaSk6aSxuPW51bGw9PW4/dGhpcy5wYXJzZSh0aGlzLmVsLmlubmVySFRNTCk6bix0aGlzLnN0YXJ0VmFsPXRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLm9wdGlvbnMuc3RhcnRWYWwpLHRoaXMuZnJhbWVWYWw9dGhpcy5zdGFydFZhbCx0aGlzLmVuZFZhbD10aGlzLnZhbGlkYXRlVmFsdWUobiksdGhpcy5vcHRpb25zLmRlY2ltYWxQbGFjZXM9TWF0aC5tYXgodGhpcy5vcHRpb25zLmRlY2ltYWxQbGFjZXMpLHRoaXMucmVzZXREdXJhdGlvbigpLHRoaXMub3B0aW9ucy5zZXBhcmF0b3I9U3RyaW5nKHRoaXMub3B0aW9ucy5zZXBhcmF0b3IpLHRoaXMudXNlRWFzaW5nPXRoaXMub3B0aW9ucy51c2VFYXNpbmcsXCJcIj09PXR
3oaXMub3B0aW9ucy5zZXBhcmF0b3ImJih0aGlzLm9wdGlvbnMudXNlR3JvdXBpbmc9ITEpLHRoaXMuZWw/dGhpcy5wcmludFZhbHVlKHRoaXMuc3RhcnRWYWwpOnRoaXMuZXJyb3I9XCJbQ291bnRVcF0gdGFyZ2V0IGlzIG51bGwgb3IgdW5kZWZpbmVkXCIsXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmdGhpcy5vcHRpb25zLmVuYWJsZVNjcm9sbFNweSYmKHRoaXMuZXJyb3I/Y29uc29sZS5lcnJvcih0aGlzLmVycm9yLGkpOih3aW5kb3cub25TY3JvbGxGbnM9d2luZG93Lm9uU2Nyb2xsRm5zfHxbXSx3aW5kb3cub25TY3JvbGxGbnMucHVzaCgoZnVuY3Rpb24oKXtyZXR1cm4gYS5oYW5kbGVTY3JvbGwoYSl9KSksd2luZG93Lm9uc2Nyb2xsPWZ1bmN0aW9uKCl7d2luZG93Lm9uU2Nyb2xsRm5zLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KSl9LHRoaXMuaGFuZGxlU2Nyb2xsKHRoaXMpKSl9cmV0dXJuIGkucHJvdG90eXBlLmhhbmRsZVNjcm9sbD1mdW5jdGlvbih0KXtpZih0JiZ3aW5kb3cmJiF0Lm9uY2Upe3ZhciBpPXdpbmRvdy5pbm5lckhlaWdodCt3aW5kb3cuc2Nyb2xsWSxuPXQuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1uLnRvcCt3aW5kb3cucGFnZVlPZmZzZXQsYT1uLnRvcCtuLmhlaWdodCt3aW5kb3cucGFnZVlPZmZzZXQ7YTxpJiZhPndpbmRvdy5zY3JvbGxZJiZ0LnBhdXNlZD8odC5wYXVzZWQ9ITEsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gdC5zdGFydCgpfSksdC5vcHRpb25zLnNjcm9sbFNweURlbGF5KSx0Lm9wdGlvbnMuc2Nyb2xsU3B5T25jZSYmKHQub25jZT0hMCkpOih3aW5kb3cuc2Nyb2xsWT5hfHxzPmkpJiYhdC5wYXVzZWQmJnQucmVzZXQoKX19LGkucHJvdG90eXBlLmRldGVybWluZURpcmVjdGlvbkFuZFNtYXJ0RWFzaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5maW5hbEVuZFZhbD90aGlzLmZpbmFsRW5kVmFsOnRoaXMuZW5kVmFsO3RoaXMuY291bnREb3duPXRoaXMuc3RhcnRWYWw+dDt2YXIgaT10LXRoaXMuc3RhcnRWYWw7aWYoTWF0aC5hYnMoaSk+dGhpcy5vcHRpb25zLnNtYXJ0RWFzaW5nVGhyZXNob2xkJiZ0aGlzLm9wdGlvbnMudXNlRWFzaW5nKXt0aGlzLmZpbmFsRW5kVmFsPXQ7dmFyIG49dGhpcy5jb3VudERvd24/MTotMTt0aGlzLmVuZFZhbD10K24qdGhpcy5vcHRpb25zLnNtYXJ0RWFzaW5nQW1vdW50LHRoaXMuZHVyYXRpb249dGhpcy5kdXJhdGlvbi8yfWVsc2UgdGhpcy5lbmRWYWw9dCx0aGlzLmZpbmFsRW5kVmFsPW51bGw7bnVsbCE9PXRoaXMuZmluYWxFbmRWYWw/dGhpcy51c2VFYXNpbmc9ITE6dGhpcy51c2VFYXNpbmc9dGhpcy5vcHRpb25zLnVzZUVhc2luZ30saS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24odCl7dGhpcy5lcnJvcnx8KHRoaXMub3B0aW9ucy5vblN0YXJ0Q2FsbGJhY2smJnRoaXMub3B0aW9ucy5vblN0YXJ0Q2FsbGJhY2soKSx0JiYodGhpcy5vcHRpb25zLm9uQ29tcGxldGVDYWxsYmFjaz10KSx0aGlzLmR1cmF0aW9uPjA/KHRoaXMuZGV0ZXJtaW5lRGlyZWN0aW9uQW5kU21hcnRFYXNpbmcoKSx0aGlzLnBhdXNlZD0hMSx0aGlzLnJBRj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5jb3VudCkpOnRoaXMucHJpbnRWYWx1ZSh0aGlzLmVuZFZhbCkpfSxpLnByb3RvdHlwZS5wYXVzZVJlc3VtZT1mdW5jdGlvbigpe3RoaXMucGF1c2VkPyh0aGlzLnN0YXJ0VGltZT1udWxsLHRoaXMuZHVyYXRpb249dGhpcy5yZW1haW5pbmcsdGhpcy5zdGFydFZhbD10aGlzLmZyYW1lVmFsLHRoaXMuZGV0ZXJtaW5lRGlyZWN0aW9uQW5kU21hcnRFYXNpbmcoKSx0aGlzLnJBRj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5jb3VudCkpOmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuckFGKSx0aGlzLnBhdXNlZD0hdGhpcy5wYXVzZWR9LGkucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7Y2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yQUYpLHRoaXMucGF1c2VkPSEwLHRoaXMucmVzZXREdXJhdGlvbigpLHRoaXMuc3RhcnRWYWw9dGhpcy52YWxpZGF0ZVZhbHVlKHRoaXMub3B0aW9ucy5zdGFydFZhbCksdGhpcy5mcmFtZVZhbD10aGlzLnN0YXJ0VmFsLHRoaXMucHJpbnRWYWx1ZSh0aGlzLnN0YXJ0VmFsKX0saS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2NhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuckFGKSx0aGlzLnN0YXJ0VGltZT1udWxsLHRoaXMuZW5kVmFsPXRoaXMudmFsaWRhdGVWYWx1ZSh0KSx0aGlzLmVuZFZhbCE9PXRoaXMuZnJhbWVWYWwmJih0aGlzLnN0YXJ0VmFsPXRoaXMuZnJhbWVWYWwsbnVsbD09dGhpcy5maW5hbEVuZFZhbCYmdGhpcy5yZXNldER1cmF0aW9uKCksdGhpcy5maW5hbEVuZFZhbD1udWxsLHRoaXMuZGV0ZXJtaW5lRGlyZWN0aW9uQW5kU21hcnRFYXNpbmcoKSx0aGlzLnJBRj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5jb3VudCkpfSxpLnByb3RvdHlwZS5wcmludFZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBpO2lmKHRoaXMuZWwpe3ZhciBuPXRoaXMuZm9ybWF0dGluZ0ZuKHQpO2lmKG51bGw9PT0oaT10aGlzLm9wdGlvbnMucGx1Z2luKXx8dm9pZCAwPT09aT92b2lkIDA6aS5yZW5kZXIpdGhpcy5vcHRpb25zLnBsdWdpbi5yZW5kZXIodGhpcy5lbCxuKTtlbHNlIGlmKFwiSU5QVVRcIj09PXRoaXMuZWwudGFnTmFtZSl0aGlzLmVsLnZhbHVlPW47ZWxzZVwidGV4dFwiPT09dGhpcy5lbC50YWdOYW1lfHxcInRzcGFuXCI9PT10aGlzLmVsLnRhZ05hbWU/dGhpcy5lbC50ZXh0Q29udGVudD1uOnRoaXMuZWwuaW5uZXJIVE1MPW59fSxpLnByb3RvdHlwZS5lbnN1cmVOdW1iZXI9ZnVuY3Rpb24odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQmJiFpc05hTih0KX0saS5wcm90b3R5cGUudmFsaWRhdGVWYWx1ZT1mdW5jdGlvbih0KXt2YXIgaT1OdW1iZXIodCk7cmV0dXJuIHRoaXMuZW5zdXJlTnVtYmVyKGkpP2k6KHRoaXMuZXJyb3I9XCJbQ291bnRVcF0gaW52YWxpZCBzdGFydCBvciBlbmQgdmFsdWU6IFwiLmNvbmNhdCh0KSxudWxsKX0saS5wcm90b3R5cGUucmVzZXREdXJhdGlvbj1mdW5jdGlvbigpe3RoaXMuc3RhcnRUaW1lPW51bGwsdGhpcy5kdXJhdGlvbj0xZTMqTnVtYmVyKHRoaXMub3B0aW9ucy5kdXJhdGlvbiksdGhpcy5yZW1haW5pbmc9dGhpcy5kdXJhdGlvbn0saS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7dmFyIGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvKFsuLCfCoCBdKS9nLFwiXFxcXCQxXCIpfS
3xuPWkodGhpcy5vcHRpb25zLnNlcGFyYXRvcikscz1pKHRoaXMub3B0aW9ucy5kZWNpbWFsKSxhPXQucmVwbGFjZShuZXcgUmVnRXhwKG4sXCJnXCIpLFwiXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChzLFwiZ1wiKSxcIi5cIik7cmV0dXJuIHBhcnNlRmxvYXQoYSl9LGl9KCk7ZXhwb3J0e2kgYXMgQ291bnRVcH07XG4iLCIvKiFcbiAqIEBsaWNlbnNlIE1JVFxuICogQG5hbWUgdmxpdGVqc1xuICogQHZlcnNpb24gNy40LjJcbiAqIEBjb3B5cmlnaHQgMjAyNSBZb3JpaWlzXG4gKi9cbmNvbnN0IGU9e30sdD17fTtmdW5jdGlvbiBzKHtwbHVnaW5zOnMscHJvdmlkZXI6aSx0eXBlOm4scGxheWVyOnJ9KXsoZnVuY3Rpb24ocyl7Y29uc3QgaT1bXSxuPU9iamVjdC5rZXlzKGUpO3JldHVybiBzLmZvckVhY2goKHM9PntpZighbi5pbmNsdWRlcyhzKSl0aHJvdyBuZXcgRXJyb3IoYHZsaXRlanMgOjogVW5rbm93biBwbHVnaW4gXCIke3N9XCIuYCk7aS5wdXNoKHtpZDpzLFBsdWdpbjplW3NdLG9wdGlvbnM6dFtzXX0pfSkpLGl9KShzKS5mb3JFYWNoKCgoe2lkOmUsUGx1Z2luOnQsb3B0aW9uczpzfSk9Pntjb25zdCBvPW5ldyB0KHtwbGF5ZXI6cixvcHRpb25zOnN9KTtpZihyLnBsdWdpbnNbZV09bywhby5wcm92aWRlcnMuaW5jbHVkZXMoaSl8fCFvLnR5cGVzLmluY2x1ZGVzKG4pKXRocm93IG5ldyBFcnJvcihgdmxpdGVqcyA6OiBUaGUgXCIke2V9XCIgcGx1Z2luIGlzIG9ubHkgY29tcGF0aWJsZSB3aXRoIHByb3ZpZGVyczpcIiR7by5wcm92aWRlcnN9XCIgYW5kIHR5cGVzOlwiJHtvLnR5cGVzfVwiYCk7by5pbml0KCl9KSl9Y29uc3QgaT17aHRtbDU6ZnVuY3Rpb24oZSl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLmV2ZW50cz1be3R5cGU6XCJ0aW1ldXBkYXRlXCIsbGlzdGVuZXI6c3VwZXIub25UaW1lVXBkYXRlfSx7dHlwZTpcImVuZGVkXCIsbGlzdGVuZXI6c3VwZXIub25NZWRpYUVuZGVkfSx7dHlwZTpcInBsYXlpbmdcIixsaXN0ZW5lcjp0aGlzLm9uUGxheWluZ30se3R5cGU6XCJ3YWl0aW5nXCIsbGlzdGVuZXI6dGhpcy5vbldhaXRpbmd9LHt0eXBlOlwic2Vla2luZ1wiLGxpc3RlbmVyOnRoaXMub25TZWVraW5nfSx7dHlwZTpcInNlZWtlZFwiLGxpc3RlbmVyOnRoaXMub25TZWVrZWR9XX1pbml0KCl7dGhpcy53YWl0VW50aWxWaWRlb0lzUmVhZHkoKS50aGVuKCgoKT0+e3RoaXMuYWRkU3BlY2lmaWNFdmVudHMoKSxzdXBlci5vblJlYWR5KCl9KSl9d2FpdFVudGlsVmlkZW9Jc1JlYWR5KCl7cmV0dXJuIG5ldyB3aW5kb3cuUHJvbWlzZSgoZT0+e3RoaXMubWVkaWEucmVhZHlTdGF0ZT49MiYmdGhpcy5tZWRpYS5kdXJhdGlvbnx8MD09PXRoaXMubWVkaWEucmVhZHlTdGF0ZSYmXCJub25lXCI9PT10aGlzLm1lZGlhLnByZWxvYWQ/ZSgpOih0aGlzLm1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkZWRtZXRhZGF0YVwiLGUse29uY2U6ITB9KSx0aGlzLm1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoXCJjYW5wbGF5XCIsZSx7b25jZTohMH0pKX0pKX1hZGRTcGVjaWZpY0V2ZW50cygpe3RoaXMuZXZlbnRzLmZvckVhY2goKGU9Pnt0aGlzLm1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZS50eXBlLGUubGlzdGVuZXIuYmluZCh0aGlzKSl9KSl9Z2V0SW5zdGFuY2UoKXtyZXR1cm4gdGhpcy5tZWRpYX1nZXRDdXJyZW50VGltZSgpe3JldHVybiBuZXcgd2luZG93LlByb21pc2UoKGU9PmUodGhpcy5tZWRpYS5jdXJyZW50VGltZSkpKX1nZXREdXJhdGlvbigpe3JldHVybiBuZXcgd2luZG93LlByb21pc2UoKGU9PmUodGhpcy5tZWRpYS5kdXJhdGlvbikpKX1tZXRob2RQbGF5KCl7dGhpcy5tZWRpYS5wbGF5KCl9bWV0aG9kUGF1c2UoKXt0aGlzLm1lZGlhLnBhdXNlKCl9bWV0aG9kU2V0Vm9sdW1lKGUpe3RoaXMubWVkaWEudm9sdW1lPWV9bWV0aG9kR2V0Vm9sdW1lKCl7cmV0dXJuIG5ldyB3aW5kb3cuUHJvbWlzZSgoZT0+ZSh0aGlzLm1lZGlhLnZvbHVtZSkpKX1tZXRob2RNdXRlKCl7dGhpcy5tZWRpYS5tdXRlZD0hMCx0aGlzLm1lZGlhLnNldEF0dHJpYnV0ZShcIm11dGVkXCIsXCJcIil9bWV0aG9kVW5NdXRlKCl7dGhpcy5tZWRpYS5tdXRlZD0hMSx0aGlzLm1lZGlhLnJlbW92ZUF0dHJpYnV0ZShcIm11dGVkXCIpfW1ldGhvZFNlZWtUbyhlKXt0aGlzLm1lZGlhLmN1cnJlbnRUaW1lPWV9b25XYWl0aW5nKCl7dGhpcy5sb2FkaW5nKCEwKX1vblBsYXlpbmcoKXt0aGlzLmxvYWRpbmcoITEpfW9uU2Vla2luZygpe3RoaXMubG9hZGluZyghMCl9b25TZWVrZWQoKXt0aGlzLmxvYWRpbmcoITEpfXJlbW92ZVNwZWNpZmljRXZlbnRzKCl7dGhpcy5ldmVudHMuZm9yRWFjaCgoZT0+e3RoaXMubWVkaWEucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLnR5cGUsZS5saXN0ZW5lcil9KSl9ZGVzdHJveSgpe3RoaXMucmVtb3ZlU3BlY2lmaWNFdmVudHMoKSxzdXBlci5kZXN0cm95KCl9fX19LG49e307ZnVuY3Rpb24gcihlKXtjb25zdCB0PTFlMyplLHM9dC8xZTMvNjB8MCxpPXQvMWUzJTYwfDA7bGV0IG49XCJcIjtyZXR1cm4gbis9czwxMD9cIjBcIjpcIlwiLG4rPWAke3N9OmAsbis9aTwxMD9cIjBcIjpcIlwiLG4rPWksbn1mdW5jdGlvbiBvKCl7Y29uc3QgZT1mdW5jdGlvbigpe2lmKGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuIGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuXCJcIjtyZXR1cm5bXCJ3ZWJraXRcIixcIm1velwiLFwibXNcIl0uZmluZCgoZT0+ZG9jdW1lbnRbYCR7ZX1FeGl0RnVsbHNjcmVlbmBdaW5zdGFuY2VvZiBGdW5jdGlvbnx8ZG9jdW1lbnRbYCR7ZX1DYW5jZWxGdWxsU2NyZWVuYF1pbnN0YW5jZW9mIEZ1bmN0aW9uKSl8fFwiXCJ9KCk7cmV0dXJue3JlcXVlc3RGbjplP2Ake2V9UmVxdWVzdEZ1bGxTY3JlZW5gOlwicmVxdWVzdEZ1bGxzY3JlZW5cIixjYW5jZWxGbjplP2Ake2V9RXhpdEZ1bGxzY3JlZW5gOlwiZXhpdEZ1bGxzY3JlZW5cIixjaGFuZ2VFdmVudDplP2Ake2V9ZnVsbHNjcmVlbmNoYW5nZWA6XCJmdWxsc2NyZWVuY2hhbmdlXCIsaXNGdWxsU2NyZWVuOmU/YCR7ZX1GdWxsc2NyZWVuRWxlbWVudGA6XCJmdWxsc2NyZWVuRWxlbWVudFwifX1mdW5jdGlvbiBsKCl7cmV0dXJuXCJvbnRvdWNoc3RhcnRcImluIHdpbmRvd3x8bmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjB9ZnVuY3Rpb24gYSh7dGFyZ2V0OmUsc2VsZWN0b3JTdHJpbmc6dCxub2RlTmFtZTpzfSl7cmV0dXJuKH
3M9W10uY29uY2F0KHMpKS5zb21lKChzPT5lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1zJiZlLm1hdGNoZXModCkpKX12YXIgaD0nPHN2ZyBjbGFzcz1cInYtaWNvblByZXNzZWRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMSAxMWgydjJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMUgxYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxWm0yLThIMWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMVYxYzAtLjU1LS40NS0xLTEtMVMzIC40NSAzIDF2MlptNyAxMWMuNTUgMCAxLS40NSAxLTF2LTJoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFabTEtMTFWMWMwLS41NS0uNDUtMS0xLTFTOSAuNDUgOSAxdjNjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMlpcIi8+PC9zdmc+Jyx1PSc8c3ZnIGNsYXNzPVwidi1pY29uVW5wcmVzc2VkXCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEgOWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUgydi0yYzAtLjU1LS40NS0xLTEtMVptMC00Yy41NSAwIDEtLjQ1IDEtMVYyaDJjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFIMUMuNDUgMCAwIC40NSAwIDF2M2MwIC41NS40NSAxIDEgMVptMTEgN2gtMmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXYyWk05IDFjMCAuNTUuNDUgMSAxIDFoMnYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMVYxYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxWlwiLz48L3N2Zz4nLGM9JzxzdmcgY2xhc3M9XCJ2LWljb25QcmVzc2VkXCIgdmlld0JveD1cIjAgMCAxMiAxNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTIgMTRjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMlMwIC45IDAgMnYxMGMwIDEuMS45IDIgMiAyWk04IDJ2MTBjMCAxLjEuOSAyIDIgMnMyLS45IDItMlYyYzAtMS4xLS45LTItMi0yUzggLjkgOCAyWlwiLz48L3N2Zz4nLGQ9JzxzdmcgY2xhc3M9XCJ2LWljb25VbnByZXNzZWRcIiB2aWV3Qm94PVwiMCAwIDExIDEzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMCAxdjEwLjM2YzAgLjc5Ljg3IDEuMjcgMS41NC44NGw4LjE0LTUuMThhMSAxIDAgMCAwIDAtMS42OUwxLjU0LjE2QS45OTguOTk4IDAgMCAwIDAgMVpcIi8+PC9zdmc+Jyx2PSc8c3ZnIGNsYXNzPVwidi1pY29uVW5wcmVzc2VkXCIgdmlld0JveD1cIjAgMCAxOCAxN1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTAgNi40NjF2NGMwIC41NS40NSAxIDEgMWgzbDMuMjkgMy4yOWMuNjMuNjMgMS43MS4xOCAxLjcxLS43MVYyLjg3MWMwLS44OS0xLjA4LTEuMzQtMS43MS0uNzFMNCA1LjQ2MUgxYy0uNTUgMC0xIC40NS0xIDFabTEzLjUgMmE0LjUgNC41IDAgMCAwLTIuNS00LjAzdjguMDVjMS40OC0uNzMgMi41LTIuMjUgMi41LTQuMDJaTTExIC45MTF2LjJjMCAuMzguMjUuNzEuNi44NWE3LjAwNCA3LjAwNCAwIDAgMSA0LjQgNi41YzAgMi45NC0xLjgyIDUuNDctNC40IDYuNS0uMzYuMTQtLjYuNDctLjYuODV2LjJjMCAuNjMuNjMgMS4wNyAxLjIxLjg1YTguOTggOC45OCAwIDAgMCA1Ljc5LTguNGMwLTMuODQtMi40LTcuMTEtNS43OS04LjQtLjU4LS4yMy0xLjIxLjIyLTEuMjEuODVaXCIvPjwvc3ZnPicscD0nPHN2ZyBjbGFzcz1cInYtaWNvblByZXNzZWRcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNLjYzLjI5MmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMy42NiAzLjY2LS4yOS4zSDFjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDNsMy4yOSAzLjI5Yy42My42MyAxLjcxLjE4IDEuNzEtLjcxdi00LjE3bDQuMTggNC4xOGMtLjQ5LjM3LTEuMDIuNjgtMS42LjkxLS4zNi4xNS0uNTguNTMtLjU4LjkyIDAgLjcyLjczIDEuMTggMS4zOS45MS44LS4zMyAxLjU1LS43NyAyLjIyLTEuMzFsMS4zNCAxLjM0YS45OTcuOTk3IDAgMSAwIDEuNDEtMS40MUwyLjA1LjI5M2MtLjM5LS4zOS0xLjAyLS4zOS0xLjQyIDBaTTE2IDguNjYyYzAgLjgyLS4xNSAxLjYxLS40MSAyLjM0bDEuNTMgMS41M2MuNTYtMS4xNy44OC0yLjQ4Ljg4LTMuODcgMC0zLjgzLTIuNC03LjExLTUuNzgtOC40LS41OS0uMjMtMS4yMi4yMy0xLjIyLjg2di4xOWMwIC4zOC4yNS43MS42MS44NSAyLjU3IDEuMDQgNC4zOSAzLjU2IDQuMzkgNi41Wm0tOC43MS02LjI5LS4xNy4xN0w5IDQuNDIydi0xLjM1YzAtLjg5LTEuMDgtMS4zMy0xLjcxLS43Wm02LjIxIDYuMjlhNC41IDQuNSAwIDAgMC0yLjUtNC4wM3YxLjc5bDIuNDggMi40OGMuMDEtLjA4LjAyLS4xNi4wMi0uMjRaXCIvPjwvc3ZnPic7ZnVuY3Rpb24gbSh7b3B0aW9uczplLGlzTXV0ZWQ6dCxpc1ZpZGVvOnN9KXtyZXR1cm4gcz9gPGRpdiBjbGFzcz1cInYtY29udHJvbEJhclwiPiR7ZS5wbGF5UGF1c2U/eSgpOlwiXCJ9JHtlLnRpbWU/ZygpOlwiXCJ9JHtlLnByb2dyZXNzQmFyP1AoKTpcIlwifSR7ZS52b2x1bWU/dyh7aXNNdXRlZDp0fSk6XCJcIn0ke2UuZnVsbHNjcmVlbj9gPGJ1dHRvbiBjbGFzcz1cInYtZnVsbHNjcmVlbkJ1dHRvbiB2LWNvbnRyb2xCdXR0b25cIiBhcmlhLWxhYmVsPVwiRW50ZXIgZnVsbHNjcmVlblwiPiR7dX0ke2h9PC9zcGFuPjwvYnV0dG9uPmA6XCJcIn08L2Rpdj5gOmA8ZGl2IGNsYXNzPVwidi1jb250cm9sQmFyXCI+JHtlLnBsYXlQYXVzZT95KCk6XCJcIn0ke2UudGltZT9nKCk6XCJcIn0ke2UucHJvZ3Jlc3NCYXI/UCgpOlwiXCJ9JHtlLnZvbHVtZT93KHtpc011dGVkOnR9KTpcIlwifTwvZGl2PmB9ZnVuY3Rpb24geSgpe3JldHVybmA8YnV0dG9uIGNsYXNzPVwidi1wbGF5UGF1c2VCdXR0b24gdi1jb250cm9sQnV0dG9uXCIgYXJpYS1sYWJlbD1cIlBsYXlcIj4ke2R9JHtjfTwvYnV0dG9uPmB9ZnVuY3Rpb24gZygpe3JldHVybic8ZGl2IGNsYXNzPVwidi10aW1lXCI+PHNwYW4gY2xhc3M9XCJ2LWN1cnJlbnRUaW1lXCI+MDA6MDA8L3NwYW4+Jm5ic3A7LyZuYnNwOzxzcGFuIGNsYXNzPVwidi1kdXJhdGlvblwiPjwvc3Bhbj48L2Rpdj4nfWZ1bmN0aW9uIFAoKXtyZXR1cm4nPGlucHV0IHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwidi1wcm9ncmVzc0JhciB2LXByb2dyZXNzQmFyU3R5bGVcIiBtaW49XCIwXCIgbWF4PVwiMTAwXCIgc3RlcD1cIjAuMDFcIiB2YWx1ZT1cIjBcIiBhcmlhLWxhYmVsPVwiU2Vla1wiIGFyaWEtdmFsdWVtaW49XCIwXCIgLz4nfWZ1bmN0aW9uIHcoe2lzTXV0ZWQ6ZX0pe3JldHVybmA8YnV0dG9uIGNsYXNzPVwidi12b2x1bWVCdXR0b24gdi1jb250cm9sQnV0dG9uJHtlP1wiIHYtY29udHJvbFByZXNzZWRcIjpcIlwifVwiPiR7dn0ke3B9PC9idXR0b24+YH1jbGFzcyBme2NvbnN0cnVjdG9yKHtwbGF5ZXI6ZSx0eXBlOnR9KXt0aGlzLnBsYXllcj1lLHRoaXMudHlwZT10LH
3RoaXMudG91Y2hFdmVudHM9W1widG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJ0b3VjaGVuZFwiXSx0aGlzLm9uSW5wdXRQcm9ncmVzc0Jhcj10aGlzLm9uSW5wdXRQcm9ncmVzc0Jhci5iaW5kKHRoaXMpLHRoaXMub25Ub3VjaEV2ZW50UHJvZ3Jlc3NCYXI9dGhpcy5vblRvdWNoRXZlbnRQcm9ncmVzc0Jhci5iaW5kKHRoaXMpLHRoaXMub25DbGlja09uQ29udHJvbEJhcj10aGlzLm9uQ2xpY2tPbkNvbnRyb2xCYXIuYmluZCh0aGlzKSx0aGlzLnRvZ2dsZVBsYXlQYXVzZT10aGlzLnRvZ2dsZVBsYXlQYXVzZS5iaW5kKHRoaXMpLHRoaXMudG9nZ2xlVm9sdW1lPXRoaXMudG9nZ2xlVm9sdW1lLmJpbmQodGhpcyksdGhpcy50b2dnbGVGdWxsc2NyZWVuPXRoaXMudG9nZ2xlRnVsbHNjcmVlbi5iaW5kKHRoaXMpfWluaXQoKXt0aGlzLnJlbmRlcigpLHRoaXMuY2FjaGVFbGVtZW50cygpLHRoaXMuYWRkRXZlbnRzKCl9Y2FjaGVFbGVtZW50cygpe2NvbnN0IGU9dGhpcy5wbGF5ZXIuZWxlbWVudHMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIudi1jb250cm9sQmFyXCIpO2UmJih0aGlzLnBsYXllci5lbGVtZW50cy5jb250cm9sQmFyPWUsdGhpcy5wbGF5ZXIuZWxlbWVudHMucGxheVBhdXNlPWUucXVlcnlTZWxlY3RvcihcIi52LXBsYXlQYXVzZUJ1dHRvblwiKSx0aGlzLnBsYXllci5lbGVtZW50cy5wcm9ncmVzc0Jhcj1lLnF1ZXJ5U2VsZWN0b3IoXCIudi1wcm9ncmVzc0JhclwiKSx0aGlzLnBsYXllci5lbGVtZW50cy5jdXJyZW50VGltZT1lLnF1ZXJ5U2VsZWN0b3IoXCIudi1jdXJyZW50VGltZVwiKSx0aGlzLnBsYXllci5lbGVtZW50cy5kdXJhdGlvbj1lLnF1ZXJ5U2VsZWN0b3IoXCIudi1kdXJhdGlvblwiKSx0aGlzLnBsYXllci5lbGVtZW50cy52b2x1bWU9ZS5xdWVyeVNlbGVjdG9yKFwiLnYtdm9sdW1lQnV0dG9uXCIpLHRoaXMucGxheWVyLmVsZW1lbnRzLmZ1bGxzY3JlZW49ZS5xdWVyeVNlbGVjdG9yKFwiLnYtZnVsbHNjcmVlbkJ1dHRvblwiKSx0aGlzLnBsYXllci5lbGVtZW50cy52b2x1bWUmJnRoaXMucGxheWVyLmVsZW1lbnRzLnZvbHVtZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsdGhpcy5wbGF5ZXIuaXNNdXRlZD9cIlVubXV0ZVwiOlwiTXV0ZVwiKSl9cmVuZGVyKCl7dGhpcy5wbGF5ZXIuZWxlbWVudHMuY29udGFpbmVyLmluc2VydEFkamFjZW50SFRNTChcImJlZm9yZWVuZFwiLHRoaXMuZ2V0VGVtcGxhdGUoKSl9b25SZWFkeSgpe3RoaXMucGxheWVyLmdldER1cmF0aW9uKCkudGhlbigoZT0+e3RoaXMucGxheWVyLmVsZW1lbnRzLnByb2dyZXNzQmFyJiZ0aGlzLnBsYXllci5lbGVtZW50cy5wcm9ncmVzc0Jhci5zZXRBdHRyaWJ1dGUoXCJhcmlhLXZhbHVlbWF4XCIsYCR7TWF0aC5yb3VuZChlKX1gKSx0aGlzLnBsYXllci5lbGVtZW50cy5kdXJhdGlvbiYmKHRoaXMucGxheWVyLmVsZW1lbnRzLmR1cmF0aW9uLmlubmVySFRNTD1yKGUpKX0pKX1hZGRFdmVudHMoKXt2YXIgZTt0aGlzLnBsYXllci5lbGVtZW50cy5wcm9ncmVzc0JhciYmKHRoaXMucGxheWVyLmVsZW1lbnRzLnByb2dyZXNzQmFyLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLHRoaXMub25JbnB1dFByb2dyZXNzQmFyKSx0aGlzLnBsYXllci5pc1RvdWNoJiZ0aGlzLnRvdWNoRXZlbnRzLmZvckVhY2goKGU9Pnt0aGlzLnBsYXllci5lbGVtZW50cy5wcm9ncmVzc0Jhci5hZGRFdmVudExpc3RlbmVyKGUsdGhpcy5vblRvdWNoRXZlbnRQcm9ncmVzc0Jhcil9KSkpLG51bGw9PT0oZT10aGlzLnBsYXllci5lbGVtZW50cy5jb250cm9sQmFyKXx8dm9pZCAwPT09ZXx8ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLm9uQ2xpY2tPbkNvbnRyb2xCYXIpfW9uVG91Y2hFdmVudFByb2dyZXNzQmFyKGUpe2UucHJldmVudERlZmF1bHQoKTtjb25zdCB0PWUudGFyZ2V0LHM9TnVtYmVyLnBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGUoXCJtYXhcIil8fFwiMTAwXCIpLGk9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPShlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFgtaS5sZWZ0KS9pLndpZHRoKjEwMDt0LnZhbHVlPVwiXCIrMTAwKm4vcyx0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwiaW5wdXRcIikpfW9uSW5wdXRQcm9ncmVzc0JhcihlKXtjb25zdCB0PWUudGFyZ2V0O3Quc3R5bGUuc2V0UHJvcGVydHkoXCItLXZsaXRlLXByb2dyZXNzVmFsdWVcIixgJHt0LnZhbHVlfSVgKSx0aGlzLnBsYXllci5lbGVtZW50cy5vdXRlckNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoXCJ2LWZpcnN0U3RhcnRcIikmJnRoaXMucGxheWVyLnBsYXkoKSx0aGlzLnBsYXllci5nZXREdXJhdGlvbigpLnRoZW4oKGU9Pnt0aGlzLnBsYXllci5zZWVrVG8oTnVtYmVyLnBhcnNlRmxvYXQodC52YWx1ZSkqZS8xMDApfSkpfW9uQ2xpY2tPbkNvbnRyb2xCYXIoZSl7Y29uc3QgdD1lLnRhcmdldCxzPWEoe3RhcmdldDp0LHNlbGVjdG9yU3RyaW5nOlwiLnYtcGxheVBhdXNlQnV0dG9uXCIsbm9kZU5hbWU6W1wiYnV0dG9uXCJdfSksaT1hKHt0YXJnZXQ6dCxzZWxlY3RvclN0cmluZzpcIi52LXZvbHVtZUJ1dHRvblwiLG5vZGVOYW1lOltcImJ1dHRvblwiXX0pLG49YSh7dGFyZ2V0OnQsc2VsZWN0b3JTdHJpbmc6XCIudi1mdWxsc2NyZWVuQnV0dG9uXCIsbm9kZU5hbWU6W1wiYnV0dG9uXCJdfSk7cz90aGlzLnRvZ2dsZVBsYXlQYXVzZShlKTppP3RoaXMudG9nZ2xlVm9sdW1lKGUpOm4mJnRoaXMudG9nZ2xlRnVsbHNjcmVlbihlKSwoc3x8aXx8bikmJnRoaXMucGxheWVyLmVsZW1lbnRzLmNvbnRhaW5lci5mb2N1cygpLHRoaXMucGxheWVyLlZsaXRlanMuc3RhcnRBdXRvSGlkZVRpbWVyKCl9dG9nZ2xlUGxheVBhdXNlKGUpe2UucHJldmVudERlZmF1bHQoKSx0aGlzLnBsYXllci5lbGVtZW50cy5vdXRlckNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoXCJ2LXBhdXNlZFwiKT90aGlzLnBsYXllci5wbGF5KCk6dGhpcy5wbGF5ZXIucGF1c2UoKX10b2dnbGVWb2x1bWUoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucGxheWVyLmVsZW1lbnRzLnZvbHVtZS5jbGFzc0xpc3QuY29udGFpbnMoXCJ2LWNvbnRyb2xQcmVzc2VkXCIpP3RoaXMucGxheWVyLnVuTXV0ZSgpOnRoaXMucGxheWVyLm11dGUoKX10b2dnbGVGdWxsc2NyZWVuKGUpe2lmKGUucHJldmVudERlZmF1bHQoKSx0aGlzLnBsYXllci5pc0Z1bGxTY3JlZW4pdGhpcy5pc09yaWVudGF0aW9uQXBpQXZhaWxhYmxlKCkmJndpbmRvdy5zY3JlZW4ub3JpZW50YXRpb24udW5sb2NrKCksdGhpcy5wbGF5ZXIuZXhpdEZ1bGxzY3JlZW4oKTtlbHNle3RoaXMucGxheWVyLnJlcXVlc3RGdWxsc2NyZWVuKCk7dHJ5e3dpbmRvdy5tYXRjaE1lZGlhKFwiKG9yaWVudGF0aW9uOnBvcnRyYWl0KVwiKS5tYXRjaGVzJiZ0aGlzLmlzT3JpZW50YXRpb25BcGlBdmFpbGFibGUoKSYmd2luZG93LnNjcmVlbi5vcmllbnRhdGlvbi5sb2NrKFwibGFuZHNjYXBlXCIpLmNhdGNoKCgoKT0+e30pKX1jYXRjaChlKXt9fX1pc09yaWVudGF0aW9uQXBpQXZhaWxhYmxlKCl7cmV0dXJuIHdpbmRvdy5zY3JlZW4ub3JpZW50YXRpb24mJiF3aW5kb3cuc2NyZWVuLm1vek9yaWVudGF0aW9ufWdldFRlbXBsYXRlKCl7cmV0dXJuYCR7bSh7b3B0aW9uczp0aGlzLnBsYXllci5vcHRpb25zLGlzTXV0ZWQ6dGhpcy5wbGF5ZXIuaXNNdXRlZCxpc1ZpZGVvOlwidmlkZW9cIj09PXR
3oaXMudHlwZX0pfWB9cmVtb3ZlRXZlbnRzKCl7dmFyIGU7dGhpcy5wbGF5ZXIuZWxlbWVudHMucHJvZ3Jlc3NCYXImJih0aGlzLnBsYXllci5lbGVtZW50cy5wcm9ncmVzc0Jhci5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW5wdXRcIix0aGlzLm9uSW5wdXRQcm9ncmVzc0JhciksdGhpcy5wbGF5ZXIuaXNUb3VjaCYmdGhpcy50b3VjaEV2ZW50cy5mb3JFYWNoKChlPT57dGhpcy5wbGF5ZXIuZWxlbWVudHMucHJvZ3Jlc3NCYXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHRoaXMub25Ub3VjaEV2ZW50UHJvZ3Jlc3NCYXIpfSkpKSxudWxsPT09KGU9dGhpcy5wbGF5ZXIuZWxlbWVudHMuY29udHJvbEJhcil8fHZvaWQgMD09PWV8fGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5vbkNsaWNrT25Db250cm9sQmFyKX1kZXN0cm95KCl7dmFyIGU7dGhpcy5yZW1vdmVFdmVudHMoKSxudWxsPT09KGU9dGhpcy5wbGF5ZXIuZWxlbWVudHMuY29udHJvbEJhcil8fHZvaWQgMD09PWV8fGUucmVtb3ZlKCl9fWNsYXNzIGJ7Y29uc3RydWN0b3Ioe1ZsaXRlanM6ZSx0eXBlOnR9KXt0aGlzLlZsaXRlanM9ZSx0aGlzLnR5cGU9dCx0aGlzLnBsdWdpbnM9e30sdGhpcy5tZWRpYT1lLm1lZGlhLHRoaXMub3B0aW9ucz1lLm9wdGlvbnMsdGhpcy5pc0Nhc3Q9ITEsdGhpcy5pc0xpbmVhckFkPSExLHRoaXMuZWxlbWVudHM9e2NvbnRhaW5lcjplLmNvbnRhaW5lcixvdXRlckNvbnRhaW5lcjplLm91dGVyQ29udGFpbmVyLGJpZ1BsYXk6ZS5jb250YWluZXIucXVlcnlTZWxlY3RvcihcIi52LWJpZ1BsYXlcIikscG9zdGVyOmUuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIudi1wb3N0ZXJcIiksY29udHJvbEJhcjpudWxsLHBsYXlQYXVzZTpudWxsLHByb2dyZXNzQmFyOm51bGwsY3VycmVudFRpbWU6bnVsbCxkdXJhdGlvbjpudWxsLHZvbHVtZTpudWxsLGZ1bGxzY3JlZW46bnVsbH0sdGhpcy5pc0Z1bGxTY3JlZW49ITEsdGhpcy5pc011dGVkPXRoaXMub3B0aW9ucy5tdXRlZCx0aGlzLmlzUGF1c2VkPW51bGwsdGhpcy5wbGF5ZXJFdmVudHM9W10sdGhpcy5pc1RvdWNoPWwoKSx0aGlzLmNvbnRyb2xCYXI9bmV3IGYoe3BsYXllcjp0aGlzLHR5cGU6dH0pfWJ1aWxkKCl7dGhpcy5vcHRpb25zLmNvbnRyb2xzJiZ0aGlzLmNvbnRyb2xCYXIuaW5pdCgpLHRoaXMuaW5pdCgpfW9uUmVhZHkoKXt0aGlzLm9wdGlvbnMubXV0ZWQmJnRoaXMubXV0ZSgpLHRoaXMubWVkaWEuY2xhc3NMaXN0LmFkZChcInYtbWVkaWFcIiksdGhpcy5tZWRpYS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiLTFcIiksdGhpcy5vcHRpb25zLmF1dG9wbGF5JiYoIXRoaXMubWVkaWEubXV0ZWQmJnRoaXMubXV0ZSgpLHRoaXMucGxheSgpKSx0aGlzLlZsaXRlanMub25SZWFkeSBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZ0aGlzLlZsaXRlanMub25SZWFkeS5jYWxsKHRoaXMsdGhpcyksXCJub25lXCI9PT10aGlzLm1lZGlhLnByZWxvYWQmJlwiaHRtbDVcIj09PXRoaXMuVmxpdGVqcy5wcm92aWRlcj90aGlzLm1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkZWRtZXRhZGF0YVwiLCgoKT0+dGhpcy50cmlnZ2VyT25SZWFkeSgpKSk6dGhpcy50cmlnZ2VyT25SZWFkeSgpLHRoaXMubG9hZGluZyghMSl9dHJpZ2dlck9uUmVhZHkoKXt0aGlzLm9wdGlvbnMuY29udHJvbHMmJnRoaXMuY29udHJvbEJhci5vblJlYWR5KCksT2JqZWN0LmtleXModGhpcy5wbHVnaW5zKS5mb3JFYWNoKChlPT57dGhpcy5wbHVnaW5zW2VdLm9uUmVhZHkgaW5zdGFuY2VvZiBGdW5jdGlvbiYmdGhpcy5wbHVnaW5zW2VdLm9uUmVhZHkoKX0pKX1vbihlLHQpe3QgaW5zdGFuY2VvZiBGdW5jdGlvbiYmKHRoaXMucGxheWVyRXZlbnRzLnB1c2goe3R5cGU6ZSxsaXN0ZW5lcjp0fSksdGhpcy5lbGVtZW50cy5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihlLHQpKX1vZmYoZSx0KXt0IGluc3RhbmNlb2YgRnVuY3Rpb24mJnRoaXMuZWxlbWVudHMuY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0KX1kaXNwYXRjaEV2ZW50KGUsdCl7dGhpcy5lbGVtZW50cy5jb250YWluZXIuZGlzcGF0Y2hFdmVudChuZXcgd2luZG93LkN1c3RvbUV2ZW50KGUse2RldGFpbDp0fSkpfWxvYWRpbmcoZSl7dGhpcy5lbGVtZW50cy5vdXRlckNvbnRhaW5lci5jbGFzc0xpc3RbZT9cImFkZFwiOlwicmVtb3ZlXCJdKFwidi1sb2FkaW5nXCIpLHRoaXMuZGlzcGF0Y2hFdmVudChcInByb2dyZXNzXCIpfW9uVGltZVVwZGF0ZSgpe3RoaXMub3B0aW9ucy50aW1lJiZQcm9taXNlLmFsbChbdGhpcy5nZXRDdXJyZW50VGltZSgpLHRoaXMuZ2V0RHVyYXRpb24oKV0pLnRoZW4oKChbZSx0XSk9PnRoaXMudXBkYXRlUHJvZ3Jlc3NCYXIoe3NlY29uZHM6ZSxkdXJhdGlvbjp0fSkpKX11cGRhdGVQcm9ncmVzc0Jhcih7c2Vjb25kczplLGR1cmF0aW9uOnQsaXNSZW1vdGU6cz0hMX0pe2NvbnN0IGk9TWF0aC5yb3VuZChlKTtpZih0aGlzLmVsZW1lbnRzLnByb2dyZXNzQmFyKXtjb25zdCBzPTEwMCppL3Q7dGhpcy5lbGVtZW50cy5wcm9ncmVzc0Jhci52YWx1ZT1gJHtzfWAsdGhpcy5lbGVtZW50cy5wcm9ncmVzc0Jhci5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdmxpdGUtcHJvZ3Jlc3NWYWx1ZVwiLGAke3N9JWApLHRoaXMuZWxlbWVudHMucHJvZ3Jlc3NCYXIuc2V0QXR0cmlidXRlKFwiYXJpYS12YWx1ZW5vd1wiLGAke01hdGgucm91bmQoZSl9YCl9dGhpcy5lbGVtZW50cy5jdXJyZW50VGltZSYmKHRoaXMuZWxlbWVudHMuY3VycmVudFRpbWUuaW5uZXJIVE1MPXIoaSkpLCFzJiZ0aGlzLmRpc3BhdGNoRXZlbnQoXCJ0aW1ldXBkYXRlXCIpfW9uTWVkaWFFbmRlZCgpe3RoaXMub3B0aW9ucy5sb29wP3RoaXMucGxheSgpOih0aGlzLmVsZW1lbnRzLm91dGVyQ29udGFpbmVyLmNsYXNzTGlzdC5yZXBsYWNlKFwidi1wbGF5aW5nXCIsXCJ2LXBhdXNlZFwiKSx0aGlzLmVsZW1lbnRzLm91dGVyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJ2LWZpcnN0U3RhcnRcIiksdGhpcy5pc1BhdXNlZD1udWxsKSx0aGlzLmVsZW1lbnRzLnBvc3RlciYmdGhpcy5lbGVtZW50cy5wb3N0ZXIuY2xhc3NMaXN0LmFkZChcInYtYWN0aXZlXCIpLFwidmlkZW9cIj09PXR
3oaXMudHlwZSYmdGhpcy5lbGVtZW50cy5iaWdQbGF5JiZ0aGlzLmVsZW1lbnRzLmJpZ1BsYXkuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwiUGxheVwiKSx0aGlzLmVsZW1lbnRzLnBsYXlQYXVzZSYmKHRoaXMuZWxlbWVudHMucGxheVBhdXNlLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixcIlBsYXlcIiksdGhpcy5lbGVtZW50cy5wbGF5UGF1c2UuY2xhc3NMaXN0LnJlbW92ZShcInYtY29udHJvbFByZXNzZWRcIikpLHRoaXMuZWxlbWVudHMucHJvZ3Jlc3NCYXImJih0aGlzLmVsZW1lbnRzLnByb2dyZXNzQmFyLnZhbHVlPVwiMFwiLHRoaXMuZWxlbWVudHMucHJvZ3Jlc3NCYXIuc3R5bGUuc2V0UHJvcGVydHkoXCItLXZsaXRlLXByb2dyZXNzVmFsdWVcIixcIjAlXCIpLHRoaXMuZWxlbWVudHMucHJvZ3Jlc3NCYXIucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS12YWx1ZW5vd1wiKSksdGhpcy5lbGVtZW50cy5jdXJyZW50VGltZSYmKHRoaXMuZWxlbWVudHMuY3VycmVudFRpbWUuaW5uZXJIVE1MPVwiMDA6MDBcIiksdGhpcy5kaXNwYXRjaEV2ZW50KFwiZW5kZWRcIil9cGxheSgpe3RoaXMuaXNMaW5lYXJBZHx8KG51bGw9PT10aGlzLmlzUGF1c2VkJiYodGhpcy5lbGVtZW50cy5vdXRlckNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwidi1maXJzdFN0YXJ0XCIpLFwidmlkZW9cIj09PXRoaXMudHlwZSYmdGhpcy5lbGVtZW50cy5wb3N0ZXImJnRoaXMuZWxlbWVudHMucG9zdGVyLmNsYXNzTGlzdC5yZW1vdmUoXCJ2LWFjdGl2ZVwiKSksIXRoaXMuaXNDYXN0JiZ0aGlzLm1ldGhvZFBsYXkoKSx0aGlzLmlzUGF1c2VkPSExLHRoaXMuZWxlbWVudHMub3V0ZXJDb250YWluZXIuY2xhc3NMaXN0LnJlcGxhY2UoXCJ2LXBhdXNlZFwiLFwidi1wbGF5aW5nXCIpLHRoaXMuZWxlbWVudHMucGxheVBhdXNlJiYodGhpcy5lbGVtZW50cy5wbGF5UGF1c2Uuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwiUGF1c2VcIiksdGhpcy5lbGVtZW50cy5wbGF5UGF1c2UuY2xhc3NMaXN0LmFkZChcInYtY29udHJvbFByZXNzZWRcIikpLFwidmlkZW9cIj09PXRoaXMudHlwZSYmdGhpcy5lbGVtZW50cy5iaWdQbGF5JiZ0aGlzLmVsZW1lbnRzLmJpZ1BsYXkuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwiUGF1c2VcIiksdGhpcy5hZnRlclBsYXlQYXVzZSgpLHRoaXMuZGlzcGF0Y2hFdmVudChcInBsYXlcIikpfXBhdXNlKCl7IXRoaXMuaXNDYXN0JiZ0aGlzLm1ldGhvZFBhdXNlKCksdGhpcy5pc1BhdXNlZD0hMCx0aGlzLmVsZW1lbnRzLm91dGVyQ29udGFpbmVyLmNsYXNzTGlzdC5yZXBsYWNlKFwidi1wbGF5aW5nXCIsXCJ2LXBhdXNlZFwiKSx0aGlzLmVsZW1lbnRzLnBsYXlQYXVzZSYmKHRoaXMuZWxlbWVudHMucGxheVBhdXNlLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixcIlBsYXlcIiksdGhpcy5lbGVtZW50cy5wbGF5UGF1c2UuY2xhc3NMaXN0LnJlbW92ZShcInYtY29udHJvbFByZXNzZWRcIikpLFwidmlkZW9cIj09PXRoaXMudHlwZSYmdGhpcy5lbGVtZW50cy5iaWdQbGF5JiZ0aGlzLmVsZW1lbnRzLmJpZ1BsYXkuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwiUGxheVwiKSx0aGlzLmFmdGVyUGxheVBhdXNlKCksdGhpcy5kaXNwYXRjaEV2ZW50KFwicGF1c2VcIil9YWZ0ZXJQbGF5UGF1c2UoKXt0aGlzLlZsaXRlanMuYXV0b0hpZGVHcmFudGVkJiYodGhpcy5WbGl0ZWpzLnN0b3BBdXRvSGlkZVRpbWVyKCksIXRoaXMuaXNQYXVzZWQmJnRoaXMuVmxpdGVqcy5zdGFydEF1dG9IaWRlVGltZXIoKSl9c2V0Vm9sdW1lKGUpe2xldCB0PWU7dD4xP3Q9MTp0PD0wPyh0PTAsdGhpcy5pc011dGVkPSEwLHRoaXMuZWxlbWVudHMudm9sdW1lJiZ0aGlzLmVsZW1lbnRzLnZvbHVtZS5jbGFzc0xpc3QuYWRkKFwidi1jb250cm9sUHJlc3NlZFwiKSk6KHRoaXMuaXNNdXRlZD0hMSx0aGlzLmVsZW1lbnRzLnZvbHVtZSYmdGhpcy5lbGVtZW50cy52b2x1bWUuY2xhc3NMaXN0LnJlbW92ZShcInYtY29udHJvbFByZXNzZWRcIikpLHRoaXMubWV0aG9kU2V0Vm9sdW1lKHQpLHRoaXMuZGlzcGF0Y2hFdmVudChcInZvbHVtZWNoYW5nZVwiLHt2b2x1bWU6dH0pfWdldFZvbHVtZSgpe3JldHVybiBuZXcgd2luZG93LlByb21pc2UoKGU9Pnt0aGlzLm1ldGhvZEdldFZvbHVtZSgpLnRoZW4oKHQ9PntlKHQpfSkpfSkpfW11dGUoKXt0aGlzLm1ldGhvZE11dGUoKSx0aGlzLmlzTXV0ZWQ9ITAsdGhpcy5lbGVtZW50cy52b2x1bWUmJih0aGlzLmVsZW1lbnRzLnZvbHVtZS5jbGFzc0xpc3QuYWRkKFwidi1jb250cm9sUHJlc3NlZFwiKSx0aGlzLmVsZW1lbnRzLnZvbHVtZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsXCJVbm11dGVcIikpLHRoaXMuZGlzcGF0Y2hFdmVudChcInZvbHVtZWNoYW5nZVwiKX11bk11dGUoKXt0aGlzLm1ldGhvZFVuTXV0ZSgpLHRoaXMuaXNNdXRlZD0hMSx0aGlzLmVsZW1lbnRzLnZvbHVtZSYmKHRoaXMuZWxlbWVudHMudm9sdW1lLmNsYXNzTGlzdC5yZW1vdmUoXCJ2LWNvbnRyb2xQcmVzc2VkXCIpLHRoaXMuZWxlbWVudHMudm9sdW1lLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixcIk11dGVcIikpLHRoaXMuZGlzcGF0Y2hFdmVudChcInZvbHVtZWNoYW5nZVwiKX1zZWVrVG8oZSl7dGhpcy5tZXRob2RTZWVrVG8oZSl9cmVxdWVzdEZ1bGxzY3JlZW4oKXtjb25zdHtyZXF1ZXN0Rm46ZX09dGhpcy5WbGl0ZWpzLnN1cHBvcnRGdWxsU2NyZWVuO3RoaXMubWVkaWFbZV0mJih0aGlzLmVsZW1lbnRzLmNvbnRhaW5lcltlXSgpLHRoaXMuaXNGdWxsU2NyZWVuPSEwLHRoaXMuZWxlbWVudHMub3V0ZXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChcInYtZnVsbHNjcmVlblwiKSx0aGlzLmVsZW1lbnRzLmZ1bGxzY3JlZW4mJih0aGlzLmVsZW1lbnRzLmZ1bGxzY3JlZW4uY2xhc3NMaXN0LmFkZChcInYtY29udHJvbFByZXNzZWRcIiksdGhpcy5lbGVtZW50cy5mdWxsc2NyZWVuLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixcIkV4aXQgZnVsbHNjcmVlblwiKSksdGhpcy5kaXNwYXRjaEV2ZW50KFwiZW50ZXJmdWxsc2NyZWVuXCIpKX1leGl0RnVsbHNjcmVlbih7ZXNjS2V5OmU9ITF9PXt9KXtjb25zdHtjYW5jZWxGbjp0fT10aGlzLlZsaXRlanMuc3VwcG9ydEZ1bGxTY3JlZW47ZG9jdW1lbnRbdF0mJighZSYmZG9jdW1lbnRbdF0oKSx0aGlzLmlzRnVsbFNjcmVlbj0hMSx0aGlzLmVsZW1lbnRzLm91dGVyQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoXCJ2LWZ1bGxzY3JlZW5cIiksdGhpcy5lbGVtZW50cy5mdWxsc2NyZWVuJiYodGhpcy5lbGVtZW50cy5mdWxsc2NyZWVuLmNsYXNzTGlzdC5yZW1vdmUoXCJ2LWNvbnRyb2xQcmVzc2VkXCIpLHRoaXMuZWxlbWVudHMuZnVsbHNjcmVlbi5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsXCJFbnRlciBmdWxsc2NyZWVuXCIpKSx0aGlzLmRpc3BhdGNoRXZlbnQoXCJleGl0ZnVsbHNjcmVlblwiKSl9ZGVzdHJveSgpe3ZhciBlO09iamVjdC5rZXlzKHRoaXMucGx1Z2lucykuZm9yRWFjaCgoZT0+e3RoaXMucGx1Z2luc1tlXS5kZXN0cm95IGluc3RhbmNlb2YgRnVuY3Rpb24mJnRoaXMucGx1Z2luc1tlXS5kZXN0cm95KCl9KSksbnVsbD09PShlPXRoaXMuY29udHJvbEJhcil8fHZvaWQgMD09PWV8fGUuZGVzdHJveSgpLHRoaXMucGxheWVyRXZlbnRzLmZvckVhY2goKGU9Pnt0aGlzLmVsZW1lbnRzLmNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKGUudHlwZSxlLmxpc3RlbmVyKX0pKSx0aGlzLmVsZW1lbnRzLmNvbnRhaW5lci5yZW1vdmUoKX19Y29uc3QgRT17YXVkaW86e2NvbnRyb2xzOiEwLGF1dG9wbGF5OiExLHBsYXlQYXVzZTohMCxwcm9ncmVzc0JhcjohMCx0aW1lOiEwLHZvbHVtZTohMCxsb29wOiExfS
3x2aWRlbzp7Y29udHJvbHM6ITAsYXV0b3BsYXk6ITEscGxheVBhdXNlOiEwLHByb2dyZXNzQmFyOiEwLHRpbWU6ITAsdm9sdW1lOiEwLGZ1bGxzY3JlZW46ITAscG9zdGVyOm51bGwsYmlnUGxheTohMCxwbGF5c2lubGluZTohMCxsb29wOiExLG11dGVkOiExLGF1dG9IaWRlOiExLGF1dG9IaWRlRGVsYXk6M2UzLHByb3ZpZGVyUGFyYW1zOnt9fX07Y2xhc3MgQntjb25zdHJ1Y3RvcihlLHtvcHRpb25zOnQ9e30scHJvdmlkZXI6cj1cImh0bWw1XCIscGx1Z2luczpsPVtdLG9uUmVhZHk6YT0oKT0+e319PXt9KXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl0aGlzLm1lZGlhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSk7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50fHxlIGluc3RhbmNlb2YgSFRNTEF1ZGlvRWxlbWVudHx8ZSBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwidmxpdGVqcyA6OiBUaGUgZWxlbWVudCBvciBzZWxlY3RvciBzdXBwbGllZCBpcyBub3QgdmFsaWQuXCIpO3RoaXMubWVkaWE9ZX10aGlzLnByb3ZpZGVyPXIsdGhpcy5vblJlYWR5PWEsdGhpcy50eXBlPXRoaXMubWVkaWEgaW5zdGFuY2VvZiBIVE1MQXVkaW9FbGVtZW50P1wiYXVkaW9cIjpcInZpZGVvXCIsdGhpcy5zdXBwb3J0RnVsbFNjcmVlbj1vKCk7W1wiYXV0b3BsYXlcIixcInBsYXlzaW5saW5lXCIsXCJtdXRlZFwiLFwibG9vcFwiXS5mb3JFYWNoKChlPT57dGhpcy5tZWRpYS5oYXNBdHRyaWJ1dGUoZSk/dFtlXT0hMDp0W2VdJiZ0aGlzLm1lZGlhLnNldEF0dHJpYnV0ZShlLFwiXCIpfSkpLHRoaXMub3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sRVt0aGlzLnR5cGVdKSx0KSx0aGlzLmF1dG9IaWRlR3JhbnRlZD1cInZpZGVvXCI9PT10aGlzLnR5cGUmJiEhdGhpcy5vcHRpb25zLmF1dG9IaWRlJiYhIXRoaXMub3B0aW9ucy5jb250cm9scywvKGlQaG9uZSkvZ2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkmJih0aGlzLm9wdGlvbnMuZnVsbHNjcmVlbj0hMSksdGhpcy5vbkNsaWNrT25QbGF5ZXI9dGhpcy5vbkNsaWNrT25QbGF5ZXIuYmluZCh0aGlzKSx0aGlzLm9uRG91YmxlQ2xpY2tPblBsYXllcj10aGlzLm9uRG91YmxlQ2xpY2tPblBsYXllci5iaW5kKHRoaXMpLHRoaXMub25Nb3VzZW1vdmU9dGhpcy5vbk1vdXNlbW92ZS5iaW5kKHRoaXMpLHRoaXMub25DaGFuZ2VGdWxsU2NyZWVuPXRoaXMub25DaGFuZ2VGdWxsU2NyZWVuLmJpbmQodGhpcyk7Y29uc3QgaD1mdW5jdGlvbihlLHQpe2NvbnN0IHM9aVtlXTtpZihzKXJldHVybiBzKHQsbltlXSk7dGhyb3cgbmV3IEVycm9yKGB2bGl0ZWpzIDo6IFVua25vd24gcHJvdmlkZXIgXCIke2V9XCJgKX0ocixiKTt0aGlzLndyYXBFbGVtZW50KCksdGhpcy5jb250YWluZXI9dGhpcy5tZWRpYS5jbG9zZXN0KFwiLnYtY29udGFpbmVyXCIpLHRoaXMub3V0ZXJDb250YWluZXI9dGhpcy5jb250YWluZXIuY2xvc2VzdChcIi52LXZsaXRlXCIpLFwidmlkZW9cIj09PXRoaXMudHlwZSYmdGhpcy5yZW5kZXJMYXlvdXQoKSx0aGlzLnBsYXllcj1uZXcgaCh7dHlwZTp0aGlzLnR5cGUsVmxpdGVqczp0aGlzfSksdGhpcy5wbGF5ZXIuYnVpbGQoKSx0aGlzLmFkZEV2ZW50cygpLHMoe3BsdWdpbnM6bCxwcm92aWRlcjpyLHR5cGU6dGhpcy50eXBlLHBsYXllcjp0aGlzLnBsYXllcn0pfXdyYXBFbGVtZW50KCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2UuY2xhc3NMaXN0LmFkZChcInYtdmxpdGVcIixcInYtZmlyc3RTdGFydFwiLFwidi1wYXVzZWRcIixcInYtbG9hZGluZ1wiLGB2LSR7dGhpcy50eXBlfWApO2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt0LnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCIwXCIpLHQuY2xhc3NMaXN0LmFkZChcInYtY29udGFpbmVyXCIpLGUuYXBwZW5kQ2hpbGQodCk7dGhpcy5tZWRpYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMubWVkaWEpLHQuYXBwZW5kQ2hpbGQodGhpcy5tZWRpYSl9cmVuZGVyTGF5b3V0KCl7Y29uc3QgZT1gXFxuXFx0XFx0XFx0PGRpdiBjbGFzcz1cInYtb3ZlcmxheVwiPjwvZGl2PlxcblxcdFxcdFxcdFxcblxcdFxcdDxkaXYgY2xhc3M9XCJ2LWxvYWRlclwiPlxcblxcdFxcdFxcdDxkaXYgY2xhc3M9XCJ2LWxvYWRlckNvbnRlbnRcIj5cXG5cXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVwidi1sb2FkZXJCb3VuY2UxXCI+PC9kaXY+XFxuXFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cInYtbG9hZGVyQm91bmNlMlwiPjwvZGl2PlxcblxcdFxcdFxcdFxcdDxkaXYgY2xhc3M9XCJ2LWxvYWRlckJvdW5jZTNcIj48L2Rpdj5cXG5cXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHQ8L2Rpdj5cXG5cXHRcXG5cXHRcXHRcXHQke3RoaXMub3B0aW9ucy5wb3N0ZXI/ZnVuY3Rpb24oe3Bvc3RlclVybDplPVwiXCJ9KXtyZXR1cm5gPGRpdiBjbGFzcz1cInYtcG9zdGVyIHYtYWN0aXZlXCIke2UmJmAgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHtlfSlcImB9PjwvZGl2PmB9KHtwb3N0ZXJVcmw6dGhpcy5vcHRpb25zLnBvc3Rlcn0pOlwiXCJ9XFxuXFx0XFx0XFx0JHt0aGlzLm9wdGlvbnMuYmlnUGxheT8nPGJ1dHRvbiBjbGFzcz1cInYtYmlnUGxheVwiIGFyaWEtbGFiZWw9XCJQbGF5XCI+PHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAgMEM0LjQ4IDAgMCA0LjQ4IDAgMTBzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE1LjUyIDAgMTAgMFpNNy41IDEyLjY3VjcuMzNjMC0uNzkuODgtMS4yNyAxLjU0LS44NGw0LjE1IDIuNjdhMSAxIDAgMCAxIDAgMS42OGwtNC4xNSAyLjY3Yy0uNjYuNDMtMS41NC0uMDUtMS41NC0uODRaXCIvPjwvc3ZnPjwvYnV0dG9uPic6XCJcIn1cXG5cXHRcXHRgO3RoaXMuY29udGFpbmVyLmluc2VydEFkamFjZW50SFRNTChcImJlZm9yZWVuZFwiLGUpfWFkZEV2ZW50cygpe1widmlkZW9cIj09PXRoaXMudHlwZSYmKHRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMub25DbGlja09uUGxheWVyKSx0aGlzLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwiZGJsY2xpY2tcIix0aGlzLm9uRG91YmxlQ2xpY2tPblBsYXllciksdGhpcy5hdXRvSGlkZUdyYW50ZWQmJnRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLm9uTW91c2Vtb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKH
3RoaXMuc3VwcG9ydEZ1bGxTY3JlZW4uY2hhbmdlRXZlbnQsdGhpcy5vbkNoYW5nZUZ1bGxTY3JlZW4pKX1vbkNsaWNrT25QbGF5ZXIoZSl7Y29uc3QgdD1lLnRhcmdldCxzPWEoe3RhcmdldDp0LHNlbGVjdG9yU3RyaW5nOlwiLnYtcG9zdGVyLCAudi1iaWdQbGF5XCIsbm9kZU5hbWU6W1wiZGl2XCIsXCJidXR0b25cIl19KSxpPWEoe3RhcmdldDp0LHNlbGVjdG9yU3RyaW5nOlwiLnYtb3ZlcmxheVwiLG5vZGVOYW1lOltcImRpdlwiXX0pOyhzfHxpJiYhbCgpKSYmKHRoaXMucGxheWVyLmNvbnRyb2xCYXIudG9nZ2xlUGxheVBhdXNlKGUpLHQubWF0Y2hlcyhcIi52LWJpZ1BsYXlcIikmJnRoaXMuY29udGFpbmVyLmZvY3VzKCkpfW9uRG91YmxlQ2xpY2tPblBsYXllcihlKXthKHt0YXJnZXQ6ZS50YXJnZXQsc2VsZWN0b3JTdHJpbmc6XCIudi1vdmVybGF5XCIsbm9kZU5hbWU6W1wiZGl2XCJdfSkmJnRoaXMucGxheWVyLmNvbnRyb2xCYXIudG9nZ2xlRnVsbHNjcmVlbihlKX1vbk1vdXNlbW92ZSgpeyF0aGlzLnBsYXllci5pc1BhdXNlZCYmdGhpcy5hdXRvSGlkZUdyYW50ZWQmJih0aGlzLnN0b3BBdXRvSGlkZVRpbWVyKCksdGhpcy5zdGFydEF1dG9IaWRlVGltZXIoKSl9b25DaGFuZ2VGdWxsU2NyZWVuKCl7IWRvY3VtZW50W3RoaXMuc3VwcG9ydEZ1bGxTY3JlZW4uaXNGdWxsU2NyZWVuXSYmdGhpcy5wbGF5ZXIuaXNGdWxsU2NyZWVuJiZ0aGlzLnBsYXllci5leGl0RnVsbHNjcmVlbih7ZXNjS2V5OiEwfSl9c3RvcEF1dG9IaWRlVGltZXIoKXtcInZpZGVvXCI9PT10aGlzLnR5cGUmJnRoaXMucGxheWVyLmVsZW1lbnRzLmNvbnRyb2xCYXImJih0aGlzLnBsYXllci5lbGVtZW50cy5jb250cm9sQmFyLmNsYXNzTGlzdC5yZW1vdmUoXCJ2LWhpZGRlblwiKSxjbGVhclRpbWVvdXQodGhpcy50aW1lckF1dG9IaWRlKSl9c3RhcnRBdXRvSGlkZVRpbWVyKCl7XCJ2aWRlb1wiPT09dGhpcy50eXBlJiYhdGhpcy5wbGF5ZXIuaXNQYXVzZWQmJnRoaXMucGxheWVyLmVsZW1lbnRzLmNvbnRyb2xCYXImJih0aGlzLnRpbWVyQXV0b0hpZGU9d2luZG93LnNldFRpbWVvdXQoKCgpPT57dmFyIGU7bnVsbD09PShlPXRoaXMucGxheWVyLmVsZW1lbnRzLmNvbnRyb2xCYXIpfHx2b2lkIDA9PT1lfHxlLmNsYXNzTGlzdC5hZGQoXCJ2LWhpZGRlblwiKX0pLHRoaXMub3B0aW9ucy5hdXRvSGlkZURlbGF5KSl9cmVtb3ZlRXZlbnRzKCl7XCJ2aWRlb1wiPT09dGhpcy50eXBlJiYodGhpcy5jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5vbkNsaWNrT25QbGF5ZXIpLHRoaXMuY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJkYmxjbGlja1wiLHRoaXMub25Eb3VibGVDbGlja09uUGxheWVyKSx0aGlzLmF1dG9IaWRlR3JhbnRlZCYmdGhpcy5jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHRoaXMub25Nb3VzZW1vdmUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuc3VwcG9ydEZ1bGxTY3JlZW4uY2hhbmdlRXZlbnQsdGhpcy5vbkNoYW5nZUZ1bGxTY3JlZW4pKX1kZXN0cm95KCl7dGhpcy5yZW1vdmVFdmVudHMoKSx0aGlzLnBsYXllci5kZXN0cm95KCksdGhpcy5wbGF5ZXIuY29udHJvbEJhci5kZXN0cm95KCl9fUIucmVnaXN0ZXJQcm92aWRlcj1mdW5jdGlvbihlLHQscyl7aWYodm9pZCAwIT09dCl7aWYoIU9iamVjdC5rZXlzKGkpLmluY2x1ZGVzKGUpKXJldHVybiBpW2VdPXQsdm9pZChzJiYobltlXT1zKSk7dGhyb3cgbmV3IEVycm9yKGB2bGl0ZWpzIDo6IFRoZSBwcm92aWRlciBpZCBcIiR7ZX1cIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuYCl9dGhyb3cgbmV3IEVycm9yKGB2bGl0ZWpzIDo6IFRoZSBwcm92aWRlciBpZCBcIiR7ZX1cIiBpcyB1bmRlZmluZWQuYCl9LEIucmVnaXN0ZXJQbHVnaW49ZnVuY3Rpb24ocyxpLG4pe2lmKHZvaWQgMCE9PWkpe2lmKCFPYmplY3Qua2V5cyhlKS5pbmNsdWRlcyhzKSlyZXR1cm4gZVtzXT1pLHZvaWQobiYmKHRbc109bikpO3Rocm93IG5ldyBFcnJvcihgdmxpdGVqcyA6OiBUaGUgcGx1Z2luIGlkIFwiJHtzfVwiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC5gKX10aHJvdyBuZXcgRXJyb3IoYHZsaXRlanMgOjogVGhlIHBsdWdpbiBpZCBcIiR7c31cIiBpcyB1bmRlZmluZWQuYCl9O2V4cG9ydHtCIGFzIGRlZmF1bHR9O1xuIiwiLyohXG4gKiBAbGljZW5zZSBNSVRcbiAqIEBuYW1lIHZsaXRlanNcbiAqIEB2ZXJzaW9uIDcuNC4yXG4gKiBAY29weXJpZ2h0IDIwMjUgWW9yaWlpc1xuICovXG5mdW5jdGlvbiBlKGUpe2lmKHdpbmRvdy5WbGl0ZWpzWW91dHViZVF1ZXVlPXdpbmRvdy5WbGl0ZWpzWW91dHViZVF1ZXVlfHxbXSx2b2lkIDA9PT13aW5kb3cuWVQpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtlLmFzeW5jPSEwLGUudHlwZT1cInRleHQvamF2YXNjcmlwdFwiLGUuc3JjPVwiaHR0cHM6Ly95b3V0dWJlLmNvbS9pZnJhbWVfYXBpXCIsd2luZG93Lm9uWW91VHViZUlmcmFtZUFQSVJlYWR5PSgpPT57d2luZG93LlZsaXRlanNZb3V0dWJlUXVldWUuZm9yRWFjaCgoZT0+e2UuaW5pdFlvdXR1YmVQbGF5ZXIoKS50aGVuKCgoKT0+e2Uub25SZWFkeSgpfSkpfSkpLHdpbmRvdy5WbGl0ZWpzWW91dHViZVF1ZXVlPVtdfSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0uYXBwZW5kQ2hpbGQoZSl9cmV0dXJuIGNsYXNzIGV4dGVuZHMgZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PXthdXRvaGlkZToxLGNvbnRyb2xzOjAsZnM6dGhpcy5vcHRpb25zLmZ1bGxzY3JlZW4/MTowLG1vZGVzdGJyYW5kaW5nOjAscGxheXNpbmxpbmU6dGhpcy5vcHRpb25zLnBsYXlzaW5saW5lPzE6MCxyZWw6MCxzaG93aW5mbzowLHdtb2RlOlwidHJhbnNwYXJlbnRcIn07dGhpcy5wYXJhbXM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHRoaXMub3B0aW9ucy5wcm92aWRlclBhcmFtcyl9aW5pdCgpe3RoaXMud2FpdFVudGlsVmlkZW9Jc1JlYWR5KCkudGhlbigoKCk9PntzdXBlci5vblJlYWR5KCl9KSl9d2FpdFVudGlsVmlkZW9Jc1JlYWR5KCl7cmV0dXJuIG5ldyB3aW5kb3cuUHJvbWlzZSgoZT0+e3ZvaWQgMCE9PXdpbmRvdy5ZVD90aGlzLmluaXRZb3V0dWJlUGxheWVyKCkudGhlbihlKTp3aW5kb3cuVmxpdGVqc1lvdXR1YmVRdWV1ZS5wdXNoKHRoaXMpfSkpfWluaXRZb3V0dWJlUGxheWVyKCl7cmV0dXJuIG5ldyB3aW5kb3cuUHJvbWlzZSgoZT0+e3RoaXMuaW5zdGFuY2U9bmV3IHdpbmRvdy5ZVC5QbGF5ZXIodGhpcy5tZWRpYS5nZXRBdHRyaWJ1dGUoXCJpZFwiKSx7dmlkZW9JZDp0aGlzLm1lZGlhLmdldEF0dHJpYnV0ZShcImRhdGEteW91dHVi
3ZS1pZFwiKSxoZWlnaHQ6XCIxMDAlXCIsd2lkdGg6XCIxMDAlXCIscGxheWVyVmFyczp0aGlzLnBhcmFtcyxvcmlnaW46d2luZG93LmxvY2F0aW9uLm9yaWdpbixldmVudHM6e29uUmVhZHk6dD0+e3RoaXMubWVkaWE9dC50YXJnZXQuZ2V0SWZyYW1lKCksZSgpfSxvblN0YXRlQ2hhbmdlOmU9PnRoaXMub25QbGF5ZXJTdGF0ZUNoYW5nZShlKX19KX0pKX1vblBsYXllclN0YXRlQ2hhbmdlKGUpe3N3aXRjaCh0aGlzLnJhZlBsYXlpbmcmJndpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnJhZlBsYXlpbmcpLGUuZGF0YSl7Y2FzZSB3aW5kb3cuWVQuUGxheWVyU3RhdGUuRU5ERUQ6c3VwZXIub25NZWRpYUVuZGVkKCk7YnJlYWs7Y2FzZSB3aW5kb3cuWVQuUGxheWVyU3RhdGUuUExBWUlORzpzdXBlci5sb2FkaW5nKCExKSx0aGlzLm9wdGlvbnMuY29udHJvbHMmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5vblJhZlBsYXlpbmcuYmluZCh0aGlzKSk7YnJlYWs7Y2FzZSB3aW5kb3cuWVQuUGxheWVyU3RhdGUuQlVGRkVSSU5HOnN1cGVyLmxvYWRpbmcoITApfX1vblJhZlBsYXlpbmcoKXtzdXBlci5vblRpbWVVcGRhdGUoKSx0aGlzLmlzUGF1c2VkfHwodGhpcy5yYWZUaW1lb3V0PXNldFRpbWVvdXQoKCgpPT57dGhpcy5yYWZQbGF5aW5nPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5vblJhZlBsYXlpbmcuYmluZCh0aGlzKSl9KSwxMDApKX1nZXRJbnN0YW5jZSgpe3JldHVybiB0aGlzLmluc3RhbmNlfWdldEN1cnJlbnRUaW1lKCl7cmV0dXJuIG5ldyB3aW5kb3cuUHJvbWlzZSgoZT0+ZSh0aGlzLmluc3RhbmNlLmdldEN1cnJlbnRUaW1lKCkpKSl9Z2V0RHVyYXRpb24oKXtyZXR1cm4gbmV3IHdpbmRvdy5Qcm9taXNlKChlPT5lKHRoaXMuaW5zdGFuY2UuZ2V0RHVyYXRpb24oKSkpKX1tZXRob2RQbGF5KCl7dGhpcy5pbnN0YW5jZS5wbGF5VmlkZW8oKX1tZXRob2RQYXVzZSgpe3RoaXMuaW5zdGFuY2UucGF1c2VWaWRlbygpfW1ldGhvZFNldFZvbHVtZShlKXt0aGlzLmluc3RhbmNlLnNldFZvbHVtZSgxMDAqZSl9bWV0aG9kR2V0Vm9sdW1lKCl7cmV0dXJuIG5ldyB3aW5kb3cuUHJvbWlzZSgoZT0+ZSh0aGlzLmluc3RhbmNlLmdldFZvbHVtZSgpLzEwMCkpKX1tZXRob2RNdXRlKCl7dGhpcy5pbnN0YW5jZS5tdXRlKCl9bWV0aG9kVW5NdXRlKCl7dGhpcy5pbnN0YW5jZS51bk11dGUoKX1tZXRob2RTZWVrVG8oZSl7bnVsbCE9PXRoaXMuaXNQYXVzZWR8fHRoaXMub3B0aW9ucy5tdXRlZHx8KHRoaXMubXV0ZSgpLHRoaXMucGxheSgpKSx0aGlzLmluc3RhbmNlLnNlZWtUbyhlKSxzdXBlci5vblRpbWVVcGRhdGUoKX1kZXN0cm95KCl7Y2xlYXJUaW1lb3V0KHRoaXMucmFmVGltZW91dCksdGhpcy5pbnN0YW5jZS5kZXN0cm95KCksc3VwZXIuZGVzdHJveSgpfX19ZXhwb3J0e2UgYXMgZGVmYXVsdH07XG4iLCIvKiFcbiAqIEBsaWNlbnNlIE1JVFxuICogQG5hbWUgdmxpdGVqc1xuICogQHZlcnNpb24gNy40LjJcbiAqIEBjb3B5cmlnaHQgMjAyNSBZb3JpaWlzXG4gKi9cbmZ1bmN0aW9uIGUoZSl7Y29uc3QgdD1cIlZpbWVvXCI7aWYod2luZG93LlZsaXRlanNWaW1lb1F1ZXVlPXdpbmRvdy5WbGl0ZWpzVmltZW9RdWV1ZXx8W10sdm9pZCAwPT09d2luZG93W3RdKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7ZS5hc3luYz0hMCxlLnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIixlLnNyYz1cImh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS9hcGkvcGxheWVyLmpzXCIsZS5vbmxvYWQ9KCk9Pnt3aW5kb3cuVmxpdGVqc1ZpbWVvUXVldWUuZm9yRWFjaCgoZT0+e2UuaW5pdFZpbWVvUGxheWVyKCkudGhlbigoKCk9PntlLmFkZFNwZWNpZmljRXZlbnRzKCksZS5vblJlYWR5KCl9KSl9KSksd2luZG93LlZsaXRlanNWaW1lb1F1ZXVlPVtdfSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0uYXBwZW5kQ2hpbGQoZSl9cmV0dXJuIGNsYXNzIGV4dGVuZHMgZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PXtpZDp0aGlzLm1lZGlhLmdldEF0dHJpYnV0ZShcImRhdGEtdmltZW8taWRcIikscGxheXNpbmxpbmU6dGhpcy5vcHRpb25zLnBsYXlzaW5saW5lPzE6MCxsb29wOnRoaXMub3B0aW9ucy5sb29wPzE6MCxjb250cm9sczohMX07dGhpcy5wYXJhbXM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHRoaXMub3B0aW9ucy5wcm92aWRlclBhcmFtcyksdGhpcy5ldmVudHM9W3t0eXBlOlwidGltZXVwZGF0ZVwiLGxpc3RlbmVyOnN1cGVyLm9uVGltZVVwZGF0ZX0se3R5cGU6XCJlbmRlZFwiLGxpc3RlbmVyOnN1cGVyLm9uTWVkaWFFbmRlZH0se3R5cGU6XCJwbGF5aW5nXCIsbGlzdGVuZXI6dGhpcy5vblBsYXlpbmd9LHt0eXBlOlwid2FpdGluZ1wiLGxpc3RlbmVyOnRoaXMub25XYWl0aW5nfSx7dHlwZTpcInNlZWtpbmdcIixsaXN0ZW5lcjp0aGlzLm9uU2Vla2luZ30se3R5cGU6XCJzZWVrZWRcIixsaXN0ZW5lcjp0aGlzLm9uU2Vla2VkfV19aW5pdCgpe3RoaXMud2FpdFVudGlsVmlkZW9Jc1JlYWR5KCkudGhlbigoKCk9Pnt0aGlzLmFkZFNwZWNpZmljRXZlbnRzKCksc3VwZXIub25SZWFkeSgpfSkpfXdhaXRVbnRpbFZpZGVvSXNSZWFkeSgpe3JldHVybiBuZXcgd2luZG93LlByb21pc2UoKGU9Pnt2b2lkIDAhPT13aW5kb3dbdF0/dGhpcy5pbml0VmltZW9QbGF5ZXIoKS50aGVuKGUpOndpbmRvdy5WbGl0ZWpzVmltZW9RdWV1ZS5wdXNoKHRoaXMpfSkpfWluaXRWaW1lb1BsYXllcigpe3JldHVybiBuZXcgd2luZG93LlByb21pc2UoKGU9Pnt0aGlzLmluc3RhbmNlPW5ldyB3aW5kb3cuVmltZW8uUGxheWVyKHRoaXMubWVkaWEuZ2V0QXR0cmlidXRlKFwiaWRcIiksdGhpcy5wYXJhbXMpLHRoaXMubWVkaWE9dGhpcy5pbnN0YW5jZS5lbGVtZW50LHRoaXMuaW5zdGFuY2UucmVhZHkoKS50aGVuKCgoKT0+e3RoaXMubWVkaWEuZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIi0xXCIpLGUoKX0pKX0pKX1hZGRTcGVjaWZpY0V2ZW50cygpe3RoaXMuZXZlbnRzLmZvckVhY2goKGU9Pnt0aGlzLmluc3RhbmNlLm9uKGUudHlwZSxlLmxpc3RlbmVyLmJpbmQodGhpcykpfSkpfWdldEluc3RhbmNlKCl7cmV0dXJuIHRoaXMuaW5zdGFuY2V9Z2V0Q3VycmVudFRpbWUoKXtyZXR1cm4gbmV3IHdpbmRvdy5Qcm9taXNlKChlPT57dGhpcy5pbnN0YW5jZS5nZXRDdXJyZW50VGltZSgpLnRoZW4oKHQ9PmUodCkpKX0pKX1nZXREdXJhdGlvbigpe3JldHVybiBuZXcgd2luZG93LlByb21pc2UoKGU9Pnt0aGlzLmluc3RhbmNlLmdldER1cmF0aW9uKCkudGhlbigodD0+ZSh0KSkpfSkpfW1ldGhvZFBsYXkoKXt0aGlzLmluc3RhbmNlLnBsYXkoKX1tZXRob2RQYXVzZSgpe3RoaXMuaW5zdGFuY2UucGF1c2UoKX1tZXRob2RTZXRWb2x1bWUoZSl7dGhpcy5pbnN0YW5jZS5zZXRWb2x1bWUoZSl9bWV0aG9kR2V0Vm9sdW1lKCl7cmV0dXJuIG5ldyB3aW5kb3cuUHJvbWlzZSgoZT0+e3RoaXMuaW5zdGFuY2UuZ2V0Vm9sdW1lKCkudGhlbigodD0+e2UodCl9KSl9KSl9bWV0aG9kTXV0ZSgpe3RoaXMuaW5zdGFuY2Uuc2V0Vm9sdW1lKDApfW1ldGhvZFVuTXV0ZSgpe3RoaXMuaW5zdGFuY2Uuc2V0Vm9sdW1lKDEpfW1ldGhvZFNlZWtUbyhlKXt0aGlzLmluc3RhbmNlLnNldEN1cnJlbnRUaW1lKGUpfW9uV2FpdGluZygpe3RoaXMubG9hZGluZyghMCl9b25QbGF5aW5nKCl7dGhpcy5sb2FkaW5nKCExKX1vblNlZWtpbmcoKXt0aGlzLmxvYWRpbmcoITApfW9uU2Vla2VkKCl7dGhpcy5sb2FkaW5nKCExKX1yZW1vdmVTcGVjaWZpY0V2ZW50cygpe3RoaXMuZXZlbnRzLmZvckVhY2goKGU9Pnt0aGlzLmluc3RhbmNlLm9mZihlLnR5cGUsZS
35saXN0ZW5lcil9KSl9ZGVzdHJveSgpe3RoaXMucmVtb3ZlU3BlY2lmaWNFdmVudHMoKSx0aGlzLmluc3RhbmNlLmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9fX1leHBvcnR7ZSBhcyBkZWZhdWx0fTtcbiIsImNvbnN0IElzVG91Y2hFbmFibGVkID0gKCkgPT4ge1xuICBjb25zdCB0ZXN0ID0gKCdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdylcbiAgfHwgKG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDApXG4gIHx8IChuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyA+IDApXG5cbiAgcmV0dXJuIHRlc3Rcbn1cblxuY29uc3QgZGVib3VuY2UgPSAoZnVuYywgdGltZW91dCA9IDMwMCkgPT4ge1xuICBsZXQgdGltZXJcblxuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYy5hcHBseSh0aGlzLCBhcmdzKSB9LCB0aW1lb3V0KVxuICB9XG59XG5cbi8vIFNldCBlbGVtZW50IGhlaWdodCBhcyBjc3MgdmFyaWFibGVcbmNvbnN0IHNldEVsZW1lbnRIZWlnaHRBc0Nzc1ZhciA9IChlbGVtZW50cykgPT4ge1xuICBpZiAoIWVsZW1lbnRzKSB7XG4gICAgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZWxlLWhlaWdodC1hcy12YXInKVxuICB9XG5cbiAgZWxlbWVudHMuZm9yRWFjaCgoZWxlKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZS5jbG9zZXN0KCcuZWxlLWhlaWdodC1oYW5kbGVyJylcblxuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBjb25zdCBoZWlnaHQgPSBlbGUub2Zmc2V0SGVpZ2h0IHx8IDBcblxuICAgICAgaWYgKGhlaWdodCkge1xuICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNoaWxkLWhlaWdodCcsIGAke2hlaWdodH1weGApXG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG4vLyBGb3JtIGZpZWxkIGxhYmVscyBhcyBwbGFjZWhvbGRlcnNcbmNvbnN0IGZvcm1MYWJlbEFzUGxhY2Vob2xkZXIgPSAoKSA9PiB7XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtLWxhYmVsLWFzLXBsYWNlaG9sZGVyJykuZm9yRWFjaCgoZm9ybSkgPT4ge1xuICAgIGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQudGV4dCwgdGV4dGFyZWEnKS5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgY29uc3Qgd3JhcHBlciA9IGlucHV0LmNsb3Nlc3QoJy5maWVsZCcpXG5cbiAgICAgIGlmICh3cmFwcGVyKSB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gd3JhcHBlci5xdWVyeVNlbGVjdG9yKCdsYWJlbC5sZWZ0JylcblxuICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAncGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgbGFiZWwuaW5uZXJUZXh0LFxuICAgICAgICAgIClcbiAgICAgICAgICBsYWJlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9KVxufVxuXG4vKipcbiAqIExvYWRzIGFuIFNWRyBmcm9tIGEgVVJMIGFuZCBpbmplY3RzIGl0IGFzIGlubGluZSBTVkcgaW50byBhIHNwZWNpZmllZFxuICogY29udGFpbmVyLiBPbmx5IHByb2NlZWRzIGlmIHRoZSBVUkwgZW5kcyB3aXRoICcuc3ZnJy5cbiAqL1xuY29uc3QgbG9hZFN2Z1RvSW5saW5lID0gKHNlbGVjdG9yKSA9PiB7XG4gIGNvbnN0IHNlbCA9IHNlbGVjdG9yIHx8ICcuc3ZnMmlubGluZSdcblxuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbCkuZm9yRWFjaChhc3luYyAoaW1nRWxlKSA9PiB7XG4gICAgaWYgKGltZ0VsZS5zcmMuZW5kc1dpdGgoJy5zdmcnKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChpbWdFbGUuc3JjKVxuXG4gICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgY29uc3Qgc3ZnVGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKVxuICAgICAgICAgIGltZ0VsZS5wYXJlbnRFbGVtZW50LmlubmVySFRNTCA9IHN2Z1RleHRcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ0Vycm9yIGxvYWRpbmcgU1ZHOicsIGVycm9yKVxuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cblxuLyoqXG4gKiBNb2RpZnkgTG9jYXRpb25zIHBhbmVsXG4gKi9cbmNvbnN0IG1vZGlmeUxvY2F0aW9uc1BhbmVsID0gKCkgPT4ge1xuICAvLyBOdW1iZXIgb2YgYXR0ZW1wdHMgYmVmb3JlIHN0b3BwaW5nIHRoZSBpbnRlcnZhbFxuICBjb25zdCBtYXhBdHRlbXB0cyA9IDMwXG4gIGxldCBhdHRlbXB0cyA9IDBcbiAgbGV0IGNoZWNrSW50ZXJ2YWxcblxuICBjb25zdCBjaGVja0VsZW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wbGFjZS1hZGRyZXNzJylcblxuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBpZiAoY2hlY2tJbnRlcnZhbCkge1xuICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSW50ZXJ2YWwpXG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NhdGlvbnMtcGFuZWwnKS5mb3JFYWNoKGFzeW5jIChwYW5lbCkgPT4ge1xuICAgICAgICAvL1xuICAgICAgICBjb25zdCBpdGVtcyA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5saXN0LWdyb3VwLWl0ZW0nKVxuXG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBhZGRyZXNzID0gaXRlbS5xdWVyeVNlbGVjdG9yKCcucGxhY2UtYWRkcmVzcycpXG4gICAgICAgICAgbGV0IGFkZHJlc3NTdHIgPSAnJ1xuXG4gICAgICAgICAgaWYgKGFkZHJlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NBcnIgPSBhZGRyZXNzLmlubmVyVGV4dC5zcGxpdCgnLCcpXG5cbiAgICAgICAgICAgIGFkZHJlc3NTdHIgPSBhZGRyZXNzLmlubmVyVGV4dFxuXG4gICAgICAgICAgICBpZiAoYWRkcmVzc0Fyci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgbGV0IGFkZHJlc3NUZXh0ID0gJydcblxuICAgICAgICAgICAgICBhZGRyZXNzQXJyLmZvckVhY2goKGRldGFpbCwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1RleHQgKz0gYDxzcGFuIGNsYXNzPVwiZGV0YWlsLSR7aWR4fVwiPiR7ZGV0YWlsfTwvc3Bhbj5gXG5cbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzc0Fyci5sZW5ndGggPiAoaWR4ICsgMSkpIHtcbiAgICAgICAgICAgICAgICAgIGFkZHJlc3NUZXh0ICs9IGA8c3BhbiBjbGFzcz1cImNvbW1hLSR7aWR4fVwiPiw8L3NwYW4+YFxuICAgICAgICAgICAgICAgI
3H1cbiAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICBhZGRyZXNzLmlubmVySFRNTCA9IGFkZHJlc3NUZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gYWRkIHBob25lIG51bWJlclxuICAgICAgICAgIGl0ZW0uaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCAnPHAgY2xhc3M9XCJjb250YWN0LXBob25lXCI+PC9wPicpXG5cbiAgICAgICAgICAvLyBhZGQgRGlyZWN0aW9ucyBidXR0b25zXG4gICAgICAgICAgaWYgKGFkZHJlc3NTdHIpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgICBjb25zdCBkaXJVcmwgPSBgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2Rpci8vJHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAgICAgICAgIGFkZHJlc3NTdHIsXG4gICAgICAgICAgICApfWBcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IGA8YSBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWxpZ2h0XCIgaHJlZj1cIiR7ZGlyVXJsfVwiIFxcXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPkRpcmVjdGlvbnM8L2E+YFxuICAgICAgICAgICAgaXRlbS5pbnNlcnRBZGphY2VudEhUTUwoXG4gICAgICAgICAgICAgICdiZWZvcmVlbmQnLFxuICAgICAgICAgICAgICBgPHAgY2xhc3M9XCJjb250YWN0LWRpcmVjdGlvbnNcIj4ke2J1dHRvbn08L3A+YCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QganNvbkxpbmsgPSBwYW5lbC5kYXRhc2V0LmxpbmtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goanNvbkxpbmspXG5cbiAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NEYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG5cbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGl0ZW1JZHgpID0+IHtcbiAgICAgICAgICAgICAgLy8gYWRkIHBob25lIG51bWJlclxuICAgICAgICAgICAgICBpZiAoYWRkcmVzc0RhdGEuZmVhdHVyZXNbaXRlbUlkeF0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwaG9uZSA9IGFkZHJlc3NEYXRhLmZlYXR1cmVzW2l0ZW1JZHhdPy5wcm9wZXJ0aWVzPy5waG9uZVxuXG4gICAgICAgICAgICAgICAgaXRlbS5xdWVyeVNlbGVjdG9yKCcuY29udGFjdC1waG9uZScpLmlubmVyVGV4dCA9IHBob25lXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdFcnJvcjonLCBlcnJvcilcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgYXR0ZW1wdHMgKz0gMVxuXG4gICAgICBpZiAoYXR0ZW1wdHMgPj0gbWF4QXR0ZW1wdHMpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0ludGVydmFsKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoZWNrSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChjaGVja0VsZW1lbnQsIDMwMClcbn1cblxuZXhwb3J0IHtcbiAgSXNUb3VjaEVuYWJsZWQsXG4gIGRlYm91bmNlLFxuICBzZXRFbGVtZW50SGVpZ2h0QXNDc3NWYXIsXG4gIGZvcm1MYWJlbEFzUGxhY2Vob2xkZXIsXG4gIGxvYWRTdmdUb0lubGluZSxcbiAgbW9kaWZ5TG9jYXRpb25zUGFuZWwsXG59XG4iLCJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci
35lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbi8qIVxuICogU3BsaWRlLmpzXG4gKiBWZXJzaW9uICA6IDQuMS40XG4gKiBMaWNlbnNlICA6IE1JVFxuICogQ29weXJpZ2h0OiAyMDIyIE5hb3Rvc2hpIEZ1aml0YVxuICovXG52YXIgTUVESUFfUFJFRkVSU19SRURVQ0VEX01PVElPTiA9IFwiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSlcIjtcbnZhciBDUkVBVEVEID0gMTtcbnZhciBNT1VOVEVEID0gMjtcbnZhciBJRExFID0gMztcbnZhciBNT1ZJTkcgPSA0O1xudmFyIFNDUk9MTElORyA9IDU7XG52YXIgRFJBR0dJTkcgPSA2O1xudmFyIERFU1RST1lFRCA9IDc7XG52YXIgU1RBVEVTID0ge1xuICBDUkVBVEVEOiBDUkVBVEVELFxuICBNT1VOVEVEOiBNT1VOVEVELFxuICBJRExFOiBJRExFLFxuICBNT1ZJTkc6IE1PVklORyxcbiAgU0NST0xMSU5HOiBTQ1JPTExJTkcsXG4gIERSQUdHSU5HOiBEUkFHR0lORyxcbiAgREVTVFJPWUVEOiBERVNUUk9ZRURcbn07XG5cbmZ1bmN0aW9uIGVtcHR5KGFycmF5KSB7XG4gIGFycmF5Lmxlbmd0aCA9IDA7XG59XG5cbmZ1bmN0aW9uIHNsaWNlKGFycmF5TGlrZSwgc3RhcnQsIGVuZCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyYXlMaWtlLCBzdGFydCwgZW5kKTtcbn1cblxuZnVuY3Rpb24gYXBwbHkoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kLmFwcGx5KGZ1bmMsIFtudWxsXS5jb25jYXQoc2xpY2UoYXJndW1lbnRzLCAxKSkpO1xufVxuXG52YXIgbmV4dFRpY2sgPSBzZXRUaW1lb3V0O1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuZnVuY3Rpb24gcmFmKGZ1bmMpIHtcbiAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKTtcbn1cblxuZnVuY3Rpb24gdHlwZU9mKHR5cGUsIHN1YmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdWJqZWN0ID09PSB0eXBlO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAhaXNOdWxsKHN1YmplY3QpICYmIHR5cGVPZihcIm9iamVjdFwiLCBzdWJqZWN0KTtcbn1cblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xudmFyIGlzRnVuY3Rpb24gPSBhcHBseSh0eXBlT2YsIFwiZnVuY3Rpb25cIik7XG52YXIgaXNTdHJpbmcgPSBhcHBseSh0eXBlT2YsIFwic3RyaW5nXCIpO1xudmFyIGlzVW5kZWZpbmVkID0gYXBwbHkodHlwZU9mLCBcInVuZGVmaW5lZFwiKTtcblxuZnVuY3Rpb24gaXNOdWxsKHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgPT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQoc3ViamVjdCkge1xuICB0cnkge1xuICAgIHJldHVybiBzdWJqZWN0IGluc3RhbmNlb2YgKHN1YmplY3Qub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cpLkhUTUxFbGVtZW50O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgaXRlcmF0ZWUpIHtcbiAgdG9BcnJheSh2YWx1ZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xufVxuXG5mdW5jdGlvbiBpbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgcmV0dXJuIGFycmF5LmluZGV4T2YodmFsdWUpID4gLTE7XG59XG5cbmZ1bmN0aW9uIHB1c2goYXJyYXksIGl0ZW1zKSB7XG4gIGFycmF5LnB1c2guYXBwbHkoYXJyYXksIHRvQXJyYXkoaXRlbXMpKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiB0b2dnbGVDbGFzcyhlbG0sIGNsYXNzZXMsIGFkZCkge1xuICBpZiAoZWxtKSB7XG4gICAgZm9yRWFjaChjbGFzc2VzLCBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgZWxtLmNsYXNzTGlzdFthZGQgPyBcImFkZFwiIDogXCJyZW1vdmVcIl0obmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2xhc3MoZWxtLCBjbGFzc2VzKSB7XG4gIHRvZ2dsZUNsYXNzKGVsbSwgaXNTdHJpbmcoY2xhc3NlcykgPyBjbGFzc2VzLnNwbGl0KFwiIFwiKSA6IGNsYXNzZXMsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmQocGFyZW50LCBjaGlsZHJlbikge1xuICBmb3JFYWNoKGNoaWxkcmVuLCBwYXJlbnQuYXBwZW5kQ2hpbGQuYmluZChwYXJlbnQpKTtcbn1cblxuZnVuY3Rpb24gYmVmb3JlKG5vZGVzLCByZWYpIHtcbiAgZm9yRWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICB2YXIgcGFyZW50ID0gKHJlZiB8fCBub2RlKS5wYXJlbnROb2RlO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCByZWYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXMoZWxtLCBzZWxlY3Rvcikge1xuICByZXR1cm4gaXNIVE1MRWxlbWVudChlbG0pICYmIChlbG1bXCJtc01hdGNoZXNTZWxlY3RvclwiXSB8fCBlbG0ubWF0Y2hlcykuY2FsbChlbG0sIHNlbGVjdG9yKTtcbn1cblxuZnVuY3Rpb24gY2hpbGRyZW4ocGFyZW50LCBzZWxlY3Rvcikge1xuICB2YXIgY2hpbGRyZW4yID0gcGFyZW50ID8gc2xpY2UocGFyZW50LmNoaWxkcmVuKSA6IFtdO1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbjIuZmlsdGVyKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybi
3BtYXRjaGVzKGNoaWxkLCBzZWxlY3Rvcik7XG4gIH0pIDogY2hpbGRyZW4yO1xufVxuXG5mdW5jdGlvbiBjaGlsZChwYXJlbnQsIHNlbGVjdG9yKSB7XG4gIHJldHVybiBzZWxlY3RvciA/IGNoaWxkcmVuKHBhcmVudCwgc2VsZWN0b3IpWzBdIDogcGFyZW50LmZpcnN0RWxlbWVudENoaWxkO1xufVxuXG52YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIChyaWdodCA/IG93bktleXMob2JqZWN0KS5yZXZlcnNlKCkgOiBvd25LZXlzKG9iamVjdCkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAga2V5ICE9PSBcIl9fcHJvdG9fX1wiICYmIGl0ZXJhdGVlKG9iamVjdFtrZXldLCBrZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gYXNzaWduKG9iamVjdCkge1xuICBzbGljZShhcmd1bWVudHMsIDEpLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGZvck93bihzb3VyY2UsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gbWVyZ2Uob2JqZWN0KSB7XG4gIHNsaWNlKGFyZ3VtZW50cywgMSkuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgZm9yT3duKHNvdXJjZSwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBvYmplY3Rba2V5XSA9IG1lcmdlKHt9LCBpc09iamVjdChvYmplY3Rba2V5XSkgPyBvYmplY3Rba2V5XSA6IHt9LCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gb21pdChvYmplY3QsIGtleXMpIHtcbiAgZm9yRWFjaChrZXlzIHx8IG93bktleXMob2JqZWN0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgIGRlbGV0ZSBvYmplY3Rba2V5XTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUF0dHJpYnV0ZShlbG1zLCBhdHRycykge1xuICBmb3JFYWNoKGVsbXMsIGZ1bmN0aW9uIChlbG0pIHtcbiAgICBmb3JFYWNoKGF0dHJzLCBmdW5jdGlvbiAoYXR0cikge1xuICAgICAgZWxtICYmIGVsbS5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGUoZWxtcywgYXR0cnMsIHZhbHVlKSB7XG4gIGlmIChpc09iamVjdChhdHRycykpIHtcbiAgICBmb3JPd24oYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZTIsIG5hbWUpIHtcbiAgICAgIHNldEF0dHJpYnV0ZShlbG1zLCBuYW1lLCB2YWx1ZTIpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGZvckVhY2goZWxtcywgZnVuY3Rpb24gKGVsbSkge1xuICAgICAgaXNOdWxsKHZhbHVlKSB8fCB2YWx1ZSA9PT0gXCJcIiA/IHJlbW92ZUF0dHJpYnV0ZShlbG0sIGF0dHJzKSA6IGVsbS5zZXRBdHRyaWJ1dGUoYXR0cnMsIFN0cmluZyh2YWx1ZSkpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZSh0YWcsIGF0dHJzLCBwYXJlbnQpIHtcbiAgdmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcblxuICBpZiAoYXR0cnMpIHtcbiAgICBpc1N0cmluZyhhdHRycykgPyBhZGRDbGFzcyhlbG0sIGF0dHJzKSA6IHNldEF0dHJpYnV0ZShlbG0sIGF0dHJzKTtcbiAgfVxuXG4gIHBhcmVudCAmJiBhcHBlbmQocGFyZW50LCBlbG0pO1xuICByZXR1cm4gZWxtO1xufVxuXG5mdW5jdGlvbiBzdHlsZShlbG0sIHByb3AsIHZhbHVlKSB7XG4gIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbG0pW3Byb3BdO1xuICB9XG5cbiAgaWYgKCFpc051bGwodmFsdWUpKSB7XG4gICAgZWxtLnN0eWxlW3Byb3BdID0gXCJcIiArIHZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BsYXkoZWxtLCBkaXNwbGF5Mikge1xuICBzdHlsZShlbG0sIFwiZGlzcGxheVwiLCBkaXNwbGF5Mik7XG59XG5cbmZ1bmN0aW9uIGZvY3VzKGVsbSkge1xuICBlbG1bXCJzZXRBY3RpdmVcIl0gJiYgZWxtW1wic2V0QWN0aXZlXCJdKCkgfHwgZWxtLmZvY3VzKHtcbiAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRBdHRyaWJ1dGUoZWxtLCBhdHRyKSB7XG4gIHJldHVybiBlbG0uZ2V0QXR0cmlidXRlKGF0dHIpO1xufVxuXG5mdW5jdGlvbiBoYXNDbGFzcyhlbG0sIGNsYXNzTmFtZSkge1xuICByZXR1cm4gZWxtICYmIGVsbS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVjdCh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKG5vZGVzKSB7XG4gIGZvckVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VIdG1sKGh0bWwpIHtcbiAgcmV0dXJuIGNoaWxkKG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgXCJ0ZXh0L2h0bWxcIikuYm9keSk7XG59XG5cbmZ1bmN0aW9uIHByZXZlbnQoZSwgc3RvcFByb3BhZ2F0aW9uKSB7XG4gIGUucHJldmVudERlZmF1bHQoKTtcblxuICBpZiAoc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5KHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5QWxsKHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID8gc2xpY2UocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKSA6IFtdO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDbGFzcyhlbG0sIGNsYXNzZXMpIHtcbiAgdG9nZ2xlQ2xhc3MoZWxtLCBjbGFzc2VzLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHRpbWVPZihlKSB7XG4gIHJldHVybi
3BlLnRpbWVTdGFtcDtcbn1cblxuZnVuY3Rpb24gdW5pdCh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IHZhbHVlICsgXCJweFwiIDogXCJcIjtcbn1cblxudmFyIFBST0pFQ1RfQ09ERSA9IFwic3BsaWRlXCI7XG52YXIgREFUQV9BVFRSSUJVVEUgPSBcImRhdGEtXCIgKyBQUk9KRUNUX0NPREU7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJbXCIgKyBQUk9KRUNUX0NPREUgKyBcIl0gXCIgKyAobWVzc2FnZSB8fCBcIlwiKSk7XG4gIH1cbn1cblxudmFyIG1pbiA9IE1hdGgubWluLFxuICAgIG1heCA9IE1hdGgubWF4LFxuICAgIGZsb29yID0gTWF0aC5mbG9vcixcbiAgICBjZWlsID0gTWF0aC5jZWlsLFxuICAgIGFicyA9IE1hdGguYWJzO1xuXG5mdW5jdGlvbiBhcHByb3hpbWF0ZWx5RXF1YWwoeCwgeSwgZXBzaWxvbikge1xuICByZXR1cm4gYWJzKHggLSB5KSA8IGVwc2lsb247XG59XG5cbmZ1bmN0aW9uIGJldHdlZW4obnVtYmVyLCB4LCB5LCBleGNsdXNpdmUpIHtcbiAgdmFyIG1pbmltdW0gPSBtaW4oeCwgeSk7XG4gIHZhciBtYXhpbXVtID0gbWF4KHgsIHkpO1xuICByZXR1cm4gZXhjbHVzaXZlID8gbWluaW11bSA8IG51bWJlciAmJiBudW1iZXIgPCBtYXhpbXVtIDogbWluaW11bSA8PSBudW1iZXIgJiYgbnVtYmVyIDw9IG1heGltdW07XG59XG5cbmZ1bmN0aW9uIGNsYW1wKG51bWJlciwgeCwgeSkge1xuICB2YXIgbWluaW11bSA9IG1pbih4LCB5KTtcbiAgdmFyIG1heGltdW0gPSBtYXgoeCwgeSk7XG4gIHJldHVybiBtaW4obWF4KG1pbmltdW0sIG51bWJlciksIG1heGltdW0pO1xufVxuXG5mdW5jdGlvbiBzaWduKHgpIHtcbiAgcmV0dXJuICsoeCA+IDApIC0gKyh4IDwgMCk7XG59XG5cbmZ1bmN0aW9uIGNhbWVsVG9LZWJhYihzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdChzdHJpbmcsIHJlcGxhY2VtZW50cykge1xuICBmb3JFYWNoKHJlcGxhY2VtZW50cywgZnVuY3Rpb24gKHJlcGxhY2VtZW50KSB7XG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoXCIlc1wiLCBcIlwiICsgcmVwbGFjZW1lbnQpO1xuICB9KTtcbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gcGFkKG51bWJlcikge1xuICByZXR1cm4gbnVtYmVyIDwgMTAgPyBcIjBcIiArIG51bWJlciA6IFwiXCIgKyBudW1iZXI7XG59XG5cbnZhciBpZHMgPSB7fTtcblxuZnVuY3Rpb24gdW5pcXVlSWQocHJlZml4KSB7XG4gIHJldHVybiBcIlwiICsgcHJlZml4ICsgcGFkKGlkc1twcmVmaXhdID0gKGlkc1twcmVmaXhdIHx8IDApICsgMSk7XG59XG5cbmZ1bmN0aW9uIEV2ZW50QmluZGVyKCkge1xuICB2YXIgbGlzdGVuZXJzID0gW107XG5cbiAgZnVuY3Rpb24gYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgdmFyIGlzRXZlbnRUYXJnZXQgPSAoXCJhZGRFdmVudExpc3RlbmVyXCIgaW4gdGFyZ2V0KTtcbiAgICAgIHZhciByZW1vdmVyID0gaXNFdmVudFRhcmdldCA/IHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGFyZ2V0LCBldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wicmVtb3ZlTGlzdGVuZXJcIl0uYmluZCh0YXJnZXQsIGNhbGxiYWNrKTtcbiAgICAgIGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wiYWRkTGlzdGVuZXJcIl0oY2FsbGJhY2spO1xuICAgICAgbGlzdGVuZXJzLnB1c2goW3RhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSwgY2FsbGJhY2ssIHJlbW92ZXJdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVuYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyWzBdID09PSB0YXJnZXQgJiYgbGlzdGVuZXJbMV0gPT09IGV2ZW50ICYmIGxpc3RlbmVyWzJdID09PSBuYW1lc3BhY2UgJiYgKCFjYWxsYmFjayB8fCBsaXN0ZW5lclszXSA9PT0gY2FsbGJhY2spKSB7XG4gICAgICAgICAgbGlzdGVuZXJbNF0oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2godGFyZ2V0LCB0eXBlLCBkZXRhaWwpIHtcbiAgICB2YXIgZTtcbiAgICB2YXIgYnViYmxlcyA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIEN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGUgPSBuZXcgQ3VzdG9tRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiBidWJibGVzLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO1xuICAgICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgZmFsc2UsIGRldGFpbCk7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBpdGVyYXRlZSkge1xuICAgIGZvckVhY2godGFyZ2V0cywgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgdGFyZ2V0ICYmIGZvckVhY2goZXZlbnRzLCBmdW5jdGlvbiAoZXZlbnRzMikge1xuICAgICAgICBldmVudHMyLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudE5TKSB7XG4gICAgICAgICAgdmFyIGZyYWdtZW50ID0gZXZlbnROUy5zcGxpdChcIi5cIik7XG4gICAgICAgICAgaXRlcmF0ZWUodGFyZ2V0LCBmcmFnbWVudFswXSwgZnJhZ21lbn
3RbMV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgZGF0YVs0XSgpO1xuICAgIH0pO1xuICAgIGVtcHR5KGxpc3RlbmVycyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJpbmQ6IGJpbmQsXG4gICAgdW5iaW5kOiB1bmJpbmQsXG4gICAgZGlzcGF0Y2g6IGRpc3BhdGNoLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfTtcbn1cblxudmFyIEVWRU5UX01PVU5URUQgPSBcIm1vdW50ZWRcIjtcbnZhciBFVkVOVF9SRUFEWSA9IFwicmVhZHlcIjtcbnZhciBFVkVOVF9NT1ZFID0gXCJtb3ZlXCI7XG52YXIgRVZFTlRfTU9WRUQgPSBcIm1vdmVkXCI7XG52YXIgRVZFTlRfQ0xJQ0sgPSBcImNsaWNrXCI7XG52YXIgRVZFTlRfQUNUSVZFID0gXCJhY3RpdmVcIjtcbnZhciBFVkVOVF9JTkFDVElWRSA9IFwiaW5hY3RpdmVcIjtcbnZhciBFVkVOVF9WSVNJQkxFID0gXCJ2aXNpYmxlXCI7XG52YXIgRVZFTlRfSElEREVOID0gXCJoaWRkZW5cIjtcbnZhciBFVkVOVF9SRUZSRVNIID0gXCJyZWZyZXNoXCI7XG52YXIgRVZFTlRfVVBEQVRFRCA9IFwidXBkYXRlZFwiO1xudmFyIEVWRU5UX1JFU0laRSA9IFwicmVzaXplXCI7XG52YXIgRVZFTlRfUkVTSVpFRCA9IFwicmVzaXplZFwiO1xudmFyIEVWRU5UX0RSQUcgPSBcImRyYWdcIjtcbnZhciBFVkVOVF9EUkFHR0lORyA9IFwiZHJhZ2dpbmdcIjtcbnZhciBFVkVOVF9EUkFHR0VEID0gXCJkcmFnZ2VkXCI7XG52YXIgRVZFTlRfU0NST0xMID0gXCJzY3JvbGxcIjtcbnZhciBFVkVOVF9TQ1JPTExFRCA9IFwic2Nyb2xsZWRcIjtcbnZhciBFVkVOVF9PVkVSRkxPVyA9IFwib3ZlcmZsb3dcIjtcbnZhciBFVkVOVF9ERVNUUk9ZID0gXCJkZXN0cm95XCI7XG52YXIgRVZFTlRfQVJST1dTX01PVU5URUQgPSBcImFycm93czptb3VudGVkXCI7XG52YXIgRVZFTlRfQVJST1dTX1VQREFURUQgPSBcImFycm93czp1cGRhdGVkXCI7XG52YXIgRVZFTlRfUEFHSU5BVElPTl9NT1VOVEVEID0gXCJwYWdpbmF0aW9uOm1vdW50ZWRcIjtcbnZhciBFVkVOVF9QQUdJTkFUSU9OX1VQREFURUQgPSBcInBhZ2luYXRpb246dXBkYXRlZFwiO1xudmFyIEVWRU5UX05BVklHQVRJT05fTU9VTlRFRCA9IFwibmF2aWdhdGlvbjptb3VudGVkXCI7XG52YXIgRVZFTlRfQVVUT1BMQVlfUExBWSA9IFwiYXV0b3BsYXk6cGxheVwiO1xudmFyIEVWRU5UX0FVVE9QTEFZX1BMQVlJTkcgPSBcImF1dG9wbGF5OnBsYXlpbmdcIjtcbnZhciBFVkVOVF9BVVRPUExBWV9QQVVTRSA9IFwiYXV0b3BsYXk6cGF1c2VcIjtcbnZhciBFVkVOVF9MQVpZTE9BRF9MT0FERUQgPSBcImxhenlsb2FkOmxvYWRlZFwiO1xudmFyIEVWRU5UX1NMSURFX0tFWURPV04gPSBcInNrXCI7XG52YXIgRVZFTlRfU0hJRlRFRCA9IFwic2hcIjtcbnZhciBFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRCA9IFwiZWlcIjtcblxuZnVuY3Rpb24gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMikge1xuICB2YXIgYnVzID0gU3BsaWRlMiA/IFNwbGlkZTIuZXZlbnQuYnVzIDogZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICB2YXIgYmluZGVyID0gRXZlbnRCaW5kZXIoKTtcblxuICBmdW5jdGlvbiBvbihldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgYmluZGVyLmJpbmQoYnVzLCB0b0FycmF5KGV2ZW50cykuam9pbihcIiBcIiksIGZ1bmN0aW9uIChlKSB7XG4gICAgICBjYWxsYmFjay5hcHBseShjYWxsYmFjaywgaXNBcnJheShlLmRldGFpbCkgPyBlLmRldGFpbCA6IFtdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGVtaXQoZXZlbnQpIHtcbiAgICBiaW5kZXIuZGlzcGF0Y2goYnVzLCBldmVudCwgc2xpY2UoYXJndW1lbnRzLCAxKSk7XG4gIH1cblxuICBpZiAoU3BsaWRlMikge1xuICAgIFNwbGlkZTIuZXZlbnQub24oRVZFTlRfREVTVFJPWSwgYmluZGVyLmRlc3Ryb3kpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2lnbihiaW5kZXIsIHtcbiAgICBidXM6IGJ1cyxcbiAgICBvbjogb24sXG4gICAgb2ZmOiBhcHBseShiaW5kZXIudW5iaW5kLCBidXMpLFxuICAgIGVtaXQ6IGVtaXRcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIFJlcXVlc3RJbnRlcnZhbChpbnRlcnZhbCwgb25JbnRlcnZhbCwgb25VcGRhdGUsIGxpbWl0KSB7XG4gIHZhciBub3cgPSBEYXRlLm5vdztcbiAgdmFyIHN0YXJ0VGltZTtcbiAgdmFyIHJhdGUgPSAwO1xuICB2YXIgaWQ7XG4gIHZhciBwYXVzZWQgPSB0cnVlO1xuICB2YXIgY291bnQgPSAwO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIXBhdXNlZCkge1xuICAgICAgcmF0ZSA9IGludGVydmFsID8gbWluKChub3coKSAtIHN0YXJ0VGltZSkgLyBpbnRlcnZhbCwgMSkgOiAxO1xuICAgICAgb25VcGRhdGUgJiYgb25VcGRhdGUocmF0ZSk7XG5cbiAgICAgIGlmIChyYXRlID49IDEpIHtcbiAgICAgICAgb25JbnRlcnZhbCgpO1xuICAgICAgICBzdGFydFRpbWUgPSBub3coKTtcblxuICAgICAgICBpZiAobGltaXQgJiYgKytjb3VudCA+PSBsaW1pdCkge1xuICAgICAgICAgIHJldHVybiBwYXVzZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlkID0gcmFmKHVwZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnQocmVzdW1lKSB7XG4gICAgcmVzdW1lIHx8IGNhbmNlbCgpO1xuICAgIHN0YXJ0VGltZSA9IG5vdygpIC0gKHJlc3VtZSA/IHJhdGUgKiBpbnRlcnZhbCA6IDApO1xuICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgIGlkID0gcmFmKHVwZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBwYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gcmV3aW5kKCkge1xuICAgIHN0YXJ0VGltZSA9IG5vdygpO1xuICAgIHJhdGUgPSAwO1xuXG4gICAgaWYgKG9uVXBkYXRlKSB7XG4gICAgICBvblVwZGF0ZShyYXRlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWQgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpO1xuICAgIHJhdGUgPSAwO1xuICAgIGlkID0gMDtcbiAgICBwYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0KHRpbWUpIHtcbiAgICBpbnRlcnZhbCA9IHRpbWU7XG4gIH1cblxuICBmdW5jdGlvbiBpc1BhdXNlZCgpIHtcbiAgICByZXR1cm4gcGF1c2VkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogc3RhcnQsXG4gICAgcmV3aW5kOiByZXdpbmQsXG4gICAgcGF1c2U6IHBhdXNlLFxuICAgIGNhbmNlbDogY2FuY2VsLFxuICAgIHNldDogc2V0LFxuICAgIGlzUGF1c2VkOiBpc1BhdXNlZFxuICB9O1xufVxuXG5mdW5jdGlvbiBTdGF0ZShpbml0aWFsU3RhdGUpIHtcbiAgdmFyIHN0YXRlID0gaW5pdGlhbFN0YXRlO1xuXG4gIGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgIHN0YXRlID0gdmFsdWU7XG4gIH1cblxuICBmdW5jdGlvbiBpcyhzdGF0ZXMpIHtcbiAgICByZXR1cm4gaW5jbHVkZXModG9BcnJheShzdGF0ZXMpLCBzdGF0ZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNldDogc2V0LFxuICAgIGlzOiBpc1xuICB9O1xufVxuXG5mdW5jdGlvbiBUaHJvdHRsZShmdW5jLCBkdXJhdGlvbikge1xuICB2YXIgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoZHVyYXRpb24gfHwgMCwgZnVuYywgbnVsbCwgMSk7XG4gIHJldHVybi
3BmdW5jdGlvbiAoKSB7XG4gICAgaW50ZXJ2YWwuaXNQYXVzZWQoKSAmJiBpbnRlcnZhbC5zdGFydCgpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBNZWRpYShTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSBTcGxpZGUyLnN0YXRlO1xuICB2YXIgYnJlYWtwb2ludHMgPSBvcHRpb25zLmJyZWFrcG9pbnRzIHx8IHt9O1xuICB2YXIgcmVkdWNlZE1vdGlvbiA9IG9wdGlvbnMucmVkdWNlZE1vdGlvbiB8fCB7fTtcbiAgdmFyIGJpbmRlciA9IEV2ZW50QmluZGVyKCk7XG4gIHZhciBxdWVyaWVzID0gW107XG5cbiAgZnVuY3Rpb24gc2V0dXAoKSB7XG4gICAgdmFyIGlzTWluID0gb3B0aW9ucy5tZWRpYVF1ZXJ5ID09PSBcIm1pblwiO1xuICAgIG93bktleXMoYnJlYWtwb2ludHMpLnNvcnQoZnVuY3Rpb24gKG4sIG0pIHtcbiAgICAgIHJldHVybiBpc01pbiA/ICtuIC0gK20gOiArbSAtICtuO1xuICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmVnaXN0ZXIoYnJlYWtwb2ludHNba2V5XSwgXCIoXCIgKyAoaXNNaW4gPyBcIm1pblwiIDogXCJtYXhcIikgKyBcIi13aWR0aDpcIiArIGtleSArIFwicHgpXCIpO1xuICAgIH0pO1xuICAgIHJlZ2lzdGVyKHJlZHVjZWRNb3Rpb24sIE1FRElBX1BSRUZFUlNfUkVEVUNFRF9NT1RJT04pO1xuICAgIHVwZGF0ZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveShjb21wbGV0ZWx5KSB7XG4gICAgaWYgKGNvbXBsZXRlbHkpIHtcbiAgICAgIGJpbmRlci5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXIob3B0aW9uczIsIHF1ZXJ5KSB7XG4gICAgdmFyIHF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgIGJpbmRlci5iaW5kKHF1ZXJ5TGlzdCwgXCJjaGFuZ2VcIiwgdXBkYXRlKTtcbiAgICBxdWVyaWVzLnB1c2goW29wdGlvbnMyLCBxdWVyeUxpc3RdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICB2YXIgZGVzdHJveWVkID0gc3RhdGUuaXMoREVTVFJPWUVEKTtcbiAgICB2YXIgZGlyZWN0aW9uID0gb3B0aW9ucy5kaXJlY3Rpb247XG4gICAgdmFyIG1lcmdlZCA9IHF1ZXJpZXMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQyLCBlbnRyeSkge1xuICAgICAgcmV0dXJuIG1lcmdlKG1lcmdlZDIsIGVudHJ5WzFdLm1hdGNoZXMgPyBlbnRyeVswXSA6IHt9KTtcbiAgICB9LCB7fSk7XG4gICAgb21pdChvcHRpb25zKTtcbiAgICBzZXQobWVyZ2VkKTtcblxuICAgIGlmIChvcHRpb25zLmRlc3Ryb3kpIHtcbiAgICAgIFNwbGlkZTIuZGVzdHJveShvcHRpb25zLmRlc3Ryb3kgPT09IFwiY29tcGxldGVseVwiKTtcbiAgICB9IGVsc2UgaWYgKGRlc3Ryb3llZCkge1xuICAgICAgZGVzdHJveSh0cnVlKTtcbiAgICAgIFNwbGlkZTIubW91bnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlyZWN0aW9uICE9PSBvcHRpb25zLmRpcmVjdGlvbiAmJiBTcGxpZGUyLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWR1Y2UoZW5hYmxlKSB7XG4gICAgaWYgKG1hdGNoTWVkaWEoTUVESUFfUFJFRkVSU19SRURVQ0VEX01PVElPTikubWF0Y2hlcykge1xuICAgICAgZW5hYmxlID8gbWVyZ2Uob3B0aW9ucywgcmVkdWNlZE1vdGlvbikgOiBvbWl0KG9wdGlvbnMsIG93bktleXMocmVkdWNlZE1vdGlvbikpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNldChvcHRzLCBiYXNlLCBub3RpZnkpIHtcbiAgICBtZXJnZShvcHRpb25zLCBvcHRzKTtcbiAgICBiYXNlICYmIG1lcmdlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvcHRpb25zKSwgb3B0cyk7XG5cbiAgICBpZiAobm90aWZ5IHx8ICFzdGF0ZS5pcyhDUkVBVEVEKSkge1xuICAgICAgU3BsaWRlMi5lbWl0KEVWRU5UX1VQREFURUQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2V0dXA6IHNldHVwLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgcmVkdWNlOiByZWR1Y2UsXG4gICAgc2V0OiBzZXRcbiAgfTtcbn1cblxudmFyIEFSUk9XID0gXCJBcnJvd1wiO1xudmFyIEFSUk9XX0xFRlQgPSBBUlJPVyArIFwiTGVmdFwiO1xudmFyIEFSUk9XX1JJR0hUID0gQVJST1cgKyBcIlJpZ2h0XCI7XG52YXIgQVJST1dfVVAgPSBBUlJPVyArIFwiVXBcIjtcbnZhciBBUlJPV19ET1dOID0gQVJST1cgKyBcIkRvd25cIjtcbnZhciBMVFIgPSBcImx0clwiO1xudmFyIFJUTCA9IFwicnRsXCI7XG52YXIgVFRCID0gXCJ0dGJcIjtcbnZhciBPUklFTlRBVElPTl9NQVAgPSB7XG4gIHdpZHRoOiBbXCJoZWlnaHRcIl0sXG4gIGxlZnQ6IFtcInRvcFwiLCBcInJpZ2h0XCJdLFxuICByaWdodDogW1wiYm90dG9tXCIsIFwibGVmdFwiXSxcbiAgeDogW1wieVwiXSxcbiAgWDogW1wiWVwiXSxcbiAgWTogW1wiWFwiXSxcbiAgQXJyb3dMZWZ0OiBbQVJST1dfVVAsIEFSUk9XX1JJR0hUXSxcbiAgQXJyb3dSaWdodDogW0FSUk9XX0RPV04sIEFSUk9XX0xFRlRdXG59O1xuXG5mdW5jdGlvbiBEaXJlY3Rpb24oU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgZnVuY3Rpb24gcmVzb2x2ZShwcm9wLCBheGlzT25seSwgZGlyZWN0aW9uKSB7XG4gICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8IG9wdGlvbnMuZGlyZWN0aW9uO1xuICAgIHZhciBpbmRleCA9IGRpcmVjdGlvbiA9PT0gUlRMICYmICFheGlzT25seSA/IDEgOiBkaXJlY3Rpb24gPT09IFRUQiA/IDAgOiAtMTtcbiAgICByZXR1cm4gT1JJRU5UQVRJT05fTUFQW3Byb3BdICYmIE9SSUVOVEFUSU9OX01BUFtwcm9wXVtpbmRleF0gfHwgcHJvcC5yZXBsYWNlKC93aWR0aHxsZWZ0fHJpZ2h0L2ksIGZ1bmN0aW9uIChtYXRjaCwgb2Zmc2V0KSB7XG4gICAgICB2Y
3XIgcmVwbGFjZW1lbnQgPSBPUklFTlRBVElPTl9NQVBbbWF0Y2gudG9Mb3dlckNhc2UoKV1baW5kZXhdIHx8IG1hdGNoO1xuICAgICAgcmV0dXJuIG9mZnNldCA+IDAgPyByZXBsYWNlbWVudC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHJlcGxhY2VtZW50LnNsaWNlKDEpIDogcmVwbGFjZW1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvcmllbnQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgKiAob3B0aW9ucy5kaXJlY3Rpb24gPT09IFJUTCA/IDEgOiAtMSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgb3JpZW50OiBvcmllbnRcbiAgfTtcbn1cblxudmFyIFJPTEUgPSBcInJvbGVcIjtcbnZhciBUQUJfSU5ERVggPSBcInRhYmluZGV4XCI7XG52YXIgRElTQUJMRUQgPSBcImRpc2FibGVkXCI7XG52YXIgQVJJQV9QUkVGSVggPSBcImFyaWEtXCI7XG52YXIgQVJJQV9DT05UUk9MUyA9IEFSSUFfUFJFRklYICsgXCJjb250cm9sc1wiO1xudmFyIEFSSUFfQ1VSUkVOVCA9IEFSSUFfUFJFRklYICsgXCJjdXJyZW50XCI7XG52YXIgQVJJQV9TRUxFQ1RFRCA9IEFSSUFfUFJFRklYICsgXCJzZWxlY3RlZFwiO1xudmFyIEFSSUFfTEFCRUwgPSBBUklBX1BSRUZJWCArIFwibGFiZWxcIjtcbnZhciBBUklBX0xBQkVMTEVEQlkgPSBBUklBX1BSRUZJWCArIFwibGFiZWxsZWRieVwiO1xudmFyIEFSSUFfSElEREVOID0gQVJJQV9QUkVGSVggKyBcImhpZGRlblwiO1xudmFyIEFSSUFfT1JJRU5UQVRJT04gPSBBUklBX1BSRUZJWCArIFwib3JpZW50YXRpb25cIjtcbnZhciBBUklBX1JPTEVERVNDUklQVElPTiA9IEFSSUFfUFJFRklYICsgXCJyb2xlZGVzY3JpcHRpb25cIjtcbnZhciBBUklBX0xJVkUgPSBBUklBX1BSRUZJWCArIFwibGl2ZVwiO1xudmFyIEFSSUFfQlVTWSA9IEFSSUFfUFJFRklYICsgXCJidXN5XCI7XG52YXIgQVJJQV9BVE9NSUMgPSBBUklBX1BSRUZJWCArIFwiYXRvbWljXCI7XG52YXIgQUxMX0FUVFJJQlVURVMgPSBbUk9MRSwgVEFCX0lOREVYLCBESVNBQkxFRCwgQVJJQV9DT05UUk9MUywgQVJJQV9DVVJSRU5ULCBBUklBX0xBQkVMLCBBUklBX0xBQkVMTEVEQlksIEFSSUFfSElEREVOLCBBUklBX09SSUVOVEFUSU9OLCBBUklBX1JPTEVERVNDUklQVElPTl07XG52YXIgQ0xBU1NfUFJFRklYID0gUFJPSkVDVF9DT0RFICsgXCJfX1wiO1xudmFyIFNUQVRVU19DTEFTU19QUkVGSVggPSBcImlzLVwiO1xudmFyIENMQVNTX1JPT1QgPSBQUk9KRUNUX0NPREU7XG52YXIgQ0xBU1NfVFJBQ0sgPSBDTEFTU19QUkVGSVggKyBcInRyYWNrXCI7XG52YXIgQ0xBU1NfTElTVCA9IENMQVNTX1BSRUZJWCArIFwibGlzdFwiO1xudmFyIENMQVNTX1NMSURFID0gQ0xBU1NfUFJFRklYICsgXCJzbGlkZVwiO1xudmFyIENMQVNTX0NMT05FID0gQ0xBU1NfU0xJREUgKyBcIi0tY2xvbmVcIjtcbnZhciBDTEFTU19DT05UQUlORVIgPSBDTEFTU19TTElERSArIFwiX19jb250YWluZXJcIjtcbnZhciBDTEFTU19BUlJPV1MgPSBDTEFTU19QUkVGSVggKyBcImFycm93c1wiO1xudmFyIENMQVNTX0FSUk9XID0gQ0xBU1NfUFJFRklYICsgXCJhcnJvd1wiO1xudmFyIENMQVNTX0FSUk9XX1BSRVYgPSBDTEFTU19BUlJPVyArIFwiLS1wcmV2XCI7XG52YXIgQ0xBU1NfQVJST1dfTkVYVCA9IENMQVNTX0FSUk9XICsgXCItLW5leHRcIjtcbnZhciBDTEFTU19QQUdJTkFUSU9OID0gQ0xBU1NfUFJFRklYICsgXCJwYWdpbmF0aW9uXCI7XG52YXIgQ0xBU1NfUEFHSU5BVElPTl9QQUdFID0gQ0xBU1NfUEFHSU5BVElPTiArIFwiX19wYWdlXCI7XG52YXIgQ0xBU1NfUFJPR1JFU1MgPSBDTEFTU19QUkVGSVggKyBcInByb2dyZXNzXCI7XG52YXIgQ0xBU1NfUFJPR1JFU1NfQkFSID0gQ0xBU1NfUFJPR1JFU1MgKyBcIl9fYmFyXCI7XG52YXIgQ0xBU1NfVE9HR0xFID0gQ0xBU1NfUFJFRklYICsgXCJ0b2dnbGVcIjtcbnZhciBDTEFTU19UT0dHTEVfUExBWSA9IENMQVNTX1RPR0dMRSArIFwiX19wbGF5XCI7XG52YXIgQ0xBU1NfVE9HR0xFX1BBVVNFID0gQ0xBU1NfVE9HR0xFICsgXCJfX3BhdXNlXCI7XG52YXIgQ0xBU1NfU1BJTk5FUiA9IENMQVNTX1BSRUZJWCArIFwic3Bpbm5lclwiO1xudmFyIENMQVNTX1NSID0gQ0xBU1NfUFJFRklYICsgXCJzclwiO1xudmFyIENMQVNTX0lOSVRJQUxJWkVEID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwiaW5pdGlhbGl6ZWRcIjtcbnZhciBDTEFTU19BQ1RJVkUgPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJhY3RpdmVcIjtcbnZhciBDTEFTU19QUkVWID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwicHJldlwiO1xudmFyIENMQVNTX05FWFQgPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJuZXh0XCI7XG52YXIgQ0xBU1NfVklTSUJMRSA9IFNUQVRVU19DTEFTU19QUkVGSVggKyBcInZpc2libGVcIjtcbnZhciBDTEFTU19MT0FESU5HID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwibG9hZGluZ1wiO1xudmFyIENMQVNTX0ZPQ1VTX0lOID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwiZm9jdXMtaW5cIjtcbnZhciBDTEFTU19PVkVSRkxP
3VyA9IFNUQVRVU19DTEFTU19QUkVGSVggKyBcIm92ZXJmbG93XCI7XG52YXIgU1RBVFVTX0NMQVNTRVMgPSBbQ0xBU1NfQUNUSVZFLCBDTEFTU19WSVNJQkxFLCBDTEFTU19QUkVWLCBDTEFTU19ORVhULCBDTEFTU19MT0FESU5HLCBDTEFTU19GT0NVU19JTiwgQ0xBU1NfT1ZFUkZMT1ddO1xudmFyIENMQVNTRVMgPSB7XG4gIHNsaWRlOiBDTEFTU19TTElERSxcbiAgY2xvbmU6IENMQVNTX0NMT05FLFxuICBhcnJvd3M6IENMQVNTX0FSUk9XUyxcbiAgYXJyb3c6IENMQVNTX0FSUk9XLFxuICBwcmV2OiBDTEFTU19BUlJPV19QUkVWLFxuICBuZXh0OiBDTEFTU19BUlJPV19ORVhULFxuICBwYWdpbmF0aW9uOiBDTEFTU19QQUdJTkFUSU9OLFxuICBwYWdlOiBDTEFTU19QQUdJTkFUSU9OX1BBR0UsXG4gIHNwaW5uZXI6IENMQVNTX1NQSU5ORVJcbn07XG5cbmZ1bmN0aW9uIGNsb3Nlc3QoZnJvbSwgc2VsZWN0b3IpIHtcbiAgaWYgKGlzRnVuY3Rpb24oZnJvbS5jbG9zZXN0KSkge1xuICAgIHJldHVybiBmcm9tLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICB9XG5cbiAgdmFyIGVsbSA9IGZyb207XG5cbiAgd2hpbGUgKGVsbSAmJiBlbG0ubm9kZVR5cGUgPT09IDEpIHtcbiAgICBpZiAobWF0Y2hlcyhlbG0sIHNlbGVjdG9yKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZWxtID0gZWxtLnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gZWxtO1xufVxuXG52YXIgRlJJQ1RJT04gPSA1O1xudmFyIExPR19JTlRFUlZBTCA9IDIwMDtcbnZhciBQT0lOVEVSX0RPV05fRVZFTlRTID0gXCJ0b3VjaHN0YXJ0IG1vdXNlZG93blwiO1xudmFyIFBPSU5URVJfTU9WRV9FVkVOVFMgPSBcInRvdWNobW92ZSBtb3VzZW1vdmVcIjtcbnZhciBQT0lOVEVSX1VQX0VWRU5UUyA9IFwidG91Y2hlbmQgdG91Y2hjYW5jZWwgbW91c2V1cCBjbGlja1wiO1xuXG5mdW5jdGlvbiBFbGVtZW50cyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZS5vbixcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UuYmluZDtcblxuICB2YXIgcm9vdCA9IFNwbGlkZTIucm9vdDtcbiAgdmFyIGkxOG4gPSBvcHRpb25zLmkxOG47XG4gIHZhciBlbGVtZW50cyA9IHt9O1xuICB2YXIgc2xpZGVzID0gW107XG4gIHZhciByb290Q2xhc3NlcyA9IFtdO1xuICB2YXIgdHJhY2tDbGFzc2VzID0gW107XG4gIHZhciB0cmFjaztcbiAgdmFyIGxpc3Q7XG4gIHZhciBpc1VzaW5nS2V5O1xuXG4gIGZ1bmN0aW9uIHNldHVwKCkge1xuICAgIGNvbGxlY3QoKTtcbiAgICBpbml0KCk7XG4gICAgdXBkYXRlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBvbihFVkVOVF9SRUZSRVNILCBkZXN0cm95KTtcbiAgICBvbihFVkVOVF9SRUZSRVNILCBzZXR1cCk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgdXBkYXRlKTtcbiAgICBiaW5kKGRvY3VtZW50LCBQT0lOVEVSX0RPV05fRVZFTlRTICsgXCIga2V5ZG93blwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaXNVc2luZ0tleSA9IGUudHlwZSA9PT0gXCJrZXlkb3duXCI7XG4gICAgfSwge1xuICAgICAgY2FwdHVyZTogdHJ1ZVxuICAgIH0pO1xuICAgIGJpbmQocm9vdCwgXCJmb2N1c2luXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKHJvb3QsIENMQVNTX0ZPQ1VTX0lOLCAhIWlzVXNpbmdLZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveShjb21wbGV0ZWx5KSB7XG4gICAgdmFyIGF0dHJzID0gQUxMX0FUVFJJQlVURVMuY29uY2F0KFwic3R5bGVcIik7XG4gICAgZW1wdHkoc2xpZGVzKTtcbiAgICByZW1vdmVDbGFzcyhyb290LCByb290Q2xhc3Nlcyk7XG4gICAgcmVtb3ZlQ2xhc3ModHJhY2ssIHRyYWNrQ2xhc3Nlcyk7XG4gICAgcmVtb3ZlQXR0cmlidXRlKFt0cmFjaywgbGlzdF0sIGF0dHJzKTtcbiAgICByZW1vdmVBdHRyaWJ1dGUocm9vdCwgY29tcGxldGVseSA/IGF0dHJzIDogW1wic3R5bGVcIiwgQVJJQV9ST0xFREVTQ1JJUFRJT05dKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICByZW1vdmVDbGFzcyhyb290LCByb290Q2xhc3Nlcyk7XG4gICAgcmVtb3ZlQ2xhc3ModHJhY2ssIHRyYWNrQ2xhc3Nlcyk7XG4gICAgcm9vdENsYXNzZXMgPSBnZXRDbGFzc2VzKENMQVNTX1JPT1QpO1xuICAgIHRyYWNrQ2xhc3NlcyA9IGdldENsYXNzZXMoQ0xBU1NfVFJBQ0spO1xuICAgIGFkZENsYXNzKHJvb3QsIHJvb3RDbGFzc2VzKTtcbiAgICBhZGRDbGFzcyh0cmFjaywgdHJhY2tDbGFzc2VzKTtcbiAgICBzZXRBdHRyaWJ1dGUocm9vdCwgQVJJQV9MQUJFTCwgb3B0aW9ucy5sYWJlbCk7XG4gICAgc2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfTEFCRUxMRURCWSwgb3B0aW9ucy5sYWJlbGxlZGJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbGxlY3QoKSB7XG4gICAgdHJhY2sgPSBmaW5kKFwiLlwiICsgQ0xBU1NfVFJBQ0spO1xuICAgIGxpc3QgPSBjaGlsZCh0cmFjaywgXCIuXCIgKyBDTEFTU19MSVNUKTtcbiAgICBhc3NlcnQodHJhY2sgJiYgbGlzdCwgXCJBIHRyYWNrL2xpc3QgZWxlbWVudCBpcyBtaXNzaW5nLlwiKTtcbiAgICBwdXNoKHNsaWRlcywgY2hpbGRyZW4obGlzdCwgXCIuXCIgKyBDTEFTU19TTElERSArIFwiOm5vdCguXCIgKyBDTEFTU19DTE9ORSArIFwiKVwiKSk7XG4gICAgZm9yT3duKHtcbiAgICAgIGFycm93czogQ0xBU1NfQVJST1dTLFxuICAgICAgcGFnaW5hdGlvbjogQ0xBU1NfUEFHSU5BVElPTixcbiAgICAgIHByZXY6IENMQVNTX0FSUk9XX1BSRVYsXG4gICAgICBuZXh0OiBDTEFTU19BUlJPV19ORVhULFxuICAgICAgYmFyOiBDTEFTU19QUk9HUkVTU19CQVIsXG4gICAgICB0b2dnbGU6IENMQVNTX1RPR0dMRVxuICAgIH0sIGZ1bmN0aW9uIChjbGFzc05hbWUsIGtleSkge1xuICAgICAgZWxlbWVudHNba2V5XSA9IGZpbmQoXCIuXCIgKyBjbGFzc05hbWUpO1xuICAgIH0pO1xuICAgIGFzc2lnbihlbGVtZW50cywge1xuICAgICAgcm9vdDogcm9vdCxcbiAgICAgIHRyYWNrOiB0cmFjayxcbiAgICAgIGxpc3Q6IGxpc3QsXG4gICAgICBzbGlkZXM6IHNsaWRlc1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgaWQgPSByb290LmlkIHx8IHVuaXF1ZUlkKFBST0pFQ1RfQ09ERSk7XG4gICAgdmFyIHJvbGUgPSBvcHRpb25zLnJvbGU7XG4gICAgcm9vdC5pZCA9IGlkO1xuICAgIHRyYWNrLmlkID0gdHJhY2suaWQgfHwgaWQgKyBcIi10cmFja1wiO1xuICAgIGxpc3QuaWQgPSBsaXN0LmlkIHx8IGlkICsgXCItbGlzdFwiO1xuXG4gICAgaWYgKCFnZXRBdHRyaWJ1dGUocm9vdCwgUk9MRSkgJiYgcm9vdC50YWdOYW1lICE9PSBcIlNFQ1RJT05cIiAmJiByb2xlKSB7XG4gICAgICBzZXRBdHRyaWJ1dGUocm9vdCwgUk9MRSwgcm9sZSk7XG4gICAgfVxuXG4gICAgc2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfUk9MRURFU0NSSVBUSU9OLCBpMThuLmNhcm91c2VsKTtcbiAgICBzZXRBdHRyaWJ1dGUobGlzdCwgUk9MRSwgXCJwcmVzZW50YXRpb25cIik7XG4gIH1cblxuICBmdW5jdGlvbiBmaW5kKHNlbGVjdG9yKSB7XG4gICAgdmFyIGVsbSA9IHF1ZXJ5KHJvb3QsIHNlbGVjdG9yKTtcbiAgICByZXR1cm4gZWxtICYmIGNsb3Nlc3QoZWxtLCBcIi5cIiArIENMQVNTX1JPT1QpID09PSByb290ID8gZWxtIDogdm9pZCAwO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Q2xhc3NlcyhiYXNlKSB7XG4gICAgcmV0dXJuIFtiYXNlICsgXCItLVwiICsgb3B0aW9ucy50eXBlLCBiYXNlICsgXCItLVwiICsgb3B0aW9ucy5kaXJlY3Rpb24sIG9wdGlvbnMuZHJhZyAmJiBiYXNlICsgXCItLWRyYWdnYWJsZVwiLCBvcHRpb25zLmlzTmF2aWdhdGlvbiAmJiBiYXNlICsgXCItLW5hdlwiLCBiYXNlID09PSBDTEFTU19ST09UICYmIENMQVNTX0FDVElWRV07XG4gIH1cblxuICByZXR1cm4gYXNzaWduKGVsZW1lbnRzLCB7XG4gICAgc2V0dXA6IHNldHVwLFxuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95XG4gIH0pO1xufVxuXG52YXIgU0xJREUgPSBcInNsaWRlXCI7XG52YXIgTE9PUCA9IFwibG9vcFwiO1xudmFyIEZBREUgPSBcImZhZGVcIjtcblxuZnVuY3Rpb24gU2xpZGUkMShTcGxpZGUyLCBpbmRleCwgc2xpZGVJbmRleCwgc2xpZGUpIHtcbiAgdmFyIGV2ZW50ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIHZhciBvbiA9IGV2ZW50Lm9uLFxuICAgICAgZW1pdCA9IGV2ZW50LmVtaXQsXG4gICAgICBiaW5kID0gZXZlbnQuYmluZDtcbiAgdmFyIENvbXBvbmVudHMgPSBTcGxpZGUyLkNvbXBvbmVudHMsXG4gICAgICByb290ID0gU3BsaWRlMi5yb290LFxuICAgICAgb3B0aW9ucyA9IFNwbGlkZTIub3B0aW9ucztcbiAgdmFyIGlzTmF2aWdhdGlvbiA9IG9wdGlvbnMuaXNOYXZpZ2F0aW9uLFxuICAgICAgdXBkYXRlT25Nb3ZlID0gb3B0aW9ucy51cGRhdGVPbk1vdmUsXG4gICAgICBpMThuID0gb3B0aW9ucy5pMThuLFxuICAgICAgcGFnaW5hdGlvbiA9IG9wdGlvbnMucGFnaW5hdGlvbixcbiAgICAgIHNsaWRlRm9jdXMgPSBvcHRpb25zLnNsaWRlRm9jdXM7XG4gIHZhciByZXNvbHZlID0gQ29tcG9uZW50cy5EaXJlY3Rpb24ucmVzb2x2ZTtcbiAgdmFyIHN0eWxlcyA9IGdldEF0dHJpYnV0ZShzbGlkZSwgXCJzdHlsZVwiKTtcbiAgdmFyIGxhYmVsID0gZ2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0xBQkVMKTtcbiAgdmFyIGlzQ2xvbmUgPSBzbGlkZUluZGV4ID4gLTE7XG4gIHZhciBjb250YWluZXIgPSBjaGlsZChzbGlkZSwgXCIuXCIgKyBDTEFTU19DT05UQUlORVIpO1xuICB2YXIgZGVzdHJveWVkO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmICghaXNDbG9uZSkge1xuICAgICAgc2xpZGUuaWQgPSByb290LmlkICsgXCItc2xpZGVcIiArIHBhZChpbmRleCArIDEpO1xuICAgICAgc2V0QXR0cmlidXRlKHNsaWRlLCBST0xFLCBwYWdpbmF0aW9uID8gXCJ0YWJwYW5lbFwiIDogXCJncm91cFwiKTtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9ST0xFREVTQ1JJUFRJT04sIGkxOG4uc2xpZGUpO1xuICAgICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0xBQkVMLCBsYWJlbCB8fCBmb3JtYXQoaTE4bi5zbGlkZUxhYmVsLCBbaW5kZXggKyAxLCBTcGxpZGUyLmxlbmd0aF0pKTtcbiAgICB9XG5cbiAgICBsaXN0ZW4oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RlbigpIHtcbiAgICBiaW5kKHNsaWRlLCBcImNsaWNrXCIsIGFwcGx5KGVtaXQsIEVWRU5UX0NMSUNLLCBzZWxmKSk7XG4gICAgYmluZChzbGlkZSwgXCJrZXlkb3duXCIsIGFwcGx5KGVtaXQsIEVWRU5UX1NMSURFX0tFWURPV04sIHNlbGYpKTtcbiAgICBvbihbRVZFTlRfTU9WRUQsIEVWRU5UX1NISU
3ZURUQsIEVWRU5UX1NDUk9MTEVEXSwgdXBkYXRlKTtcbiAgICBvbihFVkVOVF9OQVZJR0FUSU9OX01PVU5URUQsIGluaXROYXZpZ2F0aW9uKTtcblxuICAgIGlmICh1cGRhdGVPbk1vdmUpIHtcbiAgICAgIG9uKEVWRU5UX01PVkUsIG9uTW92ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBkZXN0cm95ZWQgPSB0cnVlO1xuICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgICByZW1vdmVDbGFzcyhzbGlkZSwgU1RBVFVTX0NMQVNTRVMpO1xuICAgIHJlbW92ZUF0dHJpYnV0ZShzbGlkZSwgQUxMX0FUVFJJQlVURVMpO1xuICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgXCJzdHlsZVwiLCBzdHlsZXMpO1xuICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9MQUJFTCwgbGFiZWwgfHwgXCJcIik7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0TmF2aWdhdGlvbigpIHtcbiAgICB2YXIgY29udHJvbHMgPSBTcGxpZGUyLnNwbGlkZXMubWFwKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgIHZhciBTbGlkZTIgPSB0YXJnZXQuc3BsaWRlLkNvbXBvbmVudHMuU2xpZGVzLmdldEF0KGluZGV4KTtcbiAgICAgIHJldHVybiBTbGlkZTIgPyBTbGlkZTIuc2xpZGUuaWQgOiBcIlwiO1xuICAgIH0pLmpvaW4oXCIgXCIpO1xuICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9MQUJFTCwgZm9ybWF0KGkxOG4uc2xpZGVYLCAoaXNDbG9uZSA/IHNsaWRlSW5kZXggOiBpbmRleCkgKyAxKSk7XG4gICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0NPTlRST0xTLCBjb250cm9scyk7XG4gICAgc2V0QXR0cmlidXRlKHNsaWRlLCBST0xFLCBzbGlkZUZvY3VzID8gXCJidXR0b25cIiA6IFwiXCIpO1xuICAgIHNsaWRlRm9jdXMgJiYgcmVtb3ZlQXR0cmlidXRlKHNsaWRlLCBBUklBX1JPTEVERVNDUklQVElPTik7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdmUoKSB7XG4gICAgaWYgKCFkZXN0cm95ZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIWRlc3Ryb3llZCkge1xuICAgICAgdmFyIGN1cnIgPSBTcGxpZGUyLmluZGV4O1xuICAgICAgdXBkYXRlQWN0aXZpdHkoKTtcbiAgICAgIHVwZGF0ZVZpc2liaWxpdHkoKTtcbiAgICAgIHRvZ2dsZUNsYXNzKHNsaWRlLCBDTEFTU19QUkVWLCBpbmRleCA9PT0gY3VyciAtIDEpO1xuICAgICAgdG9nZ2xlQ2xhc3Moc2xpZGUsIENMQVNTX05FWFQsIGluZGV4ID09PSBjdXJyICsgMSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlQWN0aXZpdHkoKSB7XG4gICAgdmFyIGFjdGl2ZSA9IGlzQWN0aXZlKCk7XG5cbiAgICBpZiAoYWN0aXZlICE9PSBoYXNDbGFzcyhzbGlkZSwgQ0xBU1NfQUNUSVZFKSkge1xuICAgICAgdG9nZ2xlQ2xhc3Moc2xpZGUsIENMQVNTX0FDVElWRSwgYWN0aXZlKTtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9DVVJSRU5ULCBpc05hdmlnYXRpb24gJiYgYWN0aXZlIHx8IFwiXCIpO1xuICAgICAgZW1pdChhY3RpdmUgPyBFVkVOVF9BQ1RJVkUgOiBFVkVOVF9JTkFDVElWRSwgc2VsZik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlVmlzaWJpbGl0eSgpIHtcbiAgICB2YXIgdmlzaWJsZSA9IGlzVmlzaWJsZSgpO1xuICAgIHZhciBoaWRkZW4gPSAhdmlzaWJsZSAmJiAoIWlzQWN0aXZlKCkgfHwgaXNDbG9uZSk7XG5cbiAgICBpZiAoIVNwbGlkZTIuc3RhdGUuaXMoW01PVklORywgU0NST0xMSU5HXSkpIHtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9ISURERU4sIGhpZGRlbiB8fCBcIlwiKTtcbiAgICB9XG5cbiAgICBzZXRBdHRyaWJ1dGUocXVlcnlBbGwoc2xpZGUsIG9wdGlvbnMuZm9jdXNhYmxlTm9kZXMgfHwgXCJcIiksIFRBQl9JTkRFWCwgaGlkZGVuID8gLTEgOiBcIlwiKTtcblxuICAgIGlmIChzbGlkZUZvY3VzKSB7XG4gICAgICBzZXRBdHRyaWJ1dGUoc2xpZGUsIFRBQl9JTkRFWCwgaGlkZGVuID8gLTEgOiAwKTtcbiAgICB9XG5cbiAgICBpZiAodmlzaWJsZSAhPT0gaGFzQ2xhc3Moc2xpZGUsIENMQVNTX1ZJU0lCTEUpKSB7XG4gICAgICB0b2dnbGVDbGFzcyhzbGlkZSwgQ0xBU1NfVklTSUJMRSwgdmlzaWJsZSk7XG4gICAgICBlbWl0KHZpc2libGUgPyBFVkVOVF9WSVNJQkxFIDogRVZFTlRfSElEREVOLCBzZWxmKTtcbiAgICB9XG5cbiAgICBpZiAoIXZpc2libGUgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gc2xpZGUpIHtcbiAgICAgIHZhciBTbGlkZTIgPSBDb21wb25lbnRzLlNsaWRlcy5nZXRBdChTcGxpZGUyLmluZGV4KTtcbiAgICAgIFNsaWRlMiAmJiBmb2N1cyhTbGlkZTIuc2xpZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0eWxlJDEocHJvcCwgdmFsdWUsIHVzZUNvbnRhaW5lcikge1xuICAgIHN0eWxlKHVzZUNvbnRhaW5lciAmJiBjb250YWluZXIgfHwgc2xpZGUsIHByb3AsIHZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgIHZhciBjdXJyID0gU3BsaWRlMi5pbmRleDtcbiAgICByZXR1cm4gY3VyciA9PT0gaW5kZXggfHwgb3B0aW9ucy5jbG9uZVN0YXR1cyAmJiBjdXJyID09PSBzbGlkZUluZGV4O1xuICB9XG5cbiAgZnVuY3Rpb24gaXNWaXNpYmxlKCkge1xuICAgIGlmIChTcGxpZGUyLmlzKEZBREUpKSB7XG4gICAgICByZXR1cm4gaXNBY3RpdmUoKTtcbiAgICB9XG5cbiAgICB2YXIgdHJhY2tSZWN0ID0gcmVjdChDb21wb25lbnRzLkVsZW1lbnRzLnRyYWNrKTtcbiAgICB2YXIgc2xpZGVSZWN0ID0gcmVjdChzbGlkZSk7XG4gICAgdmFyIGxlZnQgPSByZXNvbHZlKFwibGVmdFwiLCB0cnVlKTtcbiAgICB2YXIgcmlnaHQgPSByZXNvbHZlKFwicmlnaHRcIiwgdHJ1ZSk7XG4gICAgcmV0dXJuIGZsb29yKHRyYWNrUmVjdFtsZWZ0XSkgPD0gY2VpbChzbGlkZVJlY3RbbGVmdF0pICYmIGZsb29yKHNsaWRlUmVjdFtyaWdodF0pIDw9IGNlaWwodHJhY2tSZWN0W3JpZ2h0XSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc1dpdGhpbihmcm9tLCBkaXN0YW5jZSkge1xuICAgIHZhciBkaWZmID0gYWJzKGZyb20gLSBpbmRleCk7XG5cbiAgICBpZiAoIWlzQ2xvbmUgJiYgKG9wdGlvbnMucmV3aW5kIHx8IFNwbGlkZTIuaXMoTE9PUCkpKSB7XG4gICAgICBkaWZmID0gbWluKGRpZmYsIFNwbGlkZTIubGVuZ3RoIC0gZGlmZik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmYgPD0gZGlzdGFuY2U7XG4gIH1cblxuICB2Y
3XIgc2VsZiA9IHtcbiAgICBpbmRleDogaW5kZXgsXG4gICAgc2xpZGVJbmRleDogc2xpZGVJbmRleCxcbiAgICBzbGlkZTogc2xpZGUsXG4gICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgaXNDbG9uZTogaXNDbG9uZSxcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogZGVzdHJveSxcbiAgICB1cGRhdGU6IHVwZGF0ZSxcbiAgICBzdHlsZTogc3R5bGUkMSxcbiAgICBpc1dpdGhpbjogaXNXaXRoaW5cbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5cbmZ1bmN0aW9uIFNsaWRlcyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMiA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2UyLm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTIuZW1pdCxcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UyLmJpbmQ7XG5cbiAgdmFyIF9Db21wb25lbnRzMiRFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgc2xpZGVzID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzLnNsaWRlcyxcbiAgICAgIGxpc3QgPSBfQ29tcG9uZW50czIkRWxlbWVudHMubGlzdDtcbiAgdmFyIFNsaWRlczIgPSBbXTtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpbml0KCk7XG4gICAgb24oRVZFTlRfUkVGUkVTSCwgZGVzdHJveSk7XG4gICAgb24oRVZFTlRfUkVGUkVTSCwgaW5pdCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSwgaW5kZXgpIHtcbiAgICAgIHJlZ2lzdGVyKHNsaWRlLCBpbmRleCwgLTEpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBmb3JFYWNoJDEoZnVuY3Rpb24gKFNsaWRlMikge1xuICAgICAgU2xpZGUyLmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICBlbXB0eShTbGlkZXMyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBmb3JFYWNoJDEoZnVuY3Rpb24gKFNsaWRlMikge1xuICAgICAgU2xpZGUyLnVwZGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXIoc2xpZGUsIGluZGV4LCBzbGlkZUluZGV4KSB7XG4gICAgdmFyIG9iamVjdCA9IFNsaWRlJDEoU3BsaWRlMiwgaW5kZXgsIHNsaWRlSW5kZXgsIHNsaWRlKTtcbiAgICBvYmplY3QubW91bnQoKTtcbiAgICBTbGlkZXMyLnB1c2gob2JqZWN0KTtcbiAgICBTbGlkZXMyLnNvcnQoZnVuY3Rpb24gKFNsaWRlMSwgU2xpZGUyKSB7XG4gICAgICByZXR1cm4gU2xpZGUxLmluZGV4IC0gU2xpZGUyLmluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0KGV4Y2x1ZGVDbG9uZXMpIHtcbiAgICByZXR1cm4gZXhjbHVkZUNsb25lcyA/IGZpbHRlcihmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gIVNsaWRlMi5pc0Nsb25lO1xuICAgIH0pIDogU2xpZGVzMjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEluKHBhZ2UpIHtcbiAgICB2YXIgQ29udHJvbGxlciA9IENvbXBvbmVudHMyLkNvbnRyb2xsZXI7XG4gICAgdmFyIGluZGV4ID0gQ29udHJvbGxlci50b0luZGV4KHBhZ2UpO1xuICAgIHZhciBtYXggPSBDb250cm9sbGVyLmhhc0ZvY3VzKCkgPyAxIDogb3B0aW9ucy5wZXJQYWdlO1xuICAgIHJldHVybiBmaWx0ZXIoZnVuY3Rpb24gKFNsaWRlMikge1xuICAgICAgcmV0dXJuIGJldHdlZW4oU2xpZGUyLmluZGV4LCBpbmRleCwgaW5kZXggKyBtYXggLSAxKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEF0KGluZGV4KSB7XG4gICAgcmV0dXJuIGZpbHRlcihpbmRleClbMF07XG4gIH1cblxuICBmdW5jdGlvbiBhZGQoaXRlbXMsIGluZGV4KSB7XG4gICAgZm9yRWFjaChpdGVtcywgZnVuY3Rpb24gKHNsaWRlKSB7XG4gICAgICBpZiAoaXNTdHJpbmcoc2xpZGUpKSB7XG4gICAgICAgIHNsaWRlID0gcGFyc2VIdG1sKHNsaWRlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzSFRNTEVsZW1lbnQoc2xpZGUpKSB7XG4gICAgICAgIHZhciByZWYgPSBzbGlkZXNbaW5kZXhdO1xuICAgICAgICByZWYgPyBiZWZvcmUoc2xpZGUsIHJlZikgOiBhcHBlbmQobGlzdCwgc2xpZGUpO1xuICAgICAgICBhZGRDbGFzcyhzbGlkZSwgb3B0aW9ucy5jbGFzc2VzLnNsaWRlKTtcbiAgICAgICAgb2JzZXJ2ZUltYWdlcyhzbGlkZSwgYXBwbHkoZW1pdCwgRVZFTlRfUkVTSVpFKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZW1pdChFVkVOVF9SRUZSRVNIKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZSQxKG1hdGNoZXIpIHtcbiAgICByZW1vdmUoZmlsdGVyKG1hdGNoZXIpLm1hcChmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gU2xpZGUyLnNsaWRlO1xuICAgIH0pKTtcbiAgICBlbWl0KEVWRU5UX1JFRlJFU0gpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9yRWFjaCQxKGl0ZXJhdGVlLCBleGNsdWRlQ2xvbmVzKSB7XG4gICAgZ2V0KGV4Y2x1ZGVDbG9uZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gZmlsdGVyKG1hdGNoZXIpIHtcbiAgICByZXR1cm4gU2xpZGVzMi5maWx0ZXIoaXNGdW5jdGlvbihtYXRjaGVyKSA/IG1hdGNoZXIgOiBmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gaXNTdHJpbmcobWF0Y2hlcikgPyBtYXRjaGVzKFNsaWRlMi5zbGlkZSwgbWF0Y2hlcikgOiBpbmNsdWRlcyh0b0FycmF5KG1hdGNoZXIpLCBTbGlkZTIuaW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gc3R5bGUocHJvcCwgdmFsdWUsIHVzZUNvbnRhaW5lcikge1xuICAgIGZvckVhY2gkMShmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICBTbGlkZTIuc3R5bGUocHJvcCwgdmFsdWUsIHVzZUNvbnRhaW5lcik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvYnNlcnZlSW1hZ2VzKGVsbSwgY2FsbGJhY2spIHtcbiAgICB2YXIgaW1hZ2VzID0gcXVlcnlBbGwoZWxtLCBcImltZ1wiKTtcbiAgICB2YXIgbGVuZ3RoID0gaW1hZ2VzLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGgpIHtcbiAgICAgIGltYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChpbWcpIHtcbiAgICAgICAgYmluZChpbWcsIFwibG9h
3ZCBlcnJvclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKCEgLS1sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExlbmd0aChleGNsdWRlQ2xvbmVzKSB7XG4gICAgcmV0dXJuIGV4Y2x1ZGVDbG9uZXMgPyBzbGlkZXMubGVuZ3RoIDogU2xpZGVzMi5sZW5ndGg7XG4gIH1cblxuICBmdW5jdGlvbiBpc0Vub3VnaCgpIHtcbiAgICByZXR1cm4gU2xpZGVzMi5sZW5ndGggPiBvcHRpb25zLnBlclBhZ2U7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIHVwZGF0ZTogdXBkYXRlLFxuICAgIHJlZ2lzdGVyOiByZWdpc3RlcixcbiAgICBnZXQ6IGdldCxcbiAgICBnZXRJbjogZ2V0SW4sXG4gICAgZ2V0QXQ6IGdldEF0LFxuICAgIGFkZDogYWRkLFxuICAgIHJlbW92ZTogcmVtb3ZlJDEsXG4gICAgZm9yRWFjaDogZm9yRWFjaCQxLFxuICAgIGZpbHRlcjogZmlsdGVyLFxuICAgIHN0eWxlOiBzdHlsZSxcbiAgICBnZXRMZW5ndGg6IGdldExlbmd0aCxcbiAgICBpc0Vub3VnaDogaXNFbm91Z2hcbiAgfTtcbn1cblxuZnVuY3Rpb24gTGF5b3V0KFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2UzID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTMub24sXG4gICAgICBiaW5kID0gX0V2ZW50SW50ZXJmYWNlMy5iaW5kLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTMuZW1pdDtcblxuICB2YXIgU2xpZGVzID0gQ29tcG9uZW50czIuU2xpZGVzO1xuICB2YXIgcmVzb2x2ZSA9IENvbXBvbmVudHMyLkRpcmVjdGlvbi5yZXNvbHZlO1xuICB2YXIgX0NvbXBvbmVudHMyJEVsZW1lbnRzMiA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgcm9vdCA9IF9Db21wb25lbnRzMiRFbGVtZW50czIucm9vdCxcbiAgICAgIHRyYWNrID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzMi50cmFjayxcbiAgICAgIGxpc3QgPSBfQ29tcG9uZW50czIkRWxlbWVudHMyLmxpc3Q7XG4gIHZhciBnZXRBdCA9IFNsaWRlcy5nZXRBdCxcbiAgICAgIHN0eWxlU2xpZGVzID0gU2xpZGVzLnN0eWxlO1xuICB2YXIgdmVydGljYWw7XG4gIHZhciByb290UmVjdDtcbiAgdmFyIG92ZXJmbG93O1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGluaXQoKTtcbiAgICBiaW5kKHdpbmRvdywgXCJyZXNpemUgbG9hZFwiLCBUaHJvdHRsZShhcHBseShlbWl0LCBFVkVOVF9SRVNJWkUpKSk7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0hdLCBpbml0KTtcbiAgICBvbihFVkVOVF9SRVNJWkUsIHJlc2l6ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHZlcnRpY2FsID0gb3B0aW9ucy5kaXJlY3Rpb24gPT09IFRUQjtcbiAgICBzdHlsZShyb290LCBcIm1heFdpZHRoXCIsIHVuaXQob3B0aW9ucy53aWR0aCkpO1xuICAgIHN0eWxlKHRyYWNrLCByZXNvbHZlKFwicGFkZGluZ0xlZnRcIiksIGNzc1BhZGRpbmcoZmFsc2UpKTtcbiAgICBzdHlsZSh0cmFjaywgcmVzb2x2ZShcInBhZGRpbmdSaWdodFwiKSwgY3NzUGFkZGluZyh0cnVlKSk7XG4gICAgcmVzaXplKHRydWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzaXplKGZvcmNlKSB7XG4gICAgdmFyIG5ld1JlY3QgPSByZWN0KHJvb3QpO1xuXG4gICAgaWYgKGZvcmNlIHx8IHJvb3RSZWN0LndpZHRoICE9PSBuZXdSZWN0LndpZHRoIHx8IHJvb3RSZWN0LmhlaWdodCAhPT0gbmV3UmVjdC5oZWlnaHQpIHtcbiAgICAgIHN0eWxlKHRyYWNrLCBcImhlaWdodFwiLCBjc3NUcmFja0hlaWdodCgpKTtcbiAgICAgIHN0eWxlU2xpZGVzKHJlc29sdmUoXCJtYXJnaW5SaWdodFwiKSwgdW5pdChvcHRpb25zLmdhcCkpO1xuICAgICAgc3R5bGVTbGlkZXMoXCJ3aWR0aFwiLCBjc3NTbGlkZVdpZHRoKCkpO1xuICAgICAgc3R5bGVTbGlkZXMoXCJoZWlnaHRcIiwgY3NzU2xpZGVIZWlnaHQoKSwgdHJ1ZSk7XG4gICAgICByb290UmVjdCA9IG5ld1JlY3Q7XG4gICAgICBlbWl0KEVWRU5UX1JFU0laRUQpO1xuXG4gICAgICBpZiAob3ZlcmZsb3cgIT09IChvdmVyZmxvdyA9IGlzT3ZlcmZsb3coKSkpIHtcbiAgICAgICAgdG9nZ2xlQ2xhc3Mocm9vdCwgQ0xBU1NfT1ZFUkZMT1csIG92ZXJmbG93KTtcbiAgICAgICAgZW1pdChFVkVOVF9PVkVSRkxPVywgb3ZlcmZsb3cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc1BhZGRpbmcocmlnaHQpIHtcbiAgICB2YXIgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZztcbiAgICB2YXIgcHJvcCA9IHJlc29sdmUocmlnaHQgPyBcInJpZ2h0XCIgOiBcImxlZnRcIik7XG4gICAgcmV0dXJuIHBhZGRpbmcgJiYgdW5pdChwYWRkaW5nW3Byb3BdIHx8IChpc09iamVjdChwYWRkaW5nKSA/IDAgOiBwYWRkaW5nKSkgfHwgXCIwcHhcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc1RyYWNrSGVpZ2h0KCkge1xuICAgIHZhciBoZWlnaHQgPSBcIlwiO1xuXG4gICAgaWYgKHZlcnRpY2FsKSB7XG4gICAgICBoZWlnaHQgPSBjc3NIZWlnaHQoKTtcbiAgICAgIGFzc2VydChoZWlnaHQsIFwiaGVpZ2h0IG9yIGhlaWdodFJhdGlvIGlzIG1pc3NpbmcuXCIpO1xuICAgICAgaGVpZ2h0ID0gXCJjYWxjKFwiICsgaGVpZ2h0ICsgXCIgLSBcIiArIGNzc1BhZGRpbmcoZmFsc2UpICsgXCIgLSBcIiArIGNzc1BhZGRpbmcodHJ1ZSkgKyBcIilcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gaGVpZ2h0O1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzSGVpZ2h0KCkge1xuICAgIHJldHVybiB1bml0KG9wdGlvbnMuaGVpZ2h0IHx8IHJlY3QobGlzdCkud2lkdGggKiBvcHRpb25zLmhlaWdodFJhdGlvKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc1NsaWRlV2lkdGgoKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuYXV0b1dpZHRoID8gbnVsbCA6IHVuaXQob3B0aW9ucy5maXhlZFdpZHRoKSB8fCAodmVydGljYWwgPyBcIlwiIDogY3NzU2xpZGVTaXplKCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzU2xpZGVIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHVuaXQob3B0aW9ucy5maXhlZEhlaWdodCkgfHwgKHZlcnRpY2FsID8gb3B0aW9ucy5hdXRv
3SGVpZ2h0ID8gbnVsbCA6IGNzc1NsaWRlU2l6ZSgpIDogY3NzSGVpZ2h0KCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzU2xpZGVTaXplKCkge1xuICAgIHZhciBnYXAgPSB1bml0KG9wdGlvbnMuZ2FwKTtcbiAgICByZXR1cm4gXCJjYWxjKCgxMDAlXCIgKyAoZ2FwICYmIFwiICsgXCIgKyBnYXApICsgXCIpL1wiICsgKG9wdGlvbnMucGVyUGFnZSB8fCAxKSArIChnYXAgJiYgXCIgLSBcIiArIGdhcCkgKyBcIilcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RTaXplKCkge1xuICAgIHJldHVybiByZWN0KGxpc3QpW3Jlc29sdmUoXCJ3aWR0aFwiKV07XG4gIH1cblxuICBmdW5jdGlvbiBzbGlkZVNpemUoaW5kZXgsIHdpdGhvdXRHYXApIHtcbiAgICB2YXIgU2xpZGUgPSBnZXRBdChpbmRleCB8fCAwKTtcbiAgICByZXR1cm4gU2xpZGUgPyByZWN0KFNsaWRlLnNsaWRlKVtyZXNvbHZlKFwid2lkdGhcIildICsgKHdpdGhvdXRHYXAgPyAwIDogZ2V0R2FwKCkpIDogMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdGFsU2l6ZShpbmRleCwgd2l0aG91dEdhcCkge1xuICAgIHZhciBTbGlkZSA9IGdldEF0KGluZGV4KTtcblxuICAgIGlmIChTbGlkZSkge1xuICAgICAgdmFyIHJpZ2h0ID0gcmVjdChTbGlkZS5zbGlkZSlbcmVzb2x2ZShcInJpZ2h0XCIpXTtcbiAgICAgIHZhciBsZWZ0ID0gcmVjdChsaXN0KVtyZXNvbHZlKFwibGVmdFwiKV07XG4gICAgICByZXR1cm4gYWJzKHJpZ2h0IC0gbGVmdCkgKyAod2l0aG91dEdhcCA/IDAgOiBnZXRHYXAoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmdW5jdGlvbiBzbGlkZXJTaXplKHdpdGhvdXRHYXApIHtcbiAgICByZXR1cm4gdG90YWxTaXplKFNwbGlkZTIubGVuZ3RoIC0gMSkgLSB0b3RhbFNpemUoMCkgKyBzbGlkZVNpemUoMCwgd2l0aG91dEdhcCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRHYXAoKSB7XG4gICAgdmFyIFNsaWRlID0gZ2V0QXQoMCk7XG4gICAgcmV0dXJuIFNsaWRlICYmIHBhcnNlRmxvYXQoc3R5bGUoU2xpZGUuc2xpZGUsIHJlc29sdmUoXCJtYXJnaW5SaWdodFwiKSkpIHx8IDA7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRQYWRkaW5nKHJpZ2h0KSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3R5bGUodHJhY2ssIHJlc29sdmUoXCJwYWRkaW5nXCIgKyAocmlnaHQgPyBcIlJpZ2h0XCIgOiBcIkxlZnRcIikpKSkgfHwgMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzT3ZlcmZsb3coKSB7XG4gICAgcmV0dXJuIFNwbGlkZTIuaXMoRkFERSkgfHwgc2xpZGVyU2l6ZSh0cnVlKSA+IGxpc3RTaXplKCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICByZXNpemU6IHJlc2l6ZSxcbiAgICBsaXN0U2l6ZTogbGlzdFNpemUsXG4gICAgc2xpZGVTaXplOiBzbGlkZVNpemUsXG4gICAgc2xpZGVyU2l6ZTogc2xpZGVyU2l6ZSxcbiAgICB0b3RhbFNpemU6IHRvdGFsU2l6ZSxcbiAgICBnZXRQYWRkaW5nOiBnZXRQYWRkaW5nLFxuICAgIGlzT3ZlcmZsb3c6IGlzT3ZlcmZsb3dcbiAgfTtcbn1cblxudmFyIE1VTFRJUExJRVIgPSAyO1xuXG5mdW5jdGlvbiBDbG9uZXMoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIGV2ZW50ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIHZhciBvbiA9IGV2ZW50Lm9uO1xuICB2YXIgRWxlbWVudHMgPSBDb21wb25lbnRzMi5FbGVtZW50cyxcbiAgICAgIFNsaWRlcyA9IENvbXBvbmVudHMyLlNsaWRlcztcbiAgdmFyIHJlc29sdmUgPSBDb21wb25lbnRzMi5EaXJlY3Rpb24ucmVzb2x2ZTtcbiAgdmFyIGNsb25lcyA9IFtdO1xuICB2YXIgY2xvbmVDb3VudDtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBvbihFVkVOVF9SRUZSRVNILCByZW1vdW50KTtcbiAgICBvbihbRVZFTlRfVVBEQVRFRCwgRVZFTlRfUkVTSVpFXSwgb2JzZXJ2ZSk7XG5cbiAgICBpZiAoY2xvbmVDb3VudCA9IGNvbXB1dGVDbG9uZUNvdW50KCkpIHtcbiAgICAgIGdlbmVyYXRlKGNsb25lQ291bnQpO1xuICAgICAgQ29tcG9uZW50czIuTGF5b3V0LnJlc2l6ZSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdW50KCkge1xuICAgIGRlc3Ryb3koKTtcbiAgICBtb3VudCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICByZW1vdmUoY2xvbmVzKTtcbiAgICBlbXB0eShjbG9uZXMpO1xuICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9ic2VydmUoKSB7XG4gICAgdmFyIGNvdW50ID0gY29tcHV0ZUNsb25lQ291bnQoKTtcblxuICAgIGlmIChjbG9uZUNvdW50ICE9PSBjb3VudCkge1xuICAgICAgaWYgKGNsb25lQ291bnQgPCBjb3VudCB8fCAhY291bnQpIHtcbiAgICAgICAgZXZlbnQuZW1pdChFVkVOVF9SRUZSRVNIKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZW5lcmF0ZShjb3VudCkge1xuICAgIHZhciBzbGlkZXMgPSBTbGlkZXMuZ2V0KCkuc2xpY2UoKTtcbiAgICB2YXIgbGVuZ3RoID0gc2xpZGVzLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGgpIHtcbiAgICAgIHdoaWxlIChzbGlkZXMubGVuZ3RoIDwgY291bnQpIHtcbiAgICAgICAgcHVzaChzbGlkZXMsIHNsaWRlcyk7XG4gICAgICB9XG5cbiAgICAgIHB1c2goc2xpZGVzLnNsaWNlKC1jb3VudCksIHNsaWRlcy5zbGljZSgwLCBjb3VudCkpLmZvckVhY2goZnVuY3Rpb24gKFNsaWRlLCBpbmRleCkge1xuICAgICAgICB2Y
3XIgaXNIZWFkID0gaW5kZXggPCBjb3VudDtcbiAgICAgICAgdmFyIGNsb25lID0gY2xvbmVEZWVwKFNsaWRlLnNsaWRlLCBpbmRleCk7XG4gICAgICAgIGlzSGVhZCA/IGJlZm9yZShjbG9uZSwgc2xpZGVzWzBdLnNsaWRlKSA6IGFwcGVuZChFbGVtZW50cy5saXN0LCBjbG9uZSk7XG4gICAgICAgIHB1c2goY2xvbmVzLCBjbG9uZSk7XG4gICAgICAgIFNsaWRlcy5yZWdpc3RlcihjbG9uZSwgaW5kZXggLSBjb3VudCArIChpc0hlYWQgPyAwIDogbGVuZ3RoKSwgU2xpZGUuaW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xvbmVEZWVwKGVsbSwgaW5kZXgpIHtcbiAgICB2YXIgY2xvbmUgPSBlbG0uY2xvbmVOb2RlKHRydWUpO1xuICAgIGFkZENsYXNzKGNsb25lLCBvcHRpb25zLmNsYXNzZXMuY2xvbmUpO1xuICAgIGNsb25lLmlkID0gU3BsaWRlMi5yb290LmlkICsgXCItY2xvbmVcIiArIHBhZChpbmRleCArIDEpO1xuICAgIHJldHVybiBjbG9uZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVDbG9uZUNvdW50KCkge1xuICAgIHZhciBjbG9uZXMyID0gb3B0aW9ucy5jbG9uZXM7XG5cbiAgICBpZiAoIVNwbGlkZTIuaXMoTE9PUCkpIHtcbiAgICAgIGNsb25lczIgPSAwO1xuICAgIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoY2xvbmVzMikpIHtcbiAgICAgIHZhciBmaXhlZFNpemUgPSBvcHRpb25zW3Jlc29sdmUoXCJmaXhlZFdpZHRoXCIpXSAmJiBDb21wb25lbnRzMi5MYXlvdXQuc2xpZGVTaXplKDApO1xuICAgICAgdmFyIGZpeGVkQ291bnQgPSBmaXhlZFNpemUgJiYgY2VpbChyZWN0KEVsZW1lbnRzLnRyYWNrKVtyZXNvbHZlKFwid2lkdGhcIildIC8gZml4ZWRTaXplKTtcbiAgICAgIGNsb25lczIgPSBmaXhlZENvdW50IHx8IG9wdGlvbnNbcmVzb2x2ZShcImF1dG9XaWR0aFwiKV0gJiYgU3BsaWRlMi5sZW5ndGggfHwgb3B0aW9ucy5wZXJQYWdlICogTVVMVElQTElFUjtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmVzMjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfTtcbn1cblxuZnVuY3Rpb24gTW92ZShTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlNCA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2U0Lm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTQuZW1pdDtcblxuICB2YXIgc2V0ID0gU3BsaWRlMi5zdGF0ZS5zZXQ7XG4gIHZhciBfQ29tcG9uZW50czIkTGF5b3V0ID0gQ29tcG9uZW50czIuTGF5b3V0LFxuICAgICAgc2xpZGVTaXplID0gX0NvbXBvbmVudHMyJExheW91dC5zbGlkZVNpemUsXG4gICAgICBnZXRQYWRkaW5nID0gX0NvbXBvbmVudHMyJExheW91dC5nZXRQYWRkaW5nLFxuICAgICAgdG90YWxTaXplID0gX0NvbXBvbmVudHMyJExheW91dC50b3RhbFNpemUsXG4gICAgICBsaXN0U2l6ZSA9IF9Db21wb25lbnRzMiRMYXlvdXQubGlzdFNpemUsXG4gICAgICBzbGlkZXJTaXplID0gX0NvbXBvbmVudHMyJExheW91dC5zbGlkZXJTaXplO1xuICB2YXIgX0NvbXBvbmVudHMyJERpcmVjdGlvID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLFxuICAgICAgcmVzb2x2ZSA9IF9Db21wb25lbnRzMiREaXJlY3Rpby5yZXNvbHZlLFxuICAgICAgb3JpZW50ID0gX0NvbXBvbmVudHMyJERpcmVjdGlvLm9yaWVudDtcbiAgdmFyIF9Db21wb25lbnRzMiRFbGVtZW50czMgPSBDb21wb25lbnRzMi5FbGVtZW50cyxcbiAgICAgIGxpc3QgPSBfQ29tcG9uZW50czIkRWxlbWVudHMzLmxpc3QsXG4gICAgICB0cmFjayA9IF9Db21wb25lbnRzMiRFbGVtZW50czMudHJhY2s7XG4gIHZhciBUcmFuc2l0aW9uO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIFRyYW5zaXRpb24gPSBDb21wb25lbnRzMi5UcmFuc2l0aW9uO1xuICAgIG9uKFtFVkVOVF9NT1VOVEVELCBFVkVOVF9SRVNJWkVELCBFVkVOVF9VUERBVEVELCBFVkVOVF9SRUZSRVNIXSwgcmVwb3NpdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiByZXBvc2l0aW9uKCkge1xuICAgIGlmICghQ29tcG9uZW50czIuQ29udHJvbGxlci5pc0J1c3koKSkge1xuICAgICAgQ29tcG9uZW50czIuU2Nyb2xsLmNhbmNlbCgpO1xuICAgICAganVtcChTcGxpZGUyLmluZGV4KTtcbiAgICAgIENvbXBvbmVudHMyLlNsaWRlcy51cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtb3ZlKGRlc3QsIGluZGV4LCBwcmV2LCBjYWxsYmFjaykge1xuICAgIGlmIChkZXN0ICE9PSBpbmRleCAmJiBjYW5TaGlmdChkZXN0ID4gcHJldikpIHtcbiAgICAgIGNhbmNlbCgpO1xuICAgICAgdHJhbnNsYXRlKHNoaWZ0KGdldFBvc2l0aW9uKCksIGRlc3QgPiBwcmV2KSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc2V0KE1PVklORyk7XG4gICAgZW1pdChFVkVOVF9NT1ZFLCBpbmRleCwgcHJldiwgZGVzdCk7XG4gICAgVHJhbnNpdGlvbi5zdGFydChpbmRleCwgZnVuY3Rpb24gKCkge1xuICAgICAgc2V0KElETEUpO1xuICAgICAgZW1pdChFVkVOVF9NT1ZFRCwgaW5kZXgsIHByZXYsIGRlc3QpO1xuICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bXAoaW5kZXgpIHtcbiAgICB0cmFuc2xhdGUodG9Qb3NpdGlvbihpbmRleCwgdHJ1ZSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHBvc2l0aW9uLCBwcmV2ZW50TG9vcCkge1xuICAgIGlmICghU3BsaWRlMi5pcyhGQURFKSkge1xuICAgICAgdmFyIGRlc3RpbmF0aW9uID0gcHJldmVudExvb3AgPyBwb3NpdGlvbiA6IGxvb3AocG9zaXRpb24pO1xuICAgICAgc3R5bGUobGlzdCwgXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGVcIiArIHJlc29sdmUoXCJYXCIpICsgXCIoXCIgKyBkZXN0aW5hdGlvbiArIFwicHgpXCIpO1xuICAgICAgcG9zaXRpb24gIT09IGRlc3RpbmF0aW9uICYmIGVtaXQoRVZFTlRfU0hJRlRFRCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbG9vcChwb3NpdGlvbikge1xuICAgIGlmIChTcGxpZGUyLmlzKExPT1ApKSB7XG4gICAgICB2Y
3XIgaW5kZXggPSB0b0luZGV4KHBvc2l0aW9uKTtcbiAgICAgIHZhciBleGNlZWRlZE1heCA9IGluZGV4ID4gQ29tcG9uZW50czIuQ29udHJvbGxlci5nZXRFbmQoKTtcbiAgICAgIHZhciBleGNlZWRlZE1pbiA9IGluZGV4IDwgMDtcblxuICAgICAgaWYgKGV4Y2VlZGVkTWluIHx8IGV4Y2VlZGVkTWF4KSB7XG4gICAgICAgIHBvc2l0aW9uID0gc2hpZnQocG9zaXRpb24sIGV4Y2VlZGVkTWF4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICBmdW5jdGlvbiBzaGlmdChwb3NpdGlvbiwgYmFja3dhcmRzKSB7XG4gICAgdmFyIGV4Y2VzcyA9IHBvc2l0aW9uIC0gZ2V0TGltaXQoYmFja3dhcmRzKTtcbiAgICB2YXIgc2l6ZSA9IHNsaWRlclNpemUoKTtcbiAgICBwb3NpdGlvbiAtPSBvcmllbnQoc2l6ZSAqIChjZWlsKGFicyhleGNlc3MpIC8gc2l6ZSkgfHwgMSkpICogKGJhY2t3YXJkcyA/IDEgOiAtMSk7XG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIHRyYW5zbGF0ZShnZXRQb3NpdGlvbigpLCB0cnVlKTtcbiAgICBUcmFuc2l0aW9uLmNhbmNlbCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9JbmRleChwb3NpdGlvbikge1xuICAgIHZhciBTbGlkZXMgPSBDb21wb25lbnRzMi5TbGlkZXMuZ2V0KCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgU2xpZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
3XIgc2xpZGVJbmRleCA9IFNsaWRlc1tpXS5pbmRleDtcbiAgICAgIHZhciBkaXN0YW5jZSA9IGFicyh0b1Bvc2l0aW9uKHNsaWRlSW5kZXgsIHRydWUpIC0gcG9zaXRpb24pO1xuXG4gICAgICBpZiAoZGlzdGFuY2UgPD0gbWluRGlzdGFuY2UpIHtcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgICAgaW5kZXggPSBzbGlkZUluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgZnVuY3Rpb24gdG9Qb3NpdGlvbihpbmRleCwgdHJpbW1pbmcpIHtcbiAgICB2YXIgcG9zaXRpb24gPSBvcmllbnQodG90YWxTaXplKGluZGV4IC0gMSkgLSBvZmZzZXQoaW5kZXgpKTtcbiAgICByZXR1cm4gdHJpbW1pbmcgPyB0cmltKHBvc2l0aW9uKSA6IHBvc2l0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0UG9zaXRpb24oKSB7XG4gICAgdmFyIGxlZnQgPSByZXNvbHZlKFwibGVmdFwiKTtcbiAgICByZXR1cm4gcmVjdChsaXN0KVtsZWZ0XSAtIHJlY3QodHJhY2spW2xlZnRdICsgb3JpZW50KGdldFBhZGRpbmcoZmFsc2UpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyaW0ocG9zaXRpb24pIHtcbiAgICBpZiAob3B0aW9ucy50cmltU3BhY2UgJiYgU3BsaWRlMi5pcyhTTElERSkpIHtcbiAgICAgIHBvc2l0aW9uID0gY2xhbXAocG9zaXRpb24sIDAsIG9yaWVudChzbGlkZXJTaXplKHRydWUpIC0gbGlzdFNpemUoKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9mZnNldChpbmRleCkge1xuICAgIHZhciBmb2N1cyA9IG9wdGlvbnMuZm9jdXM7XG4gICAgcmV0dXJuIGZvY3VzID09PSBcImNlbnRlclwiID8gKGxpc3RTaXplKCkgLSBzbGlkZVNpemUoaW5kZXgsIHRydWUpKSAvIDIgOiArZm9jdXMgKiBzbGlkZVNpemUoaW5kZXgpIHx8IDA7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRMaW1pdChtYXgpIHtcbiAgICByZXR1cm4gdG9Qb3NpdGlvbihtYXggPyBDb21wb25lbnRzMi5Db250cm9sbGVyLmdldEVuZCgpIDogMCwgISFvcHRpb25zLnRyaW1TcGFjZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5TaGlmdChiYWNrd2FyZHMpIHtcbiAgICB2YXIgc2hpZnRlZCA9IG9yaWVudChzaGlmdChnZXRQb3NpdGlvbigpLCBiYWNrd2FyZHMpKTtcbiAgICByZXR1cm4gYmFja3dhcmRzID8gc2hpZnRlZCA+PSAwIDogc2hpZnRlZCA8PSBsaXN0W3Jlc29sdmUoXCJzY3JvbGxXaWR0aFwiKV0gLSByZWN0KHRyYWNrKVtyZXNvbHZlKFwid2lkdGhcIildO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhjZWVkZWRMaW1pdChtYXgsIHBvc2l0aW9uKSB7XG4gICAgcG9zaXRpb24gPSBpc1VuZGVmaW5lZChwb3NpdGlvbikgPyBnZXRQb3NpdGlvbigpIDogcG9zaXRpb247XG4gICAgdmFyIGV4Y2VlZGVkTWluID0gbWF4ICE9PSB0cnVlICYmIG9yaWVudChwb3NpdGlvbikgPCBvcmllbnQoZ2V0TGltaXQoZmFsc2UpKTtcbiAgICB2YXIgZXhjZWVkZWRNYXggPSBtYXggIT09IGZhbHNlICYmIG9yaWVudChwb3NpdGlvbikgPiBvcmllbnQoZ2V0TGltaXQodHJ1ZSkpO1xuICAgIHJldHVybiBleGNlZWRlZE1pbiB8fCBleGNlZWRlZE1heDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIG1vdmU6IG1vdmUsXG4gICAganVtcDoganVtcCxcbiAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICBzaGlmdDogc2hpZnQsXG4gICAgY2FuY2VsOiBjYW5jZWwsXG4gICAgdG9JbmRleDogdG9JbmRleCxcbiAgICB0b1Bvc2l0aW9uOiB0b1Bvc2l0aW9uLFxuICAgIGdldFBvc2l0aW9uOiBnZXRQb3NpdGlvbixcbiAgICBnZXRMaW1pdDogZ2V0TGltaXQsXG4gICAgZXhjZWVkZWRMaW1pdDogZXhjZWVkZWRMaW1pdCxcbiAgICByZXBvc2l0aW9uOiByZXBvc2l0aW9uXG4gIH07XG59XG5cbmZ1bmN0aW9uIENvbnRyb2xsZXIoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTUgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlNS5vbixcbiAgICAgIGVtaXQgPSBfRXZlbnRJbnRlcmZhY2U1LmVtaXQ7XG5cbiAgdmFyIE1vdmUgPSBDb21wb25lbnRzMi5Nb3ZlO1xuICB2YXIgZ2V0UG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uLFxuICAgICAgZ2V0TGltaXQgPSBNb3ZlLmdldExpbWl0LFxuICAgICAgdG9Qb3NpdGlvbiA9IE1vdmUudG9Qb3NpdGlvbjtcbiAgdmFyIF9Db21wb25lbnRzMiRTbGlkZXMgPSBDb21wb25lbnRzMi5TbGlkZXMsXG4gICAgICBpc0Vub3VnaCA9IF9Db21wb25lbnRzMiRTbGlkZXMuaXNFbm91Z2gsXG4gICAgICBnZXRMZW5ndGggPSBfQ29tcG9uZW50czIkU2xpZGVzLmdldExlbmd0aDtcbiAgdmFyIG9taXRFbmQgPSBvcHRpb25zLm9taXRFbmQ7XG4gIHZhciBpc0xvb3AgPSBTcGxpZGUyLmlzKExPT1ApO1xuICB2YXIgaXNTbGlkZSA9IFNwbGlkZTIuaXMoU0xJREUpO1xuICB2YXIgZ2V0TmV4dCA9IGFwcGx5KGdldEFkamFjZW50LCBmYWxzZSk7XG4gIHZhciBnZXRQcmV2ID0gYXBwbHkoZ2V0QWRqYWNlbnQsIHRydWUpO1xuICB2YXIgY3VyckluZGV4ID0gb3B0aW9ucy5zdGFydCB8fCAwO1xuICB2YXIgZW5kSW5kZXg7XG4gIHZhciBwcmV2SW5kZXggPSBjdXJySW5kZXg7XG4gIHZhciBzbGlkZUNvdW50O1xuICB2YXIgcGVyTW92ZTtcbiAgdmFyIHBlclBhZ2U7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIG9uKFtFVkVOVF9VUERBVEVELCBFVkVOVF9SRUZSRVNILCBFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRF0sIGluaXQpO1xuICAgIG9uKEVWRU5UX1JFU0laRUQsIG9uUmVzaXplZCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHNsaWRlQ291bnQgPSBnZXRMZW5ndGgodHJ1ZSk7XG4gICAgcGVyTW92ZSA9IG9wdGlvbnMucGVyTW92ZTtcbiAgICBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlO1xuICAgIGVuZEluZGV4ID0gZ2V0RW5kKCk7XG4gICAgdmFyIGluZGV4ID0gY2xhbXAoY3VyckluZGV4LCAwLCBvbWl0RW5kID8gZW5kSW5kZXggOiBzbGlkZUNvdW50IC0gMSk7XG5cbiAgICBpZiAoaW5kZXggIT09IGN1cnJJbmRleCkge1xuICAgICAgY3VyckluZGV4ID0gaW5kZXg7XG4gICAgICBNb3ZlLnJlcG9zaXRpb24oKTtcbiAgICB9XG4gI
3H1cblxuICBmdW5jdGlvbiBvblJlc2l6ZWQoKSB7XG4gICAgaWYgKGVuZEluZGV4ICE9PSBnZXRFbmQoKSkge1xuICAgICAgZW1pdChFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ28oY29udHJvbCwgYWxsb3dTYW1lSW5kZXgsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFpc0J1c3koKSkge1xuICAgICAgdmFyIGRlc3QgPSBwYXJzZShjb250cm9sKTtcbiAgICAgIHZhciBpbmRleCA9IGxvb3AoZGVzdCk7XG5cbiAgICAgIGlmIChpbmRleCA+IC0xICYmIChhbGxvd1NhbWVJbmRleCB8fCBpbmRleCAhPT0gY3VyckluZGV4KSkge1xuICAgICAgICBzZXRJbmRleChpbmRleCk7XG4gICAgICAgIE1vdmUubW92ZShkZXN0LCBpbmRleCwgcHJldkluZGV4LCBjYWxsYmFjayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsKGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgc25hcCwgY2FsbGJhY2spIHtcbiAgICBDb21wb25lbnRzMi5TY3JvbGwuc2Nyb2xsKGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgc25hcCwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGluZGV4ID0gbG9vcChNb3ZlLnRvSW5kZXgoZ2V0UG9zaXRpb24oKSkpO1xuICAgICAgc2V0SW5kZXgob21pdEVuZCA/IG1pbihpbmRleCwgZW5kSW5kZXgpIDogaW5kZXgpO1xuICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlKGNvbnRyb2wpIHtcbiAgICB2YXIgaW5kZXggPSBjdXJySW5kZXg7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29udHJvbCkpIHtcbiAgICAgIHZhciBfcmVmID0gY29udHJvbC5tYXRjaCgvKFsrXFwtPD5dKShcXGQrKT8vKSB8fCBbXSxcbiAgICAgICAgICBpbmRpY2F0b3IgPSBfcmVmWzFdLFxuICAgICAgICAgIG51bWJlciA9IF9yZWZbMl07XG5cbiAgICAgIGlmIChpbmRpY2F0b3IgPT09IFwiK1wiIHx8IGluZGljYXRvciA9PT0gXCItXCIpIHtcbiAgICAgICAgaW5kZXggPSBjb21wdXRlRGVzdEluZGV4KGN1cnJJbmRleCArICsoXCJcIiArIGluZGljYXRvciArICgrbnVtYmVyIHx8IDEpKSwgY3VyckluZGV4KTtcbiAgICAgIH0gZWxzZSBpZiAoaW5kaWNhdG9yID09PSBcIj5cIikge1xuICAgICAgICBpbmRleCA9IG51bWJlciA/IHRvSW5kZXgoK251bWJlcikgOiBnZXROZXh0KHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChpbmRpY2F0b3IgPT09IFwiPFwiKSB7XG4gICAgICAgIGluZGV4ID0gZ2V0UHJldih0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXggPSBpc0xvb3AgPyBjb250cm9sIDogY2xhbXAoY29udHJvbCwgMCwgZW5kSW5kZXgpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEFkamFjZW50KHByZXYsIGRlc3RpbmF0aW9uKSB7XG4gICAgdmFyIG51bWJlciA9IHBlck1vdmUgfHwgKGhhc0ZvY3VzKCkgPyAxIDogcGVyUGFnZSk7XG4gICAgdmFyIGRlc3QgPSBjb21wdXRlRGVzdEluZGV4KGN1cnJJbmRleCArIG51bWJlciAqIChwcmV2ID8gLTEgOiAxKSwgY3VyckluZGV4LCAhKHBlck1vdmUgfHwgaGFzRm9jdXMoKSkpO1xuXG4gICAgaWYgKGRlc3QgPT09IC0xICYmIGlzU2xpZGUpIHtcbiAgICAgIGlmICghYXBwcm94aW1hdGVseUVxdWFsKGdldFBvc2l0aW9uKCksIGdldExpbWl0KCFwcmV2KSwgMSkpIHtcbiAgICAgICAgcmV0dXJuIHByZXYgPyAwIDogZW5kSW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc3RpbmF0aW9uID8gZGVzdCA6IGxvb3AoZGVzdCk7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlRGVzdEluZGV4KGRlc3QsIGZyb20sIHNuYXBQYWdlKSB7XG4gICAgaWYgKGlzRW5vdWdoKCkgfHwgaGFzRm9jdXMoKSkge1xuICAgICAgdmFyIGluZGV4ID0gY29tcHV0ZU1vdmFibGVEZXN0SW5kZXgoZGVzdCk7XG5cbiAgICAgIGlmIChpbmRleCAhPT0gZGVzdCkge1xuICAgICAgICBmcm9tID0gZGVzdDtcbiAgICAgICAgZGVzdCA9IGluZGV4O1xuICAgICAgICBzbmFwUGFnZSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVzdCA8IDAgfHwgZGVzdCA+IGVuZEluZGV4KSB7XG4gICAgICAgIGlmICghcGVyTW92ZSAmJiAoYmV0d2VlbigwLCBkZXN0LCBmcm9tLCB0cnVlKSB8fCBiZXR3ZWVuKGVuZEluZGV4LCBmcm9tLCBkZXN0LCB0cnVlKSkpIHtcbiAgICAgICAgICBkZXN0ID0gdG9JbmRleCh0b1BhZ2UoZGVzdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0xvb3ApIHtcbiAgICAgICAgICAgIGRlc3QgPSBzbmFwUGFnZSA/IGRlc3QgPCAwID8gLShzbGlkZUNvdW50ICUgcGVyUGFnZSB8fCBwZXJQYWdlKSA6IHNsaWRlQ291bnQgOiBkZXN0O1xuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5yZXdpbmQpIHtcbiAgICAgICAgICAgIGRlc3QgPSBkZXN0IDwgMCA/IGVuZEluZGV4IDogMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVzdCA9IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNuYXBQYWdlICYmIGRlc3QgIT09IGZyb20pIHtcbiAgICAgICAgICBkZXN0ID0gdG9JbmRleCh0b1BhZ2UoZnJvbSkgKyAoZGVzdCA8IGZyb20gPyAtMSA6IDEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZXN0ID0gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc3Q7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlTW92YWJsZURlc3RJbmRleChkZXN0KSB7XG4gICAgaWYgKGlzU2xpZGUgJiYgb3B0aW9ucy50cmltU3BhY2UgPT09IFwibW92ZVwiICYmIGRlc3QgIT09IGN1cnJJbmRleCkge1xuICAgICAgdmFyIHBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKTtcblxuICAgICAgd2hpbGUgKHBvc2l0aW9uID09PSB0b1Bvc2l0aW9uKGRlc3QsIHRydWUpICYmIGJldHdlZW4oZGVzdCwgMCwgU3BsaWRlMi5sZW5ndGggLSAxLCAhb3B0aW9ucy5yZXdpbmQpKSB7XG4gICAgICAgIGRlc3QgPCBjdXJySW5kZXggPyAtLWRlc3QgOiArK2Rlc3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc3Q7XG4gIH1cblxuICBmdW5jdGlvbiBsb29wKGluZGV4KSB7XG4gICAgcmV0dXJuIGlzTG9vcCA/IChpbmRleCArIHNsaWRlQ291bnQpICUgc2xpZGVDb3VudCB8fCAwIDogaW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRFbmQoKSB7XG4gICAgdmFyIGVuZCA9IHNsaWRlQ291bnQgLSAoaGFzRm9jdXMoKSB8fCBpc0xvb3AgJiYgcGVyTW92ZSA/IDEgOiBwZXJQYWdlKTtcblxuICAgI
3HdoaWxlIChvbWl0RW5kICYmIGVuZC0tID4gMCkge1xuICAgICAgaWYgKHRvUG9zaXRpb24oc2xpZGVDb3VudCAtIDEsIHRydWUpICE9PSB0b1Bvc2l0aW9uKGVuZCwgdHJ1ZSkpIHtcbiAgICAgICAgZW5kKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFtcChlbmQsIDAsIHNsaWRlQ291bnQgLSAxKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvSW5kZXgocGFnZSkge1xuICAgIHJldHVybiBjbGFtcChoYXNGb2N1cygpID8gcGFnZSA6IHBlclBhZ2UgKiBwYWdlLCAwLCBlbmRJbmRleCk7XG4gIH1cblxuICBmdW5jdGlvbiB0b1BhZ2UoaW5kZXgpIHtcbiAgICByZXR1cm4gaGFzRm9jdXMoKSA/IG1pbihpbmRleCwgZW5kSW5kZXgpIDogZmxvb3IoKGluZGV4ID49IGVuZEluZGV4ID8gc2xpZGVDb3VudCAtIDEgOiBpbmRleCkgLyBwZXJQYWdlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvRGVzdChkZXN0aW5hdGlvbikge1xuICAgIHZhciBjbG9zZXN0ID0gTW92ZS50b0luZGV4KGRlc3RpbmF0aW9uKTtcbiAgICByZXR1cm4gaXNTbGlkZSA/IGNsYW1wKGNsb3Nlc3QsIDAsIGVuZEluZGV4KSA6IGNsb3Nlc3Q7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRJbmRleChpbmRleCkge1xuICAgIGlmIChpbmRleCAhPT0gY3VyckluZGV4KSB7XG4gICAgICBwcmV2SW5kZXggPSBjdXJySW5kZXg7XG4gICAgICBjdXJySW5kZXggPSBpbmRleDtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRJbmRleChwcmV2KSB7XG4gICAgcmV0dXJuIHByZXYgPyBwcmV2SW5kZXggOiBjdXJySW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBoYXNGb2N1cygpIHtcbiAgICByZXR1cm4gIWlzVW5kZWZpbmVkKG9wdGlvbnMuZm9jdXMpIHx8IG9wdGlvbnMuaXNOYXZpZ2F0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNCdXN5KCkge1xuICAgIHJldHVybiBTcGxpZGUyLnN0YXRlLmlzKFtNT1ZJTkcsIFNDUk9MTElOR10pICYmICEhb3B0aW9ucy53YWl0Rm9yVHJhbnNpdGlvbjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGdvOiBnbyxcbiAgICBzY3JvbGw6IHNjcm9sbCxcbiAgICBnZXROZXh0OiBnZXROZXh0LFxuICAgIGdldFByZXY6IGdldFByZXYsXG4gICAgZ2V0QWRqYWNlbnQ6IGdldEFkamFjZW50LFxuICAgIGdldEVuZDogZ2V0RW5kLFxuICAgIHNldEluZGV4OiBzZXRJbmRleCxcbiAgICBnZXRJbmRleDogZ2V0SW5kZXgsXG4gICAgdG9JbmRleDogdG9JbmRleCxcbiAgICB0b1BhZ2U6IHRvUGFnZSxcbiAgICB0b0Rlc3Q6IHRvRGVzdCxcbiAgICBoYXNGb2N1czogaGFzRm9jdXMsXG4gICAgaXNCdXN5OiBpc0J1c3lcbiAgfTtcbn1cblxudmFyIFhNTF9OQU1FX1NQQUNFID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xudmFyIFBBVEggPSBcIm0xNS41IDAuOTMyLTQuMyA0LjM4IDE0LjUgMTQuNi0xNC41IDE0LjUgNC4zIDQuNCAxNC42LTE0LjYgNC40LTQuMy00LjQtNC40LTE0LjYtMTQuNnpcIjtcbnZhciBTSVpFID0gNDA7XG5cbmZ1bmN0aW9uIEFycm93cyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgdmFyIG9uID0gZXZlbnQub24sXG4gICAgICBiaW5kID0gZXZlbnQuYmluZCxcbiAgICAgIGVtaXQgPSBldmVudC5lbWl0O1xuICB2YXIgY2xhc3NlcyA9IG9wdGlvbnMuY2xhc3NlcyxcbiAgICAgIGkxOG4gPSBvcHRpb25zLmkxOG47XG4gIHZhciBFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgQ29udHJvbGxlciA9IENvbXBvbmVudHMyLkNvbnRyb2xsZXI7XG4gIHZhciBwbGFjZWhvbGRlciA9IEVsZW1lbnRzLmFycm93cyxcbiAgICAgIHRyYWNrID0gRWxlbWVudHMudHJhY2s7XG4gIHZhciB3cmFwcGVyID0gcGxhY2Vob2xkZXI7XG4gIHZhciBwcmV2ID0gRWxlbWVudHMucHJldjtcbiAgdmFyIG5leHQgPSBFbGVtZW50cy5uZXh0O1xuICB2YXIgY3JlYXRlZDtcbiAgdmFyIHdyYXBwZXJDbGFzc2VzO1xuICB2YXIgYXJyb3dzID0ge307XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIG9uKEVWRU5UX1VQREFURUQsIHJlbW91bnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3VudCgpIHtcbiAgICBkZXN0cm95KCk7XG4gICAgbW91bnQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdmFyIGVuYWJsZWQgPSBvcHRpb25zLmFycm93cztcblxuICAgIGlmIChlbmFibGVkICYmICEocHJldiAmJiBuZXh0KSkge1xuICAgICAgY3JlYXRlQXJyb3dzKCk7XG4gICAgfVxuXG4gICAgaWYgKHByZXYgJiYgbmV4dCkge1xuICAgICAgYXNzaWduKGFycm93cywge1xuICAgICAgICBwcmV2OiBwcmV2LFxuICAgICAgICBuZXh0OiBuZXh0XG4gICAgICB9KTtcbiAgICAgIGRpc3BsYXkod3JhcHBlciwgZW5hYmxlZCA/IFwiXCIgOiBcIm5vbmVcIik7XG4gICAgICBhZGRDbGFzcyh3cmFwcGVyLCB3cmFwcGVyQ2xhc3NlcyA9IENMQVNTX0FSUk9XUyArIFwiLS1cIiArIG9wdGlvbnMuZGlyZWN0aW9uKTtcblxuICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgbGlzdGVuKCk7XG4gICAgICAgIHVwZGF0ZSgpO1xuICAgICAgICBzZXRBdHRyaWJ1dGUoW3ByZXYsIG5leHRdLCBBUklBX0NPTlRST0xTLCB0cmFjay5pZCk7XG4gICAgICAgIGVtaXQoRVZFTlRfQVJST1dTX01PVU5URUQsIHByZXYsIG5leHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgZXZlbnQuZGVzdHJveSgpO1xuICAgIHJlbW92ZUNsYXNzKHdyYXBwZXIsIHdyYXBwZXJDbGFzc2VzKTtcblxuICAgIGlmIChjcmVhdGVkKSB7XG4gICAgICByZW1vdmUocGxhY2Vob2xkZXIgPyBbcHJldiwgbmV4dF0gOiB3cmFwcGVyKTtcbiAgICAgIHByZXYgPSBuZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQXR0cmlidXRlKFtwcmV2LCBuZXh0XSwgQUxMX0FUVFJJQlVURVMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RlbigpIHtcbiAgICBvbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfTU9WRUQsIEVWRU5UX1JFRlJFU0gsIEVWRU5UX1NDUk9MTEVELCBFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRF0sIHVwZGF0ZSk7XG4gICAgYmluZChuZXh0LCBcImNsaWNrXCIsIGFwcGx5KGdvLCBcIj5cIikpO1xuICAgIGJpbmQocHJldiwgXCJjbGlja1wiLCBhcHBseShnbywgXCI8XCIpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvKGNvbnRyb2wpIHtcbiAgICBDb250cm9sbGVyLmdvKGNvbnRyb2wsIHRydWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQXJyb3dzKCkge1xuICAgIHdyYXBwZXIgPSBwbGFjZWhvbGRlciB8fCBjcmVhdGUoXCJkaXZcIiwgY2xhc3Nlcy5hcnJvd3MpO1xuICAgIHByZXYgPSBjcmVhdGVBcnJvdyh0cnVlKTtcbiAgICBuZXh0ID0gY3JlYXRlQXJyb3coZmFsc2UpO1xuICAgIGNyZWF0ZWQgPSB0cnVlO1xuICAgIGFwcGVuZCh3cmFwcGVyLCBbcHJldiwgbmV4dF0pO1xuICAgICFwbGFjZWhvbGRlciAmJiBiZWZvcmUo
3d3JhcHBlciwgdHJhY2spO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQXJyb3cocHJldjIpIHtcbiAgICB2YXIgYXJyb3cgPSBcIjxidXR0b24gY2xhc3M9XFxcIlwiICsgY2xhc3Nlcy5hcnJvdyArIFwiIFwiICsgKHByZXYyID8gY2xhc3Nlcy5wcmV2IDogY2xhc3Nlcy5uZXh0KSArIFwiXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiPjxzdmcgeG1sbnM9XFxcIlwiICsgWE1MX05BTUVfU1BBQ0UgKyBcIlxcXCIgdmlld0JveD1cXFwiMCAwIFwiICsgU0laRSArIFwiIFwiICsgU0laRSArIFwiXFxcIiB3aWR0aD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiPjxwYXRoIGQ9XFxcIlwiICsgKG9wdGlvbnMuYXJyb3dQYXRoIHx8IFBBVEgpICsgXCJcXFwiIC8+XCI7XG4gICAgcmV0dXJuIHBhcnNlSHRtbChhcnJvdyk7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHByZXYgJiYgbmV4dCkge1xuICAgICAgdmFyIGluZGV4ID0gU3BsaWRlMi5pbmRleDtcbiAgICAgIHZhciBwcmV2SW5kZXggPSBDb250cm9sbGVyLmdldFByZXYoKTtcbiAgICAgIHZhciBuZXh0SW5kZXggPSBDb250cm9sbGVyLmdldE5leHQoKTtcbiAgICAgIHZhciBwcmV2TGFiZWwgPSBwcmV2SW5kZXggPiAtMSAmJiBpbmRleCA8IHByZXZJbmRleCA/IGkxOG4ubGFzdCA6IGkxOG4ucHJldjtcbiAgICAgIHZhciBuZXh0TGFiZWwgPSBuZXh0SW5kZXggPiAtMSAmJiBpbmRleCA+IG5leHRJbmRleCA/IGkxOG4uZmlyc3QgOiBpMThuLm5leHQ7XG4gICAgICBwcmV2LmRpc2FibGVkID0gcHJldkluZGV4IDwgMDtcbiAgICAgIG5leHQuZGlzYWJsZWQgPSBuZXh0SW5kZXggPCAwO1xuICAgICAgc2V0QXR0cmlidXRlKHByZXYsIEFSSUFfTEFCRUwsIHByZXZMYWJlbCk7XG4gICAgICBzZXRBdHRyaWJ1dGUobmV4dCwgQVJJQV9MQUJFTCwgbmV4dExhYmVsKTtcbiAgICAgIGVtaXQoRVZFTlRfQVJST1dTX1VQREFURUQsIHByZXYsIG5leHQsIHByZXZJbmRleCwgbmV4dEluZGV4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFycm93czogYXJyb3dzLFxuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIHVwZGF0ZTogdXBkYXRlXG4gIH07XG59XG5cbnZhciBJTlRFUlZBTF9EQVRBX0FUVFJJQlVURSA9IERBVEFfQVRUUklCVVRFICsgXCItaW50ZXJ2YWxcIjtcblxuZnVuY3Rpb24gQXV0b3BsYXkoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTYgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlNi5vbixcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2U2LmJpbmQsXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlNi5lbWl0O1xuXG4gIHZhciBpbnRlcnZhbCA9IFJlcXVlc3RJbnRlcnZhbChvcHRpb25zLmludGVydmFsLCBTcGxpZGUyLmdvLmJpbmQoU3BsaWRlMiwgXCI+XCIpLCBvbkFuaW1hdGlvbkZyYW1lKTtcbiAgdmFyIGlzUGF1c2VkID0gaW50ZXJ2YWwuaXNQYXVzZWQ7XG4gIHZhciBFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgX0NvbXBvbmVudHMyJEVsZW1lbnRzNCA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgcm9vdCA9IF9Db21wb25lbnRzMiRFbGVtZW50czQucm9vdCxcbiAgICAgIHRvZ2dsZSA9IF9Db21wb25lbnRzMiRFbGVtZW50czQudG9nZ2xlO1xuICB2YXIgYXV0b3BsYXkgPSBvcHRpb25zLmF1dG9wbGF5O1xuICB2YXIgaG92ZXJlZDtcbiAgdmFyIGZvY3VzZWQ7XG4gIHZhciBzdG9wcGVkID0gYXV0b3BsYXkgPT09IFwicGF1c2VcIjtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpZiAoYXV0b3BsYXkpIHtcbiAgICAgIGxpc3RlbigpO1xuICAgICAgdG9nZ2xlICYmIHNldEF0dHJpYnV0ZSh0b2dnbGUsIEFSSUFfQ09OVFJPTFMsIEVsZW1lbnRzLnRyYWNrLmlkKTtcbiAgICAgIHN0b3BwZWQgfHwgcGxheSgpO1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKCkge1xuICAgIGlmIChvcHRpb25zLnBhdXNlT25Ib3Zlcikge1xuICAgICAgYmluZChyb290LCBcIm1vdXNlZW50ZXIgbW91c2VsZWF2ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBob3ZlcmVkID0gZS50eXBlID09PSBcIm1vdXNlZW50ZXJcIjtcbiAgICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGF1c2VPbkZvY3VzKSB7XG4gICAgICBiaW5kKHJvb3QsIFwiZm9jdXNpbiBmb2N1c291dFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBmb2N1c2VkID0gZS50eXBlID09PSBcImZvY3VzaW5cIjtcbiAgICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRvZ2dsZSkge1xuICAgICAgYmluZCh0b2dnbGUsIFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBzdG9wcGVkID8gcGxheSgpIDogcGF1c2UodHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBvbihbRVZFTlRfTU9WRSwgRVZFTlRfU0NST0xMLCBFVkVOVF9SRUZSRVNIXSwgaW50ZXJ2YWwucmV3aW5kKTtcbiAgICBvbihFVkVOVF9NT1ZFLCBvbk1vdmUpO1xuICB9XG5cbiAgZnVuY3Rpb24gcGxheSgpIHtcbiAgICBpZiAoaXNQYXVzZWQoKSAmJiBDb21wb25lbnRzMi5TbGlkZXMuaXNFbm91Z2goKSkge1xuICAgICAgaW50ZXJ2YWwuc3RhcnQoIW9wdGlvbnMucmVzZXRQcm9ncmVzcyk7XG4gICAgICBmb2N1c2VkID0gaG92ZXJlZCA9IHN0b3BwZWQgPSBmYWxzZTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgZW1pdChFVkVOVF9BVVRPUExBWV9QTEFZKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXVzZShzdG9wKSB7XG4gICAgaWYgKHN0b3AgPT09IHZvaWQgMCkge1xuICAgICAgc3RvcCA9IHRydWU7XG4gICAgfVxuXG4gICAgc3RvcHBlZCA9ICEhc3RvcDtcbiAgICB1cGRhdGUoKTtcblxuICAgIGlmICghaXNQYXVzZWQoKSkge1xuICAgICAgaW50ZXJ2YWwucGF1c2UoKTtcbiAgICAgIGVtaXQoRVZFTlRfQVVUT1BMQVlfUEFVU0UpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGF1dG9Ub2dnbGUoKSB7XG4gICAgaWYgKCFzdG9wcGVkKSB7XG4gICAgICBob3ZlcmVkIHx8IGZvY3VzZWQgPyBwYXVzZShmYWxzZSkgOiBwbGF5KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmICh0b2dnbGUpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKHRvZ2dsZSwgQ0xBU1NfQUNUSVZFLCAhc3RvcHBlZCk7XG4gICAgICBzZXRBdHRyaWJ1dGUodG9nZ2xlLCBBUklBX0xBQkVMLCBvcHRpb25zLmkxOG5bc3RvcHBlZCA/IFwicGxheVwiIDogXCJwYXVzZVwiXSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25BbmltYXRpb25GcmFtZShyYXRlKSB7XG4gICAgdmFyIGJhciA9IEVsZW1lbnRzLmJhcjtcbiAgICBiYXIgJiYgc3R5bGUoYmFyLCBcIndpZHRoXCIsIHJhdGUgKiAxMDAgKyBcIiVcIik7XG4gICAgZW1pdChFVkVOVF9BVVRPUExBWV9QTEFZSU5HLCByYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTW92ZShpbmRleCkge1xuICAgIHZhciBTbGlkZSA9IENvbXBvbmVudHMyLlNsaWRlcy5nZXRBdChpbmRleCk7XG4gICAgaW50ZXJ2YWwuc2V0KFNsaWRlICYmICtnZXR
3BdHRyaWJ1dGUoU2xpZGUuc2xpZGUsIElOVEVSVkFMX0RBVEFfQVRUUklCVVRFKSB8fCBvcHRpb25zLmludGVydmFsKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGludGVydmFsLmNhbmNlbCxcbiAgICBwbGF5OiBwbGF5LFxuICAgIHBhdXNlOiBwYXVzZSxcbiAgICBpc1BhdXNlZDogaXNQYXVzZWRcbiAgfTtcbn1cblxuZnVuY3Rpb24gQ292ZXIoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTcgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlNy5vbjtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpZiAob3B0aW9ucy5jb3Zlcikge1xuICAgICAgb24oRVZFTlRfTEFaWUxPQURfTE9BREVELCBhcHBseSh0b2dnbGUsIHRydWUpKTtcbiAgICAgIG9uKFtFVkVOVF9NT1VOVEVELCBFVkVOVF9VUERBVEVELCBFVkVOVF9SRUZSRVNIXSwgYXBwbHkoY292ZXIsIHRydWUpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjb3Zlcihjb3ZlcjIpIHtcbiAgICBDb21wb25lbnRzMi5TbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgIHZhciBpbWcgPSBjaGlsZChTbGlkZS5jb250YWluZXIgfHwgU2xpZGUuc2xpZGUsIFwiaW1nXCIpO1xuXG4gICAgICBpZiAoaW1nICYmIGltZy5zcmMpIHtcbiAgICAgICAgdG9nZ2xlKGNvdmVyMiwgaW1nLCBTbGlkZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b2dnbGUoY292ZXIyLCBpbWcsIFNsaWRlKSB7XG4gICAgU2xpZGUuc3R5bGUoXCJiYWNrZ3JvdW5kXCIsIGNvdmVyMiA/IFwiY2VudGVyL2NvdmVyIG5vLXJlcGVhdCB1cmwoXFxcIlwiICsgaW1nLnNyYyArIFwiXFxcIilcIiA6IFwiXCIsIHRydWUpO1xuICAgIGRpc3BsYXkoaW1nLCBjb3ZlcjIgPyBcIm5vbmVcIiA6IFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogYXBwbHkoY292ZXIsIGZhbHNlKVxuICB9O1xufVxuXG52YXIgQk9VTkNFX0RJRkZfVEhSRVNIT0xEID0gMTA7XG52YXIgQk9VTkNFX0RVUkFUSU9OID0gNjAwO1xudmFyIEZSSUNUSU9OX0ZBQ1RPUiA9IDAuNjtcbnZhciBCQVNFX1ZFTE9DSVRZID0gMS41O1xudmFyIE1JTl9EVVJBVElPTiA9IDgwMDtcblxuZnVuY3Rpb24gU2Nyb2xsKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2U4ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTgub24sXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlOC5lbWl0O1xuXG4gIHZhciBzZXQgPSBTcGxpZGUyLnN0YXRlLnNldDtcbiAgdmFyIE1vdmUgPSBDb21wb25lbnRzMi5Nb3ZlO1xuICB2YXIgZ2V0UG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uLFxuICAgICAgZ2V0TGltaXQgPSBNb3ZlLmdldExpbWl0LFxuICAgICAgZXhjZWVkZWRMaW1pdCA9IE1vdmUuZXhjZWVkZWRMaW1pdCxcbiAgICAgIHRyYW5zbGF0ZSA9IE1vdmUudHJhbnNsYXRlO1xuICB2YXIgaXNTbGlkZSA9IFNwbGlkZTIuaXMoU0xJREUpO1xuICB2YXIgaW50ZXJ2YWw7XG4gIHZhciBjYWxsYmFjaztcbiAgdmFyIGZyaWN0aW9uID0gMTtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBvbihFVkVOVF9NT1ZFLCBjbGVhcik7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0hdLCBjYW5jZWwpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsKGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgc25hcCwgb25TY3JvbGxlZCwgbm9Db25zdHJhaW4pIHtcbiAgICB2YXIgZnJvbSA9IGdldFBvc2l0aW9uKCk7XG4gICAgY2xlYXIoKTtcblxuICAgIGlmIChzbmFwICYmICghaXNTbGlkZSB8fCAhZXhjZWVkZWRMaW1pdCgpKSkge1xuICAgICAgdmFyIHNpemUgPSBDb21wb25lbnRzMi5MYXlvdXQuc2xpZGVyU2l6ZSgpO1xuICAgICAgdmFyIG9mZnNldCA9IHNpZ24oZGVzdGluYXRpb24pICogc2l6ZSAqIGZsb29yKGFicyhkZXN0aW5
3hdGlvbikgLyBzaXplKSB8fCAwO1xuICAgICAgZGVzdGluYXRpb24gPSBNb3ZlLnRvUG9zaXRpb24oQ29tcG9uZW50czIuQ29udHJvbGxlci50b0Rlc3QoZGVzdGluYXRpb24gJSBzaXplKSkgKyBvZmZzZXQ7XG4gICAgfVxuXG4gICAgdmFyIG5vRGlzdGFuY2UgPSBhcHByb3hpbWF0ZWx5RXF1YWwoZnJvbSwgZGVzdGluYXRpb24sIDEpO1xuICAgIGZyaWN0aW9uID0gMTtcbiAgICBkdXJhdGlvbiA9IG5vRGlzdGFuY2UgPyAwIDogZHVyYXRpb24gfHwgbWF4KGFicyhkZXN0aW5hdGlvbiAtIGZyb20pIC8gQkFTRV9WRUxPQ0lUWSwgTUlOX0RVUkFUSU9OKTtcbiAgICBjYWxsYmFjayA9IG9uU2Nyb2xsZWQ7XG4gICAgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoZHVyYXRpb24sIG9uRW5kLCBhcHBseSh1cGRhdGUsIGZyb20sIGRlc3RpbmF0aW9uLCBub0NvbnN0cmFpbiksIDEpO1xuICAgIHNldChTQ1JPTExJTkcpO1xuICAgIGVtaXQoRVZFTlRfU0NST0xMKTtcbiAgICBpbnRlcnZhbC5zdGFydCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25FbmQoKSB7XG4gICAgc2V0KElETEUpO1xuICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKCk7XG4gICAgZW1pdChFVkVOVF9TQ1JPTExFRCk7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoZnJvbSwgdG8sIG5vQ29uc3RyYWluLCByYXRlKSB7XG4gICAgdmFyIHBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKTtcbiAgICB2YXIgdGFyZ2V0ID0gZnJvbSArICh0byAtIGZyb20pICogZWFzaW5nKHJhdGUpO1xuICAgIHZhciBkaWZmID0gKHRhcmdldCAtIHBvc2l0aW9uKSAqIGZyaWN0aW9uO1xuICAgIHRyYW5zbGF0ZShwb3NpdGlvbiArIGRpZmYpO1xuXG4gICAgaWYgKGlzU2xpZGUgJiYgIW5vQ29uc3RyYWluICYmIGV4Y2VlZGVkTGltaXQoKSkge1xuICAgICAgZnJpY3Rpb24gKj0gRlJJQ1RJT05fRkFDVE9SO1xuXG4gICAgICBpZiAoYWJzKGRpZmYpIDwgQk9VTkNFX0RJRkZfVEhSRVNIT0xEKSB7XG4gICAgICAgIHNjcm9sbChnZXRMaW1pdChleGNlZWRlZExpbWl0KHRydWUpKSwgQk9VTkNFX0RVUkFUSU9OLCBmYWxzZSwgY2FsbGJhY2ssIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgIGlmIChpbnRlcnZhbCkge1xuICAgICAgaW50ZXJ2YWwuY2FuY2VsKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmIChpbnRlcnZhbCAmJiAhaW50ZXJ2YWwuaXNQYXVzZWQoKSkge1xuICAgICAgY2xlYXIoKTtcbiAgICAgIG9uRW5kKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZWFzaW5nKHQpIHtcbiAgICB2YXIgZWFzaW5nRnVuYyA9IG9wdGlvbnMuZWFzaW5nRnVuYztcbiAgICByZXR1cm4gZWFzaW5nRnVuYyA/IGVhc2luZ0Z1bmModCkgOiAxIC0gTWF0aC5wb3coMSAtIHQsIDQpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogY2xlYXIsXG4gICAgc2Nyb2xsOiBzY3JvbGwsXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn1cblxudmFyIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TID0ge1xuICBwYXNzaXZlOiBmYWxzZSxcbiAgY2FwdHVyZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gRHJhZyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlOSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2U5Lm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTkuZW1pdCxcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2U5LmJpbmQsXG4gICAgICB1bmJpbmQgPSBfRXZlbnRJbnRlcmZhY2U5LnVuYmluZDtcblxuICB2YXIgc3RhdGUgPSBTcGxpZGUyLnN0YXRlO1xuICB2YXIgTW92ZSA9IENvbXBvbmVudHMyLk1vdmUsXG4gICAgICBTY3JvbGwgPSBDb21wb25lbnRzMi5TY3JvbGwsXG4gICAgICBDb250cm9sbGVyID0gQ29tcG9uZW50czIuQ29udHJvbGxlcixcbiAgICAgIHRyYWNrID0gQ29tcG9uZW50czIuRWxlbWVudHMudHJhY2ssXG4gICAgICByZWR1Y2UgPSBDb21wb25lbnRzMi5NZWRpYS5yZWR1Y2U7XG4gIHZhciBfQ29tcG9uZW50czIkRGlyZWN0aW8yID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLFxuICAgICAgcmVzb2x2ZSA9IF9Db21wb25lbnRzMiREaXJlY3RpbzIucmVzb2x2ZSxcbiAgICAgIG9yaWVudCA9IF9Db21wb25lbnRzMiREaXJlY3RpbzIub3JpZW50O1xuICB2YXIgZ2V0UG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uLFxuICAgICAgZXhjZWVkZWRMaW1pdCA9IE1vdmUuZXhjZWVkZWRMaW1pdDtcbiAgdmFyIGJhc2VQb3NpdGlvbjtcbiAgdmFyIGJhc2VFdmVudDtcbiAgdmFyIHByZXZCYXNlRXZlbnQ7XG4gIHZhciBpc0ZyZWU7XG4gIHZhciBkcmFnZ2luZztcbiAgdmFyIGV4Y2VlZGVkID0gZmFsc2U7XG4gIHZhciBjbGlja1ByZXZlbn
3RlZDtcbiAgdmFyIGRpc2FibGVkO1xuICB2YXIgdGFyZ2V0O1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGJpbmQodHJhY2ssIFBPSU5URVJfTU9WRV9FVkVOVFMsIG5vb3AsIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TKTtcbiAgICBiaW5kKHRyYWNrLCBQT0lOVEVSX1VQX0VWRU5UUywgbm9vcCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgIGJpbmQodHJhY2ssIFBPSU5URVJfRE9XTl9FVkVOVFMsIG9uUG9pbnRlckRvd24sIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TKTtcbiAgICBiaW5kKHRyYWNrLCBcImNsaWNrXCIsIG9uQ2xpY2ssIHtcbiAgICAgIGNhcHR1cmU6IHRydWVcbiAgICB9KTtcbiAgICBiaW5kKHRyYWNrLCBcImRyYWdzdGFydFwiLCBwcmV2ZW50KTtcbiAgICBvbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfVVBEQVRFRF0sIGluaXQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgZHJhZyA9IG9wdGlvbnMuZHJhZztcbiAgICBkaXNhYmxlKCFkcmFnKTtcbiAgICBpc0ZyZWUgPSBkcmFnID09PSBcImZyZWVcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUG9pbnRlckRvd24oZSkge1xuICAgIGNsaWNrUHJldmVudGVkID0gZmFsc2U7XG5cbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICB2YXIgaXNUb3VjaCA9IGlzVG91Y2hFdmVudChlKTtcblxuICAgICAgaWYgKGlzRHJhZ2dhYmxlKGUudGFyZ2V0KSAmJiAoaXNUb3VjaCB8fCAhZS5idXR0b24pKSB7XG4gICAgICAgIGlmICghQ29udHJvbGxlci5pc0J1c3koKSkge1xuICAgICAgICAgIHRhcmdldCA9IGlzVG91Y2ggPyB0cmFjayA6IHdpbmRvdztcbiAgICAgICAgICBkcmFnZ2luZyA9IHN0YXRlLmlzKFtNT1ZJTkcsIFNDUk9MTElOR10pO1xuICAgICAgICAgIHByZXZCYXNlRXZlbnQgPSBudWxsO1xuICAgICAgICAgIGJpbmQodGFyZ2V0LCBQT0lOVEVSX01PVkVfRVZFTlRTLCBvblBvaW50ZXJNb3ZlLCBTQ1JPTExfTElTVEVORVJfT1BUSU9OUyk7XG4gICAgICAgICAgYmluZCh0YXJnZXQsIFBPSU5URVJfVVBfRVZFTlRTLCBvblBvaW50ZXJVcCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgICAgICAgIE1vdmUuY2FuY2VsKCk7XG4gICAgICAgICAgU2Nyb2xsLmNhbmNlbCgpO1xuICAgICAgICAgIHNhdmUoZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJldmVudChlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUG9pbnRlck1vdmUoZSkge1xuICAgIGlmICghc3RhdGUuaXMoRFJBR0dJTkcpKSB7XG4gICAgICBzdGF0ZS5zZXQoRFJBR0dJTkcpO1xuICAgICAgZW1pdChFVkVOVF9EUkFHKTtcbiAgICB9XG5cbiAgICBpZiAoZS5jYW5jZWxhYmxlKSB7XG4gICAgICBpZiAoZHJhZ2dpbmcpIHtcbiAgICAgICAgTW92ZS50cmFuc2xhdGUoYmFzZVBvc2l0aW9uICsgY29uc3RyYWluKGRpZmZDb29yZChlKSkpO1xuICAgICAgICB2Y
3XIgZXhwaXJlZCA9IGRpZmZUaW1lKGUpID4gTE9HX0lOVEVSVkFMO1xuICAgICAgICB2YXIgaGFzRXhjZWVkZWQgPSBleGNlZWRlZCAhPT0gKGV4Y2VlZGVkID0gZXhjZWVkZWRMaW1pdCgpKTtcblxuICAgICAgICBpZiAoZXhwaXJlZCB8fCBoYXNFeGNlZWRlZCkge1xuICAgICAgICAgIHNhdmUoZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjbGlja1ByZXZlbnRlZCA9IHRydWU7XG4gICAgICAgIGVtaXQoRVZFTlRfRFJBR0dJTkcpO1xuICAgICAgICBwcmV2ZW50KGUpO1xuICAgICAgfSBlbHNlIGlmIChpc1NsaWRlckRpcmVjdGlvbihlKSkge1xuICAgICAgICBkcmFnZ2luZyA9IHNob3VsZFN0YXJ0KGUpO1xuICAgICAgICBwcmV2ZW50KGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUG9pbnRlclVwKGUpIHtcbiAgICBpZiAoc3RhdGUuaXMoRFJBR0dJTkcpKSB7XG4gICAgICBzdGF0ZS5zZXQoSURMRSk7XG4gICAgICBlbWl0KEVWRU5UX0RSQUdHRUQpO1xuICAgIH1cblxuICAgIGlmIChkcmFnZ2luZykge1xuICAgICAgbW92ZShlKTtcbiAgICAgIHByZXZlbnQoZSk7XG4gICAgfVxuXG4gICAgdW5iaW5kKHRhcmdldCwgUE9JTlRFUl9NT1ZFX0VWRU5UUywgb25Qb2ludGVyTW92ZSk7XG4gICAgdW5iaW5kKHRhcmdldCwgUE9JTlRFUl9VUF9FVkVOVFMsIG9uUG9pbnRlclVwKTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gb25DbGljayhlKSB7XG4gICAgaWYgKCFkaXNhYmxlZCAmJiBjbGlja1ByZXZlbnRlZCkge1xuICAgICAgcHJldmVudChlLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlKGUpIHtcbiAgICBwcmV2QmFzZUV2ZW50ID0gYmFzZUV2ZW50O1xuICAgIGJhc2VFdmVudCA9IGU7XG4gICAgYmFzZVBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdmUoZSkge1xuICAgIHZhciB2ZWxvY2l0eSA9IGNvbXB1dGVWZWxvY2l0eShlKTtcbiAgICB2YXIgZGVzdGluYXRpb24gPSBjb21wdXRlRGVzdGluYXRpb24odmVsb2NpdHkpO1xuICAgIHZhciByZXdpbmQgPSBvcHRpb25zLnJld2luZCAmJiBvcHRpb25zLnJld2luZEJ5RHJhZztcbiAgICByZWR1Y2UoZmFsc2UpO1xuXG4gICAgaWYgKGlzRnJlZSkge1xuICAgICAgQ29udHJvbGxlci5zY3JvbGwoZGVzdGluYXRpb24sIDAsIG9wdGlvbnMuc25hcCk7XG4gICAgfSBlbHNlIGlmIChTcGxpZGUyLmlzKEZBREUpKSB7XG4gICAgICBDb250cm9sbGVyLmdvKG9yaWVudChzaWduKHZlbG9jaXR5KSkgPCAwID8gcmV3aW5kID8gXCI8XCIgOiBcIi1cIiA6IHJld2luZCA/IFwiPlwiIDogXCIrXCIpO1xuICAgIH0gZWxzZSBpZiAoU3BsaWRlMi5pcyhTTElERSkgJiYgZXhjZWVkZWQgJiYgcmV3aW5kKSB7XG4gICAgICBDb250cm9sbGVyLmdvKGV4Y2VlZGVkTGltaXQodHJ1ZSkgPyBcIj5cIiA6IFwiPFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29udHJvbGxlci5nbyhDb250cm9sbGVyLnRvRGVzdChkZXN0aW5hdGlvbiksIHRydWUpO1xuICAgIH1cblxuICAgIHJlZHVjZSh0cnVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZFN0YXJ0KGUpIHtcbiAgICB2YXIgdGhyZXNob2xkcyA9IG9wdGlvbnMuZHJhZ01pblRocmVzaG9sZDtcbiAgICB2YXIgaXNPYmogPSBpc09iamVjdCh0aHJlc2hvbGRzKTtcbiAgICB2YXIgbW91c2UgPSBpc09iaiAmJiB0aHJlc2hvbGRzLm1vdXNlIHx8IDA7XG4gICAgdmFyIHRvdWNoID0gKGlzT2JqID8gdGhyZXNob2xkcy50b3VjaCA6ICt0aHJlc2hvbGRzKSB8fCAxMDtcbiAgICByZXR1cm4gYWJzKGRpZmZDb29yZChlKSkgPiAoaXNUb3VjaEV2ZW50KGUpID8gdG91Y2ggOiBtb3VzZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc1NsaWRlckRpcmVjdGlvbihlKSB7XG4gICAgcmV0dXJuIGFicyhkaWZmQ29vcmQoZSkpID4gYWJzKGRpZmZDb29yZChlLCB0cnVlKSk7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlVmVsb2NpdHkoZSkge1xuICAgIGlmIChTcGxpZGUyLmlzKExPT1ApIHx8ICFleGNlZWRlZCkge1xuICAgICAgdmFyIHRpbWUgPSBkaWZmVGltZShlKTtcblxuICAgICAgaWYgKHRpbWUgJiYgdGltZSA8IExPR19JTlRFUlZBTCkge1xuICAgICAgICByZXR1cm4gZGlmZkNvb3JkKGUpIC8gdGltZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVEZXN0aW5hdGlvbih2ZWxvY2l0eSkge1xuICAgIHJldHVybiBnZXRQb3NpdGlvbigpICsgc2lnbih2ZWxvY2l0eSkgKiBtaW4oYWJzKHZlbG9jaXR5KSAqIChvcHRpb25zLmZsaWNrUG93ZXIgfHwgNjAwKSwgaXNGcmVlID8gSW5maW5pdHkgOiBDb21wb25lbnRzMi5MYXlvdXQubGlzdFNpemUoKSAqIChvcHRpb25zLmZsaWNrTWF4UGFnZXMgfHwgMSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlmZkNvb3JkKGUsIG9ydGhvZ29uYWwpIHtcbiAgICByZXR1cm4gY29vcmRPZihlLCBvcnRob2dvbmFsKSAtIGNvb3JkT2YoZ2V0QmFzZUV2ZW50KGUpLCBvcnRob2dvbmFsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpZmZUaW1lKGUpIHtcbiAgICByZXR1cm4gdGltZU9mKGUpIC0gdGltZU9mKGdldEJhc2VFdmVudChlKSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCYXNlRXZlbnQoZSkge1xuICAgIHJldHVybiBiYXNlRXZlbnQgPT09IGUgJiYgcHJldkJhc2VFdmVudCB8fCBiYXNlRXZlbnQ7XG4gIH1cblxuICBmdW5jdGlvbiBjb29yZE9mKGUsIG9ydGhvZ29uYWwpIHtcbiAgICByZXR1cm4gKGlzVG91Y2hFdmVudChlKSA/IGUuY2hhbmdlZFRvdWNoZXNbMF0gOiBlKVtcInBhZ2VcIiArIHJlc29sdmUob3J0aG9nb25hbCA/IFwiWVwiIDogXCJYXCIpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnN0cmFpbihkaWZmKSB7XG4gICAgcmV0dXJuIGRpZmYgLyAoZXhjZWVkZWQgJiYgU3BsaWRlMi5pcyhTTElERSkgPyBGUklDVElPTiA6IDEpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNEcmFnZ2FibGUodGFyZ2V0Mikge1xuICAgIHZhciBub0RyYWcgPSBvcHRpb25zLm5vRHJhZztcbiAgICByZXR1cm4gIW1hdGNoZXModGFyZ2V0MiwgXCIuXCIgKyBDTEFTU19QQUdJTkFUSU9OX1BBR0UgKyBcIiwgLlwiICsgQ0xBU1NfQVJST1cpICYmICghbm9EcmFnIHx8ICFtYXRjaGVzKHRhcmdldDIsIG5vRHJhZykpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNUb3VjaEV2ZW50KGUpIHtcbiAgICByZXR1cm4gdHlwZW9mIFRvdWNoRXZlbnQgIT09IFwidW5kZWZpbmVkXCIgJiYgZSBpbnN0YW5jZW9mIFRvdWNoRXZlbnQ7XG4gIH1cblxuICBmdW5jdGlvbiBpc0RyYWdnaW5nKCkge1xuICAgIHJldHVybi
3BkcmFnZ2luZztcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc2FibGUodmFsdWUpIHtcbiAgICBkaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGlzYWJsZTogZGlzYWJsZSxcbiAgICBpc0RyYWdnaW5nOiBpc0RyYWdnaW5nXG4gIH07XG59XG5cbnZhciBOT1JNQUxJWkFUSU9OX01BUCA9IHtcbiAgU3BhY2ViYXI6IFwiIFwiLFxuICBSaWdodDogQVJST1dfUklHSFQsXG4gIExlZnQ6IEFSUk9XX0xFRlQsXG4gIFVwOiBBUlJPV19VUCxcbiAgRG93bjogQVJST1dfRE9XTlxufTtcblxuZnVuY3Rpb24gbm9ybWFsaXplS2V5KGtleSkge1xuICBrZXkgPSBpc1N0cmluZyhrZXkpID8ga2V5IDoga2V5LmtleTtcbiAgcmV0dXJuIE5PUk1BTElaQVRJT05fTUFQW2tleV0gfHwga2V5O1xufVxuXG52YXIgS0VZQk9BUkRfRVZFTlQgPSBcImtleWRvd25cIjtcblxuZnVuY3Rpb24gS2V5Ym9hcmQoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTEwID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTEwLm9uLFxuICAgICAgYmluZCA9IF9FdmVudEludGVyZmFjZTEwLmJpbmQsXG4gICAgICB1bmJpbmQgPSBfRXZlbnRJbnRlcmZhY2UxMC51bmJpbmQ7XG5cbiAgdmFyIHJvb3QgPSBTcGxpZGUyLnJvb3Q7XG4gIHZhciByZXNvbHZlID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLnJlc29sdmU7XG4gIHZhciB0YXJnZXQ7XG4gIHZhciBkaXNhYmxlZDtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpbml0KCk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgZGVzdHJveSk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgaW5pdCk7XG4gICAgb24oRVZFTlRfTU9WRSwgb25Nb3ZlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdmFyIGtleWJvYXJkID0gb3B0aW9ucy5rZXlib2FyZDtcblxuICAgIGlmIChrZXlib2FyZCkge1xuICAgICAgdGFyZ2V0ID0ga2V5Ym9hcmQgPT09IFwiZ2xvYmFsXCIgPyB3aW5kb3cgOiByb290O1xuICAgICAgYmluZCh0YXJnZXQsIEtFWUJPQVJEX0VWRU5ULCBvbktleWRvd24pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgdW5iaW5kKHRhcmdldCwgS0VZQk9BUkRfRVZFTlQpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzYWJsZSh2YWx1ZSkge1xuICAgIGRpc2FibGVkID0gdmFsdWU7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdmUoKSB7XG4gICAgdmFyIF9kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIGRpc2FibGVkID0gdHJ1ZTtcbiAgICBuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBkaXNhYmxlZCA9IF9kaXNhYmxlZDtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uS2V5ZG93bihlKSB7XG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleShlKTtcblxuICAgICAgaWYgKGtleSA9PT0gcmVzb2x2ZShBUlJPV19MRUZUKSkge1xuICAgICAgICBTcGxpZGUyLmdvKFwiPFwiKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSByZXNvbHZlKEFSUk9XX1JJR0hUKSkge1xuICAgICAgICBTcGxpZGUyLmdvKFwiPlwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIGRpc2FibGU6IGRpc2FibGVcbiAgfTtcbn1cblxudmFyIFNSQ19EQVRBX0FUVFJJQlVURSA9IERBVEFfQVRUUklCVVRFICsgXCItbGF6eVwiO1xudmFyIFNSQ1NFVF9EQVRBX0FUVFJJQlVURSA9IFNSQ19EQVRBX0FUVFJJQlVURSArIFwiLXNyY3NldFwiO1xudmFyIElNQUdFX1NFTEVDVE9SID0gXCJbXCIgKyBTUkNfREFUQV9BVFRSSUJVVEUgKyBcIl0sIFtcIiArIFNSQ1NFVF9EQVRBX0FUVFJJQlVURSArIFwiXVwiO1xuXG5mdW5jdGlvbiBMYXp5TG9hZChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMTEgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlMTEub24sXG4gICAgICBvZmYgPSBfRXZlbnRJbnRlcmZhY2UxMS5vZmYsXG4gICAgICBiaW5kID0gX0V2ZW50SW50ZXJmYWNlMTEuYmluZCxcbiAgICAgIGVtaXQgPSBfRXZlbnRJbnRlcmZhY2UxMS5lbWl0O1xuXG4gIHZhciBpc1NlcXVlbnRpYWwgPSBvcHRpb25zLmxhenlMb2FkID09PSBcInNlcXVlbnRpYWxcIjtcbiAgdmFyIGV2ZW50cyA9IFtFVkVOVF9NT1ZFRCwgRVZFTlRfU0NST0xMRURdO1xuICB2YXIgZW50cmllcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmIChvcHRpb25zLmxhenlMb2FkKSB7XG4gICAgICBpbml0KCk7XG4gICAgICBvbihFVkVOVF9SRUZSRVNILCBpbml0KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIGVtcHR5KGVudHJpZXMpO1xuICAgIHJlZ2lzdGVyKCk7XG5cbiAgICBpZiAoaXNTZXF1ZW50aWFsKSB7XG4gICAgICBsb2FkTmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmYoZXZlbnRzKTtcbiAgICAgIG9uKGV2ZW50cywgY2hlY2spO1xuICAgICAgY2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlcigpIHtcbiAgICBDb21wb25lbnRzMi5TbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgIHF1ZXJ5QWxsKFNsaWRlLnNsaWRlLCBJTUFHRV9TRUxFQ1RPUikuZm9yRWFjaChmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgIHZhciBzcmMgPSBnZXRBdHRyaWJ1dGUoaW1nLCBTUkNfREFUQV9BVFRSSUJVVEUpO1xuICAgICAgICB2Y
3XIgc3Jjc2V0ID0gZ2V0QXR0cmlidXRlKGltZywgU1JDU0VUX0RBVEFfQVRUUklCVVRFKTtcblxuICAgICAgICBpZiAoc3JjICE9PSBpbWcuc3JjIHx8IHNyY3NldCAhPT0gaW1nLnNyY3NldCkge1xuICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBvcHRpb25zLmNsYXNzZXMuc3Bpbm5lcjtcbiAgICAgICAgICB2YXIgcGFyZW50ID0gaW1nLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgdmFyIHNwaW5uZXIgPSBjaGlsZChwYXJlbnQsIFwiLlwiICsgY2xhc3NOYW1lKSB8fCBjcmVhdGUoXCJzcGFuXCIsIGNsYXNzTmFtZSwgcGFyZW50KTtcbiAgICAgICAgICBlbnRyaWVzLnB1c2goW2ltZywgU2xpZGUsIHNwaW5uZXJdKTtcbiAgICAgICAgICBpbWcuc3JjIHx8IGRpc3BsYXkoaW1nLCBcIm5vbmVcIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2soKSB7XG4gICAgZW50cmllcyA9IGVudHJpZXMuZmlsdGVyKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICB2YXIgZGlzdGFuY2UgPSBvcHRpb25zLnBlclBhZ2UgKiAoKG9wdGlvbnMucHJlbG9hZFBhZ2VzIHx8IDEpICsgMSkgLSAxO1xuICAgICAgcmV0dXJuIGRhdGFbMV0uaXNXaXRoaW4oU3BsaWRlMi5pbmRleCwgZGlzdGFuY2UpID8gbG9hZChkYXRhKSA6IHRydWU7XG4gICAgfSk7XG4gICAgZW50cmllcy5sZW5ndGggfHwgb2ZmKGV2ZW50cyk7XG4gIH1cblxuICBmdW5jdGlvbiBsb2FkKGRhdGEpIHtcbiAgICB2YXIgaW1nID0gZGF0YVswXTtcbiAgICBhZGRDbGFzcyhkYXRhWzFdLnNsaWRlLCBDTEFTU19MT0FESU5HKTtcbiAgICBiaW5kKGltZywgXCJsb2FkIGVycm9yXCIsIGFwcGx5KG9uTG9hZCwgZGF0YSkpO1xuICAgIHNldEF0dHJpYnV0ZShpbWcsIFwic3JjXCIsIGdldEF0dHJpYnV0ZShpbWcsIFNSQ19EQVRBX0FUVFJJQlVURSkpO1xuICAgIHNldEF0dHJpYnV0ZShpbWcsIFwic3Jjc2V0XCIsIGdldEF0dHJpYnV0ZShpbWcsIFNSQ1NFVF9EQVRBX0FUVFJJQlVURSkpO1xuICAgIHJlbW92ZUF0dHJpYnV0ZShpbWcsIFNSQ19EQVRBX0FUVFJJQlVURSk7XG4gICAgcmVtb3ZlQXR0cmlidXRlKGltZywgU1JDU0VUX0RBVEFfQVRUUklCVVRFKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTG9hZChkYXRhLCBlKSB7XG4gICAgdmFyIGltZyA9IGRhdGFbMF0sXG4gICAgICAgIFNsaWRlID0gZGF0YVsxXTtcbiAgICByZW1vdmVDbGFzcyhTbGlkZS5zbGlkZSwgQ0xBU1NfTE9BRElORyk7XG5cbiAgICBpZiAoZS50eXBlICE9PSBcImVycm9yXCIpIHtcbiAgICAgIHJlbW92ZShkYXRhWzJdKTtcbiAgICAgIGRpc3BsYXkoaW1nLCBcIlwiKTtcbiAgICAgIGVtaXQoRVZFTlRfTEFaWUxPQURfTE9BREVELCBpbWcsIFNsaWRlKTtcbiAgICAgIGVtaXQoRVZFTlRfUkVTSVpFKTtcbiAgICB9XG5cbiAgICBpc1NlcXVlbnRpYWwgJiYgbG9hZE5leHQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvYWROZXh0KCkge1xuICAgIGVudHJpZXMubGVuZ3RoICYmIGxvYWQoZW50cmllcy5zaGlmdCgpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGFwcGx5KGVtcHR5LCBlbnRyaWVzKSxcbiAgICBjaGVjazogY2hlY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gUGFnaW5hdGlvbihTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgdmFyIG9uID0gZXZlbnQub24sXG4gICAgICBlbWl0ID0gZXZlbnQuZW1pdCxcbiAgICAgIGJpbmQgPSBldmVudC5iaW5kO1xuICB2YXIgU2xpZGVzID0gQ29tcG9uZW50czIuU2xpZGVzLFxuICAgICAgRWxlbWVudHMgPSBDb21wb25lbnRzMi5FbGVtZW50cyxcbiAgICAgIENvbnRyb2xsZXIgPSBDb21wb25lbnRzMi5Db250cm9sbGVyO1xuICB2YXIgaGFzRm9jdXMgPSBDb250cm9sbGVyLmhhc0ZvY3VzLFxuICAgICAgZ2V0SW5kZXggPSBDb250cm9sbGVyLmdldEluZGV4LFxuICAgICAgZ28gPSBDb250cm9sbGVyLmdvO1xuICB2YXIgcmVzb2x2ZSA9IENvbXBvbmVudHMyLkRpcmVjdGlvbi5yZXNvbHZlO1xuICB2YXIgcGxhY2Vob2xkZXIgPSBFbGVtZW50cy5wYWdpbmF0aW9uO1xuICB2YXIgaXRlbXMgPSBbXTtcbiAgdmFyIGxpc3Q7XG4gIHZhciBwYWdpbmF0aW9uQ2xhc3NlcztcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBkZXN0cm95KCk7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0gsIEVWRU5UX0VORF9JTkRFWF9DSEFOR0VEXSwgbW91bnQpO1xuICAgIHZhciBlbmFibGVkID0gb3B0aW9ucy5wYWdpbmF0aW9uO1xuICAgIHBsYWNlaG9sZGVyICYmIGRpc3BsYXkocGxhY2Vob2xkZXIsIGVuYWJsZWQgPyBcIlwiIDogXCJub25lXCIpO1xuXG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIG9uKFtFVkVOVF9NT1ZFLCBFVkVOVF9TQ1JPTEwsIEVWRU5UX1NDUk9MTEVEXSwgdXBkYXRlKTtcbiAgICAgIGNyZWF0ZVBhZ2luYXRpb24oKTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgZW1pdChFVkVOVF9QQUdJTkFUSU9OX01PVU5URUQsIHtcbiAgICAgICAgbGlzdDogbGlzdCxcbiAgICAgICAgaXRlbXM6IGl0ZW1zXG4gICAgICB9LCBnZXRBdChTcGxpZGUyLmluZGV4KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAobGlzdCkge1xuICAgICAgcmVtb3ZlKHBsYWNlaG9sZGVyID8gc2xpY2UobGlzdC5jaGlsZHJlbikgOiBsaXN0KTtcbiAgICAgIHJlbW92ZUNsYXNzKGxpc3QsIHBhZ2luYXRpb25DbGFzc2VzKTtcbiAgICAgIGVtcHR5KGl0ZW1zKTtcbiAgICAgIGxpc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb24oKSB7XG4gICAgdmFyIGxlbmd0aCA9IFNwbGlkZTIubGVuZ3RoO1xuICAgIHZhciBjbGFzc2VzID0gb3B0aW9ucy5jbGFzc2VzLFxuICAgICAgICBpMThuID0gb3B0aW9ucy5pMThuLFxuICAgICAgICBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlO1xuICAgIHZhciBtYXggPSBoYXNGb2N1cygpID8gQ29udHJvbGxlci5nZXRFbmQoKSArIDEgOiBjZWlsKGxlbmd0aCAvIHBlclBhZ2UpO1xuICAgIGxpc3QgPSBwbGFjZWhvbGRlciB8fCBjcmVhdGUoXCJ1bFwiLCBjbGFzc2VzLnBhZ2luYXRpb24sIEVsZW1lbnRzLnRyYWNrLnBhcmVudEVsZW1lbnQpO1xuICAgIGFkZENsYXNzKGxpc3QsIHBhZ2luYXRpb25DbGFzc2VzID0gQ0xBU1NfUEFHSU5BVElPTiArIFwiLS1cIiArIGdldERpcmVjdGlvbigpKTtcbiAgICBzZXRBdHRyaWJ1dGUobGlzdCwgUk9MRSwgXCJ0YWJsaXN0XCIpO1xuICAgIHNldEF0dHJpYnV0ZShsaXN0LCBBUklBX0xBQkVMLCBpMThuLnNlbGVjdCk7XG4gICAgc2V0QXR0cmlidXRlKGxpc3QsIEFSSUFfT1JJRU5UQVRJT04sIGdldERpcmVjdGlvbigpID09PSBUVEIgPyBcInZlcnRpY2FsXCIgOiBcIlwiKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcbiAgICAgIHZhciBsaSA9IGNyZWF0ZShcImxpXCIsIG51bGwsIGxpc3QpO1xuICAgICAgdmFyIGJ1dHRvbiA9IGNyZWF0ZShcImJ1dHRvblwiLCB7XG4gICAgICAgIGNsYXNzOiBjbGFzc2VzLnBhZ2UsXG4gICAgICAgI
3HR5cGU6IFwiYnV0dG9uXCJcbiAgICAgIH0sIGxpKTtcbiAgICAgIHZhciBjb250cm9scyA9IFNsaWRlcy5nZXRJbihpKS5tYXAoZnVuY3Rpb24gKFNsaWRlKSB7XG4gICAgICAgIHJldHVybiBTbGlkZS5zbGlkZS5pZDtcbiAgICAgIH0pO1xuICAgICAgdmFyIHRleHQgPSAhaGFzRm9jdXMoKSAmJiBwZXJQYWdlID4gMSA/IGkxOG4ucGFnZVggOiBpMThuLnNsaWRlWDtcbiAgICAgIGJpbmQoYnV0dG9uLCBcImNsaWNrXCIsIGFwcGx5KG9uQ2xpY2ssIGkpKTtcblxuICAgICAgaWYgKG9wdGlvbnMucGFnaW5hdGlvbktleWJvYXJkKSB7XG4gICAgICAgIGJpbmQoYnV0dG9uLCBcImtleWRvd25cIiwgYXBwbHkob25LZXlkb3duLCBpKSk7XG4gICAgICB9XG5cbiAgICAgIHNldEF0dHJpYnV0ZShsaSwgUk9MRSwgXCJwcmVzZW50YXRpb25cIik7XG4gICAgICBzZXRBdHRyaWJ1dGUoYnV0dG9uLCBST0xFLCBcInRhYlwiKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIEFSSUFfQ09OVFJPTFMsIGNvbnRyb2xzLmpvaW4oXCIgXCIpKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIEFSSUFfTEFCRUwsIGZvcm1hdCh0ZXh0LCBpICsgMSkpO1xuICAgICAgc2V0QXR0cmlidXRlKGJ1dHRvbiwgVEFCX0lOREVYLCAtMSk7XG4gICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgbGk6IGxpLFxuICAgICAgICBidXR0b246IGJ1dHRvbixcbiAgICAgICAgcGFnZTogaVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25DbGljayhwYWdlKSB7XG4gICAgZ28oXCI+XCIgKyBwYWdlLCB0cnVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uS2V5ZG93bihwYWdlLCBlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGl0ZW1zLmxlbmd0aDtcbiAgICB2YXIga2V5ID0gbm9ybWFsaXplS2V5KGUpO1xuICAgIHZhciBkaXIgPSBnZXREaXJlY3Rpb24oKTtcbiAgICB2YXIgbmV4dFBhZ2UgPSAtMTtcblxuICAgIGlmIChrZXkgPT09IHJlc29sdmUoQVJST1dfUklHSFQsIGZhbHNlLCBkaXIpKSB7XG4gICAgICBuZXh0UGFnZSA9ICsrcGFnZSAlIGxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gcmVzb2x2ZShBUlJPV19MRUZULCBmYWxzZSwgZGlyKSkge1xuICAgICAgbmV4dFBhZ2UgPSAoLS1wYWdlICsgbGVuZ3RoKSAlIGxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJIb21lXCIpIHtcbiAgICAgIG5leHRQYWdlID0gMDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJFbmRcIikge1xuICAgICAgbmV4dFBhZ2UgPSBsZW5ndGggLSAxO1xuICAgIH1cblxuICAgIHZhciBpdGVtID0gaXRlbXNbbmV4dFBhZ2VdO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGZvY3VzKGl0ZW0uYnV0dG9uKTtcbiAgICAgIGdvKFwiPlwiICsgbmV4dFBhZ2UpO1xuICAgICAgcHJldmVudChlLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXREaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMucGFnaW5hdGlvbkRpcmVjdGlvbiB8fCBvcHRpb25zLmRpcmVjdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEF0KGluZGV4KSB7XG4gICAgcmV0dXJuIGl0ZW1zW0NvbnRyb2xsZXIudG9QYWdlKGluZGV4KV07XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgdmFyIHByZXYgPSBnZXRBdChnZXRJbmRleCh0cnVlKSk7XG4gICAgdmFyIGN1cnIgPSBnZXRBdChnZXRJbmRleCgpKTtcblxuICAgIGlmIChwcmV2KSB7XG4gICAgICB2Y
3XIgYnV0dG9uID0gcHJldi5idXR0b247XG4gICAgICByZW1vdmVDbGFzcyhidXR0b24sIENMQVNTX0FDVElWRSk7XG4gICAgICByZW1vdmVBdHRyaWJ1dGUoYnV0dG9uLCBBUklBX1NFTEVDVEVEKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIFRBQl9JTkRFWCwgLTEpO1xuICAgIH1cblxuICAgIGlmIChjdXJyKSB7XG4gICAgICB2YXIgX2J1dHRvbiA9IGN1cnIuYnV0dG9uO1xuICAgICAgYWRkQ2xhc3MoX2J1dHRvbiwgQ0xBU1NfQUNUSVZFKTtcbiAgICAgIHNldEF0dHJpYnV0ZShfYnV0dG9uLCBBUklBX1NFTEVDVEVELCB0cnVlKTtcbiAgICAgIHNldEF0dHJpYnV0ZShfYnV0dG9uLCBUQUJfSU5ERVgsIFwiXCIpO1xuICAgIH1cblxuICAgIGVtaXQoRVZFTlRfUEFHSU5BVElPTl9VUERBVEVELCB7XG4gICAgICBsaXN0OiBsaXN0LFxuICAgICAgaXRlbXM6IGl0ZW1zXG4gICAgfSwgcHJldiwgY3Vycik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGl0ZW1zOiBpdGVtcyxcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogZGVzdHJveSxcbiAgICBnZXRBdDogZ2V0QXQsXG4gICAgdXBkYXRlOiB1cGRhdGVcbiAgfTtcbn1cblxudmFyIFRSSUdHRVJfS0VZUyA9IFtcIiBcIiwgXCJFbnRlclwiXTtcblxuZnVuY3Rpb24gU3luYyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgaXNOYXZpZ2F0aW9uID0gb3B0aW9ucy5pc05hdmlnYXRpb24sXG4gICAgICBzbGlkZUZvY3VzID0gb3B0aW9ucy5zbGlkZUZvY3VzO1xuICB2YXIgZXZlbnRzID0gW107XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgU3BsaWRlMi5zcGxpZGVzLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgaWYgKCF0YXJnZXQuaXNQYXJlbnQpIHtcbiAgICAgICAgc3luYyhTcGxpZGUyLCB0YXJnZXQuc3BsaWRlKTtcbiAgICAgICAgc3luYyh0YXJnZXQuc3BsaWRlLCBTcGxpZGUyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpc05hdmlnYXRpb24pIHtcbiAgICAgIG5hdmlnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICBlbXB0eShldmVudHMpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3VudCgpIHtcbiAgICBkZXN0cm95KCk7XG4gICAgbW91bnQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN5bmMoc3BsaWRlLCB0YXJnZXQpIHtcbiAgICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShzcGxpZGUpO1xuICAgIGV2ZW50Lm9uKEVWRU5UX01PVkUsIGZ1bmN0aW9uIChpbmRleCwgcHJldiwgZGVzdCkge1xuICAgICAgdGFyZ2V0LmdvKHRhcmdldC5pcyhMT09QKSA/IGRlc3QgOiBpbmRleCk7XG4gICAgfSk7XG4gICAgZXZlbnRzLnB1c2goZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbmF2aWdhdGUoKSB7XG4gICAgdmFyIGV2ZW50ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gICAgdmFyIG9uID0gZXZlbnQub247XG4gICAgb24oRVZFTlRfQ0xJQ0ssIG9uQ2xpY2spO1xuICAgIG9uKEVWRU5UX1NMSURFX0tFWURPV04sIG9uS2V5ZG93bik7XG4gICAgb24oW0VWRU5UX01PVU5URUQsIEVWRU5UX1VQREFURURdLCB1cGRhdGUpO1xuICAgIGV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgICBldmVudC5lbWl0KEVWRU5UX05BVklHQVRJT05fTU9VTlRFRCwgU3BsaWRlMi5zcGxpZGVzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBzZXRBdHRyaWJ1dGUoQ29tcG9uZW50czIuRWxlbWVudHMubGlzdCwgQVJJQV9PUklFTlRBVElPTiwgb3B0aW9ucy5kaXJlY3Rpb24gPT09IFRUQiA/IFwidmVydGljYWxcIiA6IFwiXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25DbGljayhTbGlkZSkge1xuICAgIFNwbGlkZTIuZ28oU2xpZGUuaW5kZXgpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25LZXlkb3duKFNsaWRlLCBlKSB7XG4gICAgaWYgKGluY2x1ZGVzKFRSSUdHRVJfS0VZUywgbm9ybWFsaXplS2V5KGUpKSkge1xuICAgICAgb25DbGljayhTbGlkZSk7XG4gICAgICBwcmV2ZW50KGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2V0dXA6IGFwcGx5KENvbXBvbmVudHMyLk1lZGlhLnNldCwge1xuICAgICAgc2xpZGVGb2N1czogaXNVbmRlZmluZWQoc2xpZGVGb2N1cykgPyBpc05hdmlnYXRpb24gOiBzbGlkZUZvY3VzXG4gICAgfSwgdHJ1ZSksXG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgcmVtb3VudDogcmVtb3VudFxuICB9O1xufVxuXG5mdW5jdGlvbiBXaGVlbChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMTIgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UxMi5iaW5kO1xuXG4gIHZhciBsYXN0VGltZSA9IDA7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaWYgKG9wdGlvbnMud2hlZWwpIHtcbiAgICAgIGJpbmQoQ29tcG9uZW50czIuRWxlbWVudHMudHJhY2ssIFwid2hlZWxcIiwgb25XaGVlbCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgIGlmIChlLmNhbmNlbGFibG
3UpIHtcbiAgICAgIHZhciBkZWx0YVkgPSBlLmRlbHRhWTtcbiAgICAgIHZhciBiYWNrd2FyZHMgPSBkZWx0YVkgPCAwO1xuICAgICAgdmFyIHRpbWVTdGFtcCA9IHRpbWVPZihlKTtcblxuICAgICAgdmFyIF9taW4gPSBvcHRpb25zLndoZWVsTWluVGhyZXNob2xkIHx8IDA7XG5cbiAgICAgIHZhciBzbGVlcCA9IG9wdGlvbnMud2hlZWxTbGVlcCB8fCAwO1xuXG4gICAgICBpZiAoYWJzKGRlbHRhWSkgPiBfbWluICYmIHRpbWVTdGFtcCAtIGxhc3RUaW1lID4gc2xlZXApIHtcbiAgICAgICAgU3BsaWRlMi5nbyhiYWNrd2FyZHMgPyBcIjxcIiA6IFwiPlwiKTtcbiAgICAgICAgbGFzdFRpbWUgPSB0aW1lU3RhbXA7XG4gICAgICB9XG5cbiAgICAgIHNob3VsZFByZXZlbnQoYmFja3dhcmRzKSAmJiBwcmV2ZW50KGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZFByZXZlbnQoYmFja3dhcmRzKSB7XG4gICAgcmV0dXJuICFvcHRpb25zLnJlbGVhc2VXaGVlbCB8fCBTcGxpZGUyLnN0YXRlLmlzKE1PVklORykgfHwgQ29tcG9uZW50czIuQ29udHJvbGxlci5nZXRBZGphY2VudChiYWNrd2FyZHMpICE9PSAtMTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50XG4gIH07XG59XG5cbnZhciBTUl9SRU1PVkFMX0RFTEFZID0gOTA7XG5cbmZ1bmN0aW9uIExpdmUoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTEzID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTEzLm9uO1xuXG4gIHZhciB0cmFjayA9IENvbXBvbmVudHMyLkVsZW1lbnRzLnRyYWNrO1xuICB2YXIgZW5hYmxlZCA9IG9wdGlvbnMubGl2ZSAmJiAhb3B0aW9ucy5pc05hdmlnYXRpb247XG4gIHZhciBzciA9IGNyZWF0ZShcInNwYW5cIiwgQ0xBU1NfU1IpO1xuICB2YXIgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoU1JfUkVNT1ZBTF9ERUxBWSwgYXBwbHkodG9nZ2xlLCBmYWxzZSkpO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICBkaXNhYmxlKCFDb21wb25lbnRzMi5BdXRvcGxheS5pc1BhdXNlZCgpKTtcbiAgICAgIHNldEF0dHJpYnV0ZSh0cmFjaywgQVJJQV9BVE9NSUMsIHRydWUpO1xuICAgICAgc3IudGV4dENvbnRlbnQgPSBcIlxcdTIwMjZcIjtcbiAgICAgIG9uKEVWRU5UX0FVVE9QTEFZX1BMQVksIGFwcGx5KGRpc2FibGUsIHRydWUpKTtcbiAgICAgIG9uKEVWRU5UX0FVVE9QTEFZX1BBVVNFLCBhcHBseShkaXNhYmxlLCBmYWxzZSkpO1xuICAgICAgb24oW0VWRU5UX01PVkVELCBFVkVOVF9TQ1JPTExFRF0sIGFwcGx5KHRvZ2dsZSwgdHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRvZ2dsZShhY3RpdmUpIHtcbiAgICBzZXRBdHRyaWJ1dGUodHJhY2ssIEFSSUFfQlVTWSwgYWN0aXZlKTtcblxuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIGFwcGVuZCh0cmFjaywgc3IpO1xuICAgICAgaW50ZXJ2YWwuc3RhcnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKHNyKTtcbiAgICAgIGludGVydmFsLmNhbmNlbCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgcmVtb3ZlQXR0cmlidXRlKHRyYWNrLCBbQVJJQV9MSVZFLCBBUklBX0FUT01JQywgQVJJQV9CVVNZXSk7XG4gICAgcmVtb3ZlKHNyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc2FibGUoZGlzYWJsZWQpIHtcbiAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgc2V0QXR0cmlidXRlKHRyYWNrLCBBUklBX0xJVkUsIGRpc2FibGVkID8gXCJvZmZcIiA6IFwicG9saXRlXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRpc2FibGU6IGRpc2FibGUsXG4gICAgZGVzdHJveTogZGVzdHJveVxuICB9O1xufVxuXG52YXIgQ29tcG9uZW50Q29uc3RydWN0b3JzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIE1lZGlhOiBNZWRpYSxcbiAgRGlyZWN0aW9uOiBEaXJlY3Rpb24sXG4gIEVsZW1lbnRzOiBFbGVtZW50cyxcbiAgU2xpZGVzOiBTbGlkZXMsXG4gIExheW91dDogTGF5b3V0LFxuICBDbG9uZXM6IENsb25lcyxcbiAgTW92ZTogTW92ZSxcbiAgQ29udHJvbGxlcjogQ29udHJvbGxlcixcbiAgQXJyb3dzOiBBcnJvd3MsXG4gIEF1dG9wbGF5OiBBdXRvcGxheSxcbiAgQ292ZXI6IENvdmVyLFxuICBTY3JvbGw6IFNjcm9sbCxcbiAgRHJhZzogRHJhZyxcbiAgS2V5Ym9hcmQ6IEtleWJvYXJkLFxuICBMYXp5TG9hZDogTGF6eUxvYWQsXG4gIFBhZ2luYXRpb246IFBhZ2luYXRpb24sXG4gIFN5bmM6IFN5bmMsXG4gIFdoZWVsOiBXaGVlbCxcbiAgTGl2ZTogTGl2ZVxufSk7XG52YXIgSTE4TiA9IHtcbiAgcHJldjogXCJQcmV2aW91cyBzbGlkZVwiLFxuICBuZXh0OiBcIk5leHQgc2xpZGVcIixcbiAgZmlyc3Q6IFwiR28gdG8gZmlyc3Qgc2xpZGVcIixcbiAgbGFzdDogXCJHbyB0byBsYXN0IHNsaWRlXCIsXG4gIHNsaWRlWDogXCJHbyB0byBzbGlkZSAlc1wiLFxuICBwYWdlWDogXCJHbyB0byBwYWdlICVzXCIsXG4gIHBsYXk6IFwiU3RhcnQgYXV0b3BsYXlcIixcbiAgcGF1c2U6IFwiUGF1c2UgYXV0b3BsYXlcIixcbiAgY2Fyb3VzZWw6IFwiY2Fyb3VzZWxcIixcbiAgc2xpZGU6IFwic2xpZGVcIixcbiAgc2VsZWN0OiBcIlNlbGVjdCBhIHNsaWRlIHRvIHNob3dcIixcbiAgc2xpZGVMYWJlbDogXCIlcyBvZiAlc1wiXG59O1xudmFyIERFRkFVTFRTID0ge1xuICB0eXBlOiBcInNsaWRlXCIsXG4gIHJvbGU6IFwicmVnaW9uXCIsXG4gIHNwZWVkOiA0MDAsXG4gIHBlclBhZ2U6IDEsXG4gIGNsb25lU3RhdHVzOiB0cnVlLFxuICBhcnJvd3M6IHRydWUsXG4gIHBhZ2luYXRpb246IHRydWUsXG4gIHBhZ2luYXRpb25LZXlib2FyZDogdHJ1ZSxcbiAgaW50ZXJ2YWw6IDVlMyxcbiAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICBwYXVzZU9uRm9jdXM6IHRydWUsXG4gIHJlc2V0UHJvZ3Jlc3M6IHRydWUsXG4gIGVhc2luZzogXCJjdWJpYy1iZXppZXIoMC4yNSwgMSwgMC41LCAxKVwiLFxuICBkcmFnOiB0cnVlLFxuICBkaXJlY3Rpb246IFwibHRyXCIsXG4gIHRyaW1TcGFjZTogdHJ1ZSxcbiAgZm9jdXNhYmxlTm9kZXM6IFwiYSwgYnV0dG9uLCB0ZXh0YXJlYSwgaW5wdXQsIHNlbGVjdCwgaWZyYW1lXCIsXG4gIGxpdmU6IHRydWUsXG4gIGNsYXNzZXM6IENMQVNTRVMsXG4gIGkxOG46IEkxOE4sXG4gIHJlZHVjZWRNb3Rpb246IHtcbiAgICBzcGVlZDogMCxcbiAgICByZXdpbmRTcGVlZDogMCxcbiAgICBhdXRvcGxheTogXCJwYXVzZVwiXG4gIH1cbn07XG5cbmZ1bmN0aW9uIEZhZGUoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIFNsaWRlcyA9IENvbXBvbmVudHMyLlNsaWRlcztcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBFdmVudEludGVyZmFjZShTcGxpZGUyKS5vbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfUkVGUkVTSF0sIGluaXQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICBTbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgIFNsaWRlLnN0eWxlKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlWCgtXCIgKyAxMDAgKiBTbGlkZS5pbmRleCArIFwiJSlcIik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChpbmRleCwgZG9uZSkge1xuICAgIFNsaWRlcy5zdHlsZShcInRyYW5zaXRpb25cIiwgXCJvcGFjaXR5IFwiICsgb3B0aW9ucy5zcGVlZCArIFwibXMgXCIgKyBvcHRpb25zLmVhc2luZyk7XG4gICAgbmV4dFRpY2soZG9uZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBzdGFydDogc3RhcnQsXG4gICAgY2FuY2VsOiBub29wXG4gIH07XG59XG5cbmZ1bmN0aW9uIFNsaWRlKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBNb3ZlID0gQ29tcG9uZW50czIuTW92ZSxcbiAgICAgIENvbnRyb2xsZXIgPSBDb21wb25lbnRzMi5Db250cm9sbGVyLFxuICAgICAgU2Nyb2xsID0gQ29tcG9uZW50czIuU2Nyb2xsO1xuICB2YXIgbGlzdCA9IENvbXBvbmVudHMyLkVsZW1lbnRzLmxpc3Q7XG4gIHZhciB0cmFuc2l0aW9uID0gYXBwbHkoc3R5bGUsIGxpc3QsIFwidHJhbnNpdGlvblwiKTtcbiAgdmFyIGVuZENhbGxiYWNrO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLmJpbmQobGlzdCwgXCJ0cmFuc2l0aW9uZW5kXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZS50YXJnZXQgPT09IGxpc3QgJiYgZW5kQ2FsbGJhY2spIHtcbiAgICAgICAgY2FuY2VsKCk7XG4gICAgICAgIGVuZENhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChpbmRleCwgZG9uZSkge1xuICAgIHZhciBkZXN0aW5
3hdGlvbiA9IE1vdmUudG9Qb3NpdGlvbihpbmRleCwgdHJ1ZSk7XG4gICAgdmFyIHBvc2l0aW9uID0gTW92ZS5nZXRQb3NpdGlvbigpO1xuICAgIHZhciBzcGVlZCA9IGdldFNwZWVkKGluZGV4KTtcblxuICAgIGlmIChhYnMoZGVzdGluYXRpb24gLSBwb3NpdGlvbikgPj0gMSAmJiBzcGVlZCA+PSAxKSB7XG4gICAgICBpZiAob3B0aW9ucy51c2VTY3JvbGwpIHtcbiAgICAgICAgU2Nyb2xsLnNjcm9sbChkZXN0aW5hdGlvbiwgc3BlZWQsIGZhbHNlLCBkb25lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zaXRpb24oXCJ0cmFuc2Zvcm0gXCIgKyBzcGVlZCArIFwibXMgXCIgKyBvcHRpb25zLmVhc2luZyk7XG4gICAgICAgIE1vdmUudHJhbnNsYXRlKGRlc3RpbmF0aW9uLCB0cnVlKTtcbiAgICAgICAgZW5kQ2FsbGJhY2sgPSBkb25lO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBNb3ZlLmp1bXAoaW5kZXgpO1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICB0cmFuc2l0aW9uKFwiXCIpO1xuICAgIFNjcm9sbC5jYW5jZWwoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldFNwZWVkKGluZGV4KSB7XG4gICAgdmFyIHJld2luZFNwZWVkID0gb3B0aW9ucy5yZXdpbmRTcGVlZDtcblxuICAgIGlmIChTcGxpZGUyLmlzKFNMSURFKSAmJiByZXdpbmRTcGVlZCkge1xuICAgICAgdmFyIHByZXYgPSBDb250cm9sbGVyLmdldEluZGV4KHRydWUpO1xuICAgICAgdmFyIGVuZCA9IENvbnRyb2xsZXIuZ2V0RW5kKCk7XG5cbiAgICAgIGlmIChwcmV2ID09PSAwICYmIGluZGV4ID49IGVuZCB8fCBwcmV2ID49IGVuZCAmJiBpbmRleCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmV3aW5kU3BlZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnMuc3BlZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBzdGFydDogc3RhcnQsXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn1cblxudmFyIF9TcGxpZGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBfU3BsaWRlKHRhcmdldCwgb3B0aW9ucykge1xuICAgIHRoaXMuZXZlbnQgPSBFdmVudEludGVyZmFjZSgpO1xuICAgIHRoaXMuQ29tcG9uZW50cyA9IHt9O1xuICAgIHRoaXMuc3RhdGUgPSBTdGF0ZShDUkVBVEVEKTtcbiAgICB0aGlzLnNwbGlkZXMgPSBbXTtcbiAgICB0aGlzLl9vID0ge307XG4gICAgdGhpcy5fRSA9IHt9O1xuICAgIHZhciByb290ID0gaXNTdHJpbmcodGFyZ2V0KSA/IHF1ZXJ5KGRvY3VtZW50LCB0YXJnZXQpIDogdGFyZ2V0O1xuICAgIGFzc2VydChyb290LCByb290ICsgXCIgaXMgaW52YWxpZC5cIik7XG4gICAgdGhpcy5yb290ID0gcm9vdDtcbiAgICBvcHRpb25zID0gbWVyZ2Uoe1xuICAgICAgbGFiZWw6IGdldEF0dHJpYnV0ZShyb290LCBBUklBX0xBQkVMKSB8fCBcIlwiLFxuICAgICAgbGFiZWxsZWRieTogZ2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfTEFCRUxMRURCWSkgfHwgXCJcIlxuICAgIH0sIERFRkFVTFRTLCBfU3BsaWRlLmRlZmF1bHRzLCBvcHRpb25zIHx8IHt9KTtcblxuICAgIHRyeSB7XG4gICAgICBtZXJnZShvcHRpb25zLCBKU09OLnBhcnNlKGdldEF0dHJpYnV0ZShyb290LCBEQVRBX0FUVFJJQlVURSkpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsIFwiSW52YWxpZCBKU09OXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX28gPSBPYmplY3QuY3JlYXRlKG1lcmdlKHt9LCBvcHRpb25zKSk7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gX1NwbGlkZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLm1vdW50ID0gZnVuY3Rpb24gbW91bnQoRXh0ZW5zaW9ucywgVHJhbnNpdGlvbikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBDb21wb25lbnRzMiA9IHRoaXMuQ29tcG9uZW50cztcbiAgICBhc3NlcnQoc3RhdGUuaXMoW0NSRUFURUQsIERFU1RST1lFRF0pLCBcIkFscmVhZHkgbW91bnRlZCFcIik7XG4gICAgc3RhdGUuc2V0KENSRUFURUQpO1xuICAgIHRoaXMuX0MgPSBDb21wb25lbnRzMjtcbiAgICB0aGlzLl9UID0gVHJhbnNpdGlvbiB8fCB0aGlzLl9UIHx8ICh0aGlzLmlzKEZBREUpID8gRmFkZSA6IFNsaWRlKTtcbiAgICB0aGlzLl9FID0gRXh0ZW5zaW9ucyB8fCB0aGlzLl9FO1xuICAgIHZhciBDb25zdHJ1Y3RvcnMgPSBhc3NpZ24oe30sIENvbXBvbmVudENvbnN0cnVjdG9ycywgdGhpcy5fRSwge1xuICAgICAgVHJhbnNpdGlvbjogdGhpcy5fVFxuICAgIH0pO1xuICAgIGZvck93bihDb25zdHJ1Y3RvcnMsIGZ1bmN0aW9uIChDb21wb25lbnQsIGtleSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IENvbXBvbmVudChfdGhpcywgQ29tcG9uZW50czIsIF90aGlzLl9vKTtcbiAgICAgIENvbXBvbmVudHMyW2tleV0gPSBjb21wb25lbnQ7XG4gICAgICBjb21wb25lbnQuc2V0dXAgJiYgY29tcG9uZW50LnNldHVwKCk7XG4gICAgfSk7XG4gICAgZm9yT3duKENvbXBvbmVudHMyLCBmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICBjb21wb25lbnQubW91bnQgJiYgY29tcG9uZW50Lm1vdW50KCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbWl0KEVWRU5UX01PVU5URUQpO1xuICAgIGFkZENsYXNzKHRoaXMucm9vdCwgQ0xBU1NfSU5JVElBTElaRUQpO1xuICAgIHN0YXRlLnNldChJRExFKTtcbiAgICB0aGlzLmVtaXQoRVZFTlRfUkVBRFkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5zeW5jID0gZnVuY3Rpb24gc3luYyhzcGxpZGUpIHtcbiAgICB0aGlzLnNwbGlkZXMucHVzaCh7XG4gICAgICBzcGxpZGU6IHNwbGlkZVxuICAgIH0pO1xuICAgIHNwbGlkZS5zcGxpZGVzLnB1c2goe1xuICAgICAgc3BsaWRlOiB0aGlzLFxuICAgICAgaXNQYXJlbnQ6IHRydWVcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmlzKElETEUpKSB7XG4gICAgICB0aGlzLl9DLlN5bmMucmVtb3VudCgpO1xuXG4gICAgICBzcGxpZGUuQ29tcG9uZW50cy5TeW5jLnJlbW91bnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8uZ28gPSBmdW5jdGlvbiBnbyhjb250cm9sKSB7XG4gICAgdGhpcy5fQy5Db250cm9sbGVyLmdvKGNvbnRyb2wpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLm9uID0gZnVuY3Rpb24gb24oZXZlbnRzLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZXZlbnQub24oZXZlbnRzLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLm9mZiA9IGZ1bmN0aW9uIG9mZihldmVudHMpIHtcbiAgICB0aGlzLmV2ZW50Lm9mZihldmVudHMpO1xuICAgIHJldHVybi
3B0aGlzO1xuICB9O1xuXG4gIF9wcm90by5lbWl0ID0gZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgIHZhciBfdGhpcyRldmVudDtcblxuICAgIChfdGhpcyRldmVudCA9IHRoaXMuZXZlbnQpLmVtaXQuYXBwbHkoX3RoaXMkZXZlbnQsIFtldmVudF0uY29uY2F0KHNsaWNlKGFyZ3VtZW50cywgMSkpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5hZGQgPSBmdW5jdGlvbiBhZGQoc2xpZGVzLCBpbmRleCkge1xuICAgIHRoaXMuX0MuU2xpZGVzLmFkZChzbGlkZXMsIGluZGV4KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5yZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUobWF0Y2hlcikge1xuICAgIHRoaXMuX0MuU2xpZGVzLnJlbW92ZShtYXRjaGVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5pcyA9IGZ1bmN0aW9uIGlzKHR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5fby50eXBlID09PSB0eXBlO1xuICB9O1xuXG4gIF9wcm90by5yZWZyZXNoID0gZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICB0aGlzLmVtaXQoRVZFTlRfUkVGUkVTSCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLmRlc3Ryb3kgPSBmdW5jdGlvbiBkZXN0cm95KGNvbXBsZXRlbHkpIHtcbiAgICBpZiAoY29tcGxldGVseSA9PT0gdm9pZCAwKSB7XG4gICAgICBjb21wbGV0ZWx5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgZXZlbnQgPSB0aGlzLmV2ZW50LFxuICAgICAgICBzdGF0ZSA9IHRoaXMuc3RhdGU7XG5cbiAgICBpZiAoc3RhdGUuaXMoQ1JFQVRFRCkpIHtcbiAgICAgIEV2ZW50SW50ZXJmYWNlKHRoaXMpLm9uKEVWRU5UX1JFQURZLCB0aGlzLmRlc3Ryb3kuYmluZCh0aGlzLCBjb21wbGV0ZWx5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvck93bih0aGlzLl9DLCBmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICAgIGNvbXBvbmVudC5kZXN0cm95ICYmIGNvbXBvbmVudC5kZXN0cm95KGNvbXBsZXRlbHkpO1xuICAgICAgfSwgdHJ1ZSk7XG4gICAgICBldmVudC5lbWl0KEVWRU5UX0RFU1RST1kpO1xuICAgICAgZXZlbnQuZGVzdHJveSgpO1xuICAgICAgY29tcGxldGVseSAmJiBlbXB0eSh0aGlzLnNwbGlkZXMpO1xuICAgICAgc3RhdGUuc2V0KERFU1RST1lFRCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX2NyZWF0ZUNsYXNzKF9TcGxpZGUsIFt7XG4gICAga2V5OiBcIm9wdGlvbnNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBzZXQob3B0aW9ucykge1xuICAgICAgdGhpcy5fQy5NZWRpYS5zZXQob3B0aW9ucywgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxlbmd0aFwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX0MuU2xpZGVzLmdldExlbmd0aCh0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5kZXhcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9DLkNvbnRyb2xsZXIuZ2V0SW5kZXgoKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gX1NwbGlkZTtcbn0oKTtcblxudmFyIFNwbGlkZSA9IF9TcGxpZGU7XG5TcGxpZGUuZGVmYXVsdHMgPSB7fTtcblNwbGlkZS5TVEFURVMgPSBTVEFURVM7XG52YXIgQ0xBU1NfUkVOREVSRUQgPSBcImlzLXJlbmRlcmVkXCI7XG52YXIgUkVOREVSRVJfREVGQVVMVF9DT05GSUcgPSB7XG4gIGxpc3RUYWc6IFwidWxcIixcbiAgc2xpZGVUYWc6IFwibGlcIlxufTtcblxudmFyIFN0eWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3R5bGUoaWQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLnN0eWxlcyA9IHt9O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgdmFyIF9wcm90bzIgPSBTdHlsZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMi5ydWxlID0gZnVuY3Rpb24gcnVsZShzZWxlY3RvciwgcHJvcCwgdmFsdWUsIGJyZWFrcG9pbnQpIHtcbiAgICBicmVha3BvaW50ID0gYnJlYWtwb2ludCB8fCBcImRlZmF1bHRcIjtcbiAgICB2YXIgc2VsZWN0b3JzID0gdGhpcy5zdHlsZXNbYnJlYWtwb2ludF0gPSB0aGlzLnN0eWxlc1ticmVha3BvaW50XSB8fCB7fTtcbiAgICB2YXIgc3R5bGVzID0gc2VsZWN0b3JzW3NlbGVjdG9yXSA9IHNlbGVjdG9yc1tzZWxlY3Rvcl0gfHwge307XG4gICAgc3R5bGVzW3Byb3BdID0gdmFsdWU7XG4gIH07XG5cbiAgX3Byb3RvMi5idWlsZCA9IGZ1bmN0aW9uIGJ1aWxkKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgICBpZiAodGhpcy5zdHlsZXMuZGVmYXVsdCkge1xuICAgICAgY3NzICs9IHRoaXMuYnVpbGRTZWxlY3RvcnModGhpcy5zdHlsZXMuZGVmYXVsdCk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmtleXModGhpcy5zdHlsZXMpLnNvcnQoZnVuY3Rpb24gKG4sIG0pIHtcbiAgICAgIHJldHVybiBfdGhpczIub3B0aW9ucy5tZWRpYVF1ZXJ5ID09PSBcIm1pblwiID8gK24gLSArbSA6ICttIC0gK247XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoYnJlYWtwb2ludCkge1xuICAgICAgaWYgKGJyZWFrcG9pbnQgIT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICAgIGNzcyArPSBcIkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiICsgYnJlYWtwb2ludCArIFwicHgpIHtcIjtcbiAgICAgICAgY3NzICs9IF90aGlzMi5idWlsZFNlbGVjdG9ycyhfdGhpczIuc3R5bGVzW2JyZWFrcG9pbnRdKTtcbiAgICAgICAgY3NzICs9IFwifVwiO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjc3M7XG4gIH07XG5cbiAgX3Byb3RvMi5idWlsZFNlbGVjdG9ycyA9IGZ1bmN0aW9uIGJ1aWxkU2VsZWN0b3JzKHNlbGVjdG9ycykge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdmFyIGNzcyA9IFwiXCI7XG4gICAgZm9yT3duKHNlbGVjdG9ycywgZnVuY3Rpb24gKHN0eWxlcywgc2VsZWN0b3IpIHtcbiAgICAgIHNlbGVjdG9yID0gKFwiI1wiICsgX3RoaXMzLmlkICsgXCIgXCIgKyBzZWxlY3RvcikudHJpbSgpO1xuICAgICAgY3NzICs9IHNlbGVjdG9yICsgXCIge1wiO1xuICAgICAgZm9yT3duKHN0eWxlcywgZnVuY3Rpb24gKHZhbHVlLCBwcm9wKSB7XG4gICAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgIGNzcyArPSBwcm9wICsgXCI6IFwiICsgdmFsdWUgKyBcIjtcIjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjc3MgKz0gXCJ9XCI7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNzcztcbiAgfTtcblxuICByZXR1cm4gU3R5bGU7XG59KCk7XG5cbnZhciBTcGxpZGVSZW5kZXJlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNwbGlkZVJlbmRlcmVyKGNvbnRlbn
3RzLCBvcHRpb25zLCBjb25maWcsIGRlZmF1bHRzKSB7XG4gICAgdGhpcy5zbGlkZXMgPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7fTtcbiAgICB0aGlzLmJyZWFrcG9pbnRzID0gW107XG4gICAgbWVyZ2UoREVGQVVMVFMsIGRlZmF1bHRzIHx8IHt9KTtcbiAgICBtZXJnZShtZXJnZSh0aGlzLm9wdGlvbnMsIERFRkFVTFRTKSwgb3B0aW9ucyB8fCB7fSk7XG4gICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgIHRoaXMuY29uZmlnID0gYXNzaWduKHt9LCBSRU5ERVJFUl9ERUZBVUxUX0NPTkZJRywgY29uZmlnIHx8IHt9KTtcbiAgICB0aGlzLmlkID0gdGhpcy5jb25maWcuaWQgfHwgdW5pcXVlSWQoXCJzcGxpZGVcIik7XG4gICAgdGhpcy5TdHlsZSA9IG5ldyBTdHlsZSh0aGlzLmlkLCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuRGlyZWN0aW9uID0gRGlyZWN0aW9uKG51bGwsIG51bGwsIHRoaXMub3B0aW9ucyk7XG4gICAgYXNzZXJ0KHRoaXMuY29udGVudHMubGVuZ3RoLCBcIlByb3ZpZGUgYXQgbGVhc3QgMSBjb250ZW50LlwiKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIFNwbGlkZVJlbmRlcmVyLmNsZWFuID0gZnVuY3Rpb24gY2xlYW4oc3BsaWRlKSB7XG4gICAgdmFyIF9FdmVudEludGVyZmFjZTE0ID0gRXZlbnRJbnRlcmZhY2Uoc3BsaWRlKSxcbiAgICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2UxNC5vbjtcblxuICAgIHZhciByb290ID0gc3BsaWRlLnJvb3Q7XG4gICAgdmFyIGNsb25lcyA9IHF1ZXJ5QWxsKHJvb3QsIFwiLlwiICsgQ0xBU1NfQ0xPTkUpO1xuICAgIG9uKEVWRU5UX01PVU5URUQsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW92ZShjaGlsZChyb290LCBcInN0eWxlXCIpKTtcbiAgICB9KTtcbiAgICByZW1vdmUoY2xvbmVzKTtcbiAgfTtcblxuICB2YXIgX3Byb3RvMyA9IFNwbGlkZVJlbmRlcmVyLnByb3RvdHlwZTtcblxuICBfcHJvdG8zLmluaXQgPSBmdW5jdGlvbiBpbml0KCkge1xuICAgIHRoaXMucGFyc2VCcmVha3BvaW50cygpO1xuICAgIHRoaXMuaW5pdFNsaWRlcygpO1xuICAgIHRoaXMucmVnaXN0ZXJSb290U3R5bGVzKCk7XG4gICAgdGhpcy5yZWdpc3RlclRyYWNrU3R5bGVzKCk7XG4gICAgdGhpcy5yZWdpc3RlclNsaWRlU3R5bGVzKCk7XG4gICAgdGhpcy5yZWdpc3Rlckxpc3RTdHlsZXMoKTtcbiAgfTtcblxuICBfcHJvdG8zLmluaXRTbGlkZXMgPSBmdW5jdGlvbiBpbml0U2xpZGVzKCkge1xuICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgcHVzaCh0aGlzLnNsaWRlcywgdGhpcy5jb250ZW50cy5tYXAoZnVuY3Rpb24gKGNvbnRlbnQsIGluZGV4KSB7XG4gICAgICBjb250ZW50ID0gaXNTdHJpbmcoY29udGVudCkgPyB7XG4gICAgICAgIGh0bWw6IGNvbnRlbnRcbiAgICAgIH0gOiBjb250ZW50O1xuICAgICAgY29udGVudC5zdHlsZXMgPSBjb250ZW50LnN0eWxlcyB8fCB7fTtcbiAgICAgIGNvbnRlbnQuYXR0cnMgPSBjb250ZW50LmF0dHJzIHx8IHt9O1xuXG4gICAgICBfdGhpczQuY292ZXIoY29udGVudCk7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gX3RoaXM0Lm9wdGlvbnMuY2xhc3Nlcy5zbGlkZSArIFwiIFwiICsgKGluZGV4ID09PSAwID8gQ0xBU1NfQUNUSVZF
3IDogXCJcIik7XG4gICAgICBhc3NpZ24oY29udGVudC5hdHRycywge1xuICAgICAgICBjbGFzczogKGNsYXNzZXMgKyBcIiBcIiArIChjb250ZW50LmF0dHJzLmNsYXNzIHx8IFwiXCIpKS50cmltKCksXG4gICAgICAgIHN0eWxlOiBfdGhpczQuYnVpbGRTdHlsZXMoY29udGVudC5zdHlsZXMpXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pKTtcblxuICAgIGlmICh0aGlzLmlzTG9vcCgpKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlQ2xvbmVzKHRoaXMuc2xpZGVzKTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvMy5yZWdpc3RlclJvb3RTdHlsZXMgPSBmdW5jdGlvbiByZWdpc3RlclJvb3RTdHlsZXMoKSB7XG4gICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICB0aGlzLmJyZWFrcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICB2YXIgd2lkdGggPSBfcmVmMlswXSxcbiAgICAgICAgICBvcHRpb25zID0gX3JlZjJbMV07XG5cbiAgICAgIF90aGlzNS5TdHlsZS5ydWxlKFwiIFwiLCBcIm1heC13aWR0aFwiLCB1bml0KG9wdGlvbnMud2lkdGgpLCB3aWR0aCk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5yZWdpc3RlclRyYWNrU3R5bGVzID0gZnVuY3Rpb24gcmVnaXN0ZXJUcmFja1N0eWxlcygpIHtcbiAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgIHZhciBTdHlsZTIgPSB0aGlzLlN0eWxlO1xuICAgIHZhciBzZWxlY3RvciA9IFwiLlwiICsgQ0xBU1NfVFJBQ0s7XG4gICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZjNbMF0sXG4gICAgICAgICAgb3B0aW9ucyA9IF9yZWYzWzFdO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIF90aGlzNi5yZXNvbHZlKFwicGFkZGluZ0xlZnRcIiksIF90aGlzNi5jc3NQYWRkaW5nKG9wdGlvbnMsIGZhbHNlKSwgd2lkdGgpO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIF90aGlzNi5yZXNvbHZlKFwicGFkZGluZ1JpZ2h0XCIpLCBfdGhpczYuY3NzUGFkZGluZyhvcHRpb25zLCB0cnVlKSwgd2lkdGgpO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIFwiaGVpZ2h0XCIsIF90aGlzNi5jc3NUcmFja0hlaWdodChvcHRpb25zKSwgd2lkdGgpO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMucmVnaXN0ZXJMaXN0U3R5bGVzID0gZnVuY3Rpb24gcmVnaXN0ZXJMaXN0U3R5bGVzKCkge1xuICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgdmFyIFN0eWxlMiA9IHRoaXMuU3R5bGU7XG4gICAgdmFyIHNlbGVjdG9yID0gXCIuXCIgKyBDTEFTU19MSVNUO1xuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjQpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWY0WzBdLFxuICAgICAgICAgIG9wdGlvbnMgPSBfcmVmNFsxXTtcbiAgICAgIFN0eWxlMi5ydWxlKHNlbGVjdG9yLCBcInRyYW5zZm9ybVwiLCBfdGhpczcuYnVpbGRUcmFuc2xhdGUob3B0aW9ucyksIHdpZHRoKTtcblxuICAgICAgaWYgKCFfdGhpczcuY3NzU2xpZGVIZWlnaHQob3B0aW9ucykpIHtcbiAgICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIFwiYXNwZWN0LXJhdGlvXCIsIF90aGlzNy5jc3NBc3BlY3RSYXRpbyhvcHRpb25zKSwgd2lkdGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMucmVnaXN0ZXJTbGlkZVN0eWxlcyA9IGZ1bmN0aW9uIHJlZ2lzdGVyU2xpZGVTdHlsZXMoKSB7XG4gICAgdmFyIF90aGlzOCA9IHRoaXM7XG5cbiAgICB2YXIgU3R5bGUyID0gdGhpcy5TdHlsZTtcbiAgICB2YXIgc2VsZWN0b3IgPSBcIi5cIiArIENMQVNTX1NMSURFO1xuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjUpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWY1WzBdLFxuICAgICAgICAgIG9wdGlvbnMgPSBfcmVmNVsxXTtcbiAgICAgIFN0eWxlMi5ydWxlKHNlbGVjdG9yLCBcIndpZHRoXCIsIF90aGlzOC5jc3NTbGlkZVdpZHRoKG9wdGlvbnMpLCB3aWR0aCk7XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgXCJoZWlnaHRcIiwgX3RoaXM4LmNzc1NsaWRlSGVpZ2h0KG9wdGlvbnMpIHx8IFwiMTAwJVwiLCB3aWR0aCk7XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgX3RoaXM4LnJlc29sdmUoXCJtYXJnaW5SaWdodFwiKSwgdW5pdChvcHRpb25zLmdhcCkgfHwgXCIwcHhcIiwgd2lkdGgpO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IgKyBcIiA+IGltZ1wiLCBcImRpc3BsYXlcIiwgb3B0aW9ucy5jb3ZlciA/IFwibm9uZVwiIDogXCJpbmxpbmVcIiwgd2lkdGgpO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRUcmFuc2xhdGUgPSBmdW5jdGlvbiBidWlsZFRyYW5zbGF0ZShvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzJERpcmVjdGlvbiA9IHRoaXMuRGlyZWN0aW9uLFxuICAgICAgICByZXNvbHZlID0gX3RoaXMkRGlyZWN0aW9uLnJlc29sdmUsXG4gICAgICAgIG9yaWVudCA9IF90aGlzJERpcmVjdGlvbi5vcmllbnQ7XG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHZhbHVlcy5wdXNoKHRoaXMuY3NzT2Zmc2V0Q2xvbmVzKG9wdGlvbnMpKTtcbiAgICB2YWx1ZXMucHVzaCh0aGlzLmNzc09mZnNldEdhcHMob3B0aW9ucykpO1xuXG4gICAgaWYgKHRoaXMuaXNDZW50ZXIob3B0aW9ucykpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMuYnVpbGRDc3NWYWx1ZShvcmllbnQoLTUwKSwgXCIlXCIpKTtcbiAgICAgIHZhbHVlcy5wdXNoLmFwcGx5KHZhbHVlcywgdGhpcy5jc3NPZmZzZXRDZW50ZXIob3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKEJvb2xlYW4pLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBcInRyYW5zbGF0ZVwiICsgcmVzb2x2ZShcIlhcIikgKyBcIihcIiArIHZhbHVlICsgXCIpXCI7XG4gICAgfSkuam9pbihcIiBcIik7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NPZmZzZXRDbG9uZXMgPSBmdW5jdGlvbiBjc3NPZmZzZXRDbG9uZXMob3B0aW9ucykge1xuICAgIHZhciBfdGhpcyREaXJlY3Rpb24yID0gdGh
3pcy5EaXJlY3Rpb24sXG4gICAgICAgIHJlc29sdmUgPSBfdGhpcyREaXJlY3Rpb24yLnJlc29sdmUsXG4gICAgICAgIG9yaWVudCA9IF90aGlzJERpcmVjdGlvbjIub3JpZW50O1xuICAgIHZhciBjbG9uZUNvdW50ID0gdGhpcy5nZXRDbG9uZUNvdW50KCk7XG5cbiAgICBpZiAodGhpcy5pc0ZpeGVkV2lkdGgob3B0aW9ucykpIHtcbiAgICAgIHZhciBfdGhpcyRwYXJzZUNzc1ZhbHVlID0gdGhpcy5wYXJzZUNzc1ZhbHVlKG9wdGlvbnNbcmVzb2x2ZShcImZpeGVkV2lkdGhcIildKSxcbiAgICAgICAgICB2YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWUudmFsdWUsXG4gICAgICAgICAgdW5pdDIgPSBfdGhpcyRwYXJzZUNzc1ZhbHVlLnVuaXQ7XG5cbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KHZhbHVlKSAqIGNsb25lQ291bnQsIHVuaXQyKTtcbiAgICB9XG5cbiAgICB2YXIgcGVyY2VudCA9IDEwMCAqIGNsb25lQ291bnQgLyBvcHRpb25zLnBlclBhZ2U7XG4gICAgcmV0dXJuIG9yaWVudChwZXJjZW50KSArIFwiJVwiO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzT2Zmc2V0Q2VudGVyID0gZnVuY3Rpb24gY3NzT2Zmc2V0Q2VudGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMkRGlyZWN0aW9uMyA9IHRoaXMuRGlyZWN0aW9uLFxuICAgICAgICByZXNvbHZlID0gX3RoaXMkRGlyZWN0aW9uMy5yZXNvbHZlLFxuICAgICAgICBvcmllbnQgPSBfdGhpcyREaXJlY3Rpb24zLm9yaWVudDtcblxuICAgIGlmICh0aGlzLmlzRml4ZWRXaWR0aChvcHRpb25zKSkge1xuICAgICAgdmFyIF90aGlzJHBhcnNlQ3NzVmFsdWUyID0gdGhpcy5wYXJzZUNzc1ZhbHVlKG9wdGlvbnNbcmVzb2x2ZShcImZpeGVkV2lkdGhcIildKSxcbiAgICAgICAgICB2YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWUyLnZhbHVlLFxuICAgICAgICAgIHVuaXQyID0gX3RoaXMkcGFyc2VDc3NWYWx1ZTIudW5pdDtcblxuICAgICAgcmV0dXJuIFt0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KHZhbHVlIC8gMiksIHVuaXQyKV07XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHZhciBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlLFxuICAgICAgICBnYXAgPSBvcHRpb25zLmdhcDtcbiAgICB2YWx1ZXMucHVzaChvcmllbnQoNTAgLyBwZXJQYWdlKSArIFwiJVwiKTtcblxuICAgIGlmIChnYXApIHtcbiAgICAgIHZhciBfdGhpcyRwYXJzZUNzc1ZhbHVlMyA9IHRoaXMucGFyc2VDc3NWYWx1ZShnYXApLFxuICAgICAgICAgIF92YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWUzLnZhbHVlLFxuICAgICAgICAgIF91bml0ID0gX3RoaXMkcGFyc2VDc3NWYWx1ZTMudW5pdDtcblxuICAgICAgdmFyIGdhcE9mZnNldCA9IChfdmFsdWUgLyBwZXJQYWdlIC0gX3ZhbHVlKSAvIDI7XG4gICAgICB2YWx1ZXMucHVzaCh0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KGdhcE9mZnNldCksIF91bml0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfTtcblxuICBfcHJvdG8zLmNzc09mZnNldEdhcHMgPSBmdW5jdGlvbiBjc3NPZmZzZXRHYXBzKG9wdGlvbnMpIHtcbiAgICB2YXIgY2xvbmVDb3VudCA9IHRoaXMuZ2V0Q2xvbmVDb3VudCgpO1xuXG4gICAgaWYgKGNsb25lQ291bnQgJiYgb3B0aW9ucy5nYXApIHtcbiAgICAgIHZhciBvcmllbnQgPSB0aGlzLkRpcmVjdGlvbi5vcmllbnQ7XG5cbiAgICAgIHZhciBfdGhpcyRwYXJzZUNzc1ZhbHVlNCA9IHRoaXMucGFyc2VDc3NWYWx1ZShvcHRpb25zLmdhcCksXG4gICAgICAgICAgdmFsdWUgPSBfdGhpcyRwYXJzZUNzc1ZhbHVlNC52YWx1ZSxcbiAgICAgICAgICB1bml0MiA9IF90aGlzJHBhcnNlQ3NzVmFsdWU0LnVuaXQ7XG5cbiAgICAgIGlmICh0aGlzLmlzRml4ZWRXaWR0aChvcHRpb25zKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZENzc1ZhbHVlKG9yaWVudCh2YWx1ZSAqIGNsb25lQ291bnQpLCB1bml0Mik7XG4gICAgICB9XG5cbiAgICAgIHZhciBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlO1xuICAgICAgdmFyIGdhcHMgPSBjbG9uZUNvdW50IC8gcGVyUGFnZTtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KGdhcHMgKiB2YWx1ZSksIHVuaXQyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICBfcHJvdG8zLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlKHByb3ApIHtcbiAgICByZXR1cm4gY2FtZWxUb0tlYmFiKHRoaXMuRGlyZWN0aW9uLnJlc29sdmUocHJvcCkpO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzUGFkZGluZyA9IGZ1bmN0aW9uIGNzc1BhZGRpbmcob3B0aW9ucywgcmlnaHQpIHtcbiAgICB2YXIgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZztcbiAgICB2YXIgcHJvcCA9IHRoaXMuRGlyZWN0aW9uLnJlc29sdmUocmlnaHQgPyBcInJpZ2h0XCIgOiBcImxlZnRcIiwgdHJ1ZSk7XG4gICAgcmV0dXJuIHBhZGRpbmcgJiYgdW5pdChwYWRkaW5nW3Byb3BdIHx8IChpc09iamVjdChwYWRkaW5nKSA/IDAgOiBwYWRkaW5nKSkgfHwgXCIwcHhcIjtcbiAgfTtcblxuICBfcHJvdG8zLmNzc1RyYWNrSGVpZ2h0ID0gZnVuY3Rpb24gY3NzVHJhY2tIZWlnaHQob3B0aW9ucykge1xuICAgIHZhciBoZWlnaHQgPSBcIlwiO1xuXG4gICAgaWYgKHRoaXMuaXNWZXJ0aWNhbCgpKSB7XG4gICAgICBoZWlnaHQgPSB0aGlzLmNzc0hlaWdodChvcHRpb25zKTtcbiAgICAgIGFzc2VydChoZWlnaHQsICdcImhlaWdodFwiIGlzIG1pc3NpbmcuJyk7XG4gICAgICBoZWlnaHQgPSBcImNhbGMoXCIgKyBoZWlnaHQgKyBcIiAtIFwiICsgdGhpcy5jc3NQYWRkaW5nKG9wdGlvbnMsIGZhbHNlKSArIFwiIC0gXCIgKyB0aGlzLmNzc1BhZGRpbmcob3B0aW9ucywgdHJ1ZSkgKyBcIilcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gaGVpZ2h0O1xuICB9O1xuXG4gIF9wcm90bzMuY3NzSGVpZ2h0ID0gZnVuY3Rpb24gY3NzSGVpZ2h0KG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdW5pdChvcHRpb25zLmhlaWdodCk7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NTbGlkZVdpZHRoID0gZnVuY3Rpb24gY3NzU2xpZGVXaWR0aChvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuYXV0b1dpZHRoID8gXCJcIiA6IHVuaXQob3B0aW9ucy5maXhlZFdpZHRoKSB8fCAodGhpcy5pc1ZlcnRpY2FsKCkgPyBcIlwiIDogdGhpcy5jc3NTbGlkZVNpemUob3B0aW9ucykpO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzU2xpZGVIZWlnaHQgPSBmdW5jdGlvbiBjc3NTbGlkZUhlaWdodChvcHRpb25zKSB7XG4gICAgcmV0dXJuIHVuaXQob3B0aW9ucy5maXhlZEhlaWdodCkgfHwgKHRoaXMuaXNWZXJ0aWNhbCgpID8gb3B0aW9ucy5hdXRv
3SGVpZ2h0ID8gXCJcIiA6IHRoaXMuY3NzU2xpZGVTaXplKG9wdGlvbnMpIDogdGhpcy5jc3NIZWlnaHQob3B0aW9ucykpO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzU2xpZGVTaXplID0gZnVuY3Rpb24gY3NzU2xpZGVTaXplKG9wdGlvbnMpIHtcbiAgICB2YXIgZ2FwID0gdW5pdChvcHRpb25zLmdhcCk7XG4gICAgcmV0dXJuIFwiY2FsYygoMTAwJVwiICsgKGdhcCAmJiBcIiArIFwiICsgZ2FwKSArIFwiKS9cIiArIChvcHRpb25zLnBlclBhZ2UgfHwgMSkgKyAoZ2FwICYmIFwiIC0gXCIgKyBnYXApICsgXCIpXCI7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NBc3BlY3RSYXRpbyA9IGZ1bmN0aW9uIGNzc0FzcGVjdFJhdGlvKG9wdGlvbnMpIHtcbiAgICB2YXIgaGVpZ2h0UmF0aW8gPSBvcHRpb25zLmhlaWdodFJhdGlvO1xuICAgIHJldHVybiBoZWlnaHRSYXRpbyA/IFwiXCIgKyAxIC8gaGVpZ2h0UmF0aW8gOiBcIlwiO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRDc3NWYWx1ZSA9IGZ1bmN0aW9uIGJ1aWxkQ3NzVmFsdWUodmFsdWUsIHVuaXQyKSB7XG4gICAgcmV0dXJuIFwiXCIgKyB2YWx1ZSArIHVuaXQyO1xuICB9O1xuXG4gIF9wcm90bzMucGFyc2VDc3NWYWx1ZSA9IGZ1bmN0aW9uIHBhcnNlQ3NzVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB2YXIgbnVtYmVyID0gcGFyc2VGbG9hdCh2YWx1ZSkgfHwgMDtcbiAgICAgIHZhciB1bml0MiA9IHZhbHVlLnJlcGxhY2UoL1xcZCooXFwuXFxkKik/LywgXCJcIikgfHwgXCJweFwiO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IG51bWJlcixcbiAgICAgICAgdW5pdDogdW5pdDJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHVuaXQ6IFwicHhcIlxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvMy5wYXJzZUJyZWFrcG9pbnRzID0gZnVuY3Rpb24gcGFyc2VCcmVha3BvaW50cygpIHtcbiAgICB2YXIgX3RoaXM5ID0gdGhpcztcblxuICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMub3B0aW9ucy5icmVha3BvaW50cztcbiAgICB0aGlzLmJyZWFrcG9pbnRzLnB1c2goW1wiZGVmYXVsdFwiLCB0aGlzLm9wdGlvbnNdKTtcblxuICAgIGlmIChicmVha3BvaW50cykge1xuICAgICAgZm9yT3duKGJyZWFrcG9pbnRzLCBmdW5jdGlvbiAob3B0aW9ucywgd2lkdGgpIHtcbiAgICAgICAgX3RoaXM5LmJyZWFrcG9pbnRzLnB1c2goW3dpZHRoLCBtZXJnZShtZXJnZSh7fSwgX3RoaXM5Lm9wdGlvbnMpLCBvcHRpb25zKV0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90bzMuaXNGaXhlZFdpZHRoID0gZnVuY3Rpb24gaXNGaXhlZFdpZHRoKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gISFvcHRpb25zW3RoaXMuRGlyZWN0aW9uLnJlc29sdmUoXCJmaXhlZFdpZHRoXCIpXTtcbiAgfTtcblxuICBfcHJvdG8zLmlzTG9vcCA9IGZ1bmN0aW9uIGlzTG9vcCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnR5cGUgPT09IExPT1A7XG4gIH07XG5cbiAgX3Byb3RvMy5pc0NlbnRlciA9IGZ1bmN0aW9uIGlzQ2VudGVyKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5mb2N1cyA9PT0gXCJjZW50ZXJcIikge1xuICAgICAgaWYgKHRoaXMuaXNMb29wKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudHlwZSA9PT0gU0xJREUpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLm9wdGlvbnMudHJpbVNwYWNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBfcHJvdG8zLmlzVmVydGljYWwgPSBmdW5jdGlvbiBpc1ZlcnRpY2FsKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09PSBUVEI7XG4gIH07XG5cbiAgX3Byb3RvMy5idWlsZENsYXNzZXMgPSBmdW5jdGlvbiBidWlsZENsYXNzZXMoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgcmV0dXJuIFtDTEFTU19ST09ULCBDTEFTU19ST09UICsgXCItLVwiICsgb3B0aW9ucy50eXBlLCBDTEFTU19ST09UICsgXCItLVwiICsgb3B0aW9ucy5kaXJlY3Rpb24sIG9wdGlvbnMuZHJhZyAmJiBDTEFTU19ST09UICsgXCItLWRyYWdnYWJsZVwiLCBvcHRpb25zLmlzTmF2aWdhdGlvbiAmJiBDTEFTU19ST09UICsgXCItLW5hdlwiLCBDTEFTU19BQ1RJVkUsICF0aGlzLmNvbmZpZy5oaWRkZW4gJiYgQ0xBU1NfUkVOREVSRURdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgfTtcblxuICBfcHJvdG8zLmJ1aWxkQXR0cnMgPSBmdW5jdGlvbiBidWlsZEF0dHJzKGF0dHJzKSB7XG4gICAgdmFyIGF0dHIgPSBcIlwiO1xuICAgIGZvck93bihhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIGF0dHIgKz0gdmFsdWUgPyBcIiBcIiArIGNhbWVsVG9LZWJhYihrZXkpICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiA6IFwiXCI7XG4gICAgfSk7XG4gICAgcmV0dXJuIGF0dHIudHJpbSgpO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRTdHlsZXMgPSBmdW5jdGlvbiBidWlsZFN0eWxlcyhzdHlsZXMpIHtcbiAgICB2YXIgc3R5bGUgPSBcIlwiO1xuICAgIGZvck93bihzdHlsZXMsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICBzdHlsZSArPSBcIiBcIiArIGNhbWVsVG9LZWJhYihrZXkpICsgXCI6XCIgKyB2YWx1ZSArIFwiO1wiO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZS50cmltKCk7XG4gIH07XG5cbiAgX3Byb3RvMy5yZW5kZXJTbGlkZXMgPSBmdW5jdGlvbiByZW5kZXJTbGlkZXMoKSB7XG4gICAgdmFyIF90aGlzMTAgPSB0aGlzO1xuXG4gICAgdmFyIHRhZyA9IHRoaXMuY29uZmlnLnNsaWRlVGFnO1xuICAgIHJldHVybiB0aGlzLnNsaWRlcy5tYXAoZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBcIjxcIiArIHRhZyArIFwiIFwiICsgX3RoaXMxMC5idWlsZEF0dHJzKGNvbnRlbnQuYXR0cnMpICsgXCI+XCIgKyAoY29udGVudC5odG1sIHx8IFwiXCIpICsgXCI8L1wiICsgdGFnICsgXCI+XCI7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICBfcHJvdG8zLmNvdmVyID0gZnVuY3Rpb24gY292ZXIoY29udGVudCkge1xuICAgIHZhciBzdHlsZXMgPSBjb250ZW50LnN0eWxlcyxcbiAgICAgICAgX2NvbnRlbnQkaHRtbCA9IGNvbnRlbnQuaHRtbCxcbiAgICAgICAgaH
3RtbCA9IF9jb250ZW50JGh0bWwgPT09IHZvaWQgMCA/IFwiXCIgOiBfY29udGVudCRodG1sO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb3ZlciAmJiAhdGhpcy5vcHRpb25zLmxhenlMb2FkKSB7XG4gICAgICB2YXIgc3JjID0gaHRtbC5tYXRjaCgvPGltZy4qP3NyY1xccyo9XFxzKihbJ1wiXSkoLis/KVxcMS4qPz4vKTtcblxuICAgICAgaWYgKHNyYyAmJiBzcmNbMl0pIHtcbiAgICAgICAgc3R5bGVzLmJhY2tncm91bmQgPSBcImNlbnRlci9jb3ZlciBuby1yZXBlYXQgdXJsKCdcIiArIHNyY1syXSArIFwiJylcIjtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvMy5nZW5lcmF0ZUNsb25lcyA9IGZ1bmN0aW9uIGdlbmVyYXRlQ2xvbmVzKGNvbnRlbnRzKSB7XG4gICAgdmFyIGNsYXNzZXMgPSB0aGlzLm9wdGlvbnMuY2xhc3NlcztcbiAgICB2YXIgY291bnQgPSB0aGlzLmdldENsb25lQ291bnQoKTtcbiAgICB2YXIgc2xpZGVzID0gY29udGVudHMuc2xpY2UoKTtcblxuICAgIHdoaWxlIChzbGlkZXMubGVuZ3RoIDwgY291bnQpIHtcbiAgICAgIHB1c2goc2xpZGVzLCBzbGlkZXMpO1xuICAgIH1cblxuICAgIHB1c2goc2xpZGVzLnNsaWNlKC1jb3VudCkucmV2ZXJzZSgpLCBzbGlkZXMuc2xpY2UoMCwgY291bnQpKS5mb3JFYWNoKGZ1bmN0aW9uIChjb250ZW50LCBpbmRleCkge1xuICAgICAgdmFyIGF0dHJzID0gYXNzaWduKHt9LCBjb250ZW50LmF0dHJzLCB7XG4gICAgICAgIGNsYXNzOiBjb250ZW50LmF0dHJzLmNsYXNzICsgXCIgXCIgKyBjbGFzc2VzLmNsb25lXG4gICAgICB9KTtcbiAgICAgIHZhciBjbG9uZSA9IGFzc2lnbih7fSwgY29udGVudCwge1xuICAgICAgICBhdHRyczogYXR0cnNcbiAgICAgIH0pO1xuICAgICAgaW5kZXggPCBjb3VudCA/IGNvbnRlbnRzLnVuc2hpZnQoY2xvbmUpIDogY29udGVudHMucHVzaChjbG9uZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5nZXRDbG9uZUNvdW50ID0gZnVuY3Rpb24gZ2V0Q2xvbmVDb3VudCgpIHtcbiAgICBpZiAodGhpcy5pc0xvb3AoKSkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRpb25zLmNsb25lcykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5jbG9uZXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBwZXJQYWdlID0gbWF4LmFwcGx5KHZvaWQgMCwgdGhpcy5icmVha3BvaW50cy5tYXAoZnVuY3Rpb24gKF9yZWY2KSB7XG4gICAgICAgIHZhciBvcHRpb25zMiA9IF9yZWY2WzFdO1xuICAgICAgICByZXR1cm4gb3B0aW9uczIucGVyUGFnZTtcbiAgICAgIH0pKTtcbiAgICAgIHJldHVybiBwZXJQYWdlICogKChvcHRpb25zLmZsaWNrTWF4UGFnZXMgfHwgMSkgKyAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfTtcblxuICBfcHJvdG8zLnJlbmRlckFycm93cyA9IGZ1bmN0aW9uIHJlbmRlckFycm93cygpIHtcbiAgICB2YXIgaHRtbCA9IFwiXCI7XG4gICAgaHRtbCArPSBcIjxkaXYgY2xhc3M9XFxcIlwiICsgdGhpcy5vcHRpb25zLmNsYXNzZXMuYXJyb3dzICsgXCJcXFwiPlwiO1xuICAgIGh0bWwgKz0gdGhpcy5yZW5kZXJBcnJvdyh0cnVlKTtcbiAgICBodG1sICs9IHRoaXMucmVuZGVyQXJyb3coZmFsc2UpO1xuICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICByZXR1cm4gaHRtbDtcbiAgfTtcblxuICBfcHJvdG8zLnJlbmRlckFycm93ID0gZnVuY3Rpb24gcmVuZGVyQXJyb3cocHJldikge1xuICAgIHZhciBfdGhpcyRvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICBjbGFzc2VzID0gX3RoaXMkb3B0aW9ucy5jbGFzc2VzLFxuICAgICAgICBpMThuID0gX3RoaXMkb3B0aW9ucy5pMThuO1xuICAgIHZhciBhdHRycyA9IHtcbiAgICAgIGNsYXNzOiBjbGFzc2VzLmFycm93ICsgXCIgXCIgKyAocHJldiA/IGNsYXNzZXMucHJldiA6IGNsYXNzZXMubmV4dCksXG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgYXJpYUxhYmVsOiBwcmV2ID8gaTE4bi5wcmV2IDogaTE4bi5uZXh0XG4gICAgfTtcbiAgICByZXR1cm4gXCI8YnV0dG9uIFwiICsgdGhpcy5idWlsZEF0dHJzKGF0dHJzKSArIFwiPjxzdmcgeG1sbnM9XFxcIlwiICsgWE1MX05BTUVfU1BBQ0UgKyBcIlxcXCIgdmlld0JveD1cXFwiMCAwIFwiICsgU0laRSArIFwiIFwiICsgU0laRSArIFwiXFxcIiB3aWR0aD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiPjxwYXRoIGQ9XFxcIlwiICsgKHRoaXMub3B0aW9ucy5hcnJvd1BhdGggfHwgUEFUSCkgKyBcIlxcXCIgLz48L3N2Zz48L2J1dHRvbj5cIjtcbiAgfTtcblxuICBfcHJvdG8zLmh0bWwgPSBmdW5jdGlvbiBodG1sKCkge1xuICAgIHZhciBfdGhpcyRjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgcm9vdENsYXNzID0gX3RoaXMkY29uZmlnLnJvb3RDbGFzcyxcbiAgICAgICAgbGlzdFRhZyA9IF90aGlzJGNvbmZpZy5saXN0VGFnLFxuICAgICAgICBhcnJvd3MgPSBfdGhpcyRjb25maWcuYXJyb3dzLFxuICAgICAgICBiZWZvcmVUcmFjayA9IF90aGlzJGNvbmZpZy5iZWZvcmVUcmFjayxcbiAgICAgICAgYWZ0ZXJUcmFjayA9IF90aGlzJGNvbmZpZy5hZnRlclRyYWNrLFxuICAgICAgICBzbGlkZXIgPSBfdGhpcyRjb25maWcuc2xpZGVyLFxuICAgICAgICBiZWZvcmVTbGlkZXIgPSBfdGhpcyRjb25maWcuYmVmb3JlU2xpZGVyLFxuICAgICAgICBhZnRlclNsaWRlciA9IF90aGlzJGNvbmZpZy5hZnRlclNsaWRlcjtcbiAgICB2YXIgaHRtbCA9IFwiXCI7XG4gICAgaHRtbCArPSBcIjxkaXYgaWQ9XFxcIlwiICsgdGhpcy5pZCArIFwiXFxcIiBjbGFzcz1cXFwiXCIgKyB0aGlzLmJ1aWxkQ2xhc3NlcygpICsgXCIgXCIgKyAocm9vdENsYXNzIHx8IFwiXCIpICsgXCJcXFwiPlwiO1xuICAgIGh0bWwgKz0gXCI8c3R5bGU+XCIgKyB0aGlzLlN0eWxlLmJ1aWxkKCkgKyBcIjwvc3R5bGU+XCI7XG5cbiAgICBpZiAoc2xpZGVyKSB7XG4gICAgICBodG1sICs9IGJlZm9yZVNsaWRlciB8fCBcIlwiO1xuICAgICAgaH
3RtbCArPSBcIjxkaXYgY2xhc3M9XFxcInNwbGlkZV9fc2xpZGVyXFxcIj5cIjtcbiAgICB9XG5cbiAgICBodG1sICs9IGJlZm9yZVRyYWNrIHx8IFwiXCI7XG5cbiAgICBpZiAoYXJyb3dzKSB7XG4gICAgICBodG1sICs9IHRoaXMucmVuZGVyQXJyb3dzKCk7XG4gICAgfVxuXG4gICAgaHRtbCArPSBcIjxkaXYgY2xhc3M9XFxcInNwbGlkZV9fdHJhY2tcXFwiPlwiO1xuICAgIGh0bWwgKz0gXCI8XCIgKyBsaXN0VGFnICsgXCIgY2xhc3M9XFxcInNwbGlkZV9fbGlzdFxcXCI+XCI7XG4gICAgaHRtbCArPSB0aGlzLnJlbmRlclNsaWRlcygpO1xuICAgIGh0bWwgKz0gXCI8L1wiICsgbGlzdFRhZyArIFwiPlwiO1xuICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICBodG1sICs9IGFmdGVyVHJhY2sgfHwgXCJcIjtcblxuICAgIGlmIChzbGlkZXIpIHtcbiAgICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICAgIGh0bWwgKz0gYWZ0ZXJTbGlkZXIgfHwgXCJcIjtcbiAgICB9XG5cbiAgICBodG1sICs9IFwiPC9kaXY+XCI7XG4gICAgcmV0dXJuIGh0bWw7XG4gIH07XG5cbiAgcmV0dXJuIFNwbGlkZVJlbmRlcmVyO1xufSgpO1xuXG5leHBvcnQgeyBDTEFTU0VTLCBDTEFTU19BQ1RJVkUsIENMQVNTX0FSUk9XLCBDTEFTU19BUlJPV1MsIENMQVNTX0FSUk9XX05FWFQsIENMQVNTX0FSUk9XX1BSRVYsIENMQVNTX0NMT05FLCBDTEFTU19DT05UQUlORVIsIENMQVNTX0ZPQ1VTX0lOLCBDTEFTU19JTklUSUFMSVpFRCwgQ0xBU1NfTElTVCwgQ0xBU1NfTE9BRElORywgQ0xBU1NfTkVYVCwgQ0xBU1NfT1ZFUkZMT1csIENMQVNTX1BBR0lOQVRJT04sIENMQVNTX1BBR0lOQVRJT05fUEFHRSwgQ0xBU1NfUFJFViwgQ0xBU1NfUFJPR1JFU1MsIENMQVNTX1BST0dSRVNTX0JBUiwgQ0xBU1NfUk9PVCwgQ0xBU1NfU0xJREUsIENMQVNTX1NQSU5ORVIsIENMQVNTX1NSLCBDTEFTU19UT0dHTEUsIENMQVNTX1RPR0dMRV9QQVVTRSwgQ0xBU1NfVE9HR0xFX1BMQVksIENMQVNTX1RSQUNLLCBDTEFTU19WSVNJQkxFLCBERUZBVUxUUywgRVZFTlRfQUNUSVZFLCBFVkVOVF9BUlJPV1NfTU9VTlRFRCwgRVZFTlRfQVJST1dTX1VQREFURUQsIEVWRU5UX0FVVE9QTEFZX1BBVVNFLCBFVkVOVF9BVVRPUExBWV9QTEFZLCBFVkVOVF9BVVRPUExBWV9QTEFZSU5HLCBFVkVOVF9DTElDSywgRVZFTlRfREVTVFJPWSwgRVZFTlRfRFJBRywgRVZFTlRfRFJBR0dFRCwgRVZFTlRfRFJBR0dJTkcsIEVWRU5UX0VORF9JTkRFWF9DSEFOR0VELCBFVkVOVF9ISURERU4sIEVWRU5UX0lOQUNUSVZFLCBFVkVOVF9MQVpZTE9BRF9MT0FERUQsIEVWRU5UX01PVU5URUQsIEVWRU5UX01PVkUsIEVWRU5UX01PVkVELCBFVkVOVF9OQVZJR0FUSU9OX01PVU5URUQsIEVWRU5UX09WRVJGTE9XLCBFVkVOVF9QQUdJTkFUSU9OX01PVU5URUQsIEVWRU5UX1BBR0lOQVRJT05fVVBEQVRFRCwgRVZFTlRfUkVBRFksIEVWRU5UX1JFRlJFU0gsIEVWRU5UX1JFU0laRSwgRVZFTlRfUkVTSVpFRCwgRVZFTlRfU0NST0xMLCBFVkVOVF9TQ1JPTExFRCwgRVZFTlRfU0hJRlRFRCwgRVZFTlRfU0xJREVfS0VZRE9XTiwgRVZFTlRfVVBEQVRFRCwgRVZFTlRfVklTSUJMRSwgRXZlbnRCaW5kZXIsIEV2ZW50SW50ZXJmYWNlLCBGQURFLCBMT09QLCBMVFIsIFJUTCwgUmVxdWVzdEludGVydmFsLCBTTElERSwgU1RBVFVTX0NMQVNTRVMsIFNwbGlkZSwgU3BsaWRlUmVuZGVyZXIsIFN0YXRlLCBUVEIsIFRocm90dGxlLCBTcGxpZGUgYXMgZGVmYXVsdCB9O1xuIiwiLyohXG4gKiBAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi1ncmlkXG4gKiBWZXJzaW9uICA6IDAuNC4xXG4gKiBMaWNlbnNlICA6IE1JVFxuICogQ29weXJpZ2h0OiAyMDIyIE5hb3Rvc2hpIEZ1aml0YVxuICovXG5mdW5jdGlvbiBlbXB0eSQxKGFycmF5KSB7XG4gIGFycmF5Lmxlbmd0aCA9IDA7XG59XG5cbmZ1bmN0aW9uIHNsaWNlJDEoYXJyYXlMaWtlLCBzdGFydCwgZW5kKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnJheUxpa2UsIHN0YXJ0LCBlbmQpO1xufVxuXG5mdW5jdGlvbiBhcHBseSQxKGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmMuYmluZC5hcHBseShmdW5jLCBbbnVsbF0uY29uY2F0KHNsaWNlJDEoYXJndW1lbnRzLCAxKSkpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2YkMSh0eXBlLCBzdWJqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygc3ViamVjdCA9PT0gdHlwZTtcbn1cblxudmFyIGlzQXJyYXkkMSA9IEFycmF5LmlzQXJyYXk7XG5hcHBseSQxKHR5cGVPZiQxLCBcImZ1bmN0aW9uXCIpO1xuYXBwbHkkMSh0eXBlT2YkMSwgXCJzdHJpbmdcIik7XG5hcHBseSQxKHR5cGVPZiQxLCBcInVuZGVmaW5lZFwiKTtcblxuZnVuY3Rpb24gdG9BcnJheSQxKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5JDEodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoJDEodmFsdWVzLCBpdGVyYXRlZSkge1xuICB0b0FycmF5JDEodmFsdWVzKS5mb3JFYWNoKGl0ZXJhdGVlKTtcbn1cblxudmFyIG93bktleXMkMSA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24kMShvYmplY3QsIGl0ZXJhdGVlLCByaWdodCkge1xuICBpZiAob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBvd25LZXlzJDEob2JqZWN0KTtcbiAgICBrZXlzID0gcmlnaHQgPyBrZXlzLnJldmVyc2UoKSA6IGtleXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoa2V5ICE9PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICAgIGlmIChpdGVyYXRlZShvYmplY3Rba2V5XSwga2V5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmplY3Q7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbiQxKG9iamVjdCkge1xuICBzbGljZSQxKGFyZ3VtZW50cywgMSkuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgZm9yT3duJDEoc291cmNlLCBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybi
3BvYmplY3Q7XG59XG5cbnZhciBQUk9KRUNUX0NPREUkMSA9IFwic3BsaWRlXCI7XG5cbmZ1bmN0aW9uIEV2ZW50QmluZGVyKCkge1xuICB2YXIgbGlzdGVuZXJzID0gW107XG5cbiAgZnVuY3Rpb24gYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgdmFyIGlzRXZlbnRUYXJnZXQgPSAoXCJhZGRFdmVudExpc3RlbmVyXCIgaW4gdGFyZ2V0KTtcbiAgICAgIHZhciByZW1vdmVyID0gaXNFdmVudFRhcmdldCA/IHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGFyZ2V0LCBldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wicmVtb3ZlTGlzdGVuZXJcIl0uYmluZCh0YXJnZXQsIGNhbGxiYWNrKTtcbiAgICAgIGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wiYWRkTGlzdGVuZXJcIl0oY2FsbGJhY2spO1xuICAgICAgbGlzdGVuZXJzLnB1c2goW3RhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSwgY2FsbGJhY2ssIHJlbW92ZXJdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVuYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyWzBdID09PSB0YXJnZXQgJiYgbGlzdGVuZXJbMV0gPT09IGV2ZW50ICYmIGxpc3RlbmVyWzJdID09PSBuYW1lc3BhY2UgJiYgKCFjYWxsYmFjayB8fCBsaXN0ZW5lclszXSA9PT0gY2FsbGJhY2spKSB7XG4gICAgICAgICAgbGlzdGVuZXJbNF0oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2godGFyZ2V0LCB0eXBlLCBkZXRhaWwpIHtcbiAgICB2YXIgZTtcbiAgICB2YXIgYnViYmxlcyA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIEN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGUgPSBuZXcgQ3VzdG9tRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiBidWJibGVzLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO1xuICAgICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgZmFsc2UsIGRldGFpbCk7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBpdGVyYXRlZSkge1xuICAgIGZvckVhY2gkMSh0YXJnZXRzLCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQgJiYgZm9yRWFjaCQxKGV2ZW50cywgZnVuY3Rpb24gKGV2ZW50czIpIHtcbiAgICAgICAgZXZlbnRzMi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnROUykge1xuICAgICAgICAgIHZhciBmcmFnbWVudCA9IGV2ZW50TlMuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgIGl0ZXJhdGVlKHRhcmdldCwgZnJhZ21lbnRbMF0sIGZyYWdtZW50WzFdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIGRhdGFbNF0oKTtcbiAgICB9KTtcbiAgICBlbXB0eSQxKGxpc3RlbmVycyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJpbmQ6IGJpbmQsXG4gICAgdW5iaW5kOiB1bmJpbmQsXG4gICAgZGlzcGF0Y2g6IGRpc3BhdGNoLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfTtcbn1cbnZhciBFVkVOVF9WSVNJQkxFID0gXCJ2aXNpYmxlXCI7XG52YXIgRVZFTlRfSElEREVOID0gXCJoaWRkZW5cIjtcbnZhciBFVkVOVF9SRUZSRVNIID0gXCJyZWZyZXNoXCI7XG52YXIgRVZFTlRfVVBEQVRFRCA9IFwidXBkYXRlZFwiO1xudmFyIEVWRU5UX0RFU1RST1kgPSBcImRlc3Ryb3lcIjtcblxuZnVuY3Rpb24gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMikge1xuICB2YXIgYnVzID0gU3BsaWRlMiA/IFNwbGlkZTIuZXZlbnQuYnVzIDogZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICB2YXIgYmluZGVyID0gRXZlbnRCaW5kZXIoKTtcblxuICBmdW5jdGlvbiBvbihldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgYmluZGVyLmJpbmQoYnVzLCB0b0FycmF5JDEoZXZlbnRzKS5qb2luKFwiIFwiKSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGNhbGxiYWNrLmFwcGx5KGNhbGxiYWNrLCBpc0FycmF5JDEoZS5kZXRhaWwpID8gZS5kZXRhaWwgOiBbXSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBlbWl0KGV2ZW50KSB7XG4gICAgYmluZGVyLmRpc3BhdGNoKGJ1cywgZXZlbnQsIHNsaWNlJDEoYXJndW1lbnRzLCAxKSk7XG4gIH1cblxuICBpZiAoU3BsaWRlMikge1xuICAgIFNwbGlkZTIuZXZlbnQub24oRVZFTlRfREVTVFJPWSwgYmluZGVyLmRlc3Ryb3kpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2lnbiQxKGJpbmRlciwge1xuICAgIGJ1czogYnVzLFxuICAgIG9uOiBvbixcbiAgICBvZmY6IGFwcGx5JDEoYmluZGVyLnVuYmluZCwgYnVzKSxcbiAgICBlbWl0OiBlbWl0XG4gIH0pO1xufVxudmFyIENMQVNTX1JPT1QgPSBQUk9KRUNUX0NPREUkMTtcbnZhciBDTEFTU19TTElERSA9IFBST0pFQ1RfQ09ERSQxICsgXCJfX3NsaWRlXCI7XG52YXIgQ0xBU1NfQ09OVEFJTkVSID0gQ0xBU1NfU0xJREUgKyBcIl9fY29udGFpbmVyXCI7XG5cbmZ1bmN0aW9uIGVtcHR5KGFycmF5KSB7XG4gIGFycmF5Lmxlbmd0aCA9IDA7XG59XG5cbmZ1bmN0aW9uIHNsaWNlKGFycmF5TGlrZSwgc3RhcnQsIGVuZCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyYXlMaWtlLCBzdGFydCwgZW5kKTtcbn1cblxuZnVuY3Rpb24gYXBwbHkoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kKG51bGwsIC4uLnNsaWNlKGFyZ3VtZW50cywgMSkpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2YodHlwZSwgc3ViamVjdCkge1xuICByZXR1cm4gdHlwZW9mIHN1YmplY3QgPT09IHR5cGU7XG59XG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAhaXNOdWxsK
3HN1YmplY3QpICYmIHR5cGVPZihcIm9iamVjdFwiLCBzdWJqZWN0KTtcbn1cbmNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuYXBwbHkodHlwZU9mLCBcImZ1bmN0aW9uXCIpO1xuY29uc3QgaXNTdHJpbmcgPSBhcHBseSh0eXBlT2YsIFwic3RyaW5nXCIpO1xuY29uc3QgaXNVbmRlZmluZWQgPSBhcHBseSh0eXBlT2YsIFwidW5kZWZpbmVkXCIpO1xuZnVuY3Rpb24gaXNOdWxsKHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgPT09IG51bGw7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2godmFsdWVzLCBpdGVyYXRlZSkge1xuICB0b0FycmF5KHZhbHVlcykuZm9yRWFjaChpdGVyYXRlZSk7XG59XG5cbmZ1bmN0aW9uIHB1c2goYXJyYXksIGl0ZW1zKSB7XG4gIGFycmF5LnB1c2goLi4udG9BcnJheShpdGVtcykpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGVsbSwgY2xhc3NlcywgYWRkKSB7XG4gIGlmIChlbG0pIHtcbiAgICBmb3JFYWNoKGNsYXNzZXMsIChuYW1lKSA9PiB7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBlbG0uY2xhc3NMaXN0W2FkZCA/IFwiYWRkXCIgOiBcInJlbW92ZVwiXShuYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGFzcyhlbG0sIGNsYXNzZXMpIHtcbiAgdG9nZ2xlQ2xhc3MoZWxtLCBpc1N0cmluZyhjbGFzc2VzKSA/IGNsYXNzZXMuc3BsaXQoXCIgXCIpIDogY2xhc3NlcywgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZChwYXJlbnQsIGNoaWxkcmVuKSB7XG4gIGZvckVhY2goY2hpbGRyZW4sIHBhcmVudC5hcHBlbmRDaGlsZC5iaW5kKHBhcmVudCkpO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVzKGVsbSwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZWxtKSAmJiAoZWxtW1wibXNNYXRjaGVzU2VsZWN0b3JcIl0gfHwgZWxtLm1hdGNoZXMpLmNhbGwoZWxtLCBzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIGNoaWxkcmVuKHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgY29uc3QgY2hpbGRyZW4yID0gcGFyZW50ID8gc2xpY2UocGFyZW50LmNoaWxkcmVuKSA6IFtdO1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbjIuZmlsdGVyKChjaGlsZCkgPT4gbWF0Y2hlcyhjaGlsZCwgc2VsZWN0b3IpKSA6IGNoaWxkcmVuMjtcbn1cblxuZnVuY3Rpb24gY2hpbGQocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbihwYXJlbnQsIHNlbGVjdG9yKVswXSA6IHBhcmVudC5maXJzdEVsZW1lbnRDaGlsZDtcbn1cblxuY29uc3Qgb3duS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIGxldCBrZXlzID0gb3duS2V5cyhvYmplY3QpO1xuICAgIGtleXMgPSByaWdodCA/IGtleXMucmV2ZXJzZSgpIDoga2V5cztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoa2V5ICE9PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICAgIGlmIChpdGVyYXRlZShvYmplY3Rba2V5XSwga2V5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBhc3NpZ24ob2JqZWN0KSB7XG4gIHNsaWNlKGFyZ3VtZW50cywgMSkuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgZm9yT3duKHNvdXJjZSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBvbWl0KG9iamVjdCwga2V5cykge1xuICB0b0FycmF5KGtleXMgfHwgb3duS2V5cyhvYmplY3QpKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBkZWxldGUgb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUoZWxtcywgYXR0cnMpIHtcbiAgZm9yRWFjaChlbG1zLCAoZWxtKSA9PiB7XG4gICAgZm9yRWFjaChhdHRycywgKGF0dHIpID0+IHtcbiAgICAgIGVsbSAmJiBlbG0ucmVtb3ZlQXR0cmlidXRlKGF0dHIpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlKGVsbXMsIGF0dHJzLCB2YWx1ZSkge1xuICBpZiAoaXNPYmplY3QoYXR0cnMpKSB7XG4gICAgZm9yT3duKGF0dHJzLCAodmFsdWUyLCBuYW1lKSA9PiB7XG4gICAgICBzZXRBdHRyaWJ1dGUoZWxtcywgbmFtZSwgdmFsdWUyKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBmb3JFYWNoKGVsbXMsIChlbG0pID0+IHtcbiAgICAgIGlzTnVsbCh2YWx1ZSkgfHwgdmFsdWUgPT09IFwiXCIgPyByZW1vdmVBdHRyaWJ1dGUoZWxtLCBhdHRycykgOiBlbG0uc2V0QXR0cmlidXRlKGF0dHJzLCBTdHJpbmcodmFsdWUpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGUodGFnLCBhdHRycywgcGFyZW50KSB7XG4gIGNvbnN0IGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKGF0dHJzKSB7XG4gICAgaXNTdHJpbmcoYXR0cnMpID8gYWRkQ2xhc3MoZWxtLCBhdHRycykgOiBzZXRBdHRyaWJ1dGUoZWxtLCBhdHRycyk7XG4gIH1cbiAgcGFyZW50ICYmIGFwcGVuZChwYXJlbnQsIGVsbSk7XG4gIHJldHVybiBlbG07XG59XG5cbmZ1bmN0aW9uIHN0eWxlKGVsbSwgcHJvcCwgdmFsdWUpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsbSlbcHJvcF07XG4gIH1cbiAgaWYgKCFpc051bGwodmFsdWUpKSB7XG4gICAgZWxtLnN0eWxlW3Byb3BdID0gYCR7dmFsdWV9YDtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNDbGFzcyhlbG0sIGNsYXNzTmFtZSkge1xuICByZXR1cm4gZWxtICYmIGVsbS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKG5vZGVzKSB7XG4gIGZvckVhY2gobm9kZXMsIChub2RlKSA9PiB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2Rl
3LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcXVlcnlBbGwocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBzbGljZShwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpIDogW107XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsbSwgY2xhc3Nlcykge1xuICB0b2dnbGVDbGFzcyhlbG0sIGNsYXNzZXMsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gdW5pdCh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IGAke3ZhbHVlfXB4YCA6IFwiXCI7XG59XG5cbmNvbnN0IFBST0pFQ1RfQ09ERSA9IFwic3BsaWRlXCI7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFske1BST0pFQ1RfQ09ERX1dICR7bWVzc2FnZSB8fCBcIlwifWApO1xuICB9XG59XG5cbmNvbnN0IHsgbWluLCBtYXgsIGZsb29yLCBjZWlsLCBhYnMgfSA9IE1hdGg7XG5cbmZ1bmN0aW9uIHBhZChudW1iZXIpIHtcbiAgcmV0dXJuIG51bWJlciA8IDEwID8gYDAke251bWJlcn1gIDogYCR7bnVtYmVyfWA7XG59XG5cbmNvbnN0IENMQVNTX1NMSURFX1JPVyA9IGAke0NMQVNTX1NMSURFfV9fcm93YDtcbmNvbnN0IENMQVNTX1NMSURFX0NPTCA9IGAke0NMQVNTX1NMSURFfS0tY29sYDtcblxuY29uc3QgREVGQVVMVFMgPSB7XG4gIHJvd3M6IDEsXG4gIGNvbHM6IDEsXG4gIGRpbWVuc2lvbnM6IFtdLFxuICBnYXA6IHt9XG59O1xuXG5mdW5jdGlvbiBEaW1lbnNpb24ob3B0aW9ucykge1xuICBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gICAgY29uc3QgeyByb3dzLCBjb2xzLCBkaW1lbnNpb25zIH0gPSBvcHRpb25zO1xuICAgIHJldHVybiBpc0FycmF5KGRpbWVuc2lvbnMpICYmIGRpbWVuc2lvbnMubGVuZ3RoID8gZGltZW5zaW9ucyA6IFtbcm93cywgY29sc11dO1xuICB9XG4gIGZ1bmN0aW9uIGdldChpbmRleCkge1xuICAgIGNvbnN0IGRpbWVuc2lvbnMgPSBub3JtYWxpemUoKTtcbiAgICByZXR1cm4gZGltZW5zaW9uc1ttaW4oaW5kZXgsIGRpbWVuc2lvbnMubGVuZ3RoIC0gMSldO1xuICB9XG4gIGZ1bmN0aW9uIGdldEF0KGluZGV4KSB7XG4gICAgY29uc3QgZGltZW5zaW9ucyA9IG5vcm1hbGl6ZSgpO1xuICAgIGxldCByb3dzLCBjb2xzLCBhZ2dyZWdhdG9yID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbWVuc2lvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IGRpbWVuc2lvbnNbaV07XG4gICAgICByb3dzID0gZGltZW5zaW9uWzBdIHx8IDE7XG4gICAgICBjb2xzID0gZGltZW5zaW9uWzFdIHx8IDE7XG4gICAgICBhZ2dyZWdhdG9yICs9IHJvd3MgKiBjb2xzO1xuICAgICAgaWYgKGluZGV4IDwgYWdncmVnYXRvcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzZXJ0KHJvd3MgJiYgY29scywgXCJJbnZhbGlkIGRpbWVuc2lvblwiKTtcbiAgICByZXR1cm4gW3Jvd3MsIGNvbHNdO1xuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0LFxuICAgIGdldEF0XG4gIH07XG59XG5cbmZ1bmN0aW9uIExheW91dChTcGxpZGUyLCBncmlkT3B0aW9ucywgRGltZW5zaW9uKSB7XG4gIGNvbnN0IHsgb24sIGRlc3Ryb3k6IGRlc3Ryb3lFdmVudCB9ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIGNvbnN0IHsgQ29tcG9uZW50cywgb3B0aW9ucyB9ID0gU3BsaWRlMjtcbiAgY29uc3QgeyByZXNvbHZlIH0gPSBDb21wb25lbnRzLkRpcmVjdGlvbjtcbiAgY29uc3QgeyBmb3JFYWNoIH0gPSBDb21wb25lbnRzLlNsaWRlcztcbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgbGF5b3V0KCk7XG4gICAgaWYgKG9wdGlvbnMuc2xpZGVGb2N1cykge1xuICAgICAgb24oRVZFTlRfVklTSUJMRSwgb25WaXNpYmxlKTtcbiAgICAgIG9uKEVWRU5UX0hJRERFTiwgb25IaWRkZW4pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGZvckVhY2goKFNsaWRlKSA9PiB7XG4gICAgICBjb25zdCB7IHNsaWRlIH0gPSBTbGlkZTtcbiAgICAgIHRvZ2dsZVRhYkluZGV4KHNsaWRlLCBmYWxzZSk7XG4gICAgICBnZXRSb3dzSW4oc2xpZGUpLmZvckVhY2goKGNlbGwpID0+IHtcbiAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNlbGwsIFwic3R5bGVcIik7XG4gICAgICB9KTtcbiAgICAgIGdldENvbHNJbihzbGlkZSkuZm9yRWFjaCgoY29sU2xpZGUpID0+IHtcbiAgICAgICAgY292ZXIoY29sU2xpZGUsIHRydWUpO1xuICAgICAgICByZW1vdmVBdHRyaWJ1dGUoY29sU2xpZGUsIFwic3R5bGVcIik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXN0cm95RXZlbnQoKTtcbiAgfVxuICBmdW5jdGlvbiBsYXlvdXQoKSB7XG4gICAgZm9yRWFjaCgoU2xpZGUpID0+IHtcbiAgICAgIGNvbnN0IHsgc2xpZGUgfSA9IFNsaWRlO1xuICAgICAgY29uc3QgW3Jvd3MsIGNvbHNdID0gRGltZW5zaW9uLmdldChTbGlkZS5pc0Nsb25lID8gU2xpZGUuc2xpZGVJbmRleCA6IFNsaWRlLmluZGV4KTtcbiAgICAgIGxheW91dFJvdyhyb3dzLCBzbGlkZSk7XG4gICAgICBsYXlvdXRDb2woY29scywgc2xpZGUpO1xuICAgICAgZ2V0Q29sc0luKFNsaWRlLnNsaWRlKS5mb3JFYWNoKChjb2xTbGlkZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29sU2xpZGUuaWQgPSBgJHtTbGlkZS5zbGlkZS5pZH0tY29sJHtwYWQoaW5kZXggKyAxKX1gO1xuICAgICAgICBpZiAoU3BsaWRlMi5vcHRpb25zLmNvdmVyKSB7XG4gICAgICAgICAgY292ZXIoY29sU2xpZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBsYXlvdXRSb3cocm93cywgc2xpZGUpIHtcbiAgICBjb25zdCB7IHJvdzogcm93R2FwIH0gPSBncmlkT3B0aW9ucy5nYXA7XG4gICAgY29uc3QgaGVpZ2h0ID0gYGNhbGMoJHsxMDAgLyByb3dzfSUke3Jvd0dhcCA/IGAgLSAke3VuaXQocm93R2FwKX0gKiAkeyhyb3dzIC0gMSkgLyByb3dzfWAgOiBcIlwifSlgO1xuICAgIGdldFJvd3NJbihzbGlkZSkuZm9yRWFjaCgocm93RWxtLCBpbmRleCwgcm93RWxtcykgPT4ge1xuICAgICAgc3R5bGUocm93RWxtLCBcImhlaWdodFwiLCBoZWlnaHQpO1xuICAgICAgc3R5bGUocm93RWxtLCBcImRpc3BsYXlcIiwgXCJmbGV4XCIpO1xuICAgICAgc3R5bGUocm93RWxtLCBcIm1hcmdpblwiLCBgMCAwICR7dW5pdChyb3dHYXApfSAwYCk7XG4gICAgICBzdHlsZShyb3dFbG0sIFwicGFkZGluZ1wiLCAwKTtcbiAgICAgIGlmIChpbmRleCA9PT0gcm93RWxtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgI
3HN0eWxlKHJvd0VsbSwgXCJtYXJnaW5Cb3R0b21cIiwgMCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gbGF5b3V0Q29sKGNvbHMsIHNsaWRlKSB7XG4gICAgY29uc3QgeyBjb2w6IGNvbEdhcCB9ID0gZ3JpZE9wdGlvbnMuZ2FwO1xuICAgIGNvbnN0IHdpZHRoID0gYGNhbGMoJHsxMDAgLyBjb2xzfSUke2NvbEdhcCA/IGAgLSAke3VuaXQoY29sR2FwKX0gKiAkeyhjb2xzIC0gMSkgLyBjb2xzfWAgOiBcIlwifSlgO1xuICAgIGdldENvbHNJbihzbGlkZSkuZm9yRWFjaCgoY29sRWxtLCBpbmRleCwgY29sRWxtcykgPT4ge1xuICAgICAgc3R5bGUoY29sRWxtLCBcIndpZHRoXCIsIHdpZHRoKTtcbiAgICAgIGlmIChpbmRleCAhPT0gY29sRWxtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHN0eWxlKGNvbEVsbSwgcmVzb2x2ZShcIm1hcmdpblJpZ2h0XCIpLCB1bml0KGNvbEdhcCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNvdmVyKGNvbFNsaWRlLCB1bmNvdmVyKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY2hpbGQoY29sU2xpZGUsIGAuJHtDTEFTU19DT05UQUlORVJ9YCk7XG4gICAgY29uc3QgaW1nID0gY2hpbGQoY29udGFpbmVyIHx8IGNvbFNsaWRlLCBcImltZ1wiKTtcbiAgICBpZiAoaW1nICYmIGltZy5zcmMpIHtcbiAgICAgIHN0eWxlKGNvbnRhaW5lciB8fCBjb2xTbGlkZSwgXCJiYWNrZ3JvdW5kXCIsIHVuY292ZXIgPyBcIlwiIDogYGNlbnRlci9jb3ZlciBuby1yZXBlYXQgdXJsKFwiJHtpbWcuc3JjfVwiKWApO1xuICAgICAgc3R5bGUoaW1nLCBcImRpc3BsYXlcIiwgdW5jb3ZlciA/IFwiXCIgOiBcIm5vbmVcIik7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGdldFJvd3NJbihzbGlkZSkge1xuICAgIHJldHVybiBxdWVyeUFsbChzbGlkZSwgYC4ke0NMQVNTX1NMSURFX1JPV31gKTtcbiAgfVxuICBmdW5jdGlvbiBnZXRDb2xzSW4oc2xpZGUpIHtcbiAgICByZXR1cm4gcXVlcnlBbGwoc2xpZGUsIGAuJHtDTEFTU19TTElERV9DT0x9YCk7XG4gIH1cbiAgZnVuY3Rpb24gdG9nZ2xlVGFiSW5kZXgoc2xpZGUsIGFkZCkge1xuICAgIGdldENvbHNJbihzbGlkZSkuZm9yRWFjaCgoY29sU2xpZGUpID0+IHtcbiAgICAgIHNldEF0dHJpYnV0ZShjb2xTbGlkZSwgXCJ0YWJpbmRleFwiLCBhZGQgPyAwIDogbnVsbCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gb25WaXNpYmxlKFNsaWRlKSB7XG4gICAgdG9nZ2xlVGFiSW5kZXgoU2xpZGUuc2xpZGUsIHRydWUpO1xuICB9XG4gIGZ1bmN0aW9uIG9uSGlkZGVuKFNsaWRlKSB7XG4gICAgdG9nZ2xlVGFiSW5kZXgoU2xpZGUuc2xpZGUsIGZhbHNlKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1vdW50LFxuICAgIGRlc3Ryb3lcbiAgfTtcbn1cblxuZnVuY3Rpb24gR3JpZChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICBjb25zdCB7IG9uLCBvZmYgfSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpO1xuICBjb25zdCB7IEVsZW1lbnRzIH0gPSBDb21wb25lbnRzMjtcbiAgY29uc3QgZ3JpZE9wdGlvbnMgPSB7fTtcbiAgY29uc3QgRGltZW5zaW9uJDEgPSBEaW1lbnNpb24oZ3JpZE9wdGlvbnMpO1xuICBjb25zdCBMYXlvdXQkMSA9IExheW91dChTcGxpZGUyLCBncmlkT3B0aW9ucywgRGltZW5zaW9uJDEpO1xuICBjb25zdCBtb2RpZmllciA9IGAke0NMQVNTX1JPT1R9LS1ncmlkYDtcbiAgY29uc3Qgb3JpZ2luYWxTbGlkZXMgPSBbXTtcbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIG9uKEVWRU5UX1VQREFURUQsIGluaXQpO1xuICB9XG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgb21pdChncmlkT3B0aW9ucyk7XG4gICAgYXNzaWduKGdyaWRPcHRpb25zLCBERUZBVUxUUywgb3B0aW9ucy5ncmlkIHx8IHt9KTtcbiAgICBpZiAoc2hvdWxkQnVpbGQoKSkge1xuICAgICAgZGVzdHJveSgpO1xuICAgICAgcHVzaChvcmlnaW5hbFNsaWRlcywgRWxlbWVudHMuc2xpZGVzKTtcbiAgICAgIGFkZENsYXNzKFNwbGlkZTIucm9vdCwgbW9kaWZpZXIpO1xuICAgICAgYXBwZW5kKEVsZW1lbnRzLmxpc3QsIGJ1aWxkKCkpO1xuICAgICAgb2ZmKEVWRU5UX1JFRlJFU0gpO1xuICAgICAgb24oRVZFTlRfUkVGUkVTSCwgbGF5b3V0KTtcbiAgICAgIHJlZnJlc2goKTtcbiAgICB9IGVsc2UgaWYgKGlzQWN0aXZlKCkpIHtcbiAgICAgIGRlc3Ryb3koKTtcbiAgICAgIHJlZnJlc2goKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAoaXNBY3RpdmUoKSkge1xuICAgICAgY29uc3QgeyBzbGlkZXMgfSA9IEVsZW1lbnRzO1xuICAgICAgTGF5b3V0JDEuZGVzdHJveSgpO1xuICAgICAgb3JpZ2luYWxTbGlkZXMuZm9yRWFjaCgoc2xpZGUpID0+IHtcbiAgICAgICAgcmVtb3ZlQ2xhc3Moc2xpZGUsIENMQVNTX1NMSURFX0NPTCk7XG4gICAgICAgIGFwcGVuZChFbGVtZW50cy5saXN0LCBzbGlkZSk7XG4gICAgICB9KTtcbiAgICAgIHJlbW92ZShzbGlkZXMpO1xuICAgICAgcmVtb3ZlQ2xhc3MoU3BsaWRlMi5yb290LCBtb2RpZmllcik7XG4gICAgICBlbXB0eShzbGlkZXMpO1xuICAgICAgcHVzaChzbGlkZXMsIG9yaWdpbmFsU2xpZGVzKTtcbiAgICAgIGVtcHR5KG9yaWdpbmFsU2xpZGVzKTtcbiAgICAgIG9mZihFVkVOVF9SRUZSRVNIKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICBTcGxpZGUyLnJlZnJlc2goKTtcbiAgfVxuICBmdW5jdGlvbiBsYXlvdXQoKSB7XG4gICAgaWYgKGlzQWN0aXZlKCkpIHtcbiAgICAgIExheW91dCQxLm1vdW50KCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGJ1aWxkKCkge1xuICAgIGNvbnN0IG91dGVyU2xpZGVzID0gW107XG4gICAgbGV0IHJvdyA9IDAsIGNvbCA9IDA7XG4gICAgbGV0IG91dGVyU2xpZGUsIHJvd1NsaWRlO1xuICAgIG9yaWdpbmFsU2xpZGVzLmZvckVhY2goKHNsaWRlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgW3Jvd3MsIGNvbHNdID0gRGltZW5zaW9uJDEuZ2V0QXQoaW5kZXgpO1xuICAgICAgaWYgKCFjb2wpIHtcbiAgICAgICAgaWYgKCFyb3cpIHtcbiAgICAgICAgICBvdXRlclNsaWRlID0gY3JlYXRlKHNsaWRlLnRhZ05hbWUsIENMQVNTX1NMSURFKTtcbiAgICAgICAgICBvdXRlclNsaWRlcy5wdXNoKG91dGVyU2xpZGUpO1xuICAgICAgICB9XG4gICAgICAgI
3HJvd1NsaWRlID0gYnVpbGRSb3cocm93cywgc2xpZGUsIG91dGVyU2xpZGUpO1xuICAgICAgfVxuICAgICAgYnVpbGRDb2woY29scywgc2xpZGUsIHJvd1NsaWRlKTtcbiAgICAgIGlmICgrK2NvbCA+PSBjb2xzKSB7XG4gICAgICAgIGNvbCA9IDA7XG4gICAgICAgIHJvdyA9ICsrcm93ID49IHJvd3MgPyAwIDogcm93O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBvdXRlclNsaWRlcztcbiAgfVxuICBmdW5jdGlvbiBidWlsZFJvdyhyb3dzLCBzbGlkZSwgb3V0ZXJTbGlkZSkge1xuICAgIGNvbnN0IHRhZyA9IHNsaWRlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJsaVwiID8gXCJ1bFwiIDogXCJkaXZcIjtcbiAgICByZXR1cm4gY3JlYXRlKHRhZywgQ0xBU1NfU0xJREVfUk9XLCBvdXRlclNsaWRlKTtcbiAgfVxuICBmdW5jdGlvbiBidWlsZENvbChjb2xzLCBzbGlkZSwgcm93U2xpZGUpIHtcbiAgICBhZGRDbGFzcyhzbGlkZSwgQ0xBU1NfU0xJREVfQ09MKTtcbiAgICBhcHBlbmQocm93U2xpZGUsIHNsaWRlKTtcbiAgICByZXR1cm4gc2xpZGU7XG4gIH1cbiAgZnVuY3Rpb24gc2hvdWxkQnVpbGQoKSB7XG4gICAgaWYgKG9wdGlvbnMuZ3JpZCkge1xuICAgICAgY29uc3QgeyByb3dzLCBjb2xzLCBkaW1lbnNpb25zIH0gPSBncmlkT3B0aW9ucztcbiAgICAgIHJldHVybiByb3dzID4gMSB8fCBjb2xzID4gMSB8fCBpc0FycmF5KGRpbWVuc2lvbnMpICYmIGRpbWVuc2lvbnMubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgIHJldHVybiBoYXNDbGFzcyhTcGxpZGUyLnJvb3QsIG1vZGlmaWVyKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1vdW50LFxuICAgIGRlc3Ryb3lcbiAgfTtcbn1cblxuZXhwb3J0IHsgR3JpZCB9O1xuIiwiLy8gSW1wb3J0IG91ciBjdXN0b20gQ1NTXG5pbXBvcnQgJy4uL3Njc3Mvc3R5bGVzLnNjc3MnXG5cbi8vIEltcG9ydCBhbGwgb2YgQm9vdHN0cmFwJ3MgSlNcbmltcG9ydCAqIGFzIGJvb3RzdHJhcCBmcm9tICdib290c3RyYXAnXG5cbi8vIE1ha2UgQm9vdHN0cmFwIGF2YWlsYWJsZSBnbG9iYWxseVxud2luZG93LmJvb3RzdHJhcCA9IGJvb3RzdHJhcFxuXG4vLyBJbXBvcnQgQ291bnRVcC5qc1xuaW1wb3J0IHsgQ291bnRVcCB9IGZyb20gJ2NvdW50dXAuanMnXG5cbi8vIEltcG9ydCBHTGlnaHRib3ggZm9yIGVuaGFuY2VkIGdhbGxlcnkgZXhwZXJpZW5jZVxuaW1wb3J0IEdMaWdodGJveCBmcm9tICdnbGlnaHRib3gnXG5cbi8vIEltcG9ydCBWbGl0ZWpzIGZvciB2aWRlbyBwbGF5ZXJcbmltcG9ydCBWbGl0ZWpzIGZyb20gJ3ZsaXRlanMnXG5pbXBvcnQgJ3ZsaXRlanMvdmxpdGUuY3NzJ1xuaW1wb3J0IFZsaXRlanNZb3V0dWJlIGZyb20gJ3ZsaXRlanMvcHJvdmlkZXJzL3lvdXR1YmUnXG5pbXBvcnQgVmxpdGVqc1ZpbWVvIGZyb20gJ3ZsaXRlanMvcHJvdmlkZXJzL3ZpbWVvJ1xuXG4vLyBJbXBvcnQgY29tcG9uZW50c1xuaW1wb3J0IHtcbiAgZGVib3VuY2UsXG4gIHNldEVsZW1lbnRIZWlnaHRBc0Nzc1ZhcixcbiAgbG9hZFN2Z1RvSW5saW5lLFxuICBmb3JtTGFiZWxBc1BsYWNlaG9sZGVyLFxufSBmcm9tICcuL2NvbXBvbmVudHMvaGVscGVyJ1xuXG5pbXBvcnQge1xuICBpbml0U3BsaWRlQ2Fyb3VzZWxcbn0gZnJvbSAnLi9jb21wb25lbnRzL3NwbGlkZS1jYXJvdXNlbCdcblxuaW1wb3J0ICcuL2NvbXBvbmVudHMvdmlvbGF0b3InXG5pbXBvcnQgJy4vY29tcG9uZW50cy9wb3B1cCdcbmltcG9ydCAnLi9jb21wb25lbnRzL2JhY2stdG8tdG9wJ1xuXG4vLyBkcm9wZG93blxuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRyb3Bkb3duJykuZm9yRWFjaCgoZWxlKSA9PiB7XG4gIGNvbnN0IGRkID0gZWxlLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJdJylcblxuICBpZiAoZGQpIHtcbiAgICBkZC5hZGRFdmVudExpc3RlbmVyKCdzaG93LmJzLmRyb3Bkb3duJywgKCkgPT4ge1xuICAgICAgZWxlLmNsYXNzTGlzdC5hZGQoJ2RkLWFjdGl2ZScpXG4gICAgfSlcblxuICAgIGRkLmFkZEV2ZW50TGlzdGVuZXIoJ2hpZGRlbi5icy5kcm9wZG93bicsICgpID0+IHtcbiAgICAgIGVsZS5jbGFzc0xpc3QucmVtb3ZlKCdkZC1hY3RpdmUnKVxuICAgIH0pXG4gIH1cbn0pXG5cbi8vIG9wZW4gbWFpbiBuYXZpZ2F0aW9uIGNoaWxkIG9uIGhvdmVyXG5jb25zdCBtYWluTmF2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1haW4tbmF2JylcbmxldCBjb250YWluZXJOYXYgPSBudWxsXG5cbmlmIChtYWluTmF2KSB7XG4gIG1haW5OYXYucXVlcnlTZWxlY3RvckFsbCgnLm5hdi1pdGVtLmRyb3Bkb3duJykuZm9yRWFjaCgoZWxlKSA9PiB7XG4gICAgY29uc3QgZGQgPSBib290c3RyYXAuRHJvcGRvd24uZ2V0T3JDcmVhdGVJbnN0YW5jZShcbiAgICAgIGVsZS5xdWVyeVNlbGVjdG9yKCdbZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiXScpLFxuICAgIClcblxuICAgIGlmIChkZCkge1xuICAgICAgLypcbiAgICAgICAgICAgIGVsZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoSXNUb3VjaEVuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZGQuc2hvdygpXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBlbGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKElzVG91Y2hFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGRkLmhpZGUoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICovXG4gICAgfVxuICB9KVxuXG4gIGNvbnRhaW5lck5hdiA9IG1haW5OYXYucXVlcnlTZWxlY3RvcignLmNvbnRhaW5lci1uYXYnKVxufVxuXG4vLyBzZXQgbWFpbiBuYXZpZ2F0aW9uIG9mZnNldCBsZWZ0IGFzIENTUyB2YXJpYWJsZVxuY29uc3QgYm9keVJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgaWYgKGNvbnRhaW5lck5hdikge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tbWFpbi1uYXYtbGVmdCcsIGNvbnRhaW5lck5hdi5vZmZzZXRMZWZ0ICsgJ3B4JylcbiAgfVxufSlcblxuYm9keVJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImJvZHlcIikpXG5cbi8vIGNhcm91c2VsXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2Fyb3VzZWwnKS5mb3JFYWNoKChlbGUpID0+IHtcbiAgY29uc3QgaGVpZ2h0RWxlcyA9IGVsZS5xdWVyeVNlbGVjdG9yQWxsKCcuZWxlLWhlaWdodC1hcy12YXInKVxuXG4gIGlmIChoZWlnaHRFbGVzKSB7XG4gICAgZWxlLmFkZEV2ZW50TGlzdGVuZXIoJ3NsaWQuYnMuY2Fyb3VzZWwnLCAoKSA9PiB7XG4gICAgICBzZXRFbGVtZW50SGVpZ2h0QXNDc3NWYXIoaGVpZ2h0RWxlcylcbiAgICB9KVxuICB9XG59KVxuXG4vLyBvbiB3aW5kb3cgbG9hZGVkXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgLy9cbiAgc2V0RWxlbWVudEhlaWdodEFzQ3NzVmFyKClcblxuICAvL1xuICBsb2FkU3ZnVG9JbmxpbmUoKVxuXG4gIC8vXG4gIGZvcm1MYWJlbEFzUGxhY2Vob2xkZXIoKVxuXG4gIC8vXG4gIGluaXRTcGxpZGVDYXJvdXNlbCgpXG5cbiAgLy9cbiAgLy8gbW9kaWZ5TG9jYXRpb25zUGFuZWwoKSAvLyByZW1vdmVkIGluIGZhdm9yIG9mIHVwZGF0ZWQgSlNcblxuICAvL1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3QnKS5mb3JFYWNoKChlbGUpID0+IHtcbiAgICBlbGUuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xuICAgICAgaWYgKGVsZS5vcHRpb25zW2VsZS5zZWxlY3RlZEluZGV4XS52YWx1ZSkge1xuICAgICAgICBlbGUuY2xhc3NMaXN0LmFkZCgnaGFzLXZhbHVlJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZS5jbGFzc0xpc3QucmVtb3ZlKCdoYXMtdmFsdWUnKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG59
3KVxuXG4vLyBvbiB3aW5kb3cgcmVzaXplZFxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXG4gICdyZXNpemUnLFxuICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgc2V0RWxlbWVudEhlaWdodEFzQ3NzVmFyKClcbiAgfSwgMTAwKSxcbilcblxuLy8gQWNjZXNzaWJpbGl0eTogTW92ZSBmb2N1cyB0byBib2R5IGFmdGVyIG1vZGFsIGNsb3Nlc1xuLy8gdG8gYXZvaWQgYXJpYS1oaWRkZW4gd2FybmluZ1xuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1vZGFsJykuZm9yRWFjaCgobW9kYWwpID0+IHtcbiAgbW9kYWwuYWRkRXZlbnRMaXN0ZW5lcignaGlkZGVuLmJzLm1vZGFsJywgKCkgPT4ge1xuICAgIGRvY3VtZW50LmJvZHkuZm9jdXMoKVxuICB9KVxufSlcblxuLy8gU3RhdCBDb3VudGVycyBBbmltYXRpb25cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgKCkgPT4ge1xuICAvLyBJbml0aWFsaXplIEdMaWdodGJveCBmb3IgZW5oYW5jZWQgZ2FsbGVyeSBtb2RhbCBleHBlcmllbmNlXG4gIC8vIFRoaXMgcmVwbGFjZXMgdGhlIEJvb3RzdHJhcCBtb2RhbHMgd2l0aCBhIG1vZGVybiBsaWdodGJveCBmb3IgcGhvdG8gZ2FsbGVyaWVzXG4gIGNvbnN0IGdhbGxlcnlMaWdodGJveCA9IEdMaWdodGJveCh7XG4gICAgc2VsZWN0b3I6ICcuZ2xpZ2h0Ym94JyxcbiAgICB0b3VjaE5hdmlnYXRpb246IHRydWUsXG4gICAgbG9vcDogdHJ1ZSxcbiAgICBhdXRvcGxheVZpZGVvczogdHJ1ZSxcbiAgICBwbHlyOiB7XG4gICAgICBjb25maWc6IHtcbiAgICAgICAgcmF0aW86ICcxNjo5JyxcbiAgICAgICAgdmltZW86IHtcbiAgICAgICAgICBieWxpbmU6IGZhbHNlLFxuICAgICAgICAgIHBvcnRyYWl0OiBmYWxzZSxcbiAgICAgICAgICB0aXRsZTogZmFsc2UsXG4gICAgICAgICAgc3BlZWQ6IHRydWUsXG4gICAgICAgICAgdHJhbnNwYXJlbnQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB5b3V0dWJlOiB7XG4gICAgICAgICAgbm9Db29raWU6IHRydWUsXG4gICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgIHNob3dpbmZvOiAwLFxuICAgICAgICAgIGl2X2xvYWRfcG9saWN5OiAzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIGJlZm9yZVNsaWRlQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAvLyBBZGQgYW55IGN1c3RvbSBsb2dpYyBiZWZvcmUgc2xpZGUgY2hhbmdlc1xuICAgICAgLy8gY29uc29sZS5sb2cgY2FuIGJlIGFkZGVkIGhlcmUgZm9yIGRlYnVnZ2luZyBpZiBuZWVkZWRcbiAgICB9LFxuICAgIHNsaWRlSHRtbDogJzxkaXYgY2xhc3M9XCJnc2xpZGVcIj4nICtcbiAgICAgICc8ZGl2IGNsYXNzPVwiZ3NsaWRlLWlubmVyLWNvbnRlbnRcIj4nICtcbiAgICAgICAgJzxkaXYgY2xhc3M9XCJnaW5uZXItY29udGFpbmVyXCI+JyArXG4gICAgICAgICAgJzxkaXYgY2xhc3M9XCJnc2xpZGUtbWVkaWFcIj4nICtcbiAgICAgICAgICAnPC9kaXY+JyArXG4gICAgICAgICAgJzxkaXYgY2xhc3M9XCJnc2xpZGUtZGVzY3JpcHRpb25cIj4nICtcbiAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwiZ2Rlc2MtaW5uZXJcIj4nICtcbiAgICAgICAgICAgICAgJzxoNCBjbGFzcz1cImdzbGlkZS10aXRsZVwiPjwvaDQ+JyArXG4gICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwiZ3NsaWRlLWRlc2NcIj48L2Rpdj4nICtcbiAgICAgICAgICAgICc8L2Rpdj4nICtcbiAgICAgICAgICAnPC9kaXY+JyArXG4gICAgICAgICc8L2Rpdj4nICtcbiAgICAgICc8L2Rpdj4nICtcbiAgICAnPC9kaXY+JyxcbiAgICAvLyBDdXN0b20gZGVzY3JpcHRpb24gdGVtcGxhdGUgdG8gaW5jbHVkZSBvdXIgbWV0YWRhdGFcbiAgICBkZXNjUG9zaXRpb246ICdib3R0b20nLFxuICAgIG1vcmVUZXh0OiAnU2VlIG1vcmUnLFxuICAgIG1vcmVMZW5ndGg6IDYwLFxuICAgIGNsb3NhYmxlOiB0cnVlLFxuICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgIGNzc0VmZmVjdHM6IHtcbiAgICAgIGZhZGU6IHsgaW46ICdmYWRlSW4nLCBvdXQ6ICdmYWRlT3V0JyB9LFxuICAgICAgem9vbTogeyBpbjogJ3pvb21JbicsIG91dDogJ3pvb21PdXQnIH0sXG4gICAgICBzbGlkZTogeyBpbjogJ3NsaWRlSW5SaWdodCcsIG91dDogJ3NsaWRlT3V0TGVmdCcgfSxcbiAgICAgIHNsaWRlQmFjazogeyBpbjogJ3NsaWRlSW5MZWZ0Jywgb3V0OiAnc2xpZGVPdXRSaWdodCcgfSxcbiAgICAgIG5vbmU6IHsgaW46ICdub25lJywgb3V0OiAnbm9uZScgfSxcbiAgICB9LFxuICAgIG9wZW5FZmZlY3Q6ICdmYWRlJyxcbiAgICBjbG9zZUVmZmVjdDogJ2ZhZGUnLFxuICB9KVxuXG4gIC8vIFN0YXQgQ291bnRlciBBbmltYXRpb24gKGtlZXBpbmcgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSlcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmVsZW1lbnQtZWxlbWVudHN0YXRjb3VudGVycyAuc3RhdC12YWx1ZScpXG4gICAgLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICBjb25zdCBlbmRWYWwgPSBwYXJzZUZsb2F0KGVsLnRleHRDb250ZW50LnJlcGxhY2UoLywvZywgJycpKVxuICAgICAgaWYgKE51bWJlci5pc05hTihlbmRWYWwpKSByZXR1cm5cbiAgICAgIGlmIChlbC5kYXRhc2V0LmFuaW1hdGVkKSByZXR1cm5cbiAgICAgIGVsLmRhdGFzZXQuYW5pbWF0ZWQgPSAndHJ1ZSdcbiAgICAgIGNvbnN0IGFuaW1hdGUgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvdW50VXAgPSBuZXcgQ291bnRVcChlbCwgZW5kVmFsLCB7XG4gICAgICAgICAgZHVyYXRpb246IDIsXG4gICAgICAgICAgc2VwYXJhdG9yOiAnLCcsXG4gICAgICAgIH0pXG4gICAgICAgIGlmICghY291bnRVcC5lcnJvcikge1xuICAgICAgICAgIGNvdW50VXAuc3RhcnQoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gZW5kVmFsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICgnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyB3aW5kb3cuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMsIG9icykgPT4ge1xuICAgICAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgICAgICBhbmltYXRlKClcbiAgICAgICAgICAgICAgb2JzLnVub2JzZXJ2ZShlbClcbiAgICAgICAgICAgI
3H1cbiAgICAgICAgICB9KVxuICAgICAgICB9LCB7IHRocmVzaG9sZDogMC41IH0pXG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbmltYXRlKClcbiAgICAgIH1cbiAgICB9KVxufSlcblxuLy8gSW5pdGlhbGl6ZSBWbGl0ZSB2aWRlbyBwbGF5ZXJzXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHtcbiAgLy8gUmVnaXN0ZXIgcHJvdmlkZXJzIHdpdGggVmxpdGVqcyBCRUZPUkUgaW5pdGlhbGl6YXRpb25cbiAgVmxpdGVqcy5yZWdpc3RlclByb3ZpZGVyKCd5b3V0dWJlJywgVmxpdGVqc1lvdXR1YmUpXG4gIFZsaXRlanMucmVnaXN0ZXJQcm92aWRlcigndmltZW8nLCBWbGl0ZWpzVmltZW8pXG4gIFxuICAvLyBJbml0aWFsaXplIGFsbCB2aWRlbyBwbGF5ZXJzXG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52bGl0ZS1wbGF5ZXInKS5mb3JFYWNoKChwbGF5ZXIpID0+IHtcbiAgICBuZXcgVmxpdGVqcyhwbGF5ZXIsIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgY29udHJvbHM6IHRydWUsXG4gICAgICAgIGF1dG9wbGF5OiBwbGF5ZXIuZGF0YXNldC5vcHRpb25zICYmIEpTT04ucGFyc2UocGxheWVyLmRhdGFzZXQub3B0aW9ucykuYXV0b3BsYXkgfHwgZmFsc2UsXG4gICAgICAgIGxvb3A6IHBsYXllci5kYXRhc2V0Lm9wdGlvbnMgJiYgSlNPTi5wYXJzZShwbGF5ZXIuZGF0YXNldC5vcHRpb25zKS5sb29wIHx8IGZhbHNlLFxuICAgICAgICBtdXRlZDogcGxheWVyLmRhdGFzZXQub3B0aW9ucyAmJiBKU09OLnBhcnNlKHBsYXllci5kYXRhc2V0Lm9wdGlvbnMpLm11dGVkIHx8IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiBwbGF5ZXIuZGF0YXNldC5wcm92aWRlciB8fCAnaHRtbDUnLFxuICAgICAgcHJvdmlkZXJQYXJhbXM6IHtcbiAgICAgICAgeW91dHViZTogcGxheWVyLmRhdGFzZXQueW91dHViZUlkIHx8IG51bGwsXG4gICAgICAgIHZpbWVvOiBwbGF5ZXIuZGF0YXNldC52aW1lb0lkIHx8IG51bGwsXG4gICAgICB9LFxuICAgICAgb25SZWFkeTogKGluc3QpID0+IHtcbiAgICAgICAgaW5zdC5lbGVtZW50cy5iaWdQbGF5LmlubmVySFRNTCA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjExN1wiIGhlaWdodD1cIjExN1wiIHZpZXdCb3g9XCIwIDAgMTE3IDExN1wiPjxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMjE3NDQgLTU2MDUpXCI+J1xuICAgICAgICArICc8cGF0aCBkPVwiTTU4LjUsMEE1OC41LDU4LjUsMCwxLDEsMCw1OC41LDU4LjUsNTguNSwwLDAsMSw1OC41LDBaXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDIxNzQ0IDU2MDUpXCIgZmlsbD1cIiNlZWU5ZjVcIi8+J1xuICAgICAgICArICc8cGF0aCBkPVwiTTQwLjY3NSw1NS43MjcsMCwzMlY3OS40NTRaXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDIxNzg5LjE3IDU2MDcuMjM4KVwiIGZpbGw9XCIjMmExODU0XCIvPidcbiAgICAgICAgKyAnPC9nPjwvc3ZnPidcblxuICAgICAgICBjb25zdCBzdGF0ZUVsZVNlbGVjdG9yID0gcGxheWVyLmRhdGFzZXQuc3RhdGVFbGUgfHwgbnVsbFxuXG4gICAgICAgIGlmIChzdGF0ZUVsZVNlbGVjdG9yKSB7XG4gICAgICAgICAgY29uc3Qgc3RhdGVFbGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHN0YXRlRWxlU2VsZWN0b3IpXG5cbiAgICAgICAgICBpZiAoc3RhdGVFbGUpIHtcbiAgICAgICAgICAgIHN0YXRlRWxlLnNldEF0dHJpYnV0ZSgnZGF0YS1wbGF5ZXInLCAncmVhZHknKVxuXG4gICAgICAgICAgICBwbGF5ZXIub24oJ3BsYXknLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHN0YXRlRWxlLnNldEF0dHJpYnV0ZSgnZGF0YS1wbGF5ZXInLCAncGxheWluZycpXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBwbGF5ZXIub24oJ3BhdXNlJywgKCkgPT4ge1xuICAgICAgICAgICAgICBzdGF0ZUVsZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGxheWVyJywgJ3BhdXNlZCcpXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBwbGF5ZXIub24oJ2VuZGVkJywgKCkgPT4ge1xuICAgICAgICAgICAgICBzdGF0ZUVsZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGxheWVyJywgJ2VuZGVkJylcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pXG4gIH0pXG59KVxuXG4vLyBiZWZvcmUgSE1UWCByZXF1ZXN0XG5kb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2h0bXg6YmVmb3JlUmVxdWVzdCcsIChldnQpID0+IHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdodHRwLXJlcXVlc3RpbmcnKVxufSlcblxuLy8gYWZ0ZXIgSE1UWCByZXF1ZXN0XG5kb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2h0bXg6YWZ0ZXJSZXF1ZXN0JywgKGV2dCkgPT4ge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2h0dHAtcmVxdWVzdGluZycpXG5cbiAgLy8gc2Nyb2xsIHRvIHRvcCBvZiB0aGUgcmVzdWx0cyBsaXN0XG4gIGNvbnN0IGV2ZW50TGlzdElkID0gJ2VsZS1ldmVudHMnXG5cbiAgaWYgKGV2dC5kZXRhaWwudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygncGFnZS1saW5rJykpIHtcbiAgICBjb25zdCBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZXZlbnRMaXN0SWQpXG4gICAgbGV0IGxpc3RBcmVhO1xuXG4gICAgaWYgKGxpc3QpIHtcbiAgICAgIGxpc3RBcmVhID0gbGlzdFxuICAgIH1cblxuICAgIGlmIChsaXN0QXJlYSkge1xuICAgICAgbGlzdEFyZWEuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICB9XG4gIH1cbn0pXG4iLCIvLyBJbXBvcnQgU3BsaWRlSlNcbmltcG9ydCBTcGxpZGUgZnJvbSAnQHNwbGlkZWpzL3NwbGlkZSdcbmltcG9ydCB7IEdyaWQgfSBmcm9tICdAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi1ncmlkJ1xuXG4vLyBJbXBvcnQgR0xpZ2h0Ym94XG5pbXBvcnQgR0xpZ2h0Ym94IGZyb20gJ2dsaWdodGJveCdcblxuY29uc3QgaW5pdFNwbGlkZUNhcm91c2VsID0gKCkgPT4ge1xuICAgIC8vIERlZmF1bHQgY2Fyb3VzZWxcbiAgICBkb2
3N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc3BsaWRlJykuZm9yRWFjaCgoZWxlKSA9PiB7XG4gICAgICAgIGlmIChlbGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdpbml0LW1hbnVhbGx5JykpIHJldHVyblxuXG4gICAgICAgIGNvbnN0IGVuYWJsZUdyaWQgPSBlbGUuZGF0YXNldC5lbmFibGVHcmlkIHx8IG51bGxcbiAgICAgICAgY29uc3Qgc2xpZGUgPSBlbmFibGVHcmlkID8gbmV3IFNwbGlkZShlbGUpLm1vdW50KHsgR3JpZCB9KSA6IG5ldyBTcGxpZGUoZWxlKS5tb3VudCgpXG5cbiAgICAgICAgY29uc3QgYnRuUHJldiA9IGVsZS5xdWVyeVNlbGVjdG9yQWxsKCcuYnRuLXByZXYtc2xpZGUnKVxuICAgICAgICBjb25zdCBidG5OZXh0ID0gZWxlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5idG4tbmV4dC1zbGlkZScpXG5cbiAgICAgICAgLy8gQWRkIHNsaWRlIGxlbmd0aCB0byB0aGUgZWxlbWVudFxuICAgICAgICBlbGUuc2V0QXR0cmlidXRlKCdkYXRhLWxlbmd0aCcsIHNsaWRlLmxlbmd0aClcblxuICAgICAgICAvLyBMaXN0ZW4gY29udHJvbCBidXR0b25zXG4gICAgICAgIGVsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gTW92ZSB0byBwcmV2IGNhcm91c2VsIGl0ZW1cbiAgICAgICAgICAgIGlmIChidG5QcmV2KSB7XG4gICAgICAgICAgICAgICAgYnRuUHJldi5mb3JFYWNoKChidG4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ0bi5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzbGlkZS5nbygnLTEnKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTW92ZSB0byBuZXh0IGNhcm91c2VsIGl0ZW1cbiAgICAgICAgICAgIGlmIChidG5OZXh0KSB7XG4gICAgICAgICAgICAgICAgYnRuTmV4dC5mb3JFYWNoKChidG4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ0bi5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzbGlkZS5nbygnKzEnKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KVxuXG4gICAgLy8gSW5pdCBTcGxpZGVKUyBmb3IgZ2FsbGVyeSBjYXJvdXNlbFxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5nYWxsZXJ5LWNhcm91c2VsJykuZm9yRWFjaCgoZWxlKSA9PiB7XG4gICAgICAgIC8vIGNhdGlvblxuICAgICAgICBjb25zdCBjYXB0aW9uID0gZWxlLnF1ZXJ5U2VsZWN0b3IoJy5nYy1jYXB0aW9uLW1haW4nKVxuXG4gICAgICAgIC8vIG1haW4gY2Fyb3VzZWxcbiAgICAgICAgY29uc3QgbWFpbiA9IGVsZS5xdWVyeVNlbGVjdG9yKCcuc3BsaWRlLW1haW4nKVxuXG4gICAgICAgIC8vIHRodW1iIGNhcm91c2VsXG4gICAgICAgIGNvbnN0IHRodW1icyA9IGVsZS5xdWVyeVNlbGVjdG9yKCcuc3BsaWRlLXRodW1icycpXG5cbiAgICAgICAgLy8gaW5pdCBHbGlnaHRib3hcbiAgICAgICAgbGV0IGxpZ2h0Ym94O1xuXG4gICAgICAgIGlmICh0aHVtYnMgJiYgZWxlPy5kYXRhc2V0Py5lbmFibGVMaWdodGJveCkge1xuICAgICAgICAgICAgbGV0IGxpZ2h0Ym94T3B0aW9ucyA9IGVsZT8uZGF0YXNldD8ubGlnaHRib3hPcHRpb25zIHx8IG51bGxcblxuICAgICAgICAgICAgaWYgKGxpZ2h0Ym94T3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxpZ2h0Ym94T3B0aW9ucyA9IEpTT04ucGFyc2UobGlnaHRib3hPcHRpb25zKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge31cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGlnaHRib3ggPSBHTGlnaHRib3goT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogZmFsc2VcbiAgICAgICAgICAgIH0sIGxpZ2h0Ym94T3B0aW9ucykpXG5cbiAgICAgICAgICAgIHRodW1icy5xdWVyeVNlbGVjdG9yQWxsKCcuZ2MtdGh1bWItc2xpZGUnKS5mb3JFYWNoKCh0aHVtYlNsaWRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nVXJsICA9IHRodW1iU2xpZGUucXVlcnlTZWxlY3RvcignLmdjLXRodW1iLWl0ZW0nKT8uZGF0YXNldD8uaW1nVXJsIHx8IG51bGxcbiAgICAgICAgICAgICAgICBjb25zdCBjYXB0aW9uID0gdGh1bWJTbGlkZS5xdWVyeVNlbGVjdG9yKCcuZ2MtY2FwdGlvbicpPy5pbm5lckhUTUwgfHwgbnVsbFxuXG4gICAgICAgICAgICAgICAgaWYgKGltZ1VybCAmJiBjYXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpZ2h0Ym94Lmluc2VydFNsaWRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdocmVmJzogaW1nVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnaW1hZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJzxkaXYgY2xhc3M9XCJnYy1jYXB0aW9uXCI+JyArIGNhcHRpb24gKyAnPC9kaXY+JyxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBlbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NsaWRlLWltZycpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpZ2h0Ym94Lm9wZW5BdChlLnRhcmdldC5kYXRhc2V0LnBvcyB8fCAwKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBjYXB0aW9uIHN5bmMgKyBsaWdodGJveCBob29rcyBzaGFyZWQgYnkgdGhlIG1haW4rdGh1bWJzIGFuZCB0aHVtYnMtb25seSBsYXlvdXRzXG4gICAgICAgIGNvbnN0IHdpcmVUaHVtYnMgPSAodGh1bWJzQ2Fyb3VzZWwsIGNhcm91c2VscykgPT4ge1xuICAgICAgICAgICAgdGh1bWJzQ2Fyb3VzZWwub24oJ21vdmUnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNhcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FwdGlvbi5zdHlsZS5vcGFjaXR5ID0gMFxuICAgICAgICAgICAgICAgI
3H1cbiAgICAgICAgICAgIH0pLm9uKCdtb3ZlZCcsIChuZXh0SWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyU2xpZGUgPSB0aHVtYnNDYXJvdXNlbC5Db21wb25lbnRzLkVsZW1lbnRzLnNsaWRlc1tuZXh0SWRdXG5cbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyQ2FwdGlvbiA9IGN1cnJTbGlkZS5xdWVyeVNlbGVjdG9yKCcuZ2MtY2FwdGlvbicpXG5cbiAgICAgICAgICAgICAgICBpZiAoY3VyckNhcHRpb24gJiYgY2FwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjYXB0aW9uLnN0eWxlLm9wYWNpdHkgPSAxXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb24uaW5uZXJIVE1MID0gY3VyckNhcHRpb24uaW5uZXJIVE1MXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIGlmIChsaWdodGJveCkge1xuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBjYXJvdXNlbHMgYWZ0ZXIgbGlnaHRib3ggY2Fyb3VzZWwgaXMgY2hhbmdlZFxuICAgICAgICAgICAgICAgIGxpZ2h0Ym94Lm9uKCdzbGlkZV9jaGFuZ2VkJywgKHsgcHJldiwgY3VycmVudCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2LmluZGV4ICE9PSBudWxsICYmIGN1cnJlbnQuaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1ic0Nhcm91c2VsLmdvKGN1cnJlbnQuaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgLy8gcmVmcmVzaCBjYXJvdXNlbHMgYWZ0ZXIgbGlnaHRib3ggY2Fyb3VzZWwgaXMgY2xvc2VkIHRvIHByZXZlbnQgbGF5b3V0IGJyb2tlblxuICAgICAgICAgICAgICAgIGxpZ2h0Ym94Lm9uKCdjbG9zZScsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJvdXNlbHMuZm9yRWFjaCgoY2Fyb3VzZWwpID0+IGNhcm91c2VsLnJlZnJlc2goKSlcbiAgICAgICAgICAgICAgICAgICAgfSwgNTApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vXG4gICAgICAgIGlmIChtYWluICYmIHRodW1icykge1xuICAgICAgICAgICAgY29uc3QgbWFpbkNhcm91c2VsID0gbmV3IFNwbGlkZShtYWluKVxuICAgICAgICAgICAgY29uc3QgdGh1bWJzQ2Fyb3VzZWwgPSBuZXcgU3BsaWRlKHRodW1icylcblxuICAgICAgICAgICAgbWFpbkNhcm91c2VsLnN5bmModGh1bWJzQ2Fyb3VzZWwpXG4gICAgICAgICAgICBtYWluQ2Fyb3VzZWwubW91bnQoKVxuICAgICAgICAgICAgdGh1bWJzQ2Fyb3VzZWwubW91bnQoKVxuXG4gICAgICAgICAgICB3aXJlVGh1bWJzKHRodW1ic0Nhcm91c2VsLCBbbWFpbkNhcm91c2VsLCB0aHVtYnNDYXJvdXNlbF0pXG4gICAgICAgIH0gZWxzZSBpZiAobWFpbikge1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIGNvbnN0IG1haW5DYXJvdXNlbCA9IG5ldyBTcGxpZGUobWFpbilcbiAgICAgICAgICAgIG1haW5DYXJvdXNlbC5tb3VudCgpXG4gICAgICAgIH0gZWxzZSBpZiAodGh1bWJzKSB7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgY29uc3QgdGh1bWJzQ2Fyb3VzZWwgPSBuZXcgU3BsaWRlKHRodW1icylcbiAgICAgICAgICAgIHRodW1ic0Nhcm91c2VsLm1vdW50KClcblxuICAgICAgICAgICAgd2lyZVRodW1icyh0aHVtYnNDYXJvdXNlbCwgW3RodW1ic0Nhcm91c2VsXSlcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBGaW5kIGVhY2ggc2xpZGVyIGNvbnRhaW5lclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5nYWxsZXJ5LWNhcm91c2VsLWhvbGRlcicpLmZvckVhY2goKGNhcm91c2VsKSA9PiB7XG4gICAgICAgIC8vIEdldCB0aGUgU3BsaWRlIGVsZW1lbnQgaW5zaWRlIHRoZSBjb250YWluZXJcbiAgICAgICAgY29uc3Qgc3BsaWRlRWxlbWVudCA9IGNhcm91c2VsLnF1ZXJ5U2VsZWN0b3IoJy5zcGxpZGUnKVxuICAgICAgICBjb25zdCBlbmFibGVHcmlkID0gc3BsaWRlRWxlbWVudC5kYXRhc2V0LmVuYWJsZUdyaWQgfHwgbnVsbFxuICAgICAgICAvLyBJbml0aWFsaXplIFNwbGlkZSAod2l0aCBHcmlkIGV4dGVuc2lvbiBpZiBuZWVkZWQpLCB3aXRoIGN1c3RvbSBhcnJvd3NcbiAgICAgICAgY29uc3Qgc3BsaWRlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGFycm93czogdHJ1ZSxcbiAgICAgICAgICAgIGFycm93UGF0aDogJycsIC8vIFByZXZlbnQgU3BsaWRlIGZyb20gaW5qZWN0aW5nIGl0cyBkZWZhdWx0IFNWR1xuICAgICAgICAgICAgY2xhc3Nlczoge1xuICAgICAgICAgICAgICAgIGFycm93czogJ3NwbGlkZV9fYXJyb3dzIGN1c3RvbS1hcnJvd3MnLFxuICAgICAgICAgICAgICAgIGFycm93OiAnc3BsaWRlX19hcnJvdyBjdXN0b20tYXJyb3cnLFxuICAgICAgICAgICAgICAgIHByZXY6ICdzcGxpZGVfX2Fycm93LS1wcmV2IGN1c3RvbS1hcnJvdy1wcmV2JyxcbiAgICAgICAgICAgICAgICBuZXh0OiAnc3BsaWRlX19hcnJvdy0tbmV4dCBjdXN0b20tYXJyb3ctbmV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNsaWRlID0gZW5hYmxlR3JpZFxuICAgICAgICAgICAgPyBuZXcgU3BsaWRlKHNwbGlkZUVsZW1lbnQsIHNwbGlkZU9wdGlvbnMpLm1vdW50KHsgR3JpZCB9KVxuICAgICAgICAgICAgOiBuZXcgU3BsaWRlKHNwbGlkZUVsZW1lbnQsIHNwbGlkZU9wdGlvbnMpLm1vdW50KClcblxuICAgICAgICAvLyBBc3NpZ24gc2xpZGUgbGVuZ3RoIGFzIGEgZGF0YSBhdHRyaWJ1dGUgaWYgbmVlZGVkXG4gICAgICAgIGNhcm91c2VsLnNldEF0dHJpYnV0ZSgnZGF0YS1sZW5ndGgnLCBzbGlkZS5sZW5ndGgpXG5cbiAgICAgICAgLy8gTW92ZSBTcGxpZGUgYXJyb3dzIGFib3ZlIHRoZSBjYXJvdXNlbFxuICAgICAgICBjb25zdCBhcnJvd3MgPSBzcGxpZGVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zcGxpZGVfX2Fycm93cycpXG4gICAgICAgIGNvbnN0IGFycm93c0Fib3ZlID0gY2Fyb3VzZWwucXVlcnlTZWxlY3RvcignLmdhbGxlcnktYXJyb3dzLWFib3ZlJylcbiAgICAgICAgaWYgKGFycm93cyAmJiBhcnJvd3NBYm92ZSkge1xuICAgICAgICAgICAgYXJyb3dzQWJvdmUuYXBwZW5kQ2hpbGQoYXJyb3dzKVxuICAgICAgICAgICAgLy8gRW5mb3JjZSBmbGV4Ym94IGluIEpTIGluIGNhc2UgQ1NTIGlzIG5vdCBhcHBsaWVkIGVhcmx5IGVub3VnaFxuICAgICAgICAgICAgYXJyb3dzLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcbiAgICAgICAgICAgIGFycm93cy5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ3JvdydcbiAgICAgICAgICAgIGFycm93cy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdjZW50ZXInXG4gICAgICAgICAgICBhcnJvd3Muc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInXG4gICAgICAgICAgICBhcnJvd3Muc3R5bGUuZ2FwID0gJ3ZhcigtLWVzLWdhbGxlcnktYXJyb3ctZ2FwLCAxLjVyZW0pJ1xuICAgICAgICAgICAgYXJyb3dzLnN0eWxlLndpZHRoID0gJ2F1dG8nXG4gICAgICAgI
3H1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGJ1dHRvbnMgZnJvbSB0aGUgc2FtZSBjb250YWluZXJcbiAgICAgICAgY29uc3QgYnRuUHJldiA9IGNhcm91c2VsLnF1ZXJ5U2VsZWN0b3IoJy5idG4tcHJldi1zbGlkZScpXG4gICAgICAgIGNvbnN0IGJ0bk5leHQgPSBjYXJvdXNlbC5xdWVyeVNlbGVjdG9yKCcuYnRuLW5leHQtc2xpZGUnKVxuXG4gICAgICAgIC8vIEFkZCBjbGljayBsaXN0ZW5lcnMgdG8gbW92ZSB0aGUgc2xpZGVyIGFjY29yZGluZ2x5XG4gICAgICAgIGlmIChidG5QcmV2KSB7XG4gICAgICAgICAgICBidG5QcmV2LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgLy8gUHJldmVudCBtb2RhbCBmcm9tIG9wZW5pbmcgd2hlbiBjbGlja2luZyBwcmV2XG4gICAgICAgICAgICAgICAgc2xpZGUuZ28oJy0xJylcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnRuTmV4dCkge1xuICAgICAgICAgICAgYnRuTmV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIC8vIFByZXZlbnQgbW9kYWwgZnJvbSBvcGVuaW5nIHdoZW4gY2xpY2tpbmcgbmV4dFxuICAgICAgICAgICAgICAgIHNsaWRlLmdvKCcrMScpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIC8vIFByZXZlbnQgbW9kYWwgZnJvbSBvcGVuaW5nIHdoZW4gY2xpY2tpbmcgU3BsaWRlIHByZXYvbmV4dCBjb250cm9sc1xuICAgIC8vIGluIHRoZSBnYWxsZXJ5IGNhcm91c2VsLiBUaGlzIHdvcmtzIGV2ZW4gaWYgYnV0dG9ucyBhcmUgaW5zaWRlXG4gICAgLy8gLmJ0bi1vcGVuLW1vZGFsXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAvLyBJZiB0aGUgY2xpY2sgaXMgb24gYSBTcGxpZGUgcHJldi9uZXh0IGJ1dHRvbiwgZG8gbm90IG9wZW4gdGhlIG1vZGFsXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGUudGFyZ2V0LmNsb3Nlc3QoJy5idG4tcHJldi1zbGlkZScpXG4gICAgICAgICAgICB8fCBlLnRhcmdldC5jbG9zZXN0KCcuYnRuLW5leHQtc2xpZGUnKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgYW55IG1vZGFsIG9wZW4gbG9naWMgZnJvbSBydW5uaW5nXG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIH1cbiAgICB9LCB0cnVlKSAvLyBVc2UgY2FwdHVyZSBwaGFzZSB0byBpbnRlcmNlcHQgYmVmb3JlIG90aGVyIGhhbmRsZXJzXG59XG5cbmV4cG9ydCB7XG4gICAgaW5pdFNwbGlkZUNhcm91c2VsXG59XG4iXSwibmFtZXMiOlsiaW5pdEJhY2tUb1RvcCIsImNvbnRyb2wiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJoaWRkZW4iLCJ0aWNraW5nIiwidXBkYXRlIiwidGhyZXNob2xkIiwiTWF0aCIsIm1heCIsIndpbmRvdyIsImlubmVySGVpZ2h0IiwiY2xhc3NMaXN0IiwidG9nZ2xlIiwic2Nyb2xsWSIsIm9uU2Nyb2xsIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwicmVkdWNlTW90aW9uIiwibWF0Y2hNZWRpYSIsIm1hdGNoZXMiLCJzY3JvbGxUbyIsInRvcCIsImJlaGF2aW9yIiwic2tpcExpbmsiLCJmb2N1cyIsInJlYWR5U3RhdGUiLCJtb2R1bGUiLCJleHBvcnRzIiwiZSIsInQiLCJUeXBlRXJyb3IiLCJpIiwibGVuZ3RoIiwicyIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwibiIsImtleSIsInByb3RvdHlwZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlN0cmluZyIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJsIiwiRGF0ZSIsIm5vdyIsIm8iLCJhcmd1bWVudHMiLCJ0b1N0cmluZyIsImhhc093blByb3BlcnR5IiwiciIsIkUiLCJMIiwiSSIsIk0iLCJQIiwiYSIsImFsbCIsImV2dCIsImZvdW5kIiwiZXZlbnROYW1lIiwiZm4iLCJoIiwib25FbGVtZW50Iiwid2l0aENhbGxiYWNrIiwiYXZvaWREdXBsaWNhdGUiLCJvbmNlIiwiZCIsInVzZUNhcHR1cmUiLCJjIiwidSIsImciLCJ2IiwiQyIsInRoaXMiLCJkZXN0cm95IiwiayIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJzcGxpY2UiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicHVzaCIsInNwbGl0IiwiYWRkIiwicmVtb3ZlIiwiY29udGFpbnMiLCJib2R5IiwicGFyZW50RWxlbWVudCIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwiY3JlYXRlRWxlbWVudCIsImFuaW1hdGlvbiIsIk9BbmltYXRpb24iLCJNb3pBbmltYXRpb24iLCJXZWJraXRBbmltYXRpb24iLCJzdHlsZSIsImIiLCJmIiwid2Via2l0VHJhbnNmb3JtIiwiTW96VHJhbnNmb3JtIiwibXNUcmFuc2Zvcm0iLCJPVHJhbnNmb3JtIiwidHJhbnNmb3JtIiwicCIsImRpc3BsYXkiLCJtIiwieSIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJpbm5lckhUTUwiLCJmaXJzdENoaWxkIiwiYXBwZW5kQ2hpbGQiLCJ4Iiwid2lkdGgiLCJpbm5lcldpZHRoIiwiZG9jdW1lbnRFbGVtZW50IiwiY2xpZW50V2lkdGgiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJTIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInciLCJPIiwiY29uc29sZSIsImVycm9yIiwiaW5kZXhPZiIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicmVsIiwidHlwZSIsImhyZWYiLCJtZWRpYSIsImluc2VydEJlZm9yZSIsInNyYyIsIm9ubG9hZCIsIlQiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJtYXRjaCIsIm5vZGVUeXBlIiwiQSIsIkFycmF5IiwiaXNBcnJheSIsImlzRmluaXRlIiwia2V5cyIsInoiLCJpc05hTiIsInBhcnNlRmxvYXQiLCJYIiwicGFyc2VJbnQiLCJnZXRBdHRyaWJ1dGUiLCJhcHBseSIsIm1hcCIsImZpbHRlciIsInNvcnQiLCJjb25jYXQiLCJxIiwiaW1nIiwic2xpZGUiLCJvbmNsb3NlIiwic2V0Wm9vbUV2ZW50cyIsImFjdGl2ZSIsInpvb21lZEluIiwiZHJhZ2dpbmciLCJ
3jdXJyZW50WCIsImN1cnJlbnRZIiwiaW5pdGlhbFgiLCJpbml0aWFsWSIsInhPZmZzZXQiLCJ5T2Zmc2V0IiwiZHJhZ1N0YXJ0IiwiZHJhZ0VuZCIsImRyYWciLCJ6b29tT3V0Iiwiem9vbUluIiwidmFsdWUiLCJ3aWRvd1dpZHRoIiwic2V0QXR0cmlidXRlIiwibWF4V2lkdGgiLCJuYXR1cmFsV2lkdGgiLCJtYXhIZWlnaHQiLCJuYXR1cmFsSGVpZ2h0Iiwic2V0VHJhbnNsYXRlIiwicGFyZW50Tm9kZSIsInRvdWNoZXMiLCJjbGllbnRYIiwiY2xpZW50WSIsInRhcmdldCIsImlzRHJhZ2dpbmciLCJOIiwiZHJhZ0VsIiwidG9sZXJhbmNlWCIsInRvbGVyYW5jZVkiLCJpbnN0YW5jZSIsImVsIiwiZGlyZWN0aW9uIiwibGFzdERpcmVjdGlvbiIsInRvbGVyYW5jZVJlYWNoZWQiLCJkcmFnQ29udGFpbmVyIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsImRvU2xpZGVDaGFuZ2UiLCJwcmV2ZW50T3V0c2lkZUNsaWNrIiwicHJldlNsaWRlIiwibmV4dFNsaWRlIiwiZG9TbGlkZUNsb3NlIiwiY2xvc2UiLCJ0cmFuc2l0aW9uIiwiYWJzIiwic2hvdWxkQ2hhbmdlIiwic2V0dGluZ3MiLCJkcmFnQXV0b1NuYXAiLCJzaG91bGRDbG9zZSIsImxhc3RDaGlsZCIsIl8iLCJnZXRBbGxQbGF5ZXJzIiwicGx5ciIsImNzcyIsInZpZGVvUHJvdmlkZXIiLCJqcyIsImNvbmZpZyIsIlBseXIiLCJvbiIsImRldGFpbCIsImRhdGFzZXQiLCJyZWFkeSIsInJlc2l6ZSIsIlciLCJCIiwicG9wIiwidHJpbSIsImNvbnRlbnQiLCJjbGFzc05hbWUiLCJnZXRFbGVtZW50QnlJZCIsImNsb25lTm9kZSIsImV2ZW50cyIsIkgiLCJ1cmwiLCJhbGxvdyIsImNhbGxiYWNrIiwiYXBwZW5kVG8iLCJqIiwiZGVmYXVsdHMiLCJzaXplcyIsInNyY3NldCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJhbHQiLCJkZXNjUG9zaXRpb24iLCJlZmZlY3QiLCJ6b29tYWJsZSIsImRyYWdnYWJsZSIsInNvdXJjZVR5cGUiLCJzZXRTaXplIiwic2FuaXRpemVWYWx1ZSIsImpvaW4iLCJSZWdFeHAiLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwiRE9NRXhjZXB0aW9uIiwic2xpZGVDb25maWciLCJjaGVja1NpemUiLCJ2aWRlb3NXaWR0aCIsIl9oYXNDdXN0b21XaWR0aCIsIl9oYXNDdXN0b21IZWlnaHQiLCJWIiwiZWxlbWVudCIsImluZGV4IiwiYmVmb3JlU2xpZGVMb2FkIiwicGxheWVyIiwiYWZ0ZXJTbGlkZUxvYWQiLCJnZXRTbGlkZVBsYXllckluc3RhbmNlIiwicmVtb3ZlQ2hpbGQiLCJpZCIsIm1vcmVMZW5ndGgiLCJzbWFsbERlc2NyaXB0aW9uIiwic2xpZGVTaG9ydERlc2MiLCJtb3JlVGV4dCIsImRlc2NyaXB0aW9uRXZlbnRzIiwiZHJhZ1RvbGVyYW5jZVgiLCJkcmFnVG9sZXJhbmNlWSIsIkltYWdlIiwiRCIsIm9mZnNldFdpZHRoIiwiaW5uZXJUZXh0Iiwic3Vic3RyIiwic2xpZGVIVE1MIiwic2xpZGVFeHRyYUF0dHJpYnV0ZXMiLCJwYXJzZUNvbmZpZyIsIkYiLCJzcXJ0IiwiRyIsImhhbmRsZXJzIiwiWiIsIlUiLCJzdGFydCIsImJpbmQiLCJtb3ZlIiwiZW5kIiwiY2FuY2VsIiwicHJlViIsInBpbmNoU3RhcnRMZW4iLCJ6b29tIiwiaXNEb3VibGVUYXAiLCJyb3RhdGUiLCJ0b3VjaFN0YXJ0IiwibXVsdGlwb2ludFN0YXJ0IiwibXVsdGlwb2ludEVuZCIsInBpbmNoIiwic3dpcGUiLCJ0YXAiLCJkb3VibGVUYXAiLCJsb25nVGFwIiwic2luZ2xlVGFwIiwicHJlc3NNb3ZlIiwidHdvRmluZ2VyUHJlc3NNb3ZlIiwidG91Y2hNb3ZlIiwidG91Y2hFbmQiLCJ0b3VjaENhbmNlbCIsInRyYW5zbGF0ZUNvbnRhaW5lciIsIl9jYW5jZWxBbGxIYW5kbGVyIiwiY2FuY2VsQWxsIiwiZGVsdGEiLCJsYXN0IiwidGFwVGltZW91dCIsInNpbmdsZVRhcFRpbWVvdXQiLCJsb25nVGFwVGltZW91dCIsInN3aXBlVGltZW91dCIsIngxIiwieDIiLCJ5MSIsInkyIiwicHJlVGFwUG9zaXRpb24iLCJsb2ciLCJwYWdlWCIsInBhZ2VZIiwiZGlzcGF0Y2giLCJfY2FuY2VsTG9uZ1RhcCIsIl9jYW5jZWxTaW5nbGVUYXAiLCJfcHJldmVudFRhcCIsImFuZ2xlIiwiYWNvcyIsIlBJIiwiUiIsInN4MiIsImRlbHRhWCIsImRlbHRhWSIsInN5MiIsImNoYW5nZWRUb3VjaGVzIiwiX3N3aXBlRGlyZWN0aW9uIiwiZGVsIiwiJCIsIk9UcmFuc2l0aW9uIiwiTW96VHJhbnNpdGlvbiIsIldlYmtpdFRyYW5zaXRpb24iLCJvcGFjaXR5IiwiSyIsIlEiLCJjcmVhdGVUb3VjaCIsIm1zTWF4VG91Y2hQb2ludHMiLCJlZSIsInRlIiwic2VsZWN0b3IiLCJlbGVtZW50cyIsInNraW4iLCJ0aGVtZSIsImNsb3NlQnV0dG9uIiwic3RhcnRBdCIsImF1dG9wbGF5VmlkZW9zIiwiYXV0b2ZvY3VzVmlkZW9zIiwiYmVmb3JlU2xpZGVDaGFuZ2UiLCJhZnRlclNsaWRlQ2hhbmdlIiwic2xpZGVJbnNlcnRlZCIsInNsaWRlUmVtb3ZlZCIsIm9uT3BlbiIsIm9uQ2xvc2UiLCJsb29wIiwicHJlbG9hZCIsIm9uZVNsaWRlUGVyT3BlbiIsInRvdWNoTmF2aWdhdGlvbiIsInRvdWNoRm9sbG93QXhpcyIsImtleWJvYXJkTmF2aWdhdGlvbiIsImNsb3NlT25PdXRzaWRlQ2xpY2siLCJwbHVnaW5zIiwicmF0aW8iLCJmdWxsc2NyZWVuIiwiZW5hYmxlZCIsImlvc05hdGl2ZSIsInlvdXR1YmUiLCJub0Nvb2tpZSIsInNob3dpbmZvIiwiaXZfbG9hZF9wb2xpY3kiLCJ2aW1lbyIsImJ5bGluZSIsInBvcnRyYWl0IiwidHJhbnNwYXJlbnQiLCJvcGVuRWZmZWN0IiwiY2xvc2VFZmZlY3QiLCJzbGlkZUVmZmVjdCIsImNzc0VmZWN0cyIsImZhZGUiLCJpbiIsIm91dCIsInNsaWRlQmFjayIsIm5vbmUiLCJzdmciLCJuZXh0IiwicHJldiIsImxpZ2h0Ym94SFRNTCIsImllIiwiY3VzdG9tT3B0aW9ucyIsImVmZmVjdHNDbGFzc2VzIiwiZ2V0QW5pbWF0aW9uQ2xhc3NlcyIsInZpZGVvUGxheWVycyIsImFwaUV2ZW50cyIsImZ1bGxFbGVtZW50c0xpc3QiLCJnZXRTZWxlY3RvciIsImJhc2VFdmVudHMiLCJvcGVuIiwiZ2V0RWxlbWVudHMiLCJhY3RpdmVTbGlkZSIsInByZXZBY3RpdmVTbGlkZUluZGV4IiwicHJldkFjdGl2ZVNsaWRlIiwiZ2V0R2FsbGVyeUVsZW1lbnRzIiwiZ2V0RWxlbWVudEluZGV4IiwiYnVpbGQiLCJvdmVybGF5IiwiaGVhZCIsInNob3dTbGlkZSIsInByZXZCdXR0b24iLCJuZXh0QnV0dG9uIiwibGlnaHRib3hPcGVuIiwidHJpZ2dlciIsIlkiLCJ0YXJnZXRUb3VjaGVzIiwib2Zmc2V0SGVpZ2h0Iiwic2NhbGVYIiwic2NhbGVZIiwidG91Y2giLCJKIiwia2V5Ym9hcmQiLCJrZXlDb2RlIiwiYWN0aXZlRWxlbWVudCIsInRvTG9jYWxlTG93ZXJDYXNlIiwibG9hZGVyIiwic2xpZGVzQ29udGFpbmVyIiwic2xpZGVBbmltYXRlT3V0Iiwic2xpZGVBbmltYXRlSW4iLCJzbGlkZU5vZGUiLCJzbGlkZUluZGV4Iiwibm9kZSIsInNldENvbnRlbnQiLCJzbGlkZURlc2NyaXB0aW9uIiwic2xpZGVEZXNjcmlwdGlvbkNvbnRhaW5lZCIsInByZWxvYWRTbGlkZSIsInVwZGF0ZU5hdmlnYXRpb25DbGFzc2VzIiwiZ29Ub1NsaWRlIiwiZ2V0Q29uZmlnIiwiY3JlYXRlIiwiZ2V0QWN0aXZlU2xpZGVJbmRleCIsInNsaWRlUGxheWVyUGxheSIsImN1cnJlbnQiLCJzbGlkZVBsYXllclBhdXNlIiwicGxheWluZyIsInBhdXNlIiwicGxheSIsIm11dGVkIiwiY29udGFpbmVyIiwiZ2FsbGVyeSIsImJ1aWx0IiwiY2hpbGROb2RlcyIsImNoYXJBdCIsImhhc0F0dHJpYnV0ZSIsIm1vZGFsIiwiYm9keUhpZGRlbkNoaWxkRWxtcyIsIm91dENsb3NlIiwiZmxvb3IiLCJpbml0IiwibG9vcEF0RW5kIiwiY2xvc2luZyIsInJlbW92ZUF0dHJpYnV0ZSIsImNsZWFyQWxsRXZlbnRzIiwiaW5pdFZpb2xhdG9ycyIsImZvckVhY2giLCJ2aW9sYXRvciIsImNvb2tpZU5hbWUiLCJuYW1lIiwibmFtZUVRIiwiY2EiLCJjb29raWUiLCJnZXRDb29raWUiLCJkYXRlIiwic2V0VGltZSIsImdldFRpbWUiLCJleHBpcmVzIiwidG9VVENTdHJpbmciLCJzZXRDb29raWUiLCJpbml0UG9wdXBzIiwiYm9vdHN0cmFwIiwiYm9vdHN0cmFwTW9kYWwiLCJNb2RhbCIsImJhY2tkcm9wIiwic2hvdyIsImRpc3Bvc2UiLCJ3YXJuIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImdldHRlciIsIl9fZXNNb2R1bGUiLCJkZWZpbml0aW9uIiwiZ2V0Iiwib2JqIiwicHJvcCIsInRvU3RyaW5nVGFnIiwiYm90dG9tIiwicmlnaHQiLCJsZWZ0IiwiYXV0byIsImJhc2VQbGFjZW1lbnRzIiwiY2xpcHBpbmdQYXJlbnRzIiwidmlld3BvcnQiLCJwb3BwZXIiLCJyZWZlcmVuY2UiLCJ2YXJpYXRpb25QbGFjZW1lbnRzIiwicmVkdWNlIiwiYWNjIiwicGxhY2VtZW50IiwiYmVmb3JlUmVhZCIsInJlYWQiLCJhZnRlclJlYWQiLCJiZWZvcmVNYWluIiwibWFpbiIsImFmdGVyTWFpbiIsImJlZm9yZVdyaXRlIiwid3JpdGUiLCJhZnRlcldyaXRlIiwibW9kaWZpZXJQaGFzZXMiLCJnZXROb2RlTmFtZSIsImdldFdpbmRvdyIsIm93bmVyRG9jdW1lbnQiLCJkZWZhdWx0VmlldyIsImlzRWxlbWVudCIsIkVsZW1lbnQiLCJpc0hUTUxFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJTaGFkb3dSb290IiwicGhhc2UiLCJfcmVmIiwic3RhdGUiLCJzdHlsZXMiLCJhdHRyaWJ1dGVzIiwiYXNzaWduIiwiX3JlZjIiLCJpbml0
3aWFsU3R5bGVzIiwicG9zaXRpb24iLCJvcHRpb25zIiwic3RyYXRlZ3kiLCJtYXJnaW4iLCJhcnJvdyIsInByb3BlcnR5IiwiYXR0cmlidXRlIiwicmVxdWlyZXMiLCJnZXRCYXNlUGxhY2VtZW50IiwibWluIiwicm91bmQiLCJnZXRVQVN0cmluZyIsInVhRGF0YSIsInVzZXJBZ2VudERhdGEiLCJicmFuZHMiLCJpdGVtIiwiYnJhbmQiLCJ2ZXJzaW9uIiwiaXNMYXlvdXRWaWV3cG9ydCIsInRlc3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0IiwidmlzdWFsVmlld3BvcnQiLCJhZGRWaXN1YWxPZmZzZXRzIiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsImdldExheW91dFJlY3QiLCJwYXJlbnQiLCJjaGlsZCIsInJvb3ROb2RlIiwiZ2V0Um9vdE5vZGUiLCJpc1NhbWVOb2RlIiwiaG9zdCIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImdldERvY3VtZW50RWxlbWVudCIsImdldFBhcmVudE5vZGUiLCJhc3NpZ25lZFNsb3QiLCJnZXRUcnVlT2Zmc2V0UGFyZW50Iiwib2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50IiwiaXNGaXJlZm94IiwiY3VycmVudE5vZGUiLCJwZXJzcGVjdGl2ZSIsImNvbnRhaW4iLCJ3aWxsQ2hhbmdlIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50Iiwid2l0aGluIiwibWVyZ2VQYWRkaW5nT2JqZWN0IiwicGFkZGluZ09iamVjdCIsImV4cGFuZFRvSGFzaE1hcCIsImhhc2hNYXAiLCJfc3RhdGUkbW9kaWZpZXJzRGF0YSQiLCJhcnJvd0VsZW1lbnQiLCJwb3BwZXJPZmZzZXRzIiwibW9kaWZpZXJzRGF0YSIsImJhc2VQbGFjZW1lbnQiLCJheGlzIiwibGVuIiwicGFkZGluZyIsInJlY3RzIiwidG9QYWRkaW5nT2JqZWN0IiwiYXJyb3dSZWN0IiwibWluUHJvcCIsIm1heFByb3AiLCJlbmREaWZmIiwic3RhcnREaWZmIiwiYXJyb3dPZmZzZXRQYXJlbnQiLCJjbGllbnRTaXplIiwiY2VudGVyVG9SZWZlcmVuY2UiLCJjZW50ZXIiLCJvZmZzZXQiLCJheGlzUHJvcCIsImNlbnRlck9mZnNldCIsIl9vcHRpb25zJGVsZW1lbnQiLCJyZXF1aXJlc0lmRXhpc3RzIiwiZ2V0VmFyaWF0aW9uIiwidW5zZXRTaWRlcyIsIm1hcFRvU3R5bGVzIiwiX09iamVjdCRhc3NpZ24yIiwicG9wcGVyUmVjdCIsInZhcmlhdGlvbiIsIm9mZnNldHMiLCJncHVBY2NlbGVyYXRpb24iLCJhZGFwdGl2ZSIsInJvdW5kT2Zmc2V0cyIsImlzRml4ZWQiLCJfb2Zmc2V0cyR4IiwiX29mZnNldHMkeSIsIl9yZWYzIiwiaGFzWCIsImhhc1kiLCJzaWRlWCIsInNpZGVZIiwid2luIiwiaGVpZ2h0UHJvcCIsIndpZHRoUHJvcCIsIl9PYmplY3QkYXNzaWduIiwiY29tbW9uU3R5bGVzIiwiX3JlZjQiLCJkcHIiLCJkZXZpY2VQaXhlbFJhdGlvIiwicm91bmRPZmZzZXRzQnlEUFIiLCJfcmVmNSIsIl9vcHRpb25zJGdwdUFjY2VsZXJhdCIsIl9vcHRpb25zJGFkYXB0aXZlIiwiX29wdGlvbnMkcm91bmRPZmZzZXRzIiwiZGF0YSIsIl9vcHRpb25zJHNjcm9sbCIsInNjcm9sbCIsIl9vcHRpb25zJHJlc2l6ZSIsInNjcm9sbFBhcmVudHMiLCJzY3JvbGxQYXJlbnQiLCJoYXNoIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJtYXRjaGVkIiwiZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQiLCJnZXRXaW5kb3dTY3JvbGwiLCJzY3JvbGxMZWZ0IiwicGFnZVhPZmZzZXQiLCJzY3JvbGxUb3AiLCJwYWdlWU9mZnNldCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJpc1Njcm9sbFBhcmVudCIsIl9nZXRDb21wdXRlZFN0eWxlIiwib3ZlcmZsb3ciLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJnZXRTY3JvbGxQYXJlbnQiLCJsaXN0U2Nyb2xsUGFyZW50cyIsImxpc3QiLCJfZWxlbWVudCRvd25lckRvY3VtZW4iLCJpc0JvZHkiLCJ1cGRhdGVkTGlzdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUiLCJjbGlwcGluZ1BhcmVudCIsImh0bWwiLCJsYXlvdXRWaWV3cG9ydCIsImdldFZpZXdwb3J0UmVjdCIsImNsaWVudFRvcCIsImNsaWVudExlZnQiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsIndpblNjcm9sbCIsInNjcm9sbFdpZHR
3oIiwic2Nyb2xsSGVpZ2h0IiwiZ2V0RG9jdW1lbnRSZWN0IiwiY29tcHV0ZU9mZnNldHMiLCJjb21tb25YIiwiY29tbW9uWSIsIm1haW5BeGlzIiwiZGV0ZWN0T3ZlcmZsb3ciLCJfb3B0aW9ucyIsIl9vcHRpb25zJHBsYWNlbWVudCIsIl9vcHRpb25zJHN0cmF0ZWd5IiwiX29wdGlvbnMkYm91bmRhcnkiLCJib3VuZGFyeSIsIl9vcHRpb25zJHJvb3RCb3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsIl9vcHRpb25zJGVsZW1lbnRDb250ZSIsImVsZW1lbnRDb250ZXh0IiwiX29wdGlvbnMkYWx0Qm91bmRhcnkiLCJhbHRCb3VuZGFyeSIsIl9vcHRpb25zJHBhZGRpbmciLCJhbHRDb250ZXh0IiwiY2xpcHBpbmdDbGllbnRSZWN0IiwibWFpbkNsaXBwaW5nUGFyZW50cyIsImNsaXBwZXJFbGVtZW50IiwiZ2V0Q2xpcHBpbmdQYXJlbnRzIiwiZmlyc3RDbGlwcGluZ1BhcmVudCIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXRDbGlwcGluZ1JlY3QiLCJjb250ZXh0RWxlbWVudCIsInJlZmVyZW5jZUNsaWVudFJlY3QiLCJwb3BwZXJDbGllbnRSZWN0IiwiZWxlbWVudENsaWVudFJlY3QiLCJvdmVyZmxvd09mZnNldHMiLCJvZmZzZXREYXRhIiwibXVsdGlwbHkiLCJfc2tpcCIsIl9vcHRpb25zJG1haW5BeGlzIiwiY2hlY2tNYWluQXhpcyIsIl9vcHRpb25zJGFsdEF4aXMiLCJhbHRBeGlzIiwiY2hlY2tBbHRBeGlzIiwic3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIiwiZmFsbGJhY2tQbGFjZW1lbnRzIiwiX29wdGlvbnMkZmxpcFZhcmlhdGlvIiwiZmxpcFZhcmlhdGlvbnMiLCJhbGxvd2VkQXV0b1BsYWNlbWVudHMiLCJwcmVmZXJyZWRQbGFjZW1lbnQiLCJvcHBvc2l0ZVBsYWNlbWVudCIsImdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsIl9vcHRpb25zJGFsbG93ZWRBdXRvUCIsImFsbG93ZWRQbGFjZW1lbnRzIiwib3ZlcmZsb3dzIiwiY29tcHV0ZUF1dG9QbGFjZW1lbnQiLCJyZWZlcmVuY2VSZWN0IiwiY2hlY2tzTWFwIiwiTWFwIiwibWFrZUZhbGxiYWNrQ2hlY2tzIiwiZmlyc3RGaXR0aW5nUGxhY2VtZW50IiwiX2Jhc2VQbGFjZW1lbnQiLCJpc1N0YXJ0VmFyaWF0aW9uIiwiaXNWZXJ0aWNhbCIsIm1haW5WYXJpYXRpb25TaWRlIiwiYWx0VmFyaWF0aW9uU2lkZSIsImNoZWNrcyIsImV2ZXJ5IiwiY2hlY2siLCJzZXQiLCJfbG9vcCIsIl9pIiwiZml0dGluZ1BsYWNlbWVudCIsImZpbmQiLCJzbGljZSIsInJlc2V0IiwiZ2V0U2lkZU9mZnNldHMiLCJwcmV2ZW50ZWRPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwic29tZSIsInNpZGUiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsInBvcHBlckFsdE92ZXJmbG93IiwicmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzIiwicG9wcGVyRXNjYXBlT2Zmc2V0cyIsImlzUmVmZXJlbmNlSGlkZGVuIiwiaGFzUG9wcGVyRXNjYXBlZCIsIl9vcHRpb25zJG9mZnNldCIsImludmVydERpc3RhbmNlIiwic2tpZGRpbmciLCJkaXN0YW5jZSIsImRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZIiwiX2RhdGEkc3RhdGUkcGxhY2VtZW50IiwiX29wdGlvbnMkdGV0aGVyIiwidGV0aGVyIiwiX29wdGlvbnMkdGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0IiwiaXNCYXNlUGxhY2VtZW50IiwidGV0aGVyT2Zmc2V0VmFsdWUiLCJub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUiLCJvZmZzZXRNb2RpZmllclN0YXRlIiwiX29mZnNldE1vZGlmaWVyU3RhdGUkIiwibWFpblNpZGUiLCJhbHRTaWRlIiwiYWRkaXRpdmUiLCJtaW5MZW4iLCJtYXhMZW4iLCJhcnJvd1BhZGRpbmdPYmplY3QiLCJhcnJvd1BhZGRpbmdNaW4iLCJhcnJvd1BhZGRpbmdNYXgiLCJhcnJvd0xlbiIsIm1pbk9mZnNldCIsIm1heE9mZnNldCIsImNsaWVudE9mZnNldCIsIm9mZnNldE1vZGlmaWVyVmFsdWUiLCJ0ZXRoZXJNYXgiLCJwcmV2ZW50ZWRPZmZzZXQiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIiwiX21haW5TaWRlIiwiX2FsdFNpZGUiLCJfb2Zmc2V0IiwiX2xlbiIsIl9taW4iLCJfbWF4IiwiaXNPcmlnaW5TaWRlIiwiX29mZnNldE1vZGlmaWVyVmFsdWUiLCJfdGV0aGVyTWluIiwiX3RldGhlck1heCIsIl9wcmV2ZW50ZWRPZmZzZXQiLCJ3aXRoaW5NYXhDbGFtcCIsImdldENvbXBvc2l0ZVJlY3QiLCJlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UGFyZW50SXNTY2FsZWQiLCJpc0VsZW1lbnRTY2FsZWQiLCJvcmRlciIsIm1vZGlmaWVycyIsInZpc2l0ZWQiLCJTZXQiLCJyZXN1bHQiLCJtb2RpZmllciIsImRlcCIsImhhcyIsImRlcE1vZGlmaWVyIiwiREVGQVVMVF9PUFRJT05TIiwiYXJlVmFsaWRFbGVtZW50cyIsImFyZ3MiLCJfa2V5IiwicG9wcGVyR2VuZXJhdG9yIiwiZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwiZGVmYXVsdE1vZGlmaWVycyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZjIiLCJkZWZhdWx0T3B0aW9ucyIsInBlbmRpbmciLCJvcmRlcmVkTW9kaWZpZXJzIiwiZWZmZWN0Q2xlYW51cEZucyIsImlzRGVzdHJveWVkIiwic2V0T3B0aW9ucyIsInNldE9wdGlvbnNBY3Rpb24iLCJjbGVhbnVwTW9kaWZpZXJFZmZlY3RzIiwibWVyZ2VkIiwib3JkZXJNb2RpZmllcnMiLCJleGlzdGluZyIsIl9yZWYkb3B0aW9ucyIsImNsZWFudXBGbiIsImZvcmNlVXBkYXRlIiwiX3N0YXRlJGVsZW1lbnRzIiwiX3N0YXRlJG9yZGVyZWRNb2RpZmllIiwiX3N0YXRlJG9yZGVyZWRNb2RpZmllMiIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIm9uRmlyc3RVcGRhdGUiLCJjcmVhdGVQb3BwZXIiLCJldmVudExpc3RlbmVycyIsImVsZW1lbnRNYXAiLCJEYXRhIiwiaW5zdGFuY2VNYXAiLCJzaXplIiwiZnJvbSIsImRlbGV0ZSIsIlRSQU5TSVRJT05fRU5EIiwicGFyc2VTZWxlY3RvciIsIkNTUyIsImVzY2FwZSIsInRvVHlwZSIsIm9iamVjdCIsInRyaWdnZXJUcmFuc2l0aW9uRW5kIiwiZGlzcGF0Y2hFdmVudCIsIkV2ZW50IiwianF1ZXJ5IiwiZ2V0RWxlbWVudCIsImlzVmlzaWJsZSIsImdldENsaWVudFJlY3RzIiwiZWxlbWVudElzVmlzaWJsZSIsImdldFByb3BlcnR5VmFsdWUiLCJjbG9zZWREZXRhaWxzIiwiY2xvc2VzdCIsInN1bW1hcnkiLCJpc0Rpc2FibGVkIiwiTm9kZSIsIkVMRU1FTlRfTk9ERSIsImRpc2FibGVkIiwiZmluZFNoYWRvd1Jvb3QiLCJhdHRhY2hTaGFkb3ciLCJyb290Iiwibm9vcCIsInJlZmxvdyIsImdldGpRdWVyeSIsImpRdWVyeSIsIkRPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MiLCJpc1JUTCIsImRpciIsImRlZmluZUpRdWVyeVBsdWdpbiIsInBsdWdpbiIsIk5BTUUiLCJKUVVFUllfTk9fQ09ORkxJQ1QiLCJqUXVlcnlJbnRlcmZhY2UiLCJDb25zdHJ1Y3RvciIsIm5vQ29uZmxpY3QiLCJleGVjdXRlIiwicG9zc2libGVDYWxsYmFjayIsImRlZmF1bHRWYWx1ZSIsImV4ZWN1dGVBZnRlclRyYW5zaXRpb24iLCJ0cmFuc2l0aW9uRWxlbWVudCIsIndhaXRGb3JUcmFuc2l0aW9uIiwiZW11bGF0ZWREdXJhdGlvbiIsInRyYW5zaXRpb25EdXJhdGlvbiIsInRyYW5zaXRpb25EZWxheSIsImZsb2F0VHJhbnNpdGlvbkR1cmF0aW9uIiwiTnVtYmVyIiwiZmxvYXRUcmFuc2l0aW9uRGVsYXkiLCJnZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCIsImNhbGxlZCIsImhhbmRsZXIiLCJnZXROZXh0QWN0aXZlRWxlbWVudCIsInNob3VsZEdldE5leHQiLCJpc0N5Y2xlQWxsb3dlZCIsImxpc3RMZW5ndGgiLCJuYW1lc3BhY2VSZWdleCIsInN0cmlwTmFtZVJlZ2V4Iiwic3RyaXBVaWRSZWdleCIsImV2ZW50UmVnaXN0cnkiLCJ1aWRFdmVudCIsImN1c3RvbUV2ZW50cyIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwibmF0aXZlRXZlbnRzIiwibWFrZUV2ZW50VWlkIiwidWlkIiwiZ2V0RWxlbWVudEV2ZW50cyIsImZpbmRIYW5kbGVyIiwiY2FsbGFibGUiLCJkZWxlZ2F0aW9uU2VsZWN0b3IiLCJ2YWx1ZXMiLCJub3JtYWxpem
3VQYXJhbWV0ZXJzIiwib3JpZ2luYWxUeXBlRXZlbnQiLCJkZWxlZ2F0aW9uRnVuY3Rpb24iLCJpc0RlbGVnYXRlZCIsInR5cGVFdmVudCIsImdldFR5cGVFdmVudCIsImFkZEhhbmRsZXIiLCJvbmVPZmYiLCJ3cmFwRnVuY3Rpb24iLCJyZWxhdGVkVGFyZ2V0IiwiZGVsZWdhdGVUYXJnZXQiLCJwcmV2aW91c0Z1bmN0aW9uIiwiZG9tRWxlbWVudHMiLCJkb21FbGVtZW50IiwiaHlkcmF0ZU9iaiIsIkV2ZW50SGFuZGxlciIsIm9mZiIsImJvb3RzdHJhcERlbGVnYXRpb25IYW5kbGVyIiwiYm9vdHN0cmFwSGFuZGxlciIsInJlbW92ZUhhbmRsZXIiLCJCb29sZWFuIiwicmVtb3ZlTmFtZXNwYWNlZEhhbmRsZXJzIiwibmFtZXNwYWNlIiwic3RvcmVFbGVtZW50RXZlbnQiLCJoYW5kbGVyS2V5IiwiZW50cmllcyIsImluY2x1ZGVzIiwib25lIiwiaW5OYW1lc3BhY2UiLCJpc05hbWVzcGFjZSIsInN0YXJ0c1dpdGgiLCJlbGVtZW50RXZlbnQiLCJrZXlIYW5kbGVycyIsImpRdWVyeUV2ZW50IiwiYnViYmxlcyIsIm5hdGl2ZURpc3BhdGNoIiwiZGVmYXVsdFByZXZlbnRlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJjYW5jZWxhYmxlIiwibWV0YSIsIl91bnVzZWQiLCJub3JtYWxpemVEYXRhIiwiSlNPTiIsInBhcnNlIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwibm9ybWFsaXplRGF0YUtleSIsImNociIsIk1hbmlwdWxhdG9yIiwic2V0RGF0YUF0dHJpYnV0ZSIsInJlbW92ZURhdGFBdHRyaWJ1dGUiLCJnZXREYXRhQXR0cmlidXRlcyIsImJzS2V5cyIsInB1cmVLZXkiLCJnZXREYXRhQXR0cmlidXRlIiwiQ29uZmlnIiwiRGVmYXVsdCIsIkRlZmF1bHRUeXBlIiwiRXJyb3IiLCJfZ2V0Q29uZmlnIiwiX21lcmdlQ29uZmlnT2JqIiwiX2NvbmZpZ0FmdGVyTWVyZ2UiLCJfdHlwZUNoZWNrQ29uZmlnIiwianNvbkNvbmZpZyIsImNvbmZpZ1R5cGVzIiwiZXhwZWN0ZWRUeXBlcyIsInZhbHVlVHlwZSIsInRvVXBwZXJDYXNlIiwiQmFzZUNvbXBvbmVudCIsInN1cGVyIiwiX2VsZW1lbnQiLCJfY29uZmlnIiwiREFUQV9LRVkiLCJFVkVOVF9LRVkiLCJwcm9wZXJ0eU5hbWUiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiX3F1ZXVlQ2FsbGJhY2siLCJpc0FuaW1hdGVkIiwiZ2V0SW5zdGFuY2UiLCJnZXRPckNyZWF0ZUluc3RhbmNlIiwiVkVSU0lPTiIsImhyZWZBdHRyaWJ1dGUiLCJzZWwiLCJTZWxlY3RvckVuZ2luZSIsImZpbmRPbmUiLCJjaGlsZHJlbiIsInBhcmVudHMiLCJhbmNlc3RvciIsInByZXZpb3VzIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsIm5leHRFbGVtZW50U2libGluZyIsImZvY3VzYWJsZUNoaWxkcmVuIiwiZm9jdXNhYmxlcyIsImdldFNlbGVjdG9yRnJvbUVsZW1lbnQiLCJnZXRFbGVtZW50RnJvbVNlbGVjdG9yIiwiZ2V0TXVsdGlwbGVFbGVtZW50c0Zyb21TZWxlY3RvciIsImVuYWJsZURpc21pc3NUcmlnZ2VyIiwiY29tcG9uZW50IiwibWV0aG9kIiwiY2xpY2tFdmVudCIsInRhZ05hbWUiLCJFVkVOVF9LRVkkYiIsIkVWRU5UX0NMT1NFIiwiRVZFTlRfQ0xPU0VEIiwiQWxlcnQiLCJfZGVzdHJveUVsZW1lbnQiLCJlYWNoIiwiU0VMRUNUT1JfREFUQV9UT0dHTEUkNSIsIkJ1dHRvbiIsImJ1dHRvbiIsIkVWRU5UX0tFWSQ5IiwiRVZFTlRfVE9VQ0hTVEFSVCIsIkVWRU5UX1RPVUNITU9WRSIsIkVWRU5UX1RPVUNIRU5EIiwiRVZFTlRfUE9JTlRFUkRPV04iLCJFVkVOVF9QT0lOVEVSVVAiLCJEZWZhdWx0JGMiLCJlbmRDYWxsYmFjayIsImxlZnRDYWxsYmFjayIsInJpZ2h0Q2FsbGJhY2siLCJEZWZhdWx0VHlwZSRjIiwiU3dpcGUiLCJpc1N1cHBvcnRlZCIsIl9kZWx0YVgiLCJfc3VwcG9ydFBvaW50ZXJFdmVudHMiLCJQb2ludGVyRXZlbnQiLCJfaW5pdEV2ZW50cyIsIl9zdGFydCIsIl9ldmVudElzUG9pbnRlclBlblRvdWNoIiwiX2VuZCIsIl9oYW5kbGVTd2lwZSIsIl9tb3ZlIiwiYWJzRGVsdGFYIiwicG9pbnRlclR5cGUiLCJtYXhUb3VjaFBvaW50cyIsIkVWRU5UX0tFWSQ4IiwiREFUQV9BUElfS0VZJDUiLCJBUlJPV19MRUZUX0tFWSQxIiwiQVJST1dfUklHSFRfS0VZJDEiLCJPUkRFUl9ORVhUIiwiT1JERVJfUFJFViIsIkRJUkVDVElPTl9MRUZUIiwiRElSRUNUSU9OX1JJR0hUIiwiRVZFTlRfU0xJREUiLCJFVkVOVF9TTElEIiwiRVZFTlRfS0VZRE9XTiQxIiwiRVZFTlRfTU9VU0VFTlRFUiQxIiwiRVZFTlRfTU9VU0VMRUFWRSQxIiwiRVZFTlRfRFJBR19TVEFSVCIsIkVWRU5UX0xPQURfREFUQV9BUEkkMyIsIkVWRU5UX0NMSUNLX0RBVEFfQVBJJDUiLCJDTEFTU19OQU1FX0NBUk9VU0VMIiwiQ0xBU1NfTkFNRV9BQ1RJVkUkMiIsIlNFTEVDVE9SX0FDVElWRSIsIlNFTEVDVE9SX0lURU0iLCJTRUxFQ1RPUl9BQ1RJVkVfSVRFTSIsIktFWV9UT19ESVJFQ1RJT04iLCJEZWZhdWx0JGIiLCJpbnRlcnZhbCIsInJpZGUiLCJ3cmFwIiwiRGVmYXVsdFR5cGUkYiIsIkNhcm91c2VsIiwiX2ludGVydmFsIiwiX2FjdGl2ZUVsZW1lbnQiLCJfaXNTbGlkaW5nIiwidG91Y2hUaW1lb3V0IiwiX3N3aXBlSGVscGVyIiwiX2luZGljYXRvcnNFbGVtZW50IiwiX2FkZEV2ZW50TGlzdGVuZXJzIiwiY3ljbGUiLCJfc2xpZGUiLCJuZXh0V2hlblZpc2libGUiLCJfY2xlYXJJbnRlcnZhbCIsIl91cGRhdGVJbnRlcnZhbCIsIl9tYXliZUVuYWJsZUN5Y2xlIiwidG8iLCJpdGVtcyIsIl9nZXRJdGVtcyIsImFjdGl2ZUluZGV4IiwiX2dldEl0ZW1JbmRleCIsIl9nZXRBY3RpdmUiLCJkZWZhdWx0SW50ZXJ2YWwiLCJfa2V5ZG93biIsIl9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzIiwic3dpcGVDb25maWciLCJfZGlyZWN0aW9uVG9PcmRlciIsIl9zZXRBY3RpdmVJbmRpY2F0b3JFbGVtZW50IiwiYWN0aXZlSW5kaWNhdG9yIiwibmV3QWN0aXZlSW5kaWNhdG9yIiwiZWxlbWVudEludGVydmFsIiwiaXNOZXh0IiwibmV4dEVsZW1lbnQiLCJuZXh0RWxlbWVudEluZGV4IiwidHJpZ2dlckV2ZW50IiwiX29yZGVyVG9EaXJlY3Rpb24iLCJpc0N5Y2xpbmciLCJkaXJlY3Rpb25hbENsYXNzTmFtZSIsIm9yZGVyQ2xhc3NOYW1lIiwiX2lzQW5pbWF0ZWQiLCJjYXJvdXNlbCIsImNhcm91c2VscyIsIkVWRU5UX0tFWSQ3IiwiRVZFTlRfU0hPVyQ2IiwiRVZFTlRfU0hPV04kNiIsIkVWRU5UX0hJREUkNiIsIkVWRU5UX0hJRERFTiQ2IiwiRVZFTlRfQ0xJQ0tfREFUQV9BUEkkNCIsIkNMQVNTX05BTUVfU0hPVyQ3IiwiQ0xBU1NfTkFNRV9DT0xMQVBTRSIsIkNMQVNTX05BTUVfQ09MTEFQU0lORyIsIkNMQVNTX05BTUVfREVFUEVSX0NISUxEUkVOIiwiU0VMRUNUT1JfREFUQV9UT0dHTEUkNCIsIkRlZmF1bHQkYSIsIkRlZmF1bHRUeXBlJGEiLCJDb2xsYXBzZSIsIl9pc1RyYW5zaXRpb25pbmciLCJfdHJpZ2dlckFycmF5IiwidG9nZ2xlTGlzdCIsImVsZW0iLCJmaWx0ZXJFbGVtZW50IiwiZm91bmRFbGVtZW50IiwiX2luaXRpYWxpemVDaGlsZHJlbiIsIl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MiLCJfaXNTaG93biIsImhpZGUiLCJhY3RpdmVDaGlsZHJlbiIsIl9nZXRGaXJzdExldmVsQ2hpbGRyZW4iLCJhY3RpdmVJbnN0YW5jZSIsImRpbWVuc2lvbiIsIl9nZXREaW1lbnNpb24iLCJzY3JvbGxTaXplIiwic2VsZWN0ZWQiLCJ0cmlnZ2VyQXJyYXkiLCJpc09wZW4iLCJOQU1FJGEiLCJFVkVOVF9LRVkkNiIsIkRBVEFfQVBJX0tFWSQzIiwiQVJST1dfVVBfS0VZJDEiLCJBUlJPV19ET1dOX0tFWSQxIiwiRVZFTlRfSElERSQ1IiwiRVZFTlRfSElEREVOJDUiLCJFVkVOVF9TSE9XJDUiLCJFVkVOVF9TSE9XTiQ1IiwiRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMyIsIkVWRU5UX0tFWURPV05fREFUQV9BUEkiLCJFVkVOVF9LRVlVUF9EQVRBX0FQSSIsIkNMQVNTX05BTUVfU0hPVyQ2IiwiU0VMRUNUT1JfREFUQV9UT0dHTEUkMyIsIlNFTEVDVE9SX0RBVEFfVE9HR0xFX1NIT1dOIiwiU0VMRUNUT1JfTUVOVSIsIlBMQUNFTUVOVF9UT1AiLCJQTEFDRU1FTlRfVE9QRU5EIiwiUExBQ0VNRU5UX0JPVFRPTSIsIlBMQUNFTUVOVF9CT1RUT01FTkQiLCJQTEFDRU1FTlRfUklHSFQiLCJQTEFDRU1FTlRfTEVGVCIsIkRlZmF1bHQkOSIsImF1dG9DbG9zZSIsInBvcHBlckNvbmZpZyIsIkRlZmF1bHRUeXBlJDkiLCJEcm9wZG93biIsIl9wb3BwZXIiLCJfcGFyZW50IiwiX21lbnUiLCJfaW5OYXZiYXIiLCJfZGV0ZWN0TmF2YmFyIiwiX2NyZWF0ZVBvcHBlciIsIl9jb21wbGV0ZUhpZGUiLCJyZWZlcmVuY2VFbGVtZW50IiwiX2dldFBvcHBlckNvbmZpZyIsIl9nZXRQbGFjZW1lbnQiLCJwYXJlbnREcm9wZG93biIsImlzRW5kIiwiX2dldE9mZnNldCIsInBvcHBlckRhdGEiLCJkZWZhdWx0QnNQb3BwZXJDb25maWciLCJfc2VsZWN0TWVudUl0ZW0iLCJjbGVhck1lbnVzIiwib3BlblRvZ2dsZXMiLCJjb250ZXh0IiwiY29tcG9zZWRQYXRoIiwiaXNNZW51VGFyZ2V0IiwiZGF0YUFwaUtleWRvd25IYW5kbGVyIiwiaXNJbnB1dCIsImlzRXNjYXBlRXZlbnQiLCJpc1VwT3JEb3duRXZlbnQiLCJnZXRUb2dnbGVCdXR0b24iLCJzdG9wUHJvcGFnYXRpb24iLCJOQU1FJDkiLCJDTEFTU19OQU1FX1NIT1ckNSIsIkVWRU5UX01PVVNFRE9XTiIsIkRlZmF1bHQkOCIsImNsaWNrQ2FsbGJhY2siLCJyb290RWxlbWVudCIsIkRlZmF1bHRUeXBlJDgiLCJCYWNrZHJvcCIsIl9pc0
3FwcGVuZGVkIiwiX2FwcGVuZCIsIl9nZXRFbGVtZW50IiwiX2VtdWxhdGVBbmltYXRpb24iLCJhcHBlbmQiLCJFVkVOVF9LRVkkNSIsIkVWRU5UX0ZPQ1VTSU4kMiIsIkVWRU5UX0tFWURPV05fVEFCIiwiVEFCX05BVl9CQUNLV0FSRCIsIkRlZmF1bHQkNyIsImF1dG9mb2N1cyIsInRyYXBFbGVtZW50IiwiRGVmYXVsdFR5cGUkNyIsIkZvY3VzVHJhcCIsIl9pc0FjdGl2ZSIsIl9sYXN0VGFiTmF2RGlyZWN0aW9uIiwiYWN0aXZhdGUiLCJfaGFuZGxlRm9jdXNpbiIsIl9oYW5kbGVLZXlkb3duIiwiZGVhY3RpdmF0ZSIsInNoaWZ0S2V5IiwiU0VMRUNUT1JfRklYRURfQ09OVEVOVCIsIlNFTEVDVE9SX1NUSUNLWV9DT05URU5UIiwiUFJPUEVSVFlfUEFERElORyIsIlBST1BFUlRZX01BUkdJTiIsIlNjcm9sbEJhckhlbHBlciIsImdldFdpZHRoIiwiZG9jdW1lbnRXaWR0aCIsIl9kaXNhYmxlT3ZlckZsb3ciLCJfc2V0RWxlbWVudEF0dHJpYnV0ZXMiLCJjYWxjdWxhdGVkVmFsdWUiLCJfcmVzZXRFbGVtZW50QXR0cmlidXRlcyIsImlzT3ZlcmZsb3dpbmciLCJfc2F2ZUluaXRpYWxBdHRyaWJ1dGUiLCJzdHlsZVByb3BlcnR5Iiwic2Nyb2xsYmFyV2lkdGgiLCJfYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayIsInNldFByb3BlcnR5IiwiYWN0dWFsVmFsdWUiLCJyZW1vdmVQcm9wZXJ0eSIsImNhbGxCYWNrIiwiRVZFTlRfS0VZJDQiLCJFVkVOVF9ISURFJDQiLCJFVkVOVF9ISURFX1BSRVZFTlRFRCQxIiwiRVZFTlRfSElEREVOJDQiLCJFVkVOVF9TSE9XJDQiLCJFVkVOVF9TSE9XTiQ0IiwiRVZFTlRfUkVTSVpFJDEiLCJFVkVOVF9DTElDS19ESVNNSVNTIiwiRVZFTlRfTU9VU0VET1dOX0RJU01JU1MiLCJFVkVOVF9LRVlET1dOX0RJU01JU1MkMSIsIkVWRU5UX0NMSUNLX0RBVEFfQVBJJDIiLCJDTEFTU19OQU1FX09QRU4iLCJDTEFTU19OQU1FX1NIT1ckNCIsIkNMQVNTX05BTUVfU1RBVElDIiwiRGVmYXVsdCQ2IiwiRGVmYXVsdFR5cGUkNiIsIl9kaWFsb2ciLCJfYmFja2Ryb3AiLCJfaW5pdGlhbGl6ZUJhY2tEcm9wIiwiX2ZvY3VzdHJhcCIsIl9pbml0aWFsaXplRm9jdXNUcmFwIiwiX3Njcm9sbEJhciIsIl9hZGp1c3REaWFsb2ciLCJfc2hvd0VsZW1lbnQiLCJfaGlkZU1vZGFsIiwiaGFuZGxlVXBkYXRlIiwibW9kYWxCb2R5IiwiX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24iLCJldmVudDIiLCJfcmVzZXRBZGp1c3RtZW50cyIsImlzTW9kYWxPdmVyZmxvd2luZyIsImluaXRpYWxPdmVyZmxvd1kiLCJpc0JvZHlPdmVyZmxvd2luZyIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0Iiwic2hvd0V2ZW50IiwiYWxyZWFkeU9wZW4iLCJFVkVOVF9LRVkkMyIsIkRBVEFfQVBJX0tFWSQxIiwiRVZFTlRfTE9BRF9EQVRBX0FQSSQyIiwiQ0xBU1NfTkFNRV9TSE9XJDMiLCJDTEFTU19OQU1FX1NIT1dJTkckMSIsIkNMQVNTX05BTUVfSElESU5HIiwiT1BFTl9TRUxFQ1RPUiIsIkVWRU5UX1NIT1ckMyIsIkVWRU5UX1NIT1dOJDMiLCJFVkVOVF9ISURFJDMiLCJFVkVOVF9ISURFX1BSRVZFTlRFRCIsIkVWRU5UX0hJRERFTiQzIiwiRVZFTlRfUkVTSVpFIiwiRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMSIsIkVWRU5UX0tFWURPV05fRElTTUlTUyIsIkRlZmF1bHQkNSIsIkRlZmF1bHRUeXBlJDUiLCJPZmZjYW52YXMiLCJibHVyIiwiRGVmYXVsdEFsbG93bGlzdCIsImFyZWEiLCJiciIsImNvbCIsImNvZGUiLCJkZCIsImRpdiIsImRsIiwiZHQiLCJlbSIsImhyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwibGkiLCJvbCIsInByZSIsInNtYWxsIiwic3BhbiIsInN1YiIsInN1cCIsInN0cm9uZyIsInVsIiwidXJpQXR0cmlidXRlcyIsIlNBRkVfVVJMX1BBVFRFUk4iLCJhbGxvd2VkQXR0cmlidXRlIiwiYWxsb3dlZEF0dHJpYnV0ZUxpc3QiLCJhdHRyaWJ1dGVOYW1lIiwibm9kZVZhbHVlIiwiYXR0cmlidXRlUmVnZXgiLCJyZWdleCIsIkRlZmF1bHQkNCIsImFsbG93TGlzdCIsImV4dHJhQ2xhc3MiLCJzYW5pdGl6ZSIsInNhbml0aXplRm4iLCJ0ZW1wbGF0ZSIsIkRlZmF1bHRUeXBlJDQiLCJEZWZhdWx0Q29udGVudFR5cGUiLCJlbnRyeSIsIlRlbXBsYXRlRmFjdG9yeSIsImdldENvbnRlbnQiLCJfcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24iLCJoYXNDb250ZW50IiwiY2hhbmdlQ29udGVudCIsIl9jaGVja0NvbnRlbnQiLCJ0b0h0bWwiLCJ0ZW1wbGF0ZVdyYXBwZXIiLCJfbWF5YmVTYW5pdGl6ZSIsInRleHQiLCJfc2V0Q29udGVudCIsImFyZyIsInRlbXBsYXRlRWxlbWVudCIsIl9wdXRFbGVtZW50SW5UZW1wbGF0ZSIsInRleHRDb250ZW50IiwidW5zYWZlSHRtbCIsInNhbml0aXplRnVuY3Rpb24iLCJjcmVhdGVkRG9jdW1lbnQiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJpbmciLCJlbGVtZW50TmFtZSIsImF0dHJpYnV0ZUxpc3QiLCJhbGxvd2VkQXR0cmlidXRlcyIsInNhbml0aXplSHRtbCIsIkRJU0FMTE9XRURfQVRUUklCVVRFUyIsIkNMQVNTX05BTUVfRkFERSQyIiwiQ0xBU1NfTkFNRV9TSE9XJDIiLCJTRUxFQ1RPUl9UT09MVElQX0lOTkVSIiwiU0VMRUNUT1JfTU9EQUwiLCJFVkVOVF9NT0RBTF9ISURFIiwiVFJJR0dFUl9IT1ZFUiIsIlRSSUdHRVJfRk9DVVMiLCJUUklHR0VSX0NMSUNLIiwiQXR0YWNobWVudE1hcCIsIkFVVE8iLCJUT1AiLCJSSUdIVCIsIkJPVFRPTSIsIkxFRlQiLCJEZWZhdWx0JDMiLCJjdXN0b21DbGFzcyIsImRlbGF5IiwiRGVmYXVsdFR5cGUkMyIsIlRvb2x0aXAiLCJfaXNFbmFibGVkIiwiX3RpbWVvdXQiLCJfaXNIb3ZlcmVkIiwiX2FjdGl2ZVRyaWdnZXIiLCJfdGVtcGxhdGVGYWN0b3J5IiwiX25ld0NvbnRlbnQiLCJ0aXAiLCJfc2V0TGlzdGVuZXJzIiwiX2ZpeFRpdGxlIiwiZW5hYmxlIiwiZGlzYWJsZSIsInRvZ2dsZUVuYWJsZWQiLCJfbGVhdmUiLCJfZW50ZXIiLCJfaGlkZU1vZGFsSGFuZGxlciIsIl9kaXNwb3NlUG9wcGVyIiwiX2lzV2l0aENvbnRlbnQiLCJpc0luVGhlRG9tIiwiX2dldFRpcEVsZW1lbnQiLCJfaXNXaXRoQWN0aXZlVHJpZ2dlciIsIl9nZXRUaXRsZSIsIl9jcmVhdGVUaXBFbGVtZW50IiwiX2dldENvbnRlbnRGb3JUZW1wbGF0ZSIsIl9nZXRUZW1wbGF0ZUZhY3RvcnkiLCJ0aXBJZCIsInByZWZpeCIsInJhbmRvbSIsImdldFVJRCIsIl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQiLCJfZ2V0RGVsZWdhdGVDb25maWciLCJhdHRhY2htZW50IiwidHJpZ2dlcnMiLCJldmVudEluIiwiZXZlbnRPdXQiLCJfc2V0VGltZW91dCIsInRpbWVvdXQiLCJkYXRhQXR0cmlidXRlcyIsImRhdGFBdHRyaWJ1dGUiLCJTRUxFQ1RPUl9USVRMRSIsIlNFTEVDVE9SX0NPTlRFTlQiLCJEZWZhdWx0JDIiLCJEZWZhdWx0VHlwZSQyIiwiUG9wb3ZlciIsIl9nZXRDb250ZW50IiwiRVZFTlRfS0VZJDIiLCJFVkVOVF9BQ1RJVkFURSIsIkVWRU5UX0NMSUNLIiwiRVZFTlRfTE9BRF9EQVRBX0FQSSQxIiwiQ0xBU1NfTkFNRV9BQ1RJVkUkMSIsIlNFTEVDVE9SX1RBUkdFVF9MSU5LUyIsIlNFTEVDVE9SX05BVl9MSU5LUyIsIlNFTEVDVE9SX0xJTktfSVRFTVMiLCJEZWZhdWx0JDEiLCJyb290TWFyZ2luIiwic21vb3RoU2Nyb2xsIiwiRGVmYXVsdFR5cGUkMSIsIlNjcm9sbFNweSIsIl90YXJnZXRMaW5rcyIsIl9vYnNlcnZhYmxlU2VjdGlvbnMiLCJfcm9vdEVsZW1lbnQiLCJfYWN0aXZlVGFyZ2V0IiwiX29ic2VydmVyIiwiX3ByZXZpb3VzU2Nyb2xsRGF0YSIsInZpc2libGVFbnRyeVRvcCIsInBhcmVudFNjcm9sbFRvcCIsInJlZnJlc2giLCJfaW5pdGlhbGl6ZVRhcmdldHNBbmRPYnNlcnZhYmxlcyIsIl9tYXliZUVuYWJsZVNtb290aFNjcm9sbCIsImRpc2Nvbm5lY3QiLCJfZ2V0TmV3T2JzZXJ2ZXIiLCJzZWN0aW9uIiwib2JzZXJ2ZSIsIm9ic2VydmFibGVTZWN0aW9uIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJfb2JzZXJ2ZXJDYWxsYmFjayIsInRhcmdldEVsZW1lbnQiLCJfcHJvY2VzcyIsInVzZXJTY3JvbGxzRG93biIsImlzSW50ZXJzZWN0aW5nIiwiX2NsZWFyQWN0aXZlQ2xhc3MiLCJlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMiLCJ0YXJnZXRMaW5rcyIsImFuY2hvciIsImRlY29kZVVSSSIsIl9hY3RpdmF0ZVBhcmVudHMiLCJsaXN0R3JvdXAiLCJhY3RpdmVOb2RlcyIsInNweSIsIkVWRU5UX0tFWSQxIiwiRVZFTlRfSElERSQxIiwiRVZFTlRfSElEREVOJDEiLCJFVkVOVF9TSE9XJDEiLCJFVkVOVF9TSE9XTiQxIiwiRVZFTlRfQ0xJQ0tfREFUQV9BUEkiLCJFVkVOVF9LRVlET1dOIiwiRVZFTlRfTE9BRF9EQVRBX0FQSSIsIkFSUk9XX0xFRlRfS0VZIiwiQVJST1dfUklHSFRfS0VZIiwiQVJST1dfVVBfS0VZIiwiQVJST1dfRE9XTl9LRVkiLCJIT01FX0tFWSIsIkVORF9L
3RVkiLCJDTEFTU19OQU1FX0FDVElWRSIsIkNMQVNTX05BTUVfRkFERSQxIiwiQ0xBU1NfTkFNRV9TSE9XJDEiLCJTRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEUiLCJOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFIiwiU0VMRUNUT1JfREFUQV9UT0dHTEUiLCJTRUxFQ1RPUl9JTk5FUl9FTEVNIiwiU0VMRUNUT1JfREFUQV9UT0dHTEVfQUNUSVZFIiwiVGFiIiwiX3NldEluaXRpYWxBdHRyaWJ1dGVzIiwiX2dldENoaWxkcmVuIiwiaW5uZXJFbGVtIiwiX2VsZW1Jc0FjdGl2ZSIsIl9nZXRBY3RpdmVFbGVtIiwiaGlkZUV2ZW50IiwiX2RlYWN0aXZhdGUiLCJfYWN0aXZhdGUiLCJyZWxhdGVkRWxlbSIsIl90b2dnbGVEcm9wRG93biIsIm5leHRBY3RpdmVFbGVtZW50IiwicHJldmVudFNjcm9sbCIsIl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyIsIl9zZXRJbml0aWFsQXR0cmlidXRlc09uQ2hpbGQiLCJfZ2V0SW5uZXJFbGVtZW50IiwiaXNBY3RpdmUiLCJvdXRlckVsZW0iLCJfZ2V0T3V0ZXJFbGVtZW50IiwiX3NldEluaXRpYWxBdHRyaWJ1dGVzT25UYXJnZXRQYW5lbCIsIkVWRU5UX01PVVNFT1ZFUiIsIkVWRU5UX01PVVNFT1VUIiwiRVZFTlRfRk9DVVNJTiIsIkVWRU5UX0ZPQ1VTT1VUIiwiRVZFTlRfSElERSIsIkVWRU5UX0hJRERFTiIsIkVWRU5UX1NIT1ciLCJFVkVOVF9TSE9XTiIsIkNMQVNTX05BTUVfSElERSIsIkNMQVNTX05BTUVfU0hPVyIsIkNMQVNTX05BTUVfU0hPV0lORyIsImF1dG9oaWRlIiwiVG9hc3QiLCJfaGFzTW91c2VJbnRlcmFjdGlvbiIsIl9oYXNLZXlib2FyZEludGVyYWN0aW9uIiwiX2NsZWFyVGltZW91dCIsIl9tYXliZVNjaGVkdWxlSGlkZSIsImlzU2hvd24iLCJfb25JbnRlcmFjdGlvbiIsImlzSW50ZXJhY3RpbmciLCJlbmRWYWwiLCJzdGFydFZhbCIsImRlY2ltYWxQbGFjZXMiLCJkdXJhdGlvbiIsInVzZUVhc2luZyIsInVzZUdyb3VwaW5nIiwidXNlSW5kaWFuU2VwYXJhdG9ycyIsInNtYXJ0RWFzaW5nVGhyZXNob2xkIiwic21hcnRFYXNpbmdBbW91bnQiLCJzZXBhcmF0b3IiLCJkZWNpbWFsIiwic3VmZml4IiwiZW5hYmxlU2Nyb2xsU3B5Iiwic2Nyb2xsU3B5RGVsYXkiLCJzY3JvbGxTcHlPbmNlIiwiZmluYWxFbmRWYWwiLCJjb3VudERvd24iLCJwYXVzZWQiLCJjb3VudCIsInN0YXJ0VGltZSIsInJlbWFpbmluZyIsImZyYW1lVmFsIiwiZWFzaW5nRm4iLCJ0b0ZpeGVkIiwicHJpbnRWYWx1ZSIsInJBRiIsIm9uQ29tcGxldGVDYWxsYmFjayIsImZvcm1hdE51bWJlciIsIm51bWVyYWxzIiwiZWFzZU91dEV4cG8iLCJwb3ciLCJmb3JtYXR0aW5nRm4iLCJ2YWxpZGF0ZVZhbHVlIiwicmVzZXREdXJhdGlvbiIsIm9uU2Nyb2xsRm5zIiwiaGFuZGxlU2Nyb2xsIiwib25zY3JvbGwiLCJkZXRlcm1pbmVEaXJlY3Rpb25BbmRTbWFydEVhc2luZyIsIm9uU3RhcnRDYWxsYmFjayIsInBhdXNlUmVzdW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJyZW5kZXIiLCJlbnN1cmVOdW1iZXIiLCJwcm92aWRlciIsIlBsdWdpbiIsInByb3ZpZGVycyIsInR5cGVzIiwiaHRtbDUiLCJsaXN0ZW5lciIsIm9uVGltZVVwZGF0ZSIsIm9uTWVkaWFFbmRlZCIsIm9uUGxheWluZyIsIm9uV2FpdGluZyIsIm9uU2Vla2luZyIsIm9uU2Vla2VkIiwid2FpdFVudGlsVmlkZW9Jc1JlYWR5IiwiYWRkU3BlY2lmaWNFdmVudHMiLCJvblJlYWR5IiwiZ2V0Q3VycmVudFRpbWUiLCJjdXJyZW50VGltZSIsImdldER1cmF0aW9uIiwibWV0aG9kUGxheSIsIm1ldGhvZFBhdXNlIiwibWV0aG9kU2V0Vm9sdW1lIiwidm9sdW1lIiwibWV0aG9kR2V0Vm9sdW1lIiwibWV0aG9kTXV0ZSIsIm1ldGhvZFVuTXV0ZSIsIm1ldGhvZFNlZWtUbyIsImxvYWRpbmciLCJyZW1vdmVTcGVjaWZpY0V2ZW50cyIsInNlbGVjdG9yU3RyaW5nIiwiaXNNdXRlZCIsInRvdWNoRXZlbnRzIiwib25JbnB1dFByb2dyZXNzQmFyIiwib25Ub3VjaEV2ZW50UHJvZ3Jlc3NCYXIiLCJvbkNsaWNrT25Db250cm9sQmFyIiwidG9nZ2xlUGxheVBhdXNlIiwidG9nZ2xlVm9sdW1lIiwidG9nZ2xlRnVsbHNjcmVlbiIsImNhY2hlRWxlbWVudHMiLCJhZGRFdmVudHMiLCJ
3jb250cm9sQmFyIiwicGxheVBhdXNlIiwicHJvZ3Jlc3NCYXIiLCJpbnNlcnRBZGphY2VudEhUTUwiLCJnZXRUZW1wbGF0ZSIsImlzVG91Y2giLCJvdXRlckNvbnRhaW5lciIsInNlZWtUbyIsIlZsaXRlanMiLCJzdGFydEF1dG9IaWRlVGltZXIiLCJ1bk11dGUiLCJtdXRlIiwiaXNGdWxsU2NyZWVuIiwiaXNPcmllbnRhdGlvbkFwaUF2YWlsYWJsZSIsInNjcmVlbiIsIm9yaWVudGF0aW9uIiwidW5sb2NrIiwiZXhpdEZ1bGxzY3JlZW4iLCJyZXF1ZXN0RnVsbHNjcmVlbiIsImxvY2siLCJjYXRjaCIsIm1vek9yaWVudGF0aW9uIiwiaXNWaWRlbyIsInRpbWUiLCJyZW1vdmVFdmVudHMiLCJpc0Nhc3QiLCJpc0xpbmVhckFkIiwiYmlnUGxheSIsInBvc3RlciIsImlzUGF1c2VkIiwicGxheWVyRXZlbnRzIiwiY29udHJvbHMiLCJhdXRvcGxheSIsIkZ1bmN0aW9uIiwidHJpZ2dlck9uUmVhZHkiLCJDdXN0b21FdmVudCIsInVwZGF0ZVByb2dyZXNzQmFyIiwic2Vjb25kcyIsImlzUmVtb3RlIiwiYWZ0ZXJQbGF5UGF1c2UiLCJhdXRvSGlkZUdyYW50ZWQiLCJzdG9wQXV0b0hpZGVUaW1lciIsInNldFZvbHVtZSIsImdldFZvbHVtZSIsInJlcXVlc3RGbiIsInN1cHBvcnRGdWxsU2NyZWVuIiwiZXNjS2V5IiwiY2FuY2VsRm4iLCJhdWRpbyIsInZpZGVvIiwicGxheXNpbmxpbmUiLCJhdXRvSGlkZSIsImF1dG9IaWRlRGVsYXkiLCJwcm92aWRlclBhcmFtcyIsIkhUTUxWaWRlb0VsZW1lbnQiLCJIVE1MQXVkaW9FbGVtZW50IiwiSFRNTERpdkVsZW1lbnQiLCJjaGFuZ2VFdmVudCIsIm9uQ2xpY2tPblBsYXllciIsIm9uRG91YmxlQ2xpY2tPblBsYXllciIsIm9uTW91c2Vtb3ZlIiwib25DaGFuZ2VGdWxsU2NyZWVuIiwid3JhcEVsZW1lbnQiLCJyZW5kZXJMYXlvdXQiLCJwb3N0ZXJVcmwiLCJ0aW1lckF1dG9IaWRlIiwiVmxpdGVqc1lvdXR1YmVRdWV1ZSIsIllUIiwiYXN5bmMiLCJvbllvdVR1YmVJZnJhbWVBUElSZWFkeSIsImluaXRZb3V0dWJlUGxheWVyIiwiZnMiLCJtb2Rlc3RicmFuZGluZyIsIndtb2RlIiwicGFyYW1zIiwiUGxheWVyIiwidmlkZW9JZCIsInBsYXllclZhcnMiLCJvcmlnaW4iLCJsb2NhdGlvbiIsImdldElmcmFtZSIsIm9uU3RhdGVDaGFuZ2UiLCJvblBsYXllclN0YXRlQ2hhbmdlIiwicmFmUGxheWluZyIsIlBsYXllclN0YXRlIiwiRU5ERUQiLCJQTEFZSU5HIiwib25SYWZQbGF5aW5nIiwiQlVGRkVSSU5HIiwicmFmVGltZW91dCIsInBsYXlWaWRlbyIsInBhdXNlVmlkZW8iLCJWbGl0ZWpzVmltZW9RdWV1ZSIsImluaXRWaW1lb1BsYXllciIsIlZpbWVvIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJzZXRDdXJyZW50VGltZSIsInJlZ2lzdGVyUHJvdmlkZXIiLCJyZWdpc3RlclBsdWdpbiIsInNldEVsZW1lbnRIZWlnaHRBc0Nzc1ZhciIsImVsZSIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiTUVESUFfUFJFRkVSU19SRURVQ0VEX01PVElPTiIsImVtcHR5IiwiYXJyYXkiLCJhcnJheUxpa2UiLCJmdW5jIiwibmV4dFRpY2siLCJyYWYiLCJ0eXBlT2YiLCJzdWJqZWN0IiwiaXNPYmplY3QiLCJpc051bGwiLCJpc0Z1bmN0aW9uIiwiaXNTdHJpbmciLCJpc1VuZGVmaW5lZCIsInRvQXJyYXkiLCJpdGVyYXRlZSIsInRvZ2dsZUNsYXNzIiwiZWxtIiwiY2xhc3NlcyIsImFkZENsYXNzIiwiYmVmb3JlIiwibm9kZXMiLCJyZWYiLCJjaGlsZHJlbjIiLCJvd25LZXlzIiwiZm9yT3duIiwicmV2ZXJzZSIsInNvdXJjZSIsIm1lcmdlIiwib21pdCIsImVsbXMiLCJhdHRycyIsImF0dHIiLCJ2YWx1ZTIiLCJ0YWciLCJkaXNwbGF5MiIsImhhc0NsYXNzIiwicGFyc2VIdG1sIiwicHJldmVudCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsInF1ZXJ5IiwicXVlcnlBbGwiLCJyZW1vdmVDbGFzcyIsInRpbWVPZiIsInRpbWVTdGFtcCIsInVuaXQiLCJQUk9KRUNUX0NPREUiLCJEQVRBX0FUVFJJQlVURSIsImFzc2VydCIsImNvbmRpdGlvbiIsIm1lc3NhZ2UiLCJjZWlsIiwiYXBwcm94aW1hdGVseUVxdWFsIiwiZXBzaWxvbiIsImJldHdlZW4iLCJudW1iZXIiLCJleGNsdXNpdmUiLCJtaW5pbXVtIiwibWF4aW11bSIsImNsYW1wIiwic2lnbiIsImZvcm1hdCIsInN0cmluZyIsInJlcGxhY2VtZW50cyIsInJlcGxhY2VtZW50IiwicGFkIiwiaWRzIiwiRXZlbnRCaW5kZXIiLCJsaXN0ZW5lcnMiLCJmb3JFYWNoRXZlbnQiLCJ0YXJnZXRzIiwiZXZlbnRzMiIsImV2ZW50TlMiLCJmcmFnbWVudCIsImlzRXZlbnRUYXJnZXQiLCJyZW1vdmVyIiwidW5iaW5kIiwiY3JlYXRlRXZlbnQiLCJpbml0Q3VzdG9tRXZlbnQiLCJFVkVOVF9NT1VOVEVEIiwiRVZFTlRfUkVBRFkiLCJFVkVOVF9NT1ZFIiwiRVZFTlRfTU9WRUQiLCJFVkVOVF9SRUZSRVNIIiwiRVZFTlRfVVBEQVRFRCIsIkVWRU5UX1JFU0laRUQiLCJFVkVOVF9TQ1JPTEwiLCJFVkVOVF9TQ1JPTExFRCIsIkVWRU5UX0RFU1RST1kiLCJFVkVOVF9OQVZJR0FUSU9OX01PVU5URUQiLCJFVkVOVF9BVVRPUExBWV9QTEFZIiwiRVZFTlRfQVVUT1BMQVlfUEFVU0UiLCJFVkVOVF9MQVpZTE9BRF9MT0FERUQiLCJFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRCIsIkV2ZW50SW50ZXJmYWNlIiwiU3BsaWRlMiIsImJ1cyIsImJpbmRlciIsImVtaXQiLCJSZXF1ZXN0SW50ZXJ2YWwiLCJvbkludGVydmFsIiwib25VcGRhdGUiLCJsaW1pdCIsInJhdGUiLCJyZXN1bWUiLCJyZXdpbmQiLCJBUlJPVyIsIkFSUk9XX0xFRlQiLCJBUlJPV19SSUdIVCIsIkFSUk9XX1VQIiwiQVJST1dfRE9XTiIsIlRUQiIsIk9SSUVOVEFUSU9OX01BUCIsIkFycm93TGVmdCIsIkFycm93UmlnaHQiLCJST0xFIiwiVEFCX0lOREVYIiwiQVJJQV9QUkVGSVgiLCJBUklBX0NPTlRST0xTIiwiQVJJQV9DVVJSRU5UIiwiQVJJQV9TRUxFQ1RFRCIsIkFSSUFfTEFCRUwiLCJBUklBX0xBQkVMTEVEQlkiLCJBUklBX0hJRERFTiIsIkFSSUFfT1JJRU5UQVRJT04iLCJBUklBX1JPTEVERVNDUklQVElPTiIsIkFSSUFfTElWRSIsIkFSSUFfQlVTWSIsIkFSSUFfQVRPTUlDIiwiQUxMX0FUVFJJQlVURVMiLCJDTEFTU19QUkVGSVgiLCJTVEFUVVNfQ0xBU1NfUFJFRklYIiwiQ0xBU1NfUk9PVCIsIkNMQVNTX1RSQUNLIiwiQ0xBU1NfTElTVCIsIkNMQVNTX1NMSURFIiwiQ0xBU1NfQ0xPTkUiLCJDTEFTU19DT05UQUlORVIiLCJDTEFTU19BUlJPV1MiLCJDTEFTU19BUlJPVyIsIkNMQVNTX0FSUk9XX1BSRVYiLCJDTEFTU19BUlJPV19ORVhUIiwiQ0xBU1NfUEFHSU5BVElPTiIsIkNMQVNTX1BB
3R0lOQVRJT05fUEFHRSIsIkNMQVNTX1BST0dSRVNTX0JBUiIsIkNMQVNTX1BST0dSRVNTIiwiQ0xBU1NfVE9HR0xFIiwiQ0xBU1NfU1IiLCJDTEFTU19JTklUSUFMSVpFRCIsIkNMQVNTX0FDVElWRSIsIkNMQVNTX1BSRVYiLCJDTEFTU19ORVhUIiwiQ0xBU1NfVklTSUJMRSIsIkNMQVNTX0xPQURJTkciLCJDTEFTU19GT0NVU19JTiIsIkNMQVNTX09WRVJGTE9XIiwiU1RBVFVTX0NMQVNTRVMiLCJDTEFTU0VTIiwiY2xvbmUiLCJhcnJvd3MiLCJwYWdpbmF0aW9uIiwicGFnZSIsInNwaW5uZXIiLCJQT0lOVEVSX0RPV05fRVZFTlRTIiwiUE9JTlRFUl9NT1ZFX0VWRU5UUyIsIlBPSU5URVJfVVBfRVZFTlRTIiwiU0xJREUiLCJMT09QIiwiRkFERSIsIklOVEVSVkFMX0RBVEFfQVRUUklCVVRFIiwiU0NST0xMX0xJU1RFTkVSX09QVElPTlMiLCJjYXB0dXJlIiwiTk9STUFMSVpBVElPTl9NQVAiLCJTcGFjZWJhciIsIlJpZ2h0IiwiTGVmdCIsIlVwIiwiRG93biIsIm5vcm1hbGl6ZUtleSIsIktFWUJPQVJEX0VWRU5UIiwiU1JDX0RBVEFfQVRUUklCVVRFIiwiU1JDU0VUX0RBVEFfQVRUUklCVVRFIiwiSU1BR0VfU0VMRUNUT1IiLCJUUklHR0VSX0tFWVMiLCJDb21wb25lbnRDb25zdHJ1Y3RvcnMiLCJmcmVlemUiLCJfX3Byb3RvX18iLCJNZWRpYSIsIkNvbXBvbmVudHMyIiwiYnJlYWtwb2ludHMiLCJyZWR1Y2VkTW90aW9uIiwicXVlcmllcyIsImNvbXBsZXRlbHkiLCJyZWdpc3RlciIsIm9wdGlvbnMyIiwicXVlcnlMaXN0IiwiZGVzdHJveWVkIiwiaXMiLCJtZXJnZWQyIiwibW91bnQiLCJvcHRzIiwiYmFzZSIsIm5vdGlmeSIsImdldFByb3RvdHlwZU9mIiwic2V0dXAiLCJpc01pbiIsIm1lZGlhUXVlcnkiLCJEaXJlY3Rpb24iLCJheGlzT25seSIsIm9yaWVudCIsIkVsZW1lbnRzIiwidHJhY2siLCJpc1VzaW5nS2V5IiwiX0V2ZW50SW50ZXJmYWNlIiwiaTE4biIsInNsaWRlcyIsInJvb3RDbGFzc2VzIiwidHJhY2tDbGFzc2VzIiwicm9sZSIsImJhciIsImdldENsYXNzZXMiLCJsYWJlbCIsImxhYmVsbGVkYnkiLCJpc05hdmlnYXRpb24iLCJTbGlkZXMiLCJfRXZlbnRJbnRlcmZhY2UyIiwiX0NvbXBvbmVudHMyJEVsZW1lbnRzIiwiU2xpZGVzMiIsImZvckVhY2gkMSIsIlNsaWRlMiIsIkNvbXBvbmVudHMiLCJ1cGRhdGVPbk1vdmUiLCJzbGlkZUZvY3VzIiwiaXNDbG9uZSIsImluaXROYXZpZ2F0aW9uIiwic3BsaWRlcyIsInNwbGlkZSIsImdldEF0Iiwic2xpZGVYIiwib25Nb3ZlIiwiY3VyciIsInNlbGYiLCJ2aXNpYmxlIiwidHJhY2tSZWN0Iiwic2xpZGVSZWN0IiwiZm9jdXNhYmxlTm9kZXMiLCJ1cGRhdGVWaXNpYmlsaXR5IiwiY2xvbmVTdGF0dXMiLCJzbGlkZUxhYmVsIiwidXNlQ29udGFpbmVyIiwiaXNXaXRoaW4iLCJkaWZmIiwiU2xpZGUkMSIsIlNsaWRlMSIsImV4Y2x1ZGVDbG9uZXMiLCJtYXRjaGVyIiwiZ2V0SW4iLCJDb250cm9sbGVyIiwidG9JbmRleCIsImhhc0ZvY3VzIiwicGVyUGFnZSIsImltYWdlcyIsImdldExlbmd0aCIsImlzRW5vdWdoIiwiTGF5b3V0IiwidmVydGljYWwiLCJyb290UmVjdCIsIl9FdmVudEludGVyZmFjZTMiLCJfQ29tcG9uZW50czIkRWxlbWVudHMyIiwic3R5bGVTbGlkZXMiLCJjc3NQYWRkaW5nIiwiZm9yY2UiLCJuZXdSZWN0IiwiY3NzSGVpZ2h0IiwiZ2FwIiwiYXV0b1dpZHRoIiwiZml4ZWRXaWR0aCIsImNzc1NsaWRlU2l6ZSIsImZpeGVkSGVpZ2h0IiwiYXV0b0hlaWdodCIsImlzT3ZlcmZsb3ciLCJoZWlnaHRSYXRpbyIsImxpc3RTaXplIiwic2xpZGVTaXplIiwid2l0aG91dEdhcCIsIlNsaWRlIiwiZ2V0R2FwIiwidG90YWxTaXplIiwic2xpZGVyU2l6ZSIsImdldFBhZGRpbmciLCJDbG9uZXMiLCJjbG9uZUNvdW50IiwiY2xvbmVzIiwicmVtb3VudCIsImNvbXB1dGVDbG9uZUNvdW50IiwiaXNIZWFkIiwiY2xvbmVEZWVwIiwiZ2VuZXJhdGUiLCJjbG9uZXMyIiwiZml4ZWRTaXplIiwiTW92ZSIsIlRyYW5zaXRpb24iLCJfRXZlbnRJbnRlcmZhY2U0IiwiX0NvbXBvbmVudHMyJExheW91dCIsIl9Db21wb25lbnRzMiREaXJlY3RpbyIsIl9Db21wb25lbnRzMiRFbGVtZW50czMiLCJyZXBvc2l0aW9uIiwiaXNCdXN5IiwiU2Nyb2xsIiwianVtcCIsInRyYW5zbGF0ZSIsInRvUG9zaXRpb24iLCJwcmV2ZW50TG9vcCIsImRlc3RpbmF0aW9uIiwiZXhjZWVkZWRNYXgiLCJnZXRFbmQiLCJzaGlmdCIsImJhY2t3YXJkcyIsImV4Y2VzcyIsImdldExpbWl0IiwiZ2V0UG9zaXRpb24iLCJtaW5EaXN0YW5jZSIsIkluZmluaXR5IiwidHJpbW1pbmciLCJ0cmltU3BhY2UiLCJkZXN0Iiwic2hpZnRlZCIsImV4Y2VlZGVkTGltaXQiLCJleGNlZWRlZE1pbiIsImVuZEluZGV4Iiwic2xpZGVDb3VudCIsInBlck1vdmUiLCJfRXZlbnRJbnRlcmZhY2U1IiwiX0NvbXBvbmVudHMyJFNsaWRlcyIsIm9taXRFbmQiLCJpc0xvb3AiLCJpc1NsaWRlIiwiZ2V0TmV4dCIsImdldEFkamFjZW50IiwiZ2V0UHJldiIsImN1cnJJbmRleCIsInByZXZJbmRleCIsIm9uUmVzaXplZCIsImNvbXB1dGVEZXN0SW5kZXgiLCJzbmFwUGFnZSIsImNvbXB1dGVNb3ZhYmxlRGVzdEluZGV4IiwidG9QYWdlIiwic2V0SW5kZXgiLCJnbyIsImFsbG93U2FtZUluZGV4IiwiaW5kaWNhdG9yIiwic25hcCIsImdldEluZGV4IiwidG9EZXN0IiwiQXJyb3dzIiwiY3JlYXRlZCIsIndyYXBwZXJDbGFzc2VzIiwicGxhY2Vob2xkZXIiLCJ3cmFwcGVyIiwiY3JlYXRlQXJyb3ciLCJwcmV2MiIsImFycm93UGF0aCIsIm5leHRJbmRleCIsInByZXZMYWJlbCIsIm5leHRMYWJlbCIsImZpcnN0IiwiQXV0b3BsYXkiLCJob3ZlcmVkIiwiZm9jdXNlZCIsIl9FdmVudEludGVyZmFjZTYiLCJfQ29tcG9uZW50czIkRWxlbWVudHM0Iiwic3RvcHBlZCIsInJlc2V0UHJvZ3Jlc3MiLCJzdG9wIiwiYXV0b1RvZ2dsZSIsInBhdXNlT25Ib3ZlciIsInBhdXNlT25Gb2N1cyIsIkNvdmVyIiwiY292ZXIiLCJjb3ZlcjIiLCJfRXZlbnRJbnRlcmZhY2U4IiwiZnJpY3Rpb24iLCJvblNjcm9sbGVkIiwibm9Db25zdHJhaW4iLCJjbGVhciIsIm5vRGlzdGFuY2UiLCJvbkVuZCIsImVhc2luZ0Z1bmMiLCJlYXNpbmciLCJEcmFnIiwiYmFzZVBvc2l0aW9uIiwiYmFzZUV2ZW50IiwicHJldkJhc2VFdmVudCIsImlzRnJlZSIsImNsaWNrUHJldmVudGVkIiwiX0V2ZW50SW50ZXJmYWNlOSIsIl9Db21wb25lbnRzMiREaXJlY3RpbzIiLCJleGNlZWRlZCIsIm9uUG9pbnRlckRvd24iLCJpc1RvdWNoRXZlbnQiLCJ0YXJnZXQyIiwibm9EcmFnIiwib25Qb2ludGVyTW92ZSIsIm9uUG9pbnRlclVwIiwic2F2ZSIsImRpZmZDb29yZCIsImV4cGlyZWQiLCJkaWZmVGltZSIsImhhc0V4Y2VlZGVkIiwiaXNTbGlkZXJEaXJlY3Rpb24iLCJ0aHJlc2hvbGRzIiwiZHJhZ01pblRocmVzaG9sZCIsImlzT2JqIiwibW91c2UiLCJzaG91bGRTdGFydCIsInZlbG9jaXR5IiwiY29tcHV0ZVZlbG9jaXR5IiwiZmxpY2tQb3dlciIsImZsaWNrTWF4UGFnZXMiLCJjb21wdXRlRGVzdGluYXRpb24iLCJyZXdpbmRCeURyYWciLCJvbkNsaWNrIiwib3J0aG9nb25hbCIsImNvb3JkT2YiLCJnZXRCYXNlRXZlbnQiLCJUb3VjaEV2ZW50IiwiS2V5Ym9hcmQiLCJfRXZlbnRJbnRlcmZhY2UxMCIsIm9uS2V5ZG93biIsIl9kaXNhYmxlZCIsIkxhenlMb2FkIiwiX0V2ZW50SW50ZXJmYWNlMTEiLCJpc1NlcXVlbnRpYWwiLCJsYXp5TG9hZCIsImxvYWROZXh0IiwicHJlbG9hZFBhZ2VzIiwibG9hZCIsIm9uTG9hZCIsIlBhZ2luYX
3Rpb24iLCJwYWdpbmF0aW9uQ2xhc3NlcyIsImdldERpcmVjdGlvbiIsIm5leHRQYWdlIiwicGFnaW5hdGlvbkRpcmVjdGlvbiIsIl9idXR0b24iLCJzZWxlY3QiLCJjbGFzcyIsInBhZ2luYXRpb25LZXlib2FyZCIsImNyZWF0ZVBhZ2luYXRpb24iLCJTeW5jIiwiaXNQYXJlbnQiLCJzeW5jIiwiV2hlZWwiLCJsYXN0VGltZSIsIm9uV2hlZWwiLCJ3aGVlbE1pblRocmVzaG9sZCIsInNsZWVwIiwid2hlZWxTbGVlcCIsInJlbGVhc2VXaGVlbCIsInNob3VsZFByZXZlbnQiLCJ3aGVlbCIsIkxpdmUiLCJsaXZlIiwic3IiLCJERUZBVUxUUyIsInNwZWVkIiwicmV3aW5kU3BlZWQiLCJGYWRlIiwiZG9uZSIsImdldFNwZWVkIiwidXNlU2Nyb2xsIiwiU3BsaWRlIiwiX1NwbGlkZSIsInN0YXRlcyIsIl9vIiwiX0UiLCJwcm90b1Byb3BzIiwiX3Byb3RvIiwiRXh0ZW5zaW9ucyIsIl90aGlzIiwiX0MiLCJfVCIsIkNvbXBvbmVudCIsIl90aGlzJGV2ZW50Iiwic2xpY2UkMSIsImFwcGx5JDEiLCJ0eXBlT2YkMSIsIlNUQVRFUyIsIkNSRUFURUQiLCJNT1VOVEVEIiwiSURMRSIsIk1PVklORyIsIlNDUk9MTElORyIsIkRSQUdHSU5HIiwiREVTVFJPWUVEIiwiaXNBcnJheSQxIiwidG9BcnJheSQxIiwib3duS2V5cyQxIiwiUFJPSkVDVF9DT0RFJDEiLCJmb3JPd24kMSIsImFzc2lnbiQxIiwiQ0xBU1NfU0xJREVfUk9XIiwiQ0xBU1NfU0xJREVfQ09MIiwicm93cyIsImNvbHMiLCJkaW1lbnNpb25zIiwiR3JpZCIsImdyaWRPcHRpb25zIiwiRGltZW5zaW9uJDEiLCJub3JtYWxpemUiLCJhZ2dyZWdhdG9yIiwiRGltZW5zaW9uIiwiTGF5b3V0JDEiLCJkZXN0cm95RXZlbnQiLCJjb2xTbGlkZSIsInVuY292ZXIiLCJnZXRSb3dzSW4iLCJnZXRDb2xzSW4iLCJ0b2dnbGVUYWJJbmRleCIsIm9uVmlzaWJsZSIsIm9uSGlkZGVuIiwicm93Iiwicm93R2FwIiwicm93RWxtIiwicm93RWxtcyIsImxheW91dFJvdyIsImNvbEdhcCIsImNvbEVsbSIsImNvbEVsbXMiLCJsYXlvdXRDb2wiLCJjZWxsIiwib3JpZ2luYWxTbGlkZXMiLCJncmlkIiwic2hvdWxkQnVpbGQiLCJvdXRlclNsaWRlcyIsIm91dGVyU2xpZGUiLCJyb3dTbGlkZSIsImJ1aWxkUm93IiwiYnVpbGRDb2wiLCJsYXlvdXQiLCJtYWluTmF2IiwiY29udGFpbmVyTmF2IiwiUmVzaXplT2JzZXJ2ZXIiLCJoZWlnaHRFbGVzIiwiaW1nRWxlIiwiZW5kc1dpdGgiLCJyZXNwb25zZSIsImZldGNoIiwib2siLCJzdmdUZXh0IiwiZm9ybSIsImlucHV0IiwiZW5hYmxlR3JpZCIsImJ0blByZXYiLCJidG5OZXh0IiwiYnRuIiwiY2FwdGlvbiIsInRodW1icyIsImxpZ2h0Ym94IiwiZW5hYmxlTGlnaHRib3giLCJsaWdodGJveE9wdGlvbnMiLCJ0aHVtYlNsaWRlIiwiaW1nVXJsIiwiaW5zZXJ0U2xpZGUiLCJvcGVuQXQiLCJwb3MiLCJ3aXJlVGh1bWJzIiwidGh1bWJzQ2Fyb3VzZWwiLCJuZXh0SWQiLCJjdXJyQ2FwdGlvbiIsIm1haW5DYXJvdXNlbCIsInNwbGlkZUVsZW1lbnQiLCJzcGxpZGVPcHRpb25zIiwiYXJyb3dzQWJvdmUiLCJmbGV4RGlyZWN0aW9uIiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwic2VsZWN0ZWRJbmRleCIsInRpbWVyIiwic2xpZGVIdG1sIiwiY2xvc2FibGUiLCJjc3NFZmZlY3RzIiwiYW5pbWF0ZWQiLCJhbmltYXRlIiwiY291bnRVcCIsIm9icyIsInVub2JzZXJ2ZSIsInlvdXR1YmVJZCIsInZpbWVvSWQiLCJpbnN0Iiwic3RhdGVFbGVTZWxlY3RvciIsInN0YXRlRWxlIiwibGlzdEFyZWEiLCJzY3JvbGxJbnRvVmlldyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.