1"use strict";(self.webpackChunkkuoni=self.webpackChunkkuoni||[]).push([[1885],{1885:(e,t,l)=>{l.r(t),l.d(t,{default:()=>Oe});var n=l(1425),a=l(2798),r=function(e,t,l){if(l||2===arguments.length)for(var n,a=0,r=t.length;a<r;a++)!n&&a in t||(n||(n=Array.prototype.slice.call(t,0,a)),n[a]=t[a]);return e.concat(n||Array.prototype.slice.call(t))},o={class:"filter-menu"},i=(0,n.createElementVNode)("label",null,"FILTER",-1),c={class:"filter-title"},u=(0,n.createElementVNode)("label",null,"Filter",-1),s=(0,n.createTextVNode)(" Regions "),d=(0,n.createElementVNode)("img",{src:"/images/icons/chevron-down-black.svg",alt:"chevron down"},null,-1),v=["onClick"],m=["name","value"],p=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),f=(0,n.createTextVNode)(" Type"),k=(0,n.createElementVNode)("img",{src:"/images/icons/chevron-down-black.svg",alt:"chevron down"},null,-1),g=["onClick"],h=["name","value"],E=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),N=(0,n.createTextVNode)(" Rating "),V=(0,n.createElementVNode)("img",{src:"/images/icons/chevron-down-black.svg",alt:"chevron down"},null,-1),y=["onClick"],B=["name","value"],b=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),C=(0,n.createTextVNode)(" Facilities "),x=(0,n.createElementVNode)("img",{src:"/images/icons/chevron-down-black.svg",alt:"chevron down"},null,-1),w=["onClick"],S=["name","value"],D=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),T=(0,n.createTextVNode)(" Price"),F=(0,n.createElementVNode)("img",{src:"/images/icons/chevron-down-black.svg",alt:"chevron down"},null,-1),M=(0,n.createElementVNode)("label",null,[(0,n.createTextVNode)("SORT BY"),(0,n.createElementVNode)("img",{src:"/images/icons/chevron-down-black.svg"})],-1),L={class:"filter-title"},A=(0,n.createElementVNode)("label",null,"Sort by",-1),O=["innerHTML"],z=(0,n.createTextVNode)(),I=(0,n.createElementVNode)("img",{src:"/images/icons/chevron-down-black.svg",alt:"chevron down"},null,-1),H=(0,n.createTextVNode)("Kuoni recommended"),P=["checked"],R=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),_=(0,n.createTextVNode)("Name "),j=(0,n.createElementVNode)("span",null,"(A-Z)",-1),U=["checked"],K=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),W=(0,n.createTextVNode)("Rating "),Z=(0,n.createElementVNode)("span",null,"(High to Low)",-1),Y=["checked"],q=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),G=(0,n.createTextVNode)("Rating "),J=(0,n.createElementVNode)("span",null,"(Low to High)",-1),Q=["checked"],X=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),$=(0,n.createTextVNode)("Price "),ee=(0,n.createElementVNode)("span",null,"(High to Low)",-1),te=["checked"],le=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),ne=(0,n.createTextVNode)("Price "),ae=(0,n.createElementVNode)("span",null,"(Low to High)",-1),re=["checked"],oe=(0,n.createElementVNode)("div",{class:"checkbox"},null,-1),ie={key:0,class:"filter-menu-tags"},ce=["onClick"],ue=["onClick"],se=["onClick"],de=["onClick"],ve={key:0},me={class:"results-grid our-picks","data-nosnippet":""},pe=["href","target","data-popup-content","data-destinationFilter","data-departingFilter","data-holidayTypeFilter","data-boardBasisFilter","data-facilitiesFilter","data-recommended","data-price"],fe={class:"our-pick-card__image"},ke={key:0,class:"tag"},ge=["src","alt","title"],he={class:"our-pick-card__content"},Ee={key:0,class:"whats-included"},Ne={key:0},Ve={key:1},ye={key:0},Be={key:1},be={class:"book-btn"},Ce={key:1,class:"small-text"},xe={key:2,class:"occasion-info"},we=["src","alt"],Se={key:3,class:"offer"},De={key:0},Te={key:1},Fe={key:1},Me={key:2,class:"offer-price-disclaimer"},Le=(0,n.createElementVNode)("img",{src:"/images/icons/info.svg"},null,-1),Ae={class:"based-on"};const Oe=(0,n.defineComponent)({props:{cards:Object,mobileFilters:Boolean,sortActive:Boolean,initialFilterState:{type:Object,default:function(){return{}}}},emits:["update:mobile-filters","update:sort-active","filters-changed"],setup:function(e,t){var Oe=t.expose,ze=t.emit,Ie=e,He=(0,n.defineAsyncComponent)((function(){return l.e(7663).then(l.bind(l,7663))})),Pe=(0,n.ref)(!1),Re=(0,n.ref)(!1),_e=(0,n.ref)(!1),je=(0,n.ref)(!1),Ue=(0,n.ref)(!1),Ke=(0,n.ref)(!1),We=(0,n.ref)(!1),Ze
1=(0,n.ref)(!1),Ye=(0,n.ref)(!1),qe=(0,n.ref)(!1),Ge=(0,n.ref)(!1),Je=(0,n.ref)(!1),Qe=(0,n.ref)("Kuoni recommended"),Xe=(0,n.ref)([]),$e=(0,n.ref)([]),et=(0,n.ref)([]),tt=(0,n.ref)([]),lt=(0,n.ref)(0),nt=(0,n.ref)(99999999999),at=(0,n.ref)("kr"),rt="d",ot="h",it="r",ct="f",ut="p";if(Ie.initialFilterState){var st=Ie.initialFilterState,dt=function(e){return Array.isArray(e)?e:null==e||""===e?[]:[e]};if(void 0!==st[rt]&&(Xe.value=r([],dt(st[rt]),!0)),void 0!==st[ot]&&($e.value=r([],dt(st[ot]),!0)),void 0!==st[it]&&(et.value=r([],dt(st[it]),!0)),void 0!==st[ct]&&(tt.value=r([],dt(st[ct]),!0)),Array.isArray(st[ut])&&2===st[ut].length){var vt=st[ut],mt=vt[0],pt=vt[1];lt.value=Number(mt)||0,nt.value=Number(pt)||99999999999}Pe.value=!0}else Pe.value=!0;(0,n.watch)((function(){return Ie.cards}),(function(){Pe.value=!1})),(0,n.watch)([Xe,$e,et,tt,lt,nt],(function(){var e;if(Pe.value){var t=lt.value==lt.value?0:lt.value,l=nt.value==nt.value?0:nt.value;ze("filters-changed",((e={})[rt]=Xe.value,e[ot]=$e.value,e[it]=et.value,e[ct]=tt.value,e[ut]=[t,l],e))}}),{deep:!0});var ft=(0,n.computed)((function(){return At(Ie.cards.map((function(e){return e.destination})).sort())})),kt=(0,n.computed)((function(){return At(Ie.cards.flatMap((function(e){return e.holidayTypes})).sort())})),gt=(0,n.computed)((function(){return At(Ie.cards.map((function(e){return e.rating})).sort())})),ht=(0,n.computed)((function(){return At(Ie.cards.flatMap((function(e){return e.facilities})).sort())})),Et=(0,n.computed)((function(){return Ie.cards.map((function(e){return Math.round(e.price)}))})),Nt=(0,n.computed)((function(){return Et.value.sort((function(e,t){return e-t}))[0]})),Vt=(0,n.computed)((function(){return Et.value.sort((function(e,t){return t-e}))[0]})),yt=(0,n.computed)((function(){var e=r([],Ie.cards.map((function(e){return e})),!0);return Xe.value.length&&(e=e.filter((function(e){return Xe.value.indexOf(e.destination)>-1}))),$e.value.length&&(e=e.filter((function(e){return $e.value.every((function(t){return-1!=e.holidayTypes.indexOf(t)}))}))),et.value.length&&(e=e.filter((function(e){return et.value.indexOf(e.rating)>-1}))),tt.value.length&&(e=e.filter((function(e){return tt.value.every((function(t){return-1!=e.facilities.indexOf(t)}))}))),e.filter((function(e){return e.price>=lt.value&&e.price<=nt.value}))})),Bt=(0,n.computed)((function(){return r(r(r(r([],Xe.value,!0),$e.value,!0),et.value,!0),tt.value,!0).length>0})),bt=(0,n.computed)((function(){var e=r([],yt.value,!0);return"kr"===at.value?e.sort((function(e,t){return e.priority<0?t.priority<0?0:1:t.priority<0?-1:e.priority>t.priority?1:t.priority>e.priority?-1:0})):"n-az"===at.value?e.sort((function(e,t){return e.title>t.title?1:t.title>e.title?-1:0})):"r-hl"===at.value?e.sort((function(e,t){return e.rating<0?t.rating<0?0:1:t.rating<0||e.rating>t.rating?-1:t.rating>e.rating?1:0})):"r-lh"===at.value?e.sort((function(e,t){return e.rating<0?t.rating<0?0:1:t.rating<0?-1:e.rating>t.rating?1:t.rating>e.rating?-1:0})):"p-hl"===at.value?e.sort((function(e,t){return e.price<0?t.price<0?0:1:t.price<0||e.price>t.price?-1:t.price>e.price?1:0})):"p-lh"===at.value&&e.sort((function(e,t){return e.price<0?t.price<0?0:1:t.price<0?-1:e.price>t.price?1:t.price>e.price?-1:0})),e.forEach((function(e,t){return e.order=t})),e}));function Ct(e){Ft(Xe.value,e)}function xt(e){Ft($e.value,e)}function wt(e){Ft(et.value,e)}function St(e){Ft(tt.value,e)}function Dt(){Xe.value=[],$e.value=[],et.value=[],tt.value=[],lt.value=Nt.value,nt.value=Vt.value}function Tt(){lt.value=Nt.value,nt.value=Vt.value}function Ft(e,t){var l=e.indexOf(t);return l>-1&&e.splice(l,1),e}function Mt(e){e&&"string"==typeof e&&null!==e&&""!==e.trim()?at.value=e:at.value="","kr"===at.value?Qe.value="Kuoni recommended":"n-az"===at.value?Qe.value="Name <span>(A-Z)</span>":"r-hl"===at.value?Qe.value="Rating <span>(High to Low)</span>":"r-lh"===at.value?Qe.value="Rating <span>(Low to High)</span>":"p-hl"===at.value?Qe.value="Price <span>(High to Low)</span>":"p-lh"===at.value?Qe.value="Price <span>(Low to High)</span>":Qe.value="",ze("update:sort-active",!1)}function Lt(e){return at.value===e}function At(e){return e.reduce((function(e,t){return t?(e.some((function(e){return e.name==t}))?e.find((function(e){return e.name==t})).count++:e.push({name:t,count:1}),e):e}),[])}return Oe({closeAllFilters:function(){Re.value=!1,Ye.value=!1,qe.value=!1,Ge.value=!1,Je.value=!1,ze("update:sort-active",!1)},getCurrentFilterState:function(){var e;return(e={})[rt]=Xe.value,e[ot]=$e.value,e[it]=et.value,e[ct]=tt.value,e[ut]=[lt.value,nt.value],e}}),function(t,l){var r,Oe;return(0,n.openBlock)(),(0,n.createElementBlock)("div",null,[(0,n.createElementVNode)("div",o,[(0,n.createElementVNode)("div",{class:"filter-menu__type",id:"search-filter-tags",onClick:l[14]||(l[14]=(0,n.withModifiers)((function(t){return ze("update:mobile-filters",!e.mobileFilters)}),["stop"]))},[i,(0,n.createElementVNode)("ul",{class:(0,n.normalizeClass)(["tags",{active:e.mobileFilters}])},[(0,n.createElementVNode)("li",c,[(0,n.createElementVNode)("img",{onClick:l[0]||(l[0]=(0,n.withModifiers)((function(t){return ze("update:mobile-filters",!e.mobileFilters)}
1),["stop"])),class:"filter-close",src:"/images/icons/cancel.svg"}),u]),(0,n.createElementVNode)("li",{class:(0,n.normalizeClass)({active:Re.value}),onClick:l[2]||(l[2]=(0,n.withModifiers)((function(e){return Ye.value=!1,qe.value=!1,Ge.value=!1,Je.value=!1,ze("update:sort-active",!1),je.value=!1,_e.value=!1,Ue.value=!1,Ke.value=!1,We.value=!1,Ze.value=!1,void(Re.value=!Re.value)}),["stop"]))},[s,d,(0,n.createElementVNode)("ul",null,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)((0,n.unref)(ft),(function(e){return(0,n.openBlock)(),(0,n.createElementBlock)("li",{onClick:(0,n.withModifiers)((function(t){return l=e.name,void(-1!=Xe.value.indexOf(l)?Ct(l):Xe.value.push(l));var l}),["stop"])},[(0,n.createTextVNode)((0,n.toDisplayString)(e.name),1),(0,n.createElementVNode)("span",null,"("+(0,n.toDisplayString)(e.count)+")",1),(0,n.withDirectives)((0,n.createElementVNode)("input",{name:e.name,value:e.name,type:"checkbox","onUpdate:modelValue":l[1]||(l[1]=function(e){return Xe.value=e})},null,8,m),[[n.vModelCheckbox,Xe.value]]),p],8,v)})),256))])],2),(0,n.createElementVNode)("li",{class:(0,n.normalizeClass)({active:Ye.value}),onClick:l[4]||(l[4]=(0,n.withModifiers)((function(e){return Ye.value=!Ye.value,qe.value=!1,Ge.value=!1,Je.value=!1,ze("update:sort-active",!1),je.value=!1,_e.value=!1,Ue.value=!1,Ke.value=!1,We.value=!1,Ze.value=!1,void(Re.value=!1)}),["stop"]))},[f,k,(0,n.createElementVNode)("ul",null,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)((0,n.unref)(kt),(function(e){return(0,n.openBlock)(),(0,n.createElementBlock)("li",{onClick:(0,n.withModifiers)((function(t){return l=e.name,void(-1!=$e.value.indexOf(l)?xt(l):$e.value.push(l));var l}),["stop"])},[(0,n.createTextVNode)((0,n.toDisplayString)(e.name),1),(0,n.createElementVNode)("span",null,"("+(0,n.toDisplayString)(e.count)+")",1),(0,n.withDirectives)((0,n.createElementVNode)("input",{name:e.name,value:e.name,type:"checkbox","onUpdate:modelValue":l[3]||(l[3]=function(e){return $e.value=e})},null,8,h),[[n.vModelCheckbox,$e.value]]),E],8,g)})),256))])],2),(0,n.createElementVNode)("li",{class:(0,n.normalizeClass)({active:qe.value}),onClick:l[6]||(l[6]=(0,n.withModifiers)((function(e){return Ye.value=!1,qe.value=!qe.value,Ge.value=!1,Je.value=!1,ze("update:sort-active",!1),je.value=!1,_e.value=!1,Ue.value=!1,Ke.value=!1,We.value=!1,Ze.value=!1,void(Re.value=!1)}),["stop"]))},[N,V,(0,n.createElementVNode)("ul",null,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)((0,n.unref)(gt),(function(e){return(0,n.openBlock)(),(0,n.createElementBlock)("li",{onClick:(0,n.withModifiers)((function(t){return l=e.name,void(-1!=et.value.indexOf(l)?wt(l):et.value.push(l));var l}),["stop"])},[(0,n.createTextVNode)((0,n.toDisplayString)(e.name),1),(0,n.createElementVNode)("span",null,"("+(0,n.toDisplayString)(e.count)+")",1),(0,n.withDirectives)((0,n.createElementVNode)("input",{name:e.name,value:e.name,type:"checkbox","onUpdate:modelValue":l[5]||(l[5]=function(e){return et.value=e})},null,8,B),[[n.vModelCheckbox,et.value]]),b],8,y)})),256))])],2),(null===(r=(0,n.unref)(ht))||void 0===r?void 0:r.length)?((0,n.openBlock)(),(0,n.createElementBlock)("li",{key:0,class:(0,n.normalizeClass)({active:Ge.value}),onClick:l[8]||(l[8]=(0,n.withModifiers)((function(e){return Ge.value=!Ge.value,Ye.value=!1,qe.value=!1,Je.value=!1,ze("update:sort-active",!1),je.value=!1,_e.value=!1,Ue.value=!1,Ke.value=!1,We.value=!1,Ze.value=!1,void(Re.value=!1)}),["stop"]))},[C,x,(0,n.createElementVNode)("ul",null,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)((0,n.unref)(ht),(function(e){return(0,n.openBlock)(),(0,n.createElementBlock)("li",{onClick:(0,n.withModifiers)((function(t){return l=e.name,void(-1!=tt.value.indexOf(l)?St(l):tt.value.push(l));var l}),["stop"])},[(0,n.createTextVNode)((0,n.toDisplayString)(e.name),1),(0,n.createElementVNode)("span",null,"("+(0,n.toDisplayString)(e.count)+")",1),(0,n.withDirectives)((0,n.createElementVNode)("input",{name:e.name,value:e.name,type:"checkbox","onUpdate:modelValue":l[7]||
1(l[7]=function(e){return tt.value=e})},null,8,S),[[n.vModelCheckbox,tt.value]]),D],8,w)})),256))])],2)):(0,n.createCommentVNode)("v-if",!0),(null===(Oe=(0,n.unref)(Et))||void 0===Oe?void 0:Oe.some((function(e){return e>1})))?((0,n.openBlock)(),(0,n.createElementBlock)("li",{key:1,class:(0,n.normalizeClass)({active:Je.value}),onClick:l[13]||(l[13]=(0,n.withModifiers)((function(e){return Je.value=!Je.value,ze("update:sort-active",!1),Re.value=!1,Ye.value=!1,qe.value=!1,Ge.value=!1,je.value=!1,_e.value=!1,Ue.value=!1,Ke.value=!1,We.value=!1,void(Ze.value=!1)}),["stop"]))},[T,F,(0,n.createElementVNode)("ul",{id:"price-dropdown",onClick:l[12]||(l[12]=(0,n.withModifiers)((function(){}),["stop"]))},[(0,n.createElementVNode)("li",null,[(0,n.createVNode)((0,n.unref)(He),{prices:(0,n.unref)(Et),min:lt.value,"onUpdate:min":l[9]||(l[9]=function(e){return lt.value=e}),max:nt.value,"onUpdate:max":l[10]||(l[10]=function(e){return nt.value=e}),active:Je.value,"onUpdate:active":l[11]||(l[11]=function(e){return Je.value=e})},null,8,["prices","min","max","active"])])])],2)):(0,n.createCommentVNode)("v-if",!0)],2)]),(0,n.createElementVNode)("div",{class:"filter-menu__type",id:"search-sort-by",onClick:l[23]||(l[23]=(0,n.withModifiers)((function(t){return ze("update:sort-active",!e.sortActive)}),["stop"]))},[M,(0,n.createElementVNode)("ul",{class:(0,n.normalizeClass)(["sort-by",{active:e.sortActive}])},[(0,n.createElementVNode)("li",L,[(0,n.createElementVNode)("img",{onClick:l[15]||(l[15]=(0,n.withModifiers)((function(t){return ze("update:sort-active",!e.sortActive)}),["stop"])),class:"filter-close",src:"/images/icons/cancel.svg"}),A]),(0,n.createElementVNode)("li",{class:(0,n.normalizeClass)({active:e.sortActive}),onClick:l[22]||(l[22]=(0,n.withModifiers)((function(t){return ze("update:sort-active",!e.sortActive)}),["stop"]))},[(0,n.createElementVNode)("ins",{innerHTML:Qe.value},null,8,O),z,I,(0,n.createElementVNode)("ul",null,[(0,n.createElementVNode)("li",null,[H,(0,n.createElementVNode)("input",{type:"checkbox",onClick:l[16]||(l[16]=(0,n.withModifiers)((function(e){return Mt("kr")}),["stop"])),checked:Lt("kr")},null,8,P),R]),(0,n.createElementVNode)("li",null,[_,j,(0,n.createElementVNode)("input",{type:"checkbox",onClick:l[17]||(l[17]=(0,n.withModifiers)((function(e){return Mt("n-az")}),["stop"])),checked:Lt("n-az")},null,8,U),K]),(0,n.createElementVNode)("li",null,[W,Z,(0,n.createElementVNode)("input",{type:"checkbox",onClick:l[18]||(l[18]=(0,n.withModifiers)((function(e){return Mt("r-hl")}),["stop"])),checked:Lt("r-hl")},null,8,Y),q]),(0,n.createElementVNode)("li",null,[G,J,(0,n.createElementVNode)("input",{type:"checkbox",onClick:l[19]||(l[19]=(0,n.withModifiers)((function(e){return Mt("r-lh")}),["stop"])),checked:Lt("r-lh")},null,8,Q),X]),(0,n.createElementVNode)("li",null,[$,ee,(0,n.createElementVNode)("input",{type:"checkbox",onClick:l[20]||(l[20]=(0,n.withModifiers)((function(e){return Mt("p-hl")}),["stop"])),checked:Lt("p-hl")},null,8,te),le]),(0,n.createElementVNode)("li",null,[ne,ae,(0,n.createElementVNode)("input",{type:"checkbox",onClick:l[21]||(l[21]=(0,n.withModifiers)((function(e){return Mt("p-lh")}),["stop"])),checked:Lt("p-lh")},null,8,re),oe])])],2)],2)])]),(0,n.unref)(Bt)||lt.value>(0,n.unref)(Nt)+1||nt.value<(0,n.unref)(Vt)-1?((0,n.openBlock)(),(0,n.createElementBlock)("ul",ie,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(Xe.value,(function(e){return(0,n.openBlock)(),(0,n.createElementBlock)("li",null,[(0,n.createTextVNode)((0,n.toDisplayString)(e),1),(0,n.createElementVNode)("img",{onClick:function(t){return Ct(e)},class:"filter-close",src:"/images/icons/cancel.svg"},null,8,ce)])})),256)),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)($e.value,(function(e){return(0,n.openBlock)(),(0,n.createElementBlock)("li",null,[(0,n.createTextVNode)((0,n.toDisplayString)(e),1),(0,n.createElementVNode)("img",{onClick:function(t){return xt(e)},class:"filter-close",src:"/images/icons/cancel.svg"},null,8,ue)])})),256)),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(et.value,(function(e){return(0,n.openBlock)(),(0,n.createElementBlock)("li",null,[(0,n.createTextVNode)((0,n.toDisplayString)(e),1),(0,n.createElementVNode)("img",{onClick:function(t){return wt(e)}
1,class:"filter-close",src:"/images/icons/cancel.svg"},null,8,se)])})),256)),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(tt.value,(function(e){return(0,n.openBlock)(),(0,n.createElementBlock)("li",null,[(0,n.createTextVNode)((0,n.toDisplayString)(e),1),(0,n.createElementVNode)("img",{onClick:function(t){return St(e)},class:"filter-close",src:"/images/icons/cancel.svg"},null,8,de)])})),256)),lt.value>(0,n.unref)(Nt)||nt.value<(0,n.unref)(Vt)?((0,n.openBlock)(),(0,n.createElementBlock)("li",ve,[(0,n.createTextVNode)(" Price: "+(0,n.toDisplayString)((0,n.unref)(a.ej)(lt.value,!0,!0))+" - "+(0,n.toDisplayString)((0,n.unref)(a.ej)(nt.value,!0,!0))+" ",1),(0,n.createElementVNode)("img",{onClick:Tt,class:"filter-close",src:"/images/icons/cancel.svg"})])):(0,n.createCommentVNode)("v-if",!0),(0,n.createElementVNode)("li",{onClick:Dt,class:"clear"},"Clear all")])):(0,n.createCommentVNode)("v-if",!0),(0,n.createElementVNode)("div",me,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)((0,n.unref)(bt),(function(e){var t,l,r,o;return(0,n.openBlock)(),(0,n.createElementBlock)("a",{href:e.cardLink,class:"swiper-slide our-pick-card",style:(0,n.normalizeStyle)({order:e.order}),target:e.cardLinkTargetBlank?"_blank":void 0,"data-popup-content":e.cardLinkContentPopupId,"data-destinationFilter":e.destination,"data-departingFilter":e.departing,"data-holidayTypeFilter":e.holidayType,"data-boardBasisFilter":e.boardBasis,"data-facilitiesFilter":e.facilities,"data-recommended":e.priority,"data-price":e.price||99999999999},[(0,n.createElementVNode)("div",fe,[e.tagIcon&&e.tagIcon.imageAlt?((0,n.openBlock)(),(0,n.createElementBlock)("div",ke,[(0,n.createElementVNode)("label",null,(0,n.toDisplayString)(null===(t=e.tagIcon)||void 0===t?void 0:t.imageAlt),1)])):(0,n.createCommentVNode)("v-if",!0),(0,n.createElementVNode)("img",{src:null===(l=e.image)||void 0===l?void 0:l.imageSrc,alt:null===(r=e.image)||void 0===r?void 0:r.imageAlt,title:null===(o=e.image)||void 0===o?void 0:o.imageAlt},null,8,ge)]),(0,n.createElementVNode)("div",he,[(0,n.createElementVNode)("ul",null,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(e.cardTags,(function(e){return(0,n.openBlock)(),(0,n.createElementBlock)("li",null,(0,n.toDisplayString)(e),1)})),256))]),(0,n.createElementVNode)("label",null,(0,n.toDisplayString)(e.title),1),(0,n.createElementVNode)("p",null,(0,n.toDisplayString)(e.description),1),e.showWhatsIncluded?((0,n.openBlock)(),(0,n.createElementBlock)("div",Ee,[(0,n.createElementVNode)("p",null,[e.departing?((0,n.openBlock)(),(0,n.createElementBlock)("strong",Ne,"Here's what's included")):((0,n.openBlock)(),(0,n.createElementBlock)("strong",Ve,"Price based on:"))]),(0,n.createElementVNode)("ul",null,[(0,n.createElementVNode)("li",null,[(0,n.createTextVNode)((0,n.toDisplayString)(e.nights)+" nights from ",1),(0,n.createElementVNode)("strong",null,(0,n.toDisplayString)((0,n.unref)(a.ej)(e.price,!0,!0))+" p/p",1)]),(0,n.createElementVNode)("li",null,(0,n.toDisplayString)(e.basedOn),1),(0,n.createElementVNode)("li",null,(0,n.toDisplayString)(e.boardBasis),1),e.departing?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:0},[(0,n.createElementVNode)("li",null,"Return flights from "+(0,n.toDisplayString)(e.departing),1),e.transfersIncluded?((0,n.openBlock)(),(0,n.createElementBlock)("li",ye,"Transfers included")):(0,n.createCommentVNode)("v-if",!0)],64)):((0,n.openBlock)(),(0,n.createElementBlock)("li",Be,"Flights"+(0,n.toDisplayString)(e.transfersIncluded?" & transfers":"")+" included",1)),(0,n.createElementVNode)("li",null," Travel on "+(0,n.toDisplayString)(e.formattedDepartureDate),1)]),(0,n.createElementVNode)("div",be,(0,n.toDisplayString)(e.buttonText),1)])):(0,n.createCommentVNode)("v-if",!0),e.additionalLine1&&!e.showWhatsIncluded?((0,n.openBlock)(),(0,n.createElementBlock)("p",Ce,(0,n.toDisplayString)(e.additionalLine1),1)):(0,n.createCommentVNode)("v-if",!0),e.offer||!e.price||e.showWhatsIncluded?e.offer?((0,n.openBlock)(),(0,n.createElementBlock)("div",Se,[(0,n.createElementVNode)("label",null,(0,n.toDisplayString)(e.offer),1),e.savingText?((0,n.openBlock)(),(0,n.createElementBlock)("p",De,(0,n.toDisplayString)(e.savingText),1)):(0,n.createCommentVNode)("v-if",!0),e.wasPrice&&e.price?((0,n.openBlock)(),(0,n.createElementBlock)("small",Te,(0,n.toDisplayString)((0,n.unref)(a.ej)(e.price,!0,!0))+" "+(0,n.toDisplayString)(e.priceBasis),1)):((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:2},[e.price?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:0},[(0,n.createElementVNode)("small",null,"From "+(0,n.toDisplayString)((0,n.unref)(a.ej)(e.price,!0,!0))+" "+(0,n.toDisplayString)(e.priceBasis),1),(0,n.createElementVNode)("p",null,(0,n.toDisplayString)(e.priceMessage),1)],64)):((0,n.openBlock)(),(0,n.createElementBlock)("small",Fe,(0,n.toDisplayString)(e.priceMessage),1)),e.priceDisclaimer?((0,n.openBlock)(),(0,n.createElementBlock)("div",Me,[Le,(0,n.createElementVNode)("span",null,(0,n.toDisplayString)(e.priceDisclaimer),1)])):(0,n.createCommentVNode)("v-if",!0)],64)),(0,n.createElementVNode)("p",Ae,(0,n.toDisplayString)(e.basedOn),1)])):(0,n.createCommentVNode)("v-if",!0):((0,n.openBlock)(),(0,n.createElementBlock)("div",xe,[(0,n.createElementVNode)("span",null,"From "+(0,n.toDisplayString)((0,n.unref)(a.ej)(e.price,!0,!0))+" p/p",1),e.ctaImage?((0,n.openBlock)(),(0,n.createElementBlock)("img",{key:0,src:e.ctaImage.imageSrc,alt:e.ctaImage.ctaAlt},null,8,we)):(0,n.createCommentVNode)("v-if",!0)]))])],12,pe)})),256))])])}}})}}]); 2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTg4NS4xZjBhYjUzMS5qcyIsIm1hcHBpbmdzIjoidVZBR01BLEVBQWEsQ0FBRUMsTUFBTyxlQUN0QkMsR0FBMEIsd0JBQW9CLFFBQVMsS0FBTSxVQUFXLEdBQ3hFQyxFQUFhLENBQUVGLE1BQU8sZ0JBQ3RCRyxHQUEwQix3QkFBb0IsUUFBUyxLQUFNLFVBQVcsR0FDeEVDLEdBQTBCLHFCQUFpQixhQUMzQ0MsR0FBMEIsd0JBQW9CLE1BQU8sQ0FDekRDLElBQUssdUNBQ0xDLElBQUssZ0JBQ0osTUFBTyxHQUNKQyxFQUFhLENBQUMsV0FDZEMsRUFBYSxDQUFDLE9BQVEsU0FDdEJDLEdBQTBCLHdCQUFvQixNQUFPLENBQUVWLE1BQU8sWUFBYyxNQUFPLEdBQ25GVyxHQUEyQixxQkFBaUIsU0FDNUNDLEd
2BQTJCLHdCQUFvQixNQUFPLENBQzFETixJQUFLLHVDQUNMQyxJQUFLLGdCQUNKLE1BQU8sR0FDSk0sRUFBYyxDQUFDLFdBQ2ZDLEVBQWMsQ0FBQyxPQUFRLFNBQ3ZCQyxHQUEyQix3QkFBb0IsTUFBTyxDQUFFZixNQUFPLFlBQWMsTUFBTyxHQUNwRmdCLEdBQTJCLHFCQUFpQixZQUM1Q0MsR0FBMkIsd0JBQW9CLE1BQU8sQ0FDMURYLElBQUssdUNBQ0xDLElBQUssZ0JBQ0osTUFBTyxHQUNKVyxFQUFjLENBQUMsV0FDZkMsRUFBYyxDQUFDLE9BQVEsU0FDdkJDLEdBQTJCLHdCQUFvQixNQUFPLENBQUVwQixNQUFPLFlBQWMsTUFBTyxHQUNwRnFCLEdBQTJCLHFCQUFpQixnQkFDNUNDLEdBQTJCLHdCQUFvQixNQUFPLENBQzFEaEIsSUFBSyx1Q0FDTEMsSUFBSyxnQkFDSixNQUFPLEdBQ0pnQixFQUFjLENBQUMsV0FDZkMsRUFBYyxDQUFDLE9BQVEsU0FDdkJDLEdBQTJCLHdCQUFvQixNQUFPLENBQUV6QixNQUFPLFlBQWMsTUFBTyxHQUNwRjBCLEdBQTJCLHFCQUFpQixVQUM1Q0MsR0FBMkIsd0JBQW9CLE1BQU8sQ0FDMURyQixJQUFLLHVDQUNMQyxJQUFLLGdCQUNKLE1BQU8sR0FDSnFCLEdBQTJCLHdCQUFvQixRQUFTLEtBQU0sRUFDckQscUJBQWlCLFlBQ2pCLHdCQUFvQixNQUFPLENBQUV0QixJQUFLLDJDQUM3QyxHQUNFdUIsRUFBYyxDQUFFN0IsTUFBTyxnQkFDdkI4QixHQUEyQix3QkFBb0IsUUFBUyxLQUFNLFdBQVksR0FDMUVDLEVBQWMsQ0FBQyxhQUNmQyxHQUEyQix1QkFDM0JDLEdBQTJCLHdCQUFvQixNQUFPLENBQzFEM0IsSUFBSyx1Q0FDTEMsSUFBSyxnQkFDSixNQUFPLEdBQ0oyQixHQUEyQixxQkFBaUIscUJBQzVDQyxFQUFjLENBQUMsV0FDZkMsR0FBMkIsd0JBQW9CLE1BQU8sQ0FBRXBDLE1BQU8sWUFBYyxNQUFPLEdBQ3BGcUMsR0FBMkIscUJBQWlCLFNBQzVDQyxHQUEyQi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E9BQU8sR0FBTSxJQUFTLE9BQVEsR0FDdkhzRCxFQUFnQixXQUNaLGtCQUFjLHdCQUFvQixNQUFPLENBQ3hDdEosSUFBSyxFQUNMcEQsSUFBSzBNLEVBQVE4QixTQUFTakIsU0FDdEJ0TixJQUFLeU0sRUFBUThCLFNBQVNDLFFBQ3JCLEtBQU0sRUFBZWpLLE1BQ3hCLHdCQUFvQixRQUFRLFNBNEJ2QyxHQUF1QmIsR0FDNUIsSUFBSSxTQUdWLENBQ0EsRyIsInNvdXJjZXMiOlsid2VicGFjazovL2t1b25pLy4vQ29udGVudC9WdWUvQ29tcG9uZW50cy9jYXJkLWZpbHRlcnMudnVlP2EyNmQiLCJ3ZWJwYWNrOi8va3VvbmkvLi9Db250ZW50L1Z1ZS9Db21wb25lbnRzL2NhcmQtZmlsdGVycy52dWU/M2JiNCIsIndlYnBhY2s6Ly9rdW9uaS8uL0NvbnRlbnQvVnVlL0NvbXBvbmVudHMvY2FyZC1maWx0ZXJzLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgYXMgX2RlZmluZUNvbXBvbmVudCB9IGZyb20gJ3Z1ZSdcbmltcG9ydCB7
2IGNyZWF0ZUVsZW1lbnRWTm9kZSBhcyBfY3JlYXRlRWxlbWVudFZOb2RlLCB3aXRoTW9kaWZpZXJzIGFzIF93aXRoTW9kaWZpZXJzLCB1bnJlZiBhcyBfdW5yZWYsIHJlbmRlckxpc3QgYXMgX3JlbmRlckxpc3QsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwgb3BlbkJsb2NrIGFzIF9vcGVuQmxvY2ssIGNyZWF0ZUVsZW1lbnRCbG9jayBhcyBfY3JlYXRlRWxlbWVudEJsb2NrLCB0b0Rpc3BsYXlTdHJpbmcgYXMgX3RvRGlzcGxheVN0cmluZywgdk1vZGVsQ2hlY2tib3ggYXMgX3ZNb2RlbENoZWNrYm94LCB3aXRoRGlyZWN0aXZlcyBhcyBfd2l0aERpcmVjdGl2ZXMsIGNyZWF0ZVRleHRWTm9kZSBhcyBfY3JlYXRlVGV4dFZOb2RlLCBub3JtYWxpemVDbGFzcyBhcyBfbm9ybWFsaXplQ2xhc3MsIGNyZWF0ZUNvbW1lbnRWTm9kZSBhcyBfY3JlYXRlQ29tbWVudFZOb2RlLCBjcmVhdGVWTm9kZSBhcyBfY3JlYXRlVk5vZGUsIG5vcm1hbGl6ZVN0eWxlIGFzIF9ub3JtYWxpemVTdHlsZSB9IGZyb20gXCJ2dWVcIlxuXG5jb25zdCBfaG9pc3RlZF8xID0geyBjbGFzczogXCJmaWx0ZXItbWVudVwiIH1cbmNvbnN0IF9ob2lzdGVkXzIgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxhYmVsXCIsIG51bGwsIFwiRklMVEVSXCIsIC0xIC8qIEhPSVNURUQgKi8pXG5jb25zdCBfaG9pc3RlZF8zID0geyBjbGFzczogXCJmaWx0ZXItdGl0bGVcIiB9XG5jb25zdCBfaG9pc3RlZF80ID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJsYWJlbFwiLCBudWxsLCBcIkZpbHRlclwiLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfNSA9IC8qI19fUFVSRV9fKi9fY3JlYXRlVGV4dFZOb2RlKFwiIFJlZ2lvbnMgXCIpXG5jb25zdCBfaG9pc3RlZF82ID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbWdcIiwge1xuICBzcmM6IFwiL2ltYWdlcy9pY29ucy9jaGV2cm9uLWRvd24tYmxhY2suc3ZnXCIsXG4gIGFsdDogXCJjaGV2cm9uIGRvd25cIlxufSwgbnVsbCwgLTEgLyogSE9JU1RFRCAqLylcbmNvbnN0IF9ob2lzdGVkXzcgPSBbXCJvbkNsaWNrXCJdXG5jb25zdCBfaG9pc3RlZF84ID0gW1wibmFtZVwiLCBcInZhbHVlXCJdXG5jb25zdCBfaG9pc3RlZF85ID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwgeyBjbGFzczogXCJjaGVja2JveFwiIH0sIG51bGwsIC0xIC8qIEhPSVNURUQgKi8pXG5jb25zdCBfaG9pc3RlZF8xMCA9IC8qI19fUFVSRV9fKi9fY3JlYXRlVGV4dFZOb2RlKFwiIFR5cGVcIilcbmNvbnN0IF9ob2lzdGVkXzExID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbWdcIiwge1xuICBzcmM6IFwiL2ltYWdlcy9pY29ucy9jaGV2cm9uLWRvd24tYmxhY2suc3ZnXCIsXG4gIGFsdDogXCJjaGV2cm9uIGRvd25cIlxufSwgbnVsbCwgLTEgLyogSE9JU1RFRCAqLylcbmNvbnN0IF9ob2lzdGVkXzEyID0gW1wib25DbGlja1wiXVxuY29uc3QgX2hvaXN0ZWRfMTMgPSBbXCJuYW1lXCIsIFwidmFsdWVcIl1cbmNvbnN0IF9ob2lzdGVkXzE0ID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwgeyBjbGFzczogXCJjaGVja2JveFwiIH0sIG51bGwsIC0xIC8qIEhPSVNURUQgKi8pXG5jb25zdCBfaG9pc3RlZF8xNSA9IC8qI19fUFVSRV9fKi9fY3JlYXRlVGV4dFZOb2RlKFwiIFJhdGluZyBcIilcbmNvbnN0IF9ob2lzdGVkXzE2ID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbWdcIiwge1xuICBzcmM6IFwiL2ltYWdlcy9pY29ucy9jaGV2cm9uLWRvd24tYmxhY2suc3ZnXCIsXG4gIGFsdDogXCJjaGV2cm9uIGRvd25cIlxufSwgbnVsbCwgLTEgLyogSE9JU1RFRCAqLylcbmNvbnN0IF9ob2lzdGVkXzE3ID0gW1wib25DbGlja1wiXVxuY29uc3QgX2hvaXN0ZWRfMTggPSBbXCJuYW1lXCIsIFwidmFsdWVcIl1cbmNvbnN0IF9ob2lzdGVkXzE5ID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwgeyBjbGFzczogXCJjaGVja2JveFwiIH0sIG51bGwsIC0xIC8qIEhPSVNURUQgKi8pXG5jb25zdCBfaG9pc3RlZF8yMCA9IC8qI19fUFVSRV9fKi9fY3JlYXRlVGV4dFZOb2RlKFwiIEZhY2lsaXRpZXMgXCIpXG5jb25zdCBfaG9pc3RlZF8yMSA9IC8qI19fUFVSRV9fKi9fY3JlYXRlRWxlbWVudFZOb2RlKFwiaW1nXCIsIHtcbiAgc3JjOiBcIi9pbWFnZXMvaWNvbnMvY2hldnJvbi1kb3duLWJsYWNrLnN2Z1wiLFxuICBhbHQ6IFwiY2hldnJvbiBkb3duXCJcbn0sIG51bGwsIC0xIC8qIEhPSVNURUQgKi8pXG5jb25zdCBfaG9pc3RlZF8yMiA9IFtcIm9uQ2xpY2tcIl1cbmNvbnN0IF9ob2lzdGVkXzIzID0gW1wibmFtZVwiLCBcInZhbHVlXCJdXG5jb25zdCBfaG9pc3RlZF8yNCA9IC8qI19fUFVSRV9fKi9fY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHsgY2xhc3M6IFwiY2hlY2tib3hcIiB9LCBudWxsLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfMjUgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZVRleHRWTm9kZShcIiBQcmljZVwiKVxuY29uc3QgX2hvaXN0ZWRfMjYgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZUVsZW1lbnRWTm9kZShcImltZ1wiLCB7XG4gIHNyYzogXCIvaW1hZ2VzL2ljb25zL2NoZXZyb24tZG93bi1ibGFjay5zdmdcIixcbiAgYWx0OiBcImNoZXZyb24gZG93blwiXG59LCBudWxsLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfMjcgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxhYmVsXCIsIG51bGwsIFtcbiAgLyojX19QVVJFX18qL19jcmVhdGVUZXh0Vk5vZGUoXCJTT1JUIEJZXCIpLFxuICAvKiNfX1BVUkVfXyovX2NyZWF0ZUVsZW1lbnRWTm9kZShcImltZ1wiLCB7IHNyYzogXCIvaW1hZ2VzL2ljb25zL2NoZXZyb24tZG93bi1ibGFjay5zdmdcIiB9KVxuXSwgLTEgLyogSE9JU1RFRCAqLylcbmNvbnN0IF9ob2lzdGVkXzI4ID0geyBjbGFzczogXCJmaWx0ZXItdGl0bGVcIiB9XG5jb25zdCBfaG9pc3RlZF8yOSA9IC8qI19fUFVSRV9fKi9fY3JlYXRlRWxlbWVudFZOb2RlKFwibGFiZWxcIiwgbnVsbCwgXCJTb3J0IGJ5XCIsIC0xIC8qIEhPSVNURUQgKi8pXG5jb25zdCBfaG9pc3RlZF8zMCA9IFtcImlubmVySFRNTFwiXVxuY29uc3QgX2hvaXN0ZWRfMzEgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZVRleHRWTm9kZSgpXG5jb25zdCBfaG9pc3RlZF8zMiA9IC8qI19fUFVSRV9fKi9fY3JlYXRlRWxlbWVudFZOb2RlKFwiaW1nXCIsIHtcbiAgc3JjOiBcIi9pbWFnZXMvaWNvbnMvY2hldnJvbi1kb3duLWJsYWNrLnN2Z1wiLFxuICBhbHQ6IFwiY2hldnJvbiBkb3duXCJcbn0sIG51bGwsIC0xIC8qIEhPSVNURUQgKi8pXG5jb25zdCBfaG9pc3RlZF8zMyA9IC8qI19fUFVSRV9fKi9fY3JlYXRlVGV4dFZOb2RlKFwiS3VvbmkgcmVjb21tZW5kZWRcIilcbmNvbnN0IF9ob2lzdGVkXzM0ID0gW1wiY2hlY2tlZFwiXVxuY29uc3QgX2hvaXN0ZWRfMzUgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7IGNsYXNzOiBcImNoZWNrYm94XCIgfSwgbnVsbCwgLTEgLyogSE9JU1RFRCAqLylcbmNvbnN0IF9ob2lzdGVkXzM2ID0gLyojX19QVVJFX18qL19jcmVhdGVUZXh0Vk5vZGUoXCJOYW1lIFwiKVxuY29uc3QgX2hvaXN0ZWRfMzcgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwgbnVsbCwgXCIoQS1aKVwiLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfMzggPSBbXCJjaGVja2VkXCJdXG5jb25zdCBfaG9pc3RlZF8zOSA9IC8qI19fUFVSRV9fKi9fY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHsgY2xhc3M6IFwiY2hlY2tib3hcIiB9LCBudWxsLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfNDAgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZVRleHRWTm9kZShcIlJhdGluZyBcIilcbmNvbnN0IF9ob2lzdGVkXzQxID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIG51bGwsIFwiKEhpZ2ggdG8gTG93KVwiLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfNDIgPSBbXCJjaGVja2VkXCJdXG5jb25zdCBfaG9pc3RlZF80MyA9IC8qI19fUFVSRV9fKi9fY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHsgY2xhc3M6IFwiY2hlY2tib3hcIiB9LCBudWxsLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfNDQgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZVRleHRWTm9kZShcIlJhdGluZyBcIilcbmNvbnN0IF9ob2lzdGVkXzQ1ID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIG51bGwsIFwiKExvdyB0byBIaWdoKVwiLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfNDYgPSBbXCJjaGVja2VkXCJdXG5jb25zdCBfaG9pc3RlZF80NyA9IC8qI19fUFVSRV9fKi9fY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHsgY2xhc3M6IFwiY2hlY2tib3hcIiB9LCBudWxsLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfNDggPSAvKiNfX1BVUkVfXyovX2NyZWF0ZVRleHRWTm9kZShcIlByaWNlIFwiKVxuY29uc3QgX2hvaXN0ZWRfNDkgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwgbnVsbCwgXCIoSGlnaCB0byBMb3cpXCIsIC0xIC8qIEhPSVNURUQgKi8pXG5jb25zdCBfaG9pc3RlZF81MCA9IFtcImNoZWNrZWRcIl1cbmNvbnN0IF9ob2lzdGVkXzUxID0gLyojX19QVVJFX18qL19jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwgeyBjbGFzczogXCJjaGVja2JveFwiIH0sIG51bGwsIC0xIC8qIEhPSVNURUQgKi8pXG5jb25zdCBfaG9pc3RlZF81MiA9IC8qI19fUFVSRV9fKi9fY3JlYXRlVGV4dFZOb2RlKFwiUHJpY2UgXCIpXG5jb25zdCBfaG9pc3RlZF81MyA9IC8qI19fUFVSRV9fKi9fY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCBudWxsLCBcIihMb3cgdG8gSGlnaClcIiwgLTEgLyogSE9JU1RFRCAqLylcbmNvbnN0IF9ob2lzdGVkXzU0ID0gW1wiY2hlY2tlZFwiXVxuY29uc3QgX2hvaXN0ZWRfNTUgPSAvKiNfX1BVUkVfXyovX2NyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7IGNsYXNzOiBcImNoZWNrYm94XCIgfSwgbnVsbCwgLTEgLyogSE9JU1RFRCAqLylcbmNvbnN0IF9ob2lzdGVkXzU2ID0ge1xuICBrZXk6IDAsXG4gIGNsYXNzOiBcImZpbHRlci1tZW51LXRhZ3NcIlxufVxuY29uc3QgX2hvaXN0ZWRfNTcgPSBbXCJvbkNsaWNrXCJdXG5jb25zdCBfaG9pc3RlZF81OCA9IFtcIm9uQ2xpY2tcIl1cbmNvbnN0IF9ob2lzdGVkXzU5ID0gW1wib25DbGlja1wiXVxuY29uc3QgX2hvaXN0ZWRfNjAgPSBbXCJvbkNsaWNrXCJdXG5jb25zdCBfaG9pc3RlZF82MSA9IHsga2V5OiAwIH1cbmNvbnN0IF9ob2lzdGVkXzYyID0ge1xuICBjbGFzczogXCJyZXN1bHRzLWdyaWQgb3VyLXBpY2tzXCIsXG4gIFwiZGF0YS1ub3NuaXBwZXRcIjogXCJcIlxufVxuY29uc3QgX2hvaXN0ZWRfNjMgPSBbXCJocmVmXCIsIFwidGFyZ2V0XCIsIFwiZGF0YS1wb3B1cC1jb250ZW50XCIsIFwiZGF0YS1kZXN0aW5
2hdGlvbkZpbHRlclwiLCBcImRhdGEtZGVwYXJ0aW5nRmlsdGVyXCIsIFwiZGF0YS1ob2xpZGF5VHlwZUZpbHRlclwiLCBcImRhdGEtYm9hcmRCYXNpc0ZpbHRlclwiLCBcImRhdGEtZmFjaWxpdGllc0ZpbHRlclwiLCBcImRhdGEtcmVjb21tZW5kZWRcIiwgXCJkYXRhLXByaWNlXCJdXG5jb25zdCBfaG9pc3RlZF82NCA9IHsgY2xhc3M6IFwib3VyLXBpY2stY2FyZF9faW1hZ2VcIiB9XG5jb25zdCBfaG9pc3RlZF82NSA9IHtcbiAga2V5OiAwLFxuICBjbGFzczogXCJ0YWdcIlxufVxuY29uc3QgX2hvaXN0ZWRfNjYgPSBbXCJzcmNcIiwgXCJhbHRcIiwgXCJ0aXRsZVwiXVxuY29uc3QgX2hvaXN0ZWRfNjcgPSB7IGNsYXNzOiBcIm91ci1waWNrLWNhcmRfX2NvbnRlbnRcIiB9XG5jb25zdCBfaG9pc3RlZF82OCA9IHtcbiAga2V5OiAwLFxuICBjbGFzczogXCJ3aGF0cy1pbmNsdWRlZFwiXG59XG5jb25zdCBfaG9pc3RlZF82OSA9IHsga2V5OiAwIH1cbmNvbnN0IF9ob2lzdGVkXzcwID0geyBrZXk6IDEgfVxuY29uc3QgX2hvaXN0ZWRfNzEgPSB7IGtleTogMCB9XG5jb25zdCBfaG9pc3RlZF83MiA9IHsga2V5OiAxIH1cbmNvbnN0IF9ob2lzdGVkXzczID0geyBjbGFzczogXCJib29rLWJ0blwiIH1cbmNvbnN0IF9ob2lzdGVkXzc0ID0ge1xuICBrZXk6IDEsXG4gIGNsYXNzOiBcInNtYWxsLXRleHRcIlxufVxuY29uc3QgX2hvaXN0ZWRfNzUgPSB7XG4gIGtleTogMixcbiAgY2xhc3M6IFwib2NjYXNpb24taW5mb1wiXG59XG5jb25zdCBfaG9pc3RlZF83NiA9IFtcInNyY1wiLCBcImFsdFwiXVxuY29uc3QgX2hvaXN0ZWRfNzcgPSB7XG4gIGtleTogMyxcbiAgY2xhc3M6IFwib2ZmZXJcIlxufVxuY29uc3QgX2hvaXN0ZWRfNzggPSB7IGtleTogMCB9XG5jb25zdCBfaG9pc3RlZF83OSA9IHsga2V5OiAxIH1cbmNvbnN0IF9ob2lzdGVkXzgwID0geyBrZXk6IDEgfVxuY29uc3QgX2hvaXN0ZWRfODEgPSB7XG4gIGtleTogMixcbiAgY2xhc3M6IFwib2ZmZXItcHJpY2UtZGlzY2xhaW1lclwiXG59XG5jb25zdCBfaG9pc3RlZF84MiA9IC8qI19fUFVSRV9fKi9fY3JlYXRlRWxlbWVudFZOb2RlKFwiaW1nXCIsIHsgc3JjOiBcIi9pbWFnZXMvaWNvbnMvaW5mby5zdmdcIiB9LCBudWxsLCAtMSAvKiBIT0lTVEVEICovKVxuY29uc3QgX2hvaXN0ZWRfODMgPSB7IGNsYXNzOiBcImJhc2VkLW9uXCIgfVxuXG5pbXBvcnQgeyBjb21wdXRlZCwgcmVmLCBkZWZpbmVBc3luY0NvbXBvbmVudCwgd2F0Y2ggfSBmcm9tICd2dWUnO1xyXG4gICAgaW1wb3J0IHsgZm9ybWF0QW1vdW50IH0gZnJvbSAnLi4vLi4vU2NyaXB0cy91dGlscyc7XHJcblxyXG4gICAgXG5leHBvcnQgZGVmYXVsdCAvKiNfX1BVUkVfXyovX2RlZmluZUNvbXBvbmVudCh7XG4gIHByb3BzOiB7IFxyXG4gICAgICAgIGNhcmRzOiBPYmplY3QsXHJcbiAgICAgICAgbW9iaWxlRmlsdGVyczogQm9vbGVhbixcclxuICAgICAgICBzb3J0QWN0aXZlOiBCb29sZWFuLFxyXG4gICAgICAgIGluaXRpYWxGaWx0ZXJTdGF0ZToge1xyXG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcclxuICAgICAgICB9XHJcbiAgICB9LFxuICBlbWl0czogWyd1cGRhdGU6bW9iaWxlLWZpbHRlcnMnLCd1cGRhdGU6c29ydC1hY3RpdmUnLCdmaWx0ZXJzLWNoYW5nZWQnXSxcbiAgc2V0dXAoX19wcm9wcywgeyBleHBvc2UsIGVtaXQgfSkge1xuXG5jb25zdCBwcm9wcyA9IF9fcHJvcHNcblxyXG4gICAgY29uc3QgcHJpY2VSYW5nZVNsaWRlciA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IGltcG9ydChcIi4vUHJpY2VSYW5nZVNsaWRlci52dWVcIikpO1xyXG5cclxuICAgIFxyXG5cclxuICAgIFxyXG5cclxuICAgIGNvbnN0IGluaXRpYWxpc2VkID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGRlc3RpbmF0aW9uRmlsdGVyQWN0aXZlID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGNsYXNzaWZpY2F0aW9uRmlsdGVyQWN0aXZlID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgaW50ZXJlc3RGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgZmVhdHVyZUZpbHRlckFjdGl2ZSA9IHJlZihmYWxzZSk7XHJcbiAgICBjb25zdCBhdXRob3JGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgcmF0aW5nRmlsdGVyQWN0aXZlID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGZhY2lsaXRpZXNGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgcHJpY2VGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3Qgc29ydE5hbWUgPSByZWYoJ0t1b25pIHJlY29tbWVuZGVkJyk7XHJcbiAgICBjb25zdCBkZXN0aW5hdGlvbkZpbHRlclZhbHVlcyA9IHJlZihbXSk7XHJcbiAgICBjb25zdCBob2xpZGF5VHlwZUZpbHRlclZhbHVlcyA9IHJlZihbXSk7XHJcbiAgICBjb25zdCByYXRpbmdGaWx0ZXJWYWx1ZXMgPSByZWYoW10pO1xyXG4gICAgY29uc3QgZmFjaWxpdGllc0ZpbHRlclZhbHVlcyA9IHJlZihbXSk7XHJcbiAgICBjb25zdCBwcmljZU1pbkZpbHRlclZhbHVlID0gcmVmKDApO1xyXG4gICAgY29uc3QgcHJpY2VNYXhGaWx0ZXJWYWx1ZSA9IHJlZig5OTk5OTk5OTk5OSk7XHJcbiAgICBjb25zdCBzb3J0T3JkZXIgPSByZWYoJ2tyJyk7XHJcblxyXG4gICAgLy8gS2V5IG1hcHBpbmcgZm9yIGNvbXBhY3QgPC0+IGZ1bGwgcHJvcGVydHkgbmFtZXNcclxuICAgIGNvbnN0IGtleU1hcCA9IHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogJ2QnLFxyXG4gICAgICAgIGhvbGlkYXlUeXBlOiAnaCcsXHJcbiAgICAgICAgcmF0aW5nOiAncicsXHJcbiAgICAgICAgZmFjaWxpdGllczogJ2YnLFxyXG4gICAgICAgIHByaWNlOiAncCcsXHJcbiAgICAgICAgdGFiOiAndCdcclxuICAgIH07XHJcblxyXG4gICAgLy8gQWx3YXlzIGV4cGVjdCBjb21wYWN0IGtleXMgaW4gaW5pdGlhbEZpbHRlclN0YXRlXHJcbiAgICBpZiAocHJvcHMuaW5pdGlhbEZpbHRlclN0YXRlKSB7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBwcm9wcy5pbml0aWFsRmlsdGVyU3RhdGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcblxyXG4gICAgICAgIC8vIE5vcm1hbGlzZSBwb3NzaWJseSBzY2FsYXIgdmFsdWVzIChlLmcuLCBhIHNpbmdsZSBzdHJpbmcpIHRvIGFycmF5cyB0byBhdm9pZCBzcHJlYWQgZXJyb3JzXHJcbiAgICAgICAgY29uc3QgdG9BcnJheSA9ICh2OiB1bmtub3duKSA9PiBBcnJheS5pc0FycmF
25KHYpID8gdiBhcyBhbnlbXSA6ICh2ID09IG51bGwgfHwgdiA9PT0gJycgPyBbXSA6IFt2XSk7XHJcblxyXG4gICAgICAgIGlmIChzdGF0ZVtrZXlNYXAuZGVzdGluYXRpb25dICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlID0gWy4uLnRvQXJyYXkoc3RhdGVba2V5TWFwLmRlc3RpbmF0aW9uXSldO1xyXG5cclxuICAgICAgICBpZiAoc3RhdGVba2V5TWFwLmhvbGlkYXlUeXBlXSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICBob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZSA9IFsuLi50b0FycmF5KHN0YXRlW2tleU1hcC5ob2xpZGF5VHlwZV0pXTtcclxuXHJcbiAgICAgICAgaWYgKHN0YXRlW2tleU1hcC5yYXRpbmddICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHJhdGluZ0ZpbHRlclZhbHVlcy52YWx1ZSA9IFsuLi50b0FycmF5KHN0YXRlW2tleU1hcC5yYXRpbmddKV07XHJcblxyXG4gICAgICAgIGlmIChzdGF0ZVtrZXlNYXAuZmFjaWxpdGllc10gIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgZmFjaWxpdGllc0ZpbHRlclZhbHVlcy52YWx1ZSA9IFsuLi50b0FycmF5KHN0YXRlW2tleU1hcC5mYWNpbGl0aWVzXSldO1xyXG5cclxuICAgICAgICAvLyBQcmljZSByYW5nZSBbbWluLCBtYXhdIGlmIHByb3ZpZGVkIGFzIGFuIGFycmF5XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3RhdGVba2V5TWFwLnByaWNlXSkgJiYgKHN0YXRlW2tleU1hcC5wcmljZV0gYXMgYW55W10pLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gc3RhdGVba2V5TWFwLnByaWNlXSBhcyBhbnlbXTtcclxuICAgICAgICAgICAgcHJpY2VNaW5GaWx0ZXJWYWx1ZS52YWx1ZSA9IE51bWJlcihtaW4pIHx8IDA7XHJcbiAgICAgICAgICAgIHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWUgPSBOdW1iZXIobWF4KSB8fCA5OTk5OTk5OTk5OTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGluaXRpYWxpc2VkLnZhbHVlID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaW5pdGlhbGlzZWQudmFsdWUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdhdGNoIGZvciBwcm9wcy5jYXJkcyBjaGFuZ2VzIGFuZCByZXNldCBpbml0aWFsaXNlZCB0byBmYWxzZVxyXG4gICAgd2F0Y2goKCkgPT4gcHJvcHMuY2FyZHMsICgpID0+IHtcclxuICAgICAgICBpbml0aWFsaXNlZC52YWx1ZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgd2F0Y2goW1xyXG4gICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLFxyXG4gICAgICAgIGhvbGlkYXlUeXBlRmlsdGVyVmFsdWVzLFxyXG4gICAgICAgIHJhdGluZ0ZpbHRlclZhbHVlcyxcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLFxyXG4gICAgICAgIHByaWNlTWluRmlsdGVyVmFsdWUsXHJcbiAgICAgICAgcHJpY2VNYXhGaWx0ZXJWYWx1ZVxyXG4gICAgXSwgKCkgPT4ge1xyXG4gICAgICAgIGlmICghaW5pdGlhbGlzZWQudmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgLy8gd2UgZG9udCB3YW50IHRoZSBmaWx0ZXJzIHRvIGNoYW5nZSB3aGVuIHdlIGxvYWQgaW4gZGlmZmVyZW50IHByb2R1Y3QsIHdlIG9ubHkgd2FudCB0aGVtIHRvIGNoYW5nZSBpZiBhIHVzZXIgaGFzIG1hbmlwdWxhdGVkIHRoZW1cclxuICAgICAgICBsZXQgbWluID0gcHJpY2VNaW5GaWx0ZXJWYWx1ZS52YWx1ZSA9PSBwcmljZU1pbkZpbHRlclZhbHVlLnZhbHVlID8gMCA6IHByaWNlTWluRmlsdGVyVmFsdWUudmFsdWU7XHJcbiAgICAgICAgbGV0IG1heCA9IHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWUgPT0gcHJpY2VNYXhGaWx0ZXJWYWx1ZS52YWx1ZSA/IDAgOiBwcmljZU1heEZpbHRlclZhbHVlLnZhbHVlO1xyXG5cclxuICAgICAgICBlbWl0KCdmaWx0ZXJzLWNoYW5nZWQnLCB7XHJcbiAgICAgICAgICAgIFtrZXlNYXAuZGVzdGluYXRpb25dOiBkZXN0aW5
2hdGlvbkZpbHRlclZhbHVlcy52YWx1ZSxcclxuICAgICAgICAgICAgW2tleU1hcC5ob2xpZGF5VHlwZV06IGhvbGlkYXlUeXBlRmlsdGVyVmFsdWVzLnZhbHVlLFxyXG4gICAgICAgICAgICBba2V5TWFwLnJhdGluZ106IHJhdGluZ0ZpbHRlclZhbHVlcy52YWx1ZSxcclxuICAgICAgICAgICAgW2tleU1hcC5mYWNpbGl0aWVzXTogZmFjaWxpdGllc0ZpbHRlclZhbHVlcy52YWx1ZSxcclxuICAgICAgICAgICAgW2tleU1hcC5wcmljZV06IFttaW4sIG1heF1cclxuICAgICAgICB9KTtcclxuICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcclxuXHJcbiAgICBjb25zdCBhdmFpbGFibGVGaWx0ZXJEZXN0aW5hdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gZ3JvdXBBbmRDb3VudChwcm9wcy5jYXJkcy5tYXAoYSA9PiBhLmRlc3RpbmF0aW9uKS5zb3J0KCkpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBhdmFpbGFibGVGaWx0ZXJIb2xpZGF5VHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gZ3JvdXBBbmRDb3VudChwcm9wcy5jYXJkcy5mbGF0TWFwKGEgPT4gYS5ob2xpZGF5VHlwZXMpLnNvcnQoKSk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGF2YWlsYWJsZUZpbHRlclJhdGluZyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gZ3JvdXBBbmRDb3VudChwcm9wcy5jYXJkcy5tYXAoYSA9PiBhLnJhdGluZykuc29ydCgpKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYXZhaWxhYmxlRmlsdGVyRmFjaWxpdGllcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gZ3JvdXBBbmRDb3VudChwcm9wcy5jYXJkcy5mbGF0TWFwKGEgPT4gYS5mYWNpbGl0aWVzKS5zb3J0KCkpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBhdmFpbGFibGVGaWx0ZXJQcmljZXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLmNhcmRzLm1hcChhID0+IE1hdGgucm91bmQoYS5wcmljZSkpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBhdmFpbGFibGVNaW5QcmljZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBsZXQgYXYgPSBhdmFpbGFibGVGaWx0ZXJQcmljZXMudmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIGF2LnNvcnQoKGEsIGIpID0+IGEgLSBiKVswXTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYXZhaWxhYmxlTWF4UHJpY2UgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgbGV0IGF2ID0gYXZhaWxhYmxlRmlsdGVyUHJpY2VzLnZhbHVlO1xyXG4gICAgICAgIHJldHVybiBhdi5zb3J0KChhLCBiKSA9PiBiIC0gYSlbMF07XHJcbiAgICB9KVxyXG4gICAgY29uc3QgZmlsdGVyZWRDYXJkcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBsZXQgYXYgPSBbLi4ucHJvcHMuY2FyZHMubWFwKHggPT4geCldO1xyXG5cclxuICAgICAgICBpZiAoZGVzdGluYXRpb25GaWx0ZXJWYWx1ZXMudmFsdWUubGVuZ3RoKVxyXG4gICAgICAgICAgICBhdiA9IGF2LmZpbHRlcihwID0+IGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLmluZGV4T2YocC5kZXN0aW5
2hdGlvbikgPiAtMSk7XHJcbiAgICAgICAgaWYgKGhvbGlkYXlUeXBlRmlsdGVyVmFsdWVzLnZhbHVlLmxlbmd0aClcclxuICAgICAgICAgICAgYXYgPSBhdi5maWx0ZXIocCA9PiBob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZS5ldmVyeShmZnYgPT4gcC5ob2xpZGF5VHlwZXMuaW5kZXhPZihmZnYpICE9IC0xKSk7XHJcbiAgICAgICAgaWYgKHJhdGluZ0ZpbHRlclZhbHVlcy52YWx1ZS5sZW5ndGgpXHJcbiAgICAgICAgICAgIGF2ID0gYXYuZmlsdGVyKHAgPT4gcmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLmluZGV4T2YocC5yYXRpbmcpID4gLTEpO1xyXG4gICAgICAgIGlmIChmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLmxlbmd0aClcclxuICAgICAgICAgICAgYXYgPSBhdi5maWx0ZXIocCA9PiBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLmV2ZXJ5KGZmdiA9PiBwLmZhY2lsaXRpZXMuaW5kZXhPZihmZnYpICE9IC0xKSk7XHJcblxyXG4gICAgICAgIGF2ID0gYXYuZmlsdGVyKHAgPT4gcC5wcmljZSA+PSBwcmljZU1pbkZpbHRlclZhbHVlLnZhbHVlICYmIHAucHJpY2UgPD0gcHJpY2VNYXhGaWx0ZXJWYWx1ZS52YWx1ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBhdjtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYW55RmlsdGVycyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gWy4uLmRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLCAuLi5ob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZSwgLi4ucmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLCAuLi5mYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlXS5sZW5ndGggPiAwO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzb3J0ZWRDYXJkcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBsZXQgY2FyZHMgPSBbLi4uZmlsdGVyZWRDYXJkcy52YWx1ZV07XHJcblxyXG4gICAgICAgIC8vIFNvcnQgdGhlIGNhcmQgZGF0YVxyXG4gICAgICAgIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwia3JcIikge1xyXG4gICAgICAgICAgICBjYXJkcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYS5wcmlvcml0eSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYi5wcmlvcml0eSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGIucHJpb3JpdHkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChhLnByaW9yaXR5ID4gYi5wcmlvcml0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChiLnByaW9yaXR5ID4gYS5wcmlvcml0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJuLWF6XCIpIHtcclxuICAgICAgICAgICAgY2FyZHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGEudGl0bGUgPiBiLnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGIudGl0bGUgPiBhLnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc29ydE9yZGVyLnZhbHVlID09PSBcInItaGxcIikge1xyXG4gICAgICAgICAgICBjYXJkcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYS5yYXRpbmcgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIucmF0aW5nIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYi5yYXRpbmcgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChhLnJhdGluZyA+IGIucmF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChiLnJhdGluZyA+IGEucmF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwici1saFwiKSB7XHJcbiAgICAgICAgICAgIGNhcmRzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhLnJhdGluZyA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYi5yYXRpbmcgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChiLnJhdGluZyA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGEucmF0aW5nID4gYi5yYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgI
2H1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYi5yYXRpbmcgPiBhLnJhdGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJwLWhsXCIpIHtcclxuICAgICAgICAgICAgY2FyZHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGEucHJpY2UgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIucHJpY2UgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChiLnByaWNlIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYS5wcmljZSA+IGIucHJpY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGIucHJpY2UgPiBhLnByaWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwicC1saFwiKSB7XHJcbiAgICAgICAgICAgIGNhcmRzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhLnByaWNlIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChiLnByaWNlIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYi5wcmljZSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGEucHJpY2UgPiBiLnByaWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGIucHJpY2UgPiBhLnByaWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhcmRzLmZvckVhY2goKGMsIGkpID0+IGMub3JkZXIgPSBpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNhcmRzO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIFxyXG4gICAgZnVuY3Rpb24gc2hvd0Rlc3RpbmF0aW9uRmlsdGVyKCkge1xyXG4gICAgICAgIGhvbGlkYXlUeXBlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcmF0aW5nRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByaWNlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXBhcnR1cmVNb250aEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9ICFkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHNob3dDbGFzc2lmaWNhdGlvbkZpbHRlcigpIHtcclxuICAgICAgICBob2xpZGF5VHlwZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHJhdGluZ0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZhY2lsaXRpZXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBwcmljZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGVtaXQoXCJ1cGRhdGU6c29ydC1hY3RpdmVcIiwgZmFsc2UpO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmVhdHVyZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGF1dGhvckZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSAhY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93RGVwYXJ0dXJlTW9udGhGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5
2hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gIWRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2hvd0JvYXJkQmFzaXNGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgaW50ZXJlc3RGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmZWF0dXJlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYXV0aG9yRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZGVzdGluYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBib2FyZEJhc2lzRmlsdGVyQWN0aXZlLnZhbHVlID0gIWJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93SW50ZXJlc3RGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gIWludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2hvd0ZlYXR1cmVGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYXV0aG9yRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZGVzdGluYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmZWF0dXJlRmlsdGVyQWN0aXZlLnZhbHVlID0gIWZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93QXV0aG9yRmlsdGVyKCkge1xyXG4gICAgICAgIGhvbGlkYXlUeXBlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcmF0aW5nRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByaWNlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXBhcnR1cmVNb250aEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGF1dGhvckZpbHRlckFjdGl2ZS52YWx1ZSA9ICFhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93SG9saWRheVR5cGVGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSAhaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICAgICAgcmF0aW5nRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByaWNlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXBhcnR1cmVNb250aEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5
2hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2hvd1JhdGluZ0ZpbHRlcigpIHtcclxuICAgICAgICBob2xpZGF5VHlwZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHJhdGluZ0ZpbHRlckFjdGl2ZS52YWx1ZSA9ICFyYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByaWNlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXBhcnR1cmVNb250aEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2hvd0ZhY2lsaXRpZXNGaWx0ZXIoKSB7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9ICFmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlO1xyXG4gICAgICAgIGhvbGlkYXlUeXBlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcmF0aW5nRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmVhdHVyZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGF1dGhvckZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93UHJpY2VGaWx0ZXIoKSB7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSAhcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgZGVzdGluYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBob2xpZGF5VHlwZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHJhdGluZ0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZhY2lsaXRpZXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmVhdHVyZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGF1dGhvckZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gYWRkRGVzdGluYXRpb25GaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLmluZGV4T2YoZmlsdGVyKSAhPSAtMSlcclxuICAgICAgICAgICAgcmVtb3ZlRGVzdGluYXRpb25GaWx0ZXIoZmlsdGVyKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGFkZEhvbGlkYXlUeXBlRmlsdGVyKGZpbHRlcikge1xyXG4gICAgICAgIGlmIChob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZS
25pbmRleE9mKGZpbHRlcikgIT0gLTEpXHJcbiAgICAgICAgICAgIHJlbW92ZUhvbGlkYXlUeXBlRmlsdGVyKGZpbHRlcik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZS5wdXNoKGZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBhZGRSYXRpbmdGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgaWYgKHJhdGluZ0ZpbHRlclZhbHVlcy52YWx1ZS5pbmRleE9mKGZpbHRlcikgIT0gLTEpXHJcbiAgICAgICAgICAgIHJlbW92ZVJhdGluZ0ZpbHRlcihmaWx0ZXIpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGFkZEZhY2lsaXRpZXNGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgaWYgKGZhY2lsaXRpZXNGaWx0ZXJWYWx1ZXMudmFsdWUuaW5kZXhPZihmaWx0ZXIpICE9IC0xKVxyXG4gICAgICAgICAgICByZW1vdmVGYWNpbGl0aWVzRmlsdGVyKGZpbHRlcik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlbW92ZURlc3RpbmF0aW9uRmlsdGVyKGZpbHRlcikge1xyXG4gICAgICAgIHJlbW92ZUl0ZW1PbmNlKGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVtb3ZlSG9saWRheVR5cGVGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgcmVtb3ZlSXRlbU9uY2UoaG9saWRheVR5cGVGaWx0ZXJWYWx1ZXMudmFsdWUsIGZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiByZW1vdmVSYXRpbmdGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgcmVtb3ZlSXRlbU9uY2UocmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVtb3ZlRmFjaWxpdGllc0ZpbHRlcihmaWx0ZXIpIHtcclxuICAgICAgICByZW1vdmVJdGVtT25jZShmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gY2xlYXJBbGxGaWx0ZXJzKCkge1xyXG4gICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlID0gW107XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJWYWx1ZXMudmFsdWUgPSBbXTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJWYWx1ZXMudmFsdWUgPSBbXTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlID0gW107XHJcbiAgICAgICAgcHJpY2VNaW5GaWx0ZXJWYWx1ZS52YWx1ZSA9IGF2YWlsYWJsZU1pblByaWNlLnZhbHVlO1xyXG4gICAgICAgIHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWUgPSBhdmFpbGFibGVNYXhQcmljZS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjbGVhclByaWNlRmlsdGVyKCkge1xyXG4gICAgICAgIHByaWNlTWluRmlsdGVyVmFsdWUudmFsdWUgPSBhdmFpbGFibGVNaW5QcmljZS52YWx1ZTtcclxuICAgICAgICBwcmljZU1heEZpbHRlclZhbHVlLnZhbHVlID0gYXZhaWxhYmxlTWF4UHJpY2UudmFsdWU7XHJcbiAgICB9XHJcbiAgICBleHBvc2Uoe1xyXG4gICAgICAgIGNsb3NlQWxsRmlsdGVyczogKCkgPT4ge1xyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBob2xpZGF5VHlwZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBwcmljZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldEN1cnJlbnRGaWx0ZXJTdGF0ZTogKCkgPT4gKHtcclxuICAgICAgICAgICAgW2tleU1hcC5kZXN0aW5hdGlvbl06IGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLFxyXG4gICAgICAgICAgICBba2V5TWFwLmhvbGlkYXlUeXBlXTogaG9saWRheVR5cGVGaWx0ZXJWYWx1ZXMudmFsdWUsXHJcbiAgICAgICAgICAgIFtrZXlNYXAucmF0aW5nXTogcmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLFxyXG4gICAgICAgICAgICBba2V5TWFwLmZhY2lsaXRpZXNdOiBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLFxyXG4gICAgICAgICAgICBba2V5TWFwLnByaWNlXTogW3ByaWNlTWluRmlsdGVyVmFsdWUudmFsdWUsIHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWVdXHJcbiAgICAgICAgfSlcclxuICAgIH0pO1xyXG4gICAgZnVuY3Rpb24gcmVtb3ZlSXRlbU9uY2UoYXJyLCB2YWx1ZSkge1xyXG4gICAgICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKHZhbHVlKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICBhcnIuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFycjtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHNldFNvcnQodmFsKSB7XHJcbiAgICAgICAgaWYgKCF2YWwgfHwgdHlwZW9mIHZhbCAhPT0gXCJzdHJpbmdcIiB8fCB2YWwgPT09IG51bGwgfHwgdmFsLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICBzb3J0T3JkZXIudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNvcnRPcmRlci52YWx1ZSA9IHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0U29ydE5hbWUoKTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHNldFNvcnROYW1lKCkge1xyXG4gICAgICAgIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwia3JcIikge1xyXG4gICAgICAgICAgICBzb3J0TmFtZS52YWx1ZSA9IFwiS3VvbmkgcmVjb21tZW5kZWRcIjtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJuLWF6XCIpIHtcclxuICAgICAgICAgICAgc29ydE5hbWUudmFsdWUgPSBcIk5hbWUgPHNwYW4+KEEtWik8L3NwYW4+XCI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwici1obFwiKSB7XHJcbiAgICAgICAgICAgI
2HNvcnROYW1lLnZhbHVlID0gXCJSYXRpbmcgPHNwYW4+KEhpZ2ggdG8gTG93KTwvc3Bhbj5cIjtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJyLWxoXCIpIHtcclxuICAgICAgICAgICAgc29ydE5hbWUudmFsdWUgPSBcIlJhdGluZyA8c3Bhbj4oTG93IHRvIEhpZ2gpPC9zcGFuPlwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc29ydE9yZGVyLnZhbHVlID09PSBcInAtaGxcIikge1xyXG4gICAgICAgICAgICBzb3J0TmFtZS52YWx1ZSA9IFwiUHJpY2UgPHNwYW4+KEhpZ2ggdG8gTG93KTwvc3Bhbj5cIjtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJwLWxoXCIpIHtcclxuICAgICAgICAgICAgc29ydE5hbWUudmFsdWUgPSBcIlByaWNlIDxzcGFuPihMb3cgdG8gSGlnaCk8L3NwYW4+XCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc29ydE5hbWUudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGlzU29ydCh2YWwpIHtcclxuICAgICAgICByZXR1cm4gc29ydE9yZGVyLnZhbHVlID09PSB2YWw7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBncm91cEFuZENvdW50KGFycikge1xyXG4gICAgICAgIHJldHVybiBhcnIucmVkdWNlKChhY2MsIGN1cikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWN1cilcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgIGlmIChhY2Muc29tZShhID0+IGEubmFtZSA9PSBjdXIpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSBhY2MuZmluZChhID0+IGEubmFtZSA9PSBjdXIpO1xyXG4gICAgICAgICAgICAgICAgbWF0Y2guY291bnQrKztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFjYy5wdXNoKHsgbmFtZTogY3VyLCBjb3VudDogMSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sIFtdKVxyXG4gICAgfVxyXG5cclxuXG5yZXR1cm4gKF9jdHg6IGFueSxfY2FjaGU6IGFueSkgPT4ge1xuICByZXR1cm4gKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCBudWxsLCBbXG4gICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCBfaG9pc3RlZF8xLCBbXG4gICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgY2xhc3M6IFwiZmlsdGVyLW1lbnVfX3R5cGVcIixcbiAgICAgICAgaWQ6IFwic2VhcmNoLWZpbHRlci10YWdzXCIsXG4gICAgICAgIG9uQ2xpY2s6IF9jYWNoZVsxNF0gfHwgKF9jYWNoZVsxNF0gPSBfd2l0aE1vZGlmaWVycygoJGV2ZW50OiBhbnkpID0+IChlbWl0KCd1cGRhdGU6bW9iaWxlLWZpbHRlcnMnLCAhX19wcm9wcy5tb2JpbGVGaWx0ZXJzKSksIFtcInN0b3BcIl0pKVxuICAgICAgfSwgW1xuICAgICAgICBfaG9pc3RlZF8yLFxuICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwidWxcIiwge1xuICAgICAgICAgIGNsYXNzOiBfbm9ybWFsaXplQ2xhc3MoW1widGFnc1wiLCB7J2FjdGl2ZSc6IF9fcHJvcHMubW9iaWxlRmlsdGVyc31dKVxuICAgICAgICB9LCBbXG4gICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxpXCIsIF9ob2lzdGVkXzMsIFtcbiAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbWdcIiwge1xuICAgICAgICAgICAgICBvbkNsaWNrOiBfY2FjaGVbMF0gfHwgKF9jYWNoZVswXSA9IF93aXRoTW9kaWZpZXJzKCgkZXZlbnQ6IGFueSkgPT4gKGVtaXQoJ3VwZGF0ZTptb2JpbGUtZmlsdGVycycsICFfX3Byb3BzLm1vYmlsZUZpbHRlcnMpKSwgW1wic3RvcFwiXSkpLFxuICAgICAgICAgICAgICBjbGFzczogXCJmaWx0ZXItY2xvc2VcIixcbiAgICAgICAgICAgICAgc3JjOiBcIi9pbWFnZXMvaWNvbnMvY2FuY2VsLnN2Z1wiXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF9ob2lzdGVkXzRcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwibGlcIiwge1xuICAgICAgICAgICAgY2xhc3M6IF9ub3JtYWxpemVDbGFzcyh7J2FjdGl2ZSc6IGRlc3RpbmF0aW9uRmlsdGVyQWN0aXZlLnZhbHVlfSksXG4gICAgICAgICAgICBvbkNsaWNrOiBfY2FjaGVbMl0gfHwgKF9jYWNoZVsyXSA9IF93aXRoTW9kaWZpZXJzKCgkZXZlbnQ6IGFueSkgPT4gKHNob3dEZXN0aW5hdGlvbkZpbHRlcigpKSwgW1wic3RvcFwiXSkpXG4gICAgICAgICAgfSwgW1xuICAgICAgICAgICAgX2hvaXN0ZWRfNSxcbiAgICAgICAgICAgIF9ob2lzdGVkXzYsXG4gICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwidWxcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICAoX29wZW5CbG9jayh0cnVlKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhfRnJhZ21lbnQsIG51bGwsIF9yZW5kZXJMaXN0KF91bnJlZihhdmFpbGFibGVGaWx0ZXJEZXN0aW5hdGlvbiksIChkZXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChfb3BlbkJsb2NrKCksIF9jcmVhdGVFbGVtZW50QmxvY2soXCJsaVwiLCB7XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrOiBfd2l0aE1vZGlmaWVycygoJGV2ZW50OiBhbnkpID0+IChhZGREZXN0aW5hdGlvbkZpbHRlcihkZXN0Lm5hbWUpKSwgW1wic3RvcFwiXSlcbiAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICBfY3JlYXRlVGV4dFZOb2RlKF90b0Rpc3BsYXlTdHJpbmcoZGVzdC5uYW1lKSwgMSAvKiBURVhUICovKSxcbiAgICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIG51bGwsIFwiKFwiICsgX3RvRGlzcGxheVN0cmluZyhkZXN0LmNvdW50KSArIFwiKVwiLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgICAgICAgX3dpdGhEaXJlY3RpdmVzKF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGRlc3QubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRlc3QubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjogX2NhY2hlWzFdIHx8IChfY2FjaGVbMV0gPSAoJGV2ZW50OiBhbnkpID0+ICgoZGVzdGluYXRpb25GaWx0ZXJWYWx1ZXMpLnZhbHVlID0gJGV2ZW50KSlcbiAgICAgICAgICAgICAgICAgI
2H0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzgpLCBbXG4gICAgICAgICAgICAgICAgICAgIFtfdk1vZGVsQ2hlY2tib3gsIGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlXVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfaG9pc3RlZF85XG4gICAgICAgICAgICAgICAgXSwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfNykpXG4gICAgICAgICAgICAgIH0pLCAyNTYgLyogVU5LRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pLFxuICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJsaVwiLCB7XG4gICAgICAgICAgICBjbGFzczogX25vcm1hbGl6ZUNsYXNzKHsnYWN0aXZlJzogaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWV9KSxcbiAgICAgICAgICAgIG9uQ2xpY2s6IF9jYWNoZVs0XSB8fCAoX2NhY2hlWzRdID0gX3dpdGhNb2RpZmllcnMoKCRldmVudDogYW55KSA9PiAoc2hvd0hvbGlkYXlUeXBlRmlsdGVyKCkpLCBbXCJzdG9wXCJdKSlcbiAgICAgICAgICB9LCBbXG4gICAgICAgICAgICBfaG9pc3RlZF8xMCxcbiAgICAgICAgICAgIF9ob2lzdGVkXzExLFxuICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcInVsXCIsIG51bGwsIFtcbiAgICAgICAgICAgICAgKF9vcGVuQmxvY2sodHJ1ZSksIF9jcmVhdGVFbGVtZW50QmxvY2soX0ZyYWdtZW50LCBudWxsLCBfcmVuZGVyTGlzdChfdW5yZWYoYXZhaWxhYmxlRmlsdGVySG9saWRheVR5cGUpLCAoZGVzdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwge1xuICAgICAgICAgICAgICAgICAgb25DbGljazogX3dpdGhNb2RpZmllcnMoKCRldmVudDogYW55KSA9PiAoYWRkSG9saWRheVR5cGVGaWx0ZXIoZGVzdC5uYW1lKSksIFtcInN0b3BcIl0pXG4gICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgX2NyZWF0ZVRleHRWTm9kZShfdG9EaXNwbGF5U3RyaW5nKGRlc3QubmFtZSksIDEgLyogVEVYVCAqLyksXG4gICAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCBudWxsLCBcIihcIiArIF90b0Rpc3BsYXlTdHJpbmcoZGVzdC5jb3VudCkgKyBcIilcIiwgMSAvKiBURVhUICovKSxcbiAgICAgICAgICAgICAgICAgIF93aXRoRGlyZWN0aXZlcyhfY3JlYXRlRWxlbWVudFZOb2RlKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBkZXN0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkZXN0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgICAgICAgICAgICAgXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6IF9jYWNoZVszXSB8fCAoX2NhY2hlWzNdID0gKCRldmVudDogYW55KSA9PiAoKGhvbGlkYXlUeXBlRmlsdGVyVmFsdWVzKS52YWx1ZSA9ICRldmVudCkpXG4gICAgICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF8xMyksIFtcbiAgICAgICAgICAgICAgICAgICAgW192TW9kZWxDaGVja2JveCwgaG9saWRheVR5cGVGaWx0ZXJWYWx1ZXMudmFsdWVdXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIF9ob2lzdGVkXzE0XG4gICAgICAgICAgICAgICAgXSwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfMTIpKVxuICAgICAgICAgICAgICB9KSwgMjU2IC8qIFVOS0VZRURfRlJBR01FTlQgKi8pKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdLCAyIC8qIENMQVNTICovKSxcbiAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwibGlcIiwge1xuICAgICAgICAgICAgY2xhc3M6IF9ub3JtYWxpemVDbGFzcyh7J2FjdGl2ZSc6IHJhdGluZ0ZpbHRlckFjdGl2ZS52YWx1ZX0pLFxuICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzZdIHx8IChfY2FjaGVbNl0gPSBfd2l0aE1vZGlmaWVycygoJGV2ZW50OiBhbnkpID0+IChzaG93UmF0aW5nRmlsdGVyKCkpLCBbXCJzdG9wXCJdKSlcbiAgICAgICAgICB9LCBbXG4gICAgICAgICAgICBfaG9pc3RlZF8xNSxcbiAgICAgICAgICAgIF9ob2lzdGVkXzE2LFxuICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcInVsXCIsIG51bGwsIFtcbiAgICAgICAgICAgICAgKF9vcGVuQmxvY2sodHJ1ZSksIF9jcmVhdGVFbGVtZW50QmxvY2soX0ZyYWdtZW50LCBudWxsLCBfcmVuZGVyTGlzdChfdW5yZWYoYXZhaWxhYmxlRmlsdGVyUmF0aW5nKSwgKGRlc3QpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIHtcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IF93aXRoTW9kaWZpZXJzKCgkZXZlbnQ6IGFueSkgPT4gKGFkZFJhdGluZ0ZpbHRlcihkZXN0Lm5hbWUpKSwgW1wic3RvcFwiXSlcbiAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICBfY3JlYXRlVGV4dFZOb2RlKF90b0Rpc3BsYXlTdHJpbmcoZGVzdC5uYW1lKSwgMSAvKiBURVhUICovKSxcbiAgICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIG51bGwsIFwiKFwiICsgX3RvRGlzcGxheVN0cmluZyhkZXN0LmNvdW50KSArIFwiKVwiLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgICAgICAgX3dpdGhEaXJlY3RpdmVzKF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGRlc3QubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRlc3QubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjogX2NhY2hlWzVdIHx8IChfY2FjaGVbNV0gPSAoJGV2ZW50OiBhbnkpID0+ICgocmF0aW5nRmlsdGVyVmFsdWVzKS52YWx1ZSA9ICRldmVudCkpXG4gICAgICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF8xOCksIFtcbiAgICAgICAgICAgICAgICAgICAgW192TW9kZWxDaGVja2JveCwgcmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlXVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfaG9pc3RlZF8xOVxuICAgICAgICAgICAgICAgIF0sIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzE3KSlcbiAgICAgICAgICAgICAgfSksIDI1NiAvKiBVTktFWUVEX0ZSQUdNRU5UICovKSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLyksXG4gICAgICAgICAgKCEhX3VucmVmKGF2YWlsYWJsZUZpbHRlckZhY2lsaXRpZXMpPy5sZW5ndGgpXG4gICAgICAgICAgICA/IChfb3BlbkJsb2NrKCksIF9jcmVhdGVFbGVtZW50QmxvY2soXCJ
2saVwiLCB7XG4gICAgICAgICAgICAgICAga2V5OiAwLFxuICAgICAgICAgICAgICAgIGNsYXNzOiBfbm9ybWFsaXplQ2xhc3MoeydhY3RpdmUnOiBmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlfSksXG4gICAgICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzhdIHx8IChfY2FjaGVbOF0gPSBfd2l0aE1vZGlmaWVycygoJGV2ZW50OiBhbnkpID0+IChzaG93RmFjaWxpdGllc0ZpbHRlcigpKSwgW1wic3RvcFwiXSkpXG4gICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICBfaG9pc3RlZF8yMCxcbiAgICAgICAgICAgICAgICBfaG9pc3RlZF8yMSxcbiAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwidWxcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICAgICAgKF9vcGVuQmxvY2sodHJ1ZSksIF9jcmVhdGVFbGVtZW50QmxvY2soX0ZyYWdtZW50LCBudWxsLCBfcmVuZGVyTGlzdChfdW5yZWYoYXZhaWxhYmxlRmlsdGVyRmFjaWxpdGllcyksIChkZXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IF93aXRoTW9kaWZpZXJzKCgkZXZlbnQ6IGFueSkgPT4gKGFkZEZhY2lsaXRpZXNGaWx0ZXIoZGVzdC5uYW1lKSksIFtcInN0b3BcIl0pXG4gICAgICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfY3JlYXRlVGV4dFZOb2RlKF90b0Rpc3BsYXlTdHJpbmcoZGVzdC5uYW1lKSwgMSAvKiBURVhUICovKSxcbiAgICAgICAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCBudWxsLCBcIihcIiArIF90b0Rpc3BsYXlTdHJpbmcoZGVzdC5jb3VudCkgKyBcIilcIiwgMSAvKiBURVhUICovKSxcbiAgICAgICAgICAgICAgICAgICAgICBfd2l0aERpcmVjdGl2ZXMoX2NyZWF0ZUVsZW1lbnRWTm9kZShcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGRlc3QubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkZXN0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjogX2NhY2hlWzddIHx8IChfY2FjaGVbN10gPSAoJGV2ZW50OiBhbnkpID0+ICgoZmFjaWxpdGllc0ZpbHRlclZhbHVlcykudmFsdWUgPSAkZXZlbnQpKVxuICAgICAgICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzIzKSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgW192TW9kZWxDaGVja2JveCwgZmFjaWxpdGllc0ZpbHRlclZhbHVlcy52YWx1ZV1cbiAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICBfaG9pc3RlZF8yNFxuICAgICAgICAgICAgICAgICAgICBdLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF8yMikpXG4gICAgICAgICAgICAgICAgICB9KSwgMjU2IC8qIFVOS0VZRURfRlJBR01FTlQgKi8pKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pKVxuICAgICAgICAgICAgOiBfY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgICAgICAoX3VucmVmKGF2YWlsYWJsZUZpbHRlclByaWNlcyk/LnNvbWUocCA9PiBwPjEpKVxuICAgICAgICAgICAgPyAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwge1xuICAgICAgICAgICAgICAgIGtleTogMSxcbiAgICAgICAgICAgICAgICBjbGFzczogX25vcm1hbGl6ZUNsYXNzKHsnYWN0aXZlJzogcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWV9KSxcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiBfY2FjaGVbMTNdIHx8IChfY2FjaGVbMTNdID0gX3dpdGhNb2RpZmllcnMoKCRldmVudDogYW55KSA9PiAoc2hvd1ByaWNlRmlsdGVyKCkpLCBbXCJzdG9wXCJdKSlcbiAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgIF9ob2lzdGVkXzI1LFxuICAgICAgICAgICAgICAgIF9ob2lzdGVkXzI2LFxuICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJ1bFwiLCB7XG4gICAgICAgICAgICAgICAgICBpZDogXCJwcmljZS1kcm9wZG93blwiLFxuICAgICAgICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzEyXSB8fCAoX2NhY2hlWzEyXSA9IF93aXRoTW9kaWZpZXJzKCgpID0+IHt9LCBbXCJzdG9wXCJdKSlcbiAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwibGlcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICAgICAgICBfY3JlYXRlVk5vZGUoX3VucmVmKHByaWNlUmFuZ2VTbGlkZXIpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJpY2VzOiBfdW5yZWYoYXZhaWxhYmxlRmlsdGVyUHJpY2VzKSxcbiAgICAgICAgICAgICAgICAgICAgICBtaW46IHByaWNlTWluRmlsdGVyVmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgXCJvblVwZGF0ZTptaW5cIjogX2NhY2hlWzldIHx8IChfY2FjaGVbOV0gPSAoJGV2ZW50OiBhbnkpID0+ICgocHJpY2VNaW5GaWx0ZXJWYWx1ZSkudmFsdWUgPSAkZXZlbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgICBtYXg6IHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgXCJvblVwZGF0ZTptYXhcIjogX2NhY2hlWzEwXSB8fCAoX2NhY2hlWzEwXSA9ICgkZXZlbnQ6IGFueSkgPT4gKChwcmljZU1heEZpbHRlclZhbHVlKS52YWx1ZSA9ICRldmVudCkpLFxuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgXCJvblVwZGF0ZTphY3RpdmVcIjogX2NhY2hlWzExXSB8fCAoX2NhY2hlWzExXSA9ICgkZXZlbnQ6IGFueSkgPT4gKChwcmljZUZpbHRlckFjdGl2ZSkudmFsdWUgPSAkZXZlbnQpKVxuICAgICAgICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBbXCJwcmljZXNcIiwgXCJtaW5cIiwgXCJtYXhcIiwgXCJhY3RpdmVcIl0pXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pKVxuICAgICAgICAgICAgOiBfY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKVxuICAgICAgICBdLCAyIC8qIENMQVNTICovKVxuICAgICAgXSksXG4gICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgY2xhc3M6IFwiZmlsdGVyLW1lbnVfX3R5cGVcIixcbiAgICAgICAgaWQ6IFwic2VhcmNoLXNvcnQtYnlcIixcbiAgICAgICAgb25DbGljazogX2NhY2hlWzIzXSB8fCAoX2NhY2hlWzIzXSA9IF93aXRoTW9kaWZpZXJzKCgkZXZlbnQ6IGFueSkgPT4gKGVtaXQoJ3VwZGF0ZTpzb3J0LWFjdGl2ZScsICFfX3Byb3BzLnNvcnRBY3RpdmUpKSwgW1wic3RvcFwiXSkpXG4gICAgICB9LCBbXG4gICAgICAgIF9ob2lzdGVkXzI3LFxuICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwidWxcIiwge1xuICAgICAgICAgIGNsYXNzOiBfbm9ybWFsaXplQ2xhc3MoW1wic29ydC1ieVwiLCB7J2FjdGl2ZSc6IF9fcHJvcHMuc29ydEFjdGl2ZX1dKVxuICAgICAgICB9LCBbXG4gICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxpXCIsIF9ob2lzdGVkXzI4LCBbXG4gICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzE1XSB8fCAoX2NhY2hlWzE1XSA9IF93aXRoTW9kaWZpZXJzKCgkZXZlbnQ6IGFueSkgPT4gKGVtaXQoJ3VwZGF0ZTpzb3J0LWFjdGl2ZScsICFfX3Byb3BzLnNvcnRBY3RpdmUpKSwgW1wic3RvcFwiXSkpLFxuICAgICAgICAgICAgICBjbGFzczogXCJmaWx0ZXItY2xvc2VcIixcbiAgICAgICAgICAgICAgc3JjOiBcIi9pbWFnZXMvaWNvbnMvY2FuY2VsLnN2Z1wiXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF9ob2lzdGVkXzI5XG4gICAgICAgICAgXSksXG4gICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxpXCIsIHtcbiAgICAgICAgICAgIGNsYXNzOiBfbm9ybWFsaXplQ2xhc3MoeydhY3RpdmUnOiBfX3Byb3BzLnNvcnRBY3RpdmV9KSxcbiAgICAgICAgICAgIG9uQ2xpY2s6IF9jYWNoZVsyMl0gfHwgKF9jYWNoZVsyMl0gPSBfd2l0aE1vZGlmaWVycygoJGV2ZW50OiBhbnkpID0+IChlbWl0KCd1cGRhdGU6c29ydC1hY3RpdmUnLCAhX19wcm9wcy5zb3J0QWN0aXZlKSksIFtcInN0b3BcIl0pKVxuICAgICAgICAgI
2H0sIFtcbiAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbnNcIiwgeyBpbm5lckhUTUw6IHNvcnROYW1lLnZhbHVlIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzMwKSxcbiAgICAgICAgICAgIF9ob2lzdGVkXzMxLFxuICAgICAgICAgICAgX2hvaXN0ZWRfMzIsXG4gICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwidWxcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwibGlcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICAgIF9ob2lzdGVkXzMzLFxuICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrOiBfY2FjaGVbMTZdIHx8IChfY2FjaGVbMTZdID0gX3dpdGhNb2RpZmllcnMoKCRldmVudDogYW55KSA9PiAoc2V0U29ydCgna3InKSksIFtcInN0b3BcIl0pKSxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGlzU29ydCgna3InKVxuICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzM0KSxcbiAgICAgICAgICAgICAgICBfaG9pc3RlZF8zNVxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxpXCIsIG51bGwsIFtcbiAgICAgICAgICAgICAgICBfaG9pc3RlZF8zNixcbiAgICAgICAgICAgICAgICBfaG9pc3RlZF8zNyxcbiAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzE3XSB8fCAoX2NhY2hlWzE3XSA9IF93aXRoTW9kaWZpZXJzKCgkZXZlbnQ6IGFueSkgPT4gKHNldFNvcnQoJ24tYXonKSksIFtcInN0b3BcIl0pKSxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGlzU29ydCgnbi1heicpXG4gICAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfMzgpLFxuICAgICAgICAgICAgICAgIF9ob2lzdGVkXzM5XG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwibGlcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICAgIF9ob2lzdGVkXzQwLFxuICAgICAgICAgICAgICAgIF9ob2lzdGVkXzQxLFxuICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrOiBfY2FjaGVbMThdIHx8IChfY2FjaGVbMThdID0gX3dpdGhNb2RpZmllcnMoKCRldmVudDogYW55KSA9PiAoc2V0U29ydCgnci1obCcpKSwgW1wic3RvcFwiXSkpLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogaXNTb3J0KCdyLWhsJylcbiAgICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF80MiksXG4gICAgICAgICAgICAgICAgX2hvaXN0ZWRfNDNcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJsaVwiLCBudWxsLCBbXG4gICAgICAgICAgICAgICAgX2hvaXN0ZWRfNDQsXG4gICAgICAgICAgICAgICAgX2hvaXN0ZWRfNDUsXG4gICAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IF9jYWNoZVsxOV0gfHwgKF9jYWNoZVsxOV0gPSBfd2l0aE1vZGlmaWVycygoJGV2ZW50OiBhbnkpID0+IChzZXRTb3J0KCdyLWxoJykpLCBbXCJzdG9wXCJdKSksXG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBpc1NvcnQoJ3ItbGgnKVxuICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzQ2KSxcbiAgICAgICAgICAgICAgICBfaG9pc3RlZF80N1xuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxpXCIsIG51bGwsIFtcbiAgICAgICAgICAgICAgICBfaG9pc3RlZF80OCxcbiAgICAgICAgICAgICAgICBfaG9pc3RlZF80OSxcbiAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzIwXSB8fCAoX2NhY2hlWzIwXSA9IF93aXRoTW9kaWZpZXJzKCgkZXZlbnQ6IGFueSkgPT4gKHNldFNvcnQoJ3AtaGwnKSksIFtcInN0b3BcIl0pKSxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGlzU29ydCgncC1obCcpXG4gICAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfNTApLFxuICAgICAgICAgICAgICAgIF9ob2lzdGVkXzUxXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwibGlcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICAgIF9ob2lzdGVkXzUyLFxuICAgICAgICAgICAgICAgIF9ob2lzdGVkXzUzLFxuICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrOiBfY2FjaGVbMjFdIHx8IChfY2FjaGVbMjFdID0gX3dpdGhNb2RpZmllcnMoKCRldmVudDogYW55KSA9PiAoc2V0U29ydCgncC1saCcpKSwgW1wic3RvcFwiXSkpLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogaXNTb3J0KCdwLWxoJylcbiAgICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF81NCksXG4gICAgICAgICAgICAgICAgX2hvaXN0ZWRfNTVcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgXSwgMiAvKiBDTEFTUyAqLylcbiAgICAgIF0pXG4gICAgXSksXG4gICAgKF91bnJlZihhbnlGaWx0ZXJzKSB8fCBwcmljZU1pbkZpbHRlclZhbHVlLnZhbHVlID4gKF91bnJlZihhdmFpbGFibGVNaW5QcmljZSkrMSkgfHwgcHJpY2VNYXhGaWx0ZXJWYWx1ZS52YWx1ZSA8IChfdW5yZWYoYXZhaWxhYmxlTWF4UHJpY2UpLTEpKVxuICAgICAgPyAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwidWxcIiwgX2hvaXN0ZWRfNTYsIFtcbiAgICAgICAgICAoX29wZW5CbG9jayh0cnVlKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhfRnJhZ21lbnQsIG51bGwsIF9yZW5kZXJMaXN0KGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLCAoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIG51bGwsIFtcbiAgICAgICAgICAgICAgX2NyZWF0ZVRleHRWTm9kZShfdG9EaXNwbGF5U3RyaW5nKGZpbHRlciksIDEgLyogVEVYVCAqLyksXG4gICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgkZXZlbnQ6IGFueSkgPT4gKHJlbW92ZURlc3RpbmF0aW9uRmlsdGVyKGZpbHRlcikpLFxuICAgICAgICAgICAgICAgIGNsYXNzOiBcImZpbHRlci1jbG9zZVwiLFxuICAgICAgICAgICAgICAgI
2HNyYzogXCIvaW1hZ2VzL2ljb25zL2NhbmNlbC5zdmdcIlxuICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF81NylcbiAgICAgICAgICAgIF0pKVxuICAgICAgICAgIH0pLCAyNTYgLyogVU5LRVlFRF9GUkFHTUVOVCAqLykpLFxuICAgICAgICAgIChfb3BlbkJsb2NrKHRydWUpLCBfY3JlYXRlRWxlbWVudEJsb2NrKF9GcmFnbWVudCwgbnVsbCwgX3JlbmRlckxpc3QoaG9saWRheVR5cGVGaWx0ZXJWYWx1ZXMudmFsdWUsIChmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICBfY3JlYXRlVGV4dFZOb2RlKF90b0Rpc3BsYXlTdHJpbmcoZmlsdGVyKSwgMSAvKiBURVhUICovKSxcbiAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgb25DbGljazogKCRldmVudDogYW55KSA9PiAocmVtb3ZlSG9saWRheVR5cGVGaWx0ZXIoZmlsdGVyKSksXG4gICAgICAgICAgICAgICAgY2xhc3M6IFwiZmlsdGVyLWNsb3NlXCIsXG4gICAgICAgICAgICAgICAgc3JjOiBcIi9pbWFnZXMvaWNvbnMvY2FuY2VsLnN2Z1wiXG4gICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzU4KVxuICAgICAgICAgICAgXSkpXG4gICAgICAgICAgfSksIDI1NiAvKiBVTktFWUVEX0ZSQUdNRU5UICovKSksXG4gICAgICAgICAgKF9vcGVuQmxvY2sodHJ1ZSksIF9jcmVhdGVFbGVtZW50QmxvY2soX0ZyYWdtZW50LCBudWxsLCBfcmVuZGVyTGlzdChyYXRpbmdGaWx0ZXJWYWx1ZXMudmFsdWUsIChmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICBfY3JlYXRlVGV4dFZOb2RlKF90b0Rpc3BsYXlTdHJpbmcoZmlsdGVyKSwgMSAvKiBURVhUICovKSxcbiAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgb25DbGljazogKCRldmVudDogYW55KSA9PiAocmVtb3ZlUmF0aW5nRmlsdGVyKGZpbHRlcikpLFxuICAgICAgICAgICAgICAgIGNsYXNzOiBcImZpbHRlci1jbG9zZVwiLFxuICAgICAgICAgICAgICAgIHNyYzogXCIvaW1hZ2VzL2ljb25zL2NhbmNlbC5zdmdcIlxuICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF81OSlcbiAgICAgICAgICAgIF0pKVxuICAgICAgICAgIH0pLCAyNTYgLyogVU5LRVlFRF9GUkFHTUVOVCAqLykpLFxuICAgICAgICAgIChfb3BlbkJsb2NrKHRydWUpLCBfY3JlYXRlRWxlbWVudEJsb2NrKF9GcmFnbWVudCwgbnVsbCwgX3JlbmRlckxpc3QoZmFjaWxpdGllc0ZpbHRlclZhbHVlcy52YWx1ZSwgKGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChfb3BlbkJsb2NrKCksIF9jcmVhdGVFbGVtZW50QmxvY2soXCJsaVwiLCBudWxsLCBbXG4gICAgICAgICAgICAgIF9jcmVhdGVUZXh0Vk5vZGUoX3RvRGlzcGxheVN0cmluZyhmaWx0ZXIpLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiAoJGV2ZW50OiBhbnkpID0+IChyZW1vdmVGYWNpbGl0aWVzRmlsdGVyKGZpbHRlcikpLFxuICAgICAgICAgICAgICAgIGNsYXNzOiBcImZpbHRlci1jbG9zZVwiLFxuICAgICAgICAgICAgICAgIHNyYzogXCIvaW1hZ2VzL2ljb25zL2NhbmNlbC5zdmdcIlxuICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF82MClcbiAgICAgICAgICAgIF0pKVxuICAgICAgICAgIH0pLCAyNTYgLyogVU5LRVlFRF9GUkFHTUVOVCAqLykpLFxuICAgICAgICAgIChwcmljZU1pbkZpbHRlclZhbHVlLnZhbHVlID4gX3VucmVmKGF2YWlsYWJsZU1pblByaWNlKSB8fCBwcmljZU1heEZpbHRlclZhbHVlLnZhbHVlIDwgX3VucmVmKGF2YWlsYWJsZU1heFByaWNlKSlcbiAgICAgICAgICAgID8gKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIF9ob2lzdGVkXzYxLCBbXG4gICAgICAgICAgICAgICAgX2NyZWF0ZVRleHRWTm9kZShcIiBQcmljZTogXCIgKyBfdG9EaXNwbGF5U3RyaW5nKF91bnJlZihmb3JtYXRBbW91bnQpKHByaWNlTWluRmlsdGVyVmFsdWUudmFsdWUsIHRydWUsIHRydWUpKSArIFwiIC0gXCIgKyBfdG9EaXNwbGF5U3RyaW5nKF91bnJlZihmb3JtYXRBbW91bnQpKHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWUsIHRydWUsIHRydWUpKSArIFwiIFwiLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgICAgb25DbGljazogY2xlYXJQcmljZUZpbHRlcixcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiBcImZpbHRlci1jbG9zZVwiLFxuICAgICAgICAgICAgICAgICAgc3JjOiBcIi9pbWFnZXMvaWNvbnMvY2FuY2VsLnN2Z1wiXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICA6IF9jcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJsaVwiLCB7XG4gICAgICAgICAgICBvbkNsaWNrOiBjbGVhckFsbEZpbHRlcnMsXG4gICAgICAgICAgICBjbGFzczogXCJjbGVhclwiXG4gICAgICAgICAgfSwgXCJDbGVhciBhbGxcIilcbiAgICAgICAgXSkpXG4gICAgICA6IF9jcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwgX2hvaXN0ZWRfNjIsIFtcbiAgICAgIChfb3BlbkJsb2NrKHRydWUpLCBfY3JlYXRlRWxlbWVudEJsb2NrKF9GcmFnbWVudCwgbnVsbCwgX3JlbmRlckxpc3QoX3VucmVmKHNvcnRlZENhcmRzKSwgKHByb2R1Y3QpID0+IHtcbiAgICAgICAgcmV0dXJuIChfb3BlbkJsb2NrKCksIF9jcmVhdGVFbGVtZW50QmxvY2soXCJhXCIsIHtcbiAgICAgICAgICBocmVmOiBwcm9kdWN0LmNhcmRMaW5rLFxuICAgICAgICAgIGNsYXNzOiBcInN3aXBlci1zbGlkZSBvdXItcGljay1jYXJkXCIsXG4gICAgICAgICAgc3R5bGU6IF9ub3JtYWxpem
2VTdHlsZSh7b3JkZXI6IHByb2R1Y3Qub3JkZXJ9KSxcbiAgICAgICAgICB0YXJnZXQ6IHByb2R1Y3QuY2FyZExpbmtUYXJnZXRCbGFuaz8gJ19ibGFuaycgOiB1bmRlZmluZWQsXG4gICAgICAgICAgXCJkYXRhLXBvcHVwLWNvbnRlbnRcIjogcHJvZHVjdC5jYXJkTGlua0NvbnRlbnRQb3B1cElkLFxuICAgICAgICAgIFwiZGF0YS1kZXN0aW5hdGlvbkZpbHRlclwiOiBwcm9kdWN0LmRlc3RpbmF0aW9uLFxuICAgICAgICAgIFwiZGF0YS1kZXBhcnRpbmdGaWx0ZXJcIjogcHJvZHVjdC5kZXBhcnRpbmcsXG4gICAgICAgICAgXCJkYXRhLWhvbGlkYXlUeXBlRmlsdGVyXCI6IHByb2R1Y3QuaG9saWRheVR5cGUsXG4gICAgICAgICAgXCJkYXRhLWJvYXJkQmFzaXNGaWx0ZXJcIjogcHJvZHVjdC5ib2FyZEJhc2lzLFxuICAgICAgICAgIFwiZGF0YS1mYWNpbGl0aWVzRmlsdGVyXCI6IHByb2R1Y3QuZmFjaWxpdGllcyxcbiAgICAgICAgICBcImRhdGEtcmVjb21tZW5kZWRcIjogcHJvZHVjdC5wcmlvcml0eSxcbiAgICAgICAgICBcImRhdGEtcHJpY2VcIjogcHJvZHVjdC5wcmljZSB8fCA5OTk5OTk5OTk5OVxuICAgICAgICB9LCBbXG4gICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCBfaG9pc3RlZF82NCwgW1xuICAgICAgICAgICAgKCEhcHJvZHVjdC50YWdJY29uICYmICEhcHJvZHVjdC50YWdJY29uLmltYWdlQWx0KVxuICAgICAgICAgICAgICA/IChfb3BlbkJsb2NrKCksIF9jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwgX2hvaXN0ZWRfNjUsIFtcbiAgICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJsYWJlbFwiLCBudWxsLCBfdG9EaXNwbGF5U3RyaW5nKHByb2R1Y3QudGFnSWNvbj8uaW1hZ2VBbHQpLCAxIC8qIFRFWFQgKi8pXG4gICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIDogX2NyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgc3JjOiBwcm9kdWN0LmltYWdlPy5pbWFnZVNyYyxcbiAgICAgICAgICAgICAgYWx0OiBwcm9kdWN0LmltYWdlPy5pbWFnZUFsdCxcbiAgICAgICAgICAgICAgdGl0bGU6IHByb2R1Y3QuaW1hZ2U/LmltYWdlQWx0XG4gICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF82NilcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIF9ob2lzdGVkXzY3LCBbXG4gICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwidWxcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICAoX29wZW5CbG9jayh0cnVlKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhfRnJhZ21lbnQsIG51bGwsIF9yZW5kZXJMaXN0KHByb2R1Y3QuY2FyZFRhZ3MsICh0YWcpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIG51bGwsIF90b0Rpc3BsYXlTdHJpbmcodGFnKSwgMSAvKiBURVhUICovKSlcbiAgICAgICAgICAgICAgfSksIDI1NiAvKiBVTktFWUVEX0ZSQUdNRU5UICovKSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxhYmVsXCIsIG51bGwsIF90b0Rpc3BsYXlTdHJpbmcocHJvZHVjdC50aXRsZSksIDEgLyogVEVYVCAqLyksXG4gICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwicFwiLCBudWxsLCBfdG9EaXNwbGF5U3RyaW5nKHByb2R1Y3QuZGVzY3JpcHRpb24pLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgKHByb2R1Y3Quc2hvd1doYXRzSW5jbHVkZWQpXG4gICAgICAgICAgICAgID8gKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCBfaG9pc3RlZF82OCwgW1xuICAgICAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcInBcIiwgbnVsbCwgW1xuICAgICAgICAgICAgICAgICAgICAocHJvZHVjdC5kZXBhcnRpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgPyAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwic3Ryb25nXCIsIF9ob2lzdGVkXzY5LCBcIkhlcmUncyB3aGF0J3MgaW5jbHVkZWRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgOiAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwic3Ryb25nXCIsIF9ob2lzdGVkXzcwLCBcIlByaWNlIGJhc2VkIG9uOlwiKSlcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcInVsXCIsIG51bGwsIFtcbiAgICAgICAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxpXCIsIG51bGwsIFtcbiAgICAgICAgICAgICAgICAgICAgICBfY3JlYXRlVGV4dFZOb2RlKF90b0Rpc3BsYXlTdHJpbmcocHJvZHVjdC5uaWdodHMpICsgXCIgbmlnaHRzIGZyb20gXCIsIDEgLyogVEVYVCAqLyksXG4gICAgICAgICAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcInN0cm9uZ1wiLCBudWxsLCBfdG9EaXNwbGF5U3RyaW5nKF91bnJlZihmb3JtYXRBbW91bnQpKHByb2R1Y3QucHJpY2UsIHRydWUsIHRydWUpKSArIFwiIHAvcFwiLCAxIC8qIFRFWFQgKi8pXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwibGlcIiwgbnVsbCwgX3RvRGlzcGxheVN0cmluZyhwcm9kdWN0LmJhc2VkT24pLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwibGlcIiwgbnVsbCwgX3RvRGlzcGxheVN0cmluZyhwcm9kdWN0LmJvYXJkQmFzaXMpLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgICAgICAgICAocHJvZHVjdC5kZXBhcnRpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgPyAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKF9GcmFnbWVudCwgeyBrZXk6IDAgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwibGlcIiwgbnVsbCwgXCJSZXR1cm4gZmxpZ2h0cyBmcm9tIFwiICsgX3RvRGlzcGxheVN0cmluZyhwcm9kdWN0LmRlcGFydGluZyksIDEgLyogVEVYVCAqLyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9kdWN0LnRyYW5zZmVyc0luY2x1ZGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIF9ob2lzdGVkXzcxLCBcIlRyYW5zZmVycyBpbmNsdWRlZFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9jcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCA2NCAvKiBTVEFCTEVfRlJBR01FTlQgKi8pKVxuICAgICAgICAgICAgICAgICAgICAgIDogKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIF9ob2lzdGVkXzcyLCBcIkZsaWdodHNcIiArIF90b0Rpc3BsYXlTdHJpbmc
2ocHJvZHVjdC50cmFuc2ZlcnNJbmNsdWRlZCA/ICcgJiB0cmFuc2ZlcnMnIDogJycpICsgXCIgaW5jbHVkZWRcIiwgMSAvKiBURVhUICovKSksXG4gICAgICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJsaVwiLCBudWxsLCBcIiBUcmF2ZWwgb24gXCIgKyBfdG9EaXNwbGF5U3RyaW5nKHByb2R1Y3QuZm9ybWF0dGVkRGVwYXJ0dXJlRGF0ZSksIDEgLyogVEVYVCAqLylcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCBfaG9pc3RlZF83MywgX3RvRGlzcGxheVN0cmluZyhwcm9kdWN0LmJ1dHRvblRleHQpLCAxIC8qIFRFWFQgKi8pXG4gICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIDogX2NyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICAgICAgICAocHJvZHVjdC5hZGRpdGlvbmFsTGluZTEgJiYgIXByb2R1Y3Quc2hvd1doYXRzSW5jbHVkZWQpXG4gICAgICAgICAgICAgID8gKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcInBcIiwgX2hvaXN0ZWRfNzQsIF90b0Rpc3BsYXlTdHJpbmcocHJvZHVjdC5hZGRpdGlvbmFsTGluZTEpLCAxIC8qIFRFWFQgKi8pKVxuICAgICAgICAgICAgICA6IF9jcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgICAgICAgKCFwcm9kdWN0Lm9mZmVyICYmICEhcHJvZHVjdC5wcmljZSAmJiAhcHJvZHVjdC5zaG93V2hhdHNJbmNsdWRlZClcbiAgICAgICAgICAgICAgPyAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsIF9ob2lzdGVkXzc1LCBbXG4gICAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCBudWxsLCBcIkZyb20gXCIgKyBfdG9EaXNwbGF5U3RyaW5nKF91bnJlZihmb3JtYXRBbW91bnQpKHByb2R1Y3QucHJpY2UsIHRydWUsIHRydWUpKSArIFwiIHAvcFwiLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgICAgICAgKHByb2R1Y3QuY3RhSW1hZ2UpXG4gICAgICAgICAgICAgICAgICAgID8gKF9vcGVuQmxvY2soKSwgX2NyZWF0ZUVsZW1lbnRCbG9jayhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHByb2R1Y3QuY3RhSW1hZ2UuaW1hZ2VTcmMsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IHByb2R1Y3QuY3RhSW1hZ2UuY3RhQWx0XG4gICAgICAgICAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfNzYpKVxuICAgICAgICAgICAgICAgICAgICA6IF9jcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpXG4gICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIDogKCEhcHJvZHVjdC5vZmZlcilcbiAgICAgICAgICAgICAgICA/IChfb3BlbkJsb2NrKCksIF9jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwgX2hvaXN0ZWRfNzcsIFtcbiAgICAgICAgICAgICAgICAgICAgX2NyZWF0ZUVsZW1lbnRWTm9kZShcImxhYmVsXCIsIG51bGwsIF90b0Rpc3BsYXlTdHJpbmcocHJvZHVjdC5vZmZlciksIDEgLyogVEVYVCAqLyksXG4gICAgICAgICAgICAgICAgICAgIChwcm9kdWN0LnNhdmluZ1RleHQpXG4gICAgICAgICAgICAgICAgICAgICAgPyAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwicFwiLCBfaG9pc3RlZF83OCwgX3RvRGlzcGxheVN0cmluZyhwcm9kdWN0LnNhdmluZ1RleHQpLCAxIC8qIFRFWFQgKi8pKVxuICAgICAgICAgICAgICAgICAgICAgIDogX2NyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIChwcm9kdWN0Lndhc1ByaWNlICYmIHByb2R1Y3QucHJpY2UpXG4gICAgICAgICAgICAgICAgICAgICAgPyAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwic21hbGxcIiwgX2hvaXN0ZWRfNzksIF90b0Rpc3BsYXlTdHJpbmcoX3VucmVmKGZvcm1hdEFtb3VudCkocHJvZHVjdC5wcmljZSwgdHJ1ZSwgdHJ1ZSkpICsgXCIgXCIgKyBfdG9EaXNwbGF5U3RyaW5nKHByb2R1Y3QucHJpY2VCYXNpcyksIDEgLyogVEVYVCAqLykpXG4gICAgICAgICAgICAgICAgICAgICAgOiAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKF9GcmFnbWVudCwgeyBrZXk6IDIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZHVjdC5wcmljZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChfb3BlbkJsb2NrKCksIF9jcmVhdGVFbGVtZW50QmxvY2soX0ZyYWdtZW50LCB7IGtleTogMCB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJzbWFsbFwiLCBudWxsLCBcIkZyb20gXCIgKyBfdG9EaXNwbGF5U3RyaW5nKF91bnJlZihmb3JtYXRBbW91bnQpKHByb2R1Y3QucHJpY2UsIHRydWUsIHRydWUpKSArIFwiIFwiICsgX3RvRGlzcGxheVN0cmluZyhwcm9kdWN0LnByaWNlQmFzaXMpLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwicFwiLCBudWxsLCBfdG9EaXNwbGF5U3RyaW5nKHByb2R1Y3QucHJpY2VNZXNzYWdlKSwgMSAvKiBURVhUICovKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgNjQgLyogU1RBQkxFX0ZSQUdNRU5UICovKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChfb3BlbkJsb2NrKCksIF9jcmVhdGVFbGVtZW50QmxvY2soXCJzbWFsbFwiLCBfaG9pc3RlZF84MCwgX3RvRGlzcGxheVN0cmluZyhwcm9kdWN0LnByaWNlTWVzc2FnZSksIDEgLyogVEVYVCAqLykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZHVjdC5wcmljZURpc2NsYWltZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoX29wZW5CbG9jaygpLCBfY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsIF9ob2lzdGVkXzgxLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ob2lzdGVkXzgyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCBudWxsLCBfdG9EaXNwbGF5U3RyaW5nKHByb2R1Y3QucHJpY2VEaXNjbGFpbWVyKSwgMSAvKiBURVhUICovKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgNjQgLyogU1RBQkxFX0ZSQUdNRU5UICovKSksXG4gICAgICAgICAgICAgICAgICAgIF9jcmVhdGVFbGVtZW50Vk5vZGUoXCJwXCIsIF9ob2lzdGVkXzgzLCBfdG9EaXNwbGF5U3RyaW5nKHByb2R1Y3QuYmFzZWRPbiksIDEgLyogVEVYVCAqLylcbiAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgIDogX2NyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSlcbiAgICAgICAgICBdKVxuICAgICAgICBdLCAxMiAvKiBTVFlMRSwgUFJPUFMgKi8sIF9ob2lzdGVkXzYzKSlcbiAgICAgIH0pLCAyNTYgLyogVU5LRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgXSlcbiAgXSkpXG59XG59XG5cbn0pIiwiaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9jYXJkLWZpbHRlcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vY2FyZC1maWx0ZXJzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuY29uc3QgX19leHBvcnRzX18gPSBzY3JpcHQ7XG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiPHRlbXBsYXRlPlxyXG4gICAgPGRpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW1lbnVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1tZW51X190eXBlXCIgaWQ9XCJzZWFyY2gtZmlsdGVyLXRhZ3NcIiB2LW9uOmNsaWNrLnN0b3A9XCJlbWl0KCd1cGRhdGU6bW9iaWxlLWZpbHRlcnMnLCAhbW9iaWxlRmlsdGVycylcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbD5GSUxURVI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidGFnc1wiIHYtYmluZDpjbGFzcz1cInsnYWN0aXZlJzogbW9iaWxlRmlsdGVyc31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2x
2hc3M9XCJmaWx0ZXItdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyB2LW9uOmNsaWNrLnN0b3A9XCJlbWl0KCd1cGRhdGU6bW9iaWxlLWZpbHRlcnMnLCAhbW9iaWxlRmlsdGVycylcIiBjbGFzcz1cImZpbHRlci1jbG9zZVwiIHNyYz1cIi9pbWFnZXMvaWNvbnMvY2FuY2VsLnN2Z1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5GaWx0ZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIDpjbGFzcz1cInsnYWN0aXZlJzogZGVzdGluYXRpb25GaWx0ZXJBY3RpdmV9XCIgdi1vbjpjbGljay5zdG9wPVwic2hvd0Rlc3RpbmF0aW9uRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVnaW9ucyA8aW1nIHNyYz1cIi9pbWFnZXMvaWNvbnMvY2hldnJvbi1kb3duLWJsYWNrLnN2Z1wiIGFsdD1cImNoZXZyb24gZG93blwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB2LWZvcj1cImRlc3QgaW4gYXZhaWxhYmxlRmlsdGVyRGVzdGluYXRpb25cIiB2LW9uOmNsaWNrLnN0b3A9XCJhZGREZXN0aW5hdGlvbkZpbHRlcihkZXN0Lm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkZXN0Lm5hbWV9fTxzcGFuPih7e2Rlc3QuY291bnR9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IDpuYW1lPVwiZGVzdC5uYW1lXCIgOnZhbHVlPVwiZGVzdC5uYW1lXCIgdHlwZT1cImNoZWNrYm94XCIgdi1tb2RlbD1cImRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgOmNsYXNzPVwieydhY3RpdmUnOiBob2xpZGF5VHlwZUZpbHRlckFjdGl2ZX1cIiB2LW9uOmNsaWNrLnN0b3A9XCJzaG93SG9saWRheVR5cGVGaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUeXBlPGltZyBzcmM9XCIvaW1hZ2VzL2ljb25zL2NoZXZyb24tZG93bi1ibGFjay5zdmdcIiBhbHQ9XCJjaGV2cm9uIGRvd25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdi1mb3I9XCJkZXN0IGluIGF2YWlsYWJsZUZpbHRlckhvbGlkYXlUeXBlXCIgdi1vbjpjbGljay5zdG9wPVwiYWRkSG9saWRheVR5cGVGaWx0ZXIoZGVzdC5uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzdC5uYW1lfX08c3Bhbj4oe3tkZXN0LmNvdW50fX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCA6bmFtZT1cImRlc3QubmFtZVwiIDp2YWx1ZT1cImRlc3QubmFtZVwiIHR5cGU9XCJjaGVja2JveFwiIHYtbW9kZWw9XCJob2xpZGF5VHlwZUZpbHRlclZhbHVlc1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIDpjbGFzcz1cInsnYWN0aXZlJzogcmF0aW5nRmlsdGVyQWN0aXZlfVwiIHYtb246Y2xpY2suc3RvcD1cInNob3dSYXRpbmdGaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSYXRpbmcgPGltZyBzcmM9XCIvaW1hZ2VzL2ljb25zL2NoZXZyb24tZG93bi1ibGFjay5zdmdcIiBhbHQ9XCJjaGV2cm9uIGRvd25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdi1mb3I9XCJkZXN0IGluIGF2YWlsYWJsZUZpbHRlclJhdGluZ1wiIHYtb246Y2xpY2suc3RvcD1cImFkZFJhdGluZ0ZpbHRlcihkZXN0Lm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkZXN0Lm5hbWV9fTxzcGFuPih7e2Rlc3QuY291bnR9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IDpuYW1lPVwiZGVzdC5uYW1lXCIgOnZhbHVlPVwiZGVzdC5uYW1lXCIgdHlwZT1cImNoZWNrYm94XCIgdi1tb2RlbD1cInJhdGluZ0ZpbHRlclZhbHVlc1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHYtaWY9XCIhIWF2YWlsYWJsZUZpbHRlckZhY2lsaXRpZXM/Lmxlbmd0aFwiIDpjbGFzcz1cInsnYWN0aXZlJzogZmFjaWxpdGllc0ZpbHRlckFjdGl2ZX1cIiB2LW9uOmNsaWNrLnN0b3A9XCJzaG93RmFjaWxpdGllc0ZpbHRlcigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEZhY2lsaXRpZXMgPGltZyBzcmM9XCIvaW1hZ2VzL2ljb25zL2NoZXZyb24tZG93bi1ibGFjay5zdmdcIiBhbHQ9XCJjaGV2cm9uIGRvd25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdi1mb3I9XCJkZXN0IGluIGF2YWlsYWJsZUZpbHRlckZhY2lsaXRpZXNcIiB2LW9uOmNsaWNrLnN0b3A9XCJhZGRGYWNpbGl0aWVzRmlsdGVyKGRlc3QubmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rlc3QubmFtZX19PHNwYW4+KHt7ZGVzdC5jb3VudH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgOm5hbWU9XCJkZXN0Lm5hbWVcIiA6dmFsdWU9XCJkZXN0Lm5hbWVcIiB0eXBlPVwiY2hlY2tib3hcIiB2LW1vZGVsPVwiZmFjaWxpdGllc0ZpbHRlclZhbHVlc1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHYtaWY9XCJhdmFpbGFibGVGaWx0ZXJQcmljZXM/LnNvbWUocCA9PiBwPjEpXCIgOmNsYXNzPVwieydhY3RpdmUnOiBwcmljZUZpbHRlckFjdGl2ZX1cIiB2LW9uOmNsaWNrLnN0b3A9XCJzaG93UHJpY2VGaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQcmljZTxpbWcgc3JjPVwiL2ltYWdlcy9pY29ucy9jaGV2cm9uLWRvd24tYmxhY2suc3ZnXCIgYWx0PVwiY2hldnJvbiBkb3duXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGlkPVwicHJpY2UtZHJvcGRvd25cIiB2LW9uOmNsaWNrLnN0b3A9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48cHJpY2UtcmFuZ2Utc2xpZGVyIHYtYmluZDpwcmljZXM9XCJhdmFpbGFibGVGaWx0ZXJQcmljZXNcIiB2LW1vZGVsOm1pbj1cInByaWNlTWluRmlsdGVyVmFsdWVcIiB2LW1vZGVsOm1heD1cInByaWNlTWF4RmlsdGVyVmFsdWVcIiB2LW1vZGVsOmFjdGl2ZT1cInByaWNlRmlsdGVyQWN0aXZlXCIgLz48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItbWVudV9fdHlwZVwiIGlkPVwic2VhcmNoLXNvcnQtYnlcIiB2LW9uOmNsaWNrLnN0b3A9XCJlbWl0KCd1cGRhdGU6c29ydC1hY3RpdmUnLCAhc29ydEFjdGl2ZSlcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbD5TT1JUIEJZPGltZyBzcmM9XCIvaW1hZ2VzL2ljb25zL2NoZXZyb24tZG93bi1ibGFjay5zdmdcIiAvPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJzb3J0LWJ5XCIgdi1iaW5kOmNsYXNzPVwieydhY3RpdmUnOiBzb3J0QWN0aXZlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImZpbHRlci10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtb246Y2xpY2suc3RvcD1cImVtaXQoJ3VwZGF0ZTpzb3J0LWFjdGl2ZScsICFzb3J0QWN0aXZlKVwiIGNsYXNzPVwiZmlsdGVyLWNsb3NlXCIgc3JjPVwiL2ltYWdlcy9pY29ucy9jYW5jZWwuc3ZnXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlNvcnQgYnk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIDpjbGFzcz1cInsnYWN0aXZlJzogc29ydE
2FjdGl2ZX1cIiB2LW9uOmNsaWNrLnN0b3A9XCJlbWl0KCd1cGRhdGU6c29ydC1hY3RpdmUnLCAhc29ydEFjdGl2ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucyB2LWh0bWw9XCJzb3J0TmFtZVwiPjwvaW5zPiA8aW1nIHNyYz1cIi9pbWFnZXMvaWNvbnMvY2hldnJvbi1kb3duLWJsYWNrLnN2Z1wiIGFsdD1cImNoZXZyb24gZG93blwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5LdW9uaSByZWNvbW1lbmRlZDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiB2LW9uOmNsaWNrLnN0b3A9XCJzZXRTb3J0KCdrcicpXCIgdi1iaW5kOmNoZWNrZWQ9XCJpc1NvcnQoJ2tyJylcIiAvPjxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjwvZGl2PjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+TmFtZSA8c3Bhbj4oQS1aKTwvc3Bhbj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdi1vbjpjbGljay5zdG9wPVwic2V0U29ydCgnbi1heicpXCIgdi1iaW5kOmNoZWNrZWQ9XCJpc1NvcnQoJ24tYXonKVwiIC8+PGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PC9kaXY+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5SYXRpbmcgPHNwYW4+KEhpZ2ggdG8gTG93KTwvc3Bhbj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdi1vbjpjbGljay5zdG9wPVwic2V0U29ydCgnci1obCcpXCIgdi1iaW5kOmNoZWNrZWQ9XCJpc1NvcnQoJ3ItaGwnKVwiIC8+PGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PC9kaXY+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5SYXRpbmcgPHNwYW4+KExvdyB0byBIaWdoKTwvc3Bhbj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdi1vbjpjbGljay5zdG9wPVwic2V0U29ydCgnci1saCcpXCIgdi1iaW5kOmNoZWNrZWQ9XCJpc1NvcnQoJ3ItbGgnKVwiIC8+PGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PC9kaXY+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5QcmljZSA8c3Bhbj4oSGlnaCB0byBMb3cpPC9zcGFuPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiB2LW9uOmNsaWNrLnN0b3A9XCJzZXRTb3J0KCdwLWhsJylcIiB2LWJpbmQ6Y2hlY2tlZD1cImlzU29ydCgncC1obCcpXCIgLz48ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48L2Rpdj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlByaWNlIDxzcGFuPihMb3cgdG8gSGlnaCk8L3NwYW4+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHYtb246Y2xpY2suc3RvcD1cInNldFNvcnQoJ3AtbGgnKVwiIHYtYmluZDpjaGVja2VkPVwiaXNTb3J0KCdwLWxoJylcIiAvPjxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjwvZGl2PjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPHVsIGNsYXNzPVwiZmlsdGVyLW1lbnUtdGFnc1wiIHYtaWY9XCJhbnlGaWx0ZXJzIHx8IHByaWNlTWluRmlsdGVyVmFsdWUgPiAoYXZhaWxhYmxlTWluUHJpY2UrMSkgfHwgcHJpY2VNYXhGaWx0ZXJWYWx1ZSA8IChhdmFpbGFibGVNYXhQcmljZS0xKVwiPlxyXG4gICAgICAgICAgICA8bGkgdi1mb3I9XCJmaWx0ZXIgaW4gZGVzdGluYXRpb25GaWx0ZXJWYWx1ZXNcIj57e2ZpbHRlcn19PGltZyB2LW9uOmNsaWNrPVwicmVtb3ZlRGVzdGluYXRpb25GaWx0ZXIoZmlsdGVyKVwiIGNsYXNzPVwiZmlsdGVyLWNsb3NlXCIgc3JjPVwiL2ltYWdlcy9pY29ucy9jYW5jZWwuc3ZnXCI+PC9saT5cclxuICAgICAgICAgICAgPGxpIHYtZm9yPVwiZmlsdGVyIGluIGhvbGlkYXlUeXBlRmlsdGVyVmFsdWVzXCI+e3tmaWx0ZXJ9fTxpbWcgdi1vbjpjbGljaz1cInJlbW92ZUhvbGlkYXlUeXBlRmlsdGVyKGZpbHRlcilcIiBjbGFzcz1cImZpbHRlci1jbG9zZVwiIHNyYz1cIi9pbWFnZXMvaWNvbnMvY2FuY2VsLnN2Z1wiPjwvbGk+XHJcbiAgICAgICAgICAgIDxsaSB2LWZvcj1cImZpbHRlciBpbiByYXRpbmdGaWx0ZXJWYWx1ZXNcIj57e2ZpbHRlcn19PGltZyB2LW9uOmNsaWNrPVwicmVtb3ZlUmF0aW5nRmlsdGVyKGZpbHRlcilcIiBjbGFzcz1cImZpbHRlci1jbG9zZVwiIHNyYz1cIi9pbWFnZXMvaWNvbnMvY2FuY2VsLnN2Z1wiPjwvbGk+XHJcbiAgICAgICAgICAgIDxsaSB2LWZvcj1cImZpbHRlciBpbiBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzXCI+e3tmaWx0ZXJ9fTxpbWcgdi1vbjpjbGljaz1cInJlbW92ZUZhY2lsaXRpZXNGaWx0ZXIoZmlsdGVyKVwiIGNsYXNzPVwiZmlsdGVyLWNsb3NlXCIgc3JjPVwiL2ltYWdlcy9pY29ucy9jYW5jZWwuc3ZnXCI+PC9saT5cclxuICAgICAgICAgICAgPGxpIHYtaWY9XCJwcmljZU1pbkZpbHRlclZhbHVlID4gYXZhaWxhYmxlTWluUHJpY2UgfHwgcHJpY2VNYXhGaWx0ZXJWYWx1ZSA8IGF2YWlsYWJsZU1heFByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICBQcmljZToge3tmb3JtYXRBbW91bnQocHJpY2VNaW5GaWx0ZXJWYWx1ZSwgdHJ1ZSwgdHJ1ZSl9fSAtIHt7Zm9ybWF0QW1vdW50KHByaWNlTWF4RmlsdGVyVmFsdWUsIHRydWUsIHRydWUpf
2X1cclxuICAgICAgICAgICAgICAgIDxpbWcgdi1vbjpjbGljaz1cImNsZWFyUHJpY2VGaWx0ZXJcIiBjbGFzcz1cImZpbHRlci1jbG9zZVwiIHNyYz1cIi9pbWFnZXMvaWNvbnMvY2FuY2VsLnN2Z1wiPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgdi1vbjpjbGljaz1cImNsZWFyQWxsRmlsdGVyc1wiIGNsYXNzPVwiY2xlYXJcIj5DbGVhciBhbGw8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRzLWdyaWQgb3VyLXBpY2tzXCIgZGF0YS1ub3NuaXBwZXQ+XHJcbiAgICAgICAgICAgIDxhIHYtZm9yPVwicHJvZHVjdCBpbiBzb3J0ZWRDYXJkc1wiIDpocmVmPVwicHJvZHVjdC5jYXJkTGlua1wiIGNsYXNzPVwic3dpcGVyLXNsaWRlIG91ci1waWNrLWNhcmRcIiA6c3R5bGU9XCJ7b3JkZXI6IHByb2R1Y3Qub3JkZXJ9XCJcclxuICAgICAgICAgICAgdi1iaW5kOnRhcmdldD1cInByb2R1Y3QuY2FyZExpbmtUYXJnZXRCbGFuaz8gJ19ibGFuaycgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICA6ZGF0YS1wb3B1cC1jb250ZW50PVwicHJvZHVjdC5jYXJkTGlua0NvbnRlbnRQb3B1cElkXCJcclxuICAgICAgICAgICAgOmRhdGEtZGVzdGluYXRpb25GaWx0ZXI9XCJwcm9kdWN0LmRlc3RpbmF0aW9uXCJcclxuICAgICAgICAgICAgOmRhdGEtZGVwYXJ0aW5nRmlsdGVyPVwicHJvZHVjdC5kZXBhcnRpbmdcIlxyXG4gICAgICAgICAgICA6ZGF0YS1ob2xpZGF5VHlwZUZpbHRlcj1cInByb2R1Y3QuaG9saWRheVR5cGVcIlxyXG4gICAgICAgICAgICA6ZGF0YS1ib2FyZEJhc2lzRmlsdGVyPVwicHJvZHVjdC5ib2FyZEJhc2lzXCJcclxuICAgICAgICAgICAgOmRhdGEtZmFjaWxpdGllc0ZpbHRlcj1cInByb2R1Y3QuZmFjaWxpdGllc1wiXHJcbiAgICAgICAgICAgIDpkYXRhLXJlY29tbWVuZGVkPVwicHJvZHVjdC5wcmlvcml0eVwiXHJcbiAgICAgICAgICAgIDpkYXRhLXByaWNlPVwicHJvZHVjdC5wcmljZSB8fCA5OTk5OTk5OTk5OVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91ci1waWNrLWNhcmRfX2ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ1wiIHYtaWY9XCIhIXByb2R1Y3QudGFnSWNvbiAmJiAhIXByb2R1Y3QudGFnSWNvbi5pbWFnZUFsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3twcm9kdWN0LnRhZ0ljb24/LmltYWdlQWx0fX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cInByb2R1Y3QuaW1hZ2U/LmltYWdlU3JjXCIgOmFsdD1cInByb2R1Y3QuaW1hZ2U/LmltYWdlQWx0XCIgOnRpdGxlPVwicHJvZHVjdC5pbWFnZT8uaW1hZ2VBbHRcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXItcGljay1jYXJkX19jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgdi1mb3I9XCJ0YWcgaW4gcHJvZHVjdC5jYXJkVGFnc1wiPnt7dGFnfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7cHJvZHVjdC50aXRsZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8cD57e3Byb2R1Y3QuZGVzY3JpcHRpb259fTwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwicHJvZHVjdC5zaG93V2hhdHNJbmNsdWRlZFwiIGNsYXNzPVwid2hhdHMtaW5jbHVkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIHYtaWY9XCJwcm9kdWN0LmRlcGFydGluZ1wiPkhlcmUncyB3aGF0J3MgaW5jbHVkZWQ8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgdi1lbHNlPlByaWNlIGJhc2VkIG9uOjwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Byb2R1Y3QubmlnaHRzfX0gbmlnaHRzIGZyb20gPHN0cm9uZz57e2Zvcm1hdEFtb3VudChwcm9kdWN0LnByaWNlLCB0cnVlLCB0cnVlKX19IHAvcDwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Byb2R1Y3QuYmFzZWRPbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cHJvZHVjdC5ib2FyZEJhc2lzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInByb2R1Y3QuZGVwYXJ0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlJldHVybiBmbGlnaHRzIGZyb20ge3sgcHJvZHVjdC5kZXBhcnRpbmcgfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB2LWlmPVwicHJvZHVjdC50cmFuc2ZlcnNJbmNsdWRlZFwiPlRyYW5zZmVycyBpbmNsdWRlZDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+RmxpZ2h0c3t7IHByb2R1Y3QudHJhbnNmZXJzSW5jbHVkZWQgPyAnICYgdHJhbnNmZXJzJyA6ICcnIH19IGluY2x1ZGVkPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVsIG9uIHt7cHJvZHVjdC5mb3JtYXR0ZWREZXBhcnR1cmVEYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29rLWJ0blwiPnt7cHJvZHVjdC5idXR0b25UZXh0fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHAgdi1pZj1cInByb2R1Y3QuYWRkaXRpb25hbExpbmUxICYmICFwcm9kdWN0LnNob3dXaGF0c0luY2x1ZGVkXCIgY2xhc3M9XCJzbWFsbC10ZXh0XCI+e3twcm9kdWN0LmFkZGl0aW9uYWxMaW5lMX19PC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCIhcHJvZHVjdC5vZmZlciAmJiAhIXByb2R1Y3QucHJpY2UgJiYgIXByb2R1Y3Quc2hvd1doYXRzSW5jbHVkZWRcIiBjbGFzcz1cIm9jY2FzaW9uLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+RnJvbSB7e2Zvcm1hdEFtb3VudChwcm9kdWN0LnByaWNlLCB0cnVlLCB0cnVlKX19IHAvcDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyB2LWlmPVwicHJvZHVjdC5jdGFJbWFnZVwiIDpzcmM9XCJwcm9k
2dWN0LmN0YUltYWdlLmltYWdlU3JjXCIgOmFsdD1cInByb2R1Y3QuY3RhSW1hZ2UuY3RhQWx0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZS1pZj1cIiEhcHJvZHVjdC5vZmZlclwiIGNsYXNzPVwib2ZmZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7cHJvZHVjdC5vZmZlcn19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgdi1pZj1cInByb2R1Y3Quc2F2aW5nVGV4dFwiPnt7cHJvZHVjdC5zYXZpbmdUZXh0fX08L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgdi1pZj1cInByb2R1Y3Qud2FzUHJpY2UgJiYgcHJvZHVjdC5wcmljZVwiPnt7Zm9ybWF0QW1vdW50KHByb2R1Y3QucHJpY2UsIHRydWUsIHRydWUpfX0ge3twcm9kdWN0LnByaWNlQmFzaXN9fTwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInByb2R1Y3QucHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+RnJvbSB7e2Zvcm1hdEFtb3VudChwcm9kdWN0LnByaWNlLCB0cnVlLCB0cnVlKX19IHt7cHJvZHVjdC5wcmljZUJhc2lzfX08L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7cHJvZHVjdC5wcmljZU1lc3NhZ2V9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgdi1lbHNlPnt7cHJvZHVjdC5wcmljZU1lc3NhZ2V9fTwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJwcm9kdWN0LnByaWNlRGlzY2xhaW1lclwiIGNsYXNzPVwib2ZmZXItcHJpY2UtZGlzY2xhaW1lclwiPjxpbWcgc3JjPVwiL2ltYWdlcy9pY29ucy9pbmZvLnN2Z1wiIC8+PHNwYW4+e3twcm9kdWN0LnByaWNlRGlzY2xhaW1lcn19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImJhc2VkLW9uXCI+e3twcm9kdWN0LmJhc2VkT259fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbiAgICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCBkZWZpbmVBc3luY0NvbXBvbmVudCwgd2F0Y2ggfSBmcm9tICd2dWUnO1xyXG4gICAgaW1wb3J0IHsgZm9ybWF0QW1vdW50IH0gZnJvbSAnLi4vLi4vU2NyaXB0cy91dGlscyc7XHJcblxyXG4gICAgY29uc3QgcHJpY2VSYW5nZVNsaWRlciA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IGltcG9ydChcIi4vUHJpY2VSYW5nZVNsaWRlci52dWVcIikpO1xyXG5cclxuICAgIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoeyBcclxuICAgICAgICBjYXJkczogT2JqZWN0LFxyXG4gICAgICAgIG1vYmlsZUZpbHRlcnM6IEJvb2xlYW4sXHJcbiAgICAgICAgc29ydEFjdGl2ZTogQm9vbGVhbixcclxuICAgICAgICBpbml0aWFsRmlsdGVyU3RhdGU6IHtcclxuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICAgICAgICBkZWZhdWx0OiAoKSA9PiAoe30pXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsndXBkYXRlOm1vYmlsZS1maWx0ZXJzJywndXBkYXRlOnNvcnQtYWN0aXZlJywnZmlsdGVycy1jaGFuZ2VkJ10pO1xyXG5cclxuICAgIGNvbnN0IGluaXRpYWxpc2VkID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGRlc3RpbmF0aW9uRmlsdGVyQWN0aXZlID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGNsYXNzaWZpY2F0aW9uRmlsdGVyQWN0aXZlID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgaW50ZXJlc3RGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgZmVhdHVyZUZpbHRlckFjdGl2ZSA9IHJlZihmYWxzZSk7XHJcbiAgICBjb25zdCBhdXRob3JGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgcmF0aW5nRmlsdGVyQWN0aXZlID0gcmVmKGZhbHNlKTtcclxuICAgIGNvbnN0IGZhY2lsaXRpZXNGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3QgcHJpY2VGaWx0ZXJBY3RpdmUgPSByZWYoZmFsc2UpO1xyXG4gICAgY29uc3Qgc29ydE5hbWUgPSByZWYoJ0t1b25pIHJlY29tbWVuZGVkJyk7XHJcbiAgICBjb25zdCBkZXN0aW5hdGlvbkZpbHRlclZhbHVlcyA9IHJlZihbXSk7XHJcbiAgICBjb25zdCBob2xpZGF5VHlwZUZpbHRlclZhbHVlcyA9IHJlZihbXSk7XHJcbiAgICBjb25zdCByYXRpbmdGaWx0ZXJWYWx1ZXMgPSByZWYoW10pO1xyXG4gICAgY29uc3QgZmFjaWxpdGllc0ZpbHRlclZhbHVlcyA9IHJlZihbXSk7XHJcbiAgICBjb25zdCBwcmljZU1pbkZpbHRlclZhbHVlID0gcmVmKDApO1xyXG4gICAgY29uc3QgcHJpY2VNYXhGaWx0ZXJWYWx1ZSA9IHJlZig5OTk5OTk5OTk5OSk7XHJcbiAgICBjb25zdCBzb3J0T3JkZXIgPSByZWYoJ2tyJyk7XHJcblxyXG4gICAgLy8gS2V5IG1hcHBpbmcgZm9yIGNvbXBhY3QgPC0+IGZ1bGwgcHJvcGVydHkgbmFtZXNcclxuICAgIGNvbnN0IGtleU1hcCA9IHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogJ2QnLFxyXG4gICAgICAgIGhvbGlkYXlUeXBlOiAnaCcsXHJcbiAgICAgICAgcmF0aW5nOiAncicsXHJcbiAgICAgICAgZmFjaWxpdGllczogJ2YnLFxyXG4gICAgICAgI
2HByaWNlOiAncCcsXHJcbiAgICAgICAgdGFiOiAndCdcclxuICAgIH07XHJcblxyXG4gICAgLy8gQWx3YXlzIGV4cGVjdCBjb21wYWN0IGtleXMgaW4gaW5pdGlhbEZpbHRlclN0YXRlXHJcbiAgICBpZiAocHJvcHMuaW5pdGlhbEZpbHRlclN0YXRlKSB7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBwcm9wcy5pbml0aWFsRmlsdGVyU3RhdGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcblxyXG4gICAgICAgIC8vIE5vcm1hbGlzZSBwb3NzaWJseSBzY2FsYXIgdmFsdWVzIChlLmcuLCBhIHNpbmdsZSBzdHJpbmcpIHRvIGFycmF5cyB0byBhdm9pZCBzcHJlYWQgZXJyb3JzXHJcbiAgICAgICAgY29uc3QgdG9BcnJheSA9ICh2OiB1bmtub3duKSA9PiBBcnJheS5pc0FycmF5KHYpID8gdiBhcyBhbnlbXSA6ICh2ID09IG51bGwgfHwgdiA9PT0gJycgPyBbXSA6IFt2XSk7XHJcblxyXG4gICAgICAgIGlmIChzdGF0ZVtrZXlNYXAuZGVzdGluYXRpb25dICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlID0gWy4uLnRvQXJyYXkoc3RhdGVba2V5TWFwLmRlc3RpbmF0aW9uXSldO1xyXG5cclxuICAgICAgICBpZiAoc3RhdGVba2V5TWFwLmhvbGlkYXlUeXBlXSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICBob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZSA9IFsuLi50b0FycmF5KHN0YXRlW2tleU1hcC5ob2xpZGF5VHlwZV0pXTtcclxuXHJcbiAgICAgICAgaWYgKHN0YXRlW2tleU1hcC5yYXRpbmddICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHJhdGluZ0ZpbHRlclZhbHVlcy52YWx1ZSA9IFsuLi50b0FycmF5KHN0YXRlW2tleU1hcC5yYXRpbmddKV07XHJcblxyXG4gICAgICAgIGlmIChzdGF0ZVtrZXlNYXAuZmFjaWxpdGllc10gIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgZmFjaWxpdGllc0ZpbHRlclZhbHVlcy52YWx1ZSA9IFsuLi50b0FycmF5KHN0YXRlW2tleU1hcC5mYWNpbGl0aWVzXSldO1xyXG5cclxuICAgICAgICAvLyBQcmljZSByYW5nZSBbbWluLCBtYXhdIGlmIHByb3ZpZGVkIGFzIGFuIGFycmF5XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3RhdGVba2V5TWFwLnByaWNlXSkgJiYgKHN0YXRlW2tleU1hcC5wcmljZV0gYXMgYW55W10pLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gc3RhdGVba2V5TWFwLnByaWNlXSBhcyBhbnlbXTtcclxuICAgICAgICAgICAgcHJpY2VNaW5GaWx0ZXJWYWx1ZS52YWx1ZSA9IE51bWJlcihtaW4pIHx8IDA7XHJcbiAgICAgICAgICAgIHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWUgPSBOdW1iZXIobWF4KSB8fCA5OTk5OTk5OTk5OTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGluaXRpYWxpc2VkLnZhbHVlID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaW5pdGlhbGlzZWQudmFsdWUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdhdGNoIGZvciBwcm9wcy5jYXJkcyBjaGFuZ2VzIGFuZCByZXNldCBpbml0aWFsaXNlZCB0byBmYWxzZVxyXG4gICAgd2F0Y2goKCkgPT4gcHJvcHMuY2FyZHMsICgpID0+IHtcclxuICAgICAgICBpbml0aWFsaXNlZC52YWx1ZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgd2F0Y2goW1xyXG4gICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLFxyXG4gICAgICAgIGhvbGlkYXlUeXBlRmlsdGVyVmFsdWVzLFxyXG4gICAgICAgIHJhdGluZ0ZpbHRlclZhbHVlcyxcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLFxyXG4gICAgICAgIHByaWNlTWluRmlsdGVyVmFsdWUsXHJcbiAgICAgICAgcHJpY2VNYXhGaWx0ZXJWYWx1ZVxyXG4gICAgXSwgKCkgPT4ge1xyXG4gICAgICAgIGlmICghaW5pdGlhbGlzZWQudmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgLy8gd2UgZG9udCB3YW50IHRoZSBmaWx0ZXJzIHRvIGNoYW5nZSB3aGVuIHdlIGxvYWQgaW4gZGlmZmVyZW50IHByb2R1Y3QsIHdlIG9ubHkgd2FudCB0aGVtIHRvIGNoYW5nZSBpZiBhIHVzZXIgaGFzIG1hbmlwdWxhdGVkIHRoZW1cclxuICAgICAgICBsZXQgbWluID0gcHJpY2VNaW5GaWx0ZXJWYWx1ZS52YWx1ZSA9PSBwcmljZU1pbkZpbHRlclZhbHVlLnZhbHVlID8gMCA6IHByaWNlTWluRmlsdGVyVmFsdWUudmFsdWU7XHJcbiAgICAgICAgbGV0IG1heCA9IHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWUgPT0gcHJpY2VNYXhGaWx0ZXJWYWx1ZS52YWx1ZSA/IDAgOiBwcmljZU1heEZpbHRlclZhbHVlLnZhbHVlO1xyXG5cclxuICAgICAgICBlbWl0KCdmaWx0ZXJzLWNoYW5nZWQnLCB7XHJcbiAgICAgICAgICAgIFtrZXlNYXAuZGVzdGluYXRpb25dOiBkZXN0aW5
2hdGlvbkZpbHRlclZhbHVlcy52YWx1ZSxcclxuICAgICAgICAgICAgW2tleU1hcC5ob2xpZGF5VHlwZV06IGhvbGlkYXlUeXBlRmlsdGVyVmFsdWVzLnZhbHVlLFxyXG4gICAgICAgICAgICBba2V5TWFwLnJhdGluZ106IHJhdGluZ0ZpbHRlclZhbHVlcy52YWx1ZSxcclxuICAgICAgICAgICAgW2tleU1hcC5mYWNpbGl0aWVzXTogZmFjaWxpdGllc0ZpbHRlclZhbHVlcy52YWx1ZSxcclxuICAgICAgICAgICAgW2tleU1hcC5wcmljZV06IFttaW4sIG1heF1cclxuICAgICAgICB9KTtcclxuICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcclxuXHJcbiAgICBjb25zdCBhdmFpbGFibGVGaWx0ZXJEZXN0aW5hdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gZ3JvdXBBbmRDb3VudChwcm9wcy5jYXJkcy5tYXAoYSA9PiBhLmRlc3RpbmF0aW9uKS5zb3J0KCkpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBhdmFpbGFibGVGaWx0ZXJIb2xpZGF5VHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gZ3JvdXBBbmRDb3VudChwcm9wcy5jYXJkcy5mbGF0TWFwKGEgPT4gYS5ob2xpZGF5VHlwZXMpLnNvcnQoKSk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGF2YWlsYWJsZUZpbHRlclJhdGluZyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gZ3JvdXBBbmRDb3VudChwcm9wcy5jYXJkcy5tYXAoYSA9PiBhLnJhdGluZykuc29ydCgpKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYXZhaWxhYmxlRmlsdGVyRmFjaWxpdGllcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gZ3JvdXBBbmRDb3VudChwcm9wcy5jYXJkcy5mbGF0TWFwKGEgPT4gYS5mYWNpbGl0aWVzKS5zb3J0KCkpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBhdmFpbGFibGVGaWx0ZXJQcmljZXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLmNhcmRzLm1hcChhID0+IE1hdGgucm91bmQoYS5wcmljZSkpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBhdmFpbGFibGVNaW5QcmljZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBsZXQgYXYgPSBhdmFpbGFibGVGaWx0ZXJQcmljZXMudmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIGF2LnNvcnQoKGEsIGIpID0+IGEgLSBiKVswXTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYXZhaWxhYmxlTWF4UHJpY2UgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgbGV0IGF2ID0gYXZhaWxhYmxlRmlsdGVyUHJpY2VzLnZhbHVlO1xyXG4gICAgICAgIHJldHVybiBhdi5zb3J0KChhLCBiKSA9PiBiIC0gYSlbMF07XHJcbiAgICB9KVxyXG4gICAgY29uc3QgZmlsdGVyZWRDYXJkcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBsZXQgYXYgPSBbLi4ucHJvcHMuY2FyZHMubWFwKHggPT4geCldO1xyXG5cclxuICAgICAgICBpZiAoZGVzdGluYXRpb25GaWx0ZXJWYWx1ZXMudmFsdWUubGVuZ3RoKVxyXG4gICAgICAgICAgICBhdiA9IGF2LmZpbHRlcihwID0+IGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLmluZGV4T2YocC5kZXN0aW5
2hdGlvbikgPiAtMSk7XHJcbiAgICAgICAgaWYgKGhvbGlkYXlUeXBlRmlsdGVyVmFsdWVzLnZhbHVlLmxlbmd0aClcclxuICAgICAgICAgICAgYXYgPSBhdi5maWx0ZXIocCA9PiBob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZS5ldmVyeShmZnYgPT4gcC5ob2xpZGF5VHlwZXMuaW5kZXhPZihmZnYpICE9IC0xKSk7XHJcbiAgICAgICAgaWYgKHJhdGluZ0ZpbHRlclZhbHVlcy52YWx1ZS5sZW5ndGgpXHJcbiAgICAgICAgICAgIGF2ID0gYXYuZmlsdGVyKHAgPT4gcmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLmluZGV4T2YocC5yYXRpbmcpID4gLTEpO1xyXG4gICAgICAgIGlmIChmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLmxlbmd0aClcclxuICAgICAgICAgICAgYXYgPSBhdi5maWx0ZXIocCA9PiBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLmV2ZXJ5KGZmdiA9PiBwLmZhY2lsaXRpZXMuaW5kZXhPZihmZnYpICE9IC0xKSk7XHJcblxyXG4gICAgICAgIGF2ID0gYXYuZmlsdGVyKHAgPT4gcC5wcmljZSA+PSBwcmljZU1pbkZpbHRlclZhbHVlLnZhbHVlICYmIHAucHJpY2UgPD0gcHJpY2VNYXhGaWx0ZXJWYWx1ZS52YWx1ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBhdjtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYW55RmlsdGVycyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gWy4uLmRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLCAuLi5ob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZSwgLi4ucmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLCAuLi5mYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlXS5sZW5ndGggPiAwO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzb3J0ZWRDYXJkcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBsZXQgY2FyZHMgPSBbLi4uZmlsdGVyZWRDYXJkcy52YWx1ZV07XHJcblxyXG4gICAgICAgIC8vIFNvcnQgdGhlIGNhcmQgZGF0YVxyXG4gICAgICAgIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwia3JcIikge1xyXG4gICAgICAgICAgICBjYXJkcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYS5wcmlvcml0eSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYi5wcmlvcml0eSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGIucHJpb3JpdHkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChhLnByaW9yaXR5ID4gYi5wcmlvcml0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChiLnByaW9yaXR5ID4gYS5wcmlvcml0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJuLWF6XCIpIHtcclxuICAgICAgICAgICAgY2FyZHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGEudGl0bGUgPiBiLnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGIudGl0bGUgPiBhLnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc29ydE9yZGVyLnZhbHVlID09PSBcInItaGxcIikge1xyXG4gICAgICAgICAgICBjYXJkcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYS5yYXRpbmcgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIucmF0aW5nIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYi5yYXRpbmcgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChhLnJhdGluZyA+IGIucmF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChiLnJhdGluZyA+IGEucmF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwici1saFwiKSB7XHJcbiAgICAgICAgICAgIGNhcmRzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhLnJhdGluZyA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYi5yYXRpbmcgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChiLnJhdGluZyA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGEucmF0aW5nID4gYi5yYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgI
2H1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYi5yYXRpbmcgPiBhLnJhdGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJwLWhsXCIpIHtcclxuICAgICAgICAgICAgY2FyZHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGEucHJpY2UgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIucHJpY2UgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChiLnByaWNlIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYS5wcmljZSA+IGIucHJpY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGIucHJpY2UgPiBhLnByaWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwicC1saFwiKSB7XHJcbiAgICAgICAgICAgIGNhcmRzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhLnByaWNlIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChiLnByaWNlIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYi5wcmljZSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGEucHJpY2UgPiBiLnByaWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGIucHJpY2UgPiBhLnByaWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhcmRzLmZvckVhY2goKGMsIGkpID0+IGMub3JkZXIgPSBpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNhcmRzO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIFxyXG4gICAgZnVuY3Rpb24gc2hvd0Rlc3RpbmF0aW9uRmlsdGVyKCkge1xyXG4gICAgICAgIGhvbGlkYXlUeXBlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcmF0aW5nRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByaWNlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXBhcnR1cmVNb250aEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9ICFkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHNob3dDbGFzc2lmaWNhdGlvbkZpbHRlcigpIHtcclxuICAgICAgICBob2xpZGF5VHlwZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHJhdGluZ0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZhY2lsaXRpZXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBwcmljZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGVtaXQoXCJ1cGRhdGU6c29ydC1hY3RpdmVcIiwgZmFsc2UpO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmVhdHVyZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGF1dGhvckZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSAhY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93RGVwYXJ0dXJlTW9udGhGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5
2hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gIWRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2hvd0JvYXJkQmFzaXNGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgaW50ZXJlc3RGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmZWF0dXJlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYXV0aG9yRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZGVzdGluYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBib2FyZEJhc2lzRmlsdGVyQWN0aXZlLnZhbHVlID0gIWJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93SW50ZXJlc3RGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gIWludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2hvd0ZlYXR1cmVGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYXV0aG9yRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZGVzdGluYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBmZWF0dXJlRmlsdGVyQWN0aXZlLnZhbHVlID0gIWZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93QXV0aG9yRmlsdGVyKCkge1xyXG4gICAgICAgIGhvbGlkYXlUeXBlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcmF0aW5nRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByaWNlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXBhcnR1cmVNb250aEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGF1dGhvckZpbHRlckFjdGl2ZS52YWx1ZSA9ICFhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93SG9saWRheVR5cGVGaWx0ZXIoKSB7XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWUgPSAhaG9saWRheVR5cGVGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICAgICAgcmF0aW5nRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByaWNlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXBhcnR1cmVNb250aEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5
2hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2hvd1JhdGluZ0ZpbHRlcigpIHtcclxuICAgICAgICBob2xpZGF5VHlwZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHJhdGluZ0ZpbHRlckFjdGl2ZS52YWx1ZSA9ICFyYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByaWNlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2xhc3NpZmljYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXBhcnR1cmVNb250aEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJvYXJkQmFzaXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBpbnRlcmVzdEZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZlYXR1cmVGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBhdXRob3JGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2hvd0ZhY2lsaXRpZXNGaWx0ZXIoKSB7XHJcbiAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9ICFmYWNpbGl0aWVzRmlsdGVyQWN0aXZlLnZhbHVlO1xyXG4gICAgICAgIGhvbGlkYXlUeXBlRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcmF0aW5nRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmVhdHVyZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGF1dGhvckZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzaG93UHJpY2VGaWx0ZXIoKSB7XHJcbiAgICAgICAgcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWUgPSAhcHJpY2VGaWx0ZXJBY3RpdmUudmFsdWU7XHJcbiAgICAgICAgZW1pdChcInVwZGF0ZTpzb3J0LWFjdGl2ZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgZGVzdGluYXRpb25GaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBob2xpZGF5VHlwZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHJhdGluZ0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZhY2lsaXRpZXNGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBjbGFzc2lmaWNhdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGRlcGFydHVyZU1vbnRoRmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGludGVyZXN0RmlsdGVyQWN0aXZlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgZmVhdHVyZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGF1dGhvckZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gYWRkRGVzdGluYXRpb25GaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLmluZGV4T2YoZmlsdGVyKSAhPSAtMSlcclxuICAgICAgICAgICAgcmVtb3ZlRGVzdGluYXRpb25GaWx0ZXIoZmlsdGVyKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGFkZEhvbGlkYXlUeXBlRmlsdGVyKGZpbHRlcikge1xyXG4gICAgICAgIGlmIChob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZS
25pbmRleE9mKGZpbHRlcikgIT0gLTEpXHJcbiAgICAgICAgICAgIHJlbW92ZUhvbGlkYXlUeXBlRmlsdGVyKGZpbHRlcik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBob2xpZGF5VHlwZUZpbHRlclZhbHVlcy52YWx1ZS5wdXNoKGZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBhZGRSYXRpbmdGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgaWYgKHJhdGluZ0ZpbHRlclZhbHVlcy52YWx1ZS5pbmRleE9mKGZpbHRlcikgIT0gLTEpXHJcbiAgICAgICAgICAgIHJlbW92ZVJhdGluZ0ZpbHRlcihmaWx0ZXIpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGFkZEZhY2lsaXRpZXNGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgaWYgKGZhY2lsaXRpZXNGaWx0ZXJWYWx1ZXMudmFsdWUuaW5kZXhPZihmaWx0ZXIpICE9IC0xKVxyXG4gICAgICAgICAgICByZW1vdmVGYWNpbGl0aWVzRmlsdGVyKGZpbHRlcik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlbW92ZURlc3RpbmF0aW9uRmlsdGVyKGZpbHRlcikge1xyXG4gICAgICAgIHJlbW92ZUl0ZW1PbmNlKGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVtb3ZlSG9saWRheVR5cGVGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgcmVtb3ZlSXRlbU9uY2UoaG9saWRheVR5cGVGaWx0ZXJWYWx1ZXMudmFsdWUsIGZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiByZW1vdmVSYXRpbmdGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICAgICAgcmVtb3ZlSXRlbU9uY2UocmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVtb3ZlRmFjaWxpdGllc0ZpbHRlcihmaWx0ZXIpIHtcclxuICAgICAgICByZW1vdmVJdGVtT25jZShmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gY2xlYXJBbGxGaWx0ZXJzKCkge1xyXG4gICAgICAgIGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlID0gW107XHJcbiAgICAgICAgaG9saWRheVR5cGVGaWx0ZXJWYWx1ZXMudmFsdWUgPSBbXTtcclxuICAgICAgICByYXRpbmdGaWx0ZXJWYWx1ZXMudmFsdWUgPSBbXTtcclxuICAgICAgICBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlID0gW107XHJcbiAgICAgICAgcHJpY2VNaW5GaWx0ZXJWYWx1ZS52YWx1ZSA9IGF2YWlsYWJsZU1pblByaWNlLnZhbHVlO1xyXG4gICAgICAgIHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWUgPSBhdmFpbGFibGVNYXhQcmljZS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjbGVhclByaWNlRmlsdGVyKCkge1xyXG4gICAgICAgIHByaWNlTWluRmlsdGVyVmFsdWUudmFsdWUgPSBhdmFpbGFibGVNaW5QcmljZS52YWx1ZTtcclxuICAgICAgICBwcmljZU1heEZpbHRlclZhbHVlLnZhbHVlID0gYXZhaWxhYmxlTWF4UHJpY2UudmFsdWU7XHJcbiAgICB9XHJcbiAgICBkZWZpbmVFeHBvc2Uoe1xyXG4gICAgICAgIGNsb3NlQWxsRmlsdGVyczogKCkgPT4ge1xyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbkZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBob2xpZGF5VHlwZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICByYXRpbmdGaWx0ZXJBY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgZmFjaWxpdGllc0ZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBwcmljZUZpbHRlckFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldEN1cnJlbnRGaWx0ZXJTdGF0ZTogKCkgPT4gKHtcclxuICAgICAgICAgICAgW2tleU1hcC5kZXN0aW5hdGlvbl06IGRlc3RpbmF0aW9uRmlsdGVyVmFsdWVzLnZhbHVlLFxyXG4gICAgICAgICAgICBba2V5TWFwLmhvbGlkYXlUeXBlXTogaG9saWRheVR5cGVGaWx0ZXJWYWx1ZXMudmFsdWUsXHJcbiAgICAgICAgICAgIFtrZXlNYXAucmF0aW5nXTogcmF0aW5nRmlsdGVyVmFsdWVzLnZhbHVlLFxyXG4gICAgICAgICAgICBba2V5TWFwLmZhY2lsaXRpZXNdOiBmYWNpbGl0aWVzRmlsdGVyVmFsdWVzLnZhbHVlLFxyXG4gICAgICAgICAgICBba2V5TWFwLnByaWNlXTogW3ByaWNlTWluRmlsdGVyVmFsdWUudmFsdWUsIHByaWNlTWF4RmlsdGVyVmFsdWUudmFsdWVdXHJcbiAgICAgICAgfSlcclxuICAgIH0pO1xyXG4gICAgZnVuY3Rpb24gcmVtb3ZlSXRlbU9uY2UoYXJyLCB2YWx1ZSkge1xyXG4gICAgICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKHZhbHVlKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICBhcnIuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFycjtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHNldFNvcnQodmFsKSB7XHJcbiAgICAgICAgaWYgKCF2YWwgfHwgdHlwZW9mIHZhbCAhPT0gXCJzdHJpbmdcIiB8fCB2YWwgPT09IG51bGwgfHwgdmFsLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICBzb3J0T3JkZXIudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNvcnRPcmRlci52YWx1ZSA9IHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0U29ydE5hbWUoKTtcclxuICAgICAgICBlbWl0KFwidXBkYXRlOnNvcnQtYWN0aXZlXCIsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHNldFNvcnROYW1lKCkge1xyXG4gICAgICAgIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwia3JcIikge1xyXG4gICAgICAgICAgICBzb3J0TmFtZS52YWx1ZSA9IFwiS3VvbmkgcmVjb21tZW5kZWRcIjtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJuLWF6XCIpIHtcclxuICAgICAgICAgICAgc29ydE5hbWUudmFsdWUgPSBcIk5hbWUgPHNwYW4+KEEtWik8L3NwYW4+XCI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0T3JkZXIudmFsdWUgPT09IFwici1obFwiKSB7XHJcbiAgICAgICAgICAgI
2HNvcnROYW1lLnZhbHVlID0gXCJSYXRpbmcgPHNwYW4+KEhpZ2ggdG8gTG93KTwvc3Bhbj5cIjtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJyLWxoXCIpIHtcclxuICAgICAgICAgICAgc29ydE5hbWUudmFsdWUgPSBcIlJhdGluZyA8c3Bhbj4oTG93IHRvIEhpZ2gpPC9zcGFuPlwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc29ydE9yZGVyLnZhbHVlID09PSBcInAtaGxcIikge1xyXG4gICAgICAgICAgICBzb3J0TmFtZS52YWx1ZSA9IFwiUHJpY2UgPHNwYW4+KEhpZ2ggdG8gTG93KTwvc3Bhbj5cIjtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRPcmRlci52YWx1ZSA9PT0gXCJwLWxoXCIpIHtcclxuICAgICAgICAgICAgc29ydE5hbWUudmFsdWUgPSBcIlByaWNlIDxzcGFuPihMb3cgdG8gSGlnaCk8L3NwYW4+XCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc29ydE5hbWUudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGlzU29ydCh2YWwpIHtcclxuICAgICAgICByZXR1cm4gc29ydE9yZGVyLnZhbHVlID09PSB2YWw7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBncm91cEFuZENvdW50KGFycikge1xyXG4gICAgICAgIHJldHVybiBhcnIucmVkdWNlKChhY2MsIGN1cikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWN1cilcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgIGlmIChhY2Muc29tZShhID0+IGEubmFtZSA9PSBjdXIpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSBhY2MuZmluZChhID0+IGEubmFtZSA9PSBjdXIpO1xyXG4gICAgICAgICAgICAgICAgbWF0Y2guY291bnQrKztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFjYy5wdXNoKHsgbmFtZTogY3VyLCBjb3VudDogMSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sIFtdKVxyXG4gICAgfVxyXG5cclxuPC9zY3JpcHQ+Il0sIm5hbWVzIjpbIl9ob2lzdGVkXzEiLCJjbGFzcyIsIl9ob2lzdGVkXzIiLCJfaG9pc3RlZF8zIiwiX2hvaXN0ZWRfNCIsIl9ob2lzdGVkXzUiLCJfaG9pc3RlZF82Iiwic3JjIiwiYWx0IiwiX2hvaXN0ZWRfNyIsIl9ob2lzdGVkXzgiLCJfaG9pc3RlZF85IiwiX2hvaXN0ZWRfMTAiLCJfaG9pc3RlZF8xMSIsIl9ob2lzdGVkXzEyIiwiX2hvaXN0ZWRfMTMiLCJfaG9pc3RlZF8xNCIsIl9ob2lzdGVkXzE1IiwiX2hvaXN0ZWRfMTYiLCJfaG9pc3RlZF8xNyIsIl9ob2lzdGVkXzE4IiwiX2hvaXN0ZWRfMTkiLCJfaG9pc3RlZF8yMCIsIl9ob2lzdGVkXzIxIiwiX2hvaXN0ZWRfMjIiLCJfaG9pc3RlZF8yMyIsIl9ob2lzdGVkXzI0IiwiX2hvaXN0ZWRfMjUiLCJfaG9pc3RlZF8yNiIsIl9ob2lzdGVkXzI3IiwiX2hvaXN0ZWRfMjgiLCJfaG9pc3RlZF8yOSIsIl9ob2lzdGVkXzMwIiwiX2hvaXN0ZWRfMzEiLCJfaG9pc3RlZF8zMiIsIl9ob2lzdGVkXzMzIiwiX2hvaXN0ZWRfMzQiLCJfaG9pc3RlZF8zNSIsIl9ob2lzdGVkXzM2IiwiX2hvaXN0ZWRfMzciLCJfaG9pc3RlZF8zOCIsIl9ob2lzdGVkXzM5IiwiX2hvaXN0ZWRfNDAiLCJfaG9pc3RlZF80MSIsIl9ob2lzdGVkXzQyIiwiX2hvaXN0ZWRfNDMiLCJfaG9pc3RlZF80NCIsIl9ob2lzdGVkXzQ1IiwiX2hvaXN0ZWRfNDYiLCJfaG9pc3RlZF80NyIsIl9ob2lzdGVkXzQ4IiwiX2hvaXN0ZWRfNDkiLCJfaG9pc3RlZF81MCIsIl9ob2lzdGVkXzUxIiwiX2hvaXN0ZWRfNTIiLCJfaG9pc3RlZF81MyIsIl9ob2lzdGVkXzU0IiwiX2hvaXN0ZWRfNTUiLCJfaG9pc3RlZF81NiIsImtleSIsIl9ob2lzdGVkXzU3IiwiX2hvaXN0ZWRfNTgiLCJfaG9pc3RlZF81OSIsIl9ob2lzdGVkXzYwIiwiX2hvaXN0ZWRfNjEiLCJfaG9pc3RlZF82MiIsIl9ob2lzdGVkXzYzIiwiX2hvaXN0ZWRfNjQiLCJfaG9pc3RlZF82NSIsIl9ob2lzdGVkXzY2IiwiX2hvaXN0ZWRfNjciLCJfaG9pc3RlZF82OCIsIl9ob2lzdGVkXzY5IiwiX2hvaXN0ZWRfNzAiLCJfaG9pc3RlZF83MSIsIl9ob2lzdGVkXzcyIiwiX2hvaXN0ZWRfNzMiLCJfaG9pc3RlZF83NCIsIl9ob2lzdGVkXzc1IiwiX2hvaXN0ZWRfNzYiLCJfaG9pc3RlZF83NyIsIl9ob2lzdGVkXzc4IiwiX2hvaXN0ZWRfNzkiLCJfaG9pc3RlZF84MCIsIl9ob2lzdGVkXzgxIiwiX2hvaXN0ZWRfODIiLCJfaG9pc3RlZF84MyIsInByb3BzIiwiY2FyZHMiLCJPYmplY3QiLCJtb2JpbGVGaWx0ZXJzIiwiQm9vbGVhbiIsInNvcnRBY3RpdmUiLCJpbml0aWFsRmlsdGVyU3RhdGUiLCJ0eXBlIiwiZGVmYXVsdCIsImVtaXRzIiwic2V0dXAiLCJfX3Byb3BzIiwiZXhwb3NlIiwiZW1pdCIsInByaWNlUmFuZ2VTbGlkZXIiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsImluaXRpYWxpc2VkIiwicmVmIiwiZGVzdGluYXRpb25GaWx0ZXJBY3RpdmUiLCJkZXBhcnR1cmVNb250aEZpbHRlckFjdGl2ZSIsImNsYXNzaWZpY2F0aW9uRmlsdGVyQWN0aXZlIiwiYm9hcmRCYXNpc0ZpbHRlckFjdGl2ZSIsImludGVyZXN0RmlsdGVyQWN0aXZlIiwiZmVhdHVyZUZpbHRlckFjdGl2ZSIsImF1dGhvckZpbHRlckFjdGl2ZSIsImhvbGlkYXlUeXBlRmlsdGVyQWN0aXZlIiwicmF0aW5nRmlsdGVyQWN0aXZlIiwiZmFjaWxpdGllc0ZpbHRlckFjdGl2ZSIsInByaWNlRmlsdGVyQWN0aXZlIiwic29ydE5hbWUiLCJkZXN0aW5hdGlvbkZpbHRlclZhbHVlcyIsImhvbGlkYXlUeXBlRmlsdGVyVmFsdWVzIiwicmF0aW5nRmlsdGVyVmFsdWVzIiwiZmFjaWxpdGllc0ZpbHRlclZhbHVlcyIsInByaWNlTWluRmlsdGVyVmFsdWUiLCJwcmljZU1heEZpbHRlclZhbHVlIiwic29ydE9yZGVyIiwia2V5TWFwIiwic3RhdGUiLCJ0b0FycmF5IiwidiIsIkFycmF5IiwiaXNBcnJheSIsInVuZGVmaW5lZCIsInZhbHVlIiwibGVuZ3RoIiwibWluIiwibWF4IiwiTnVtYmVyIiwid2F0Y2giLCJkZWVwIiwiYXZhaWxhYmxlRmlsdGVyRGVzdGluYXRpb24iLCJjb21wdXRlZCIsImdyb3VwQW5kQ291bnQiLCJtYXAiLCJhIiwiZGVzdGluYXRpb24iLCJzb3J0IiwiYXZhaWxhYmxlRmlsdGVySG9saWRheVR5cGUiLCJmbGF0TWFwIiwiaG9saWRheVR5cGVzIiwiYXZhaWxhYmxlRmlsdGVyUmF0aW5nIiwicmF0aW5nIiwiYXZhaWxhYmxlRmlsdGVyRmFjaWxpdGllcyIsImZhY2lsaXRpZXMiLCJhdmFpbGFibGVGaWx0ZXJQcmljZXMiLCJNYXRoIiwicm91bmQiLCJwcmljZSIsImF2YWlsYWJsZU1pblByaWNlIiwiYiIsImF2YWlsYWJsZU1heFByaWNlIiwiZmlsdGVyZWRDYXJkcyIsImF2IiwieCIsImZpbHRlciIsInAiLCJpbmRleE9mIiwiZXZlcnkiLCJmZnYiLCJhbnlGaWx0ZXJzIiwic29ydGVkQ2FyZHMiLCJwcmlvcml0eSIsInRpdGxlIiwiZm9yRWFjaCIsImMiLCJpIiwib3JkZXIiLCJyZW1vdmVEZXN0aW5
2hdGlvbkZpbHRlciIsInJlbW92ZUl0ZW1PbmNlIiwicmVtb3ZlSG9saWRheVR5cGVGaWx0ZXIiLCJyZW1vdmVSYXRpbmdGaWx0ZXIiLCJyZW1vdmVGYWNpbGl0aWVzRmlsdGVyIiwiY2xlYXJBbGxGaWx0ZXJzIiwiY2xlYXJQcmljZUZpbHRlciIsImFyciIsImluZGV4Iiwic3BsaWNlIiwic2V0U29ydCIsInZhbCIsInRyaW0iLCJpc1NvcnQiLCJyZWR1Y2UiLCJhY2MiLCJjdXIiLCJzb21lIiwibmFtZSIsImZpbmQiLCJjb3VudCIsInB1c2giLCJjbG9zZUFsbEZpbHRlcnMiLCJnZXRDdXJyZW50RmlsdGVyU3RhdGUiLCJfY3R4IiwiX2NhY2hlIiwiaWQiLCJvbkNsaWNrIiwiJGV2ZW50IiwiZGVzdCIsInByaWNlcyIsImFjdGl2ZSIsImlubmVySFRNTCIsImNoZWNrZWQiLCJwcm9kdWN0IiwiaHJlZiIsImNhcmRMaW5rIiwic3R5bGUiLCJ0YXJnZXQiLCJjYXJkTGlua1RhcmdldEJsYW5rIiwiY2FyZExpbmtDb250ZW50UG9wdXBJZCIsImRlcGFydGluZyIsImhvbGlkYXlUeXBlIiwiYm9hcmRCYXNpcyIsInRhZ0ljb24iLCJpbWFnZUFsdCIsImltYWdlIiwiaW1hZ2VTcmMiLCJjYXJkVGFncyIsInRhZyIsImRlc2NyaXB0aW9uIiwibmlnaHRzIiwiYmFzZWRPbiIsInRyYW5zZmVyc0luY2x1ZGVkIiwiZm9ybWF0dGVkRGVwYXJ0dXJlRGF0ZSIsImJ1dHRvblRleHQiLCJhZGRpdGlvbmFsTGluZTEiLCJzaG93V2hhdHNJbmNsdWRlZCIsIm9mZmVyIiwic2F2aW5nVGV4dCIsIndhc1ByaWNlIiwicHJpY2VCYXNpcyIsInByaWNlTWVzc2FnZSIsInByaWNlRGlzY2xhaW1lciIsImN0YUltYWdlIiwiY3RhQWx0Il0sInNvdXJjZVJvb3QiOiIifQ==
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.