@prisma/studio-core 0.0.0-dev.202505111026 → 0.0.0-dev.202505111037
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/index.cjs +120 -120
- package/dist/ui/index.js +3 -3
- package/package.json +1 -1
package/dist/ui/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"../chunk-IAKOOX7B.js";import{D as ea}from"../chunk-OGMDOPWW.js";import{B as kt,aa as Rt,c as oe,q as wt,r as vt,t as Pt}from"../chunk-RFCV76TR.js";import{a as As,b as ye}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as ei,motion as Ts}from"motion/react";import{useCallback as Do,useEffect as rl}from"react";import{QueryClient as _s,QueryClientProvider as Qs}from"@tanstack/react-query";import*as le from"react";import{onlineManager as Fs,useQueryClient as Bs}from"@tanstack/react-query";var bo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#d;#u;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:d,errorTypes:u,styleNonce:n,shadowDOMTarget:f}=e;this.#a=oe(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=oe(l),this.#r=oe(s),this.#s=oe(d),this.#l=oe(u)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=kt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[d]=this.#a,u;return this.#d?u=this.#d:(u=Pt(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#d=u),Rt(this.#c,this.#t),wt(u,vt({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return d()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()}}))},e);this.#e=!0,this.#u=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#u?.(),this.#e=!1}},yo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#d;#u;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:d,errorTypes:u,styleNonce:n,shadowDOMTarget:f,onClose:m}=e;this.#a=oe(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=oe(l),this.#r=oe(s),this.#s=oe(d),this.#l=oe(u),this.#d=oe(m)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#d[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=kt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[d]=this.#a,[u]=this.#d,n;return this.#u?n=this.#u:(n=Pt(()=>import("../OKF6E45R-3IGVLQES.js")),this.#u=n),Rt(this.#c,this.#t),wt(n,vt({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return d()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()},get onClose(){return u()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as Ns}from"react/jsx-runtime";function wo(e){let a=Bs(e.client),t=le.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:d,shadowDOMTarget:u}=e,[n]=le.useState(new bo({client:a,queryFlavor:"React Query",version:"5",onlineManager:Fs,buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:d,shadowDOMTarget:u}));return le.useEffect(()=>{n.setClient(a)},[a,n]),le.useEffect(()=>{o&&n.setButtonPosition(o)},[o,n]),le.useEffect(()=>{r&&n.setPosition(r)},[r,n]),le.useEffect(()=>{n.setInitialIsOpen(l||!1)},[l,n]),le.useEffect(()=>{n.setErrorTypes(s||[])},[s,n]),le.useEffect(()=>(t.current&&n.mount(t.current),()=>{n.unmount()}),[n]),Ns("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as we from"react";import{onlineManager as qs,useQueryClient as Es}from"@tanstack/react-query";import{jsx as Us}from"react/jsx-runtime";function vo(e){let a=Es(e.client),t=we.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=we.useState(new yo({client:a,queryFlavor:"React Query",version:"5",onlineManager:qs,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:l,onClose:e.onClose}));return we.useEffect(()=>{s.setClient(a)},[a,s]),we.useEffect(()=>{s.setOnClose(e.onClose??(()=>{}))},[e.onClose,s]),we.useEffect(()=>{s.setErrorTypes(o||[])},[o,s]),we.useEffect(()=>(t.current&&s.mount(t.current),()=>{s.unmount()}),[s]),Us("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var Po=process.env.NODE_ENV!=="development"?function(){return null}:wo,Li=process.env.NODE_ENV!=="development"?function(){return null}:vo;import{createContext as Zs,useContext as Js,useMemo as $s,useState as Ya}from"react";import{toast as js}from"sonner";import{Toaster as zs}from"sonner";import{jsx as Vs}from"react/jsx-runtime";var ko=({...e})=>Vs(zs,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as Gs}from"nuqs/adapters/custom";import{useEffect as Ws,useState as Ks}from"react";function Xs(){let e=window.location.hash.slice(1),[a,t]=Ks(new URLSearchParams(e));function o(l,{history:s}){let{pathname:d,search:u}=window.location,n=l.toString(),f=`${d}${u}#${n}`;s==="push"?window.history.pushState(null,"",f):window.history.replaceState(null,"",f),t(l)}function r(){let l=window.location.hash.slice(1);return new URLSearchParams(l)}return Ws(()=>{function l(){let s=window.location.hash.slice(1);t(new URLSearchParams(s))}return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var Ro=Gs(Xs);import{jsx as et,jsxs as el}from"react/jsx-runtime";var Ys=new _s,Mo=Zs(void 0);function To(e){let{children:a,...t}=e,[o,r]=Ya(null),[l,s]=Ya("tables"),[d,u]=Ya(!1),[n,f]=Ya(!0),m=e.onError;m??=c=>js.error(c.message);let g=$s(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),x=()=>u(c=>!c),L=()=>f(c=>!c);return el(Qs,{client:Ys,children:[et(Po,{}),et(ko,{}),et(Ro,{children:et(Mo.Provider,{value:{...t,activeTable:o,activeView:l,isFullscreen:d,setActiveTable:r,setActiveView:s,onError:m,emitTelemetryEvent:g,toggleFullscreen:x,isNavigationOpen:n,toggleNavigation:L},children:a})})]})}function H(){let e=Js(Mo);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}var G={};As(G,{keyMap:()=>Mt,urlKeys:()=>ol,useQueryState:()=>pe,useQueryStates:()=>da});ye(G,Vi);import{useQueryState as al,useQueryStates as tl}from"nuqs";import*as Vi from"nuqs";function Mt(e){return e}function ol(e){return e}var Hi=Symbol("BRAND_SYMBOL");function pe(e,a){return al(e,a)}function da(e,a){return tl(e,a)}function at(){let{activeView:e,setActiveView:a}=H(),[t,o]=pe("view",{defaultValue:"tables",parse:s=>s||"tables",serialize:s=>s??""}),r=Do(()=>{let s=window.location.hash.slice(1),d=new URLSearchParams(s);for(let u of Array.from(d.keys()))u!=="view"&&d.delete(u);d.set("view","schema-visualiser"),window.history.replaceState(null,"",`#${d.toString()}`)},[]);rl(()=>{t&&(t==="tables"||t==="schema-visualiser")&&a(t)},[t,a]);let l=Do(s=>{e!==s&&(a(s),s==="schema-visualiser"?r():o(s))},[e,a,o,r]);return{activeView:e,handleViewChange:l}}import{clsx as ql}from"clsx";var At="-",sl=e=>{let a=dl(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let d=s.split(At);return d[0]===""&&d.length!==1&&d.shift(),Oo(d,a)||ll(s)},getConflictingClassGroupIds:(s,d)=>{let u=t[s]||[];return d&&o[s]?[...u,...o[s]]:u}}},Oo=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?Oo(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(At);return a.validators.find(({validator:s})=>s(l))?.classGroupId},Ao=/^\[(.+)\]$/,ll=e=>{if(Ao.test(e)){let a=Ao.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},dl=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return nl(Object.entries(e.classGroups),t).forEach(([l,s])=>{Dt(s,o,l,a)}),o},Dt=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let l=r===""?a:Fo(a,r);l.classGroupId=t;return}if(typeof r=="function"){if(ul(r)){Dt(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{Dt(s,Fo(a,l),t,o)})})},Fo=(e,a)=>{let t=e;return a.split(At).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},ul=e=>e.isThemeGetter,nl=(e,a)=>a?e.map(([t,o])=>{let r=o.map(l=>typeof l=="string"?a+l:typeof l=="object"?Object.fromEntries(Object.entries(l).map(([s,d])=>[a+s,d])):l);return[t,r]}):e,il=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(l,s)=>{t.set(l,s),a++,a>e&&(a=0,o=t,t=new Map)};return{get(l){let s=t.get(l);if(s!==void 0)return s;if((s=o.get(l))!==void 0)return r(l,s),s},set(l,s){t.has(l)?t.set(l,s):r(l,s)}}},qo="!",fl=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],l=a.length,s=d=>{let u=[],n=0,f=0,m;for(let C=0;C<d.length;C++){let h=d[C];if(n===0){if(h===r&&(o||d.slice(C,C+l)===a)){u.push(d.slice(f,C)),f=C+l;continue}if(h==="/"){m=C;continue}}h==="["?n++:h==="]"&&n--}let g=u.length===0?d:d.substring(f),x=g.startsWith(qo),L=x?g.substring(1):g,c=m&&m>f?m-f:void 0;return{modifiers:u,hasImportantModifier:x,baseClassName:L,maybePostfixModifierPosition:c}};return t?d=>t({className:d,parseClassName:s}):s},cl=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},pl=e=>({cache:il(e.cacheSize),parseClassName:fl(e),...sl(e)}),ml=/\s+/,gl=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(ml),d="";for(let u=s.length-1;u>=0;u-=1){let n=s[u],{modifiers:f,hasImportantModifier:m,baseClassName:g,maybePostfixModifierPosition:x}=t(n),L=!!x,c=o(L?g.substring(0,x):g);if(!c){if(!L){d=n+(d.length>0?" "+d:d);continue}if(c=o(g),!c){d=n+(d.length>0?" "+d:d);continue}L=!1}let C=cl(f).join(":"),h=m?C+qo:C,y=h+c;if(l.includes(y))continue;l.push(y);let U=r(c,L);for(let z=0;z<U.length;++z){let re=U[z];l.push(h+re)}d=n+(d.length>0?" "+d:d)}return d};function xl(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=Eo(a))&&(o&&(o+=" "),o+=t);return o}var Eo=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=Eo(e[o]))&&(t&&(t+=" "),t+=a);return t};function Bo(e,...a){let t,o,r,l=s;function s(u){let n=a.reduce((f,m)=>m(f),e());return t=pl(n),o=t.cache.get,r=t.cache.set,l=d,d(u)}function d(u){let n=o(u);if(n)return n;let f=gl(u,t);return r(u,f),f}return function(){return l(xl.apply(null,arguments))}}var F=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},Uo=/^\[(?:([a-z-]+):)?(.+)\]$/i,Ll=/^\d+\/\d+$/,Cl=new Set(["px","full","screen"]),hl=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Il=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Sl=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,bl=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,yl=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ve=e=>aa(e)||Cl.has(e)||Ll.test(e),Be=e=>ta(e,"length",Dl),aa=e=>!!e&&!Number.isNaN(Number(e)),Tt=e=>ta(e,"number",aa),ua=e=>!!e&&Number.isInteger(Number(e)),wl=e=>e.endsWith("%")&&aa(e.slice(0,-1)),w=e=>Uo.test(e),Ne=e=>hl.test(e),vl=new Set(["length","size","percentage"]),Pl=e=>ta(e,vl,Ho),kl=e=>ta(e,"position",Ho),Rl=new Set(["image","url"]),Ml=e=>ta(e,Rl,Fl),Tl=e=>ta(e,"",Al),na=()=>!0,ta=(e,a,t)=>{let o=Uo.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},Dl=e=>Il.test(e)&&!Sl.test(e),Ho=()=>!1,Al=e=>bl.test(e),Fl=e=>yl.test(e);var No=()=>{let e=F("colors"),a=F("spacing"),t=F("blur"),o=F("brightness"),r=F("borderColor"),l=F("borderRadius"),s=F("borderSpacing"),d=F("borderWidth"),u=F("contrast"),n=F("grayscale"),f=F("hueRotate"),m=F("invert"),g=F("gap"),x=F("gradientColorStops"),L=F("gradientColorStopPositions"),c=F("inset"),C=F("margin"),h=F("opacity"),y=F("padding"),U=F("saturate"),z=F("scale"),re=F("sepia"),V=F("skew"),Z=F("space"),W=F("translate"),B=()=>["auto","contain","none"],v=()=>["auto","hidden","clip","visible","scroll"],J=()=>["auto",w,a],M=()=>[w,a],Se=()=>["",ve,Be],je=()=>["auto",aa,w],Ja=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Ye=()=>["solid","dashed","dotted","double","none"],$a=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],la=()=>["start","end","center","between","around","evenly","stretch"],We=()=>["","0",w],ja=()=>["auto","avoid","all","avoid-page","page","left","right","column"],se=()=>[aa,w];return{cacheSize:500,separator:":",theme:{colors:[na],spacing:[ve,Be],blur:["none","",Ne,w],brightness:se(),borderColor:[e],borderRadius:["none","","full",Ne,w],borderSpacing:M(),borderWidth:Se(),contrast:se(),grayscale:We(),hueRotate:se(),invert:We(),gap:M(),gradientColorStops:[e],gradientColorStopPositions:[wl,Be],inset:J(),margin:J(),opacity:se(),padding:M(),saturate:se(),scale:se(),sepia:We(),skew:se(),space:M(),translate:M()},classGroups:{aspect:[{aspect:["auto","square","video",w]}],container:["container"],columns:[{columns:[Ne]}],"break-after":[{"break-after":ja()}],"break-before":[{"break-before":ja()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Ja(),w]}],overflow:[{overflow:v()}],"overflow-x":[{"overflow-x":v()}],"overflow-y":[{"overflow-y":v()}],overscroll:[{overscroll:B()}],"overscroll-x":[{"overscroll-x":B()}],"overscroll-y":[{"overscroll-y":B()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[c]}],"inset-x":[{"inset-x":[c]}],"inset-y":[{"inset-y":[c]}],start:[{start:[c]}],end:[{end:[c]}],top:[{top:[c]}],right:[{right:[c]}],bottom:[{bottom:[c]}],left:[{left:[c]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ua,w]}],basis:[{basis:J()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",w]}],grow:[{grow:We()}],shrink:[{shrink:We()}],order:[{order:["first","last","none",ua,w]}],"grid-cols":[{"grid-cols":[na]}],"col-start-end":[{col:["auto",{span:["full",ua,w]},w]}],"col-start":[{"col-start":je()}],"col-end":[{"col-end":je()}],"grid-rows":[{"grid-rows":[na]}],"row-start-end":[{row:["auto",{span:[ua,w]},w]}],"row-start":[{"row-start":je()}],"row-end":[{"row-end":je()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",w]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",w]}],gap:[{gap:[g]}],"gap-x":[{"gap-x":[g]}],"gap-y":[{"gap-y":[g]}],"justify-content":[{justify:["normal",...la()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...la(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...la(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[y]}],px:[{px:[y]}],py:[{py:[y]}],ps:[{ps:[y]}],pe:[{pe:[y]}],pt:[{pt:[y]}],pr:[{pr:[y]}],pb:[{pb:[y]}],pl:[{pl:[y]}],m:[{m:[C]}],mx:[{mx:[C]}],my:[{my:[C]}],ms:[{ms:[C]}],me:[{me:[C]}],mt:[{mt:[C]}],mr:[{mr:[C]}],mb:[{mb:[C]}],ml:[{ml:[C]}],"space-x":[{"space-x":[Z]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[Z]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",w,a]}],"min-w":[{"min-w":[w,a,"min","max","fit"]}],"max-w":[{"max-w":[w,a,"none","full","min","max","fit","prose",{screen:[Ne]},Ne]}],h:[{h:[w,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[w,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[w,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[w,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Ne,Be]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Tt]}],"font-family":[{font:[na]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",w]}],"line-clamp":[{"line-clamp":["none",aa,Tt]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ve,w]}],"list-image":[{"list-image":["none",w]}],"list-style-type":[{list:["none","disc","decimal",w]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[h]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[h]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Ye(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ve,Be]}],"underline-offset":[{"underline-offset":["auto",ve,w]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:M()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",w]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",w]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[h]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Ja(),kl]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Pl]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Ml]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[L]}],"gradient-via-pos":[{via:[L]}],"gradient-to-pos":[{to:[L]}],"gradient-from":[{from:[x]}],"gradient-via":[{via:[x]}],"gradient-to":[{to:[x]}],rounded:[{rounded:[l]}],"rounded-s":[{"rounded-s":[l]}],"rounded-e":[{"rounded-e":[l]}],"rounded-t":[{"rounded-t":[l]}],"rounded-r":[{"rounded-r":[l]}],"rounded-b":[{"rounded-b":[l]}],"rounded-l":[{"rounded-l":[l]}],"rounded-ss":[{"rounded-ss":[l]}],"rounded-se":[{"rounded-se":[l]}],"rounded-ee":[{"rounded-ee":[l]}],"rounded-es":[{"rounded-es":[l]}],"rounded-tl":[{"rounded-tl":[l]}],"rounded-tr":[{"rounded-tr":[l]}],"rounded-br":[{"rounded-br":[l]}],"rounded-bl":[{"rounded-bl":[l]}],"border-w":[{border:[d]}],"border-w-x":[{"border-x":[d]}],"border-w-y":[{"border-y":[d]}],"border-w-s":[{"border-s":[d]}],"border-w-e":[{"border-e":[d]}],"border-w-t":[{"border-t":[d]}],"border-w-r":[{"border-r":[d]}],"border-w-b":[{"border-b":[d]}],"border-w-l":[{"border-l":[d]}],"border-opacity":[{"border-opacity":[h]}],"border-style":[{border:[...Ye(),"hidden"]}],"divide-x":[{"divide-x":[d]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[d]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[h]}],"divide-style":[{divide:Ye()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...Ye()]}],"outline-offset":[{"outline-offset":[ve,w]}],"outline-w":[{outline:[ve,Be]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Se()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[h]}],"ring-offset-w":[{"ring-offset":[ve,Be]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Ne,Tl]}],"shadow-color":[{shadow:[na]}],opacity:[{opacity:[h]}],"mix-blend":[{"mix-blend":[...$a(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":$a()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[u]}],"drop-shadow":[{"drop-shadow":["","none",Ne,w]}],grayscale:[{grayscale:[n]}],"hue-rotate":[{"hue-rotate":[f]}],invert:[{invert:[m]}],saturate:[{saturate:[U]}],sepia:[{sepia:[re]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[u]}],"backdrop-grayscale":[{"backdrop-grayscale":[n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[f]}],"backdrop-invert":[{"backdrop-invert":[m]}],"backdrop-opacity":[{"backdrop-opacity":[h]}],"backdrop-saturate":[{"backdrop-saturate":[U]}],"backdrop-sepia":[{"backdrop-sepia":[re]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",w]}],duration:[{duration:se()}],ease:[{ease:["linear","in","out","in-out",w]}],delay:[{delay:se()}],animate:[{animate:["none","spin","ping","pulse","bounce",w]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[z]}],"scale-x":[{"scale-x":[z]}],"scale-y":[{"scale-y":[z]}],rotate:[{rotate:[ua,w]}],"translate-x":[{"translate-x":[W]}],"translate-y":[{"translate-y":[W]}],"skew-x":[{"skew-x":[V]}],"skew-y":[{"skew-y":[V]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",w]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",w]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":M()}],"scroll-mx":[{"scroll-mx":M()}],"scroll-my":[{"scroll-my":M()}],"scroll-ms":[{"scroll-ms":M()}],"scroll-me":[{"scroll-me":M()}],"scroll-mt":[{"scroll-mt":M()}],"scroll-mr":[{"scroll-mr":M()}],"scroll-mb":[{"scroll-mb":M()}],"scroll-ml":[{"scroll-ml":M()}],"scroll-p":[{"scroll-p":M()}],"scroll-px":[{"scroll-px":M()}],"scroll-py":[{"scroll-py":M()}],"scroll-ps":[{"scroll-ps":M()}],"scroll-pe":[{"scroll-pe":M()}],"scroll-pt":[{"scroll-pt":M()}],"scroll-pr":[{"scroll-pr":M()}],"scroll-pb":[{"scroll-pb":M()}],"scroll-pl":[{"scroll-pl":M()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",w]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[ve,Be,Tt]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Bl=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{ia(e,"cacheSize",a),ia(e,"prefix",t),ia(e,"separator",o),ia(e,"experimentalParseClassName",r);for(let d in s)Nl(e[d],s[d]);for(let d in l)Ol(e[d],l[d]);return e},ia=(e,a,t)=>{t!==void 0&&(e[a]=t)},Nl=(e,a)=>{if(a)for(let t in a)ia(e,t,a[t])},Ol=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},zo=(e,...a)=>typeof e=="function"?Bo(No,e,...a):Bo(()=>Bl(No(),e),...a);var El=zo({prefix:"ps-"});function p(...e){return El(ql(e))}import{useIsMutating as Mn}from"@tanstack/react-query";import{forwardRef as Hl,createElement as zl}from"react";var Vo=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),tt=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Ul,createElement as Wo}from"react";var Go={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Ko=Ul(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...d},u)=>Wo("svg",{ref:u,...Go,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:tt("lucide",r),...d},[...s.map(([n,f])=>Wo(n,f)),...Array.isArray(l)?l:[l]]));var b=(e,a)=>{let t=Hl(({className:o,...r},l)=>zl(Ko,{ref:l,iconNode:a,className:tt(`lucide-${Vo(e)}`,o),...r}));return t.displayName=`${e}`,t};var Oe=b("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var fa=b("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var ca=b("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);var de=b("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var me=b("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var pa=b("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var ue=b("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var ma=b("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var ga=b("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var xa=b("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var Pe=b("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var qe=b("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var Ke=b("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var La=b("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var Ca=b("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var ha=b("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var Ia=b("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var Sa=b("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);var ba=b("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var ya=b("Key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);var wa=b("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);var va=b("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var Pa=b("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var ka=b("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ra=b("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ee=b("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Ue=b("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var Ma=b("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);var Ta=b("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var Da=b("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var Aa=b("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var Fa=b("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var Ba=b("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);var He=b("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as Tn}from"motion-plus/react";import{useEffect as Dn,useState as An}from"react";import{toast as Fn}from"sonner";import{cva as Vl}from"class-variance-authority";import{jsx as Gl}from"react/jsx-runtime";var Ft=Vl("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function ot({className:e,variant:a,...t}){return Gl("div",{className:p(Ft({variant:a}),e),...t})}import{Slot as Wl}from"@radix-ui/react-slot";import{cva as Kl}from"class-variance-authority";import*as Xo from"react";import{jsx as _l}from"react/jsx-runtime";var Xl=Kl("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),D=Xo.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>_l(o?Wl:"button",{className:p(Xl({variant:a,size:t,className:e})),ref:l,...r}));D.displayName="Button";import*as ge from"@radix-ui/react-popover";import*as Qo from"react";import{jsx as _o}from"react/jsx-runtime";var Zo=ge.Root,Jo=ge.Trigger;var Bt=Qo.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>_o(ge.Portal,{children:_o(ge.Content,{ref:r,align:a,sideOffset:t,className:p("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));Bt.displayName=ge.Content.displayName;import{useMutation as Zl,useQueryClient as Jl}from"@tanstack/react-query";function Ql(e,a){let t={filter:ea(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function $o(e,a){return{...e,__ps_rowid:Ql(e,a)}}function rt(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:$o(t,a)}:o!==void 0?{...e,rows:o.map(r=>$o(r,a))}:e}function jo(){let{activeTable:e,adapter:a}=H(),t=Jl(),{schema:o=null,name:r=null}=e??{};return Zl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,d]=await a.insert({rows:l,table:e},{});if(s)throw s;return rt(d,e)},onSuccess(l){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},s=>s==null?s:{...s,rows:[...l.rows,...s.rows]})},retry:!1})}import{useQuery as $l}from"@tanstack/react-query";function Yo(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=H();return $l({enabled:!!l,gcTime:0,placeholderData(d,u){let[,n,,f]=u?.queryKey||[];if(!(n!==l?.schema||f!==l?.name))return d},async queryFn({signal:d}){let[u,n]=await s.query({pageIndex:a,pageSize:t,sortOrder:o,table:l,filter:r},{abortSignal:d});if(u)throw u;return rt(n,l)},queryKey:["schema",l?.schema||null,"table",l?.name||null,"query","sortOrder",o.map(d=>`${d.column}:${d.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as jl,useQueryClient as Yl}from"@tanstack/react-query";function er(){let{activeTable:e,adapter:a,onError:t}=H(),o=Yl(),r=["schema",e?.schema??null,"table",e?.name??null];return jl({mutationFn:async l=>{let[s,d]=await a.update(l.details,l.options);if(s)throw s;return d},mutationKey:[...r,"update"],onError(l,s){let{changes:d,row:u}=s.details;t(l),Nt({getFinderFn(){let n={...u,...d},f=ea(n,e.columns);return m=>f.every(([g,x])=>m[g]===x)},queryClient:o,table:e,updaterFn:function(f){return{...f,...Object.keys(d).reduce((m,g)=>({...m,[g]:u[g]}),{})}}})},onMutate(l){let{details:s}=l;Nt({getFinderFn(){let{row:d}=s,u=ea(d,e.columns);return n=>u.every(([f,m])=>n[f]===m)},queryClient:o,table:e,updaterFn:function(u){return{...u,...s.changes}}})},onSuccess(l,s){Nt({getFinderFn(){let{changes:d,row:u}=s.details,n={...u,...d},f=ea(n,e.columns);return m=>f.every(([g,x])=>m[g]===x)},queryClient:o,table:e,updaterFn:function(u){let{__ps_updated_at__:n}=u,{row:f}=l;return n!=null&&f.__ps_updated_at__<=n?u:{...u,...f}}})},retry:!1})}function Nt(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,l;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},s=>{let{rows:d=[]}=s||{};if(d.length===0)return s;let u=d.findIndex(l??=a());if(u===-1)return s;let n=r(d[u]);return{...s,rows:[...d.slice(0,u),n,...d.slice(u+1)]}})}import{useEffect as ed,useMemo as ar,useState as ad}from"react";import td from"short-uuid";var od={kind:"FilterGroup",filters:[],after:"and",id:td.generate()},tr=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=tr(t));return a};function or(){let[e,a]=pe("filter",{defaultValue:JSON.stringify(od)}),t=ar(()=>JSON.parse(e),[e]),o=d=>void a(JSON.stringify(d)),[r,l]=ad(t);ed(()=>{l(t)},[t]);let s=ar(()=>tr(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l,totalEditingFilters:s}}import{useIsMutating as rd}from"@tanstack/react-query";function st(){return rd({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as sd}from"react";var ld=25,dd={pageIndex:G.parseAsIndex.withDefault(0),pageSize:G.parseAsInteger.withDefault(ld)};function lt(){let[{pageIndex:e,pageSize:a},t]=da(dd),o=sd(r=>{t(typeof r=="function"?l=>{let s=r(l);return{pageIndex:s.pageIndex,pageSize:s.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as id,useState as fd}from"react";import{useMutation as ud,useQueryClient as nd}from"@tanstack/react-query";function rr(){let{activeTable:e,adapter:a}=H(),t=nd(),{schema:o=null,name:r=null}=e??{};return ud({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(l){let[s,d]=await a.delete({rows:l,table:e},{});if(s)throw s;return d},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function sr(e){let{activeTable:a,onError:t}=H(),{paginationState:o}=lt(),[r,l]=fd({}),s=Object.keys(r).length!==0,{mutate:d}=rr();id(()=>l({}),[a,o.pageIndex]);function u(){let n=e?.rows.filter(f=>r[f.__ps_rowid]);d(n??[],{onSuccess(){l({})},onError:t})}return{deleteSelection:u,setRowSelectionState:l,rowSelectionState:r,isSelecting:s}}import{useEffect as cd,useState as pd}from"react";function lr(){let[e,a]=pe("sort",{defaultValue:""}),t=s=>{if(!s)return[];try{return s.split(",").map(d=>{let[u,n]=d.split(":");return!u||!n||!["asc","desc"].includes(n)?null:{column:u,direction:n}}).filter(Boolean)}catch(d){return console.error("Failed to parse sorting parameter:",d),[]}},[o,r]=pd(()=>t(e));return cd(()=>{let s=t(e);r(s)},[e]),{sortingState:o,setSortingState:s=>{let d=typeof s=="function"?s(o):s;r(d);let u=d.length>0?d.map(n=>`${n.column}:${n.direction}`).join(","):null;a(u)}}}import{isObjectType as Ud}from"remeda";import{forwardRef as wd}from"react";import*as Re from"react";import{jsx as ke}from"react/jsx-runtime";var Ot=Re.forwardRef(({className:e,...a},t)=>ke("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:ke("table",{ref:t,className:p("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));Ot.displayName="Table";var qt=Re.forwardRef(({className:e,...a},t)=>ke("thead",{ref:t,className:p(e),...a}));qt.displayName="TableHeader";var Et=Re.forwardRef(({className:e,...a},t)=>ke("tbody",{ref:t,className:p("[&_tr:last-child]:ps-border-0",e),...a}));Et.displayName="TableBody";var md=Re.forwardRef(({className:e,...a},t)=>ke("tfoot",{ref:t,className:p("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));md.displayName="TableFooter";var Xe=Re.forwardRef(({className:e,...a},t)=>ke("tr",{ref:t,className:p("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));Xe.displayName="TableRow";var _e=Re.forwardRef(({className:e,...a},t)=>ke("th",{ref:t,className:p("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));_e.displayName="TableHead";var ze=Re.forwardRef(({className:e,...a},t)=>ke("td",{ref:t,className:p("ps-align-middle",e),...a}));ze.displayName="TableCell";var gd=Re.forwardRef(({className:e,...a},t)=>ke("caption",{ref:t,className:p("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));gd.displayName="TableCaption";import{isValidElement as yd}from"react";import*as P from"@radix-ui/react-context-menu";import*as Me from"react";import{jsx as $,jsxs as zt}from"react/jsx-runtime";var dr=P.Root,ur=P.Trigger;var xd=Me.forwardRef(({className:e,inset:a,children:t,...o},r)=>zt(P.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,$(ue,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));xd.displayName=P.SubTrigger.displayName;var Ld=Me.forwardRef(({className:e,...a},t)=>$(P.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));Ld.displayName=P.SubContent.displayName;var Ut=Me.forwardRef(({className:e,...a},t)=>$(P.Portal,{children:$(P.Content,{ref:t,className:p("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));Ut.displayName=P.Content.displayName;var Ht=Me.forwardRef(({className:e,inset:a,...t},o)=>$(P.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));Ht.displayName=P.Item.displayName;var Cd=Me.forwardRef(({className:e,children:a,checked:t,...o},r)=>zt(P.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(P.ItemIndicator,{children:$(de,{className:"ps-h-4 ps-w-4"})})}),a]}));Cd.displayName=P.CheckboxItem.displayName;var hd=Me.forwardRef(({className:e,children:a,...t},o)=>zt(P.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(P.ItemIndicator,{children:$(Ke,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));hd.displayName=P.RadioItem.displayName;var Id=Me.forwardRef(({className:e,inset:a,...t},o)=>$(P.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));Id.displayName=P.Label.displayName;var Sd=Me.forwardRef(({className:e,...a},t)=>$(P.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));Sd.displayName=P.Separator.displayName;var bd=({className:e,...a})=>$("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});bd.displayName="ContextMenuShortcut";import{jsx as Vt,jsxs as nr}from"react/jsx-runtime";function ir(e){let{children:a}=e;return nr(dr,{children:[Vt(ur,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),Vt(Ut,{children:nr(Ht,{onClick:()=>{let t=Gt(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[Vt(La,{size:12}),"Copy"]})})]})}function Gt(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(yd(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?Gt(a.children):""}return Array.isArray(e)?e.map(Gt).join(""):""}import{jsx as fr}from"react/jsx-runtime";function K(e){let{children:a,className:t,ref:o,style:r,...l}=e;return fr(ze,{...l,className:p("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:fr(ir,{children:a})})}import{jsx as cr}from"react/jsx-runtime";var Wt=wd((e,a)=>{let{containerProps:t,value:o,...r}=e;return cr(K,{...r,...t,ref:a,children:cr("div",{"data-cell-type":"boolean",children:String(!!o)})})});Wt.displayName="BooleanCell";import{forwardRef as vd}from"react";import{jsx as Pd}from"react/jsx-runtime";var Kt=vd((e,a)=>{let{containerProps:t,value:o,...r}=e;return Pd(K,{...r,...t,ref:a,children:String(o)})});Kt.displayName="DateCell";import{forwardRef as kd}from"react";import{jsx as Rd}from"react/jsx-runtime";var Na=kd((e,a)=>{let{containerProps:t,...o}=e;return Rd(K,{...o,...t,ref:a})});Na.displayName="EmptyCell";import{forwardRef as Md}from"react";import{jsx as Td}from"react/jsx-runtime";var Xt=Md((e,a)=>{let{containerProps:t,value:o,options:r,...l}=e;return Td(K,{...l,...t,ref:a,children:String(o)})});Xt.displayName="EnumCell";import{forwardRef as Dd}from"react";import{jsx as Ad}from"react/jsx-runtime";var dt=Dd((e,a)=>{let{containerProps:t,value:o,...r}=e;return Ad(K,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});dt.displayName="JSONCell";import{forwardRef as Fd}from"react";import{jsx as pr}from"react/jsx-runtime";var _t=Fd((e,a)=>{let{containerProps:t,...o}=e;return pr(K,{...o,...t,ref:a,children:pr("code",{className:"ps-text-muted-foreground/60",children:"NULL"})})});_t.displayName="NullCell";import{forwardRef as Bd}from"react";import{jsx as mr}from"react/jsx-runtime";var Qt=Bd((e,a)=>{let{containerProps:t,value:o,...r}=e;return mr(K,{...r,...t,ref:a,children:mr("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});Qt.displayName="NumericCell";import{forwardRef as Nd}from"react";import{jsx as Od}from"react/jsx-runtime";var ut=Nd((e,a)=>{let{containerProps:t,value:o,...r}=e;return Od(K,{...r,...t,ref:a,children:String(o)})});ut.displayName="RawCell";import{forwardRef as qd}from"react";import{jsx as Ed}from"react/jsx-runtime";var Zt=qd((e,a)=>{let{containerProps:t,value:o,...r}=e;return Ed(K,{...r,...t,ref:a,children:String(o)})});Zt.displayName="TimeCell";import{jsx as ne}from"react/jsx-runtime";function nt({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return ne(Na,{containerProps:t});if(o===null)return ne(_t,{containerProps:t});let{group:r,options:l,isArray:s}=a.datatype;if(r==="json"||s)return ne(dt,{containerProps:t,value:o});if(r==="string")return ne(ut,{containerProps:t,value:o});if(r==="enum")return ne(Xt,{containerProps:t,value:o,options:l});if(r==="boolean")return ne(Wt,{containerProps:t,value:o});if(r==="datetime")return ne(Kt,{containerProps:t,value:o});if(r==="time")return ne(Zt,{containerProps:t,value:o});if(r==="numeric")return ne(Qt,{containerProps:t,value:o});if(r==="raw")return Ud(o)?ne(dt,{containerProps:t,value:o}):ne(ut,{containerProps:t,value:o});throw new Error(`Datatype group "${r}" was not handled in '/cell/get-cell.tsx'`)}import{forwardRef as Hd}from"react";import*as Oa from"@radix-ui/react-checkbox";import*as gr from"react";import{jsx as Jt}from"react/jsx-runtime";var qa=gr.forwardRef(({className:e,...a},t)=>Jt(Oa.Root,{ref:t,className:p("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:Jt(Oa.Indicator,{className:p("ps-flex ps-items-center ps-justify-center ps-text-current"),children:Jt(de,{className:"ps-h-4 ps-w-4"})})}));qa.displayName=Oa.Root.displayName;import{jsx as $t}from"react/jsx-runtime";var jt=Hd((e,a)=>{let{table:t,readonly:o,className:r,style:l,...s}=e;return $t("div",{ref:a,className:r,style:l,...s,children:$t("div",{className:"ps-flex ps-items-center ps-justify-center ps-w-full",children:$t(qa,{checked:t.getIsAllRowsSelected(),onCheckedChange:d=>t.toggleAllRowsSelected(!!d),disabled:o})})})});jt.displayName="SelectHeaderCell";import{forwardRef as Vd}from"react";import{Fragment as zd,jsx as Yt}from"react/jsx-runtime";function xr(e){let{children:a,className:t,ref:o,style:r,isHeader:l=!1,...s}=e,d=p("ps-flex ps-items-center ps-justify-center ps-p-0 ps-border-r ps-border-b ps-border-table-border ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)]");return Yt(zd,{children:l?Yt(_e,{...s,className:p(d,"ps-h-10 ps-bg-table-head ps-z-30 ps-sticky ps-top-0 ps-left-0",t),ref:o,children:a}):Yt(ze,{...s,className:p(d,"ps-z-10 ps-h-[39px]",t),ref:o,style:r,children:a})})}import{jsx as Lr}from"react/jsx-runtime";var eo=Vd((e,a)=>{let{row:t,readonly:o,className:r,style:l,...s}=e;return Lr(xr,{ref:a,className:r,style:l,...s,children:Lr(qa,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});eo.displayName="SelectRowCell";import*as Te from"@radix-ui/react-popover";import*as _ from"react";import{jsx as Ea}from"react/jsx-runtime";var Cr=_.createContext(null),ao=({children:e,...a})=>{let[t,o]=_.useState(!1);return Ea(Cr.Provider,{value:{open:t,setOpen:o},children:Ea(Te.Root,{open:t,onOpenChange:o,...a,children:e})})};ao.displayName="PopoverCell";var to=_.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=_.useRef(null);return Ea(Te.Trigger,{ref:s=>{typeof r=="function"?r(s):r&&(r.current=s),l.current=s},className:p("w-full h-full cursor-pointer",t),...o,children:e})});to.displayName="PopoverCellTrigger";var oo=_.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ea(Te.Portal,{children:Ea(Te.Content,{ref:r,align:a,sideOffset:t,className:p("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:l=>l.preventDefault(),...o})}));oo.displayName=Te.Content.displayName;function j(e){let a=_.useContext(Cr),t=_.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=_.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return _.useEffect(()=>{let r=l=>{(l.key==="Enter"||l.key==="Return")&&!l.shiftKey?t():l.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as hr,jsxs as Gd}from"react/jsx-runtime";function it(e){let{cellComponent:a,inputComponent:t}=e;return Gd(ao,{children:[hr(to,{asChild:!0,children:a}),hr(oo,{align:"start",alignOffset:-1,className:p("ps-rounded-none ps-bg-muted","ps-p-0 ps-z-30 ps-gap-0 ps-border-primary","ps-w-[calc(var(--radix-popover-trigger-width)_+_1px)] ps-max-w-72 ps-min-w-[200px]"),sideOffset:-40,children:t})]})}import{closestCenter as eu,DndContext as au,DragOverlay as tu,KeyboardSensor as ou,PointerSensor as ru,useSensor as vr,useSensors as su}from"@dnd-kit/core";import{arrayMove as lu,SortableContext as du,sortableKeyboardCoordinates as uu,useSortable as nu,verticalListSortingStrategy as iu}from"@dnd-kit/sortable";import{CSS as fu}from"@dnd-kit/utilities";import{motion as lo}from"motion/react";import{AnimateNumber as cu}from"motion-plus/react";import{useMemo as pu,useState as uo}from"react";import{Fragment as mu}from"react/jsx-runtime";import{createPortal as gu}from"react-dom";import Pr from"short-uuid";function Ir(e,a,t){let o=e?.datatype.group;if(o===void 0)return"";if(a==="is"||a==="is not")return t.toLowerCase()==="null"?null:t;if(o==="boolean")return t==="true";if(o==="datetime"||o==="enum"||o==="raw"||o==="string"||o==="time")return t;if(o==="json")try{return JSON.parse(t)}catch{return t}return o==="numeric"?t===""?null:Number(t):t}function Sr(e,a,t){let o=e?.datatype.group;if(a&&(a==="is"||a==="is not"))return t===null?"null":String(t);if(o===void 0||t==null)return"";if(o==="boolean"||o==="datetime"||o==="enum"||o==="numeric"||o==="raw"||o==="string"||o==="time")return String(t);if(o==="json"){if(t==="")return"";try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}import*as k from"@radix-ui/react-dropdown-menu";import*as De from"react";import{jsx as Y,jsxs as ro}from"react/jsx-runtime";var ft=k.Root,ct=k.Trigger;var Wd=De.forwardRef(({className:e,inset:a,children:t,...o},r)=>ro(k.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,Y(ue,{className:"ps-ml-auto"})]}));Wd.displayName=k.SubTrigger.displayName;var Kd=De.forwardRef(({className:e,...a},t)=>Y(k.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));Kd.displayName=k.SubContent.displayName;var Ua=De.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Y(k.Portal,{children:Y(k.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Ua.displayName=k.Content.displayName;var pt=De.forwardRef(({className:e,inset:a,...t},o)=>Y(k.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));pt.displayName=k.Item.displayName;var Xd=De.forwardRef(({className:e,children:a,checked:t,...o},r)=>ro(k.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[Y("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Y(k.ItemIndicator,{children:Y(de,{className:"ps-h-4 ps-w-4"})})}),a]}));Xd.displayName=k.CheckboxItem.displayName;var _d=De.forwardRef(({className:e,children:a,...t},o)=>ro(k.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[Y("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Y(k.ItemIndicator,{children:Y(Ke,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));_d.displayName=k.RadioItem.displayName;var Qd=De.forwardRef(({className:e,inset:a,...t},o)=>Y(k.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));Qd.displayName=k.Label.displayName;var Zd=De.forwardRef(({className:e,...a},t)=>Y(k.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Zd.displayName=k.Separator.displayName;var Jd=({className:e,...a})=>Y("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Jd.displayName="DropdownMenuShortcut";import*as br from"react";import{jsx as $d}from"react/jsx-runtime";var ie=br.forwardRef(({className:e,type:a,...t},o)=>$d("input",{type:a,className:p("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));ie.displayName="Input";import*as R from"@radix-ui/react-select";import*as Ve from"react";import{jsx as Q,jsxs as so}from"react/jsx-runtime";var mt=R.Root;var gt=R.Value,Ha=Ve.forwardRef(({className:e,children:a,...t},o)=>so(R.Trigger,{ref:o,className:p("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...t,children:[a,Q(R.Icon,{asChild:!0,children:Q(me,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));Ha.displayName=R.Trigger.displayName;var yr=Ve.forwardRef(({className:e,...a},t)=>Q(R.ScrollUpButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Q(ma,{className:"ps-h-4 ps-w-4"})}));yr.displayName=R.ScrollUpButton.displayName;var wr=Ve.forwardRef(({className:e,...a},t)=>Q(R.ScrollDownButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Q(me,{className:"ps-h-4 ps-w-4"})}));wr.displayName=R.ScrollDownButton.displayName;var za=Ve.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>Q(R.Portal,{children:so(R.Content,{ref:r,className:p("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[Q(yr,{}),Q(R.Viewport,{className:p("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),Q(wr,{})]})}));za.displayName=R.Content.displayName;var jd=Ve.forwardRef(({className:e,...a},t)=>Q(R.Label,{ref:t,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));jd.displayName=R.Label.displayName;var X=Ve.forwardRef(({className:e,children:a,...t},o)=>so(R.Item,{ref:o,className:p("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[Q("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Q(R.ItemIndicator,{children:Q(de,{className:"ps-h-4 ps-w-4"})})}),Q(R.ItemText,{children:a})]}));X.displayName=R.Item.displayName;var Yd=Ve.forwardRef(({className:e,...a},t)=>Q(R.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Yd.displayName=R.Separator.displayName;import{Fragment as hu,jsx as I,jsxs as O}from"react/jsx-runtime";var kr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>O(mt,{value:e,onValueChange:a,disabled:t,children:[I(Ha,{className:o,children:I(gt,{placeholder:"Logic"})}),O(za,{children:[I(X,{value:"and",children:I("div",{className:"ps-font-semibold",children:"AND"})}),I(X,{value:"or",children:I("div",{className:"ps-font-semibold",children:"OR"})})]})]}),xu=({activeId:e,items:a,table:t})=>{let o=a.find(d=>d.id===e);if(!o)return null;let r="and",l=!1,s=a.findIndex(d=>d.id===e);if(s>0){let d=a[s-1];d&&(r=d.after,l=!0)}return o.kind==="ColumnFilter"?I(Rr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):I(no,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},Lu=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:l,activeDragId:s,onDragStart:d,onDragEndSignal:u})=>{let n=pu(()=>e.map(g=>g.id),[e]),f=su(vr(ru,{activationConstraint:{distance:8}}),vr(ou,{coordinateGetter:uu}));return O(au,{sensors:f,collisionDetection:eu,onDragStart:d,onDragEnd:g=>{let{active:x,over:L}=g;if(L&&x.id!==L.id){let c=e.findIndex(h=>h.id===x.id),C=e.findIndex(h=>h.id===L.id);c!==-1&&C!==-1&&l(c,C)}u()},children:[I(du,{items:n,strategy:iu,children:e.map((g,x)=>{let L=!1,c,C,h=!1;if(x>0){L=!0;let y=e[x-1];c=y.after,C=U=>{let z={...y,after:U};o(x-1,z)},h=x-1===e.length-1}return I(Cu,{filter:g,onUpdate:y=>o(x,y),onDelete:()=>r(x),parentDndId:a,table:t,showLeadingOperator:L,leadingOperatorValue:c,onLeadingOperatorChange:C,isLeadingOperatorTargetLast:h},g.id)})}),gu(I(tu,{children:s?I("div",{className:"ps-opacity-80",children:I(xu,{activeId:s,items:e,table:t})}):null}),document.body)]})},Cu=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:u})=>{let{attributes:n,listeners:f,setNodeRef:m,transform:g,transition:x,isDragging:L}=nu({id:e.id,data:{type:e.kind,parentId:o}}),c={transform:fu.Transform.toString(g),transition:x,opacity:L?.5:1};return I("div",{ref:m,style:c,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?I(Rr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:u}):I(no,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:u})})},Rr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:u})=>{let n=L=>{a({...e,column:L})},f=L=>{a({...e,operator:L})},m=L=>{let c=L.target.value,C=r.columns[e.column];if(C!==void 0){let h=Ir(C,e.operator,c);a({...e,value:h})}},[g,x]=uo(Sr(r.columns[e.column],e.operator,e.value));return O(lo.div,{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[O("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[I("div",{...o,className:"ps-cursor-grab",children:I(Ia,{className:"ps-text-gray-500",size:16})}),O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[l&&d?I(kr,{value:s,onValueChange:d,disabled:u}):null,O(mt,{value:e.column,onValueChange:n,children:[I(Ha,{className:"ps-w-28 ps-text-xs ps-h-8",children:I(gt,{placeholder:"Select column"})}),I(za,{children:Object.keys(r.columns).map(L=>I(X,{value:L,children:L},L))})]}),O(mt,{value:e.operator,onValueChange:L=>f(L),children:[I(Ha,{className:"ps-w-20 ps-text-xs ps-h-8",children:I(gt,{placeholder:"Operator"})}),O(za,{children:[I(X,{value:"=",children:"="}),I(X,{value:"!=",children:"!="}),I(X,{value:">",children:">"}),I(X,{value:">=",children:">="}),I(X,{value:"<",children:"<"}),I(X,{value:"<=",children:"<="}),I(X,{value:"is",children:"is"}),I(X,{value:"is not",children:"is not"}),I(X,{value:"like",children:"like"}),I(X,{value:"not like",children:"not like"}),I(X,{value:"ilike",children:"ilike"}),I(X,{value:"not ilike",children:"not ilike"})]})]}),I(ie,{value:g,onChange:L=>{x(L.target.value),m(L)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),I("div",{className:"ps-flex ps-items-center ps-gap-2",children:I(D,{variant:"ghost",size:"xs",onClick:t,children:I(He,{size:14})})})]})},no=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:l,showLeadingOperator:s,leadingOperatorValue:d,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})=>{let[f,m]=uo(!0),[g,x]=uo(null),L=()=>{let V={id:Pr.generate(),kind:"ColumnFilter",column:Object.keys(l.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,V]})},c=()=>{let V={id:Pr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,V]})},C=(V,Z)=>{let W=[...e.filters];W[V]=Z,a({...e,filters:W})},h=V=>{let Z=[...e.filters];Z.splice(V,1),a({...e,filters:Z})},y=V=>{x(V.active.id)},U=()=>{x(null)},z=(V,Z)=>{if(V===Z)return;let W=lu(e.filters,V,Z);a({...e,filters:W})},re=()=>f?!e.filters||e.filters.length===0?I("div",{className:"ps-pl-6 ps-text-sm ps-text-neutral-500 ps-italic",children:"This group is empty. Add a filter or another group."}):I(lo.div,{transition:{layout:{duration:.12}},children:I("div",{className:p("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:I(Lu,{items:e.filters,parentGroupId:e.id,table:l,onUpdateItem:C,onDeleteItem:h,onReorderItems:z,activeDragId:g,onDragStart:y,onDragEndSignal:U})})}):null;return I(lo.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:O("div",{className:p("ps-flex ps-flex-col ps-w-full",f?"ps-gap-2":""),children:[O("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&I("div",{...o,className:"ps-cursor-grab",onClick:()=>m(!f),children:f?I(me,{size:16}):I(ue,{size:16})}),s&&u&&!r&&I("div",{className:"ps-flex ps-items-center",children:I(kr,{value:d,onValueChange:u,disabled:n})}),O(D,{variant:"outline",size:"sm",onClick:L,className:p("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&I(ot,{className:"ps-transition-all",children:I(cu,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),I(D,{variant:"outline",size:"sm",onClick:c,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&O(ft,{children:[I(ct,{asChild:!0,children:I(D,{variant:"ghost",size:"sm",children:I(qe,{className:"ps-size-4"})})}),I(Ua,{align:"center",className:"ps-w-full",children:e.filters.length===0?I("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):I("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:I(Mr,{filter:e})})})]}),!r&&I(D,{variant:"ghost",size:"xs",onClick:t,children:I(He,{size:14})})]})]}),I("div",{className:p(r?"":"ps-ml-6"),children:re()})]})})},Mr=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let l,s=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!s&&(a+=1),a&&(s||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:d,operator:u}=o;l=O(hu,{children:[O("span",{children:[" ",d," "]}),O("span",{children:[" ",u," "]}),I("span",{children:" ? "})]})}else l=I(Mr,{filter:o});return O(mu,{children:[a===1?I("span",{className:"ps-font-semibold",children:"("}):"",l,a===-1?I("span",{className:"ps-font-semibold",children:")"}):"",!s&&O("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return I("span",{children:t})};function Tr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return O("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[I(no,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),I(D,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as Nu,MouseSensor as Ou,useSensor as qu,useSensors as Eu}from"@dnd-kit/core";import{arrayMove as Uu,horizontalListSortingStrategy as Hu,SortableContext as zu,useSortable as Vu}from"@dnd-kit/sortable";import{CSS as Gu}from"@dnd-kit/utilities";import{getCoreRowModel as Wu,useReactTable as Ku}from"@tanstack/react-table";import*as Ae from"react";import S from"react";function Ge(){return Ge=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},Ge.apply(null,arguments)}var Iu=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function Su(e,a){let[t,o]=S.useState();S.useEffect(()=>{let l=Iu(e);o(typeof l>"u"||l===null?typeof a=="function"?a():a:l)},[a,e]);let r=S.useCallback(l=>{o(s=>{let d=l;typeof l=="function"&&(d=l(s));try{localStorage.setItem(e,JSON.stringify(d))}catch{}return d})},[e]);return[t,r]}var xe={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},Fr=S.createContext(xe);function Br(e){let{theme:a,...t}=e;return S.createElement(Fr.Provider,Ge({value:a},t))}function bu(){return S.useContext(Fr)}function yu(e){let[a,t]=S.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return S.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=l=>{let{matches:s}=l;return t(s)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var wu=typeof window>"u";function fe(e,a,t){return t===void 0&&(t={}),S.forwardRef((o,r)=>{let{style:l,...s}=o,d=bu(),u=Object.entries(t).reduce((n,f)=>{let[m,g]=f;return yu(m)?{...n,...typeof g=="function"?g(s,d):g}:n},{});return S.createElement(e,{...s,style:{...typeof a=="function"?a(s,d):a,...l,...u},ref:r})})}function vu(){let e=S.useRef(!1),a=S.useCallback(()=>e.current,[]);return S[wu?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var Pu=fe("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});fe("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var ku=fe("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));fe("code",{fontSize:".9em"});fe("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));fe("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var Dr=fe("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),xt=fe("span",{cursor:"pointer",color:"white"}),Ru=fe("span",(e,a)=>({color:a.danger})),io=fe("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),Mu=fe("span",{color:"grey",fontSize:".7rem"}),Ar=e=>{let{expanded:a,style:t={},...o}=e;return S.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},Tu=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:l,type:s,expanded:d,toggle:u,pageSize:n,renderer:f}=e,[m,g]=S.useState(void 0),[x,L]=S.useState([]),c=()=>{g(o())};return S.createElement(Dr,{key:t},l!=null&&l.length?S.createElement(S.Fragment,null,S.createElement(xt,{onClick:()=>u()},S.createElement(Ar,{expanded:d})," ",t," ",S.createElement(Mu,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),d?l.length===1?S.createElement(io,null,r.map(C=>a(C))):S.createElement(io,null,l.map((C,h)=>S.createElement("div",{key:h},S.createElement(Dr,null,S.createElement(xt,{onClick:()=>L(y=>y.includes(h)?y.filter(U=>U!==h):[...y,h])},S.createElement(Ar,{expanded:d})," [",h*n," ..."," ",h*n+n-1,"]"),x.includes(h)?S.createElement(io,null,C.map(y=>a(y))):null)))):null):s==="function"?S.createElement(S.Fragment,null,S.createElement(Le,{renderer:f,label:S.createElement("button",{onClick:c},S.createElement(xt,null,t)," \u{1F504}"," "),value:m,defaultExpanded:{}})):S.createElement(S.Fragment,null,S.createElement(xt,null,t,":")," ",S.createElement(Ru,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function Le(e){let{value:a,defaultExpanded:t,renderer:o=Tu,pageSize:r=100,depth:l=0,...s}=e,[d,u]=S.useState(t),n=c=>{u(C=>typeof c<"u"?c:!C)},f=[],m=typeof a,g,x=[],L=c=>{let C=f.concat(c.label),h=t===!0?{[c.label]:!0}:t?.[c.label];return{...c,subPath:c,path:C,depth:l+1,defaultExpanded:h}};if(Array.isArray(a)?(m="array",g=a.map((c,C)=>L({label:C,value:c}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(m="Iterable",g=Array.from(a,(c,C)=>L({label:C,value:c}))):typeof a=="function"?m="function":typeof a=="object"&&a!==null&&(m="object",g=Object.entries(a).map(c=>{let[C,h]=c;return L({label:C,value:h})})),g){let c=0;for(;c<g.length;)x.push(g.slice(c,c+r)),c=c+r}return o({handleEntry:c=>S.createElement(Le,Ge({key:c.label,renderer:o},s,c)),type:m,subEntries:g,subEntryPages:x,depth:l,value:a,path:f,expanded:d,toggle:n,pageSize:r,...s})}function Nr(e){return Ae.createElement("svg",Ge({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),Ae.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},Ae.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},Ae.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},Ae.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},Ae.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),Ae.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),Ae.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function Or(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=S.useRef(null),d=S.useRef(null),[u,n]=Su("reactTableDevtoolsOpen",a),f=vu(),{style:m={},...g}=o,{style:x={},onClick:L,...c}=r;return f()?S.createElement(l,{ref:s,className:"ReactTableDevtools"},S.createElement(Br,{theme:xe},u?S.createElement(Du,Ge({ref:d},g,{table:t,isOpen:u,setIsOpen:n,style:{maxHeight:"80vh",width:"100%",...m}})):S.createElement("button",Ge({type:"button"},c,{"aria-label":"Open React Table Devtools",onClick:C=>{n(!0),L&&L(C)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...x}}),S.createElement(Nr,{"aria-hidden":!0})))):null}var Du=S.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return S.createElement(Br,{theme:xe},S.createElement(Pu,Ge({ref:t,className:"ReactTableDevtoolsPanel"},s),S.createElement("style",{dangerouslySetInnerHTML:{__html:`
|
|
1
|
+
import"../chunk-IAKOOX7B.js";import{D as ea}from"../chunk-OGMDOPWW.js";import{B as Rt,aa as Mt,c as oe,q as vt,r as Pt,t as kt}from"../chunk-RFCV76TR.js";import{a as Ns,b as ye}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as ri,motion as Fs}from"motion/react";import{useCallback as Ao,useEffect as ul}from"react";import{QueryClient as Js,QueryClientProvider as $s}from"@tanstack/react-query";import*as le from"react";import{onlineManager as Os,useQueryClient as qs}from"@tanstack/react-query";var yo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:d,styleNonce:n,shadowDOMTarget:f}=e;this.#a=oe(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=oe(l),this.#r=oe(s),this.#s=oe(u),this.#l=oe(d)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=Rt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,d;return this.#u?d=this.#u:(d=kt(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=d),Mt(this.#c,this.#t),vt(d,Pt({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()}}))},e);this.#e=!0,this.#d=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#d?.(),this.#e=!1}},wo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:d,styleNonce:n,shadowDOMTarget:f,onClose:m}=e;this.#a=oe(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=oe(l),this.#r=oe(s),this.#s=oe(u),this.#l=oe(d),this.#u=oe(m)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#u[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=Rt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,[d]=this.#u,n;return this.#d?n=this.#d:(n=kt(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=n),Mt(this.#c,this.#t),vt(n,Pt({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()},get onClose(){return d()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as Es}from"react/jsx-runtime";function vo(e){let a=qs(e.client),t=le.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}=e,[n]=le.useState(new yo({client:a,queryFlavor:"React Query",version:"5",onlineManager:Os,buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}));return le.useEffect(()=>{n.setClient(a)},[a,n]),le.useEffect(()=>{o&&n.setButtonPosition(o)},[o,n]),le.useEffect(()=>{r&&n.setPosition(r)},[r,n]),le.useEffect(()=>{n.setInitialIsOpen(l||!1)},[l,n]),le.useEffect(()=>{n.setErrorTypes(s||[])},[s,n]),le.useEffect(()=>(t.current&&n.mount(t.current),()=>{n.unmount()}),[n]),Es("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as we from"react";import{onlineManager as Hs,useQueryClient as zs}from"@tanstack/react-query";import{jsx as Vs}from"react/jsx-runtime";function Po(e){let a=zs(e.client),t=we.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=we.useState(new wo({client:a,queryFlavor:"React Query",version:"5",onlineManager:Hs,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:l,onClose:e.onClose}));return we.useEffect(()=>{s.setClient(a)},[a,s]),we.useEffect(()=>{s.setOnClose(e.onClose??(()=>{}))},[e.onClose,s]),we.useEffect(()=>{s.setErrorTypes(o||[])},[o,s]),we.useEffect(()=>(t.current&&s.mount(t.current),()=>{s.unmount()}),[s]),Vs("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var ko=process.env.NODE_ENV!=="development"?function(){return null}:vo,Si=process.env.NODE_ENV!=="development"?function(){return null}:Po;import{createContext as js,useContext as Ys,useMemo as el,useState as Ya}from"react";import{toast as al}from"sonner";import{Toaster as Ws}from"sonner";import{jsx as Ks}from"react/jsx-runtime";var Ro=({...e})=>Ks(Ws,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as _s}from"nuqs/adapters/custom";import{useEffect as Xs,useState as Qs}from"react";function Zs(){let e=window.location.hash.slice(1),[a,t]=Qs(new URLSearchParams(e));function o(l,{history:s}){let{pathname:u,search:d}=window.location,n=l.toString(),f=`${u}${d}#${n}`;s==="push"?window.history.pushState(null,"",f):window.history.replaceState(null,"",f),t(l)}function r(){let l=window.location.hash.slice(1);return new URLSearchParams(l)}return Xs(()=>{function l(){let s=window.location.hash.slice(1);t(new URLSearchParams(s))}return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var Mo=_s(Zs);import{jsx as et,jsxs as ol}from"react/jsx-runtime";var tl=new Js,To=js(void 0);function Do(e){let{children:a,...t}=e,[o,r]=Ya(null),[l,s]=Ya("tables"),[u,d]=Ya(!1),[n,f]=Ya(!0),m=e.onError;m??=c=>al.error(c.message);let x=el(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),g=()=>d(c=>!c),L=()=>f(c=>!c);return ol($s,{client:tl,children:[et(ko,{}),et(Ro,{}),et(Mo,{children:et(To.Provider,{value:{...t,activeTable:o,activeView:l,isFullscreen:u,setActiveTable:r,setActiveView:s,onError:m,emitTelemetryEvent:x,toggleFullscreen:g,isNavigationOpen:n,toggleNavigation:L},children:a})})]})}function H(){let e=Ys(To);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}var G={};Ns(G,{keyMap:()=>Tt,urlKeys:()=>ll,useQueryState:()=>pe,useQueryStates:()=>ua});ye(G,_i);import{useQueryState as rl,useQueryStates as sl}from"nuqs";import*as _i from"nuqs";function Tt(e){return e}function ll(e){return e}var Wi=Symbol("BRAND_SYMBOL");function pe(e,a){return rl(e,a)}function ua(e,a){return sl(e,a)}function at(){let{activeView:e,setActiveView:a}=H(),[t,o]=pe("view",{defaultValue:"tables",parse:s=>s||"tables",serialize:s=>s??""}),r=Ao(()=>{let s=window.location.hash.slice(1),u=new URLSearchParams(s);for(let d of Array.from(u.keys()))d!=="view"&&u.delete(d);u.set("view","schema-visualiser"),window.history.replaceState(null,"",`#${u.toString()}`)},[]);ul(()=>{t&&(t==="tables"||t==="schema-visualiser")&&a(t)},[t,a]);let l=Ao(s=>{e!==s&&(a(s),s==="schema-visualiser"?r():o(s))},[e,a,o,r]);return{activeView:e,handleViewChange:l}}import{clsx as Hl}from"clsx";var Ft="-",dl=e=>{let a=il(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let u=s.split(Ft);return u[0]===""&&u.length!==1&&u.shift(),qo(u,a)||nl(s)},getConflictingClassGroupIds:(s,u)=>{let d=t[s]||[];return u&&o[s]?[...d,...o[s]]:d}}},qo=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?qo(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(Ft);return a.validators.find(({validator:s})=>s(l))?.classGroupId},Fo=/^\[(.+)\]$/,nl=e=>{if(Fo.test(e)){let a=Fo.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},il=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return cl(Object.entries(e.classGroups),t).forEach(([l,s])=>{At(s,o,l,a)}),o},At=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let l=r===""?a:Bo(a,r);l.classGroupId=t;return}if(typeof r=="function"){if(fl(r)){At(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{At(s,Bo(a,l),t,o)})})},Bo=(e,a)=>{let t=e;return a.split(Ft).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},fl=e=>e.isThemeGetter,cl=(e,a)=>a?e.map(([t,o])=>{let r=o.map(l=>typeof l=="string"?a+l:typeof l=="object"?Object.fromEntries(Object.entries(l).map(([s,u])=>[a+s,u])):l);return[t,r]}):e,pl=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(l,s)=>{t.set(l,s),a++,a>e&&(a=0,o=t,t=new Map)};return{get(l){let s=t.get(l);if(s!==void 0)return s;if((s=o.get(l))!==void 0)return r(l,s),s},set(l,s){t.has(l)?t.set(l,s):r(l,s)}}},Eo="!",ml=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],l=a.length,s=u=>{let d=[],n=0,f=0,m;for(let C=0;C<u.length;C++){let h=u[C];if(n===0){if(h===r&&(o||u.slice(C,C+l)===a)){d.push(u.slice(f,C)),f=C+l;continue}if(h==="/"){m=C;continue}}h==="["?n++:h==="]"&&n--}let x=d.length===0?u:u.substring(f),g=x.startsWith(Eo),L=g?x.substring(1):x,c=m&&m>f?m-f:void 0;return{modifiers:d,hasImportantModifier:g,baseClassName:L,maybePostfixModifierPosition:c}};return t?u=>t({className:u,parseClassName:s}):s},gl=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},xl=e=>({cache:pl(e.cacheSize),parseClassName:ml(e),...dl(e)}),Ll=/\s+/,Cl=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(Ll),u="";for(let d=s.length-1;d>=0;d-=1){let n=s[d],{modifiers:f,hasImportantModifier:m,baseClassName:x,maybePostfixModifierPosition:g}=t(n),L=!!g,c=o(L?x.substring(0,g):x);if(!c){if(!L){u=n+(u.length>0?" "+u:u);continue}if(c=o(x),!c){u=n+(u.length>0?" "+u:u);continue}L=!1}let C=gl(f).join(":"),h=m?C+Eo:C,y=h+c;if(l.includes(y))continue;l.push(y);let U=r(c,L);for(let z=0;z<U.length;++z){let re=U[z];l.push(h+re)}u=n+(u.length>0?" "+u:u)}return u};function hl(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=Uo(a))&&(o&&(o+=" "),o+=t);return o}var Uo=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=Uo(e[o]))&&(t&&(t+=" "),t+=a);return t};function No(e,...a){let t,o,r,l=s;function s(d){let n=a.reduce((f,m)=>m(f),e());return t=xl(n),o=t.cache.get,r=t.cache.set,l=u,u(d)}function u(d){let n=o(d);if(n)return n;let f=Cl(d,t);return r(d,f),f}return function(){return l(hl.apply(null,arguments))}}var F=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},Ho=/^\[(?:([a-z-]+):)?(.+)\]$/i,Il=/^\d+\/\d+$/,Sl=new Set(["px","full","screen"]),bl=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,yl=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,wl=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,vl=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Pl=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ve=e=>aa(e)||Sl.has(e)||Il.test(e),Be=e=>ta(e,"length",Bl),aa=e=>!!e&&!Number.isNaN(Number(e)),Dt=e=>ta(e,"number",aa),da=e=>!!e&&Number.isInteger(Number(e)),kl=e=>e.endsWith("%")&&aa(e.slice(0,-1)),w=e=>Ho.test(e),Ne=e=>bl.test(e),Rl=new Set(["length","size","percentage"]),Ml=e=>ta(e,Rl,zo),Tl=e=>ta(e,"position",zo),Dl=new Set(["image","url"]),Al=e=>ta(e,Dl,Ol),Fl=e=>ta(e,"",Nl),na=()=>!0,ta=(e,a,t)=>{let o=Ho.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},Bl=e=>yl.test(e)&&!wl.test(e),zo=()=>!1,Nl=e=>vl.test(e),Ol=e=>Pl.test(e);var Oo=()=>{let e=F("colors"),a=F("spacing"),t=F("blur"),o=F("brightness"),r=F("borderColor"),l=F("borderRadius"),s=F("borderSpacing"),u=F("borderWidth"),d=F("contrast"),n=F("grayscale"),f=F("hueRotate"),m=F("invert"),x=F("gap"),g=F("gradientColorStops"),L=F("gradientColorStopPositions"),c=F("inset"),C=F("margin"),h=F("opacity"),y=F("padding"),U=F("saturate"),z=F("scale"),re=F("sepia"),V=F("skew"),Z=F("space"),W=F("translate"),B=()=>["auto","contain","none"],v=()=>["auto","hidden","clip","visible","scroll"],J=()=>["auto",w,a],M=()=>[w,a],Se=()=>["",ve,Be],je=()=>["auto",aa,w],Ja=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Ye=()=>["solid","dashed","dotted","double","none"],$a=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],la=()=>["start","end","center","between","around","evenly","stretch"],We=()=>["","0",w],ja=()=>["auto","avoid","all","avoid-page","page","left","right","column"],se=()=>[aa,w];return{cacheSize:500,separator:":",theme:{colors:[na],spacing:[ve,Be],blur:["none","",Ne,w],brightness:se(),borderColor:[e],borderRadius:["none","","full",Ne,w],borderSpacing:M(),borderWidth:Se(),contrast:se(),grayscale:We(),hueRotate:se(),invert:We(),gap:M(),gradientColorStops:[e],gradientColorStopPositions:[kl,Be],inset:J(),margin:J(),opacity:se(),padding:M(),saturate:se(),scale:se(),sepia:We(),skew:se(),space:M(),translate:M()},classGroups:{aspect:[{aspect:["auto","square","video",w]}],container:["container"],columns:[{columns:[Ne]}],"break-after":[{"break-after":ja()}],"break-before":[{"break-before":ja()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Ja(),w]}],overflow:[{overflow:v()}],"overflow-x":[{"overflow-x":v()}],"overflow-y":[{"overflow-y":v()}],overscroll:[{overscroll:B()}],"overscroll-x":[{"overscroll-x":B()}],"overscroll-y":[{"overscroll-y":B()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[c]}],"inset-x":[{"inset-x":[c]}],"inset-y":[{"inset-y":[c]}],start:[{start:[c]}],end:[{end:[c]}],top:[{top:[c]}],right:[{right:[c]}],bottom:[{bottom:[c]}],left:[{left:[c]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",da,w]}],basis:[{basis:J()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",w]}],grow:[{grow:We()}],shrink:[{shrink:We()}],order:[{order:["first","last","none",da,w]}],"grid-cols":[{"grid-cols":[na]}],"col-start-end":[{col:["auto",{span:["full",da,w]},w]}],"col-start":[{"col-start":je()}],"col-end":[{"col-end":je()}],"grid-rows":[{"grid-rows":[na]}],"row-start-end":[{row:["auto",{span:[da,w]},w]}],"row-start":[{"row-start":je()}],"row-end":[{"row-end":je()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",w]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",w]}],gap:[{gap:[x]}],"gap-x":[{"gap-x":[x]}],"gap-y":[{"gap-y":[x]}],"justify-content":[{justify:["normal",...la()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...la(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...la(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[y]}],px:[{px:[y]}],py:[{py:[y]}],ps:[{ps:[y]}],pe:[{pe:[y]}],pt:[{pt:[y]}],pr:[{pr:[y]}],pb:[{pb:[y]}],pl:[{pl:[y]}],m:[{m:[C]}],mx:[{mx:[C]}],my:[{my:[C]}],ms:[{ms:[C]}],me:[{me:[C]}],mt:[{mt:[C]}],mr:[{mr:[C]}],mb:[{mb:[C]}],ml:[{ml:[C]}],"space-x":[{"space-x":[Z]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[Z]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",w,a]}],"min-w":[{"min-w":[w,a,"min","max","fit"]}],"max-w":[{"max-w":[w,a,"none","full","min","max","fit","prose",{screen:[Ne]},Ne]}],h:[{h:[w,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[w,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[w,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[w,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Ne,Be]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Dt]}],"font-family":[{font:[na]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",w]}],"line-clamp":[{"line-clamp":["none",aa,Dt]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ve,w]}],"list-image":[{"list-image":["none",w]}],"list-style-type":[{list:["none","disc","decimal",w]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[h]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[h]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Ye(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ve,Be]}],"underline-offset":[{"underline-offset":["auto",ve,w]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:M()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",w]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",w]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[h]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Ja(),Tl]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Ml]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Al]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[L]}],"gradient-via-pos":[{via:[L]}],"gradient-to-pos":[{to:[L]}],"gradient-from":[{from:[g]}],"gradient-via":[{via:[g]}],"gradient-to":[{to:[g]}],rounded:[{rounded:[l]}],"rounded-s":[{"rounded-s":[l]}],"rounded-e":[{"rounded-e":[l]}],"rounded-t":[{"rounded-t":[l]}],"rounded-r":[{"rounded-r":[l]}],"rounded-b":[{"rounded-b":[l]}],"rounded-l":[{"rounded-l":[l]}],"rounded-ss":[{"rounded-ss":[l]}],"rounded-se":[{"rounded-se":[l]}],"rounded-ee":[{"rounded-ee":[l]}],"rounded-es":[{"rounded-es":[l]}],"rounded-tl":[{"rounded-tl":[l]}],"rounded-tr":[{"rounded-tr":[l]}],"rounded-br":[{"rounded-br":[l]}],"rounded-bl":[{"rounded-bl":[l]}],"border-w":[{border:[u]}],"border-w-x":[{"border-x":[u]}],"border-w-y":[{"border-y":[u]}],"border-w-s":[{"border-s":[u]}],"border-w-e":[{"border-e":[u]}],"border-w-t":[{"border-t":[u]}],"border-w-r":[{"border-r":[u]}],"border-w-b":[{"border-b":[u]}],"border-w-l":[{"border-l":[u]}],"border-opacity":[{"border-opacity":[h]}],"border-style":[{border:[...Ye(),"hidden"]}],"divide-x":[{"divide-x":[u]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[u]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[h]}],"divide-style":[{divide:Ye()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...Ye()]}],"outline-offset":[{"outline-offset":[ve,w]}],"outline-w":[{outline:[ve,Be]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Se()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[h]}],"ring-offset-w":[{"ring-offset":[ve,Be]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Ne,Fl]}],"shadow-color":[{shadow:[na]}],opacity:[{opacity:[h]}],"mix-blend":[{"mix-blend":[...$a(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":$a()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",Ne,w]}],grayscale:[{grayscale:[n]}],"hue-rotate":[{"hue-rotate":[f]}],invert:[{invert:[m]}],saturate:[{saturate:[U]}],sepia:[{sepia:[re]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[f]}],"backdrop-invert":[{"backdrop-invert":[m]}],"backdrop-opacity":[{"backdrop-opacity":[h]}],"backdrop-saturate":[{"backdrop-saturate":[U]}],"backdrop-sepia":[{"backdrop-sepia":[re]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",w]}],duration:[{duration:se()}],ease:[{ease:["linear","in","out","in-out",w]}],delay:[{delay:se()}],animate:[{animate:["none","spin","ping","pulse","bounce",w]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[z]}],"scale-x":[{"scale-x":[z]}],"scale-y":[{"scale-y":[z]}],rotate:[{rotate:[da,w]}],"translate-x":[{"translate-x":[W]}],"translate-y":[{"translate-y":[W]}],"skew-x":[{"skew-x":[V]}],"skew-y":[{"skew-y":[V]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",w]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",w]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":M()}],"scroll-mx":[{"scroll-mx":M()}],"scroll-my":[{"scroll-my":M()}],"scroll-ms":[{"scroll-ms":M()}],"scroll-me":[{"scroll-me":M()}],"scroll-mt":[{"scroll-mt":M()}],"scroll-mr":[{"scroll-mr":M()}],"scroll-mb":[{"scroll-mb":M()}],"scroll-ml":[{"scroll-ml":M()}],"scroll-p":[{"scroll-p":M()}],"scroll-px":[{"scroll-px":M()}],"scroll-py":[{"scroll-py":M()}],"scroll-ps":[{"scroll-ps":M()}],"scroll-pe":[{"scroll-pe":M()}],"scroll-pt":[{"scroll-pt":M()}],"scroll-pr":[{"scroll-pr":M()}],"scroll-pb":[{"scroll-pb":M()}],"scroll-pl":[{"scroll-pl":M()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",w]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[ve,Be,Dt]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},ql=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{ia(e,"cacheSize",a),ia(e,"prefix",t),ia(e,"separator",o),ia(e,"experimentalParseClassName",r);for(let u in s)El(e[u],s[u]);for(let u in l)Ul(e[u],l[u]);return e},ia=(e,a,t)=>{t!==void 0&&(e[a]=t)},El=(e,a)=>{if(a)for(let t in a)ia(e,t,a[t])},Ul=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},Vo=(e,...a)=>typeof e=="function"?No(Oo,e,...a):No(()=>ql(Oo(),e),...a);var zl=Vo({prefix:"ps-"});function p(...e){return zl(Hl(e))}import{useIsMutating as An}from"@tanstack/react-query";import{forwardRef as Gl,createElement as Wl}from"react";var Go=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),tt=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Vl,createElement as Ko}from"react";var Wo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var _o=Vl(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...u},d)=>Ko("svg",{ref:d,...Wo,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:tt("lucide",r),...u},[...s.map(([n,f])=>Ko(n,f)),...Array.isArray(l)?l:[l]]));var b=(e,a)=>{let t=Gl(({className:o,...r},l)=>Wl(_o,{ref:l,iconNode:a,className:tt(`lucide-${Go(e)}`,o),...r}));return t.displayName=`${e}`,t};var Oe=b("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var fa=b("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var ca=b("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);var ue=b("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var me=b("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var pa=b("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var de=b("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var ma=b("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var ga=b("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var xa=b("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var Pe=b("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var qe=b("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var Ke=b("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var La=b("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var Ca=b("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var ha=b("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var Ia=b("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var Sa=b("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);var ba=b("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var ya=b("Key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);var wa=b("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);var va=b("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var Pa=b("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var ka=b("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ra=b("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ee=b("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Ue=b("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var Ma=b("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);var Ta=b("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var Da=b("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var Aa=b("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var Fa=b("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var Ba=b("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);var He=b("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as Fn}from"motion-plus/react";import{useEffect as Bn,useState as Nn}from"react";import{toast as On}from"sonner";import{cva as Kl}from"class-variance-authority";import{jsx as _l}from"react/jsx-runtime";var Bt=Kl("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function ot({className:e,variant:a,...t}){return _l("div",{className:p(Bt({variant:a}),e),...t})}import{Slot as Xl}from"@radix-ui/react-slot";import{cva as Ql}from"class-variance-authority";import*as Xo from"react";import{jsx as Jl}from"react/jsx-runtime";var Zl=Ql("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),D=Xo.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>Jl(o?Xl:"button",{className:p(Zl({variant:a,size:t,className:e})),ref:l,...r}));D.displayName="Button";import*as ge from"@radix-ui/react-popover";import*as Zo from"react";import{jsx as Qo}from"react/jsx-runtime";var Jo=ge.Root,$o=ge.Trigger;var Nt=Zo.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Qo(ge.Portal,{children:Qo(ge.Content,{ref:r,align:a,sideOffset:t,className:p("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));Nt.displayName=ge.Content.displayName;import{useMutation as jl,useQueryClient as Yl}from"@tanstack/react-query";function $l(e,a){let t={filter:ea(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function jo(e,a){return{...e,__ps_rowid:$l(e,a)}}function rt(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:jo(t,a)}:o!==void 0?{...e,rows:o.map(r=>jo(r,a))}:e}function Yo(){let{activeTable:e,adapter:a}=H(),t=Yl(),{schema:o=null,name:r=null}=e??{};return jl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,u]=await a.insert({rows:l,table:e},{});if(s)throw s;return rt(u,e)},onSuccess(l){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},s=>s==null?s:{...s,rows:[...l.rows,...s.rows]})},retry:!1})}import{useQuery as eu}from"@tanstack/react-query";function er(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=H();return eu({enabled:!!l,gcTime:0,placeholderData(u,d){let[,n,,f]=d?.queryKey||[];if(!(n!==l?.schema||f!==l?.name))return u},async queryFn({signal:u}){let[d,n]=await s.query({pageIndex:a,pageSize:t,sortOrder:o,table:l,filter:r},{abortSignal:u});if(d)throw d;return rt(n,l)},queryKey:["schema",l?.schema||null,"table",l?.name||null,"query","sortOrder",o.map(u=>`${u.column}:${u.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as au,useQueryClient as tu}from"@tanstack/react-query";function ar(){let{activeTable:e,adapter:a,onError:t}=H(),o=tu(),r=["schema",e?.schema??null,"table",e?.name??null];return au({mutationFn:async l=>{let[s,u]=await a.update(l.details,l.options);if(s)throw s;return u},mutationKey:[...r,"update"],onError(l,s){let{changes:u,row:d}=s.details;t(l),Ot({getFinderFn(){let n={...d,...u},f=ea(n,e.columns);return m=>f.every(([x,g])=>m[x]===g)},queryClient:o,table:e,updaterFn:function(f){return{...f,...Object.keys(u).reduce((m,x)=>({...m,[x]:d[x]}),{})}}})},onMutate(l){let{details:s}=l;Ot({getFinderFn(){let{row:u}=s,d=ea(u,e.columns);return n=>d.every(([f,m])=>n[f]===m)},queryClient:o,table:e,updaterFn:function(d){return{...d,...s.changes}}})},onSuccess(l,s){Ot({getFinderFn(){let{changes:u,row:d}=s.details,n={...d,...u},f=ea(n,e.columns);return m=>f.every(([x,g])=>m[x]===g)},queryClient:o,table:e,updaterFn:function(d){let{__ps_updated_at__:n}=d,{row:f}=l;return n!=null&&f.__ps_updated_at__<=n?d:{...d,...f}}})},retry:!1})}function Ot(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,l;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},s=>{let{rows:u=[]}=s||{};if(u.length===0)return s;let d=u.findIndex(l??=a());if(d===-1)return s;let n=r(u[d]);return{...s,rows:[...u.slice(0,d),n,...u.slice(d+1)]}})}import{useEffect as ou,useMemo as tr,useState as ru}from"react";import su from"short-uuid";var lu={kind:"FilterGroup",filters:[],after:"and",id:su.generate()},or=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=or(t));return a};function rr(){let[e,a]=pe("filter",{defaultValue:JSON.stringify(lu)}),t=tr(()=>JSON.parse(e),[e]),o=u=>void a(JSON.stringify(u)),[r,l]=ru(t);ou(()=>{l(t)},[t]);let s=tr(()=>or(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l,totalEditingFilters:s}}import{useIsMutating as uu}from"@tanstack/react-query";function st(){return uu({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as du}from"react";var nu=25,iu={pageIndex:G.parseAsIndex.withDefault(0),pageSize:G.parseAsInteger.withDefault(nu)};function lt(){let[{pageIndex:e,pageSize:a},t]=ua(iu),o=du(r=>{t(typeof r=="function"?l=>{let s=r(l);return{pageIndex:s.pageIndex,pageSize:s.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as pu,useState as mu}from"react";import{useMutation as fu,useQueryClient as cu}from"@tanstack/react-query";function sr(){let{activeTable:e,adapter:a}=H(),t=cu(),{schema:o=null,name:r=null}=e??{};return fu({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(l){let[s,u]=await a.delete({rows:l,table:e},{});if(s)throw s;return u},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function lr(e){let{activeTable:a,onError:t}=H(),{paginationState:o}=lt(),[r,l]=mu({}),s=Object.keys(r).length!==0,{mutate:u}=sr();pu(()=>l({}),[a,o.pageIndex]);function d(){let n=e?.rows.filter(f=>r[f.__ps_rowid]);u(n??[],{onSuccess(){l({})},onError:t})}return{deleteSelection:d,setRowSelectionState:l,rowSelectionState:r,isSelecting:s}}import{useEffect as gu,useState as xu}from"react";function ur(){let[e,a]=pe("sort",{defaultValue:""}),t=s=>{if(!s)return[];try{return s.split(",").map(u=>{let[d,n]=u.split(":");return!d||!n||!["asc","desc"].includes(n)?null:{column:d,direction:n}}).filter(Boolean)}catch(u){return console.error("Failed to parse sorting parameter:",u),[]}},[o,r]=xu(()=>t(e));return gu(()=>{let s=t(e);r(s)},[e]),{sortingState:o,setSortingState:s=>{let u=typeof s=="function"?s(o):s;r(u);let d=u.length>0?u.map(n=>`${n.column}:${n.direction}`).join(","):null;a(d)}}}import{isObjectType as Vu}from"remeda";import{forwardRef as ku}from"react";import*as Re from"react";import{jsx as ke}from"react/jsx-runtime";var qt=Re.forwardRef(({className:e,...a},t)=>ke("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:ke("table",{ref:t,className:p("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));qt.displayName="Table";var Et=Re.forwardRef(({className:e,...a},t)=>ke("thead",{ref:t,className:p(e),...a}));Et.displayName="TableHeader";var Ut=Re.forwardRef(({className:e,...a},t)=>ke("tbody",{ref:t,className:p("[&_tr:last-child]:ps-border-0",e),...a}));Ut.displayName="TableBody";var Lu=Re.forwardRef(({className:e,...a},t)=>ke("tfoot",{ref:t,className:p("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Lu.displayName="TableFooter";var _e=Re.forwardRef(({className:e,...a},t)=>ke("tr",{ref:t,className:p("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));_e.displayName="TableRow";var Xe=Re.forwardRef(({className:e,...a},t)=>ke("th",{ref:t,className:p("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));Xe.displayName="TableHead";var ze=Re.forwardRef(({className:e,...a},t)=>ke("td",{ref:t,className:p("ps-align-middle",e),...a}));ze.displayName="TableCell";var Cu=Re.forwardRef(({className:e,...a},t)=>ke("caption",{ref:t,className:p("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));Cu.displayName="TableCaption";import{isValidElement as Pu}from"react";import*as P from"@radix-ui/react-context-menu";import*as Me from"react";import{jsx as $,jsxs as Vt}from"react/jsx-runtime";var dr=P.Root,nr=P.Trigger;var hu=Me.forwardRef(({className:e,inset:a,children:t,...o},r)=>Vt(P.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,$(de,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));hu.displayName=P.SubTrigger.displayName;var Iu=Me.forwardRef(({className:e,...a},t)=>$(P.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));Iu.displayName=P.SubContent.displayName;var Ht=Me.forwardRef(({className:e,...a},t)=>$(P.Portal,{children:$(P.Content,{ref:t,className:p("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));Ht.displayName=P.Content.displayName;var zt=Me.forwardRef(({className:e,inset:a,...t},o)=>$(P.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));zt.displayName=P.Item.displayName;var Su=Me.forwardRef(({className:e,children:a,checked:t,...o},r)=>Vt(P.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(P.ItemIndicator,{children:$(ue,{className:"ps-h-4 ps-w-4"})})}),a]}));Su.displayName=P.CheckboxItem.displayName;var bu=Me.forwardRef(({className:e,children:a,...t},o)=>Vt(P.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(P.ItemIndicator,{children:$(Ke,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));bu.displayName=P.RadioItem.displayName;var yu=Me.forwardRef(({className:e,inset:a,...t},o)=>$(P.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));yu.displayName=P.Label.displayName;var wu=Me.forwardRef(({className:e,...a},t)=>$(P.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));wu.displayName=P.Separator.displayName;var vu=({className:e,...a})=>$("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});vu.displayName="ContextMenuShortcut";import{jsx as Gt,jsxs as ir}from"react/jsx-runtime";function fr(e){let{children:a}=e;return ir(dr,{children:[Gt(nr,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),Gt(Ht,{children:ir(zt,{onClick:()=>{let t=Wt(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[Gt(La,{size:12}),"Copy"]})})]})}function Wt(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(Pu(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?Wt(a.children):""}return Array.isArray(e)?e.map(Wt).join(""):""}import{jsx as cr}from"react/jsx-runtime";function K(e){let{children:a,className:t,ref:o,style:r,...l}=e;return cr(ze,{...l,className:p("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:cr(fr,{children:a})})}import{jsx as pr}from"react/jsx-runtime";var Kt=ku((e,a)=>{let{containerProps:t,value:o,...r}=e;return pr(K,{...r,...t,ref:a,children:pr("div",{"data-cell-type":"boolean",children:String(!!o)})})});Kt.displayName="BooleanCell";import{forwardRef as Ru}from"react";import{jsx as Mu}from"react/jsx-runtime";var _t=Ru((e,a)=>{let{containerProps:t,value:o,...r}=e;return Mu(K,{...r,...t,ref:a,children:String(o)})});_t.displayName="DateCell";import{forwardRef as Tu}from"react";import{jsx as Du}from"react/jsx-runtime";var Na=Tu((e,a)=>{let{containerProps:t,...o}=e;return Du(K,{...o,...t,ref:a})});Na.displayName="EmptyCell";import{forwardRef as Au}from"react";import{jsx as Fu}from"react/jsx-runtime";var Xt=Au((e,a)=>{let{containerProps:t,value:o,options:r,...l}=e;return Fu(K,{...l,...t,ref:a,children:String(o)})});Xt.displayName="EnumCell";import{forwardRef as Bu}from"react";import{jsx as Nu}from"react/jsx-runtime";var ut=Bu((e,a)=>{let{containerProps:t,value:o,...r}=e;return Nu(K,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});ut.displayName="JSONCell";import{forwardRef as Ou}from"react";import{jsx as mr}from"react/jsx-runtime";var Qt=Ou((e,a)=>{let{containerProps:t,...o}=e;return mr(K,{...o,...t,ref:a,children:mr("code",{className:"ps-text-muted-foreground/60",children:"NULL"})})});Qt.displayName="NullCell";import{forwardRef as qu}from"react";import{jsx as gr}from"react/jsx-runtime";var Zt=qu((e,a)=>{let{containerProps:t,value:o,...r}=e;return gr(K,{...r,...t,ref:a,children:gr("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});Zt.displayName="NumericCell";import{forwardRef as Eu}from"react";import{jsx as Uu}from"react/jsx-runtime";var dt=Eu((e,a)=>{let{containerProps:t,value:o,...r}=e;return Uu(K,{...r,...t,ref:a,children:String(o)})});dt.displayName="RawCell";import{forwardRef as Hu}from"react";import{jsx as zu}from"react/jsx-runtime";var Jt=Hu((e,a)=>{let{containerProps:t,value:o,...r}=e;return zu(K,{...r,...t,ref:a,children:String(o)})});Jt.displayName="TimeCell";import{jsx as ne}from"react/jsx-runtime";function nt({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return ne(Na,{containerProps:t});if(o===null)return ne(Qt,{containerProps:t});let{group:r,options:l,isArray:s}=a.datatype;if(r==="json"||s)return ne(ut,{containerProps:t,value:o});if(r==="string")return ne(dt,{containerProps:t,value:o});if(r==="enum")return ne(Xt,{containerProps:t,value:o,options:l});if(r==="boolean")return ne(Kt,{containerProps:t,value:o});if(r==="datetime")return ne(_t,{containerProps:t,value:o});if(r==="time")return ne(Jt,{containerProps:t,value:o});if(r==="numeric")return ne(Zt,{containerProps:t,value:o});if(r==="raw")return Vu(o)?ne(ut,{containerProps:t,value:o}):ne(dt,{containerProps:t,value:o});throw new Error(`Datatype group "${r}" was not handled in '/cell/get-cell.tsx'`)}import{forwardRef as Gu}from"react";import*as Oa from"@radix-ui/react-checkbox";import*as xr from"react";import{jsx as $t}from"react/jsx-runtime";var qa=xr.forwardRef(({className:e,...a},t)=>$t(Oa.Root,{ref:t,className:p("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:$t(Oa.Indicator,{className:p("ps-flex ps-items-center ps-justify-center ps-text-current"),children:$t(ue,{className:"ps-h-4 ps-w-4"})})}));qa.displayName=Oa.Root.displayName;import{jsx as jt}from"react/jsx-runtime";var Yt=Gu((e,a)=>{let{table:t,readonly:o,className:r,style:l,...s}=e;return jt("div",{ref:a,className:r,style:l,...s,children:jt("div",{className:"ps-flex ps-items-center ps-justify-center ps-w-full",children:jt(qa,{checked:t.getIsAllRowsSelected(),onCheckedChange:u=>t.toggleAllRowsSelected(!!u),disabled:o})})})});Yt.displayName="SelectHeaderCell";import{forwardRef as Ku}from"react";import{Fragment as Wu,jsx as eo}from"react/jsx-runtime";function Lr(e){let{children:a,className:t,ref:o,style:r,isHeader:l=!1,...s}=e,u=p("ps-flex ps-items-center ps-justify-center ps-p-0 ps-border-r ps-border-b ps-border-table-border ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)]");return eo(Wu,{children:l?eo(Xe,{...s,className:p(u,"ps-h-10 ps-bg-table-head ps-z-30 ps-sticky ps-top-0 ps-left-0",t),ref:o,children:a}):eo(ze,{...s,className:p(u,"ps-z-10 ps-h-[39px]",t),ref:o,style:r,children:a})})}import{jsx as Cr}from"react/jsx-runtime";var ao=Ku((e,a)=>{let{row:t,readonly:o,className:r,style:l,...s}=e;return Cr(Lr,{ref:a,className:r,style:l,...s,children:Cr(qa,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});ao.displayName="SelectRowCell";import*as Te from"@radix-ui/react-popover";import*as X from"react";import{jsx as Ea}from"react/jsx-runtime";var hr=X.createContext(null),to=({children:e,...a})=>{let[t,o]=X.useState(!1);return Ea(hr.Provider,{value:{open:t,setOpen:o},children:Ea(Te.Root,{open:t,onOpenChange:o,...a,children:e})})};to.displayName="PopoverCell";var oo=X.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=X.useRef(null);return Ea(Te.Trigger,{ref:s=>{typeof r=="function"?r(s):r&&(r.current=s),l.current=s},className:p("w-full h-full cursor-pointer",t),...o,children:e})});oo.displayName="PopoverCellTrigger";var ro=X.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ea(Te.Portal,{children:Ea(Te.Content,{ref:r,align:a,sideOffset:t,className:p("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:l=>l.preventDefault(),...o})}));ro.displayName=Te.Content.displayName;function j(e){let a=X.useContext(hr),t=X.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=X.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return X.useEffect(()=>{let r=l=>{(l.key==="Enter"||l.key==="Return")&&!l.shiftKey?t():l.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as Ir,jsxs as _u}from"react/jsx-runtime";function it(e){let{cellComponent:a,inputComponent:t}=e;return _u(to,{children:[Ir(oo,{asChild:!0,children:a}),Ir(ro,{align:"start",alignOffset:-1,className:p("ps-rounded-none ps-bg-muted","ps-p-0 ps-z-30 ps-gap-0 ps-border-primary","ps-w-[calc(var(--radix-popover-trigger-width)_+_1px)] ps-max-w-72 ps-min-w-[200px]"),sideOffset:-40,children:t})]})}import{closestCenter as od,DndContext as rd,DragOverlay as sd,KeyboardSensor as ld,PointerSensor as ud,useSensor as Pr,useSensors as dd}from"@dnd-kit/core";import{arrayMove as nd,SortableContext as id,sortableKeyboardCoordinates as fd,useSortable as cd,verticalListSortingStrategy as pd}from"@dnd-kit/sortable";import{CSS as md}from"@dnd-kit/utilities";import{motion as uo}from"motion/react";import{AnimateNumber as gd}from"motion-plus/react";import{useMemo as xd,useState as no}from"react";import{Fragment as Ld}from"react/jsx-runtime";import{createPortal as Cd}from"react-dom";import kr from"short-uuid";function Sr(e,a,t){let o=e?.datatype.group;if(o===void 0)return"";if(a==="is"||a==="is not")return t.toLowerCase()==="null"?null:t;if(o==="boolean")return t==="true";if(o==="datetime"||o==="enum"||o==="raw"||o==="string"||o==="time")return t;if(o==="json")try{return JSON.parse(t)}catch{return t}return o==="numeric"?t===""?null:Number(t):t}function br(e,a,t){let o=e?.datatype.group;if(a&&(a==="is"||a==="is not"))return t===null?"null":String(t);if(o===void 0||t==null)return"";if(o==="boolean"||o==="datetime"||o==="enum"||o==="numeric"||o==="raw"||o==="string"||o==="time")return String(t);if(o==="json"){if(t==="")return"";try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}import*as k from"@radix-ui/react-dropdown-menu";import*as De from"react";import{jsx as Y,jsxs as so}from"react/jsx-runtime";var ft=k.Root,ct=k.Trigger;var Xu=De.forwardRef(({className:e,inset:a,children:t,...o},r)=>so(k.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,Y(de,{className:"ps-ml-auto"})]}));Xu.displayName=k.SubTrigger.displayName;var Qu=De.forwardRef(({className:e,...a},t)=>Y(k.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));Qu.displayName=k.SubContent.displayName;var Ua=De.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Y(k.Portal,{children:Y(k.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Ua.displayName=k.Content.displayName;var pt=De.forwardRef(({className:e,inset:a,...t},o)=>Y(k.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));pt.displayName=k.Item.displayName;var Zu=De.forwardRef(({className:e,children:a,checked:t,...o},r)=>so(k.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[Y("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Y(k.ItemIndicator,{children:Y(ue,{className:"ps-h-4 ps-w-4"})})}),a]}));Zu.displayName=k.CheckboxItem.displayName;var Ju=De.forwardRef(({className:e,children:a,...t},o)=>so(k.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[Y("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Y(k.ItemIndicator,{children:Y(Ke,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));Ju.displayName=k.RadioItem.displayName;var $u=De.forwardRef(({className:e,inset:a,...t},o)=>Y(k.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));$u.displayName=k.Label.displayName;var ju=De.forwardRef(({className:e,...a},t)=>Y(k.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));ju.displayName=k.Separator.displayName;var Yu=({className:e,...a})=>Y("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Yu.displayName="DropdownMenuShortcut";import*as yr from"react";import{jsx as ed}from"react/jsx-runtime";var ie=yr.forwardRef(({className:e,type:a,...t},o)=>ed("input",{type:a,className:p("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));ie.displayName="Input";import*as R from"@radix-ui/react-select";import*as Ve from"react";import{jsx as Q,jsxs as lo}from"react/jsx-runtime";var mt=R.Root;var gt=R.Value,Ha=Ve.forwardRef(({className:e,children:a,...t},o)=>lo(R.Trigger,{ref:o,className:p("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...t,children:[a,Q(R.Icon,{asChild:!0,children:Q(me,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));Ha.displayName=R.Trigger.displayName;var wr=Ve.forwardRef(({className:e,...a},t)=>Q(R.ScrollUpButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Q(ma,{className:"ps-h-4 ps-w-4"})}));wr.displayName=R.ScrollUpButton.displayName;var vr=Ve.forwardRef(({className:e,...a},t)=>Q(R.ScrollDownButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Q(me,{className:"ps-h-4 ps-w-4"})}));vr.displayName=R.ScrollDownButton.displayName;var za=Ve.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>Q(R.Portal,{children:lo(R.Content,{ref:r,className:p("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[Q(wr,{}),Q(R.Viewport,{className:p("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),Q(vr,{})]})}));za.displayName=R.Content.displayName;var ad=Ve.forwardRef(({className:e,...a},t)=>Q(R.Label,{ref:t,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));ad.displayName=R.Label.displayName;var _=Ve.forwardRef(({className:e,children:a,...t},o)=>lo(R.Item,{ref:o,className:p("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[Q("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Q(R.ItemIndicator,{children:Q(ue,{className:"ps-h-4 ps-w-4"})})}),Q(R.ItemText,{children:a})]}));_.displayName=R.Item.displayName;var td=Ve.forwardRef(({className:e,...a},t)=>Q(R.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));td.displayName=R.Separator.displayName;import{Fragment as bd,jsx as I,jsxs as O}from"react/jsx-runtime";var Rr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>O(mt,{value:e,onValueChange:a,disabled:t,children:[I(Ha,{className:o,children:I(gt,{placeholder:"Logic"})}),O(za,{children:[I(_,{value:"and",children:I("div",{className:"ps-font-semibold",children:"AND"})}),I(_,{value:"or",children:I("div",{className:"ps-font-semibold",children:"OR"})})]})]}),hd=({activeId:e,items:a,table:t})=>{let o=a.find(u=>u.id===e);if(!o)return null;let r="and",l=!1,s=a.findIndex(u=>u.id===e);if(s>0){let u=a[s-1];u&&(r=u.after,l=!0)}return o.kind==="ColumnFilter"?I(Mr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):I(io,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},Id=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:l,activeDragId:s,onDragStart:u,onDragEndSignal:d})=>{let n=xd(()=>e.map(x=>x.id),[e]),f=dd(Pr(ud,{activationConstraint:{distance:8}}),Pr(ld,{coordinateGetter:fd}));return O(rd,{sensors:f,collisionDetection:od,onDragStart:u,onDragEnd:x=>{let{active:g,over:L}=x;if(L&&g.id!==L.id){let c=e.findIndex(h=>h.id===g.id),C=e.findIndex(h=>h.id===L.id);c!==-1&&C!==-1&&l(c,C)}d()},children:[I(id,{items:n,strategy:pd,children:e.map((x,g)=>{let L=!1,c,C,h=!1;if(g>0){L=!0;let y=e[g-1];c=y.after,C=U=>{let z={...y,after:U};o(g-1,z)},h=g-1===e.length-1}return I(Sd,{filter:x,onUpdate:y=>o(g,y),onDelete:()=>r(g),parentDndId:a,table:t,showLeadingOperator:L,leadingOperatorValue:c,onLeadingOperatorChange:C,isLeadingOperatorTargetLast:h},x.id)})}),Cd(I(sd,{children:s?I("div",{className:"ps-opacity-80",children:I(hd,{activeId:s,items:e,table:t})}):null}),document.body)]})},Sd=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let{attributes:n,listeners:f,setNodeRef:m,transform:x,transition:g,isDragging:L}=cd({id:e.id,data:{type:e.kind,parentId:o}}),c={transform:md.Transform.toString(x),transition:g,opacity:L?.5:1};return I("div",{ref:m,style:c,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?I(Mr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d}):I(io,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})})},Mr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let n=L=>{a({...e,column:L})},f=L=>{a({...e,operator:L})},m=L=>{let c=L.target.value,C=r.columns[e.column];if(C!==void 0){let h=Sr(C,e.operator,c);a({...e,value:h})}},[x,g]=no(br(r.columns[e.column],e.operator,e.value));return O(uo.div,{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[O("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[I("div",{...o,className:"ps-cursor-grab",children:I(Ia,{className:"ps-text-gray-500",size:16})}),O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[l&&u?I(Rr,{value:s,onValueChange:u,disabled:d}):null,O(mt,{value:e.column,onValueChange:n,children:[I(Ha,{className:"ps-w-28 ps-text-xs ps-h-8",children:I(gt,{placeholder:"Select column"})}),I(za,{children:Object.keys(r.columns).map(L=>I(_,{value:L,children:L},L))})]}),O(mt,{value:e.operator,onValueChange:L=>f(L),children:[I(Ha,{className:"ps-w-20 ps-text-xs ps-h-8",children:I(gt,{placeholder:"Operator"})}),O(za,{children:[I(_,{value:"=",children:"="}),I(_,{value:"!=",children:"!="}),I(_,{value:">",children:">"}),I(_,{value:">=",children:">="}),I(_,{value:"<",children:"<"}),I(_,{value:"<=",children:"<="}),I(_,{value:"is",children:"is"}),I(_,{value:"is not",children:"is not"}),I(_,{value:"like",children:"like"}),I(_,{value:"not like",children:"not like"}),I(_,{value:"ilike",children:"ilike"}),I(_,{value:"not ilike",children:"not ilike"})]})]}),I(ie,{value:x,onChange:L=>{g(L.target.value),m(L)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),I("div",{className:"ps-flex ps-items-center ps-gap-2",children:I(D,{variant:"ghost",size:"xs",onClick:t,children:I(He,{size:14})})})]})},io=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:l,showLeadingOperator:s,leadingOperatorValue:u,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:n})=>{let[f,m]=no(!0),[x,g]=no(null),L=()=>{let V={id:kr.generate(),kind:"ColumnFilter",column:Object.keys(l.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,V]})},c=()=>{let V={id:kr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,V]})},C=(V,Z)=>{let W=[...e.filters];W[V]=Z,a({...e,filters:W})},h=V=>{let Z=[...e.filters];Z.splice(V,1),a({...e,filters:Z})},y=V=>{g(V.active.id)},U=()=>{g(null)},z=(V,Z)=>{if(V===Z)return;let W=nd(e.filters,V,Z);a({...e,filters:W})},re=()=>f?!e.filters||e.filters.length===0?I("div",{className:"ps-pl-6 ps-text-sm ps-text-neutral-500 ps-italic",children:"This group is empty. Add a filter or another group."}):I(uo.div,{transition:{layout:{duration:.12}},children:I("div",{className:p("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:I(Id,{items:e.filters,parentGroupId:e.id,table:l,onUpdateItem:C,onDeleteItem:h,onReorderItems:z,activeDragId:x,onDragStart:y,onDragEndSignal:U})})}):null;return I(uo.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:O("div",{className:p("ps-flex ps-flex-col ps-w-full",f?"ps-gap-2":""),children:[O("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&I("div",{...o,className:"ps-cursor-grab",onClick:()=>m(!f),children:f?I(me,{size:16}):I(de,{size:16})}),s&&d&&!r&&I("div",{className:"ps-flex ps-items-center",children:I(Rr,{value:u,onValueChange:d,disabled:n})}),O(D,{variant:"outline",size:"sm",onClick:L,className:p("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&I(ot,{className:"ps-transition-all",children:I(gd,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),I(D,{variant:"outline",size:"sm",onClick:c,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&O(ft,{children:[I(ct,{asChild:!0,children:I(D,{variant:"ghost",size:"sm",children:I(qe,{className:"ps-size-4"})})}),I(Ua,{align:"center",className:"ps-w-full",children:e.filters.length===0?I("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):I("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:I(Tr,{filter:e})})})]}),!r&&I(D,{variant:"ghost",size:"xs",onClick:t,children:I(He,{size:14})})]})]}),I("div",{className:p(r?"":"ps-ml-6"),children:re()})]})})},Tr=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let l,s=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!s&&(a+=1),a&&(s||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:u,operator:d}=o;l=O(bd,{children:[O("span",{children:[" ",u," "]}),O("span",{children:[" ",d," "]}),I("span",{children:" ? "})]})}else l=I(Tr,{filter:o});return O(Ld,{children:[a===1?I("span",{className:"ps-font-semibold",children:"("}):"",l,a===-1?I("span",{className:"ps-font-semibold",children:")"}):"",!s&&O("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return I("span",{children:t})};function Dr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return O("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[I(io,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),I(D,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as Ed,MouseSensor as Ud,useSensor as Hd,useSensors as zd}from"@dnd-kit/core";import{arrayMove as Vd,horizontalListSortingStrategy as Gd,SortableContext as Wd,useSortable as Kd}from"@dnd-kit/sortable";import{CSS as _d}from"@dnd-kit/utilities";import{getCoreRowModel as Xd,useReactTable as Qd}from"@tanstack/react-table";import*as Ae from"react";import S from"react";function Ge(){return Ge=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},Ge.apply(null,arguments)}var yd=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function wd(e,a){let[t,o]=S.useState();S.useEffect(()=>{let l=yd(e);o(typeof l>"u"||l===null?typeof a=="function"?a():a:l)},[a,e]);let r=S.useCallback(l=>{o(s=>{let u=l;typeof l=="function"&&(u=l(s));try{localStorage.setItem(e,JSON.stringify(u))}catch{}return u})},[e]);return[t,r]}var xe={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},Br=S.createContext(xe);function Nr(e){let{theme:a,...t}=e;return S.createElement(Br.Provider,Ge({value:a},t))}function vd(){return S.useContext(Br)}function Pd(e){let[a,t]=S.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return S.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=l=>{let{matches:s}=l;return t(s)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var kd=typeof window>"u";function fe(e,a,t){return t===void 0&&(t={}),S.forwardRef((o,r)=>{let{style:l,...s}=o,u=vd(),d=Object.entries(t).reduce((n,f)=>{let[m,x]=f;return Pd(m)?{...n,...typeof x=="function"?x(s,u):x}:n},{});return S.createElement(e,{...s,style:{...typeof a=="function"?a(s,u):a,...l,...d},ref:r})})}function Rd(){let e=S.useRef(!1),a=S.useCallback(()=>e.current,[]);return S[kd?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var Md=fe("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});fe("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var Td=fe("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));fe("code",{fontSize:".9em"});fe("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));fe("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var Ar=fe("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),xt=fe("span",{cursor:"pointer",color:"white"}),Dd=fe("span",(e,a)=>({color:a.danger})),fo=fe("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),Ad=fe("span",{color:"grey",fontSize:".7rem"}),Fr=e=>{let{expanded:a,style:t={},...o}=e;return S.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},Fd=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:l,type:s,expanded:u,toggle:d,pageSize:n,renderer:f}=e,[m,x]=S.useState(void 0),[g,L]=S.useState([]),c=()=>{x(o())};return S.createElement(Ar,{key:t},l!=null&&l.length?S.createElement(S.Fragment,null,S.createElement(xt,{onClick:()=>d()},S.createElement(Fr,{expanded:u})," ",t," ",S.createElement(Ad,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?l.length===1?S.createElement(fo,null,r.map(C=>a(C))):S.createElement(fo,null,l.map((C,h)=>S.createElement("div",{key:h},S.createElement(Ar,null,S.createElement(xt,{onClick:()=>L(y=>y.includes(h)?y.filter(U=>U!==h):[...y,h])},S.createElement(Fr,{expanded:u})," [",h*n," ..."," ",h*n+n-1,"]"),g.includes(h)?S.createElement(fo,null,C.map(y=>a(y))):null)))):null):s==="function"?S.createElement(S.Fragment,null,S.createElement(Le,{renderer:f,label:S.createElement("button",{onClick:c},S.createElement(xt,null,t)," \u{1F504}"," "),value:m,defaultExpanded:{}})):S.createElement(S.Fragment,null,S.createElement(xt,null,t,":")," ",S.createElement(Dd,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function Le(e){let{value:a,defaultExpanded:t,renderer:o=Fd,pageSize:r=100,depth:l=0,...s}=e,[u,d]=S.useState(t),n=c=>{d(C=>typeof c<"u"?c:!C)},f=[],m=typeof a,x,g=[],L=c=>{let C=f.concat(c.label),h=t===!0?{[c.label]:!0}:t?.[c.label];return{...c,subPath:c,path:C,depth:l+1,defaultExpanded:h}};if(Array.isArray(a)?(m="array",x=a.map((c,C)=>L({label:C,value:c}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(m="Iterable",x=Array.from(a,(c,C)=>L({label:C,value:c}))):typeof a=="function"?m="function":typeof a=="object"&&a!==null&&(m="object",x=Object.entries(a).map(c=>{let[C,h]=c;return L({label:C,value:h})})),x){let c=0;for(;c<x.length;)g.push(x.slice(c,c+r)),c=c+r}return o({handleEntry:c=>S.createElement(Le,Ge({key:c.label,renderer:o},s,c)),type:m,subEntries:x,subEntryPages:g,depth:l,value:a,path:f,expanded:u,toggle:n,pageSize:r,...s})}function Or(e){return Ae.createElement("svg",Ge({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),Ae.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},Ae.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},Ae.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},Ae.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},Ae.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),Ae.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),Ae.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function qr(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=S.useRef(null),u=S.useRef(null),[d,n]=wd("reactTableDevtoolsOpen",a),f=Rd(),{style:m={},...x}=o,{style:g={},onClick:L,...c}=r;return f()?S.createElement(l,{ref:s,className:"ReactTableDevtools"},S.createElement(Nr,{theme:xe},d?S.createElement(Bd,Ge({ref:u},x,{table:t,isOpen:d,setIsOpen:n,style:{maxHeight:"80vh",width:"100%",...m}})):S.createElement("button",Ge({type:"button"},c,{"aria-label":"Open React Table Devtools",onClick:C=>{n(!0),L&&L(C)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...g}}),S.createElement(Or,{"aria-hidden":!0})))):null}var Bd=S.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return S.createElement(Nr,{theme:xe},S.createElement(Md,Ge({ref:t,className:"ReactTableDevtoolsPanel"},s),S.createElement("style",{dangerouslySetInnerHTML:{__html:`
|
|
2
2
|
.ReactTableDevtoolsPanel * {
|
|
3
3
|
scrollbar-color: ${xe.backgroundAlt} ${xe.gray};
|
|
4
4
|
}
|
|
@@ -17,7 +17,7 @@ import"../chunk-IAKOOX7B.js";import{D as ea}from"../chunk-OGMDOPWW.js";import{B
|
|
|
17
17
|
border-radius: .5em;
|
|
18
18
|
border: 3px solid ${xe.backgroundAlt};
|
|
19
19
|
}
|
|
20
|
-
`}}),S.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${xe.grayAlt}`,display:"flex",flexDirection:"column"}},S.createElement("div",{style:{padding:".5em",background:xe.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},S.createElement(Nr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>l(!1)}),S.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",S.createElement("span",{style:{fontWeight:100}},"Devtools")),S.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?S.createElement(ku,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{l(!1)}},"Close"):null)),S.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},S.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},S.createElement(Le,{label:"Instance",value:o,defaultExpanded:!1}),S.createElement("div",{style:{height:".5rem"}}),S.createElement(Le,{label:"State",value:o.getState(),defaultExpanded:!1}),S.createElement("div",{style:{height:".5rem"}}),S.createElement(Le,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),S.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},S.createElement(Le,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),S.createElement(Le,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),S.createElement(Le,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),S.createElement(Le,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),S.createElement(Le,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as Xu,motion as _u}from"motion/react";import{useEffect as Qu,useMemo as Zu,useState as co}from"react";import{jsx as Au}from"react/jsx-runtime";function oa({className:e,...a}){return Au("div",{className:p("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{flexRender as Fu}from"@tanstack/react-table";import{AnimatePresence as Bu,motion as qr}from"motion/react";import{Fragment as fo,jsx as q,jsxs as Ce}from"react/jsx-runtime";function Er(e){let{header:a,className:t}=e;return Ce("div",{className:p("ps-flex ps-items-center ps-justify-between",t),children:[Ce("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[q("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:a.isPlaceholder?null:q("span",{className:"ps-flex ps-min-w-0",children:q("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:Fu(a.column.columnDef.header,a.getContext())})})}),Ce("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[q("span",{className:"ps-flex ps-items-center ps-ml-1",children:q(Bu,{mode:"wait",children:a.column.getIsSorted()==="desc"?q(qr.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:q(ka,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?q(qr.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:q(Ra,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&Ce(ft,{children:[q(ct,{asChild:!0,children:q(D,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:q(me,{size:12})})}),Ce(Ua,{children:[a.column.getCanSort()&&q(pt,{onClick:()=>a.column.toggleSorting(),children:q("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?Ce(fo,{children:[q(Oe,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?Ce(fo,{children:[q(fa,{size:16}),"Sort ascending"]}):Ce(fo,{children:[q(He,{size:16}),"Cancel sorting"]})})}),q(pt,{onClick:()=>a.column.pin(a.column.getIsPinned()?!1:"left"),children:a.column.getIsPinned()?Ce("span",{className:"ps-flex ps-items-center ps-gap-2",children:[q(Ta,{size:16}),"Unpin column"]}):Ce("span",{className:"ps-flex ps-items-center ps-gap-2",children:[q(Da,{size:16}),"Pin column"]})})]})]})]})]}),a.column.getCanResize()&&q("button",{type:"button",tabIndex:0,onMouseDown:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onTouchStart:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onClick:o=>o.stopPropagation(),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),o.stopPropagation(),a.getResizeHandler()(o))},className:p("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{jsx as Ur}from"react/jsx-runtime";function Hr({className:e}){return Ur("div",{"data-loading-bar":!0,className:p("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-table-border ps-z-50",e),children:Ur("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as ee,jsxs as Lt}from"react/jsx-runtime";function zr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return ee("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:ee("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?Lt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[ee(D,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),ee(D,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):ee("div",{className:"ps-flex ps-items-center ps-space-x-2",children:Lt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[ee(D,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:ee(ga,{className:"ps-w-4 ps-h-4"})}),ee(D,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:ee(pa,{className:"ps-w-4 ps-h-4"})}),Lt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",ee(ie,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:l=>{let s=l.target.value?Number(l.target.value)-1:0;a.setPageIndex(s)}}),Lt("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),ee(D,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:ee(ue,{className:"ps-w-4 ps-h-4"})}),ee(D,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:ee(xa,{className:"ps-w-4 ps-h-4"})})]})})})})}function Fe(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right",l=e.id==="__ps_select";return{className:p("ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",(o||r)&&"ps-sticky",(o||r)&&a==="header"&&(l?"ps-z-30":"ps-z-20"),(o||r)&&a==="cell"&&(l?"ps-z-10":"ps-z-0"),o&&"ps-shadow-[2px_0_5px_-2px_rgba(0,0,0,0.1)]",r&&"ps-shadow-[-2px_0_5px_-2px_rgba(0,0,0,0.1)]"),style:{minWidth:`${e.getSize()}px`,width:`${e.getSize()}px`,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0,position:t?"sticky":void 0}}}import{Fragment as ju,jsx as A,jsxs as ra}from"react/jsx-runtime";var Ju=e=>{let{children:a,className:t,header:o,style:r}=e,l="disableDragging"in o.column.columnDef,{attributes:s,listeners:d,transform:u,transition:n,setNodeRef:f,isDragging:m}=Vu({id:o.id}),g={...r,cursor:"grab",touchAction:"none",transform:Gu.Transform.toString(u),transition:n},x=p(t,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),L=p(x,m&&"!ps-z-50 ps-border-2 ps-border-violet-500");return A(_e,{ref:f,...s,...d,style:l?r:g,className:l?x:L,children:A("div",{className:"ps-w-full",children:a})})};function Gr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:d,pageCount:u,paginationState:n,rows:f,rowSelectionState:m,sortingState:g}=e,[x,L]=co([]),[c,C]=co({left:["__ps_select"],right:[]}),[h,y]=co({}),U=Zu(()=>Vr(g),[g]),z=o||r;Qu(()=>{L(a.map(({accessorKey:B})=>B)),C({left:["__ps_select"],right:[]}),y({})},[a]);function re({active:B,over:v}){v&&B.id!==v.id&&L(J=>{let M=J.indexOf(B.id),Se=J.indexOf(v.id);return Uu(J,M,Se)})}let V=qu(Ou,{activationConstraint:{distance:10}}),Z=Eu(V),W=Ku({columnResizeMode:"onChange",columns:a,data:f,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(d&&g),getCoreRowModel:Wu(),getRowId:({__ps_rowid:B})=>B,manualPagination:!0,manualSorting:!0,onColumnOrderChange:L,onColumnPinningChange:C,onColumnSizingChange:y,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:B=>d?.(v=>(typeof B=="function"&&(B=B(Vr(v))),$u(B))),pageCount:u,state:{columnOrder:x,columnPinning:c,columnSizing:h,pagination:n,rowSelection:m,sorting:U}});return ra(ju,{children:[process.env.NODE_ENV==="production"?null:A(Or,{table:W}),ra("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[A("div",{children:z&&A(Hr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),A(Nu,{sensors:Z,onDragEnd:re,children:ra(Ot,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[A(qt,{children:W.getHeaderGroups().map(B=>A(Xe,{children:A(zu,{items:B.headers.filter(v=>!("disableDragging"in v.column.columnDef)).map(v=>v.id),strategy:Hu,children:B.headers.map(v=>{if(v.column.id==="__ps_select"){let J=v.column.columnDef.header;if(typeof J=="function"){let M=J(v.getContext());if(typeof M=="function"){let Se=Fe(v.column,"header");return A(_e,{className:p(Se.className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Se.style,children:M({})},v.id)}return A(_e,{className:p(Fe(v.column,"header").className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Fe(v.column,"header").style,children:M},v.id)}return null}return A(Ju,{header:v,table:W,...Fe(v.column,"header"),children:A(Er,{header:v})},v.id)})})},B.id))}),ra(Et,{children:[t?.(W),W.getRowModel().rows?.length?W.getRowModel().rows.map(B=>A(Xe,{className:p("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0 ps-group"),children:B.getVisibleCells().map((v,J)=>{if(typeof v.column.columnDef.cell=="function"){let M=v.column.columnDef.cell(v.getContext());return A(M,{...Fe(v.column,"cell"),className:"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100"},J)}else return A(ze,{...Fe(v.column,"cell"),children:v.getValue()},v.id)})},B.id)):A(Xe,{children:A(ze,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&ra("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[A(oa,{className:"ps-h-4 ps-w-full"}),A(oa,{className:"ps-h-4 ps-w-4/5"}),A(oa,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!u||u<2?null:A(zr,{table:W,variant:"numeric"}),A(Xu,{mode:"wait",children:W.getRowModel().rows?.length===0&&!o&&!r&&A(_u.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:ra("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[A("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),A("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function Vr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function $u(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as ce from"@radix-ui/react-tooltip";import*as Kr from"react";import{jsx as Wr}from"react/jsx-runtime";var Xr=ce.Provider,_r=ce.Root,Qr=ce.Trigger,po=Kr.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Wr(ce.Portal,{children:Wr(ce.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));po.displayName=ce.Content.displayName;import{jsx as Qe,jsxs as Zr}from"react/jsx-runtime";function Jr({column:e}){return Zr("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&Qe(Xr,{delayDuration:120,children:Zr(_r,{children:[Qe(Qr,{asChild:!0,children:Qe(ba,{size:12,className:"ps-text-primary"})}),Qe(po,{side:"bottom",className:"text-xs",children:Qe("span",{children:"Primary Key"})})]})}),Qe("span",{className:"ps-font-medium ps-truncate",children:e.name}),Qe("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{isObjectType as vn}from"remeda";import{motion as es}from"motion/react";import on,{useState as as}from"react";import*as mo from"@radix-ui/react-label";import{cva as Yu}from"class-variance-authority";import*as $r from"react";import{jsx as an}from"react/jsx-runtime";var en=Yu("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),Va=$r.forwardRef(({className:e,...a},t)=>an(mo.Root,{ref:t,className:p(en(),e),...a}));Va.displayName=mo.Root.displayName;import*as Ga from"@radix-ui/react-switch";import*as Yr from"react";import{jsx as jr}from"react/jsx-runtime";var Wa=Yr.forwardRef(({className:e,...a},t)=>jr(Ga.Root,{className:p("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:jr(Ga.Thumb,{className:p("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));Wa.displayName=Ga.Root.displayName;import{Fragment as tn,jsx as Ze,jsxs as Ka}from"react/jsx-runtime";var ae=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l})=>Ze("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!l&&Ka(tn,{children:[Ka("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[Ka("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[Ze("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:Ze(Ca,{size:12,strokeWidth:2})})," ","Save changes"]}),Ka("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[Ze("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),o&&Ze("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:Ka("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[Ze(Wa,{id:"set-nullable",checked:r,onCheckedChange:n=>{o&&o(n)}}),Ze("span",{children:"Set to NULL"})]})})]})});import{Fragment as rn,jsx as Xa,jsxs as ts}from"react/jsx-runtime";function os(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,d]=as(a===null?!1:a),[u,n]=as(a===null),f=a===null?!1:a,m=h=>{d(h)},g=h=>{n(h)},x=on.useCallback(()=>{let h=u?null:s;return h!==a?(t(h),!0):!1},[s,a,t,u]),L=()=>{d(f),n(a===null)},{handleSave:c,handleCancel:C}=j({onSave:x,onCancel:L,readonly:r});return ts(rn,{children:[ts("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[Xa(Va,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),Xa(es.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:Xa(Wa,{id:"boolean-input",checked:s,onCheckedChange:m,disabled:u||r})}),Xa(es.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:u?"NULL":String(s)})]}),Xa(ae,{onSave:c,onCancel:C,onNullChange:l?g:void 0,isNull:u,readonly:r})]})}import rs from"dayjs";import ln from"dayjs/plugin/localizedFormat";import{useCallback as dn,useMemo as un}from"react";import{useState as sn}from"react";function sa(e){let{initialValue:a}=e,[t,o]=sn(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t}}import{Fragment as nn,jsx as _a,jsxs as go}from"react/jsx-runtime";rs.extend(ln);function ss(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=sa({initialValue:r}),d=un(()=>{try{let x=rs(s);return x.isValid()?s.includes(":")?x.format("LL LTS"):x.format("LL"):s}catch{return s}},[s]);function u(x){x.preventDefault(),s!==r&&a(s)}let n=dn(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:m,handleCancel:g}=j({onSave:n,onCancel:f,readonly:o});return go(nn,{children:[go("form",{onSubmit:u,children:[_a(ie,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),_a("input",{type:"submit",className:"ps-sr-only"})]}),go("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[_a("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),_a("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:d})]}),_a(ae,{onSave:m,onCancel:g,readonly:o})]})}import{useCallback as fn,useState as ls}from"react";import{Fragment as cn,jsx as Ct,jsxs as pn}from"react/jsx-runtime";function ds(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,d=String(o),[u,n]=ls(d),[f,m]=ls(o===null),g=y=>{n(y)},x=y=>{m(y)},L=fn(()=>f?o!==null?(a(null),!0):!1:u!==d?(a(u),!0):!1,[u,d,a,f,o]),c=()=>{n(d),m(o===null)},{handleSave:C,handleCancel:h}=j({onSave:L,onCancel:c,readonly:l});return pn(cn,{children:[Ct("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:u}),Ct("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-[500px] w-full ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(y=>Ct("button",{onClick:()=>g(y),className:Ft({variant:y===u?"default":"outline"}),disabled:f||l,children:y},y))}),Ct(ae,{onSave:C,onCancel:h,onNullChange:s?x:void 0,isNull:f,readonly:l})]})}import mn,{useState as us}from"react";import{Fragment as gn,jsx as xo,jsxs as xn}from"react/jsx-runtime";function ns(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,s=a===null?"":JSON.stringify(a,null,2),[d,u]=us(s),[n,f]=us(a===null),m=h=>{u(h.target.value)},g=h=>{f(h)},x=mn.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let h=d===""?null:JSON.parse(d);return h!==a?(t(h),!0):!1},[d,a,t,n]),L=()=>{u(s),f(a===null)},{handleSave:c,handleCancel:C}=j({onSave:x,onCancel:L,readonly:r});return xn(gn,{children:[xo("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:xo("textarea",{rows:5,value:d,onChange:m,disabled:n||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),xo(ae,{onSave:c,onCancel:C,onNullChange:l?g:void 0,isNull:n,readonly:r})]})}import Ln,{useState as is}from"react";import{Fragment as Cn,jsx as Lo,jsxs as fs}from"react/jsx-runtime";function cs(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,d]=is(a===null?"":String(a)),[u,n]=is(a===null),f=a===null?"":String(a),m=h=>{d(h.target.value)},g=h=>{n(h)},x=Ln.useCallback(()=>{if(u)return a!==null?(t(null),!0):!1;let h=s===""?null:Number(s);return s!==a?(t(h),!0):!1},[s,a,t,u]),L=()=>{d(f),n(a===null)},{handleSave:c,handleCancel:C}=j({onSave:x,onCancel:L,readonly:r});return fs(Cn,{children:[fs("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[Lo(Va,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),Lo("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:s,onChange:m,disabled:u||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),Lo(ae,{onSave:c,onCancel:C,onNullChange:l?g:void 0,isNull:u,readonly:r})]})}import hn from"react";import{Fragment as In,jsx as Co,jsxs as ps}from"react/jsx-runtime";function ms(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=sa({initialValue:r});function d(g){g.preventDefault(),s!==r&&a(s)}let u=hn.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),n=()=>{},{handleSave:f,handleCancel:m}=j({onSave:u,onCancel:n,readonly:o});return ps(In,{children:[ps("form",{onSubmit:d,children:[Co(ie,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s,disabled:o}),Co("input",{type:"submit",className:"ps-sr-only"})]}),Co(ae,{onSave:f,onCancel:m,readonly:o})]})}import gs from"dayjs";import Sn from"dayjs/plugin/localizedFormat";import{useCallback as bn,useMemo as yn}from"react";import{Fragment as wn,jsx as Qa,jsxs as ho}from"react/jsx-runtime";gs.extend(Sn);function xs(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=sa({initialValue:r}),d=yn(()=>{try{if(!s.includes(":"))return s;let x=/[+-]\d{2}(:\d{2})?$/.test(s),L=gs(`2000-01-01 ${s}`);if(L.isValid())return L.format("h:mm A")+(x?` (${L.format("Z")})`:"");let c=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,C=s.match(c);if(C){let h=parseInt(C[1]||"12",10),y=C[2]||"00",U=C[4]||"",z=h>=12?"PM":"AM";return`${h%12===0?12:h%12}:${y} ${z}${U?` (${U})`:""}`}return s}catch{return s}},[s]);function u(x){x.preventDefault(),s!==r&&a(s)}let n=bn(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:m,handleCancel:g}=j({onSave:n,onCancel:f,readonly:o});return ho(wn,{children:[ho("form",{onSubmit:u,children:[Qa(ie,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Qa("input",{type:"submit",className:"ps-sr-only"})]}),ho("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Qa("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Qa("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:d})]}),Qa(ae,{onSave:m,onCancel:g,readonly:o})]})}import{jsx as Je}from"react/jsx-runtime";function ht(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:l,isArray:s}=t.datatype,d=t.isComputed||e.readonly,u=a.getValue(),n=u===void 0?"":u;return r==="datetime"?Je(ss,{onSubmit:o,value:n,column:t,readonly:d}):r==="time"?Je(xs,{onSubmit:o,value:n,column:t,readonly:d}):r==="json"||s?Je(ns,{onSubmit:o,value:n,column:t,readonly:d}):r==="boolean"?Je(os,{onSubmit:o,value:n,column:t,readonly:d}):r==="enum"?Je(ds,{onSubmit:o,value:n,options:l,column:t,readonly:d}):r==="numeric"?Je(cs,{onSubmit:o,value:n,column:t,readonly:d}):Je(ms,{onSubmit:o,value:vn(n)?JSON.stringify(n):n,readonly:d})}import{useReactTable as Pn}from"@tanstack/react-table";import{omit as kn}from"remeda";import{Fragment as Rn,jsx as Za}from"react/jsx-runtime";function Ls(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!st();function l(u,n){o(f=>{let m=[...f];return m[u]={...m[u],...n},m})}let s=Object.values(a.options.columns).map(u=>u.id==="__ps_select"?{...u,cell(){return()=>Za(Na,{})}}:{...u,cell({cell:n}){return f=>Za(it,{cellComponent:nt({cell:n,column:u.meta,props:f}),inputComponent:ht({cell:n,column:u.meta,onSubmit(m){l(f.rowIndex,{[u.id]:m})},readonly:r})})}}),d=Pn({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:kn(a.options.state,["pagination","sorting"])});return Za(Rn,{children:d.getRowModel().rows.map((u,n)=>Za(Xe,{children:u.getVisibleCells().map((f,m)=>{if(typeof f.column.columnDef.cell=="function"){let g=f.column.columnDef.cell(f.getContext());return Za(g,{...Fe(f.column,"cell"),rowIndex:n},m)}return null})},n))})}import{Fragment as Io,jsx as T,jsxs as $e}from"react/jsx-runtime";function Cs(e){let a=!!Mn(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:d}=H(),{sortingState:u,setSortingState:n}=lr(),{paginationState:f,setPaginationState:m}=lt(),[g,x]=An([]),{appliedFilter:L,setAppliedFilter:c,editingFilter:C,setEditingFilter:h,totalEditingFilters:y}=or(),{data:U,isFetching:z,refetch:re}=Yo({...f,sortOrder:u,filter:L}),{deleteSelection:V,isSelecting:Z,rowSelectionState:W,setRowSelectionState:B}=sr(U),v=!Object.values(t?.columns??{}).some(N=>N.isInPrimaryKey),J=st(),M=jo(),Se=er();if(Dn(()=>x([]),[t]),!t)return null;function je(){M.mutate(g,{onError:o,onSuccess(){Fn.success("Rows inserted successfully"),x([])}})}function Ja(){x(N=>[...N,{}])}function Ye(){x([])}function $a(N,be,yt){Se.mutate({details:{changes:{[be.name]:N},row:yt,table:t},options:{}})}function la(N){N===!0?h(L):c(C)}let We=Object.values(t?.columns??{}).map(N=>({id:N.name,accessorKey:N.name,meta:N,header(){return Jr({column:N})},cell({cell:be}){return yt=>T(it,{cellComponent:nt({cell:be,column:N,props:yt}),inputComponent:ht({cell:be,column:N,readonly:v,onSubmit(Ds){return $a(Ds,N,be.row.original)}})})}})),ja=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:50,minSize:50,header({table:N}){return be=>T(jt,{table:N,readonly:v,...be})},cell({row:N}){return be=>T(eo,{row:N,readonly:v,...be})}}],se=[...We,...ja].sort(Nn);return $e(Io,{children:[T("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:T("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:$e("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[$e("div",{className:"ps-flex ps-items-center ps-gap-2",children:[T(D,{variant:"outline",size:"sm",onClick:s,children:d?T(Ee,{}):T(Ue,{})}),$e(Zo,{onOpenChange:la,children:[T(Jo,{asChild:!0,children:T(D,{variant:"outline",size:"sm",className:p(y>0&&"ps-border-primary"),children:$e("span",{className:"ps-flex ps-items-center ps-gap-2",children:[T(ha,{}),y>0&&T(ot,{children:T(Tn,{transition:{layout:{duration:.12}},children:y})})]})})}),T(Bt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:T(Tr,{filter:C,setFilter:h,setAppliedFilter:N=>{h(N),c(N)},table:t})})]}),T(D,{variant:"outline",size:"sm",onClick:Ja,disabled:J>0,children:"Insert row"}),g.length>0&&$e(Io,{children:[T(D,{variant:"secondary",size:"sm",onClick:je,children:"Save"}),T(D,{variant:"ghost",size:"sm",onClick:Ye,children:"Cancel"})]}),Z&&T(Io,{children:T(D,{variant:"secondary",size:"sm",onClick:V,children:"Delete"})})]}),$e("div",{className:"ps-flex ps-items-center ps-gap-2",children:[T(D,{variant:"outline",size:"icon",onClick:()=>void re(),disabled:z,children:T(Aa,{className:p("ps-h-4 ps-w-4",z&&"ps-animate-spin")})}),T(D,{variant:"outline",size:"icon",onClick:l,children:r?T(Pa,{}):T(va,{})})]})]})})}),T(Gr,{columnDefs:se,getBeforeRows:N=>T(Ls,{table:N,stagedRows:g,setStagedRows:x}),isLoading:z,isProcessing:a,onPaginationChange:m,onRowSelectionChange:B,onSortingChange:n,pageCount:Bn(U?.filteredRowCount??1/0,f.pageSize),paginationState:f,rows:U?.rows??[],rowSelectionState:W,sortingState:u})]})}function Bn(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function Nn(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{Slot as Un}from"@radix-ui/react-slot";import{useCallback as qn,useEffect as hs,useMemo as Is}from"react";import{v4 as En}from"uuid";import{useQuery as On}from"@tanstack/react-query";var It=-1;function St(){let{adapter:e}=H();return On({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:It,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===It?0:1/0})}function Ss(){let{activeTable:e,setActiveTable:a,adapter:t,emitTelemetryEvent:o}=H(),{data:r,dataUpdatedAt:l}=St(),s=l===It,d=Is(()=>Object.values(r.schemas[t.defaultSchema||"db"]?.tables||{}),[r.schemas,t.defaultSchema]),u=Is(()=>Object.values(r.schemas).reduce((c,C)=>c+Object.keys(C.tables).length,0),[r.schemas]),[n]=d,[f,m]=da({table:{defaultValue:null,parse:c=>c,serialize:c=>c??""},schema:{defaultValue:"",parse:c=>c,serialize:c=>c??""}}),[,g]=pe("pageIndex",{parse:c=>c,serialize:c=>c??""}),[,x]=pe("sort",{parse:c=>c,serialize:c=>c??""});hs(()=>{if(!s){if(f?.table&&d.length>0){let c=d.find(C=>C.name===f.table);if(c){a(c);return}}d.length>0&&!e&&(a(n||null),n&&m({table:n.name,schema:n.schema}))}},[s,f,d,n,e,a,m]);let L=qn(c=>{e!==c&&(a(c),m({table:c.name,schema:c.schema}),g(null),x(null))},[e,a,m,g,x]);return hs(()=>{l!==-1&&o({event:"studio_launched",payload:{event_id:En(),timestamp:new Date().toISOString(),table_count:u}})},[d,o,l,u]),{tables:d,activeTable:e,isLoading:s,handleTableChange:L}}import{jsx as te,jsxs as So}from"react/jsx-runtime";function he({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=Ss(),{activeView:l,handleViewChange:s}=at(),d=p("ps-flex ps-flex-col ps-w-48 ps-gap-4 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return So("div",{className:d,children:[te(he.Block,{label:"Studio",children:te(he.Item,{isActive:l==="schema-visualiser",onClick:()=>s("schema-visualiser"),className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:"Schema visualiser"})}),te(he.Block,{label:"Tables",children:a.length>0?a.map(u=>te(he.Item,{asChild:!0,isActive:l==="tables"&&t===u,onClick:()=>{s("tables"),r(u)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:te("a",{href:`#table=${u.name}&schema=${u.schema}`,children:u.name})},`${u.schema}-${u.name}`)):o?Array(4).fill(null).map((u,n)=>te(he.Item,{wrapChildrenInSpan:!1,children:te(oa,{className:"ps-h-3 ps-w-full"})},n)):te(he.Item,{children:"No tables found"})})]})}var Hn=({className:e,label:a,children:t,...o})=>So("div",{className:e,...o,children:[So("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[te(Fa,{size:16,className:"ps-text-muted-foreground/60"}),te("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),te("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),zn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>te(a?Un:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:p("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...s,children:l?te("span",{className:"ps-truncate",children:r}):r});he.Block=Hn;he.Item=zn;import{useMemo as Vn}from"react";var bs={name:"No Tables Found",fields:[{name:"message",type:"info",isRequired:!0}]};function ys(){let{data:e,isLoading:a,error:t}=St();return Vn(()=>{if(a)return{tables:[],relationships:[]};if(!e)return{tables:[bs],relationships:[]};let o=[],r=!1;return Object.values(e.schemas).forEach(l=>{Object.values(l.tables).forEach(s=>{r=!0;let d=[];Object.values(s.columns).forEach(u=>{d.push({name:u.name,type:u.datatype.name,isPrimary:u.isInPrimaryKey,isRequired:!u.nullable})}),o.push({name:s.name,fields:d})})}),!r||o.length===0?{tables:[bs],relationships:[]}:{tables:o,relationships:[]}},[e,a,t])}import"reactflow/dist/style.css";import{memo as Gn,useCallback as Wn,useEffect as Kn}from"react";import Xn,{addEdge as _n,Background as Qn,ConnectionLineType as Zn,Controls as Jn,Handle as ws,Position as vs,useEdgesState as $n,useNodesState as jn}from"reactflow";import{jsx as E,jsxs as bt}from"react/jsx-runtime";var Ps=Gn(({data:e})=>{let a=e.label==="No Tables Found",t=(o,r)=>{if(a&&r==="info")return E(Pe,{className:"ps-w-4 ps-h-4"});switch(o.toLowerCase()){case"id":return E(Sa,{className:"ps-w-4 ps-h-4"});case"email":return E(wa,{className:"ps-w-4 ps-h-4"});case"phone":return E(Ma,{className:"ps-w-4 ps-h-4"});case"name":return E(Ba,{className:"ps-w-4 ps-h-4"});case"createdat":case"updatedat":return E(ca,{className:"ps-w-4 ps-h-4"});default:return E(ya,{className:"ps-w-4 ps-h-4"})}};return bt("div",{className:p("ps-min-w-[250px] ps-shadow-xl ps-rounded-md ps-border ps-border-border ps-bg-card",a&&"ps-border-orange-400"),children:[E(ws,{type:"target",position:vs.Top,style:{opacity:0}}),E("div",{className:p("ps-px-4 ps-py-3 ps-border-b",a&&"ps-bg-orange-100 dark:ps-bg-orange-950 ps-text-orange-700 dark:ps-text-orange-300"),children:E("div",{className:"ps-font-bold",children:e.label})}),E("div",{className:"ps-px-4 ps-py-2",children:a?bt("div",{className:"ps-flex ps-items-center ps-gap-2 ps-py-8 ps-text-sm ps-text-muted-foreground",children:[E("span",{className:"ps-text-orange-500",children:E(Pe,{className:"ps-w-5 ps-h-5"})}),E("span",{className:"ps-flex-1",children:"No database tables found. Connect to a database to see your schema."})]}):e.fields.map((o,r)=>bt("div",{className:p("ps-flex ps-items-center ps-gap-2 ps-py-2 ps-text-sm",o.isPrimary&&"ps-text-primary"),children:[E("span",{className:"ps-text-muted-foreground",children:t(o.name,o.type)}),E("span",{className:"ps-flex-1",children:o.name}),E("span",{className:"ps-text-xs ps-text-muted-foreground",children:o.type})]},r))}),E(ws,{type:"source",position:vs.Bottom,style:{opacity:0}})]})});Ps.displayName="TableNode";var Yn={tableNode:Ps};function ks({tables:e,relationships:a}){let t=e.map((m,g)=>({id:m.name,type:"tableNode",data:{label:m.name,fields:m.fields},position:{x:250*g,y:100*g}})),o=a.map((m,g)=>({id:`e${g}`,source:m.from,target:m.to,animated:!0,label:m.type,type:"smoothstep",style:{stroke:"hsl(var(--primary))",strokeWidth:1,strokeDasharray:"5 5"},labelStyle:{fill:"hsl(var(--primary))",fontSize:12}})),[r,l,s]=jn(t),[d,u,n]=$n(o);Kn(()=>{l(e.map((m,g)=>({id:m.name,type:"tableNode",data:{label:m.name,fields:m.fields},position:{x:250*g,y:100*g}})))},[e,l]);let f=Wn(m=>u(g=>_n(m,g)),[u]);return E("div",{className:"ps-w-full ps-h-full ps-bg-card",children:bt(Xn,{nodes:r,edges:d,onNodesChange:s,onEdgesChange:n,onConnect:f,connectionLineType:Zn.SmoothStep,nodeTypes:Yn,fitView:!0,children:[E(Qn,{className:"ps-bg-muted",gap:16}),E(Jn,{className:"!ps-bg-[hsl(var(--studio-background))] !ps-border-[hsl(var(--studio-border))] !ps-text-[hsl(var(--studio-foreground))]"})]})})}import{jsx as Rs}from"react/jsx-runtime";function Ms(){let{tables:e,relationships:a}=ys();return Rs("div",{className:"ps-w-full ps-h-full",children:Rs(ks,{tables:e,relationships:a})})}import{jsx as Ie,jsxs as oi}from"react/jsx-runtime";function ai(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Ie(To,{adapter:a,onError:t,onTelemetryEvent:o,children:Ie(ti,{})}):(console.error("No adapter provided to Studio component"),Ie("div",{children:"Error: No adapter provided"}))}function ti(){let{isFullscreen:e,isNavigationOpen:a}=H(),{activeView:t}=at(),o=p("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return Ie("div",{"data-fullscreen":e,className:o,children:oi("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[Ie(ei,{mode:"wait",children:a&&Ie(Ts.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Ie(he,{})})}),Ie(Ts.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:t==="tables"?Ie(Cs,{}):Ie(Ms,{})})]})})}export{ai as Studio};
|
|
20
|
+
`}}),S.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${xe.grayAlt}`,display:"flex",flexDirection:"column"}},S.createElement("div",{style:{padding:".5em",background:xe.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},S.createElement(Or,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>l(!1)}),S.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",S.createElement("span",{style:{fontWeight:100}},"Devtools")),S.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?S.createElement(Td,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{l(!1)}},"Close"):null)),S.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},S.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},S.createElement(Le,{label:"Instance",value:o,defaultExpanded:!1}),S.createElement("div",{style:{height:".5rem"}}),S.createElement(Le,{label:"State",value:o.getState(),defaultExpanded:!1}),S.createElement("div",{style:{height:".5rem"}}),S.createElement(Le,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),S.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},S.createElement(Le,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),S.createElement(Le,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),S.createElement(Le,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),S.createElement(Le,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),S.createElement(Le,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as Zd,motion as Jd}from"motion/react";import{useEffect as $d,useMemo as jd,useState as po}from"react";import{jsx as Nd}from"react/jsx-runtime";function oa({className:e,...a}){return Nd("div",{className:p("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{flexRender as Od}from"@tanstack/react-table";import{AnimatePresence as qd,motion as Er}from"motion/react";import{Fragment as co,jsx as q,jsxs as Ce}from"react/jsx-runtime";function Ur(e){let{header:a,className:t}=e;return Ce("div",{className:p("ps-flex ps-items-center ps-justify-between",t),children:[Ce("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[q("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:a.isPlaceholder?null:q("span",{className:"ps-flex ps-min-w-0",children:q("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:Od(a.column.columnDef.header,a.getContext())})})}),Ce("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[q("span",{className:"ps-flex ps-items-center ps-ml-1",children:q(qd,{mode:"wait",children:a.column.getIsSorted()==="desc"?q(Er.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:q(ka,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?q(Er.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:q(Ra,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&Ce(ft,{children:[q(ct,{asChild:!0,children:q(D,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:q(me,{size:12})})}),Ce(Ua,{children:[a.column.getCanSort()&&q(pt,{onClick:()=>a.column.toggleSorting(),children:q("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?Ce(co,{children:[q(Oe,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?Ce(co,{children:[q(fa,{size:16}),"Sort ascending"]}):Ce(co,{children:[q(He,{size:16}),"Cancel sorting"]})})}),q(pt,{onClick:()=>a.column.pin(a.column.getIsPinned()?!1:"left"),children:a.column.getIsPinned()?Ce("span",{className:"ps-flex ps-items-center ps-gap-2",children:[q(Ta,{size:16}),"Unpin column"]}):Ce("span",{className:"ps-flex ps-items-center ps-gap-2",children:[q(Da,{size:16}),"Pin column"]})})]})]})]})]}),a.column.getCanResize()&&q("button",{type:"button",tabIndex:0,onMouseDown:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onTouchStart:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onClick:o=>o.stopPropagation(),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),o.stopPropagation(),a.getResizeHandler()(o))},className:p("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{jsx as Hr}from"react/jsx-runtime";function zr({className:e}){return Hr("div",{"data-loading-bar":!0,className:p("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-table-border ps-z-50",e),children:Hr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as ee,jsxs as Lt}from"react/jsx-runtime";function Vr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return ee("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:ee("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?Lt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[ee(D,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),ee(D,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):ee("div",{className:"ps-flex ps-items-center ps-space-x-2",children:Lt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[ee(D,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:ee(ga,{className:"ps-w-4 ps-h-4"})}),ee(D,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:ee(pa,{className:"ps-w-4 ps-h-4"})}),Lt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",ee(ie,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:l=>{let s=l.target.value?Number(l.target.value)-1:0;a.setPageIndex(s)}}),Lt("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),ee(D,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:ee(de,{className:"ps-w-4 ps-h-4"})}),ee(D,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:ee(xa,{className:"ps-w-4 ps-h-4"})})]})})})})}function Fe(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right",l=e.id==="__ps_select";return{className:p("ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",(o||r)&&"ps-sticky",(o||r)&&a==="header"&&(l?"ps-z-30":"ps-z-20"),(o||r)&&a==="cell"&&(l?"ps-z-10":"ps-z-0"),o&&"ps-shadow-[2px_0_5px_-2px_rgba(0,0,0,0.1)]",r&&"ps-shadow-[-2px_0_5px_-2px_rgba(0,0,0,0.1)]"),style:{minWidth:`${e.getSize()}px`,width:`${e.getSize()}px`,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0,position:t?"sticky":void 0}}}import{Fragment as an,jsx as A,jsxs as ra}from"react/jsx-runtime";var Yd=e=>{let{children:a,className:t,header:o,style:r}=e,l="disableDragging"in o.column.columnDef,{attributes:s,listeners:u,transform:d,transition:n,setNodeRef:f,isDragging:m}=Kd({id:o.id}),x={...r,cursor:"grab",touchAction:"none",transform:_d.Transform.toString(d),transition:n},g=p(t,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),L=p(g,m&&"!ps-z-50 ps-border-2 ps-border-violet-500");return A(Xe,{ref:f,...s,...u,style:l?r:x,className:l?g:L,children:A("div",{className:"ps-w-full",children:a})})};function Wr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:u,pageCount:d,paginationState:n,rows:f,rowSelectionState:m,sortingState:x}=e,[g,L]=po([]),[c,C]=po({left:["__ps_select"],right:[]}),[h,y]=po({}),U=jd(()=>Gr(x),[x]),z=o||r;$d(()=>{L(a.map(({accessorKey:B})=>B)),C({left:["__ps_select"],right:[]}),y({})},[a]);function re({active:B,over:v}){v&&B.id!==v.id&&L(J=>{let M=J.indexOf(B.id),Se=J.indexOf(v.id);return Vd(J,M,Se)})}let V=Hd(Ud,{activationConstraint:{distance:10}}),Z=zd(V),W=Qd({columnResizeMode:"onChange",columns:a,data:f,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&x),getCoreRowModel:Xd(),getRowId:({__ps_rowid:B})=>B,manualPagination:!0,manualSorting:!0,onColumnOrderChange:L,onColumnPinningChange:C,onColumnSizingChange:y,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:B=>u?.(v=>(typeof B=="function"&&(B=B(Gr(v))),en(B))),pageCount:d,state:{columnOrder:g,columnPinning:c,columnSizing:h,pagination:n,rowSelection:m,sorting:U}});return ra(an,{children:[process.env.NODE_ENV==="production"?null:A(qr,{table:W}),ra("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[A("div",{children:z&&A(zr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),A(Ed,{sensors:Z,onDragEnd:re,children:ra(qt,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[A(Et,{children:W.getHeaderGroups().map(B=>A(_e,{children:A(Wd,{items:B.headers.filter(v=>!("disableDragging"in v.column.columnDef)).map(v=>v.id),strategy:Gd,children:B.headers.map(v=>{if(v.column.id==="__ps_select"){let J=v.column.columnDef.header;if(typeof J=="function"){let M=J(v.getContext());if(typeof M=="function"){let Se=Fe(v.column,"header");return A(Xe,{className:p(Se.className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Se.style,children:M({})},v.id)}return A(Xe,{className:p(Fe(v.column,"header").className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Fe(v.column,"header").style,children:M},v.id)}return null}return A(Yd,{header:v,table:W,...Fe(v.column,"header"),children:A(Ur,{header:v})},v.id)})})},B.id))}),ra(Ut,{children:[t?.(W),W.getRowModel().rows?.length?W.getRowModel().rows.map(B=>A(_e,{className:p("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0 ps-group"),children:B.getVisibleCells().map((v,J)=>{if(typeof v.column.columnDef.cell=="function"){let M=v.column.columnDef.cell(v.getContext());return A(M,{...Fe(v.column,"cell"),className:"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100"},J)}else return A(ze,{...Fe(v.column,"cell"),children:v.getValue()},v.id)})},B.id)):A(_e,{children:A(ze,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&ra("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[A(oa,{className:"ps-h-4 ps-w-full"}),A(oa,{className:"ps-h-4 ps-w-4/5"}),A(oa,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!d||d<2?null:A(Vr,{table:W,variant:"numeric"}),A(Zd,{mode:"wait",children:W.getRowModel().rows?.length===0&&!o&&!r&&A(Jd.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:ra("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[A("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),A("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function Gr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function en(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as ce from"@radix-ui/react-tooltip";import*as _r from"react";import{jsx as Kr}from"react/jsx-runtime";var Xr=ce.Provider,Qr=ce.Root,Zr=ce.Trigger,mo=_r.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Kr(ce.Portal,{children:Kr(ce.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));mo.displayName=ce.Content.displayName;import{jsx as Qe,jsxs as Jr}from"react/jsx-runtime";function $r({column:e}){return Jr("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&Qe(Xr,{delayDuration:120,children:Jr(Qr,{children:[Qe(Zr,{asChild:!0,children:Qe(ba,{size:12,className:"ps-text-primary"})}),Qe(mo,{side:"bottom",className:"text-xs",children:Qe("span",{children:"Primary Key"})})]})}),Qe("span",{className:"ps-font-medium ps-truncate",children:e.name}),Qe("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{isObjectType as Rn}from"remeda";import{motion as as}from"motion/react";import ln,{useState as ts}from"react";import*as go from"@radix-ui/react-label";import{cva as tn}from"class-variance-authority";import*as jr from"react";import{jsx as rn}from"react/jsx-runtime";var on=tn("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),Va=jr.forwardRef(({className:e,...a},t)=>rn(go.Root,{ref:t,className:p(on(),e),...a}));Va.displayName=go.Root.displayName;import*as Ga from"@radix-ui/react-switch";import*as es from"react";import{jsx as Yr}from"react/jsx-runtime";var Wa=es.forwardRef(({className:e,...a},t)=>Yr(Ga.Root,{className:p("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:Yr(Ga.Thumb,{className:p("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));Wa.displayName=Ga.Root.displayName;import{Fragment as sn,jsx as Ze,jsxs as Ka}from"react/jsx-runtime";var ae=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l})=>Ze("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!l&&Ka(sn,{children:[Ka("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[Ka("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[Ze("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:Ze(Ca,{size:12,strokeWidth:2})})," ","Save changes"]}),Ka("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[Ze("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),o&&Ze("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:Ka("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[Ze(Wa,{id:"set-nullable",checked:r,onCheckedChange:n=>{o&&o(n)}}),Ze("span",{children:"Set to NULL"})]})})]})});import{Fragment as un,jsx as _a,jsxs as os}from"react/jsx-runtime";function rs(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=ts(a===null?!1:a),[d,n]=ts(a===null),f=a===null?!1:a,m=h=>{u(h)},x=h=>{n(h)},g=ln.useCallback(()=>{let h=d?null:s;return h!==a?(t(h),!0):!1},[s,a,t,d]),L=()=>{u(f),n(a===null)},{handleSave:c,handleCancel:C}=j({onSave:g,onCancel:L,readonly:r});return os(un,{children:[os("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[_a(Va,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),_a(as.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:_a(Wa,{id:"boolean-input",checked:s,onCheckedChange:m,disabled:d||r})}),_a(as.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:d?"NULL":String(s)})]}),_a(ae,{onSave:c,onCancel:C,onNullChange:l?x:void 0,isNull:d,readonly:r})]})}import ss from"dayjs";import nn from"dayjs/plugin/localizedFormat";import{useCallback as fn,useMemo as cn}from"react";import{useState as dn}from"react";function sa(e){let{initialValue:a}=e,[t,o]=dn(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t}}import{Fragment as pn,jsx as Xa,jsxs as xo}from"react/jsx-runtime";ss.extend(nn);function ls(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=sa({initialValue:r}),u=cn(()=>{try{let g=ss(s);return g.isValid()?s.includes(":")?g.format("LL LTS"):g.format("LL"):s}catch{return s}},[s]);function d(g){g.preventDefault(),s!==r&&a(s)}let n=fn(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:m,handleCancel:x}=j({onSave:n,onCancel:f,readonly:o});return xo(pn,{children:[xo("form",{onSubmit:d,children:[Xa(ie,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Xa("input",{type:"submit",className:"ps-sr-only"})]}),xo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Xa("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Xa("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Xa(ae,{onSave:m,onCancel:x,readonly:o})]})}import{useCallback as mn,useState as us}from"react";import{Fragment as gn,jsx as Ct,jsxs as xn}from"react/jsx-runtime";function ds(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,u=String(o),[d,n]=us(u),[f,m]=us(o===null),x=y=>{n(y)},g=y=>{m(y)},L=mn(()=>f?o!==null?(a(null),!0):!1:d!==u?(a(d),!0):!1,[d,u,a,f,o]),c=()=>{n(u),m(o===null)},{handleSave:C,handleCancel:h}=j({onSave:L,onCancel:c,readonly:l});return xn(gn,{children:[Ct("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:d}),Ct("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-[500px] w-full ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(y=>Ct("button",{onClick:()=>x(y),className:Bt({variant:y===d?"default":"outline"}),disabled:f||l,children:y},y))}),Ct(ae,{onSave:C,onCancel:h,onNullChange:s?g:void 0,isNull:f,readonly:l})]})}import Ln,{useState as ns}from"react";import{Fragment as Cn,jsx as Lo,jsxs as hn}from"react/jsx-runtime";function is(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,s=a===null?"":JSON.stringify(a,null,2),[u,d]=ns(s),[n,f]=ns(a===null),m=h=>{d(h.target.value)},x=h=>{f(h)},g=Ln.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let h=u===""?null:JSON.parse(u);return h!==a?(t(h),!0):!1},[u,a,t,n]),L=()=>{d(s),f(a===null)},{handleSave:c,handleCancel:C}=j({onSave:g,onCancel:L,readonly:r});return hn(Cn,{children:[Lo("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:Lo("textarea",{rows:5,value:u,onChange:m,disabled:n||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),Lo(ae,{onSave:c,onCancel:C,onNullChange:l?x:void 0,isNull:n,readonly:r})]})}import In,{useState as fs}from"react";import{Fragment as Sn,jsx as Co,jsxs as cs}from"react/jsx-runtime";function ps(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=fs(a===null?"":String(a)),[d,n]=fs(a===null),f=a===null?"":String(a),m=h=>{u(h.target.value)},x=h=>{n(h)},g=In.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let h=s===""?null:Number(s);return s!==a?(t(h),!0):!1},[s,a,t,d]),L=()=>{u(f),n(a===null)},{handleSave:c,handleCancel:C}=j({onSave:g,onCancel:L,readonly:r});return cs(Sn,{children:[cs("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[Co(Va,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),Co("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:s,onChange:m,disabled:d||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),Co(ae,{onSave:c,onCancel:C,onNullChange:l?x:void 0,isNull:d,readonly:r})]})}import bn from"react";import{Fragment as yn,jsx as ho,jsxs as ms}from"react/jsx-runtime";function gs(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=sa({initialValue:r});function u(x){x.preventDefault(),s!==r&&a(s)}let d=bn.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),n=()=>{},{handleSave:f,handleCancel:m}=j({onSave:d,onCancel:n,readonly:o});return ms(yn,{children:[ms("form",{onSubmit:u,children:[ho(ie,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s,disabled:o}),ho("input",{type:"submit",className:"ps-sr-only"})]}),ho(ae,{onSave:f,onCancel:m,readonly:o})]})}import xs from"dayjs";import wn from"dayjs/plugin/localizedFormat";import{useCallback as vn,useMemo as Pn}from"react";import{Fragment as kn,jsx as Qa,jsxs as Io}from"react/jsx-runtime";xs.extend(wn);function Ls(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=sa({initialValue:r}),u=Pn(()=>{try{if(!s.includes(":"))return s;let g=/[+-]\d{2}(:\d{2})?$/.test(s),L=xs(`2000-01-01 ${s}`);if(L.isValid())return L.format("h:mm A")+(g?` (${L.format("Z")})`:"");let c=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,C=s.match(c);if(C){let h=parseInt(C[1]||"12",10),y=C[2]||"00",U=C[4]||"",z=h>=12?"PM":"AM";return`${h%12===0?12:h%12}:${y} ${z}${U?` (${U})`:""}`}return s}catch{return s}},[s]);function d(g){g.preventDefault(),s!==r&&a(s)}let n=vn(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:m,handleCancel:x}=j({onSave:n,onCancel:f,readonly:o});return Io(kn,{children:[Io("form",{onSubmit:d,children:[Qa(ie,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Qa("input",{type:"submit",className:"ps-sr-only"})]}),Io("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Qa("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Qa("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Qa(ae,{onSave:m,onCancel:x,readonly:o})]})}import{jsx as Je}from"react/jsx-runtime";function ht(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:l,isArray:s}=t.datatype,u=t.isComputed||e.readonly,d=a.getValue(),n=d===void 0?"":d;return r==="datetime"?Je(ls,{onSubmit:o,value:n,column:t,readonly:u}):r==="time"?Je(Ls,{onSubmit:o,value:n,column:t,readonly:u}):r==="json"||s?Je(is,{onSubmit:o,value:n,column:t,readonly:u}):r==="boolean"?Je(rs,{onSubmit:o,value:n,column:t,readonly:u}):r==="enum"?Je(ds,{onSubmit:o,value:n,options:l,column:t,readonly:u}):r==="numeric"?Je(ps,{onSubmit:o,value:n,column:t,readonly:u}):Je(gs,{onSubmit:o,value:Rn(n)?JSON.stringify(n):n,readonly:u})}import{useReactTable as Mn}from"@tanstack/react-table";import{omit as Tn}from"remeda";import{Fragment as Dn,jsx as Za}from"react/jsx-runtime";function Cs(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!st();function l(d,n){o(f=>{let m=[...f];return m[d]={...m[d],...n},m})}let s=Object.values(a.options.columns).map(d=>d.id==="__ps_select"?{...d,cell(){return()=>Za(Na,{})}}:{...d,cell({cell:n}){return f=>Za(it,{cellComponent:nt({cell:n,column:d.meta,props:f}),inputComponent:ht({cell:n,column:d.meta,onSubmit(m){l(f.rowIndex,{[d.id]:m})},readonly:r})})}}),u=Mn({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:Tn(a.options.state,["pagination","sorting"])});return Za(Dn,{children:u.getRowModel().rows.map((d,n)=>Za(_e,{children:d.getVisibleCells().map((f,m)=>{if(typeof f.column.columnDef.cell=="function"){let x=f.column.columnDef.cell(f.getContext());return Za(x,{...Fe(f.column,"cell"),rowIndex:n},m)}return null})},n))})}import{Fragment as So,jsx as T,jsxs as $e}from"react/jsx-runtime";function hs(e){let a=!!An(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:u}=H(),{sortingState:d,setSortingState:n}=ur(),{paginationState:f,setPaginationState:m}=lt(),[x,g]=Nn([]),{appliedFilter:L,setAppliedFilter:c,editingFilter:C,setEditingFilter:h,totalEditingFilters:y}=rr(),{data:U,isFetching:z,refetch:re}=er({...f,sortOrder:d,filter:L}),{deleteSelection:V,isSelecting:Z,rowSelectionState:W,setRowSelectionState:B}=lr(U),v=!Object.values(t?.columns??{}).some(N=>N.isInPrimaryKey),J=st(),M=Yo(),Se=ar();if(Bn(()=>g([]),[t]),!t)return null;function je(){M.mutate(x,{onError:o,onSuccess(){On.success("Rows inserted successfully"),g([])}})}function Ja(){g(N=>[...N,{}])}function Ye(){g([])}function $a(N,be,wt){Se.mutate({details:{changes:{[be.name]:N},row:wt,table:t},options:{}})}function la(N){N===!0?h(L):c(C)}let We=Object.values(t?.columns??{}).map(N=>({id:N.name,accessorKey:N.name,meta:N,header(){return $r({column:N})},cell({cell:be}){return wt=>T(it,{cellComponent:nt({cell:be,column:N,props:wt}),inputComponent:ht({cell:be,column:N,readonly:v,onSubmit(Bs){return $a(Bs,N,be.row.original)}})})}})),ja=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:50,minSize:50,header({table:N}){return be=>T(Yt,{table:N,readonly:v,...be})},cell({row:N}){return be=>T(ao,{row:N,readonly:v,...be})}}],se=[...We,...ja].sort(En);return $e(So,{children:[T("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:T("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:$e("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[$e("div",{className:"ps-flex ps-items-center ps-gap-2",children:[T(D,{variant:"outline",size:"sm",onClick:s,children:u?T(Ee,{}):T(Ue,{})}),$e(Jo,{onOpenChange:la,children:[T($o,{asChild:!0,children:T(D,{variant:"outline",size:"sm",className:p(y>0&&"ps-border-primary"),children:$e("span",{className:"ps-flex ps-items-center ps-gap-2",children:[T(ha,{}),y>0&&T(ot,{children:T(Fn,{transition:{layout:{duration:.12}},children:y})})]})})}),T(Nt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:T(Dr,{filter:C,setFilter:h,setAppliedFilter:N=>{h(N),c(N)},table:t})})]}),T(D,{variant:"outline",size:"sm",onClick:Ja,disabled:J>0,children:"Insert row"}),x.length>0&&$e(So,{children:[T(D,{variant:"secondary",size:"sm",onClick:je,children:"Save"}),T(D,{variant:"ghost",size:"sm",onClick:Ye,children:"Cancel"})]}),Z&&T(So,{children:T(D,{variant:"secondary",size:"sm",onClick:V,children:"Delete"})})]}),$e("div",{className:"ps-flex ps-items-center ps-gap-2",children:[T(D,{variant:"outline",size:"icon",onClick:()=>void re(),disabled:z,children:T(Aa,{className:p("ps-h-4 ps-w-4",z&&"ps-animate-spin")})}),T(D,{variant:"outline",size:"icon",onClick:l,children:r?T(Pa,{}):T(va,{})})]})]})})}),T(Wr,{columnDefs:se,getBeforeRows:N=>T(Cs,{table:N,stagedRows:x,setStagedRows:g}),isLoading:z,isProcessing:a,onPaginationChange:m,onRowSelectionChange:B,onSortingChange:n,pageCount:qn(U?.filteredRowCount??1/0,f.pageSize),paginationState:f,rows:U?.rows??[],rowSelectionState:W,sortingState:d})]})}function qn(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function En(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{Slot as Vn}from"@radix-ui/react-slot";import{useCallback as Hn,useEffect as Is,useMemo as Ss}from"react";import{v4 as zn}from"uuid";import{useQuery as Un}from"@tanstack/react-query";var It=-1;function St(){let{adapter:e}=H();return Un({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:It,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===It?0:1/0})}function bs(){let{activeTable:e,setActiveTable:a,adapter:t,emitTelemetryEvent:o}=H(),{data:r,dataUpdatedAt:l}=St(),s=l===It,u=Ss(()=>Object.values(r.schemas[t.defaultSchema||"db"]?.tables||{}),[r.schemas,t.defaultSchema]),d=Ss(()=>Object.values(r.schemas).reduce((c,C)=>c+Object.keys(C.tables).length,0),[r.schemas]),[n]=u,[f,m]=ua({table:{defaultValue:null,parse:c=>c,serialize:c=>c??""},schema:{defaultValue:"",parse:c=>c,serialize:c=>c??""}}),[,x]=pe("pageIndex",{parse:c=>c,serialize:c=>c??""}),[,g]=pe("sort",{parse:c=>c,serialize:c=>c??""});Is(()=>{if(!s){if(f?.table&&u.length>0){let c=u.find(C=>C.name===f.table);if(c){a(c);return}}u.length>0&&!e&&(a(n||null),n&&m({table:n.name,schema:n.schema}))}},[s,f,u,n,e,a,m]);let L=Hn(c=>{e!==c&&(a(c),m({table:c.name,schema:c.schema}),x(null),g(null))},[e,a,m,x,g]);return Is(()=>{l!==-1&&o({event:"studio_launched",payload:{event_id:zn(),timestamp:new Date().toISOString(),table_count:d}})},[u,o,l,d]),{tables:u,activeTable:e,isLoading:s,handleTableChange:L}}import{jsx as te,jsxs as bo}from"react/jsx-runtime";function he({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=bs(),{activeView:l,handleViewChange:s}=at(),u=p("ps-flex ps-flex-col ps-w-48 ps-gap-4 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return bo("div",{className:u,children:[te(he.Block,{label:"Studio",children:te(he.Item,{isActive:l==="schema-visualiser",onClick:()=>s("schema-visualiser"),className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:"Schema visualiser"})}),te(he.Block,{label:"Tables",children:a.length>0?a.map(d=>te(he.Item,{asChild:!0,isActive:l==="tables"&&t===d,onClick:()=>{s("tables"),r(d)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:te("a",{href:`#table=${d.name}&schema=${d.schema}`,children:d.name})},`${d.schema}-${d.name}`)):o?Array(4).fill(null).map((d,n)=>te(he.Item,{wrapChildrenInSpan:!1,children:te(oa,{className:"ps-h-3 ps-w-full"})},n)):te(he.Item,{children:"No tables found"})})]})}var Gn=({className:e,label:a,children:t,...o})=>bo("div",{className:e,...o,children:[bo("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[te(Fa,{size:16,className:"ps-text-muted-foreground/60"}),te("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),te("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),Wn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>te(a?Vn:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:p("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...s,children:l?te("span",{className:"ps-truncate",children:r}):r});he.Block=Gn;he.Item=Wn;import{useMemo as Kn}from"react";var ys={name:"No Tables Found",fields:[{name:"message",type:"info",isRequired:!0}]};function _n(e){let a=e.match(/^(.+)_id$/);if(a&&a[1])return a[1];let t=e.match(/^(.+)Id$/);return t&&t[1]?t[1]:null}function Xn(e,a){let t=e.toLowerCase(),o=a.toLowerCase();return!!(t===o||o===`${t}s`||{person:["people","persons"],child:["children"],man:["men"],woman:["women"],foot:["feet"],tooth:["teeth"],goose:["geese"],mouse:["mice"],datum:["data"],analysis:["analyses"],criterion:["criteria"],medium:["media"]}[t]?.includes(o))}function ws(){let{data:e,isLoading:a,error:t}=St();return Kn(()=>{if(a)return{tables:[],relationships:[]};if(!e)return{tables:[ys],relationships:[]};let o=[],r={},l=!1;if(Object.values(e.schemas).forEach(u=>{Object.values(u.tables).forEach(d=>{l=!0;let n=[];Object.values(d.columns).forEach(m=>{n.push({name:m.name,type:m.datatype.name,isPrimary:m.isInPrimaryKey,isRequired:!m.nullable})});let f={name:d.name,fields:n};o.push(f),r[d.name]=f})}),!l||o.length===0)return{tables:[ys],relationships:[]};let s=[];return o.forEach(u=>{u.fields.forEach(d=>{if(d.isPrimary)return;let n=_n(d.name);if(!n)return;let f=Object.entries(r).find(([m])=>Xn(n,m));if(f){let[m]=f,x=r[m];x&&x.fields.some(L=>L.isPrimary)&&s.push({from:m,to:u.name,type:"1:n"})}})}),{tables:o,relationships:s}},[e,a,t])}import"reactflow/dist/style.css";import{memo as Qn,useCallback as Zn,useEffect as vs,useMemo as bt}from"react";import Jn,{addEdge as $n,Background as jn,ConnectionLineType as Yn,Controls as ei,Handle as Ps,Position as ks,useEdgesState as ai,useNodesState as ti}from"reactflow";import{jsx as E,jsxs as yt}from"react/jsx-runtime";var Ms=Qn(({data:e})=>{let a=e.label==="No Tables Found",t=(o,r)=>{if(a&&r==="info")return E(Pe,{className:"ps-w-4 ps-h-4"});switch(o.toLowerCase()){case"id":return E(Sa,{className:"ps-w-4 ps-h-4"});case"email":return E(wa,{className:"ps-w-4 ps-h-4"});case"phone":return E(Ma,{className:"ps-w-4 ps-h-4"});case"name":return E(Ba,{className:"ps-w-4 ps-h-4"});case"createdat":case"updatedat":return E(ca,{className:"ps-w-4 ps-h-4"});default:return E(ya,{className:"ps-w-4 ps-h-4"})}};return yt("div",{className:p("ps-min-w-[250px] ps-shadow-xl ps-rounded-md ps-border ps-border-border ps-bg-card",a&&"ps-border-orange-400"),children:[E(Ps,{type:"target",position:ks.Top,style:{opacity:0}}),E("div",{className:p("ps-px-4 ps-py-3 ps-border-b",a&&"ps-bg-orange-100 dark:ps-bg-orange-950 ps-text-orange-700 dark:ps-text-orange-300"),children:E("div",{className:"ps-font-bold",children:e.label})}),E("div",{className:"ps-px-4 ps-py-2",children:a?yt("div",{className:"ps-flex ps-items-center ps-gap-2 ps-py-8 ps-text-sm ps-text-muted-foreground",children:[E("span",{className:"ps-text-orange-500",children:E(Pe,{className:"ps-w-5 ps-h-5"})}),E("span",{className:"ps-flex-1",children:"No database tables found. Connect to a database to see your schema."})]}):e.fields.map((o,r)=>yt("div",{className:p("ps-flex ps-items-center ps-gap-2 ps-py-2 ps-text-sm",o.isPrimary&&"ps-text-primary"),children:[E("span",{className:"ps-text-muted-foreground",children:t(o.name,o.type)}),E("span",{className:"ps-flex-1",children:o.name}),E("span",{className:"ps-text-xs ps-text-muted-foreground",children:o.type})]},r))}),E(Ps,{type:"source",position:ks.Bottom,style:{opacity:0}})]})});Ms.displayName="TableNode";var oi={tableNode:Ms};function Rs(e,a){if(e.length<=3)return e.map((l,s)=>({id:l.name,type:"tableNode",data:{label:l.name,fields:l.fields},position:{x:350*s,y:50}}));let t=350,o=300,r=Math.ceil(Math.sqrt(e.length));return e.map((l,s)=>{let u=s%r,d=Math.floor(s/r);return{id:l.name,type:"tableNode",data:{label:l.name,fields:l.fields},position:{x:u*t,y:d*o}}})}function Ts({tables:e,relationships:a}){let t=bt(()=>new Set(e.map(g=>g.name)),[e]),o=bt(()=>a.filter(g=>t.has(g.from)&&t.has(g.to)),[a,t]),r=bt(()=>Rs(e,o),[e,o]),l=bt(()=>o.map((g,L)=>({id:`e${L}`,source:g.from,target:g.to,animated:!0,label:g.type,type:"smoothstep",style:{stroke:"hsl(var(--primary))",strokeWidth:1,strokeDasharray:"5 5"},labelStyle:{fill:"hsl(var(--primary))",fontSize:12}})),[o]),[s,u,d]=ti(r),[n,f,m]=ai(l);vs(()=>{u(Rs(e,o))},[e,o,u]),vs(()=>{f(o.map((g,L)=>({id:`e${L}`,source:g.from,target:g.to,animated:!0,label:g.type,type:"smoothstep",style:{stroke:"hsl(var(--primary))",strokeWidth:1,strokeDasharray:"5 5"},labelStyle:{fill:"hsl(var(--primary))",fontSize:12}})))},[o,f]);let x=Zn(g=>f(L=>$n(g,L)),[f]);return E("div",{className:"ps-w-full ps-h-full ps-bg-card",children:yt(Jn,{nodes:s,edges:n,onNodesChange:d,onEdgesChange:m,onConnect:x,connectionLineType:Yn.SmoothStep,nodeTypes:oi,fitView:!0,fitViewOptions:{padding:.2},children:[E(jn,{className:"ps-bg-muted",gap:16}),E(ei,{className:"!ps-bg-[hsl(var(--studio-background))] !ps-border-[hsl(var(--studio-border))] !ps-text-[hsl(var(--studio-foreground))]"})]})})}import{jsx as Ds}from"react/jsx-runtime";function As(){let{tables:e,relationships:a}=ws();return console.log("Detected relationships:",a),Ds("div",{className:"ps-w-full ps-h-full",children:Ds(Ts,{tables:e,relationships:a})})}import{jsx as Ie,jsxs as ui}from"react/jsx-runtime";function si(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Ie(Do,{adapter:a,onError:t,onTelemetryEvent:o,children:Ie(li,{})}):(console.error("No adapter provided to Studio component"),Ie("div",{children:"Error: No adapter provided"}))}function li(){let{isFullscreen:e,isNavigationOpen:a}=H(),{activeView:t}=at(),o=p("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return Ie("div",{"data-fullscreen":e,className:o,children:ui("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[Ie(ri,{mode:"wait",children:a&&Ie(Fs.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Ie(he,{})})}),Ie(Fs.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:t==="tables"?Ie(hs,{}):Ie(As,{})})]})})}export{si as Studio};
|
|
21
21
|
/*! Bundled license information:
|
|
22
22
|
|
|
23
23
|
lucide-react/dist/esm/shared/src/utils.js:
|
|
@@ -344,4 +344,4 @@ lucide-react/dist/esm/lucide-react.js:
|
|
|
344
344
|
* @license MIT
|
|
345
345
|
*)
|
|
346
346
|
*/
|
|
347
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS12aWV3LnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jb250ZXh0LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9SZWFjdFF1ZXJ5RGV2dG9vbHMudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcXVlcnktZGV2dG9vbHNANS43Mi4yL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcXVlcnktZGV2dG9vbHMvYnVpbGQvaW5kZXguanMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzUGFuZWwudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc29ubmVyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTnVxc0hhc2hBZGFwdGVyLnRzeCIsICIuLi8uLi91aS9ob29rcy9udXFzLnRzIiwgIi4uLy4uL3VpL2xpYi91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY2xhc3MtZ3JvdXAtdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2xydS1jYWNoZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvcGFyc2UtY2xhc3MtbmFtZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY29uZmlnLXV0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9tZXJnZS1jbGFzc2xpc3QudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3R3LWpvaW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NyZWF0ZS10YWlsd2luZC1tZXJnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZnJvbS10aGVtZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdmFsaWRhdG9ycy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZGVmYXVsdC1jb25maWcudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNvbmZpZ3MudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2V4dGVuZC10YWlsd2luZC1tZXJnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctbWVyZ2UudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL0FjdGl2ZVRhYmxlVmlldy50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvc2hhcmVkL3NyYy91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2RlZmF1bHRBdHRyaWJ1dGVzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2NyZWF0ZUx1Y2lkZUljb24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy1kb3duLXdpZGUtbmFycm93LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jYWxlbmRhci50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtYWxlcnQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtaGVscC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NvcHkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3JuZXItZG93bi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZmlsdGVyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZ3JpcC12ZXJ0aWNhbC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2hhc2gudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXktcm91bmQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tYWlsLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWF4aW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9taW5pbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1vcGVuLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGhvbmUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4tb2ZmLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcmVmcmVzaC1jdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3RhYmxlLTIudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy91c2VyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9ob29rcy91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdC50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXF1ZXJ5LnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtdXBkYXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1maWx0ZXJpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL2dldC1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Cb29sZWFuQ2VsbC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90YWJsZS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdENlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRMb2FkaW5nQmFyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZFBhZ2luYXRpb24udHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nLnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdG9vbHRpcC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvZ2V0LWlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvQm9vbGVhbklucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2xhYmVsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3N3aXRjaC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2lucHV0LWFjdGlvbnMudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9EYXRlSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC91c2UtaW5wdXQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0VudW1JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0pzb25JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L051bWVyaWNJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1Jhd0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvVGltZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vU3RhZ2VkUm93cy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL05hdmlnYXRpb24udHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNjaGVtYS12aXN1YWxpemF0aW9uLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9zY2hlbWEvVmlzdWFsaXNlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL3NjaGVtYS9TY2hlbWFWaWV3LnRzeCJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciB9IGZyb20gXCIuLi8uLi9kYXRhXCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVWaWV3IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdmlld1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBBY3RpdmVUYWJsZVZpZXcgfSBmcm9tIFwiLi9BY3RpdmVUYWJsZVZpZXdcIjtcbmltcG9ydCB7IFN0dWRpb0NvbnRleHRQcm92aWRlciwgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gXCIuL05hdmlnYXRpb25cIjtcbmltcG9ydCB7IFNjaGVtYVZpZXcgfSBmcm9tIFwiLi9zY2hlbWEvU2NoZW1hVmlld1wiO1xuXG5leHBvcnQgdHlwZSBTdHVkaW9UZWxlbWV0cnlFdmVudCA9IHtcbiAgZXZlbnQ6IFwic3R1ZGlvX2xhdW5jaGVkXCI7XG4gIHBheWxvYWQ6IHtcbiAgICBldmVudF9pZDogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogc3RyaW5nO1xuICAgIHVzZXJfaWQ/OiBzdHJpbmc7XG4gICAgd29ya3NwYWNlX2lkPzogc3RyaW5nO1xuICAgIG9yZ2FuaXphdGlvbl9pZD86IHN0cmluZztcbiAgICBlbWJlZGRpbmdfdHlwZT86IHN0cmluZztcbiAgICB2ZW5kb3JfaWQ/OiBzdHJpbmc7XG4gICAgdGFibGVfY291bnQ6IG51bWJlcjtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3R1ZGlvUHJvcHMge1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgb25UZWxlbWV0cnlFdmVudD86IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBNYWluIFN0dWRpbyBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBkYXRhYmFzZSB2aXN1YWxpemF0aW9uIGFuZCBtYW5hZ2VtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW8ocHJvcHM6IFN0dWRpb1Byb3BzKSB7XG4gIGNvbnN0IHsgYWRhcHRlciwgb25FcnJvciwgb25UZWxlbWV0cnlFdmVudCB9ID0gcHJvcHM7XG5cbiAgaWYgKCFhZGFwdGVyKSB7XG4gICAgY29uc29sZS5lcnJvcihcIk5vIGFkYXB0ZXIgcHJvdmlkZWQgdG8gU3R1ZGlvIGNvbXBvbmVudFwiKTtcbiAgICByZXR1cm4gPGRpdj5FcnJvcjogTm8gYWRhcHRlciBwcm92aWRlZDwvZGl2PjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0dWRpb0NvbnRleHRQcm92aWRlciBhZGFwdGVyPXthZGFwdGVyfSBvbkVycm9yPXtvbkVycm9yfSBvblRlbGVtZXRyeUV2ZW50PXtvblRlbGVtZXRyeUV2ZW50fT5cbiAgICAgIDxTdHVkaW9Db250ZW50IC8+XG4gICAgPC9TdHVkaW9Db250ZXh0UHJvdmlkZXI+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFN0dWRpb0NvbnRlbnQoKSB7XG4gIGNvbnN0IHsgaXNGdWxsc2NyZWVuLCBpc05hdmlnYXRpb25PcGVuIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBhY3RpdmVWaWV3IH0gPSB1c2VBY3RpdmVWaWV3KCk7XG5cbiAgY29uc3QgY29udGFpbmVyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGwgcHMtbWluLWgtMCBwcy1tYXgtaC1mdWxsXCIsXG4gICAgaXNGdWxsc2NyZWVuICYmIFwicHMtZml4ZWQgcHMtaW5zZXQtMCBwcy16LVs5OTk5XSBwcy1iZy1iYWNrZ3JvdW5kIHBzLXAtMlwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBkYXRhLWZ1bGxzY3JlZW49e2lzRnVsbHNjcmVlbn0gY2xhc3NOYW1lPXtjb250YWluZXJDbGFzc2VzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1nYXAtMCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC01MCBwcy1yZWxhdGl2ZSBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtcm91bmRlZC1sZ1wiPlxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gJiYgKFxuICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHdpZHRoOiBcImF1dG9cIiwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPE5hdmlnYXRpb24gLz5cbiAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cblxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtMTAwIHBzLWZsZXgtY29sIHBzLXAtcHggcHMtcm91bmRlZC1sZyBwcy1zZWxmLXN0YXJ0IHBzLWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLW1heC1oLWZ1bGwgcHMtb3ZlcmZsb3ctY2xpcFwiXG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICA+XG4gICAgICAgICAge2FjdGl2ZVZpZXcgPT09IFwidGFibGVzXCIgPyA8QWN0aXZlVGFibGVWaWV3IC8+IDogPFNjaGVtYVZpZXcgLz59XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgU3R1ZGlvVmlldywgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG4vKipcbiAqIEhvb2sgdG8gZW5jYXBzdWxhdGUgYWxsIGxvZ2ljIGZvciBtYW5hZ2luZyB0aGUgYWN0aXZlIHZpZXcuXG4gKiBIYW5kbGVzIHN5bmNpbmcgd2l0aCBVUkwgcGFyYW1zIGFuZCBleHBvc2VzIGEgc2ltcGxlIEFQSSBmb3IgY29uc3VtZXJzLlxuICogU2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoaW4gU3R1ZGlvIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVWaWV3KCkge1xuICBjb25zdCB7IGFjdGl2ZVZpZXcsIHNldEFjdGl2ZVZpZXcgfSA9IHVzZVN0dWRpbygpO1xuXG4gIC8vIEdldCBhbGwgdGhlIHBhcmFtcyB3ZSBtaWdodCBuZWVkIHRvIGNsZWFuIHVwXG4gIGNvbnN0IFt2aWV3UGFyYW0sIHNldFZpZXdQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBcInRhYmxlc1wiIGFzIFN0dWRpb1ZpZXcsXG4gICAgcGFyc2U6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiAodiBhcyBTdHVkaW9WaWV3KSB8fCBcInRhYmxlc1wiLFxuICAgIHNlcmlhbGl6ZTogKHY6IFN0dWRpb1ZpZXcgfCBudWxsKSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIENsZWFuIHVwIFVSTCBwYXJhbXMgdGhhdCBhcmUgbm90IG5lZWRlZCBmb3Igc2NoZW1hIHZpc3VhbGlzZXJcbiAgY29uc3QgY2xlYW5VcmxQYXJhbXNGb3JTY2hlbWFWaXN1YWxpc2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIEdldCB0aGUgY3VycmVudCBoYXNoIGFuZCBjcmVhdGUgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0XG4gICAgY29uc3QgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoaGFzaCk7XG5cbiAgICAvLyBSZW1vdmUgYWxsIHBhcmFtcyBleGNlcHQgJ3ZpZXcnXG4gICAgZm9yIChjb25zdCBwYXJhbSBvZiBBcnJheS5mcm9tKHNlYXJjaFBhcmFtcy5rZXlzKCkpKSB7XG4gICAgICBpZiAocGFyYW0gIT09IFwidmlld1wiKSB7XG4gICAgICAgIHNlYXJjaFBhcmFtcy5kZWxldGUocGFyYW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSB2aWV3IHBhcmFtIGlzIHNldCB0byBzY2hlbWEtdmlzdWFsaXNlclxuICAgIHNlYXJjaFBhcmFtcy5zZXQoXCJ2aWV3XCIsIFwic2NoZW1hLXZpc3VhbGlzZXJcIik7XG5cbiAgICAvLyBVcGRhdGUgdGhlIFVSTFxuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBcIlwiLCBgIyR7c2VhcmNoUGFyYW1zLnRvU3RyaW5nKCl9YCk7XG4gIH0sIFtdKTtcblxuICAvLyBFZmZlY3QgdG8gc3luYyBhY3RpdmUgdmlldyB3aXRoIFVSTCBwYXJhbVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh2aWV3UGFyYW0gJiYgKHZpZXdQYXJhbSA9PT0gXCJ0YWJsZXNcIiB8fCB2aWV3UGFyYW0gPT09IFwic2NoZW1hLXZpc3VhbGlzZXJcIikpIHtcbiAgICAgIHNldEFjdGl2ZVZpZXcodmlld1BhcmFtKTtcbiAgICB9XG4gIH0sIFt2aWV3UGFyYW0sIHNldEFjdGl2ZVZpZXddKTtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBhY3RpdmUgdmlldyBhbmQgdXBkYXRlIHRoZSBVUkwgcGFyYW0uXG4gICAqL1xuICBjb25zdCBoYW5kbGVWaWV3Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG5ld1ZpZXc6IFN0dWRpb1ZpZXcpID0+IHtcbiAgICAgIGlmIChhY3RpdmVWaWV3ICE9PSBuZXdWaWV3KSB7XG4gICAgICAgIHNldEFjdGl2ZVZpZXcobmV3Vmlldyk7XG5cbiAgICAgICAgLy8gQ2xlYW4gdXAgVVJMIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0byBzY2hlbWEgdmlzdWFsaXNlclxuICAgICAgICBpZiAobmV3VmlldyA9PT0gXCJzY2hlbWEtdmlzdWFsaXNlclwiKSB7XG4gICAgICAgICAgY2xlYW5VcmxQYXJhbXNGb3JTY2hlbWFWaXN1YWxpc2VyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRm9yIHRhYmxlcyB2aWV3LCBqdXN0IHVwZGF0ZSB0aGUgdmlldyBwYXJhbVxuICAgICAgICAgIHZvaWQgc2V0Vmlld1BhcmFtKG5ld1ZpZXcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbYWN0aXZlVmlldywgc2V0QWN0aXZlVmlldywgc2V0Vmlld1BhcmFtLCBjbGVhblVybFBhcmFtc0ZvclNjaGVtYVZpc3VhbGlzZXJdLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgYWN0aXZlVmlldyxcbiAgICBoYW5kbGVWaWV3Q2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBRdWVyeUNsaWVudFByb3ZpZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgUmVhY3RRdWVyeURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc29ubmVyXCI7XG5pbXBvcnQgeyBOdXFzSGFzaEFkYXB0ZXIgfSBmcm9tIFwiLi9OdXFzSGFzaEFkYXB0ZXJcIjtcbmltcG9ydCB7IFN0dWRpb1RlbGVtZXRyeUV2ZW50IH0gZnJvbSBcIi4vU3R1ZGlvXCI7XG5cbi8vIERlZmluZSB0aGUgYXZhaWxhYmxlIHZpZXdzIGluIHRoZSBzdHVkaW9cbmV4cG9ydCB0eXBlIFN0dWRpb1ZpZXcgPSBcInRhYmxlc1wiIHwgXCJzY2hlbWEtdmlzdWFsaXNlclwiO1xuXG4vKipcbiAqIFN0dWRpbyBjb250ZXh0IHZhbHVlIGludGVyZmFjZVxuICovXG5pbnRlcmZhY2UgU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgYWN0aXZlVGFibGU6IFRhYmxlIHwgbnVsbDtcbiAgYWN0aXZlVmlldzogU3R1ZGlvVmlldztcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgc2V0QWN0aXZlVGFibGU6ICh0YWJsZTogVGFibGUgfCBudWxsKSA9PiB2b2lkO1xuICBzZXRBY3RpdmVWaWV3OiAodmlldzogU3R1ZGlvVmlldykgPT4gdm9pZDtcbiAgb25FcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgZW1pdFRlbGVtZXRyeUV2ZW50OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG4gIC8vIFVJIHN0YXRlXG4gIGlzRnVsbHNjcmVlbjogYm9vbGVhbjtcbiAgdG9nZ2xlRnVsbHNjcmVlbjogKCkgPT4gdm9pZDtcbiAgaXNOYXZpZ2F0aW9uT3BlbjogYm9vbGVhbjtcbiAgdG9nZ2xlTmF2aWdhdGlvbjogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKTtcblxuLyoqXG4gKiBDb250ZXh0IGZvciBzaGFyaW5nIFN0dWRpbyBzdGF0ZSBhY3Jvc3MgY29tcG9uZW50c1xuICovXG5jb25zdCBTdHVkaW9Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxTdHVkaW9Db250ZXh0VmFsdWUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgb25UZWxlbWV0cnlFdmVudD86IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbn0+O1xuXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvQ29udGV4dFByb3ZpZGVyKHByb3BzOiBTdHVkaW9Db250ZXh0UHJvdmlkZXJQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCAuLi5vdGhlclByb3BzIH0gPSBwcm9wcztcbiAgY29uc3QgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZV0gPSB1c2VTdGF0ZTxUYWJsZSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbYWN0aXZlVmlldywgc2V0QWN0aXZlVmlld10gPSB1c2VTdGF0ZTxTdHVkaW9WaWV3PihcInRhYmxlc1wiKTtcbiAgY29uc3QgW2lzRnVsbHNjcmVlbiwgc2V0SXNGdWxsc2NyZWVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzTmF2aWdhdGlvbk9wZW4sIHNldElzTmF2aWdhdGlvbk9wZW5dID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgbGV0IG9uRXJyb3IgPSBwcm9wcy5vbkVycm9yO1xuICBvbkVycm9yID8/PSAoZXJyb3I6IEVycm9yKSA9PiB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKTtcblxuICBjb25zdCBlbWl0VGVsZW1ldHJ5RXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMub25UZWxlbWV0cnlFdmVudCA/PyAoKCkgPT4ge30pO1xuICB9LCBbcHJvcHMub25UZWxlbWV0cnlFdmVudF0pO1xuXG4gIGNvbnN0IHRvZ2dsZUZ1bGxzY3JlZW4gPSAoKSA9PiBzZXRJc0Z1bGxzY3JlZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgY29uc3QgdG9nZ2xlTmF2aWdhdGlvbiA9ICgpID0+IHNldElzTmF2aWdhdGlvbk9wZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgcmV0dXJuIChcbiAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgIDxSZWFjdFF1ZXJ5RGV2dG9vbHMgLz5cbiAgICAgIDxUb2FzdGVyIC8+XG4gICAgICA8TnVxc0hhc2hBZGFwdGVyPlxuICAgICAgICA8U3R1ZGlvQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAuLi5vdGhlclByb3BzLFxuICAgICAgICAgICAgYWN0aXZlVGFibGUsXG4gICAgICAgICAgICBhY3RpdmVWaWV3LFxuICAgICAgICAgICAgaXNGdWxsc2NyZWVuLFxuICAgICAgICAgICAgc2V0QWN0aXZlVGFibGUsXG4gICAgICAgICAgICBzZXRBY3RpdmVWaWV3LFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCxcbiAgICAgICAgICAgIHRvZ2dsZUZ1bGxzY3JlZW4sXG4gICAgICAgICAgICBpc05hdmlnYXRpb25PcGVuLFxuICAgICAgICAgICAgdG9nZ2xlTmF2aWdhdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1N0dWRpb0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L051cXNIYXNoQWRhcHRlcj5cbiAgICA8L1F1ZXJ5Q2xpZW50UHJvdmlkZXI+XG4gICk7XG59XG5cbi8qKlxuICogSG9vayB0byBhY2Nlc3MgU3R1ZGlvIGNvbnRleHRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdXNlZCBvdXRzaWRlIG9mIFN0dWRpby5Qcm92aWRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3R1ZGlvKCk6IFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFN0dWRpb0NvbnRleHQpO1xuXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImB1c2VTdHVkaW9gIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgU3R1ZGlvQ29udGV4dC5Qcm92aWRlcmBcIik7XG4gIH1cblxuICByZXR1cm4gY29udGV4dDtcbn1cbiIsICIndXNlIGNsaWVudCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgb25saW5lTWFuYWdlciwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7XG4gIERldnRvb2xzQnV0dG9uUG9zaXRpb24sXG4gIERldnRvb2xzRXJyb3JUeXBlLFxuICBEZXZ0b29sc1Bvc2l0aW9uLFxufSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuXG5leHBvcnQgaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0cnVlIGlmIHlvdSB3YW50IHRoZSBkZXYgdG9vbHMgdG8gZGVmYXVsdCB0byBiZWluZyBvcGVuXG4gICAqL1xuICBpbml0aWFsSXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBSZWFjdCBRdWVyeSBsb2dvIHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBkZXZ0b29scyBwYW5lbC5cbiAgICogJ3RvcC1sZWZ0JyB8ICd0b3AtcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICdib3R0b20tcmlnaHQnXG4gICAqIERlZmF1bHRzIHRvICdib3R0b20tcmlnaHQnLlxuICAgKi9cbiAgYnV0dG9uUG9zaXRpb24/OiBEZXZ0b29sc0J1dHRvblBvc2l0aW9uXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIFJlYWN0IFF1ZXJ5IGRldnRvb2xzIHBhbmVsLlxuICAgKiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0J1xuICAgKiBEZWZhdWx0cyB0byAnYm90dG9tJy5cbiAgICovXG4gIHBvc2l0aW9uPzogRGV2dG9vbHNQb3NpdGlvblxuICAvKipcbiAgICogQ3VzdG9tIGluc3RhbmNlIG9mIFF1ZXJ5Q2xpZW50XG4gICAqL1xuICBjbGllbnQ/OiBRdWVyeUNsaWVudFxuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBkZWZpbmUgY3VzdG9tIGVycm9ycyB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGUgZGV2dG9vbHMuXG4gICAqL1xuICBlcnJvclR5cGVzPzogQXJyYXk8RGV2dG9vbHNFcnJvclR5cGU+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBwYXNzIGEgbm9uY2UgdG8gdGhlIHN0eWxlIHRhZyB0aGF0IGlzIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKENTUCkgbm9uY2UgdG8gYWxsb3cgaW5saW5lIHN0eWxlcy5cbiAgICovXG4gIHN0eWxlTm9uY2U/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gYXR0YWNoIHRoZSBkZXZ0b29sJ3Mgc3R5bGVzIHRvIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAgICovXG4gIHNoYWRvd0RPTVRhcmdldD86IFNoYWRvd1Jvb3Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0UXVlcnlEZXZ0b29scyhcbiAgcHJvcHM6IERldnRvb2xzT3B0aW9ucyxcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KHByb3BzLmNsaWVudClcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7XG4gICAgYnV0dG9uUG9zaXRpb24sXG4gICAgcG9zaXRpb24sXG4gICAgaW5pdGlhbElzT3BlbixcbiAgICBlcnJvclR5cGVzLFxuICAgIHN0eWxlTm9uY2UsXG4gICAgc2hhZG93RE9NVGFyZ2V0LFxuICB9ID0gcHJvcHNcbiAgY29uc3QgW2RldnRvb2xzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIG5ldyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMoe1xuICAgICAgY2xpZW50OiBxdWVyeUNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yOiAnUmVhY3QgUXVlcnknLFxuICAgICAgdmVyc2lvbjogJzUnLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgfSksXG4gIClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldENsaWVudChxdWVyeUNsaWVudClcbiAgfSwgW3F1ZXJ5Q2xpZW50LCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYnV0dG9uUG9zaXRpb24pIHtcbiAgICAgIGRldnRvb2xzLnNldEJ1dHRvblBvc2l0aW9uKGJ1dHRvblBvc2l0aW9uKVxuICAgIH1cbiAgfSwgW2J1dHRvblBvc2l0aW9uLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgIGRldnRvb2xzLnNldFBvc2l0aW9uKHBvc2l0aW9uKVxuICAgIH1cbiAgfSwgW3Bvc2l0aW9uLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRJbml0aWFsSXNPcGVuKGluaXRpYWxJc09wZW4gfHwgZmFsc2UpXG4gIH0sIFtpbml0aWFsSXNPcGVuLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRFcnJvclR5cGVzKGVycm9yVHlwZXMgfHwgW10pXG4gIH0sIFtlcnJvclR5cGVzLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIGRldnRvb2xzLm1vdW50KHJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkZXZ0b29scy51bm1vdW50KClcbiAgICB9XG4gIH0sIFtkZXZ0b29sc10pXG5cbiAgcmV0dXJuIDxkaXYgZGlyPVwibHRyXCIgY2xhc3NOYW1lPVwidHNxZC1wYXJlbnQtY29udGFpbmVyXCIgcmVmPXtyZWZ9PjwvZGl2PlxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNpZ25hbCwgcmVuZGVyLCBsYXp5LCBzZXR1cFN0eWxlU2hlZXQsIGNyZWF0ZUNvbXBvbmVudCwgbWVyZ2VQcm9wcyB9IGZyb20gJy4vY2h1bmsvSFI3WVhaNUguanMnO1xuXG4vLyBzcmMvVGFuc3RhY2tRdWVyeURldnRvb2xzLnRzeFxudmFyIFRhbnN0YWNrUXVlcnlEZXZ0b29scyA9IGNsYXNzIHtcbiAgI2NsaWVudDtcbiAgI29ubGluZU1hbmFnZXI7XG4gICNxdWVyeUZsYXZvcjtcbiAgI3ZlcnNpb247XG4gICNpc01vdW50ZWQgPSBmYWxzZTtcbiAgI3N0eWxlTm9uY2U7XG4gICNzaGFkb3dET01UYXJnZXQ7XG4gICNidXR0b25Qb3NpdGlvbjtcbiAgI3Bvc2l0aW9uO1xuICAjaW5pdGlhbElzT3BlbjtcbiAgI2Vycm9yVHlwZXM7XG4gICNDb21wb25lbnQ7XG4gICNkaXNwb3NlO1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcixcbiAgICAgIHZlcnNpb24sXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldFxuICAgIH0gPSBjb25maWc7XG4gICAgdGhpcy4jY2xpZW50ID0gY3JlYXRlU2lnbmFsKGNsaWVudCk7XG4gICAgdGhpcy4jcXVlcnlGbGF2b3IgPSBxdWVyeUZsYXZvcjtcbiAgICB0aGlzLiN2ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLiNvbmxpbmVNYW5hZ2VyID0gb25saW5lTWFuYWdlcjtcbiAgICB0aGlzLiNzdHlsZU5vbmNlID0gc3R5bGVOb25jZTtcbiAgICB0aGlzLiNzaGFkb3dET01UYXJnZXQgPSBzaGFkb3dET01UYXJnZXQ7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb24gPSBjcmVhdGVTaWduYWwoYnV0dG9uUG9zaXRpb24pO1xuICAgIHRoaXMuI3Bvc2l0aW9uID0gY3JlYXRlU2lnbmFsKHBvc2l0aW9uKTtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuID0gY3JlYXRlU2lnbmFsKGluaXRpYWxJc09wZW4pO1xuICAgIHRoaXMuI2Vycm9yVHlwZXMgPSBjcmVhdGVTaWduYWwoZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0QnV0dG9uUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0UG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNwb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0SW5pdGlhbElzT3Blbihpc09wZW4pIHtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuWzFdKGlzT3Blbik7XG4gIH1cbiAgc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzKSB7XG4gICAgdGhpcy4jZXJyb3JUeXBlc1sxXShlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy4jY2xpZW50WzFdKGNsaWVudCk7XG4gIH1cbiAgbW91bnQoZWwpIHtcbiAgICBpZiAodGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBhbHJlYWR5IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGRpc3Bvc2UgPSByZW5kZXIoKCkgPT4ge1xuICAgICAgY29uc3QgX3NlbGYkID0gdGhpcztcbiAgICAgIGNvbnN0IFtidG5Qb3NpdGlvbl0gPSB0aGlzLiNidXR0b25Qb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtwb3NdID0gdGhpcy4jcG9zaXRpb247XG4gICAgICBjb25zdCBbaXNPcGVuXSA9IHRoaXMuI2luaXRpYWxJc09wZW47XG4gICAgICBjb25zdCBbZXJyb3JzXSA9IHRoaXMuI2Vycm9yVHlwZXM7XG4gICAgICBjb25zdCBbcXVlcnlDbGllbnRdID0gdGhpcy4jY2xpZW50O1xuICAgICAgbGV0IERldnRvb2xzO1xuICAgICAgaWYgKHRoaXMuI0NvbXBvbmVudCkge1xuICAgICAgICBEZXZ0b29scyA9IHRoaXMuI0NvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERldnRvb2xzID0gbGF6eSgoKSA9PiBpbXBvcnQoJy4vRGV2dG9vbHNDb21wb25lbnQvQ1BJT1pTNVguanMnKSk7XG4gICAgICAgIHRoaXMuI0NvbXBvbmVudCA9IERldnRvb2xzO1xuICAgICAgfVxuICAgICAgc2V0dXBTdHlsZVNoZWV0KHRoaXMuI3N0eWxlTm9uY2UsIHRoaXMuI3NoYWRvd0RPTVRhcmdldCk7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERldnRvb2xzLCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IHF1ZXJ5Rmxhdm9yKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3F1ZXJ5Rmxhdm9yO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiN2ZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25saW5lTWFuYWdlcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNvbmxpbmVNYW5hZ2VyO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgc2hhZG93RE9NVGFyZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3NoYWRvd0RPTVRhcmdldDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBxdWVyeUNsaWVudCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgYnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGJ0blBvc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcG9zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBpbml0aWFsSXNPcGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yVHlwZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycygpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSwgZWwpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IHRydWU7XG4gICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gIH1cbiAgdW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHRoaXMuI2Rpc3Bvc2U/LigpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IGZhbHNlO1xuICB9XG59O1xuXG4vLyBzcmMvVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwudHN4XG52YXIgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgPSBjbGFzcyB7XG4gICNjbGllbnQ7XG4gICNvbmxpbmVNYW5hZ2VyO1xuICAjcXVlcnlGbGF2b3I7XG4gICN2ZXJzaW9uO1xuICAjaXNNb3VudGVkID0gZmFsc2U7XG4gICNzdHlsZU5vbmNlO1xuICAjc2hhZG93RE9NVGFyZ2V0O1xuICAjYnV0dG9uUG9zaXRpb247XG4gICNwb3NpdGlvbjtcbiAgI2luaXRpYWxJc09wZW47XG4gICNlcnJvclR5cGVzO1xuICAjb25DbG9zZTtcbiAgI0NvbXBvbmVudDtcbiAgI2Rpc3Bvc2U7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgICAgb25DbG9zZVxuICAgIH0gPSBjb25maWc7XG4gICAgdGhpcy4jY2xpZW50ID0gY3JlYXRlU2lnbmFsKGNsaWVudCk7XG4gICAgdGhpcy4jcXVlcnlGbGF2b3IgPSBxdWVyeUZsYXZvcjtcbiAgICB0aGlzLiN2ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLiNvbmxpbmVNYW5hZ2VyID0gb25saW5lTWFuYWdlcjtcbiAgICB0aGlzLiNzdHlsZU5vbmNlID0gc3R5bGVOb25jZTtcbiAgICB0aGlzLiNzaGFkb3dET01UYXJnZXQgPSBzaGFkb3dET01UYXJnZXQ7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb24gPSBjcmVhdGVTaWduYWwoYnV0dG9uUG9zaXRpb24pO1xuICAgIHRoaXMuI3Bvc2l0aW9uID0gY3JlYXRlU2lnbmFsKHBvc2l0aW9uKTtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuID0gY3JlYXRlU2lnbmFsKGluaXRpYWxJc09wZW4pO1xuICAgIHRoaXMuI2Vycm9yVHlwZXMgPSBjcmVhdGVTaWduYWwoZXJyb3JUeXBlcyk7XG4gICAgdGhpcy4jb25DbG9zZSA9IGNyZWF0ZVNpZ25hbChvbkNsb3NlKTtcbiAgfVxuICBzZXRCdXR0b25Qb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI3Bvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRJbml0aWFsSXNPcGVuKGlzT3Blbikge1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW5bMV0oaXNPcGVuKTtcbiAgfVxuICBzZXRFcnJvclR5cGVzKGVycm9yVHlwZXMpIHtcbiAgICB0aGlzLiNlcnJvclR5cGVzWzFdKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLiNjbGllbnRbMV0oY2xpZW50KTtcbiAgfVxuICBzZXRPbkNsb3NlKG9uQ2xvc2UpIHtcbiAgICB0aGlzLiNvbkNsb3NlWzFdKCgpID0+IG9uQ2xvc2UpO1xuICB9XG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgYWxyZWFkeSBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwb3NlID0gcmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IF9zZWxmJCA9IHRoaXM7XG4gICAgICBjb25zdCBbYnRuUG9zaXRpb25dID0gdGhpcy4jYnV0dG9uUG9zaXRpb247XG4gICAgICBjb25zdCBbcG9zXSA9IHRoaXMuI3Bvc2l0aW9uO1xuICAgICAgY29uc3QgW2lzT3Blbl0gPSB0aGlzLiNpbml0aWFsSXNPcGVuO1xuICAgICAgY29uc3QgW2Vycm9yc10gPSB0aGlzLiNlcnJvclR5cGVzO1xuICAgICAgY29uc3QgW3F1ZXJ5Q2xpZW50XSA9IHRoaXMuI2NsaWVudDtcbiAgICAgIGNvbnN0IFtvbkNsb3NlXSA9IHRoaXMuI29uQ2xvc2U7XG4gICAgICBsZXQgRGV2dG9vbHM7XG4gICAgICBpZiAodGhpcy4jQ29tcG9uZW50KSB7XG4gICAgICAgIERldnRvb2xzID0gdGhpcy4jQ29tcG9uZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRGV2dG9vbHMgPSBsYXp5KCgpID0+IGltcG9ydCgnLi9EZXZ0b29sc1BhbmVsQ29tcG9uZW50L09LRjZFNDVSLmpzJykpO1xuICAgICAgICB0aGlzLiNDb21wb25lbnQgPSBEZXZ0b29scztcbiAgICAgIH1cbiAgICAgIHNldHVwU3R5bGVTaGVldCh0aGlzLiNzdHlsZU5vbmNlLCB0aGlzLiNzaGFkb3dET01UYXJnZXQpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZXZ0b29scywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGdldCBxdWVyeUZsYXZvcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNxdWVyeUZsYXZvcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jdmVyc2lvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9ubGluZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jb25saW5lTWFuYWdlcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNoYWRvd0RPTVRhcmdldCgpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNzaGFkb3dET01UYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZ2V0IGNsaWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcXVlcnlDbGllbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBidG5Qb3NpdGlvbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgaW5pdGlhbElzT3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNPcGVuKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvclR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcnMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9uQ2xvc2UoKSB7XG4gICAgICAgICAgcmV0dXJuIG9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0sIGVsKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICB9XG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICB0aGlzLiNkaXNwb3NlPy4oKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzLCBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCB9O1xuIiwgIid1c2UgY2xpZW50J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBvbmxpbmVNYW5hZ2VyLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcbmltcG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBEZXZ0b29sc0Vycm9yVHlwZSB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGluc3RhbmNlIG9mIFF1ZXJ5Q2xpZW50XG4gICAqL1xuICBjbGllbnQ/OiBRdWVyeUNsaWVudFxuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBkZWZpbmUgY3VzdG9tIGVycm9ycyB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGUgZGV2dG9vbHMuXG4gICAqL1xuICBlcnJvclR5cGVzPzogQXJyYXk8RGV2dG9vbHNFcnJvclR5cGU+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBwYXNzIGEgbm9uY2UgdG8gdGhlIHN0eWxlIHRhZyB0aGF0IGlzIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKENTUCkgbm9uY2UgdG8gYWxsb3cgaW5saW5lIHN0eWxlcy5cbiAgICovXG4gIHN0eWxlTm9uY2U/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gYXR0YWNoIHRoZSBkZXZ0b29sJ3Mgc3R5bGVzIHRvIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAgICovXG4gIHNoYWRvd0RPTVRhcmdldD86IFNoYWRvd1Jvb3RcblxuICAvKipcbiAgICogQ3VzdG9tIHN0eWxlcyBmb3IgdGhlIGRldnRvb2xzIHBhbmVsXG4gICAqIEBkZWZhdWx0IHsgaGVpZ2h0OiAnNTAwcHgnIH1cbiAgICogQGV4YW1wbGUgeyBoZWlnaHQ6ICcxMDAlJyB9XG4gICAqIEBleGFtcGxlIHsgaGVpZ2h0OiAnMTAwJScsIHdpZHRoOiAnMTAwJScgfVxuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGRldnRvb2xzIHBhbmVsIGlzIGNsb3NlZFxuICAgKi9cbiAgb25DbG9zZT86ICgpID0+IHVua25vd25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsKFxuICBwcm9wczogRGV2dG9vbHNQYW5lbE9wdGlvbnMsXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudChwcm9wcy5jbGllbnQpXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBlcnJvclR5cGVzLCBzdHlsZU5vbmNlLCBzaGFkb3dET01UYXJnZXQgfSA9IHByb3BzXG4gIGNvbnN0IFtkZXZ0b29sc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICBuZXcgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwoe1xuICAgICAgY2xpZW50OiBxdWVyeUNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yOiAnUmVhY3QgUXVlcnknLFxuICAgICAgdmVyc2lvbjogJzUnLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uOiAnYm90dG9tLWxlZnQnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgaW5pdGlhbElzT3BlbjogdHJ1ZSxcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgICAgb25DbG9zZTogcHJvcHMub25DbG9zZSxcbiAgICB9KSxcbiAgKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0Q2xpZW50KHF1ZXJ5Q2xpZW50KVxuICB9LCBbcXVlcnlDbGllbnQsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldE9uQ2xvc2UocHJvcHMub25DbG9zZSA/PyAoKCkgPT4ge30pKVxuICB9LCBbcHJvcHMub25DbG9zZSwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzIHx8IFtdKVxuICB9LCBbZXJyb3JUeXBlcywgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBkZXZ0b29scy5tb3VudChyZWYuY3VycmVudClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGV2dG9vbHMudW5tb3VudCgpXG4gICAgfVxuICB9LCBbZGV2dG9vbHNdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3sgaGVpZ2h0OiAnNTAwcHgnLCAuLi5wcm9wcy5zdHlsZSB9fVxuICAgICAgY2xhc3NOYW1lPVwidHNxZC1wYXJlbnQtY29udGFpbmVyXCJcbiAgICAgIHJlZj17cmVmfVxuICAgID48L2Rpdj5cbiAgKVxufVxuIiwgIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgKiBhcyBEZXZ0b29scyBmcm9tICcuL1JlYWN0UXVlcnlEZXZ0b29scydcbmltcG9ydCAqIGFzIERldnRvb2xzUGFuZWwgZnJvbSAnLi9SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCdcblxuZXhwb3J0IGNvbnN0IFJlYWN0UXVlcnlEZXZ0b29sczogKHR5cGVvZiBEZXZ0b29scylbJ1JlYWN0UXVlcnlEZXZ0b29scyddID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICA6IERldnRvb2xzLlJlYWN0UXVlcnlEZXZ0b29sc1xuXG5leHBvcnQgY29uc3QgUmVhY3RRdWVyeURldnRvb2xzUGFuZWw6ICh0eXBlb2YgRGV2dG9vbHNQYW5lbClbJ1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsJ10gPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIDogRGV2dG9vbHNQYW5lbC5SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbFxuIiwgImltcG9ydCB7IFRvYXN0ZXIgYXMgU29ubmVyIH0gZnJvbSBcInNvbm5lclwiO1xuXG4vLyBpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAL3VpL3N0dWRpby91dGlsL3RoZW1lLXByb3ZpZGVyXCI7XG5cbnR5cGUgVG9hc3RlclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNvbm5lcj47XG5cbmNvbnN0IFRvYXN0ZXIgPSAoeyAuLi5wcm9wcyB9OiBUb2FzdGVyUHJvcHMpID0+IHtcbiAgLy8gY29uc3QgeyB0aGVtZSA9IFwic3lzdGVtXCIgfSA9IHVzZVRoZW1lKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8U29ubmVyXG4gICAgICAvLyB0aGVtZT17dGhlbWUgYXMgVG9hc3RlclByb3BzW1widGhlbWVcIl19XG4gICAgICBjbGFzc05hbWU9XCJwcy10b2FzdGVyIHBzLWdyb3VwXCJcbiAgICAgIHRvYXN0T3B0aW9ucz17e1xuICAgICAgICBjbGFzc05hbWVzOiB7XG4gICAgICAgICAgdG9hc3Q6XG4gICAgICAgICAgICBcImdyb3VwIHRvYXN0IGdyb3VwLVsudG9hc3Rlcl06YmctYmFja2dyb3VuZCBncm91cC1bLnRvYXN0ZXJdOnRleHQtZm9yZWdyb3VuZCBncm91cC1bLnRvYXN0ZXJdOmJvcmRlci1ib3JkZXIgZ3JvdXAtWy50b2FzdGVyXTpzaGFkb3ctbGdcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgICBhY3Rpb25CdXR0b246IFwiZ3JvdXAtWy50b2FzdF06YmctcHJpbWFyeSBncm91cC1bLnRvYXN0XTp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgICAgICAgIGNhbmNlbEJ1dHRvbjogXCJncm91cC1bLnRvYXN0XTpiZy1tdXRlZCBncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFRvYXN0ZXIgfTtcbiIsICJpbXBvcnQge1xuICB1bnN0YWJsZV9BZGFwdGVyT3B0aW9ucyBhcyBBZGFwdGVyT3B0aW9ucyxcbiAgdW5zdGFibGVfY3JlYXRlQWRhcHRlclByb3ZpZGVyIGFzIGNyZWF0ZUFkYXB0ZXJQcm92aWRlcixcbn0gZnJvbSBcIm51cXMvYWRhcHRlcnMvY3VzdG9tXCI7XG5pbXBvcnQgeyBGQywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IHR5cGUgeyBkZWZhdWx0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogSG9vayB0aGF0IE51cXMgd2lsbCBjYWxsIHRvIHJlYWQgJiB3cml0ZSBVUkwgc3RhdGUuXG4gKi9cbmZ1bmN0aW9uIHVzZUhhc2hBZGFwdGVyKCkge1xuICAvLyByZWFkIGN1cnJlbnQgc3RhdGUgZnJvbSBldmVyeXRoaW5nIGFmdGVyIHRoZSBcdTIwMUMjXHUyMDFEXG4gIGNvbnN0IHJhd0hhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcbiAgY29uc3QgW2hhc2hQYXJhbXMsIHNldEhhc2hQYXJhbXNdID0gdXNlU3RhdGUobmV3IFVSTFNlYXJjaFBhcmFtcyhyYXdIYXNoKSk7XG5cbiAgLy8gd3JpdGUgbmV3IHN0YXRlIGJhY2sgaW50byB0aGUgaGFzaCBmcmFnbWVudFxuICBmdW5jdGlvbiB1cGRhdGVVcmwodXBkYXRlZDogVVJMU2VhcmNoUGFyYW1zLCB7IGhpc3RvcnkgfTogQWRhcHRlck9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHBhdGhuYW1lLCBzZWFyY2ggfSA9IHdpbmRvdy5sb2NhdGlvbjtcbiAgICBjb25zdCBoYXNoID0gdXBkYXRlZC50b1N0cmluZygpO1xuICAgIGNvbnN0IHVybCA9IGAke3BhdGhuYW1lfSR7c2VhcmNofSMke2hhc2h9YDtcblxuICAgIGlmIChoaXN0b3J5ID09PSBcInB1c2hcIikge1xuICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsIFwiXCIsIHVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgIH1cblxuICAgIHNldEhhc2hQYXJhbXModXBkYXRlZCk7XG4gIH1cblxuICAvLyBleHBvc2UgYSBzbmFwc2hvdCBvZiB0aGUgY3VycmVudCBwYXJhbXNcbiAgZnVuY3Rpb24gZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QoKSB7XG4gICAgY29uc3QgcmF3ID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG5cbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhyYXcpO1xuICB9XG5cbiAgLy8gc3luYyBzdGF0ZSB3aGVuIHVzZXIgbmF2aWdhdGVzIHZpYSBicm93c2VyIGNvbnRyb2xzIG9yIGV4dGVybmFsIHNjcmlwdFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIGhhbmRsZUhhc2hDaGFuZ2UoKSB7XG4gICAgICBjb25zdCByYXdIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gICAgICBzZXRIYXNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIiwgaGFuZGxlSGFzaENoYW5nZSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4geyBzZWFyY2hQYXJhbXM6IGhhc2hQYXJhbXMsIHVwZGF0ZVVybCwgZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QgfTtcbn1cblxuLyoqXG4gKiBUaGUgYWRhcHRlciBwcm92aWRlciBjb21wb25lbnQgeW91IHdyYXAgeW91ciBhcHAgaW4uXG4gKi9cbmV4cG9ydCBjb25zdCBOdXFzSGFzaEFkYXB0ZXIgPSBjcmVhdGVBZGFwdGVyUHJvdmlkZXIodXNlSGFzaEFkYXB0ZXIpIGFzIEZDPFByb3BzV2l0aENoaWxkcmVuPjtcbiIsICIvLyB3ZSdyZSBlbnN1cmluZyB0aGF0IGtleXMgYXJlIHR5cGUtc2FmZS4gdGhlcmUgaXMgbm8gcHJvcGVyIHdheSB0byBhY2hpZXZlIGl0IGluIGBudXFzYC5cbi8vIHRoZSBgZGVjbGFyZSBtb2R1bGVgIHRlY2huaXF1ZSByZXN1bHRzIGluIGFkZGluZyBvdmVybG9hZHMsIG5vdCBvdmVycmlkaW5nIHRoZSBleGlzdGluZyBmdW5jdGlvbnMuXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9ucyxcbiAgdHlwZSBQYXJzZXIsXG4gIHVzZVF1ZXJ5U3RhdGUgYXMgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVSZXR1cm4sXG4gIHVzZVF1ZXJ5U3RhdGVzIGFzIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzUmV0dXJuLFxufSBmcm9tIFwibnVxc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5leHBvcnQgKiBmcm9tIFwibnVxc1wiO1xuXG5leHBvcnQgdHlwZSBTdGF0ZUtleSA9IFwicGFnZUluZGV4XCIgfCBcInBhZ2VTaXplXCIgfCBcInRhYmxlXCIgfCBcInNvcnRcIiB8IFwic2NoZW1hXCIgfCBcInRlc3RcIiB8IFwiZmlsdGVyXCIgfCBcInZpZXdcIjtcblxuLy8gbGlmdGVkIGZyb20gQHByaXNtYS9jbGllbnQvcnVudGltZVxudHlwZSBFeGFjdDxBLCBXPiA9XG4gIHwgKEEgZXh0ZW5kcyB1bmtub3duXG4gICAgICA/IFcgZXh0ZW5kcyBBXG4gICAgICAgID8ge1xuICAgICAgICAgICAgW0sgaW4ga2V5b2YgQV06IEV4YWN0PEFbS10sIFdbS10+O1xuICAgICAgICAgIH1cbiAgICAgICAgOiBXXG4gICAgICA6IG5ldmVyKVxuICB8IChBIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHwgYm9vbGVhbiB8IFtdID8gQSA6IG5ldmVyKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBrZXlNYXA8Y29uc3QgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+PihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAga2V5TWFwOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4ga2V5TWFwIGFzIG5ldmVyO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHVybEtleXM8Y29uc3QgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+PihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdXJsS2V5czogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIHVybEtleXMgYXMgbmV2ZXI7XG59XG5cbmNvbnN0IF9CUkFORF9TWU1CT0wgPSBTeW1ib2woXCJCUkFORF9TWU1CT0xcIik7XG5cbnR5cGUgQnJhbmRlZEtleU1hcDxNYXA+ID0gTWFwICYge1xuICBbSyBpbiB0eXBlb2YgX0JSQU5EX1NZTUJPTF06IG5ldmVyO1xufTtcblxuLyoqXG4gKiBAc2VlIHtAbGluayB1c2VRdWVyeVN0YXRlT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlPFQ+KFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBVc2VRdWVyeVN0YXRlT3B0aW9uczxUPiAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IFQ7XG4gIH0sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdHlwZW9mIG9wdGlvbnMuZGVmYXVsdFZhbHVlPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlPFQ+KFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBVc2VRdWVyeVN0YXRlT3B0aW9uczxUPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IE9wdGlvbnMgJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIH0sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdHlwZW9mIG9wdGlvbnMuZGVmYXVsdFZhbHVlPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBQaWNrPFVzZVF1ZXJ5U3RhdGVPcHRpb25zPHN0cmluZz4sIGtleW9mIE9wdGlvbnM+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5KTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHVuZGVmaW5lZD47XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSwgb3B0aW9ucz86IGFueSk6IGFueSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlT3JpZ2luYWwoa2V5LCBvcHRpb25zKTtcbn1cblxudHlwZSBVc2VRdWVyeVN0YXRlc0tleXNNYXA8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+PiA9IFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pixcbj4gPSB7XG4gIFtLZXkgaW4ga2V5b2YgTWFwXTogS2V5TWFwVmFsdWU8TWFwW0tleV0+O1xufTtcblxudHlwZSBLZXlNYXBWYWx1ZTxUeXBlPiA9IFBhcnNlcjxUeXBlPiAmXG4gIE9wdGlvbnMgJiB7XG4gICAgZGVmYXVsdFZhbHVlPzogVHlwZTtcbiAgfTtcblxuLyoqXG4gKiBAc2VlIHtAbGluayB1c2VRdWVyeVN0YXRlc09yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZXM8S2V5TWFwIGV4dGVuZHMgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPihcbiAga2V5TWFwOiBCcmFuZGVkS2V5TWFwPEtleU1hcD4sXG4gIG9wdGlvbnM/OiBQYXJ0aWFsPFVzZVF1ZXJ5U3RhdGVzT3B0aW9uczxLZXlNYXA+Pixcbik6IFVzZVF1ZXJ5U3RhdGVzUmV0dXJuPEtleU1hcD4ge1xuICByZXR1cm4gdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbChrZXlNYXAgYXMgbmV2ZXIsIG9wdGlvbnMpO1xufVxuIiwgIi8vIHNoYWRjbiB1dGlsc1xuaW1wb3J0IHsgdHlwZSBDbGFzc1ZhbHVlLCBjbHN4IH0gZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IGV4dGVuZFRhaWx3aW5kTWVyZ2UgfSBmcm9tIFwidGFpbHdpbmQtbWVyZ2VcIjtcblxuZXhwb3J0IGNvbnN0IHR3TWVyZ2UgPSBleHRlbmRUYWlsd2luZE1lcmdlKHtcbiAgcHJlZml4OiBcInBzLVwiLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjbiguLi5pbnB1dHM6IENsYXNzVmFsdWVbXSkge1xuICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpO1xufVxuIiwgImltcG9ydCB7XG4gICAgQ2xhc3NHcm91cCxcbiAgICBDbGFzc1ZhbGlkYXRvcixcbiAgICBDb25maWcsXG4gICAgR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgR2VuZXJpY0NvbmZpZyxcbiAgICBHZW5lcmljVGhlbWVHcm91cElkcyxcbiAgICBUaGVtZUdldHRlcixcbiAgICBUaGVtZU9iamVjdCxcbn0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBDbGFzc1BhcnRPYmplY3Qge1xuICAgIG5leHRQYXJ0OiBNYXA8c3RyaW5nLCBDbGFzc1BhcnRPYmplY3Q+XG4gICAgdmFsaWRhdG9yczogQ2xhc3NWYWxpZGF0b3JPYmplY3RbXVxuICAgIGNsYXNzR3JvdXBJZD86IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG59XG5cbmludGVyZmFjZSBDbGFzc1ZhbGlkYXRvck9iamVjdCB7XG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkc1xuICAgIHZhbGlkYXRvcjogQ2xhc3NWYWxpZGF0b3Jcbn1cblxuY29uc3QgQ0xBU1NfUEFSVF9TRVBBUkFUT1IgPSAnLSdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCBjbGFzc01hcCA9IGNyZWF0ZUNsYXNzTWFwKGNvbmZpZylcbiAgICBjb25zdCB7IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyB9ID0gY29uZmlnXG5cbiAgICBjb25zdCBnZXRDbGFzc0dyb3VwSWQgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY2xhc3NQYXJ0cyA9IGNsYXNzTmFtZS5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgICAgICAvLyBDbGFzc2VzIGxpa2UgYC1pbnNldC0xYCBwcm9kdWNlIGFuIGVtcHR5IHN0cmluZyBhcyBmaXJzdCBjbGFzc1BhcnQuIFdlIGFzc3VtZSB0aGF0IGNsYXNzZXMgZm9yIG5lZ2F0aXZlIHZhbHVlcyBhcmUgdXNlZCBjb3JyZWN0bHkgYW5kIHJlbW92ZSBpdCBmcm9tIGNsYXNzUGFydHMuXG4gICAgICAgIGlmIChjbGFzc1BhcnRzWzBdID09PSAnJyAmJiBjbGFzc1BhcnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgY2xhc3NQYXJ0cy5zaGlmdCgpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NNYXApIHx8IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpXG4gICAgfVxuXG4gICAgY29uc3QgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzID0gKFxuICAgICAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXI6IGJvb2xlYW4sXG4gICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZsaWN0cyA9IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHNbY2xhc3NHcm91cElkXSB8fCBbXVxuXG4gICAgICAgIGlmIChoYXNQb3N0Zml4TW9kaWZpZXIgJiYgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY29uZmxpY3RzLCAuLi5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSFdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmxpY3RzXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0Q2xhc3NHcm91cElkLFxuICAgICAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMsXG4gICAgfVxufVxuXG5jb25zdCBnZXRHcm91cFJlY3Vyc2l2ZSA9IChcbiAgICBjbGFzc1BhcnRzOiBzdHJpbmdbXSxcbiAgICBjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCxcbik6IEdlbmVyaWNDbGFzc0dyb3VwSWRzIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoY2xhc3NQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC5jbGFzc0dyb3VwSWRcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q2xhc3NQYXJ0ID0gY2xhc3NQYXJ0c1swXSFcbiAgICBjb25zdCBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChjdXJyZW50Q2xhc3NQYXJ0KVxuICAgIGNvbnN0IGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCA9IG5leHRDbGFzc1BhcnRPYmplY3RcbiAgICAgICAgPyBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLnNsaWNlKDEpLCBuZXh0Q2xhc3NQYXJ0T2JqZWN0KVxuICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgaWYgKGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY2xhc3NSZXN0ID0gY2xhc3NQYXJ0cy5qb2luKENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLmZpbmQoKHsgdmFsaWRhdG9yIH0pID0+IHZhbGlkYXRvcihjbGFzc1Jlc3QpKT8uY2xhc3NHcm91cElkXG59XG5cbmNvbnN0IGFyYml0cmFyeVByb3BlcnR5UmVnZXggPSAvXlxcWyguKylcXF0kL1xuXG5jb25zdCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoYXJiaXRyYXJ5UHJvcGVydHlSZWdleC50ZXN0KGNsYXNzTmFtZSkpIHtcbiAgICAgICAgY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUgPSBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LmV4ZWMoY2xhc3NOYW1lKSFbMV1cbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZT8uc3Vic3RyaW5nKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lLmluZGV4T2YoJzonKSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgLy8gSSB1c2UgdHdvIGRvdHMgaGVyZSBiZWNhdXNlIG9uZSBkb3QgaXMgdXNlZCBhcyBwcmVmaXggZm9yIGNsYXNzIGdyb3VwcyBpbiBwbHVnaW5zXG4gICAgICAgICAgICByZXR1cm4gJ2FyYml0cmFyeS4uJyArIHByb3BlcnR5XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NNYXAgPSAoY29uZmlnOiBDb25maWc8R2VuZXJpY0NsYXNzR3JvdXBJZHMsIEdlbmVyaWNUaGVtZUdyb3VwSWRzPikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWUsIHByZWZpeCB9ID0gY29uZmlnXG4gICAgY29uc3QgY2xhc3NNYXA6IENsYXNzUGFydE9iamVjdCA9IHtcbiAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXA8c3RyaW5nLCBDbGFzc1BhcnRPYmplY3Q+KCksXG4gICAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhjb25maWcuY2xhc3NHcm91cHMpLFxuICAgICAgICBwcmVmaXgsXG4gICAgKVxuXG4gICAgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcy5mb3JFYWNoKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzR3JvdXAsIGNsYXNzTWFwLCBjbGFzc0dyb3VwSWQsIHRoZW1lKVxuICAgIH0pXG5cbiAgICByZXR1cm4gY2xhc3NNYXBcbn1cblxuY29uc3QgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSA9IChcbiAgICBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbiAgICBjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCxcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIHRoZW1lOiBUaGVtZU9iamVjdDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBjbGFzc0dyb3VwLmZvckVhY2goKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzUGFydE9iamVjdFRvRWRpdCA9XG4gICAgICAgICAgICAgICAgY2xhc3NEZWZpbml0aW9uID09PSAnJyA/IGNsYXNzUGFydE9iamVjdCA6IGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0RlZmluaXRpb24pXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3RUb0VkaXQuY2xhc3NHcm91cElkID0gY2xhc3NHcm91cElkXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAoaXNUaGVtZUdldHRlcihjbGFzc0RlZmluaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NEZWZpbml0aW9uKHRoZW1lKSxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0LFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yOiBjbGFzc0RlZmluaXRpb24sXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLmZvckVhY2goKFtrZXksIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXAsXG4gICAgICAgICAgICAgICAgZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGtleSksXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IGdldFBhcnQgPSAoY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsIHBhdGg6IHN0cmluZykgPT4ge1xuICAgIGxldCBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0XG5cbiAgICBwYXRoLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKS5mb3JFYWNoKChwYXRoUGFydCkgPT4ge1xuICAgICAgICBpZiAoIWN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuaGFzKHBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5zZXQocGF0aFBhcnQsIHtcbiAgICAgICAgICAgICAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChwYXRoUGFydCkhXG4gICAgfSlcblxuICAgIHJldHVybiBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0XG59XG5cbmNvbnN0IGlzVGhlbWVHZXR0ZXIgPSAoZnVuYzogQ2xhc3NWYWxpZGF0b3IgfCBUaGVtZUdldHRlcik6IGZ1bmMgaXMgVGhlbWVHZXR0ZXIgPT5cbiAgICAoZnVuYyBhcyBUaGVtZUdldHRlcikuaXNUaGVtZUdldHRlclxuXG5jb25zdCBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gKFxuICAgIGNsYXNzR3JvdXBFbnRyaWVzOiBBcnJheTxbY2xhc3NHcm91cElkOiBzdHJpbmcsIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+XT4sXG4gICAgcHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBBcnJheTxbY2xhc3NHcm91cElkOiBzdHJpbmcsIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+XT4gPT4ge1xuICAgIGlmICghcHJlZml4KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllc1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllcy5tYXAoKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cCA9IGNsYXNzR3JvdXAubWFwKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBjbGFzc0RlZmluaXRpb25cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW3ByZWZpeCArIGtleSwgdmFsdWVdKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjbGFzc0RlZmluaXRpb25cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gW2NsYXNzR3JvdXBJZCwgcHJlZml4ZWRDbGFzc0dyb3VwXVxuICAgIH0pXG59XG4iLCAiLy8gRXhwb3J0IGlzIG5lZWRlZCBiZWNhdXNlIFR5cGVTY3JpcHQgY29tcGxhaW5zIGFib3V0IGFuIGVycm9yIG90aGVyd2lzZTpcbi8vIEVycm9yOiBcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2NvbmZpZy11dGlscy50cyg4LDE3KTogc2VtYW50aWMgZXJyb3IgVFM0MDU4OiBSZXR1cm4gdHlwZSBvZiBleHBvcnRlZCBmdW5jdGlvbiBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnTHJ1Q2FjaGUnIGZyb20gZXh0ZXJuYWwgbW9kdWxlIFwiXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9scnUtY2FjaGVcIiBidXQgY2Fubm90IGJlIG5hbWVkLlxuZXhwb3J0IGludGVyZmFjZSBMcnVDYWNoZTxLZXksIFZhbHVlPiB7XG4gICAgZ2V0KGtleTogS2V5KTogVmFsdWUgfCB1bmRlZmluZWRcbiAgICBzZXQoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSk6IHZvaWRcbn1cblxuLy8gTFJVIGNhY2hlIGluc3BpcmVkIGZyb20gaGFzaGxydSAoaHR0cHM6Ly9naXRodWIuY29tL2RvbWluaWN0YXJyL2hhc2hscnUvYmxvYi92MS4wLjQvaW5kZXguanMpIGJ1dCBvYmplY3QgcmVwbGFjZWQgd2l0aCBNYXAgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZVxuZXhwb3J0IGNvbnN0IGNyZWF0ZUxydUNhY2hlID0gPEtleSwgVmFsdWU+KG1heENhY2hlU2l6ZTogbnVtYmVyKTogTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4gPT4ge1xuICAgIGlmIChtYXhDYWNoZVNpemUgPCAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNldDogKCkgPT4ge30sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgY2FjaGVTaXplID0gMFxuICAgIGxldCBjYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuICAgIGxldCBwcmV2aW91c0NhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG5cbiAgICBjb25zdCB1cGRhdGUgPSAoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSkgPT4ge1xuICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgY2FjaGVTaXplKytcblxuICAgICAgICBpZiAoY2FjaGVTaXplID4gbWF4Q2FjaGVTaXplKSB7XG4gICAgICAgICAgICBjYWNoZVNpemUgPSAwXG4gICAgICAgICAgICBwcmV2aW91c0NhY2hlID0gY2FjaGVcbiAgICAgICAgICAgIGNhY2hlID0gbmV3IE1hcCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXQoa2V5KSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBjYWNoZS5nZXQoa2V5KVxuXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IHByZXZpb3VzQ2FjaGUuZ2V0KGtleSkpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBJTVBPUlRBTlRfTU9ESUZJRVIgPSAnISdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IHsgc2VwYXJhdG9yLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSB9ID0gY29uZmlnXG4gICAgY29uc3QgaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgPSBzZXBhcmF0b3IubGVuZ3RoID09PSAxXG4gICAgY29uc3QgZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgPSBzZXBhcmF0b3JbMF1cbiAgICBjb25zdCBzZXBhcmF0b3JMZW5ndGggPSBzZXBhcmF0b3IubGVuZ3RoXG5cbiAgICAvLyBwYXJzZUNsYXNzTmFtZSBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2Jsb2IvdjMuMi4yL3NyYy91dGlsL3NwbGl0QXRUb3BMZXZlbE9ubHkuanNcbiAgICBjb25zdCBwYXJzZUNsYXNzTmFtZSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSBbXVxuXG4gICAgICAgIGxldCBicmFja2V0RGVwdGggPSAwXG4gICAgICAgIGxldCBtb2RpZmllclN0YXJ0ID0gMFxuICAgICAgICBsZXQgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZFxuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjbGFzc05hbWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudENoYXJhY3RlciA9IGNsYXNzTmFtZVtpbmRleF1cblxuICAgICAgICAgICAgaWYgKGJyYWNrZXREZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENoYXJhY3RlciA9PT0gZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgKGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoKSA9PT0gc2VwYXJhdG9yKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMucHVzaChjbGFzc05hbWUuc2xpY2UobW9kaWZpZXJTdGFydCwgaW5kZXgpKVxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllclN0YXJ0ID0gaW5kZXggKyBzZXBhcmF0b3JMZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJy8nKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICBicmFja2V0RGVwdGgrK1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICBicmFja2V0RGVwdGgtLVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciA9XG4gICAgICAgICAgICBtb2RpZmllcnMubGVuZ3RoID09PSAwID8gY2xhc3NOYW1lIDogY2xhc3NOYW1lLnN1YnN0cmluZyhtb2RpZmllclN0YXJ0KVxuICAgICAgICBjb25zdCBoYXNJbXBvcnRhbnRNb2RpZmllciA9XG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN0YXJ0c1dpdGgoSU1QT1JUQU5UX01PRElGSUVSKVxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdWJzdHJpbmcoMSlcbiAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPVxuICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gJiYgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPiBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgPyBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAtIG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb2RpZmllcnMsXG4gICAgICAgICAgICBoYXNJbXBvcnRhbnRNb2RpZmllcixcbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWUsXG4gICAgICAgICAgICBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKSB7XG4gICAgICAgIHJldHVybiAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKHsgY2xhc3NOYW1lLCBwYXJzZUNsYXNzTmFtZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwYXJzZUNsYXNzTmFtZVxufVxuXG4vKipcbiAqIFNvcnRzIG1vZGlmaWVycyBhY2NvcmRpbmcgdG8gZm9sbG93aW5nIHNjaGVtYTpcbiAqIC0gUHJlZGVmaW5lZCBtb2RpZmllcnMgYXJlIHNvcnRlZCBhbHBoYWJldGljYWxseVxuICogLSBXaGVuIGFuIGFyYml0cmFyeSB2YXJpYW50IGFwcGVhcnMsIGl0IG11c3QgYmUgcHJlc2VydmVkIHdoaWNoIG1vZGlmaWVycyBhcmUgYmVmb3JlIGFuZCBhZnRlciBpdFxuICovXG5leHBvcnQgY29uc3Qgc29ydE1vZGlmaWVycyA9IChtb2RpZmllcnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKG1vZGlmaWVycy5sZW5ndGggPD0gMSkge1xuICAgICAgICByZXR1cm4gbW9kaWZpZXJzXG4gICAgfVxuXG4gICAgY29uc3Qgc29ydGVkTW9kaWZpZXJzOiBzdHJpbmdbXSA9IFtdXG4gICAgbGV0IHVuc29ydGVkTW9kaWZpZXJzOiBzdHJpbmdbXSA9IFtdXG5cbiAgICBtb2RpZmllcnMuZm9yRWFjaCgobW9kaWZpZXIpID0+IHtcbiAgICAgICAgY29uc3QgaXNBcmJpdHJhcnlWYXJpYW50ID0gbW9kaWZpZXJbMF0gPT09ICdbJ1xuXG4gICAgICAgIGlmIChpc0FyYml0cmFyeVZhcmlhbnQpIHtcbiAgICAgICAgICAgIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSwgbW9kaWZpZXIpXG4gICAgICAgICAgICB1bnNvcnRlZE1vZGlmaWVycyA9IFtdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bnNvcnRlZE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSlcblxuICAgIHJldHVybiBzb3J0ZWRNb2RpZmllcnNcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgfSBmcm9tICcuL2NsYXNzLWdyb3VwLXV0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlTHJ1Q2FjaGUgfSBmcm9tICcuL2xydS1jYWNoZSdcbmltcG9ydCB7IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCB0eXBlIENvbmZpZ1V0aWxzID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29uZmlnVXRpbHM+XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb25maWdVdGlscyA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+ICh7XG4gICAgY2FjaGU6IGNyZWF0ZUxydUNhY2hlPHN0cmluZywgc3RyaW5nPihjb25maWcuY2FjaGVTaXplKSxcbiAgICBwYXJzZUNsYXNzTmFtZTogY3JlYXRlUGFyc2VDbGFzc05hbWUoY29uZmlnKSxcbiAgICAuLi5jcmVhdGVDbGFzc0dyb3VwVXRpbHMoY29uZmlnKSxcbn0pXG4iLCAiaW1wb3J0IHsgQ29uZmlnVXRpbHMgfSBmcm9tICcuL2NvbmZpZy11dGlscydcbmltcG9ydCB7IElNUE9SVEFOVF9NT0RJRklFUiwgc29ydE1vZGlmaWVycyB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcblxuY29uc3QgU1BMSVRfQ0xBU1NFU19SRUdFWCA9IC9cXHMrL1xuXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc0xpc3QgPSAoY2xhc3NMaXN0OiBzdHJpbmcsIGNvbmZpZ1V0aWxzOiBDb25maWdVdGlscykgPT4ge1xuICAgIGNvbnN0IHsgcGFyc2VDbGFzc05hbWUsIGdldENsYXNzR3JvdXBJZCwgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIH0gPSBjb25maWdVdGlsc1xuXG4gICAgLyoqXG4gICAgICogU2V0IG9mIGNsYXNzR3JvdXBJZHMgaW4gZm9sbG93aW5nIGZvcm1hdDpcbiAgICAgKiBge2ltcG9ydGFudE1vZGlmaWVyfXt2YXJpYW50TW9kaWZpZXJzfXtjbGFzc0dyb3VwSWR9YFxuICAgICAqIEBleGFtcGxlICdmbG9hdCdcbiAgICAgKiBAZXhhbXBsZSAnaG92ZXI6Zm9jdXM6YmctY29sb3InXG4gICAgICogQGV4YW1wbGUgJ21kOiFwcidcbiAgICAgKi9cbiAgICBjb25zdCBjbGFzc0dyb3Vwc0luQ29uZmxpY3Q6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjbGFzc05hbWVzID0gY2xhc3NMaXN0LnRyaW0oKS5zcGxpdChTUExJVF9DTEFTU0VTX1JFR0VYKVxuXG4gICAgbGV0IHJlc3VsdCA9ICcnXG5cbiAgICBmb3IgKGxldCBpbmRleCA9IGNsYXNzTmFtZXMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXggLT0gMSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbENsYXNzTmFtZSA9IGNsYXNzTmFtZXNbaW5kZXhdIVxuXG4gICAgICAgIGNvbnN0IHsgbW9kaWZpZXJzLCBoYXNJbXBvcnRhbnRNb2RpZmllciwgYmFzZUNsYXNzTmFtZSwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiB9ID1cbiAgICAgICAgICAgIHBhcnNlQ2xhc3NOYW1lKG9yaWdpbmFsQ2xhc3NOYW1lKVxuXG4gICAgICAgIGxldCBoYXNQb3N0Zml4TW9kaWZpZXIgPSBCb29sZWFuKG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pXG4gICAgICAgIGxldCBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXJcbiAgICAgICAgICAgICAgICA/IGJhc2VDbGFzc05hbWUuc3Vic3RyaW5nKDAsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pXG4gICAgICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgICAgICAgIGlmICghaGFzUG9zdGZpeE1vZGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoYmFzZUNsYXNzTmFtZSlcblxuICAgICAgICAgICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllciA9IGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYW50TW9kaWZpZXIgPSBzb3J0TW9kaWZpZXJzKG1vZGlmaWVycykuam9pbignOicpXG5cbiAgICAgICAgY29uc3QgbW9kaWZpZXJJZCA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IHZhcmlhbnRNb2RpZmllciArIElNUE9SVEFOVF9NT0RJRklFUlxuICAgICAgICAgICAgOiB2YXJpYW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBjbGFzc0lkID0gbW9kaWZpZXJJZCArIGNsYXNzR3JvdXBJZFxuXG4gICAgICAgIGlmIChjbGFzc0dyb3Vwc0luQ29uZmxpY3QuaW5jbHVkZXMoY2xhc3NJZCkpIHtcbiAgICAgICAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG9taXR0ZWQgZHVlIHRvIGNvbmZsaWN0XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2goY2xhc3NJZClcblxuICAgICAgICBjb25zdCBjb25mbGljdEdyb3VwcyA9IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyhjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcilcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25mbGljdEdyb3Vwcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBjb25mbGljdEdyb3Vwc1tpXSFcbiAgICAgICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKG1vZGlmaWVySWQgKyBncm91cClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG5vdCBpbiBjb25mbGljdFxuICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG4iLCAiLyoqXG4gKiBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4IGFuZCBtb2RpZmllZCB0byBzdWl0IHRoZSBuZWVkcyBvZiB0YWlsd2luZC1tZXJnZSBiZXR0ZXIuXG4gKlxuICogU3BlY2lmaWNhbGx5OlxuICogLSBSdW50aW1lIGNvZGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvc3JjL2luZGV4LmpzXG4gKiAtIFR5cGVTY3JpcHQgdHlwZXMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvY2xzeC5kLnRzXG4gKlxuICogT3JpZ2luYWwgY29kZSBoYXMgTUlUIGxpY2Vuc2U6IENvcHlyaWdodCAoYykgTHVrZSBFZHdhcmRzIDxsdWtlLmVkd2FyZHMwNUBnbWFpbC5jb20+IChsdWtlZWQuY29tKVxuICovXG5cbmV4cG9ydCB0eXBlIENsYXNzTmFtZVZhbHVlID0gQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgMCB8IDBuIHwgZmFsc2VcbnR5cGUgQ2xhc3NOYW1lQXJyYXkgPSBDbGFzc05hbWVWYWx1ZVtdXG5cbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oLi4uY2xhc3NMaXN0czogQ2xhc3NOYW1lVmFsdWVbXSk6IHN0cmluZ1xuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbigpIHtcbiAgICBsZXQgaW5kZXggPSAwXG4gICAgbGV0IGFyZ3VtZW50OiBDbGFzc05hbWVWYWx1ZVxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKChhcmd1bWVudCA9IGFyZ3VtZW50c1tpbmRleCsrXSkpIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUoYXJndW1lbnQpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmdcbn1cblxuY29uc3QgdG9WYWx1ZSA9IChtaXg6IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBtaXggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBtaXhcbiAgICB9XG5cbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICBmb3IgKGxldCBrID0gMDsgayA8IG1peC5sZW5ndGg7IGsrKykge1xuICAgICAgICBpZiAobWl4W2tdKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKG1peFtrXSBhcyBDbGFzc05hbWVBcnJheSB8IHN0cmluZykpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ29uZmlnVXRpbHMgfSBmcm9tICcuL2NvbmZpZy11dGlscydcbmltcG9ydCB7IG1lcmdlQ2xhc3NMaXN0IH0gZnJvbSAnLi9tZXJnZS1jbGFzc2xpc3QnXG5pbXBvcnQgeyBDbGFzc05hbWVWYWx1ZSwgdHdKb2luIH0gZnJvbSAnLi90dy1qb2luJ1xuaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnRmlyc3QgPSAoKSA9PiBHZW5lcmljQ29uZmlnXG50eXBlIENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiBHZW5lcmljQ29uZmlnXG50eXBlIFRhaWx3aW5kTWVyZ2UgPSAoLi4uY2xhc3NMaXN0czogQ2xhc3NOYW1lVmFsdWVbXSkgPT4gc3RyaW5nXG50eXBlIENvbmZpZ1V0aWxzID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29uZmlnVXRpbHM+XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgIGNyZWF0ZUNvbmZpZ0ZpcnN0OiBDcmVhdGVDb25maWdGaXJzdCxcbiAgICAuLi5jcmVhdGVDb25maWdSZXN0OiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbik6IFRhaWx3aW5kTWVyZ2Uge1xuICAgIGxldCBjb25maWdVdGlsczogQ29uZmlnVXRpbHNcbiAgICBsZXQgY2FjaGVHZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydnZXQnXVxuICAgIGxldCBjYWNoZVNldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ3NldCddXG4gICAgbGV0IGZ1bmN0aW9uVG9DYWxsID0gaW5pdFRhaWx3aW5kTWVyZ2VcblxuICAgIGZ1bmN0aW9uIGluaXRUYWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZUNvbmZpZ1Jlc3QucmVkdWNlKFxuICAgICAgICAgICAgKHByZXZpb3VzQ29uZmlnLCBjcmVhdGVDb25maWdDdXJyZW50KSA9PiBjcmVhdGVDb25maWdDdXJyZW50KHByZXZpb3VzQ29uZmlnKSxcbiAgICAgICAgICAgIGNyZWF0ZUNvbmZpZ0ZpcnN0KCkgYXMgR2VuZXJpY0NvbmZpZyxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbmZpZ1V0aWxzID0gY3JlYXRlQ29uZmlnVXRpbHMoY29uZmlnKVxuICAgICAgICBjYWNoZUdldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLmdldFxuICAgICAgICBjYWNoZVNldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLnNldFxuICAgICAgICBmdW5jdGlvblRvQ2FsbCA9IHRhaWx3aW5kTWVyZ2VcblxuICAgICAgICByZXR1cm4gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZUdldChjbGFzc0xpc3QpXG5cbiAgICAgICAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbWVyZ2VDbGFzc0xpc3QoY2xhc3NMaXN0LCBjb25maWdVdGlscylcbiAgICAgICAgY2FjaGVTZXQoY2xhc3NMaXN0LCByZXN1bHQpXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiBjYWxsVGFpbHdpbmRNZXJnZSgpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uVG9DYWxsKHR3Sm9pbi5hcHBseShudWxsLCBhcmd1bWVudHMgYXMgYW55KSlcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgRGVmYXVsdFRoZW1lR3JvdXBJZHMsIE5vSW5mZXIsIFRoZW1lR2V0dGVyLCBUaGVtZU9iamVjdCB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBmcm9tVGhlbWUgPSA8XG4gICAgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIGV4dGVuZHMgc3RyaW5nID0gRGVmYXVsdFRoZW1lR3JvdXBJZHMsXG4+KGtleTogTm9JbmZlcjxEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHM+KTogVGhlbWVHZXR0ZXIgPT4ge1xuICAgIGNvbnN0IHRoZW1lR2V0dGVyID0gKHRoZW1lOiBUaGVtZU9iamVjdDxEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHM+KSA9PlxuICAgICAgICB0aGVtZVtrZXldIHx8IFtdXG5cbiAgICB0aGVtZUdldHRlci5pc1RoZW1lR2V0dGVyID0gdHJ1ZSBhcyBjb25zdFxuXG4gICAgcmV0dXJuIHRoZW1lR2V0dGVyXG59XG4iLCAiY29uc3QgYXJiaXRyYXJ5VmFsdWVSZWdleCA9IC9eXFxbKD86KFthLXotXSspOik/KC4rKVxcXSQvaVxuY29uc3QgZnJhY3Rpb25SZWdleCA9IC9eXFxkK1xcL1xcZCskL1xuY29uc3Qgc3RyaW5nTGVuZ3RocyA9IG5ldyBTZXQoWydweCcsICdmdWxsJywgJ3NjcmVlbiddKVxuY29uc3QgdHNoaXJ0VW5pdFJlZ2V4ID0gL14oXFxkKyhcXC5cXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkL1xuY29uc3QgbGVuZ3RoVW5pdFJlZ2V4ID1cbiAgICAvXFxkKyglfHB4fHI/ZW18W3NkbF0/dihbaHdpYl18bWlufG1heCl8cHR8cGN8aW58Y218bW18Y2FwfGNofGV4fHI/bGh8Y3Eod3xofGl8YnxtaW58bWF4KSl8XFxiKGNhbGN8bWlufG1heHxjbGFtcClcXCguK1xcKXxeMCQvXG5jb25zdCBjb2xvckZ1bmN0aW9uUmVnZXggPSAvXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCkpXFwoLitcXCkkL1xuLy8gU2hhZG93IGFsd2F5cyBiZWdpbnMgd2l0aCB4IGFuZCB5IG9mZnNldCBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZSBvcHRpb25hbGx5IHByZXBlbmRlZCBieSBpbnNldFxuY29uc3Qgc2hhZG93UmVnZXggPSAvXihpbnNldF8pPy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApXy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApL1xuY29uc3QgaW1hZ2VSZWdleCA9XG4gICAgL14odXJsfGltYWdlfGltYWdlLXNldHxjcm9zcy1mYWRlfGVsZW1lbnR8KHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsfGNvbmljKS1ncmFkaWVudClcXCguK1xcKSQvXG5cbmV4cG9ydCBjb25zdCBpc0xlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGlzTnVtYmVyKHZhbHVlKSB8fCBzdHJpbmdMZW5ndGhzLmhhcyh2YWx1ZSkgfHwgZnJhY3Rpb25SZWdleC50ZXN0KHZhbHVlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbGVuZ3RoJywgaXNMZW5ndGhPbmx5KVxuXG5leHBvcnQgY29uc3QgaXNOdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgIU51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlOdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ251bWJlcicsIGlzTnVtYmVyKVxuXG5leHBvcnQgY29uc3QgaXNJbnRlZ2VyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzUGVyY2VudCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS5lbmRzV2l0aCgnJScpICYmIGlzTnVtYmVyKHZhbHVlLnNsaWNlKDAsIC0xKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5VmFsdWUgPSAodmFsdWU6IHN0cmluZykgPT4gYXJiaXRyYXJ5VmFsdWVSZWdleC50ZXN0KHZhbHVlKVxuXG5leHBvcnQgY29uc3QgaXNUc2hpcnRTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IHRzaGlydFVuaXRSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBzaXplTGFiZWxzID0gbmV3IFNldChbJ2xlbmd0aCcsICdzaXplJywgJ3BlcmNlbnRhZ2UnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBzaXplTGFiZWxzLCBpc05ldmVyKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlQb3NpdGlvbiA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdwb3NpdGlvbicsIGlzTmV2ZXIpXG5cbmNvbnN0IGltYWdlTGFiZWxzID0gbmV3IFNldChbJ2ltYWdlJywgJ3VybCddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlJbWFnZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBpbWFnZUxhYmVscywgaXNJbWFnZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5U2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICcnLCBpc1NoYWRvdylcblxuZXhwb3J0IGNvbnN0IGlzQW55ID0gKCkgPT4gdHJ1ZVxuXG5jb25zdCBnZXRJc0FyYml0cmFyeVZhbHVlID0gKFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgbGFiZWw6IHN0cmluZyB8IFNldDxzdHJpbmc+LFxuICAgIHRlc3RWYWx1ZTogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhcmJpdHJhcnlWYWx1ZVJlZ2V4LmV4ZWModmFsdWUpXG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGlmIChyZXN1bHRbMV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnID8gcmVzdWx0WzFdID09PSBsYWJlbCA6IGxhYmVsLmhhcyhyZXN1bHRbMV0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGVzdFZhbHVlKHJlc3VsdFsyXSEpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbmNvbnN0IGlzTGVuZ3RoT25seSA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIC8vIGBjb2xvckZ1bmN0aW9uUmVnZXhgIGNoZWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGNvbG9yIGZ1bmN0aW9ucyBjYW4gaGF2ZSBwZXJjZW50YWdlcyBpbiB0aGVtIHdoaWNoIHdoaWNoIHdvdWxkIGJlIGluY29ycmVjdGx5IGNsYXNzaWZpZWQgYXMgbGVuZ3Rocy5cbiAgICAvLyBGb3IgZXhhbXBsZSwgYGhzbCgwIDAlIDAlKWAgd291bGQgYmUgY2xhc3NpZmllZCBhcyBhIGxlbmd0aCB3aXRob3V0IHRoaXMgY2hlY2suXG4gICAgLy8gSSBjb3VsZCBhbHNvIHVzZSBsb29rYmVoaW5kIGFzc2VydGlvbiBpbiBgbGVuZ3RoVW5pdFJlZ2V4YCBidXQgdGhhdCBpc24ndCBzdXBwb3J0ZWQgd2lkZWx5IGVub3VnaC5cbiAgICBsZW5ndGhVbml0UmVnZXgudGVzdCh2YWx1ZSkgJiYgIWNvbG9yRnVuY3Rpb25SZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc05ldmVyID0gKCkgPT4gZmFsc2VcblxuY29uc3QgaXNTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gc2hhZG93UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNJbWFnZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBpbWFnZVJlZ2V4LnRlc3QodmFsdWUpXG4iLCAiaW1wb3J0IHsgZnJvbVRoZW1lIH0gZnJvbSAnLi9mcm9tLXRoZW1lJ1xuaW1wb3J0IHsgQ29uZmlnLCBEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHtcbiAgICBpc0FueSxcbiAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgIGlzQXJiaXRyYXJ5TGVuZ3RoLFxuICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgIGlzQXJiaXRyYXJ5UG9zaXRpb24sXG4gICAgaXNBcmJpdHJhcnlTaGFkb3csXG4gICAgaXNBcmJpdHJhcnlTaXplLFxuICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgaXNJbnRlZ2VyLFxuICAgIGlzTGVuZ3RoLFxuICAgIGlzTnVtYmVyLFxuICAgIGlzUGVyY2VudCxcbiAgICBpc1RzaGlydFNpemUsXG59IGZyb20gJy4vdmFsaWRhdG9ycydcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRDb25maWcgPSAoKSA9PiB7XG4gICAgY29uc3QgY29sb3JzID0gZnJvbVRoZW1lKCdjb2xvcnMnKVxuICAgIGNvbnN0IHNwYWNpbmcgPSBmcm9tVGhlbWUoJ3NwYWNpbmcnKVxuICAgIGNvbnN0IGJsdXIgPSBmcm9tVGhlbWUoJ2JsdXInKVxuICAgIGNvbnN0IGJyaWdodG5lc3MgPSBmcm9tVGhlbWUoJ2JyaWdodG5lc3MnKVxuICAgIGNvbnN0IGJvcmRlckNvbG9yID0gZnJvbVRoZW1lKCdib3JkZXJDb2xvcicpXG4gICAgY29uc3QgYm9yZGVyUmFkaXVzID0gZnJvbVRoZW1lKCdib3JkZXJSYWRpdXMnKVxuICAgIGNvbnN0IGJvcmRlclNwYWNpbmcgPSBmcm9tVGhlbWUoJ2JvcmRlclNwYWNpbmcnKVxuICAgIGNvbnN0IGJvcmRlcldpZHRoID0gZnJvbVRoZW1lKCdib3JkZXJXaWR0aCcpXG4gICAgY29uc3QgY29udHJhc3QgPSBmcm9tVGhlbWUoJ2NvbnRyYXN0JylcbiAgICBjb25zdCBncmF5c2NhbGUgPSBmcm9tVGhlbWUoJ2dyYXlzY2FsZScpXG4gICAgY29uc3QgaHVlUm90YXRlID0gZnJvbVRoZW1lKCdodWVSb3RhdGUnKVxuICAgIGNvbnN0IGludmVydCA9IGZyb21UaGVtZSgnaW52ZXJ0JylcbiAgICBjb25zdCBnYXAgPSBmcm9tVGhlbWUoJ2dhcCcpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BzID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcHMnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucycpXG4gICAgY29uc3QgaW5zZXQgPSBmcm9tVGhlbWUoJ2luc2V0JylcbiAgICBjb25zdCBtYXJnaW4gPSBmcm9tVGhlbWUoJ21hcmdpbicpXG4gICAgY29uc3Qgb3BhY2l0eSA9IGZyb21UaGVtZSgnb3BhY2l0eScpXG4gICAgY29uc3QgcGFkZGluZyA9IGZyb21UaGVtZSgncGFkZGluZycpXG4gICAgY29uc3Qgc2F0dXJhdGUgPSBmcm9tVGhlbWUoJ3NhdHVyYXRlJylcbiAgICBjb25zdCBzY2FsZSA9IGZyb21UaGVtZSgnc2NhbGUnKVxuICAgIGNvbnN0IHNlcGlhID0gZnJvbVRoZW1lKCdzZXBpYScpXG4gICAgY29uc3Qgc2tldyA9IGZyb21UaGVtZSgnc2tldycpXG4gICAgY29uc3Qgc3BhY2UgPSBmcm9tVGhlbWUoJ3NwYWNlJylcbiAgICBjb25zdCB0cmFuc2xhdGUgPSBmcm9tVGhlbWUoJ3RyYW5zbGF0ZScpXG5cbiAgICBjb25zdCBnZXRPdmVyc2Nyb2xsID0gKCkgPT4gWydhdXRvJywgJ2NvbnRhaW4nLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0T3ZlcmZsb3cgPSAoKSA9PiBbJ2F1dG8nLCAnaGlkZGVuJywgJ2NsaXAnLCAndmlzaWJsZScsICdzY3JvbGwnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkgPSAoKSA9PiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkgPSAoKSA9PiBbJycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFBvc2l0aW9ucyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAnbGVmdC1ib3R0b20nLFxuICAgICAgICAgICAgJ2xlZnQtdG9wJyxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAncmlnaHQtYm90dG9tJyxcbiAgICAgICAgICAgICdyaWdodC10b3AnLFxuICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRMaW5lU3R5bGVzID0gKCkgPT4gWydzb2xpZCcsICdkYXNoZWQnLCAnZG90dGVkJywgJ2RvdWJsZScsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRCbGVuZE1vZGVzID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAnbXVsdGlwbHknLFxuICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAnb3ZlcmxheScsXG4gICAgICAgICAgICAnZGFya2VuJyxcbiAgICAgICAgICAgICdsaWdodGVuJyxcbiAgICAgICAgICAgICdjb2xvci1kb2RnZScsXG4gICAgICAgICAgICAnY29sb3ItYnVybicsXG4gICAgICAgICAgICAnaGFyZC1saWdodCcsXG4gICAgICAgICAgICAnc29mdC1saWdodCcsXG4gICAgICAgICAgICAnZGlmZmVyZW5jZScsXG4gICAgICAgICAgICAnZXhjbHVzaW9uJyxcbiAgICAgICAgICAgICdodWUnLFxuICAgICAgICAgICAgJ3NhdHVyYXRpb24nLFxuICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICdsdW1pbm9zaXR5JyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEFsaWduID0gKCkgPT5cbiAgICAgICAgWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2JldHdlZW4nLCAnYXJvdW5kJywgJ2V2ZW5seScsICdzdHJldGNoJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRaZXJvQW5kRW1wdHkgPSAoKSA9PiBbJycsICcwJywgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRCcmVha3MgPSAoKSA9PlxuICAgICAgICBbJ2F1dG8nLCAnYXZvaWQnLCAnYWxsJywgJ2F2b2lkLXBhZ2UnLCAncGFnZScsICdsZWZ0JywgJ3JpZ2h0JywgJ2NvbHVtbiddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5ID0gKCkgPT4gW2lzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FjaGVTaXplOiA1MDAsXG4gICAgICAgIHNlcGFyYXRvcjogJzonLFxuICAgICAgICB0aGVtZToge1xuICAgICAgICAgICAgY29sb3JzOiBbaXNBbnldLFxuICAgICAgICAgICAgc3BhY2luZzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBibHVyOiBbJ25vbmUnLCAnJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJyaWdodG5lc3M6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFtjb2xvcnNdLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbJ25vbmUnLCAnJywgJ2Z1bGwnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYm9yZGVyU3BhY2luZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlcldpZHRoOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGNvbnRyYXN0OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGdyYXlzY2FsZTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBodWVSb3RhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgaW52ZXJ0OiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGdhcDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wczogW2NvbG9yc10sXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uczogW2lzUGVyY2VudCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgaW5zZXQ6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgbWFyZ2luOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG9wYWNpdHk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgcGFkZGluZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNhdHVyYXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNjYWxlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNlcGlhOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIHNrZXc6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc3BhY2U6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICAvLyBMYXlvdXRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXNwZWN0IFJhdGlvXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXNwZWN0LXJhdGlvXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFzcGVjdDogW3sgYXNwZWN0OiBbJ2F1dG8nLCAnc3F1YXJlJywgJ3ZpZGVvJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRhaW5lclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRhaW5lclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250YWluZXI6IFsnY29udGFpbmVyJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbHVtbnM6IFt7IGNvbHVtbnM6IFtpc1RzaGlydFNpemVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBBZnRlclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWFmdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1hZnRlcic6IFt7ICdicmVhay1hZnRlcic6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBCZWZvcmVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1iZWZvcmVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWJlZm9yZSc6IFt7ICdicmVhay1iZWZvcmUnOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgSW5zaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstaW5zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1pbnNpZGUnOiBbeyAnYnJlYWstaW5zaWRlJzogWydhdXRvJywgJ2F2b2lkJywgJ2F2b2lkLXBhZ2UnLCAnYXZvaWQtY29sdW1uJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBEZWNvcmF0aW9uIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LWRlY29yYXRpb24tYnJlYWtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JveC1kZWNvcmF0aW9uJzogW3sgJ2JveC1kZWNvcmF0aW9uJzogWydzbGljZScsICdjbG9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2l6aW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNpemluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3g6IFt7IGJveDogWydib3JkZXInLCAnY29udGVudCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXNwbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGlzcGxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkaXNwbGF5OiBbXG4gICAgICAgICAgICAgICAgJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lJyxcbiAgICAgICAgICAgICAgICAnZmxleCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1mbGV4JyxcbiAgICAgICAgICAgICAgICAndGFibGUnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtdGFibGUnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jYXB0aW9uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2VsbCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNvbHVtbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNvbHVtbi1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWZvb3Rlci1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWhlYWRlci1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLXJvdy1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLXJvdycsXG4gICAgICAgICAgICAgICAgJ2Zsb3ctcm9vdCcsXG4gICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnRzJyxcbiAgICAgICAgICAgICAgICAnbGlzdC1pdGVtJyxcbiAgICAgICAgICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsb2F0c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Zsb2F0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZsb2F0OiBbeyBmbG9hdDogWydyaWdodCcsICdsZWZ0JywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENsZWFyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2xlYXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2xlYXI6IFt7IGNsZWFyOiBbJ2xlZnQnLCAncmlnaHQnLCAnYm90aCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJc29sYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pc29sYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaXNvbGF0aW9uOiBbJ2lzb2xhdGUnLCAnaXNvbGF0aW9uLWF1dG8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IEZpdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1maXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ29iamVjdC1maXQnOiBbeyBvYmplY3Q6IFsnY29udGFpbicsICdjb3ZlcicsICdmaWxsJywgJ25vbmUnLCAnc2NhbGUtZG93biddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ29iamVjdC1wb3NpdGlvbic6IFt7IG9iamVjdDogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvdmVyZmxvdzogW3sgb3ZlcmZsb3c6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteCc6IFt7ICdvdmVyZmxvdy14JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy15JzogW3sgJ292ZXJmbG93LXknOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbeyBvdmVyc2Nyb2xsOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJzY3JvbGwteCc6IFt7ICdvdmVyc2Nyb2xsLXgnOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJzY3JvbGwteSc6IFt7ICdvdmVyc2Nyb2xsLXknOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcG9zaXRpb246IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBSaWdodCAvIEJvdHRvbSAvIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5zZXQ6IFt7IGluc2V0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodCAvIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXgnOiBbeyAnaW5zZXQteCc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteSc6IFt7ICdpbnNldC15JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3RhcnQ6IFt7IHN0YXJ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZW5kOiBbeyBlbmQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3A6IFt7IHRvcDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmlnaHQ6IFt7IHJpZ2h0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm90dG9tOiBbeyBib3R0b206IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVmdDogW3sgbGVmdDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmlzaWJpbGl0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Zpc2liaWxpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogWyd2aXNpYmxlJywgJ2ludmlzaWJsZScsICdjb2xsYXBzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBaLUluZGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvei1pbmRleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB6OiBbeyB6OiBbJ2F1dG8nLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gRmxleGJveCBhbmQgR3JpZFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IEJhc2lzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1iYXNpc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBiYXNpczogW3sgYmFzaXM6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IERpcmVjdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZGlyZWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LWRpcmVjdGlvbic6IFt7IGZsZXg6IFsncm93JywgJ3Jvdy1yZXZlcnNlJywgJ2NvbCcsICdjb2wtcmV2ZXJzZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtd3JhcCc6IFt7IGZsZXg6IFsnd3JhcCcsICd3cmFwLXJldmVyc2UnLCAnbm93cmFwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZsZXg6IFt7IGZsZXg6IFsnMScsICdhdXRvJywgJ2luaXRpYWwnLCAnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IEdyb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWdyb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JvdzogW3sgZ3JvdzogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggU2hyaW5rXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1zaHJpbmtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hyaW5rOiBbeyBzaHJpbms6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPcmRlclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29yZGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9yZGVyOiBbeyBvcmRlcjogWydmaXJzdCcsICdsYXN0JywgJ25vbmUnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtY29scyc6IFt7ICdncmlkLWNvbHMnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29sOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNwYW46IFsnZnVsbCcsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydCc6IFt7ICdjb2wtc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLWVuZCc6IFt7ICdjb2wtZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBSb3dzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLXJvd3MnOiBbeyAnZ3JpZC1yb3dzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7IHJvdzogWydhdXRvJywgeyBzcGFuOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LXN0YXJ0JzogW3sgJ3Jvdy1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctZW5kJzogW3sgJ3Jvdy1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gRmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1mbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWZsb3cnOiBbeyAnZ3JpZC1mbG93JzogWydyb3cnLCAnY29sJywgJ2RlbnNlJywgJ3Jvdy1kZW5zZScsICdjb2wtZGVuc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1jb2xzJzogW3sgJ2F1dG8tY29scyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBSb3dzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tcm93cyc6IFt7ICdhdXRvLXJvd3MnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ2FwOiBbeyBnYXA6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXgnOiBbeyAnZ2FwLXgnOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC15JzogW3sgJ2dhcC15JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogW3sganVzdGlmeTogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbeyAnanVzdGlmeS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1zZWxmJzogW3sgJ2p1c3RpZnktc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWNvbnRlbnQnOiBbeyBjb250ZW50OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1pdGVtcyc6IFt7IGl0ZW1zOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tc2VsZic6IFt7IHNlbGY6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWNvbnRlbnQnOiBbeyAncGxhY2UtY29udGVudCc6IFsuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtaXRlbXMnOiBbeyAncGxhY2UtaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Utc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Utc2VsZic6IFt7ICdwbGFjZS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLy8gU3BhY2luZ1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwOiBbeyBwOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHg6IFt7IHB4OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHk6IFt7IHB5OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBzOiBbeyBwczogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGU6IFt7IHBlOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwdDogW3sgcHQ6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHI6IFt7IHByOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwYjogW3sgcGI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwbDogW3sgcGw6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG06IFt7IG06IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBteDogW3sgbXg6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBteTogW3sgbXk6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXM6IFt7IG1zOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtZTogW3sgbWU6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG10OiBbeyBtdDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtcjogW3sgbXI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1iOiBbeyBtYjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1sOiBbeyBtbDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS14JzogW3sgJ3NwYWNlLXgnOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS14LXJldmVyc2UnOiBbJ3NwYWNlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteSc6IFt7ICdzcGFjZS15JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteS1yZXZlcnNlJzogWydzcGFjZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8vIFNpemluZ1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2x2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4td2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21pbi13JzogW3sgJ21pbi13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXgtV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC13JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ21heC13JzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZnVsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncHJvc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzY3JlZW46IFtpc1RzaGlydFNpemVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RzaGlydFNpemUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2hlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2x2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZHZoJyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21pbi1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21pbi1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXgtSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWF4LWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNpemU6IFt7IHNpemU6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCddIH1dLFxuICAgICAgICAgICAgLy8gVHlwb2dyYXBoeVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFt7IHRleHQ6IFsnYmFzZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFNtb290aGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc21vb3RoaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNtb290aGluZyc6IFsnYW50aWFsaWFzZWQnLCAnc3VicGl4ZWwtYW50aWFsaWFzZWQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnOiBbJ2l0YWxpYycsICdub3QtaXRhbGljJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgV2VpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC13ZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2VtaWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxhY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgRmFtaWx5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1mYW1pbHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5JzogW3sgZm9udDogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFsnbm9ybWFsLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ29yZGluYWwnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnc2xhc2hlZC16ZXJvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2xpbmluZy1udW1zJywgJ29sZHN0eWxlLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ3Byb3BvcnRpb25hbC1udW1zJywgJ3RhYnVsYXItbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2RpYWdvbmFsLWZyYWN0aW9ucycsICdzdGFja2VkLWZyYWN0b25zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExldHRlciBTcGFjaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGV0dGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIENsYW1wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1jbGFtcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFt7ICdsaW5lLWNsYW1wJzogWydub25lJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWFkaW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZWFkaW5nOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NudWcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmVsYXhlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbG9vc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIEltYWdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1pbWFnZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1pbWFnZSc6IFt7ICdsaXN0LWltYWdlJzogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1zdHlsZS10eXBlJzogW3sgbGlzdDogWydub25lJywgJ2Rpc2MnLCAnZGVjaW1hbCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1zdHlsZS1wb3NpdGlvbic6IFt7IGxpc3Q6IFsnaW5zaWRlJywgJ291dHNpZGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItY29sb3InOiBbeyBwbGFjZWhvbGRlcjogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW3sgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1hbGlnbm1lbnQnOiBbeyB0ZXh0OiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0JywgJ2p1c3RpZnknLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWNvbG9yJzogW3sgdGV4dDogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vcGFjaXR5JzogW3sgJ3RleHQtb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24nOiBbJ3VuZGVybGluZScsICdvdmVybGluZScsICdsaW5lLXRocm91Z2gnLCAnbm8tdW5kZXJsaW5lJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXN0eWxlJzogW3sgZGVjb3JhdGlvbjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ3dhdnknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFRoaWNrbmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MnOiBbXG4gICAgICAgICAgICAgICAgeyBkZWNvcmF0aW9uOiBbJ2F1dG8nLCAnZnJvbS1mb250JywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBVbmRlcmxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC11bmRlcmxpbmUtb2Zmc2V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd1bmRlcmxpbmUtb2Zmc2V0JzogW3sgJ3VuZGVybGluZS1vZmZzZXQnOiBbJ2F1dG8nLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJzogW3sgZGVjb3JhdGlvbjogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC10cmFuc2Zvcm1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtdHJhbnNmb3JtJzogWyd1cHBlcmNhc2UnLCAnbG93ZXJjYXNlJywgJ2NhcGl0YWxpemUnLCAnbm9ybWFsLWNhc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3ZlcmZsb3cnOiBbJ3RydW5jYXRlJywgJ3RleHQtZWxsaXBzaXMnLCAndGV4dC1jbGlwJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC13cmFwJzogW3sgdGV4dDogWyd3cmFwJywgJ25vd3JhcCcsICdiYWxhbmNlJywgJ3ByZXR0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEluZGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtaW5kZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluZGVudDogW3sgaW5kZW50OiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWZXJ0aWNhbCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92ZXJ0aWNhbC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndmVydGljYWwtYWxpZ24nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBhbGlnbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2VsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pZGRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXRvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1ib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1YicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3VwZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hpdGVzcGFjZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3doaXRlc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgd2hpdGVzcGFjZTogW1xuICAgICAgICAgICAgICAgIHsgd2hpdGVzcGFjZTogWydub3JtYWwnLCAnbm93cmFwJywgJ3ByZScsICdwcmUtbGluZScsICdwcmUtd3JhcCcsICdicmVhay1zcGFjZXMnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV29yZCBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dvcmQtYnJlYWtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJlYWs6IFt7IGJyZWFrOiBbJ25vcm1hbCcsICd3b3JkcycsICdhbGwnLCAna2VlcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIeXBoZW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHlwaGVuc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBoeXBoZW5zOiBbeyBoeXBoZW5zOiBbJ25vbmUnLCAnbWFudWFsJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGVudDogW3sgY29udGVudDogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBCYWNrZ3JvdW5kc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEF0dGFjaG1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWF0dGFjaG1lbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWF0dGFjaG1lbnQnOiBbeyBiZzogWydmaXhlZCcsICdsb2NhbCcsICdzY3JvbGwnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBDbGlwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jbGlwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jbGlwJzogW3sgJ2JnLWNsaXAnOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnLCAndGV4dCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9wYWNpdHknOiBbeyAnYmctb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9yaWdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3JpZ2luJzogW3sgJ2JnLW9yaWdpbic6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctcG9zaXRpb24nOiBbeyBiZzogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVBvc2l0aW9uXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBSZXBlYXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXJlcGVhdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctcmVwZWF0JzogW3sgYmc6IFsnbm8tcmVwZWF0JywgeyByZXBlYXQ6IFsnJywgJ3gnLCAneScsICdyb3VuZCcsICdzcGFjZSddIH1dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXNpemUnOiBbeyBiZzogWydhdXRvJywgJ2NvdmVyJywgJ2NvbnRhaW4nLCBpc0FyYml0cmFyeVNpemVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEltYWdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1pbWFnZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctaW1hZ2UnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyAnZ3JhZGllbnQtdG8nOiBbJ3QnLCAndHInLCAncicsICdicicsICdiJywgJ2JsJywgJ2wnLCAndGwnXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNvbG9yJzogW3sgYmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LWZyb20tcG9zJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXZpYS1wb3MnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXRvLXBvcyc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LWZyb20nOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXZpYSc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXRvJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLy8gQm9yZGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3VuZGVkOiBbeyByb3VuZGVkOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFt7ICdyb3VuZGVkLXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbeyAncm91bmRlZC1lJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10JzogW3sgJ3JvdW5kZWQtdCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1yJzogW3sgJ3JvdW5kZWQtcic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYic6IFt7ICdyb3VuZGVkLWInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1sJzogW3sgJ3JvdW5kZWQtbCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zcyc6IFt7ICdyb3VuZGVkLXNzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zZSc6IFt7ICdyb3VuZGVkLXNlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZWUnOiBbeyAncm91bmRlZC1lZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZXMnOiBbeyAncm91bmRlZC1lcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10bCc6IFt7ICdyb3VuZGVkLXRsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10cic6IFt7ICdyb3VuZGVkLXRyJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1icic6IFt7ICdyb3VuZGVkLWJyJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJsJzogW3sgJ3JvdW5kZWQtYmwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdyc6IFt7IGJvcmRlcjogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFt7ICdib3JkZXIteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcyc6IFt7ICdib3JkZXItcyc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWUnOiBbeyAnYm9yZGVyLWUnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy10JzogW3sgJ2JvcmRlci10JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1sJzogW3sgJ2JvcmRlci1sJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLW9wYWNpdHknOiBbeyAnYm9yZGVyLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXN0eWxlJzogW3sgYm9yZGVyOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnaGlkZGVuJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteCc6IFt7ICdkaXZpZGUteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14LXJldmVyc2UnOiBbJ2RpdmlkZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15JzogW3sgJ2RpdmlkZS15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXktcmV2ZXJzZSc6IFsnZGl2aWRlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFt7ICdkaXZpZGUtb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtc3R5bGUnOiBbeyBkaXZpZGU6IGdldExpbmVTdHlsZXMoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbeyBib3JkZXI6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3IteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3IteSc6IFt7ICdib3JkZXIteSc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JzogW3sgJ2JvcmRlci10JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3Itcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJzogW3sgJ2JvcmRlci1sJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtY29sb3InOiBbeyBkaXZpZGU6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLXN0eWxlJzogW3sgb3V0bGluZTogWycnLCAuLi5nZXRMaW5lU3R5bGVzKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtb2Zmc2V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLW9mZnNldCc6IFt7ICdvdXRsaW5lLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLXcnOiBbeyBvdXRsaW5lOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtY29sb3InOiBbeyBvdXRsaW5lOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdyc6IFt7IHJpbmc6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoIEluc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13LWluc2V0JzogWydyaW5nLWluc2V0J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLWNvbG9yJzogW3sgcmluZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vcGFjaXR5JzogW3sgJ3Jpbmctb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtdyc6IFt7ICdyaW5nLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC1jb2xvcic6IFt7ICdyaW5nLW9mZnNldCc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLy8gRWZmZWN0c1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2hhZG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaGFkb3c6IFt7IHNoYWRvdzogWycnLCAnaW5uZXInLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlTaGFkb3ddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2hhZG93IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvdy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2hhZG93LWNvbG9yJzogW3sgc2hhZG93OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcGFjaXR5OiBbeyBvcGFjaXR5OiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1peCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWl4LWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21peC1ibGVuZCc6IFt7ICdtaXgtYmxlbmQnOiBbLi4uZ2V0QmxlbmRNb2RlcygpLCAncGx1cy1saWdodGVyJywgJ3BsdXMtZGFya2VyJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYmxlbmQnOiBbeyAnYmctYmxlbmQnOiBnZXRCbGVuZE1vZGVzKCkgfV0sXG4gICAgICAgICAgICAvLyBGaWx0ZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWx0ZXI6IFt7IGZpbHRlcjogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBibHVyOiBbeyBibHVyOiBbYmx1cl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyaWdodG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmlnaHRuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyaWdodG5lc3M6IFt7IGJyaWdodG5lc3M6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250cmFzdDogW3sgY29udHJhc3Q6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERyb3AgU2hhZG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZHJvcC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Ryb3Atc2hhZG93JzogW3sgJ2Ryb3Atc2hhZG93JzogWycnLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncmF5c2NhbGU6IFt7IGdyYXlzY2FsZTogW2dyYXlzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh1ZSBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9odWUtcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdodWUtcm90YXRlJzogW3sgJ2h1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSW52ZXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaW52ZXJ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGludmVydDogW3sgaW52ZXJ0OiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzYXR1cmF0ZTogW3sgc2F0dXJhdGU6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VwaWE6IFt7IHNlcGlhOiBbc2VwaWFdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWZpbHRlcic6IFt7ICdiYWNrZHJvcC1maWx0ZXInOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1ibHVyJzogW3sgJ2JhY2tkcm9wLWJsdXInOiBbYmx1cl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEJyaWdodG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1icmlnaHRuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW3sgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW3sgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbeyAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW2dyYXlzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEh1ZSBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1odWUtcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1odWUtcm90YXRlJzogW3sgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSW52ZXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaW52ZXJ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1pbnZlcnQnOiBbeyAnYmFja2Ryb3AtaW52ZXJ0JzogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1vcGFjaXR5JzogW3sgJ2JhY2tkcm9wLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3sgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2VwaWEnOiBbeyAnYmFja2Ryb3Atc2VwaWEnOiBbc2VwaWFdIH1dLFxuICAgICAgICAgICAgLy8gVGFibGVzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xsYXBzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xsYXBzZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbGxhcHNlJzogW3sgYm9yZGVyOiBbJ2NvbGxhcHNlJywgJ3NlcGFyYXRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW3sgJ2JvcmRlci1zcGFjaW5nJzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbeyAnYm9yZGVyLXNwYWNpbmcteCc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy15JzogW3sgJ2JvcmRlci1zcGFjaW5nLXknOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRhYmxlIExheW91dFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RhYmxlLWxheW91dFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGFibGUtbGF5b3V0JzogW3sgdGFibGU6IFsnYXV0bycsICdmaXhlZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYXB0aW9uIFNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jYXB0aW9uLXNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2FwdGlvbjogW3sgY2FwdGlvbjogWyd0b3AnLCAnYm90dG9tJ10gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2l0aW9ucyBhbmQgQW5pbWF0aW9uXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5pc2l0aW9uIFByb3BlcnR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1wcm9wZXJ0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9ycycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hhZG93JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEdXJhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZHVyYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZHVyYXRpb246IFt7IGR1cmF0aW9uOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBUaW1pbmcgRnVuY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlYXNlOiBbeyBlYXNlOiBbJ2xpbmVhcicsICdpbicsICdvdXQnLCAnaW4tb3V0JywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRGVsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWRlbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRlbGF5OiBbeyBkZWxheTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFuaW1hdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FuaW1hdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhbmltYXRlOiBbeyBhbmltYXRlOiBbJ25vbmUnLCAnc3BpbicsICdwaW5nJywgJ3B1bHNlJywgJ2JvdW5jZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNmb3Jtc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBbeyB0cmFuc2Zvcm06IFsnJywgJ2dwdScsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2NhbGU6IFt7IHNjYWxlOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXgnOiBbeyAnc2NhbGUteCc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteSc6IFt7ICdzY2FsZS15JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdGF0ZTogW3sgcm90YXRlOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS14JzogW3sgJ3RyYW5zbGF0ZS14JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteSc6IFt7ICd0cmFuc2xhdGUteSc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTa2V3IFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdza2V3LXgnOiBbeyAnc2tldy14JzogW3NrZXddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTa2V3IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdza2V3LXknOiBbeyAnc2tldy15JzogW3NrZXddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2Zvcm0gT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtLW9yaWdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNmb3JtLW9yaWdpbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtcmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tcmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBJbnRlcmFjdGl2aXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFjY2VudCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FjY2VudC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhY2NlbnQ6IFt7IGFjY2VudDogWydhdXRvJywgY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXBwZWFyYW5jZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FwcGVhcmFuY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXBwZWFyYW5jZTogW3sgYXBwZWFyYW5jZTogWydub25lJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ3Vyc29yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY3Vyc29yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2FpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbW92ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnaGVscCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm90LWFsbG93ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQtbWVudScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncHJvZ3Jlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Nyb3NzaGFpcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndmVydGljYWwtdGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxpYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vLWRyb3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyYWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyYWJiaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwtc2Nyb2xsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2wtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyb3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3MtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmUtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdudy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdldy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25zLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmVzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253c2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd6b29tLWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd6b29tLW91dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYXJldCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3QtaW4tdGltZS1tb2RlI2NhcmV0LWNvbG9yLXV0aWxpdGllc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY2FyZXQtY29sb3InOiBbeyBjYXJldDogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBvaW50ZXIgRXZlbnRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9pbnRlci1ldmVudHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BvaW50ZXItZXZlbnRzJzogW3sgJ3BvaW50ZXItZXZlbnRzJzogWydub25lJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmVzaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmVzaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJlc2l6ZTogW3sgcmVzaXplOiBbJ25vbmUnLCAneScsICd4JywgJyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1iZWhhdmlvcic6IFt7IHNjcm9sbDogWydhdXRvJywgJ3Ntb290aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbeyAnc2Nyb2xsLW0nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbeyAnc2Nyb2xsLW14JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW15JzogW3sgJ3Njcm9sbC1teSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXMnOiBbeyAnc2Nyb2xsLW1zJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWUnOiBbeyAnc2Nyb2xsLW1lJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXQnOiBbeyAnc2Nyb2xsLW10JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcic6IFt7ICdzY3JvbGwtbXInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tYic6IFt7ICdzY3JvbGwtbWInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWwnOiBbeyAnc2Nyb2xsLW1sJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXAnOiBbeyAnc2Nyb2xsLXAnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1weCc6IFt7ICdzY3JvbGwtcHgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1weSc6IFt7ICdzY3JvbGwtcHknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHMnOiBbeyAnc2Nyb2xsLXBzJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wZSc6IFt7ICdzY3JvbGwtcGUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB0JzogW3sgJ3Njcm9sbC1wdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcic6IFt7ICdzY3JvbGwtcHInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBiJzogW3sgJ3Njcm9sbC1wYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBsJzogW3sgJ3Njcm9sbC1wbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIEFsaWduXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtYWxpZ24nOiBbeyBzbmFwOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYWxpZ24tbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBTdG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtc3RvcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1zdG9wJzogW3sgc25hcDogWydub3JtYWwnLCAnYWx3YXlzJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXR5cGUnOiBbeyBzbmFwOiBbJ25vbmUnLCAneCcsICd5JywgJ2JvdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZSBTdHJpY3RuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1zdHJpY3RuZXNzJzogW3sgc25hcDogWydtYW5kYXRvcnknLCAncHJveGltaXR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3VjaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdG91Y2g6IFsnYXV0bycsICdub25lJywgJ21hbmlwdWxhdGlvbiddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gteCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICd0b3VjaC1wYW4nOiBbJ3gnLCAnbGVmdCcsICdyaWdodCddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gteSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICd0b3VjaC1wYW4nOiBbJ3knLCAndXAnLCAnZG93biddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gUGluY2ggWm9vbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoLXBpbmNoLXpvb20nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVXNlciBTZWxlY3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy91c2VyLXNlbGVjdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZWxlY3Q6IFt7IHNlbGVjdDogWydub25lJywgJ3RleHQnLCAnYWxsJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lsbCBDaGFuZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWxsLWNoYW5nZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnd2lsbC1jaGFuZ2UnOiBbXG4gICAgICAgICAgICAgICAgeyAnd2lsbC1jaGFuZ2UnOiBbJ2F1dG8nLCAnc2Nyb2xsJywgJ2NvbnRlbnRzJywgJ3RyYW5zZm9ybScsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gU1ZHXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZpbGxcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWxsXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbGw6IFt7IGZpbGw6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3Ryb2tlLXcnOiBbeyBzdHJva2U6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGgsIGlzQXJiaXRyYXJ5TnVtYmVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0cm9rZTogW3sgc3Ryb2tlOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLy8gQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JlZW4gUmVhZGVyc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjcmVlbi1yZWFkZXJzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNyOiBbJ3NyLW9ubHknLCAnbm90LXNyLW9ubHknXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9yY2VkIENvbG9yIEFkanVzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvcmNlZC1jb2xvci1hZGp1c3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbeyAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFsnYXV0bycsICdub25lJ10gfV0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIG92ZXJmbG93OiBbJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAgICAgICAgICAgb3ZlcnNjcm9sbDogWydvdmVyc2Nyb2xsLXgnLCAnb3ZlcnNjcm9sbC15J10sXG4gICAgICAgICAgICBpbnNldDogWydpbnNldC14JywgJ2luc2V0LXknLCAnc3RhcnQnLCAnZW5kJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXgnOiBbJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC15JzogWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICAgICAgICBmbGV4OiBbJ2Jhc2lzJywgJ2dyb3cnLCAnc2hyaW5rJ10sXG4gICAgICAgICAgICBnYXA6IFsnZ2FwLXgnLCAnZ2FwLXknXSxcbiAgICAgICAgICAgIHA6IFsncHgnLCAncHknLCAncHMnLCAncGUnLCAncHQnLCAncHInLCAncGInLCAncGwnXSxcbiAgICAgICAgICAgIHB4OiBbJ3ByJywgJ3BsJ10sXG4gICAgICAgICAgICBweTogWydwdCcsICdwYiddLFxuICAgICAgICAgICAgbTogWydteCcsICdteScsICdtcycsICdtZScsICdtdCcsICdtcicsICdtYicsICdtbCddLFxuICAgICAgICAgICAgbXg6IFsnbXInLCAnbWwnXSxcbiAgICAgICAgICAgIG15OiBbJ210JywgJ21iJ10sXG4gICAgICAgICAgICBzaXplOiBbJ3cnLCAnaCddLFxuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbXG4gICAgICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybycsXG4gICAgICAgICAgICAgICAgJ2Z2bi1maWd1cmUnLFxuICAgICAgICAgICAgICAgICdmdm4tc3BhY2luZycsXG4gICAgICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbJ2Rpc3BsYXknLCAnb3ZlcmZsb3cnXSxcbiAgICAgICAgICAgIHJvdW5kZWQ6IFtcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10JyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1yJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1iJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1sJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc2UnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdGwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1icicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYmwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbJ3JvdW5kZWQtc3MnLCAncm91bmRlZC1lcyddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFsncm91bmRlZC1zZScsICdyb3VuZGVkLWVlJ10sXG4gICAgICAgICAgICAncm91bmRlZC10JzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtdHInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbJ3JvdW5kZWQtdHInLCAncm91bmRlZC1iciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtYic6IFsncm91bmRlZC1icicsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAncm91bmRlZC1sJzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFsnYm9yZGVyLXNwYWNpbmcteCcsICdib3JkZXItc3BhY2luZy15J10sXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXMnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1lJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1iJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci13LXgnOiBbJ2JvcmRlci13LXInLCAnYm9yZGVyLXctbCddLFxuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctYiddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1iJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3IteCc6IFsnYm9yZGVyLWNvbG9yLXInLCAnYm9yZGVyLWNvbG9yLWwnXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3IteSc6IFsnYm9yZGVyLWNvbG9yLXQnLCAnYm9yZGVyLWNvbG9yLWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW14JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW15JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1zJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1lJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW10JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1yJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1iJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogWydzY3JvbGwtbXInLCAnc2Nyb2xsLW1sJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW15JzogWydzY3JvbGwtbXQnLCAnc2Nyb2xsLW1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXAnOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1weCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1weScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1weCc6IFsnc2Nyb2xsLXByJywgJ3Njcm9sbC1wbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1weSc6IFsnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wYiddLFxuICAgICAgICAgICAgdG91Y2g6IFsndG91Y2gteCcsICd0b3VjaC15JywgJ3RvdWNoLXB6J10sXG4gICAgICAgICAgICAndG91Y2gteCc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC15JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaCddLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6IHtcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgfSxcbiAgICB9IGFzIGNvbnN0IHNhdGlzZmllcyBDb25maWc8RGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzPlxufVxuIiwgImltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbi8qKlxuICogQHBhcmFtIGJhc2VDb25maWcgQ29uZmlnIHdoZXJlIG90aGVyIGNvbmZpZyB3aWxsIGJlIG1lcmdlZCBpbnRvLiBUaGlzIG9iamVjdCB3aWxsIGJlIG11dGF0ZWQuXG4gKiBAcGFyYW0gY29uZmlnRXh0ZW5zaW9uIFBhcnRpYWwgY29uZmlnIHRvIG1lcmdlIGludG8gdGhlIGBiYXNlQ29uZmlnYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlQ29uZmlncyA9IDxDbGFzc0dyb3VwSWRzIGV4dGVuZHMgc3RyaW5nLCBUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXI+KFxuICAgIGJhc2VDb25maWc6IEdlbmVyaWNDb25maWcsXG4gICAge1xuICAgICAgICBjYWNoZVNpemUsXG4gICAgICAgIHByZWZpeCxcbiAgICAgICAgc2VwYXJhdG9yLFxuICAgICAgICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSxcbiAgICAgICAgZXh0ZW5kID0ge30sXG4gICAgICAgIG92ZXJyaWRlID0ge30sXG4gICAgfTogQ29uZmlnRXh0ZW5zaW9uPENsYXNzR3JvdXBJZHMsIFRoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnY2FjaGVTaXplJywgY2FjaGVTaXplKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3ByZWZpeCcsIHByZWZpeClcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdzZXBhcmF0b3InLCBzZXBhcmF0b3IpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUnLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSlcblxuICAgIGZvciAoY29uc3QgY29uZmlnS2V5IGluIG92ZXJyaWRlKSB7XG4gICAgICAgIG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgICAgICBvdmVycmlkZVtjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIGV4dGVuZCkge1xuICAgICAgICBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgICAgIGV4dGVuZFtrZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZUNvbmZpZ1xufVxuXG5jb25zdCBvdmVycmlkZVByb3BlcnR5ID0gPFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBUPihcbiAgICBiYXNlT2JqZWN0OiBULFxuICAgIG92ZXJyaWRlS2V5OiBLLFxuICAgIG92ZXJyaWRlVmFsdWU6IFRbS10gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAob3ZlcnJpZGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJhc2VPYmplY3Rbb3ZlcnJpZGVLZXldID0gb3ZlcnJpZGVWYWx1ZVxuICAgIH1cbn1cblxuY29uc3Qgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgb3ZlcnJpZGVPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAob3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgICAgICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZU9iamVjdCwga2V5LCBvdmVycmlkZU9iamVjdFtrZXldKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5jb25zdCBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBtZXJnZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChtZXJnZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXJnZU9iamVjdCkge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VWYWx1ZSA9IG1lcmdlT2JqZWN0W2tleV1cblxuICAgICAgICAgICAgaWYgKG1lcmdlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGJhc2VPYmplY3Rba2V5XSA9IChiYXNlT2JqZWN0W2tleV0gfHwgW10pLmNvbmNhdChtZXJnZVZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuaW1wb3J0IHsgbWVyZ2VDb25maWdzIH0gZnJvbSAnLi9tZXJnZS1jb25maWdzJ1xuaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHMsIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiBHZW5lcmljQ29uZmlnXG5cbmV4cG9ydCBjb25zdCBleHRlbmRUYWlsd2luZE1lcmdlID0gPFxuICAgIEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbj4oXG4gICAgY29uZmlnRXh0ZW5zaW9uOlxuICAgICAgICB8IENvbmZpZ0V4dGVuc2lvbjxcbiAgICAgICAgICAgICAgRGVmYXVsdENsYXNzR3JvdXBJZHMgfCBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyxcbiAgICAgICAgICAgICAgRGVmYXVsdFRoZW1lR3JvdXBJZHMgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkc1xuICAgICAgICAgID5cbiAgICAgICAgfCBDcmVhdGVDb25maWdTdWJzZXF1ZW50LFxuICAgIC4uLmNyZWF0ZUNvbmZpZzogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pID0+XG4gICAgdHlwZW9mIGNvbmZpZ0V4dGVuc2lvbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZywgY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpXG4gICAgICAgIDogY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICAgICAgICAgICAgKCkgPT4gbWVyZ2VDb25maWdzKGdldERlZmF1bHRDb25maWcoKSwgY29uZmlnRXh0ZW5zaW9uKSxcbiAgICAgICAgICAgICAgLi4uY3JlYXRlQ29uZmlnLFxuICAgICAgICAgIClcbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcblxuZXhwb3J0IGNvbnN0IHR3TWVyZ2UgPSBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcpXG4iLCAiaW1wb3J0IHsgdXNlSXNNdXRhdGluZyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCB7IHR5cGUgQ29sdW1uRGVmIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgRmlsdGVySWNvbiwgTWF4aW1pemUsIE1pbmltaXplLCBQYW5lbExlZnRDbG9zZSwgUGFuZWxMZWZ0T3BlbiwgUmVmcmVzaEN3IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZU51bWJlciB9IGZyb20gXCJtb3Rpb24tcGx1cy9yZWFjdFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHR5cGUgeyBCaWdJbnRTdHJpbmcsIE51bWVyaWNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vZGF0YS90eXBlLXV0aWxzXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IFBvcG92ZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyVHJpZ2dlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3BvcG92ZXJcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtaW5zZXJ0XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZVF1ZXJ5IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtcXVlcnlcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlVXBkYXRlIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtdXBkYXRlXCI7XG5pbXBvcnQgeyB1c2VGaWx0ZXJpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWZpbHRlcmluZ1wiO1xuaW1wb3J0IHsgdXNlSXNJbnNlcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWlzLWluc2VydGluZ1wiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtcGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1zZWxlY3Rpb25cIjtcbmltcG9ydCB7IHVzZVNvcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNvcnRpbmdcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBnZXRDZWxsIH0gZnJvbSBcIi4vY2VsbC9nZXQtY2VsbFwiO1xuaW1wb3J0IHsgU2VsZWN0SGVhZGVyQ2VsbCwgU2VsZWN0SGVhZGVyQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RSb3dDZWxsLCBTZWxlY3RSb3dDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL1NlbGVjdFJvd0NlbGxcIjtcbmltcG9ydCB7IFdyaXRlYWJsZUNlbGwgfSBmcm9tIFwiLi9jZWxsL1dyaXRlYWJsZUNlbGxcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCB7IEZpbHRlclRyZWUgfSBmcm9tIFwiLi9GaWx0ZXJUcmVlXCI7XG5pbXBvcnQgeyBEYXRhR3JpZCB9IGZyb20gXCIuL2dyaWQvRGF0YUdyaWRcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyQ2VsbCB9IGZyb20gXCIuL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBnZXRJbnB1dCB9IGZyb20gXCIuL2lucHV0L2dldC1pbnB1dFwiO1xuaW1wb3J0IHsgU3RhZ2VkUm93cyB9IGZyb20gXCIuL1N0YWdlZFJvd3NcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVUYWJsZVZpZXdQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aXZlVGFibGVWaWV3KF9wcm9wczogQWN0aXZlVGFibGVWaWV3UHJvcHMpIHtcbiAgY29uc3QgaXNNdXRhdGluZyA9IEJvb2xlYW4odXNlSXNNdXRhdGluZygpKTtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciwgaXNGdWxsc2NyZWVuLCB0b2dnbGVGdWxsc2NyZWVuLCB0b2dnbGVOYXZpZ2F0aW9uLCBpc05hdmlnYXRpb25PcGVuIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBzb3J0aW5nU3RhdGUsIHNldFNvcnRpbmdTdGF0ZSB9ID0gdXNlU29ydGluZygpO1xuICBjb25zdCB7IHBhZ2luYXRpb25TdGF0ZSwgc2V0UGFnaW5hdGlvblN0YXRlIH0gPSB1c2VQYWdpbmF0aW9uKCk7XG4gIGNvbnN0IFtzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+KFtdKTtcbiAgY29uc3QgeyBhcHBsaWVkRmlsdGVyLCBzZXRBcHBsaWVkRmlsdGVyLCBlZGl0aW5nRmlsdGVyLCBzZXRFZGl0aW5nRmlsdGVyLCB0b3RhbEVkaXRpbmdGaWx0ZXJzIH0gPSB1c2VGaWx0ZXJpbmcoKTtcblxuICBjb25zdCB7IGRhdGEsIGlzRmV0Y2hpbmcsIHJlZmV0Y2ggfSA9IHVzZUFjdGl2ZVRhYmxlUXVlcnkoe1xuICAgIC4uLnBhZ2luYXRpb25TdGF0ZSxcbiAgICBzb3J0T3JkZXI6IHNvcnRpbmdTdGF0ZSxcbiAgICBmaWx0ZXI6IGFwcGxpZWRGaWx0ZXIsXG4gIH0pO1xuICBjb25zdCB7IGRlbGV0ZVNlbGVjdGlvbiwgaXNTZWxlY3RpbmcsIHJvd1NlbGVjdGlvblN0YXRlLCBzZXRSb3dTZWxlY3Rpb25TdGF0ZSB9ID0gdXNlU2VsZWN0aW9uKGRhdGEpO1xuXG4gIGNvbnN0IHJlYWRvbmx5ID0gIU9iamVjdC52YWx1ZXMoYWN0aXZlVGFibGU/LmNvbHVtbnMgPz8ge30pLnNvbWUoKGNvbHVtbikgPT4gY29sdW1uLmlzSW5QcmltYXJ5S2V5KTtcbiAgY29uc3QgaXNJbnNlcnRpbmcgPSB1c2VJc0luc2VydGluZygpO1xuICBjb25zdCBpbnNlcnQgPSB1c2VBY3RpdmVUYWJsZUluc2VydCgpO1xuICBjb25zdCB1cGRhdGUgPSB1c2VBY3RpdmVUYWJsZVVwZGF0ZSgpO1xuXG4gIC8vIHJlc2V0IGluc2VydFJvd3Mgd2hlbiBhY3RpdmVUYWJsZSBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRTdGFnZWRSb3dzKFtdKSwgW2FjdGl2ZVRhYmxlXSk7XG5cbiAgaWYgKCFhY3RpdmVUYWJsZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZVN0YWdlZFJvd3MoKSB7XG4gICAgaW5zZXJ0Lm11dGF0ZShzdGFnZWRSb3dzLCB7XG4gICAgICBvbkVycm9yLFxuICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICB0b2FzdC5zdWNjZXNzKFwiUm93cyBpbnNlcnRlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgICAgIHNldFN0YWdlZFJvd3MoW10pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5ld1N0YWdlZFJvdygpIHtcbiAgICAvLyBUT0RPOiB0aGUgbmV3IG9iamVjdCBzaG91bGQgaGF2ZSBzb21lIHRoaW5ncyBzZXQgdG8gbnVsbCBpZiB0aGV5J3JlIG51bGxhYmxlIG9yIGhhdmUgYSBkZWZhdWx0IHZhbHVlP1xuICAgIHNldFN0YWdlZFJvd3MoKG9sZCkgPT4gWy4uLm9sZCwge31dKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRyb3BTdGFnZWRSb3dzKCkge1xuICAgIHNldFN0YWdlZFJvd3MoW10pO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlOiB1bmtub3duLCBjb2x1bW46IENvbHVtbiwgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIHVwZGF0ZS5tdXRhdGUoe1xuICAgICAgZGV0YWlsczogeyBjaGFuZ2VzOiB7IFtjb2x1bW4ubmFtZV06IHZhbHVlIH0sIHJvdywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LFxuICAgICAgb3B0aW9uczoge30sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkZpbHRlck9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbikge1xuICAgIGlmIChvcGVuID09PSB0cnVlKSB7XG4gICAgICBzZXRFZGl0aW5nRmlsdGVyKGFwcGxpZWRGaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRBcHBsaWVkRmlsdGVyKGVkaXRpbmdGaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlYWwgY29sdW1uIGRlZmluaXRpb25zIHRoYXQgY29ycmVzcG9uZCB0byBkYXRhYmFzZSBjb2x1bW5zXG4gIGNvbnN0IGNvbmNyZXRlQ29sdW1uRGVmcyA9IE9iamVjdC52YWx1ZXMoYWN0aXZlVGFibGU/LmNvbHVtbnMgPz8ge30pLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjb2x1bW4ubmFtZSxcbiAgICAgIGFjY2Vzc29yS2V5OiBjb2x1bW4ubmFtZSxcbiAgICAgIG1ldGE6IGNvbHVtbixcbiAgICAgIGhlYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIERhdGFHcmlkSGVhZGVyQ2VsbCh7IGNvbHVtbiB9KTtcbiAgICAgIH0sXG4gICAgICBjZWxsKHsgY2VsbCB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4gKFxuICAgICAgICAgIDxXcml0ZWFibGVDZWxsXG4gICAgICAgICAgICBjZWxsQ29tcG9uZW50PXtnZXRDZWxsKHsgY2VsbCwgY29sdW1uLCBwcm9wcyB9KX1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICAgIG9uU3VibWl0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUNlbGxJbnB1dFN1Ym1pdCh2YWx1ZSwgY29sdW1uLCBjZWxsLnJvdy5vcmlnaW5hbCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB9KTtcblxuICAvLyB0aGVzZSBhcmUgY29sdW1ucyB0aGF0IGV4aXN0IHZpcnR1YWxseSBhbmQgYXJlIG5vdCBkYiBjb2x1bW5zXG4gIGNvbnN0IHZpcnR1YWxDb2x1bW5EZWZzID0gW1xuICAgIHtcbiAgICAgIGlkOiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBhY2Nlc3NvcktleTogXCJfX3BzX3NlbGVjdFwiLFxuICAgICAgZW5hYmxlUGlubmluZzogdHJ1ZSxcbiAgICAgIGVuYWJsZVJlc2l6aW5nOiBmYWxzZSxcbiAgICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgICAgZGlzYWJsZURyYWdnaW5nOiB0cnVlLFxuICAgICAgc2l6ZTogNTAsXG4gICAgICBtaW5TaXplOiA1MCxcbiAgICAgIGhlYWRlcih7IHRhYmxlIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxTZWxlY3RIZWFkZXJDZWxsUHJvcHMsIFwidGFibGVcIiB8IFwicmVhZG9ubHlcIj4pID0+IChcbiAgICAgICAgICA8U2VsZWN0SGVhZGVyQ2VsbCB0YWJsZT17dGFibGV9IHJlYWRvbmx5PXtyZWFkb25seX0gey4uLnByb3BzfSAvPlxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyByb3cgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PFNlbGVjdFJvd0NlbGxQcm9wcywgXCJyb3dcIiB8IFwicmVhZG9ubHlcIj4pID0+IHtcbiAgICAgICAgICByZXR1cm4gPFNlbGVjdFJvd0NlbGwgcm93PXtyb3d9IHJlYWRvbmx5PXtyZWFkb25seX0gey4uLnByb3BzfSAvPjtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXSBzYXRpc2ZpZXMgKENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gJiB7IGRpc2FibGVEcmFnZ2luZz86IGJvb2xlYW4gfSlbXTtcblxuICBjb25zdCBjb2x1bW5EZWZzID0gWy4uLmNvbmNyZXRlQ29sdW1uRGVmcywgLi4udmlydHVhbENvbHVtbkRlZnNdLnNvcnQoZGVmYXVsdENvbHVtblNvcnRpbmcpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtYmctc3R1ZGlvLWhlYWRlci1iYWNrZ3JvdW5kIHBzLWZsZXggcHMtdy1mdWxsIHBzLXAtMiBwcy1weS0zIHBzLWJvcmRlci1iIHBzLWJnLWNhcmQgcHMtcm91bmRlZC10LWxnXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbCBwcy1nYXAtMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWdyb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17dG9nZ2xlTmF2aWdhdGlvbn0+XG4gICAgICAgICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gPyA8UGFuZWxMZWZ0Q2xvc2UgLz4gOiA8UGFuZWxMZWZ0T3BlbiAvPn1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxQb3BvdmVyIG9uT3BlbkNoYW5nZT17b25GaWx0ZXJPcGVuQ2hhbmdlfT5cbiAgICAgICAgICAgICAgICA8UG9wb3ZlclRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBjbGFzc05hbWU9e2NuKHRvdGFsRWRpdGluZ0ZpbHRlcnMgPiAwICYmIFwicHMtYm9yZGVyLXByaW1hcnlcIil9PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAge3RvdGFsRWRpdGluZ0ZpbHRlcnMgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuaW1hdGVOdW1iZXIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVyc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBhbGlnbj1cInN0YXJ0XCIgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInBzLXctbWluIHBzLW1heC1oLVs1MjBweF0gcHMtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICA8RmlsdGVyVHJlZVxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI9e2VkaXRpbmdGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICAgIHNldEZpbHRlcj17c2V0RWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXRpbmdGaWx0ZXIoZmlsdGVyKTsgLy8gVXBkYXRlIHRoZSBlZGl0aW5nIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGFwcGxpZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgdGFibGU9e2FjdGl2ZVRhYmxlfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJDb250ZW50PlxuICAgICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtuZXdTdGFnZWRSb3d9IGRpc2FibGVkPXtpc0luc2VydGluZyA+IDB9PlxuICAgICAgICAgICAgICAgIEluc2VydCByb3dcbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIHtzdGFnZWRSb3dzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtzYXZlU3RhZ2VkUm93c30+XG4gICAgICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgey8qIE5lZWRzIHNvbWUgaW1wcm92ZW1lbnQgKi99XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2Ryb3BTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzU2VsZWN0aW5nICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZGVsZXRlU2VsZWN0aW9ufT5cbiAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9eygpID0+IHZvaWQgcmVmZXRjaCgpfSBkaXNhYmxlZD17aXNGZXRjaGluZ30+XG4gICAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9e2NuKFwicHMtaC00IHBzLXctNFwiLCBpc0ZldGNoaW5nICYmIFwicHMtYW5pbWF0ZS1zcGluXCIpfSAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17dG9nZ2xlRnVsbHNjcmVlbn0+XG4gICAgICAgICAgICAgICAge2lzRnVsbHNjcmVlbiA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxEYXRhR3JpZFxuICAgICAgICBjb2x1bW5EZWZzPXtjb2x1bW5EZWZzfVxuICAgICAgICBnZXRCZWZvcmVSb3dzPXsodGFibGUpID0+IDxTdGFnZWRSb3dzIHsuLi57IHRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH19IC8+fVxuICAgICAgICBpc0xvYWRpbmc9e2lzRmV0Y2hpbmd9XG4gICAgICAgIGlzUHJvY2Vzc2luZz17aXNNdXRhdGluZ31cbiAgICAgICAgb25QYWdpbmF0aW9uQ2hhbmdlPXtzZXRQYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlPXtzZXRSb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgb25Tb3J0aW5nQ2hhbmdlPXtzZXRTb3J0aW5nU3RhdGV9XG4gICAgICAgIHBhZ2VDb3VudD17Z2V0UGFnZUNvdW50KGRhdGE/LmZpbHRlcmVkUm93Q291bnQgPz8gSW5maW5pdHksIHBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSl9XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZT17cGFnaW5hdGlvblN0YXRlfVxuICAgICAgICByb3dzPXtkYXRhPy5yb3dzID8/IFtdfVxuICAgICAgICByb3dTZWxlY3Rpb25TdGF0ZT17cm93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIHNvcnRpbmdTdGF0ZT17c29ydGluZ1N0YXRlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFnZUNvdW50KHJvd0NvdW50OiBudW1iZXIgfCBiaWdpbnQgfCBOdW1lcmljU3RyaW5nIHwgQmlnSW50U3RyaW5nLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJvd0NvdW50ID09PSBJbmZpbml0eSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VDb3VudCA9IE51bWJlcigoQmlnSW50KHJvd0NvdW50KSArIEJpZ0ludChwYWdlU2l6ZSkgLSBCaWdJbnQoMSkpIC8gQmlnSW50KHBhZ2VTaXplKSk7XG5cbiAgcmV0dXJuIE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhZ2VDb3VudCkgPyBwYWdlQ291bnQgOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENvbHVtblNvcnRpbmcoYTogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiwgYjogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pikge1xuICBjb25zdCBhTWV0YSA9IGEubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGJNZXRhID0gYi5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcblxuICBpZiAoYS5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiIHx8IGIuaWQgPT09IFwiX19wc19zZWxlY3RcIikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaWYgKGFNZXRhID09PSB1bmRlZmluZWQgfHwgYk1ldGEgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAwOyAvLyBjYW4ndCBiZSBjb21wYXJlZCwgc2hvdWxkbid0IGhhcHBlblxuICB9XG5cbiAgaWYgKGFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmICFiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoIWFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmIGJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gYU1ldGEubmFtZS5sb2NhbGVDb21wYXJlKGJNZXRhLm5hbWUpO1xufVxuIiwgImltcG9ydCB7IENhbWVsVG9QYXNjYWwgfSBmcm9tICcuL3V0aWxpdHktdHlwZXMnO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBrZWJhYiBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBrZWJhYml6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0tlYmFiQ2FzZSA9IChzdHJpbmc6IHN0cmluZykgPT5cbiAgc3RyaW5nLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGNhbWVsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGNhbWVsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvQ2FtZWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCkgPT5cbiAgc3RyaW5nLnJlcGxhY2UoL14oW0EtWl0pfFtcXHMtX10rKFxcdykvZywgKG1hdGNoLCBwMSwgcDIpID0+XG4gICAgcDIgPyBwMi50b1VwcGVyQ2FzZSgpIDogcDEudG9Mb3dlckNhc2UoKSxcbiAgKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gcGFzY2FsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHBhc2NhbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b1Bhc2NhbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKTogQ2FtZWxUb1Bhc2NhbDxUPiA9PiB7XG4gIGNvbnN0IGNhbWVsQ2FzZSA9IHRvQ2FtZWxDYXNlKHN0cmluZyk7XG5cbiAgcmV0dXJuIChjYW1lbENhc2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjYW1lbENhc2Uuc2xpY2UoMSkpIGFzIENhbWVsVG9QYXNjYWw8VD47XG59O1xuXG4vKipcbiAqIE1lcmdlcyBjbGFzc2VzIGludG8gYSBzaW5nbGUgc3RyaW5nXG4gKlxuICogQHBhcmFtIHthcnJheX0gY2xhc3Nlc1xuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmcgb2YgY2xhc3Nlc1xuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc2VzID0gPENsYXNzVHlwZSA9IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KC4uLmNsYXNzZXM6IENsYXNzVHlwZVtdKSA9PlxuICBjbGFzc2VzXG4gICAgLmZpbHRlcigoY2xhc3NOYW1lLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIEJvb2xlYW4oY2xhc3NOYW1lKSAmJlxuICAgICAgICAoY2xhc3NOYW1lIGFzIHN0cmluZykudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICBhcnJheS5pbmRleE9mKGNsYXNzTmFtZSkgPT09IGluZGV4XG4gICAgICApO1xuICAgIH0pXG4gICAgLmpvaW4oJyAnKVxuICAgIC50cmltKCk7XG4iLCAiZXhwb3J0IGRlZmF1bHQge1xuICB4bWxuczogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgd2lkdGg6IDI0LFxuICBoZWlnaHQ6IDI0LFxuICB2aWV3Qm94OiAnMCAwIDI0IDI0JyxcbiAgZmlsbDogJ25vbmUnLFxuICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICBzdHJva2VXaWR0aDogMixcbiAgc3Ryb2tlTGluZWNhcDogJ3JvdW5kJyxcbiAgc3Ryb2tlTGluZWpvaW46ICdyb3VuZCcsXG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVmYXVsdEF0dHJpYnV0ZXMgZnJvbSAnLi9kZWZhdWx0QXR0cmlidXRlcyc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcyB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcblxuaW50ZXJmYWNlIEljb25Db21wb25lbnRQcm9wcyBleHRlbmRzIEx1Y2lkZVByb3BzIHtcbiAgaWNvbk5vZGU6IEljb25Ob2RlO1xufVxuXG4vKipcbiAqIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICpcbiAqIEBjb21wb25lbnQgSWNvblxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY29sb3IgLSBUaGUgY29sb3Igb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zaXplIC0gVGhlIHNpemUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zdHJva2VXaWR0aCAtIFRoZSBzdHJva2Ugd2lkdGggb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuYWJzb2x1dGVTdHJva2VXaWR0aCAtIFdoZXRoZXIgdG8gdXNlIGFic29sdXRlIHN0cm9rZSB3aWR0aFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNsYXNzTmFtZSAtIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5jaGlsZHJlbiAtIFRoZSBjaGlsZHJlbiBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuaWNvbk5vZGUgLSBUaGUgaWNvbiBub2RlIG9mIHRoZSBpY29uXG4gKlxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgSWNvbiA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvbkNvbXBvbmVudFByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzaXplID0gMjQsXG4gICAgICBzdHJva2VXaWR0aCA9IDIsXG4gICAgICBhYnNvbHV0ZVN0cm9rZVdpZHRoLFxuICAgICAgY2xhc3NOYW1lID0gJycsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgLi4ucmVzdFxuICAgIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAgICdzdmcnLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIC4uLmRlZmF1bHRBdHRyaWJ1dGVzLFxuICAgICAgICB3aWR0aDogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLFxuICAgICAgICBzdHJva2U6IGNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aDogYWJzb2x1dGVTdHJva2VXaWR0aCA/IChOdW1iZXIoc3Ryb2tlV2lkdGgpICogMjQpIC8gTnVtYmVyKHNpemUpIDogc3Ryb2tlV2lkdGgsXG4gICAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKCdsdWNpZGUnLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgLi4uaWNvbk5vZGUubWFwKChbdGFnLCBhdHRyc10pID0+IGNyZWF0ZUVsZW1lbnQodGFnLCBhdHRycykpLFxuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pLFxuICAgICAgXSxcbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzLCB0b0tlYmFiQ2FzZSB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcblxuLyoqXG4gKiBDcmVhdGUgYSBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpY29uTmFtZVxuICogQHBhcmFtIHthcnJheX0gaWNvbk5vZGVcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IGNyZWF0ZUx1Y2lkZUljb24gPSAoaWNvbk5hbWU6IHN0cmluZywgaWNvbk5vZGU6IEljb25Ob2RlKSA9PiB7XG4gIGNvbnN0IENvbXBvbmVudCA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgTHVjaWRlUHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PlxuICAgIGNyZWF0ZUVsZW1lbnQoSWNvbiwge1xuICAgICAgcmVmLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcyhgbHVjaWRlLSR7dG9LZWJhYkNhc2UoaWNvbk5hbWUpfWAsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KSxcbiAgKTtcblxuICBDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgJHtpY29uTmFtZX1gO1xuXG4gIHJldHVybiBDb21wb25lbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVMdWNpZGVJY29uO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dEb3duV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBeE5pQTBJRFFnTkMwMElpQXZQZ29nSUR4d1lYUm9JR1E5SWswM0lESXdWalFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURSb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRGhvTnlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9OQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93RG93bldpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd0Rvd25XaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyAxNiA0IDQgNC00Jywga2V5OiAnMWNvNndqJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgMjBWNCcsIGtleTogJzF5b3hlYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA0aDEwJywga2V5OiAnMXc4N2djJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDhoNycsIGtleTogJ2RqeWUzNCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmg0Jywga2V5OiAncTh0aWg0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd0Rvd25XaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dVcFdpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QTRJRFF0TkNBMElEUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUY2dOSFl4TmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURFMmFEY2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREl3YURRaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LXVwLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dVcFdpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd1VwV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgOCA0LTQgNCA0Jywga2V5OiAnMTF3bDd1JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgNHYxNicsIGtleTogJzFnbGZjeCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmgxMCcsIGtleTogJzE0MzhqaScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxNmg3Jywga2V5OiAndW9zaXN2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDIwaDQnLCBrZXk6ICcxa3JjMzInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93VXBXaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2FsZW5kYXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXlkalFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEUySURKMk5DSWdMejRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqUWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWsweklERXdhREU0SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2FsZW5kYXJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDYWxlbmRhciA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NhbGVuZGFyJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAydjQnLCBrZXk6ICcxY21weW0nIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMnY0Jywga2V5OiAnNG04MXZrJyB9XSxcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICc0Jywgcng6ICcyJywga2V5OiAnMWhvcGN5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTBoMTgnLCBrZXk6ICc4dG9lbjgnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENhbGVuZGFyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hlY2tcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOaUE1SURFM2JDMDFMVFVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hlY2tcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGVjayA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZWNrJywgW1sncGF0aCcsIHsgZDogJ00yMCA2IDkgMTdsLTUtNScsIGtleTogJzFnbWYyYycgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2s7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBNUlEWWdOaUEyTFRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tZG93blxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25Eb3duID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkRvd24nLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDkgNiA2IDYtNicsIGtleTogJ3FydW5zbCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkRvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVZ01UZ3ROaTAySURZdE5pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25MZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTUgMTgtNi02IDYtNicsIGtleTogJzF3bmZnMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE9TQXhPQ0EyTFRZdE5pMDJJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblJpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblJpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtOSAxOCA2LTYtNi02Jywga2V5OiAnbXRoaHdxJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVFV0TmkwMkxUWWdOaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi11cFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25VcCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25VcCcsIFtbJ3BhdGgnLCB7IGQ6ICdtMTggMTUtNi02LTYgNicsIGtleTogJzE1M3VkeicgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblVwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNMZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVEVnTVRjdE5TMDFJRFV0TlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UY3ROUzAxSURVdE5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNMZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNMZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTEgMTctNS01IDUtNScsIGtleTogJzEzemhhZicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xOCAxNy01LTUgNS01Jywga2V5OiAnaDhhOGV0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc0xlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUF4TnlBMUxUVXROUzAxSWlBdlBnb2dJRHh3WVhSb0lHUTlJbTB4TXlBeE55QTFMVFV0TlMwMUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNSaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDE3IDUtNS01LTUnLCBrZXk6ICd4bmp3cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMyAxNyA1LTUtNS01Jywga2V5OiAnMTd4bW1mJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlQWxlcnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGJHbHVaU0I0TVQwaU1USWlJSGd5UFNJeE1pSWdlVEU5SWpnaUlIa3lQU0l4TWlJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRJaUlIZ3lQU0l4TWk0d01TSWdlVEU5SWpFMklpQjVNajBpTVRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1hbGVydFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZUFsZXJ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlQWxlcnQnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxMicsIHgyOiAnMTInLCB5MTogJzgnLCB5MjogJzEyJywga2V5OiAnMXBrZXVoJyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzEyJywgeDI6ICcxMi4wMScsIHkxOiAnMTYnLCB5MjogJzE2Jywga2V5OiAnNGRmcTkwJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVBbGVydDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZUhlbHBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TNHdPU0E1WVRNZ015QXdJREFnTVNBMUxqZ3pJREZqTUNBeUxUTWdNeTB6SURNaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeUlERTNhQzR3TVNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1oZWxwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlSGVscCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZUhlbHAnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgMycsIGtleTogJzF1NzczcycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN2guMDEnLCBrZXk6ICdwMzJwMDUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZUhlbHA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGUgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGUnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29weVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UUWlJR2hsYVdkb2REMGlNVFFpSUhnOUlqZ2lJSGs5SWpnaUlISjRQU0l5SWlCeWVUMGlNaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5OQ0F4Tm1NdE1TNHhJREF0TWkwdU9TMHlMVEpXTkdNd0xURXVNUzQ1TFRJZ01pMHlhREV3WXpFdU1TQXdJRElnTGprZ01pQXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3B5XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29weSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NvcHknLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxNCcsIGhlaWdodDogJzE0JywgeDogJzgnLCB5OiAnOCcsIHJ4OiAnMicsIHJ5OiAnMicsIGtleTogJzE3anllYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ000IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDInLCBrZXk6ICd6aXg5dWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcHk7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3JuZXJEb3duTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXeHBibVVnY0c5cGJuUnpQU0k1SURFd0lEUWdNVFVnT1NBeU1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOSFkzWVRRZ05DQXdJREFnTVMwMElEUklOQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29ybmVyLWRvd24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcm5lckRvd25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ29ybmVyRG93bkxlZnQnLCBbXG4gIFsncG9seWxpbmUnLCB7IHBvaW50czogJzkgMTAgNCAxNSA5IDIwJywga2V5OiAncjNqcHJ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDQnLCBrZXk6ICc2bzViN2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcm5lckRvd25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgRmlsdGVyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVdkdmJpQndiMmx1ZEhNOUlqSXlJRE1nTWlBeklERXdJREV5TGpRMklERXdJREU1SURFMElESXhJREUwSURFeUxqUTJJREl5SURNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2ZpbHRlclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEZpbHRlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ0ZpbHRlcicsIFtcbiAgWydwb2x5Z29uJywgeyBwb2ludHM6ICcyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzJywga2V5OiAnMXlnNzdmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBHcmlwVmVydGljYWxcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSTVJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpVaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJakU1SWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlNVFVpSUdONVBTSTFJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1Ua2lJSEk5SWpFaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2dyaXAtdmVydGljYWxcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBHcmlwVmVydGljYWwgPSBjcmVhdGVMdWNpZGVJY29uKCdHcmlwVmVydGljYWwnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdmN0Z2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICdocDB0Y2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZmtqamY2JyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdG1haWonIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnMTlsMjhlJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdmNHpvajMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdyaXBWZXJ0aWNhbDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEhhc2hcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGJHbHVaU0I0TVQwaU5DSWdlREk5SWpJd0lpQjVNVDBpT1NJZ2VUSTlJamtpSUM4K0NpQWdQR3hwYm1VZ2VERTlJalFpSUhneVBTSXlNQ0lnZVRFOUlqRTFJaUI1TWowaU1UVWlJQzgrQ2lBZ1BHeHBibVVnZURFOUlqRXdJaUI0TWowaU9DSWdlVEU5SWpNaUlIa3lQU0l5TVNJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRZaUlIZ3lQU0l4TkNJZ2VURTlJak1pSUhreVBTSXlNU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvaGFzaFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEhhc2ggPSBjcmVhdGVMdWNpZGVJY29uKCdIYXNoJywgW1xuICBbJ2xpbmUnLCB7IHgxOiAnNCcsIHgyOiAnMjAnLCB5MTogJzknLCB5MjogJzknLCBrZXk6ICc0bGh0Y3QnIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnNCcsIHgyOiAnMjAnLCB5MTogJzE1JywgeTI6ICcxNScsIGtleTogJ3Z5dTBrZCcgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxMCcsIHgyOiAnOCcsIHkxOiAnMycsIHkyOiAnMjEnLCBrZXk6ICcxZ2dwOG8nIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnMTYnLCB4MjogJzE0JywgeTE6ICczJywgeTI6ICcyMScsIGtleTogJ3dleWNncCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgSGFzaDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVJvdW5kXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaTQxT0RZZ01UY3VOREUwUVRJZ01pQXdJREFnTUNBeUlERTRMamd5T0ZZeU1XRXhJREVnTUNBd0lEQWdNU0F4YUROaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhREZoTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFDNHhOekpoTWlBeUlEQWdNQ0F3SURFdU5ERTBMUzQxT0Rac0xqZ3hOQzB1T0RFMFlUWXVOU0EyTGpVZ01DQXhJREF0TkMwMGVpSWdMejRLSUNBOFkybHlZMnhsSUdONFBTSXhOaTQxSWlCamVUMGlOeTQxSWlCeVBTSXVOU0lnWm1sc2JEMGlZM1Z5Y21WdWRFTnZiRzl5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMva2V5LXJvdW5kXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgS2V5Um91bmQgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXlSb3VuZCcsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIuNTg2IDE3LjQxNEEyIDIgMCAwIDAgMiAxOC44MjhWMjFhMSAxIDAgMCAwIDEgMWgzYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWguMTcyYTIgMiAwIDAgMCAxLjQxNC0uNTg2bC44MTQtLjgxNGE2LjUgNi41IDAgMSAwLTQtNHonLFxuICAgICAga2V5OiAnMXM2dDd0JyxcbiAgICB9LFxuICBdLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNi41JywgY3k6ICc3LjUnLCByOiAnLjUnLCBmaWxsOiAnY3VycmVudENvbG9yJywga2V5OiAndzBla3BnJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBLZXlSb3VuZDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVdU5TQTNMalVnTWk0eklESXVNMkV4SURFZ01DQXdJREFnTVM0MElEQnNNaTR4TFRJdU1XRXhJREVnTUNBd0lEQWdNQzB4TGpSTU1Ua2dOQ0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNakVnTWkwNUxqWWdPUzQySWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpjdU5TSWdZM2s5SWpFMUxqVWlJSEk5SWpVdU5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXkgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXknLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNS41IDcuNSAyLjMgMi4zYTEgMSAwIDAgMCAxLjQgMGwyLjEtMi4xYTEgMSAwIDAgMCAwLTEuNEwxOSA0Jywga2V5OiAnZzBmbGRrJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTIxIDItOS42IDkuNicsIGtleTogJzFqMGhvOCcgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzcuNScsIGN5OiAnMTUuNScsIHI6ICc1LjUnLCBrZXk6ICd5cWIzaHInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1haWxcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNakFpSUdobGFXZG9kRDBpTVRZaUlIZzlJaklpSUhrOUlqUWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weU1pQTNMVGd1T1RjZ05TNDNZVEV1T1RRZ01TNDVOQ0F3SURBZ01TMHlMakEySURCTU1pQTNJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tYWlsXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWFpbCA9IGNyZWF0ZUx1Y2lkZUljb24oJ01haWwnLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcyMCcsIGhlaWdodDogJzE2JywgeDogJzInLCB5OiAnNCcsIHJ4OiAnMicsIGtleTogJzE4bjNrMScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yMiA3LTguOTcgNS43YTEuOTQgMS45NCAwIDAgMS0yLjA2IDBMMiA3Jywga2V5OiAnMW9jcmczJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNYWlsO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWF4aW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWXpJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0VmpWaE1pQXlJREFnTUNBd0xUSXRNbWd0TXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5uWXpZVElnTWlBd0lEQWdNQ0F5SURKb015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakZvTTJFeUlESWdNQ0F3SURBZ01pMHlkaTB6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWF4aW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNYXhpbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01heGltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzSDVhMiAyIDAgMCAwLTIgMnYzJywga2V5OiAnMWRjbWl0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhWNWEyIDIgMCAwIDAtMi0yaC0zJywga2V5OiAnMWU0Z3QzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZ2M2EyIDIgMCAwIDAgMiAyaDMnLCBrZXk6ICd3c2w1c2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjFoM2EyIDIgMCAwIDAgMi0ydi0zJywga2V5OiAnMTh0cmVrJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNYXhpbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1pbmltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6ZGpOaE1pQXlJREFnTUNBeExUSWdNa2d6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNGFDMHpZVElnTWlBd0lEQWdNUzB5TFRKV015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObWd6WVRJZ01pQXdJREFnTVNBeUlESjJNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGMkxUTmhNaUF5SURBZ01DQXhJREl0TW1neklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21pbmltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWluaW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNaW5pbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM3YzYTIgMiAwIDAgMS0yIDJIMycsIGtleTogJ2hvaGJ0cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4aC0zYTIgMiAwIDAgMS0yLTJWMycsIGtleTogJzVqdzFmMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2aDNhMiAyIDAgMCAxIDIgMnYzJywga2V5OiAnMTk4dHZyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxdi0zYTIgMiAwIDAgMSAyLTJoMycsIGtleTogJ3BoOG14cCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWluaW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE9Fd3hNaUF5TWt3eE5pQXhPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVEb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxOEwxMiAyMkwxNiAxOCcsIGtleTogJ2Nza3ZmdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVVcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBMlRERXlJREpNTVRZZ05pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlVXAnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDZMMTIgMkwxNiA2Jywga2V5OiAnMXl2a3l4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVVcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdENsb3NlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMklERTFMVE10TXlBekxUTWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0Q2xvc2UgPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRDbG9zZScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNiAxNS0zLTMgMy0zJywga2V5OiAnMTR5OTl6JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRDbG9zZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdE9wZW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUwSURrZ015QXpMVE1nTXlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtb3BlblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdE9wZW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRPcGVuJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE0IDkgMyAzLTMgMycsIGtleTogJzgwMTBlZScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0T3BlbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBob25lXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaklnTVRZdU9USjJNMkV5SURJZ01DQXdJREV0TWk0eE9DQXlJREU1TGpjNUlERTVMamM1SURBZ01DQXhMVGd1TmpNdE15NHdOeUF4T1M0MUlERTVMalVnTUNBd0lERXROaTAySURFNUxqYzVJREU1TGpjNUlEQWdNQ0F4TFRNdU1EY3RPQzQyTjBFeUlESWdNQ0F3SURFZ05DNHhNU0F5YUROaE1pQXlJREFnTUNBeElESWdNUzQzTWlBeE1pNDROQ0F4TWk0NE5DQXdJREFnTUNBdU55QXlMamd4SURJZ01pQXdJREFnTVMwdU5EVWdNaTR4TVV3NExqQTVJRGt1T1RGaE1UWWdNVFlnTUNBd0lEQWdOaUEyYkRFdU1qY3RNUzR5TjJFeUlESWdNQ0F3SURFZ01pNHhNUzB1TkRVZ01USXVPRFFnTVRJdU9EUWdNQ0F3SURBZ01pNDRNUzQzUVRJZ01pQXdJREFnTVNBeU1pQXhOaTQ1TW5vaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bob25lXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGhvbmUgPSBjcmVhdGVMdWNpZGVJY29uKCdQaG9uZScsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6JyxcbiAgICAgIGtleTogJ2ZvaXFyNScsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaG9uZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpbk9mZlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFVnT1M0ek5GWTNZVEVnTVNBd0lEQWdNU0F4TFRFZ01pQXlJREFnTUNBd0lEQXRORWczTGpnNUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weUlESWdNakFnTWpBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRrZ09YWXhMamMyWVRJZ01pQXdJREFnTVMweExqRXhJREV1Tnpsc0xURXVOemd1T1VFeUlESWdNQ0F3SURBZ05TQXhOUzR5TkZZeE5tRXhJREVnTUNBd0lEQWdNU0F4YURFeElpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bpbi1vZmZcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW5PZmYgPSBjcmVhdGVMdWNpZGVJY29uKCdQaW5PZmYnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE1IDkuMzRWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRINy44OScsIGtleTogJ3pud256cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yIDIgMjAgMjAnLCBrZXk6ICcxb29ld3knIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSA5djEuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTEnLFxuICAgICAga2V5OiAnYzlxaG0yJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbk9mZjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PU0F4TUM0M05tRXlJRElnTUNBd0lERXRNUzR4TVNBeExqYzViQzB4TGpjNExqbEJNaUF5SURBZ01DQXdJRFVnTVRVdU1qUldNVFpoTVNBeElEQWdNQ0F3SURFZ01XZ3hNbUV4SURFZ01DQXdJREFnTVMweGRpMHVOelpoTWlBeUlEQWdNQ0F3TFRFdU1URXRNUzQzT1d3dE1TNDNPQzB1T1VFeUlESWdNQ0F3SURFZ01UVWdNVEF1TnpaV04yRXhJREVnTUNBd0lERWdNUzB4SURJZ01pQXdJREFnTUNBd0xUUklPR0V5SURJZ01DQXdJREFnTUNBMElERWdNU0F3SURBZ01TQXhJREY2SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluID0gY3JlYXRlTHVjaWRlSWNvbignUGluJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDEwLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LS43NmEyIDIgMCAwIDAtMS4xMS0xLjc5bC0xLjc4LS45QTIgMiAwIDAgMSAxNSAxMC43NlY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg4YTIgMiAwIDAgMCAwIDQgMSAxIDAgMCAxIDEgMXonLFxuICAgICAga2V5OiAnMW5rejhiJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFJlZnJlc2hDd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE1tRTVJRGtnTUNBd0lERWdPUzA1SURrdU56VWdPUzQzTlNBd0lEQWdNU0EyTGpjMElESXVOelJNTWpFZ09DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qRWdNM1kxYUMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQXhNbUU1SURrZ01DQXdJREV0T1NBNUlEa3VOelVnT1M0M05TQXdJREFnTVMwMkxqYzBMVEl1TnpSTU15QXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5PQ0F4TmtnemRqVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9yZWZyZXNoLWN3XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUmVmcmVzaEN3ID0gY3JlYXRlTHVjaWRlSWNvbignUmVmcmVzaEN3JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOCcsIGtleTogJ3Y5aDV2YycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAzdjVoLTUnLCBrZXk6ICcxcTd0bzAnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTYnLCBrZXk6ICczdWlmbDMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxNkgzdjUnLCBrZXk6ICcxY3Y2NzgnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnJlc2hDdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFRhYmxlMlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT1NBelNEVmhNaUF5SURBZ01DQXdMVElnTW5ZMGJUWXRObWd4TUdFeUlESWdNQ0F3SURFZ01pQXlkalJOT1NBemRqRTRiVEFnTUdneE1HRXlJRElnTUNBd0lEQWdNaTB5VmpsTk9TQXlNVWcxWVRJZ01pQXdJREFnTVMweUxUSldPVzB3SURCb01UZ2lJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy90YWJsZS0yXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgVGFibGUyID0gY3JlYXRlTHVjaWRlSWNvbignVGFibGUyJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAzSDVhMiAyIDAgMCAwLTIgMnY0bTYtNmgxMGEyIDIgMCAwIDEgMiAydjRNOSAzdjE4bTAgMGgxMGEyIDIgMCAwIDAgMi0yVjlNOSAyMUg1YTIgMiAwIDAgMS0yLTJWOW0wIDBoMTgnLFxuICAgICAga2V5OiAnZ3VnajgzJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlMjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFVzZXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1Ua2dNakYyTFRKaE5DQTBJREFnTUNBd0xUUXRORWc1WVRRZ05DQXdJREFnTUMwMElEUjJNaUlnTHo0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJamNpSUhJOUlqUWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy91c2VyXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgVXNlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ1VzZXInLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyJywga2V5OiAnOTc1a2VsJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzcnLCByOiAnNCcsIGtleTogJzE3eXMwZCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgVXNlcjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFhcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1UZ2dOaUEySURFNElpQXZQZ29nSUR4d1lYUm9JR1E5SW0wMklEWWdNVElnTVRJaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3hcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBYID0gY3JlYXRlTHVjaWRlSWNvbignWCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTE4IDYgNiAxOCcsIGtleTogJzFibDVmOCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ202IDYgMTIgMTInLCBrZXk6ICdkOGJrNnYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFg7XG4iLCAiaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBiYWRnZVZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1weC0yLjUgcHMtcHktMC41IHBzLXRleHQteHMgcHMtZm9udC1zZW1pYm9sZCBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0yIGZvY3VzOnBzLXJpbmctcmluZyBmb2N1czpwcy1yaW5nLW9mZnNldC0yXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzgwXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgIFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvODBcIixcbiAgICAgICAgb3V0bGluZTogXCJwcy10ZXh0LWZvcmVncm91bmRcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhZGdlUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIFZhcmlhbnRQcm9wczx0eXBlb2YgYmFkZ2VWYXJpYW50cz4ge31cblxuZnVuY3Rpb24gQmFkZ2UoeyBjbGFzc05hbWUsIHZhcmlhbnQsIC4uLnByb3BzIH06IEJhZGdlUHJvcHMpIHtcbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbihiYWRnZVZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgQmFkZ2UsIGJhZGdlVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJ1dHRvblZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1nYXAtMiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvOTBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6IFwicHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS85MFwiLFxuICAgICAgICBvdXRsaW5lOlxuICAgICAgICAgIFwicHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBnaG9zdDogXCJob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBsaW5rOiBcInBzLXRleHQtcHJpbWFyeSBwcy11bmRlcmxpbmUtb2Zmc2V0LTQgaG92ZXI6cHMtdW5kZXJsaW5lXCIsXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWgtOSBwcy1weC00IHBzLXB5LTJcIixcbiAgICAgICAgeHM6IFwicHMtaC02IHBzLXJvdW5kZWQtbWQgcHMtcHgtMiBwcy10ZXh0LXhzXCIsXG4gICAgICAgIHNtOiBcInBzLWgtOCBwcy1yb3VuZGVkLW1kIHBzLXB4LTMgcHMtdGV4dC14c1wiLFxuICAgICAgICBsZzogXCJwcy1oLTEwIHBzLXJvdW5kZWQtbWQgcHMtcHgtOFwiLFxuICAgICAgICBpY29uOiBcInBzLWgtOSBwcy13LTlcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgICAgc2l6ZTogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uUHJvcHNcbiAgZXh0ZW5kcyBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz4ge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQnV0dG9uUHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIHZhcmlhbnQsIHNpemUsIGFzQ2hpbGQgPSBmYWxzZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcbiAgICByZXR1cm4gPENvbXAgY2xhc3NOYW1lPXtjbihidXR0b25WYXJpYW50cyh7IHZhcmlhbnQsIHNpemUsIGNsYXNzTmFtZSB9KSl9IHJlZj17cmVmfSB7Li4ucHJvcHN9IC8+O1xuICB9LFxuKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbiwgYnV0dG9uVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFBvcG92ZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFBvcG92ZXJUcmlnZ2VyID0gUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBQb3BvdmVyQW5jaG9yID0gUG9wb3ZlclByaW1pdGl2ZS5BbmNob3I7XG5cbmNvbnN0IFBvcG92ZXJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtdy03MiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtNCBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtcG9wb3Zlci1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFBvcG92ZXIsIFBvcG92ZXJUcmlnZ2VyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlckFuY2hvciB9O1xuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgYWRkUm93SWRUb1Jlc3VsdCB9IGZyb20gXCIuL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZUluc2VydCgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiaW5zZXJ0XCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5pbnNlcnQoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWRkUm93SWRUb1Jlc3VsdChyZXN1bHQsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MobmV3RGF0YSkge1xuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGE8QWRhcHRlclF1ZXJ5UmVzdWx0PihcbiAgICAgICAge1xuICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAvLyBoZXJlIHdlIHBhcnRpYWxseSBtYXRjaCB0aGUgcXVlcnkga2V5IHRvIGdldCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICAgIH0sXG4gICAgICAgIChvbGREYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKG9sZERhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG9sZERhdGE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9sZERhdGEsXG4gICAgICAgICAgICByb3dzOiBbLi4ubmV3RGF0YS5yb3dzLCAuLi5vbGREYXRhLnJvd3NdLFxuICAgICAgICAgIH0gc2F0aXNmaWVzIEFkYXB0ZXJRdWVyeVJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IGluZmVyUm93RmlsdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuZnVuY3Rpb24gZ2V0Um93SWQocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IGlkID0ge1xuICAgIGZpbHRlcjogaW5mZXJSb3dGaWx0ZXIocm93LCB0YWJsZS5jb2x1bW5zKSxcbiAgICB0YWJsZTogYCR7dGFibGUuc2NoZW1hfS4ke3RhYmxlLm5hbWV9YCxcbiAgfTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaWQpO1xufVxuXG5mdW5jdGlvbiBhZGRSb3dJZFRvUm93KHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRhYmxlOiBUYWJsZSkge1xuICByZXR1cm4geyAuLi5yb3csIF9fcHNfcm93aWQ6IGdldFJvd0lkKHJvdywgdGFibGUpIH07XG59XG5cbnR5cGUgQWRhcHRlclJlc3VsdCA9IHtcbiAgcm93PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJvd3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJvd0lkVG9SZXN1bHQ8VCBleHRlbmRzIEFkYXB0ZXJSZXN1bHQ+KHJlc3VsdDogVCwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IHsgcm93LCByb3dzIH0gPSByZXN1bHQ7XG5cbiAgaWYgKHJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3c6IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkgfTtcbiAgfVxuICBpZiAocm93cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3dzOiByb3dzLm1hcCgocm93KSA9PiBhZGRSb3dJZFRvUm93KHJvdywgdGFibGUpKSB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEZpbHRlckdyb3VwLCBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMge1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgc29ydE9yZGVyOiBTb3J0T3JkZXJJdGVtW107XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHByb3BzOiBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMpIHtcbiAgY29uc3QgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIGZpbHRlciB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBlbmFibGVkOiBCb29sZWFuKGFjdGl2ZVRhYmxlKSxcbiAgICBnY1RpbWU6IDAsXG4gICAgcGxhY2Vob2xkZXJEYXRhKHByZXZpb3VzRGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkLCBwcmV2aW91c1F1ZXJ5KSB7XG4gICAgICBjb25zdCBbLCBzY2hlbWEsICwgdGFibGVdID0gcHJldmlvdXNRdWVyeT8ucXVlcnlLZXkgfHwgW107XG5cbiAgICAgIGlmIChzY2hlbWEgIT09IGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgdGFibGUgIT09IGFjdGl2ZVRhYmxlPy5uYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0YTtcbiAgICB9LFxuICAgIGFzeW5jIHF1ZXJ5Rm4oeyBzaWduYWwgfSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGFkYXB0ZXIucXVlcnkoXG4gICAgICAgIHsgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydE9yZGVyLCB0YWJsZTogYWN0aXZlVGFibGUhLCBmaWx0ZXIgfSxcbiAgICAgICAgeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdHMsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1xuICAgICAgXCJzY2hlbWFcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgbnVsbCxcbiAgICAgIFwidGFibGVcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5uYW1lIHx8IG51bGwsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInNvcnRPcmRlclwiLFxuICAgICAgc29ydE9yZGVyLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgfHwgXCJuYXR1cmFsXCIsXG4gICAgICBcInBhZ2VJbmRleFwiLFxuICAgICAgcGFnZUluZGV4LFxuICAgICAgXCJwYWdlU2l6ZVwiLFxuICAgICAgcGFnZVNpemUsXG4gICAgICBcImZpbHRlclwiLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSxcbiAgICBdLFxuICAgIHN0YWxlVGltZTogSW5maW5pdHksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHR5cGUgUXVlcnlDbGllbnQsIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEFkYXB0ZXJVcGRhdGVEZXRhaWxzLCBBZGFwdGVyVXBkYXRlT3B0aW9ucywgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBpbmZlclJvd0ZpbHRlciB9IGZyb20gXCIuLi8uLi9kYXRhL3F1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVVwZGF0ZVBhcmFtcyB7XG4gIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzO1xuICBvcHRpb25zOiBBZGFwdGVyVXBkYXRlT3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIGNvbnN0IHF1ZXJ5S2V5UHJlZml4ID0gW1wic2NoZW1hXCIsIGFjdGl2ZVRhYmxlPy5zY2hlbWEgPz8gbnVsbCwgXCJ0YWJsZVwiLCBhY3RpdmVUYWJsZT8ubmFtZSA/PyBudWxsXSBhcyBjb25zdDtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChwYXJhbXM6IFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLnVwZGF0ZShwYXJhbXMuZGV0YWlscywgcGFyYW1zLm9wdGlvbnMpO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBtdXRhdGlvbktleTogWy4uLnF1ZXJ5S2V5UHJlZml4LCBcInVwZGF0ZVwiXSxcbiAgICBvbkVycm9yKGVycm9yLCBwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgY2hhbmdlcywgcm93IH0gPSBwYXJhbXMuZGV0YWlscztcblxuICAgICAgb25FcnJvcihlcnJvcik7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IGNoYW5nZWRSb3cgPSB7IC4uLnJvdywgLi4uY2hhbmdlcyB9O1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIoY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIHJldmVydENoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNhY2hlZFJvdyxcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKGNoYW5nZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKG9yaWdpbmFsVmFsdWVzLCBjb2x1bW5OYW1lKSA9PiAoeyAuLi5vcmlnaW5hbFZhbHVlcywgW2NvbHVtbk5hbWVdOiByb3dbY29sdW1uTmFtZV0gfSksXG4gICAgICAgICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbk11dGF0ZShwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgZGV0YWlscyB9ID0gcGFyYW1zO1xuXG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IHJvdzogdW5jaGFuZ2VkUm93IH0gPSBkZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIodW5jaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlDaGFuZ2VzKGNhY2hlZFJvdykge1xuICAgICAgICAgIHJldHVybiB7IC4uLmNhY2hlZFJvdywgLi4uZGV0YWlscy5jaGFuZ2VzIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhyZXN1bHQsIHBhcmFtcykge1xuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlSZWFsRGF0YVdoZW5GcmVzaGVyKGNhY2hlZFJvdykge1xuICAgICAgICAgIGNvbnN0IHsgX19wc191cGRhdGVkX2F0X18gfSA9IGNhY2hlZFJvdztcbiAgICAgICAgICBjb25zdCB7IHJvdyB9ID0gcmVzdWx0O1xuXG4gICAgICAgICAgLy8gcmVzdWx0IHJvdyBpcyBzdGFsZS5cbiAgICAgICAgICBpZiAoX19wc191cGRhdGVkX2F0X18gIT0gbnVsbCAmJiByb3cuX19wc191cGRhdGVkX2F0X18gPD0gX19wc191cGRhdGVkX2F0X18pIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSb3c7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5yb3cgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gb3ZlcndyaXRlQ2FjaGVkUm93KHBhcmFtczoge1xuICBnZXRGaW5kZXJGbjogKCkgPT4gKGNhY2hlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgdXBkYXRlckZuOiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5Q2xpZW50OiBRdWVyeUNsaWVudDtcbn0pIHtcbiAgY29uc3QgeyBnZXRGaW5kZXJGbiwgcXVlcnlDbGllbnQsIHRhYmxlLCB1cGRhdGVyRm4gfSA9IHBhcmFtcztcblxuICBsZXQgZmluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRGaW5kZXJGbj47XG5cbiAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGEoXG4gICAgeyBleGFjdDogZmFsc2UsIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgdGFibGUuc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLm5hbWUsIFwicXVlcnlcIl0gfSxcbiAgICAoY2FjaGVkUmVzdWx0OiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgeyByb3dzOiBjYWNoZWRSb3dzID0gW10gfSA9IGNhY2hlZFJlc3VsdCB8fCB7fTtcblxuICAgICAgaWYgKGNhY2hlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhY2hlZFJvd0luZGV4ID0gY2FjaGVkUm93cy5maW5kSW5kZXgoKGZpbmRlciA/Pz0gZ2V0RmluZGVyRm4oKSkpO1xuXG4gICAgICBpZiAoY2FjaGVkUm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1JvdyA9IHVwZGF0ZXJGbihjYWNoZWRSb3dzW2NhY2hlZFJvd0luZGV4XSEpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jYWNoZWRSZXN1bHQhLFxuICAgICAgICByb3dzOiBbLi4uY2FjaGVkUm93cy5zbGljZSgwLCBjYWNoZWRSb3dJbmRleCksIG5ld1JvdywgLi4uY2FjaGVkUm93cy5zbGljZShjYWNoZWRSb3dJbmRleCArIDEpXSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmlsdGVyOiBGaWx0ZXJHcm91cCA9IHtcbiAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICBmaWx0ZXJzOiBbXSxcbiAgYWZ0ZXI6IFwiYW5kXCIsXG4gIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxufTtcblxuY29uc3QgY291bnRGaWx0ZXJzUmVjdXJzaXZlID0gKGZpbHRlckdyb3VwOiBGaWx0ZXJHcm91cCk6IG51bWJlciA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlckdyb3VwLmZpbHRlcnMpIHtcbiAgICBpZiAoZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIC8vIE9ubHkgY291bnQgZmlsdGVycyB0aGF0IGhhdmUgYSBub24tZW1wdHkgY29sdW1uIHNlbGVjdGVkXG4gICAgICBpZiAoZmlsdGVyLmNvbHVtbi50cmltKCkpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZpbHRlci5raW5kID09PSBcIkZpbHRlckdyb3VwXCIpIHtcbiAgICAgIGNvdW50ICs9IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShmaWx0ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY291bnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRmlsdGVyaW5nKCkge1xuICBjb25zdCBbZmlsdGVyUGFyYW0sIHNldEZpbHRlclBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJmaWx0ZXJcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogSlNPTi5zdHJpbmdpZnkoZGVmYXVsdEZpbHRlciksXG4gIH0pO1xuXG4gIGNvbnN0IGFwcGxpZWRGaWx0ZXIgPSB1c2VNZW1vKCgpID0+IEpTT04ucGFyc2UoZmlsdGVyUGFyYW0pIGFzIEZpbHRlckdyb3VwLCBbZmlsdGVyUGFyYW1dKTtcbiAgY29uc3Qgc2V0QXBwbGllZEZpbHRlciA9IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkIHNldEZpbHRlclBhcmFtKEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xuXG4gIGNvbnN0IFtlZGl0aW5nRmlsdGVyLCBzZXRFZGl0aW5nRmlsdGVyXSA9IHVzZVN0YXRlPEZpbHRlckdyb3VwPihhcHBsaWVkRmlsdGVyKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gIH0sIFthcHBsaWVkRmlsdGVyXSk7XG5cbiAgY29uc3QgdG90YWxFZGl0aW5nRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGVkaXRpbmdGaWx0ZXIpLCBbZWRpdGluZ0ZpbHRlcl0pO1xuXG4gIHJldHVybiB7XG4gICAgYXBwbGllZEZpbHRlcixcbiAgICBzZXRBcHBsaWVkRmlsdGVyLFxuICAgIGVkaXRpbmdGaWx0ZXIsXG4gICAgc2V0RWRpdGluZ0ZpbHRlcixcbiAgICB0b3RhbEVkaXRpbmdGaWx0ZXJzLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbi8qKlxuICogSG9vayB0byBrbm93IHdoZXRoZXIgYW4gaW5zZXJ0IGlzIGN1cnJlbnRseSBvbmdvaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSXNJbnNlcnRpbmcoKSB7XG4gIHJldHVybiB1c2VJc011dGF0aW5nKHtcbiAgICBwcmVkaWNhdGUoeyBvcHRpb25zOiB7IG11dGF0aW9uS2V5IH0gfSkge1xuICAgICAgcmV0dXJuIG11dGF0aW9uS2V5Py5bNF0gPT09IFwiaW5zZXJ0XCI7XG4gICAgfSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBPbkNoYW5nZUZuLCBQYWdpbmF0aW9uU3RhdGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBrZXlNYXAsIHBhcnNlQXNJbmRleCwgcGFyc2VBc0ludGVnZXIsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG4vLyBUT0RPOiBldmVudHVhbGx5IGNvbmZpZ3VyYWJsZSAvIGNvbnRyb2xsZWQgYnkgdXNlci4gYmFieSBzdGVwcy4uXG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDI1O1xuXG5jb25zdCBwYWdpbmF0aW9uUGFyc2VycyA9IGtleU1hcCh7XG4gIHBhZ2VJbmRleDogcGFyc2VBc0luZGV4LndpdGhEZWZhdWx0KDApLCAvLyB6ZXJvLWJhc2VkXG4gIHBhZ2VTaXplOiBwYXJzZUFzSW50ZWdlci53aXRoRGVmYXVsdChERUZBVUxUX1BBR0VfU0laRSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhZ2luYXRpb24oKSB7XG4gIGNvbnN0IFt7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSwgc2V0UGFnaW5hdGlvbl0gPSB1c2VRdWVyeVN0YXRlcyhwYWdpbmF0aW9uUGFyc2Vycyk7XG5cbiAgLy8gQ29tcGF0aWJsZSB3aXRoIFRhblN0YWNrIFRhYmxlJ3MgT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+XG4gIGNvbnN0IHNldFBhZ2luYXRpb25TdGF0ZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+ID0gdXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXJPclZhbHVlKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZXJPclZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKChvbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHVwZGF0ZXJPclZhbHVlKG9sZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZ2VJbmRleDogbmV3U3RhdGUucGFnZUluZGV4LFxuICAgICAgICAgICAgcGFnZVNpemU6IG5ld1N0YXRlLnBhZ2VTaXplLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKHtcbiAgICAgICAgICBwYWdlSW5kZXg6IHVwZGF0ZXJPclZhbHVlLnBhZ2VJbmRleCxcbiAgICAgICAgICBwYWdlU2l6ZTogdXBkYXRlck9yVmFsdWUucGFnZVNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3NldFBhZ2luYXRpb25dLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgcGFnaW5hdGlvblN0YXRlOiB7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSxcbiAgICBzZXRQYWdpbmF0aW9uU3RhdGUsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVEZWxldGUgfSBmcm9tIFwiLi91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZVwiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuL3VzZS1wYWdpbmF0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3Rpb24oZGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSk7XG4gIGNvbnN0IGlzU2VsZWN0aW5nID0gT2JqZWN0LmtleXMocm93U2VsZWN0aW9uU3RhdGUpLmxlbmd0aCAhPT0gMDtcbiAgY29uc3QgeyBtdXRhdGUgfSA9IHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KSwgW2FjdGl2ZVRhYmxlLCBwYWdpbmF0aW9uU3RhdGUucGFnZUluZGV4XSk7XG5cbiAgZnVuY3Rpb24gZGVsZXRlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IHJvd3MgPSBkYXRhPy5yb3dzLmZpbHRlcigocm93KSA9PiB7XG4gICAgICByZXR1cm4gcm93U2VsZWN0aW9uU3RhdGVbcm93Ll9fcHNfcm93aWQgYXMgc3RyaW5nXTtcbiAgICB9KTtcblxuICAgIG11dGF0ZShyb3dzID8/IFtdLCB7XG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KTtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZWxldGVTZWxlY3Rpb24sXG4gICAgc2V0Um93U2VsZWN0aW9uU3RhdGUsXG4gICAgcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgaXNTZWxlY3RpbmcsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiZGVsZXRlXCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5kZWxldGUoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgYXN5bmMgb25TdWNjZXNzKCkge1xuICAgICAgYXdhaXQgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoe1xuICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNvcnRpbmcoKSB7XG4gIC8vIFVzZSBudXFzIHRvIG1hbmFnZSBzb3J0aW5nIHN0YXRlIGluIFVSTFxuICBjb25zdCBbc29ydFBhcmFtLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcInNvcnRcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogXCJcIixcbiAgfSk7XG5cbiAgLy8gUGFyc2Ugc29ydGluZyBmcm9tIFVSTCBwYXJhbWV0ZXJcbiAgY29uc3QgcGFyc2VTb3J0aW5nID0gKHNvcnRQYXJhbTogc3RyaW5nIHwgbnVsbCk6IFNvcnRPcmRlckl0ZW1bXSA9PiB7XG4gICAgaWYgKCFzb3J0UGFyYW0pIHJldHVybiBbXTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBGb3JtYXQ6IGNvbHVtbjpkaXJlY3Rpb24sY29sdW1uOmRpcmVjdGlvblxuICAgICAgcmV0dXJuIHNvcnRQYXJhbVxuICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dID0gaXRlbS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgaWYgKCFjb2x1bW4gfHwgIWRpcmVjdGlvbiB8fCAhW1wiYXNjXCIsIFwiZGVzY1wiXS5pbmNsdWRlcyhkaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgY29sdW1uLCBkaXJlY3Rpb246IGRpcmVjdGlvbiBhcyBcImFzY1wiIHwgXCJkZXNjXCIgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBTb3J0T3JkZXJJdGVtW107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBwYXJzZSBzb3J0aW5nIHBhcmFtZXRlcjpcIiwgZSk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuXG4gIC8vIENyZWF0ZSBhIHN0YWJsZSBzb3J0aW5nIHN0YXRlIHRoYXQncyBkZXJpdmVkIGZyb20gVVJMIHBhcmFtZXRlcnNcbiAgY29uc3QgW3NvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlXSA9IHVzZVN0YXRlKCgpID0+IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pKTtcblxuICAvLyBLZWVwIGludGVybmFsIHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIFVSTCBwYXJhbWV0ZXJzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV3U29ydGluZ1N0YXRlID0gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSk7XG4gICAgc2V0U29ydGluZ1N0YXRlKG5ld1NvcnRpbmdTdGF0ZSk7XG4gIH0sIFtzb3J0UGFyYW1dKTtcblxuICAvLyBVcGRhdGUgVVJMIHdoZW4gc29ydGluZyBjaGFuZ2VzIGZyb20gdGhlIFVJXG4gIGNvbnN0IGhhbmRsZVNvcnRpbmdDaGFuZ2UgPSAobmV3U3RhdGU6IFNvcnRPcmRlckl0ZW1bXSB8ICgob2xkOiBTb3J0T3JkZXJJdGVtW10pID0+IFNvcnRPcmRlckl0ZW1bXSkpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFN0YXRlID0gdHlwZW9mIG5ld1N0YXRlID09PSBcImZ1bmN0aW9uXCIgPyBuZXdTdGF0ZShzb3J0aW5nU3RhdGUpIDogbmV3U3RhdGU7XG4gICAgc2V0U29ydGluZ1N0YXRlKHJlc29sdmVkU3RhdGUpO1xuXG4gICAgLy8gU2VyaWFsaXplIHNvcnRpbmcgc3RhdGUgdG8gVVJMIHBhcmFtZXRlclxuICAgIGNvbnN0IHNvcnRTdHJpbmcgPVxuICAgICAgcmVzb2x2ZWRTdGF0ZS5sZW5ndGggPiAwID8gcmVzb2x2ZWRTdGF0ZS5tYXAoKGl0ZW0pID0+IGAke2l0ZW0uY29sdW1ufToke2l0ZW0uZGlyZWN0aW9ufWApLmpvaW4oXCIsXCIpIDogbnVsbDtcblxuICAgIHZvaWQgc2V0U29ydFBhcmFtKHNvcnRTdHJpbmcpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc29ydGluZ1N0YXRlLFxuICAgIHNldFNvcnRpbmdTdGF0ZTogaGFuZGxlU29ydGluZ0NoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBDZWxsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlIH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEJvb2xlYW5DZWxsIH0gZnJvbSBcIi4vQm9vbGVhbkNlbGxcIjtcbmltcG9ydCB0eXBlIHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuaW1wb3J0IHsgRGF0ZUNlbGwgfSBmcm9tIFwiLi9EYXRlQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBFbnVtQ2VsbCB9IGZyb20gXCIuL0VudW1DZWxsXCI7XG5pbXBvcnQgeyBKU09OQ2VsbCB9IGZyb20gXCIuL0pTT05DZWxsXCI7XG5pbXBvcnQgeyBOdWxsQ2VsbCB9IGZyb20gXCIuL051bGxDZWxsXCI7XG5pbXBvcnQgeyBOdW1lcmljQ2VsbCB9IGZyb20gXCIuL051bWVyaWNDZWxsXCI7XG5pbXBvcnQgeyBSYXdDZWxsIH0gZnJvbSBcIi4vUmF3Q2VsbFwiO1xuaW1wb3J0IHsgVGltZUNlbGwgfSBmcm9tIFwiLi9UaW1lQ2VsbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2VsbCh7XG4gIGNlbGwsXG4gIGNvbHVtbixcbiAgcHJvcHMsXG59OiB7XG4gIGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBjb2x1bW46IENvbHVtbjtcbiAgcHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn0pIHtcbiAgY29uc3QgdmFsdWUgPSBjZWxsLmdldFZhbHVlKCk7XG5cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gPEVtcHR5Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IC8+O1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDxOdWxsQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IC8+O1xuICB9XG5cbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SlNPTkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIDxSYXdDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSBvcHRpb25zPXtvcHRpb25zfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwicmF3XCIpIHtcbiAgICBpZiAoaXNPYmplY3RUeXBlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIDxKU09OQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIDxSYXdDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlfSAvPjtcbiAgfVxuXG4gIGdyb3VwIHNhdGlzZmllcyBuZXZlcjtcbiAgdGhyb3cgbmV3IEVycm9yKGBEYXRhdHlwZSBncm91cCBcIiR7Z3JvdXAgYXMgc3RyaW5nfVwiIHdhcyBub3QgaGFuZGxlZCBpbiAnL2NlbGwvZ2V0LWNlbGwudHN4J2ApO1xufVxuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbkNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgQm9vbGVhbkNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogQm9vbGVhbkNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGRpdiBkYXRhLWNlbGwtdHlwZT1cImJvb2xlYW5cIj57U3RyaW5nKEJvb2xlYW4odmFsdWUpKX08L2Rpdj5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkJvb2xlYW5DZWxsLmRpc3BsYXlOYW1lID0gXCJCb29sZWFuQ2VsbFwiO1xuXG5leHBvcnQgeyBCb29sZWFuQ2VsbCB9O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtdy1mdWxsIHBzLW92ZXJmbG93LWF1dG8gcHMtZmxleCBwcy1pdGVtcy1zdGFydCBwcy1oLWZ1bGxcIj5cbiAgICAgIDx0YWJsZSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLXctZnVsbCBwcy1jYXB0aW9uLWJvdHRvbSBwcy10ZXh0LXNtXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5UYWJsZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVcIjtcblxuY29uc3QgVGFibGVIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRoZWFkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVIZWFkZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZGVyXCI7XG5cbmNvbnN0IFRhYmxlQm9keSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRib2R5IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwiWyZfdHI6bGFzdC1jaGlsZF06cHMtYm9yZGVyLTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9IFwiVGFibGVCb2R5XCI7XG5cbmNvbnN0IFRhYmxlRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGZvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWJvcmRlci10IHBzLWJnLW11dGVkLzUwIHBzLWZvbnQtbWVkaXVtIFsmPnRyXTpsYXN0OnBzLWJvcmRlci1iLTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUZvb3RlclwiO1xuXG5jb25zdCBUYWJsZVJvdyA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlUm93RWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlUm93RWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0clxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWJvcmRlci1iIHBzLXRyYW5zaXRpb24tY29sb3JzIGhvdmVyOnBzLWJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpwcy1iZy1tdXRlZFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVSb3cuZGlzcGxheU5hbWUgPSBcIlRhYmxlUm93XCI7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRoSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGhcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWgtMTAgcHMtcHgtMiBwcy10ZXh0LWxlZnQgcHMtYWxpZ24tbWlkZGxlIHBzLWZvbnQtbWVkaXVtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVIZWFkLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRcIjtcblxuY29uc3QgVGFibGVDZWxsID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGRIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtYWxpZ24tbWlkZGxlXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVDZWxsLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNlbGxcIjtcblxuY29uc3QgVGFibGVDYXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8Y2FwdGlvbiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLW10LTQgcHMtdGV4dC1zbSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQ2FwdGlvbi5kaXNwbGF5TmFtZSA9IFwiVGFibGVDYXB0aW9uXCI7XG5cbmV4cG9ydCB7IFRhYmxlLCBUYWJsZUhlYWRlciwgVGFibGVCb2R5LCBUYWJsZUZvb3RlciwgVGFibGVIZWFkLCBUYWJsZVJvdywgVGFibGVDZWxsLCBUYWJsZUNhcHRpb24gfTtcbiIsICJpbXBvcnQgeyBDb3B5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbnRleHRNZW51LCBDb250ZXh0TWVudUNvbnRlbnQsIENvbnRleHRNZW51SXRlbSwgQ29udGV4dE1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51XCI7XG5cbmV4cG9ydCB0eXBlIERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjxvYmplY3Q+O1xuXG4vLyBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIGludmVyc2lmaWVkIC0gdG8gbWFrZSBpdCBleHRlbnNpYmxlLCBhbmQgYWRhcHRhYmxlIHRvIGRpZmZlcmVudCBzaXR1YXRpb25zLlxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkQ2VsbENvbnRleHRNZW51KHByb3BzOiBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHRNZW51PlxuICAgICAgPENvbnRleHRNZW51VHJpZ2dlciBjbGFzc05hbWU9XCJwcy1ibG9jayBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0NvbnRleHRNZW51VHJpZ2dlcj5cbiAgICAgIDxDb250ZXh0TWVudUNvbnRlbnQ+XG4gICAgICAgIDxDb250ZXh0TWVudUl0ZW1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZXh0cmFjdFRleHRDb250ZW50KGNoaWxkcmVuKTtcbiAgICAgICAgICAgIHZvaWQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQ6XCIsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPENvcHkgc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgQ29weVxuICAgICAgICA8L0NvbnRleHRNZW51SXRlbT5cbiAgICAgIDwvQ29udGV4dE1lbnVDb250ZW50PlxuICAgIDwvQ29udGV4dE1lbnU+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUZXh0Q29udGVudChub2RlOiBSZWFjdE5vZGUpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIFN0cmluZyhub2RlKTtcbiAgfVxuXG4gIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgY29uc3QgcHJvcHMgPSBub2RlLnByb3BzIGFzIHsgdGV4dD86IHN0cmluZzsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfTtcblxuICAgIC8vIEhhbmRsZSBSZXZlYWxUZXh0IGNvbXBvbmVudCBzcGVjaWZpY2FsbHlcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJSZXZlYWxUZXh0XCIpIHtcbiAgICAgIHJldHVybiBwcm9wcy50ZXh0IHx8IFwiXCI7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIE51bGxWYWx1ZSBjb21wb25lbnRcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJOdWxsVmFsdWVcIikge1xuICAgICAgcmV0dXJuIFwiTlVMTFwiO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IGV4dHJhY3QgdGV4dCBmcm9tIGNoaWxkcmVuXG4gICAgaWYgKHByb3BzLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gZXh0cmFjdFRleHRDb250ZW50KHByb3BzLmNoaWxkcmVuIGFzIFJlYWN0Tm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgIHJldHVybiBub2RlLm1hcChleHRyYWN0VGV4dENvbnRlbnQpLmpvaW4oXCJcIik7XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cbiIsICJpbXBvcnQgKiBhcyBDb250ZXh0TWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQtbWVudVwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25SaWdodCwgQ2lyY2xlIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENvbnRleHRNZW51ID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgQ29udGV4dE1lbnVUcmlnZ2VyID0gQ29udGV4dE1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgQ29udGV4dE1lbnVHcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVBvcnRhbCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9Hcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy1tbC1hdXRvIHBzLWgtNCBwcy13LTRcIiAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkNvbnRleHRNZW51U3ViVHJpZ2dlci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuQ29udGV4dE1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkNvbnRleHRNZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4pKTtcbkNvbnRleHRNZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGQgcHMtdGV4dC1mb3JlZ3JvdW5kXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1ib3JkZXJcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPXtjbihcInBzLW1sLWF1dG8gcHMtdGV4dC14cyBwcy10cmFja2luZy13aWRlc3QgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKTtcbn07XG5Db250ZXh0TWVudVNob3J0Y3V0LmRpc3BsYXlOYW1lID0gXCJDb250ZXh0TWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIENvbnRleHRNZW51LFxuICBDb250ZXh0TWVudVRyaWdnZXIsXG4gIENvbnRleHRNZW51Q29udGVudCxcbiAgQ29udGV4dE1lbnVJdGVtLFxuICBDb250ZXh0TWVudUNoZWNrYm94SXRlbSxcbiAgQ29udGV4dE1lbnVSYWRpb0l0ZW0sXG4gIENvbnRleHRNZW51TGFiZWwsXG4gIENvbnRleHRNZW51U2VwYXJhdG9yLFxuICBDb250ZXh0TWVudVNob3J0Y3V0LFxuICBDb250ZXh0TWVudUdyb3VwLFxuICBDb250ZXh0TWVudVBvcnRhbCxcbiAgQ29udGV4dE1lbnVTdWIsXG4gIENvbnRleHRNZW51U3ViQ29udGVudCxcbiAgQ29udGV4dE1lbnVTdWJUcmlnZ2VyLFxuICBDb250ZXh0TWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCB7IHR5cGUgQ1NTUHJvcGVydGllcywgRGV0YWlsZWRIVE1MUHJvcHMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVDZWxsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUgfSBmcm9tIFwiLi4vZ3JpZC9EYXRhR3JpZENlbGxDb250ZXh0TWVudVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENlbGxQcm9wcyBleHRlbmRzIFByb3BzV2l0aENoaWxkcmVuLCBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczx1bmtub3duPiwgdW5rbm93bj4ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENlbGwocHJvcHM6IENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGxcbiAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcC0wIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgICAgICAvLyBcImRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctMiBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluZGlnby00MDAgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbnNldFwiLFxuICAgICAgICBcInBzLWN1cnNvci1wb2ludGVyXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICA+XG4gICAgICA8RGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+e2NoaWxkcmVufTwvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5jb25zdCBEYXRlQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBEYXRlQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkRhdGVDZWxsLmRpc3BsYXlOYW1lID0gXCJEYXRlQ2VsbFwiO1xuXG5leHBvcnQgeyBEYXRlQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuY29uc3QgRW1wdHlDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEVtcHR5Q2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9IC8+O1xufSk7XG5FbXB0eUNlbGwuZGlzcGxheU5hbWUgPSBcIkVtcHR5Q2VsbFwiO1xuXG5leHBvcnQgeyBFbXB0eUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuY29uc3QgRW51bUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRW51bUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCBvcHRpb25zLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5FbnVtQ2VsbC5kaXNwbGF5TmFtZSA9IFwiRW51bUNlbGxcIjtcblxuZXhwb3J0IHsgRW51bUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpTT05DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdO1xufVxuXG5jb25zdCBKU09OQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBKU09OQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7SlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuSlNPTkNlbGwuZGlzcGxheU5hbWUgPSBcIkpTT05DZWxsXCI7XG5cbmV4cG9ydCB7IEpTT05DZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOdWxsQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmNvbnN0IE51bGxDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IE51bGxDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGNvZGUgY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCI+TlVMTDwvY29kZT5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbk51bGxDZWxsLmRpc3BsYXlOYW1lID0gXCJOdWxsQ2VsbFwiO1xuXG5leHBvcnQgeyBOdWxsQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtZXJpY0NlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgTnVtZXJpY0NlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogTnVtZXJpY0NlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGRpdiBkYXRhLWNlbGwtdHlwZT1cIm51bWVyaWNcIj57dmFsdWUgPT09IG51bGwgPyBcIk5VTExcIiA6IFN0cmluZyh2YWx1ZSl9PC9kaXY+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5OdW1lcmljQ2VsbC5kaXNwbGF5TmFtZSA9IFwiTnVtZXJpY0NlbGxcIjtcblxuZXhwb3J0IHsgTnVtZXJpY0NlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0NlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgUmF3Q2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBSYXdDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuUmF3Q2VsbC5kaXNwbGF5TmFtZSA9IFwiUmF3Q2VsbFwiO1xuXG5leHBvcnQgeyBSYXdDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5jb25zdCBUaW1lQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBUaW1lQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcblRpbWVDZWxsLmRpc3BsYXlOYW1lID0gXCJUaW1lQ2VsbFwiO1xuXG5leHBvcnQgeyBUaW1lQ2VsbCB9O1xuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RIZWFkZXJDZWxsUHJvcHMge1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG59XG5cbmNvbnN0IFNlbGVjdEhlYWRlckNlbGwgPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBTZWxlY3RIZWFkZXJDZWxsUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgdGFibGUsIHJlYWRvbmx5LCBjbGFzc05hbWUsIHN0eWxlLCAuLi5yZXN0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSBzdHlsZT17c3R5bGV9IHsuLi5yZXN0fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtdy1mdWxsXCI+XG4gICAgICAgIDxDaGVja2JveFxuICAgICAgICAgIGNoZWNrZWQ9e3RhYmxlLmdldElzQWxsUm93c1NlbGVjdGVkKCl9XG4gICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXsodmFsdWUpID0+IHRhYmxlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZCghIXZhbHVlKX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuXG5TZWxlY3RIZWFkZXJDZWxsLmRpc3BsYXlOYW1lID0gXCJTZWxlY3RIZWFkZXJDZWxsXCI7XG5cbmV4cG9ydCB7IFNlbGVjdEhlYWRlckNlbGwgfTtcbiIsICJpbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNoZWNrYm94XCI7XG5pbXBvcnQgeyBDaGVjayB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDaGVja2JveFByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1oLTQgcHMtdy00IHBzLXNocmluay0wIHBzLXJvdW5kZWQtc20gcHMtYm9yZGVyIHBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy1iZy1wcmltYXJ5IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy10ZXh0LWN1cnJlbnRcIil9PlxuICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgIDwvQ2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yPlxuICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4pKTtcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gQ2hlY2tib3hQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbiIsICJpbXBvcnQgeyBSb3cgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5pbXBvcnQgeyBTZWxlY3RDZWxsIH0gZnJvbSBcIi4vU2VsZWN0Q2VsbFwiO1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RSb3dDZWxsUHJvcHMge1xuICByb3c6IFJvdzxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3QgU2VsZWN0Um93Q2VsbCA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIFNlbGVjdFJvd0NlbGxQcm9wcz4oKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyByb3csIHJlYWRvbmx5LCBjbGFzc05hbWUsIHN0eWxlLCAuLi5yZXN0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3RDZWxsIHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfSB7Li4ucmVzdH0+XG4gICAgICA8Q2hlY2tib3hcbiAgICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgICAgZGlzYWJsZWQ9eyFyb3cuZ2V0Q2FuU2VsZWN0KCkgfHwgcmVhZG9ubHl9XG4gICAgICAgIG9uQ2hlY2tlZENoYW5nZT17cm93LmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcigpfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdENlbGw+XG4gICk7XG59KTtcblxuU2VsZWN0Um93Q2VsbC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0Um93Q2VsbFwiO1xuXG5leHBvcnQgeyBTZWxlY3RSb3dDZWxsIH07XG4iLCAiaW1wb3J0IHsgdHlwZSBDU1NQcm9wZXJ0aWVzLCBEZXRhaWxlZEhUTUxQcm9wcywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUNlbGwsIFRhYmxlSGVhZCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGlzSGVhZGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdENlbGwocHJvcHM6IFNlbGVjdENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIGlzSGVhZGVyID0gZmFsc2UsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICBjb25zdCBzZWxlY3RDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1wLTAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXVwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc0hlYWRlciA/IChcbiAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKHNlbGVjdENsYXNzZXMsIFwicHMtaC0xMCBwcy1iZy10YWJsZS1oZWFkIHBzLXotMzAgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWxlZnQtMFwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihzZWxlY3RDbGFzc2VzLCBcInBzLXotMTAgcHMtaC1bMzlweF1cIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIHNldE9wZW46IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbmNvbnN0IFBvcG92ZXJDZWxsID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH06IFBvcG92ZXJQcmltaXRpdmUuUG9wb3ZlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgb3Blbiwgc2V0T3BlbiB9fT5cbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlJvb3Qgb3Blbj17b3Blbn0gb25PcGVuQ2hhbmdlPXtzZXRPcGVufSB7Li4ucHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuUm9vdD5cbiAgICA8L1BvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5Qb3BvdmVyQ2VsbC5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+IHtcbiAgb25Eb3VibGVDbGljaz86ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiwgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHM+KFxuICAoeyBjaGlsZHJlbiwgb25Eb3VibGVDbGljaywgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAvLyBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuICAgIC8vIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG5cbiAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGhhbmRsZURvY3VtZW50Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAvLyAgICAgaWYgKHRyaWdnZXJSZWYuY3VycmVudCAmJiAhdHJpZ2dlclJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhcIk91dHNpZGUgY2xpY2sgLSByZW1vdmluZyBmb2N1c1wiKTtcbiAgICAvLyAgICAgICBzZXRJc0ZvY3VzZWQoZmFsc2UpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9O1xuXG4gICAgLy8gICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vIH0sIFtdKTtcblxuICAgIC8vIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyAgIHNldElzRm9jdXNlZCh0cnVlKTtcbiAgICAvLyAgIGNvbnRleHQ/LnNldE9wZW4odHJ1ZSk7XG5cbiAgICAvLyAgIGlmIChlLmRldGFpbCA9PT0gMiAmJiBvbkRvdWJsZUNsaWNrKSB7XG4gICAgLy8gICAgIG9uRG91YmxlQ2xpY2soKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXJcbiAgICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHJlZihub2RlKTtcbiAgICAgICAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkXG4gICAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgICAgLy8gb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIC8vIGRhdGEtZm9jdXM9e2lzRm9jdXNlZC50b1N0cmluZygpfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidy1mdWxsIGgtZnVsbCBjdXJzb3ItcG9pbnRlclwiLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPlxuICAgICk7XG4gIH0sXG4pO1xuUG9wb3ZlckNlbGxUcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFRyaWdnZXJcIjtcblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTIgcHMtei01MCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgdGhpcyBvdXJzZWx2ZXMsIGRvIG5vdCBsZXQgcmFkaXggdGFrZSBvdmVyXG4gICAgICBvbkVzY2FwZUtleURvd249eyhldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ2VsbENvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3BvdmVyQWN0aW9ucyhhY3Rpb25zOiB7XG4gIG9uU2F2ZT86ICgpID0+IGJvb2xlYW4gfCB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vblNhdmUpIHtcbiAgICAgIGFjdGlvbnMub25TYXZlKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25TYXZlLCBjb250ZXh0XSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25DYW5jZWwpIHtcbiAgICAgIGFjdGlvbnMub25DYW5jZWwoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vbkNhbmNlbCwgY29udGV4dF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgZW50ZXIgaXMgcHJlc3NlZCBhbmQgcHJlc3NlZCB3aXRob3V0IHNoaWZ0XG4gICAgICBpZiAoKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCJSZXR1cm5cIikgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGhhbmRsZVNhdmUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgfSwgW2hhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbF0pO1xuXG4gIHJldHVybiB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9O1xufVxuXG5leHBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxUcmlnZ2VyLCBQb3BvdmVyQ2VsbENvbnRlbnQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxDb250ZW50LCBQb3BvdmVyQ2VsbFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlYWJsZUNlbGxQcm9wcyB7XG4gIGNlbGxDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgaW5wdXRDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdyaXRlYWJsZUNlbGwocHJvcHM6IFdyaXRlYWJsZUNlbGxQcm9wcykge1xuICBjb25zdCB7IGNlbGxDb21wb25lbnQsIGlucHV0Q29tcG9uZW50IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbD5cbiAgICAgIDxQb3BvdmVyQ2VsbFRyaWdnZXIgYXNDaGlsZD57Y2VsbENvbXBvbmVudH08L1BvcG92ZXJDZWxsVHJpZ2dlcj5cbiAgICAgIDxQb3BvdmVyQ2VsbENvbnRlbnRcbiAgICAgICAgYWxpZ249XCJzdGFydFwiXG4gICAgICAgIGFsaWduT2Zmc2V0PXstMX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXJvdW5kZWQtbm9uZSBwcy1iZy1tdXRlZFwiLFxuICAgICAgICAgIFwicHMtcC0wIHBzLXotMzAgcHMtZ2FwLTAgcHMtYm9yZGVyLXByaW1hcnlcIixcbiAgICAgICAgICBcInBzLXctW2NhbGModmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKV8rXzFweCldIHBzLW1heC13LTcyIHBzLW1pbi13LVsyMDBweF1cIixcbiAgICAgICAgKX1cbiAgICAgICAgc2lkZU9mZnNldD17LTQwfVxuICAgICAgPlxuICAgICAgICB7aW5wdXRDb21wb25lbnR9XG4gICAgICA8L1BvcG92ZXJDZWxsQ29udGVudD5cbiAgICA8L1BvcG92ZXJDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7XG4gIGNsb3Nlc3RDZW50ZXIsXG4gIERuZENvbnRleHQsXG4gIHR5cGUgRHJhZ0VuZEV2ZW50LFxuICBEcmFnT3ZlcmxheSxcbiAgdHlwZSBEcmFnU3RhcnRFdmVudCxcbiAgS2V5Ym9hcmRTZW5zb3IsXG4gIFBvaW50ZXJTZW5zb3IsXG4gIHR5cGUgVW5pcXVlSWRlbnRpZmllcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzLFxufSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHtcbiAgYXJyYXlNb3ZlLFxuICBTb3J0YWJsZUNvbnRleHQsXG4gIHNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyxcbiAgdXNlU29ydGFibGUsXG4gIHZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSxcbn0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBDaGV2cm9uRG93biwgQ2hldnJvblJpZ2h0LCBHcmlwVmVydGljYWwsIEhlbHBDaXJjbGUsIFggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW5GaWx0ZXIsIEZpbHRlckdyb3VwLCBGaWx0ZXJPcGVyYXRvciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IGNvZXJjZVRvU3RyaW5nLCBjb2VyY2VUb1ZhbHVlIH0gZnJvbSBcIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgRHJvcGRvd25NZW51LCBEcm9wZG93bk1lbnVDb250ZW50LCBEcm9wZG93bk1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbmNvbnN0IExlYWRpbmdPcGVyYXRvclNlbGVjdCA9ICh7XG4gIHZhbHVlLFxuICBvblZhbHVlQ2hhbmdlLFxuICBkaXNhYmxlZCxcbiAgdHJpZ2dlckNsYXNzTmFtZSA9IFwicHMtdy0yMCBwcy10ZXh0LXhzIHBzLWgtOFwiLFxufToge1xuICB2YWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uVmFsdWVDaGFuZ2U6ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0cmlnZ2VyQ2xhc3NOYW1lPzogc3RyaW5nO1xufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTZWxlY3QgdmFsdWU9e3ZhbHVlfSBvblZhbHVlQ2hhbmdlPXtvblZhbHVlQ2hhbmdlfSBkaXNhYmxlZD17ZGlzYWJsZWR9PlxuICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPXt0cmlnZ2VyQ2xhc3NOYW1lfT5cbiAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiTG9naWNcIiAvPlxuICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiYW5kXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+QU5EPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPk9SPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICA8L1NlbGVjdD5cbiAgKTtcbn07XG5cbi8vIFJlbmRlcnMgdGhlIHByZXZpZXcgb2YgdGhlIGl0ZW0gYmVpbmcgZHJhZ2dlZCBpbiB0aGUgRHJhZ092ZXJsYXkuXG5jb25zdCBEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyA9ICh7XG4gIGFjdGl2ZUlkLFxuICBpdGVtcyxcbiAgdGFibGUsXG59OiB7XG4gIGFjdGl2ZUlkOiBVbmlxdWVJZGVudGlmaWVyO1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICB0YWJsZTogVGFibGU7XG59KSA9PiB7XG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG4gIGlmICghYWN0aXZlSXRlbSkgcmV0dXJuIG51bGw7XG5cbiAgbGV0IGxlYWRpbmdPcGVyYXRvclZhbHVlOiBcImFuZFwiIHwgXCJvclwiID0gXCJhbmRcIjsgLy8gRGVmYXVsdFxuICBsZXQgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSBmYWxzZTtcbiAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG5cbiAgaWYgKGFjdGl2ZUl0ZW1JbmRleCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0l0ZW0gPSBpdGVtc1thY3RpdmVJdGVtSW5kZXggLSAxXTtcbiAgICBpZiAocHJldmlvdXNJdGVtKSB7XG4gICAgICAvLyAnYWZ0ZXInIGZyb20gdGhlIHByZXZpb3VzIGl0ZW0gZGV0ZXJtaW5lcyB0aGUgb3BlcmF0b3IgbGVhZGluZyBpbnRvIHRoZSBjdXJyZW50IGl0ZW1cbiAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlID0gcHJldmlvdXNJdGVtLmFmdGVyO1xuICAgICAgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhY3RpdmVJdGVtLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICBmaWx0ZXI9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIHVwZGF0ZXNcbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fSAvLyBPdmVybGF5IGlzIG5vbi1pbnRlcmFjdGl2ZSBmb3IgZGVsZXRlc1xuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX0gLy8gTm9uLWludGVyYWN0aXZlXG4gICAgICAvPlxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudFxuICAgICAgICBncm91cD17YWN0aXZlSXRlbX1cbiAgICAgICAgb25VcGRhdGU9eygpID0+IHt9fVxuICAgICAgICBvbkRlbGV0ZT17KCkgPT4ge319XG4gICAgICAgIGlzUm9vdD17ZmFsc2V9IC8vIERyYWdnZWQgaXRlbSBpbiBvdmVybGF5IGlzIG5vdCB0aGUgcm9vdFxuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX1cbiAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtmYWxzZX0gLy8gTm9uLWludGVyYWN0aXZlIGZvciBwcmV2aWV3XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn07XG5cbi8vIE1hbmFnZXMgRE5EIGNvbnRleHQgYW5kIHJlbmRlcmluZyBvZiBzb3J0YWJsZSBmaWx0ZXIgaXRlbXMgZm9yIGEgZ3JvdXAuXG5jb25zdCBGaWx0ZXJMaXN0SXRlbXMgPSAoe1xuICBpdGVtcyxcbiAgcGFyZW50R3JvdXBJZCxcbiAgdGFibGUsXG4gIG9uVXBkYXRlSXRlbSxcbiAgb25EZWxldGVJdGVtLFxuICBvblJlb3JkZXJJdGVtcyxcbiAgYWN0aXZlRHJhZ0lkLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnRW5kU2lnbmFsLFxufToge1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICBwYXJlbnRHcm91cElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIG9uVXBkYXRlSXRlbTogKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRJdGVtOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGVJdGVtOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25SZW9yZGVySXRlbXM6IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBhY3RpdmVEcmFnSWQ6IFVuaXF1ZUlkZW50aWZpZXIgfCBudWxsO1xuICBvbkRyYWdTdGFydDogKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4gdm9pZDtcbiAgb25EcmFnRW5kU2lnbmFsOiAoKSA9PiB2b2lkOyAvLyBDYWxsYmFjayB0byBzaWduYWwgZHJhZyBvcGVyYXRpb24gY29tcGxldGlvblxufSkgPT4ge1xuICBjb25zdCBzb3J0YWJsZUl0ZW1JZHMgPSB1c2VNZW1vKCgpID0+IGl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCksIFtpdGVtc10pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhcbiAgICB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwgeyBhY3RpdmF0aW9uQ29uc3RyYWludDogeyBkaXN0YW5jZTogOCB9IH0pLFxuICAgIHVzZVNlbnNvcihLZXlib2FyZFNlbnNvciwgeyBjb29yZGluYXRlR2V0dGVyOiBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMgfSksXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlSW50ZXJuYWxEcmFnRW5kID0gKGV2ZW50OiBEcmFnRW5kRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGFjdGl2ZSwgb3ZlciB9ID0gZXZlbnQ7XG4gICAgaWYgKG92ZXIgJiYgYWN0aXZlLmlkICE9PSBvdmVyLmlkKSB7XG4gICAgICBjb25zdCBvbGRJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlLmlkKTtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBvdmVyLmlkKTtcbiAgICAgIGlmIChvbGRJbmRleCAhPT0gLTEgJiYgbmV3SW5kZXggIT09IC0xKSB7XG4gICAgICAgIG9uUmVvcmRlckl0ZW1zKG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICAgIG9uRHJhZ0VuZFNpZ25hbCgpOyAvLyBTaWduYWwgdG8gcGFyZW50IHRoYXQgZHJhZyBoYXMgZW5kZWQgKGUuZy4sIHRvIGNsZWFyIGFjdGl2ZURyYWdJZClcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEbmRDb250ZXh0XG4gICAgICBzZW5zb3JzPXtzZW5zb3JzfVxuICAgICAgY29sbGlzaW9uRGV0ZWN0aW9uPXtjbG9zZXN0Q2VudGVyfVxuICAgICAgb25EcmFnU3RhcnQ9e29uRHJhZ1N0YXJ0fVxuICAgICAgb25EcmFnRW5kPXtoYW5kbGVJbnRlcm5hbERyYWdFbmR9XG4gICAgPlxuICAgICAgPFNvcnRhYmxlQ29udGV4dCBpdGVtcz17c29ydGFibGVJdGVtSWRzfSBzdHJhdGVneT17dmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fT5cbiAgICAgICAge2l0ZW1zLm1hcCgoY3VycmVudEZpbHRlckl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHNob3dMZWFkaW5nT3AgPSBmYWxzZTtcbiAgICAgICAgICBsZXQgbGVhZGluZ09wVmFsOiBcImFuZFwiIHwgXCJvclwiIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBvbkxlYWRpbmdPcENoYW5nZUZuOiAoKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICBzaG93TGVhZGluZ09wID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZJdGVtID0gaXRlbXNbaW5kZXggLSAxXSE7XG4gICAgICAgICAgICBsZWFkaW5nT3BWYWwgPSBwcmV2SXRlbS5hZnRlcjtcbiAgICAgICAgICAgIG9uTGVhZGluZ09wQ2hhbmdlRm4gPSAobmV3VmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByZXZJdGVtID0geyAuLi5wcmV2SXRlbSwgYWZ0ZXI6IG5ld1ZhbHVlIH07XG4gICAgICAgICAgICAgIG9uVXBkYXRlSXRlbShpbmRleCAtIDEsIHVwZGF0ZWRQcmV2SXRlbSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gaW5kZXggLSAxID09PSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U29ydGFibGVGaWx0ZXJJdGVtXG4gICAgICAgICAgICAgIGtleT17Y3VycmVudEZpbHRlckl0ZW0uaWR9XG4gICAgICAgICAgICAgIGZpbHRlcj17Y3VycmVudEZpbHRlckl0ZW19XG4gICAgICAgICAgICAgIG9uVXBkYXRlPXsodXBkYXRlZEZpbHRlcikgPT4gb25VcGRhdGVJdGVtKGluZGV4LCB1cGRhdGVkRmlsdGVyKX1cbiAgICAgICAgICAgICAgb25EZWxldGU9eygpID0+IG9uRGVsZXRlSXRlbShpbmRleCl9XG4gICAgICAgICAgICAgIHBhcmVudERuZElkPXtwYXJlbnRHcm91cElkfVxuICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3B9XG4gICAgICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BWYWx9XG4gICAgICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcENoYW5nZUZufVxuICAgICAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgIHtjcmVhdGVQb3J0YWwoXG4gICAgICAgIDxEcmFnT3ZlcmxheT5cbiAgICAgICAgICB7YWN0aXZlRHJhZ0lkID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1vcGFjaXR5LTgwXCI+XG4gICAgICAgICAgICAgIDxEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyBhY3RpdmVJZD17YWN0aXZlRHJhZ0lkfSBpdGVtcz17aXRlbXN9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L0RyYWdPdmVybGF5PixcbiAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICl9XG4gICAgPC9EbmRDb250ZXh0PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNvcnRhYmxlIGZpbHRlciBpdGVtXG5jb25zdCBTb3J0YWJsZUZpbHRlckl0ZW0gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgcGFyZW50RG5kSWQsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cDtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIHBhcmVudERuZElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGZpbHRlci5pZCxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiBmaWx0ZXIua2luZCxcbiAgICAgIHBhcmVudElkOiBwYXJlbnREbmRJZCxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIG9wYWNpdHk6IGlzRHJhZ2dpbmcgPyAwLjUgOiAxLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3NldE5vZGVSZWZ9IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtZ2FwLTJcIj5cbiAgICAgIHtmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIiA/IChcbiAgICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgICBncm91cD17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNpbmdsZSBmaWx0ZXIgY29uZGl0aW9uXG5jb25zdCBGaWx0ZXJDb25kaXRpb24gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlcikgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlQ29sdW1uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgY29sdW1uOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVyYXRvckNoYW5nZSA9ICh2YWx1ZTogRmlsdGVyT3BlcmF0b3IpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgb3BlcmF0b3I6IHZhbHVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBjb2x1bW5JbmZvID0gdGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXTtcblxuICAgIGlmIChjb2x1bW5JbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlVG9WYWx1ZShjb2x1bW5JbmZvLCBmaWx0ZXIub3BlcmF0b3IsIHJhd1ZhbHVlKTtcblxuICAgICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIHZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgW2VkaXRlZFZhbHVlLCBzZXRFZGl0ZWRWYWx1ZV0gPSB1c2VTdGF0ZShcbiAgICBjb2VyY2VUb1N0cmluZyh0YWJsZS5jb2x1bW5zW2ZpbHRlci5jb2x1bW5dLCBmaWx0ZXIub3BlcmF0b3IsIGZpbHRlci52YWx1ZSksXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCJcbiAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCI+XG4gICAgICAgICAgPEdyaXBWZXJ0aWNhbCBjbGFzc05hbWU9XCJwcy10ZXh0LWdyYXktNTAwXCIgc2l6ZT17MTZ9IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSA/IChcbiAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIuY29sdW1ufSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVDb2x1bW5DaGFuZ2V9PlxuICAgICAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdy0yOCBwcy10ZXh0LXhzIHBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY29sdW1uXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7T2JqZWN0LmtleXModGFibGUuY29sdW1ucykubWFwKChjb2x1bW4pID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e2NvbHVtbn0gdmFsdWU9e2NvbHVtbn0+XG4gICAgICAgICAgICAgICAgICB7Y29sdW1ufVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIub3BlcmF0b3J9IG9uVmFsdWVDaGFuZ2U9eyh2YWx1ZSkgPT4gaGFuZGxlT3BlcmF0b3JDaGFuZ2UodmFsdWUgYXMgRmlsdGVyT3BlcmF0b3IpfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiT3BlcmF0b3JcIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPVwiPj08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiIT1cIj4hPTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+XCI+Jmd0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+PVwiPiZndDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjxcIj4mbHQ7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjw9XCI+Jmx0Oz08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXNcIj5pczwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpcyBub3RcIj5pcyBub3Q8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibGlrZVwiPmxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGxpa2VcIj5ub3QgbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpbGlrZVwiPmlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBpbGlrZVwiPm5vdCBpbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgdmFsdWU9e2VkaXRlZFZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgIHNldEVkaXRlZFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UoZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy13LTI0IHBzLXRleHQteHMgcHMtaC04XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBmaWx0ZXIgZ3JvdXAgKEFORC9PUilcbmNvbnN0IEZpbHRlckdyb3VwQ29tcG9uZW50ID0gKHtcbiAgZ3JvdXAsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICBpc1Jvb3QgPSBmYWxzZSxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBncm91cDogRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEdyb3VwOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgaXNSb290PzogYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVEcmFnSWQsIHNldEFjdGl2ZURyYWdJZF0gPSB1c2VTdGF0ZTxVbmlxdWVJZGVudGlmaWVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQWRkRmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcjogQ29sdW1uRmlsdGVyID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkNvbHVtbkZpbHRlclwiLFxuICAgICAgY29sdW1uOiBPYmplY3Qua2V5cyh0YWJsZS5jb2x1bW5zKVswXSA/PyBcIlwiLCAvLyBBbHdheXMgc2VsZWN0IGZpcnN0IGNvbFxuICAgICAgb3BlcmF0b3I6IFwiPVwiLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3RmlsdGVyXSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGRHcm91cCA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdHcm91cDogRmlsdGVyR3JvdXAgPSB7XG4gICAgICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbiAgICAgIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgfTtcblxuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IFsuLi5ncm91cC5maWx0ZXJzLCBuZXdHcm91cF0gfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlSXRlbUluR3JvdXAgPSAoaW5kZXg6IG51bWJlciwgdXBkYXRlZEZpbHRlck9yR3JvdXA6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzW2luZGV4XSA9IHVwZGF0ZWRGaWx0ZXJPckdyb3VwO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlSXRlbUZyb21Hcm91cCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdTdGFydEV2ZW50KSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKGV2ZW50LmFjdGl2ZS5pZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZFNpZ25hbCA9ICgpID0+IHtcbiAgICBzZXRBY3RpdmVEcmFnSWQobnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVvcmRlckl0ZW1zID0gKG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAob2xkSW5kZXggPT09IG5ld0luZGV4KSByZXR1cm47XG4gICAgY29uc3QgcmVvcmRlcmVkRmlsdGVycyA9IGFycmF5TW92ZShncm91cC5maWx0ZXJzLCBvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IHJlb3JkZXJlZEZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyR3JvdXBDb250ZW50ID0gKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCFncm91cC5maWx0ZXJzIHx8IGdyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXBsLTYgcHMtdGV4dC1zbSBwcy10ZXh0LW5ldXRyYWwtNTAwIHBzLWl0YWxpY1wiPlxuICAgICAgICAgIFRoaXMgZ3JvdXAgaXMgZW1wdHkuIEFkZCBhIGZpbHRlciBvciBhbm90aGVyIGdyb3VwLlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxtb3Rpb24uZGl2IHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmUgcHMtZ2FwLTJcIiwgaXNSb290ID8gXCJcIiA6IFwicHMtcGItMlwiKX0+XG4gICAgICAgICAgPEZpbHRlckxpc3RJdGVtc1xuICAgICAgICAgICAgaXRlbXM9e2dyb3VwLmZpbHRlcnN9XG4gICAgICAgICAgICBwYXJlbnRHcm91cElkPXtncm91cC5pZH1cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIG9uVXBkYXRlSXRlbT17dXBkYXRlSXRlbUluR3JvdXB9XG4gICAgICAgICAgICBvbkRlbGV0ZUl0ZW09e2RlbGV0ZUl0ZW1Gcm9tR3JvdXB9XG4gICAgICAgICAgICBvblJlb3JkZXJJdGVtcz17aGFuZGxlUmVvcmRlckl0ZW1zfVxuICAgICAgICAgICAgYWN0aXZlRHJhZ0lkPXthY3RpdmVEcmFnSWR9XG4gICAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgICAgb25EcmFnRW5kU2lnbmFsPXtoYW5kbGVEcmFnRW5kU2lnbmFsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGxcIiwgaXNFeHBhbmRlZCA/IFwicHMtZ2FwLTJcIiA6IFwiXCIpfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cywganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgICAgICAgIDxkaXYgey4uLmRyYWdIYW5kbGVQcm9wc30gY2xhc3NOYW1lPVwicHMtY3Vyc29yLWdyYWJcIiBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX0+XG4gICAgICAgICAgICAgICAge2lzRXhwYW5kZWQgPyA8Q2hldnJvbkRvd24gc2l6ZT17MTZ9IC8+IDogPENoZXZyb25SaWdodCBzaXplPXsxNn0gLz59XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgJiYgIWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWRkRmlsdGVyfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgb3ZlcmZsb3ctaGlkZGVuIHBzLXRyYW5zaXRpb24tYWxsXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZGQgRmlsdGVyXG4gICAgICAgICAgICAgIHtncm91cC5maWx0ZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDxCYWRnZSBjbGFzc05hbWU9XCJwcy10cmFuc2l0aW9uLWFsbFwiPlxuICAgICAgICAgICAgICAgICAgPEFuaW1hdGVOdW1iZXIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT57Z3JvdXAuZmlsdGVycy5sZW5ndGh9PC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2hhbmRsZUFkZEdyb3VwfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMVwiPlxuICAgICAgICAgICAgICBBZGQgR3JvdXBcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHtpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiPlxuICAgICAgICAgICAgICAgICAgICA8SGVscENpcmNsZSBjbGFzc05hbWU9XCJwcy1zaXplLTRcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50IGFsaWduPVwiY2VudGVyXCIgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcC00IHBzLXRleHQtY2VudGVyIHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIE5vIGZpbHRlcnMgYXBwbGllZCB5ZXQuIEFkZCBmaWx0ZXJzIHRvIHByZXZpZXcgeW91ciBxdWVyeS5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtMiBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLWJnLW5ldXRyYWwtMTAwIHBzLXJvdW5kZWQtc20gcHMtZm9udC1tb25vXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2dyb3VwfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oaXNSb290ID8gXCJcIiA6IFwicHMtbWwtNlwiKX0+e3JlbmRlckdyb3VwQ29udGVudCgpfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tb3Rpb24uZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IHRvIHZpc3VhbGl6ZSB0aGUgcXVlcnkgc3RyaW5nXG5jb25zdCBRdWVyeVZpc3VhbGl6ZXIgPSAoeyBmaWx0ZXIgfTogeyBmaWx0ZXI6IEZpbHRlckdyb3VwIH0pOiBSZWFjdE5vZGUgPT4ge1xuICBsZXQgaXNBbmRHcm91cE9wZW4gPSAwO1xuXG4gIGlmIChmaWx0ZXIuZmlsdGVycy5sZW5ndGggPT09IDApIHJldHVybiBcIiggKVwiO1xuXG4gIGNvbnN0IGdyb3VwID0gZmlsdGVyLmZpbHRlcnMubWFwKChmLCBpKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogUmVhY3ROb2RlO1xuICAgIGNvbnN0IGlzTGFzdCA9IGZpbHRlci5maWx0ZXJzLmxlbmd0aCAtIDEgPT09IGk7XG5cbiAgICBpZiAoaXNBbmRHcm91cE9wZW4gPT09IC0xKSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGYuYWZ0ZXIgPT09IFwiYW5kXCIgJiYgIWlzTGFzdCkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gKz0gMTtcbiAgICB9XG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuICYmIChpc0xhc3QgfHwgZi5hZnRlciA9PT0gXCJvclwiKSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAtMTtcbiAgICB9XG5cbiAgICBpZiAoZi5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICBjb25zdCB7IGNvbHVtbiwgb3BlcmF0b3IgfSA9IGY7XG5cbiAgICAgIHJlc3VsdCA9IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8c3Bhbj4ge2NvbHVtbn0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPiB7b3BlcmF0b3J9IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4gPyA8L3NwYW4+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2Z9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8RnJhZ21lbnQga2V5PXtmLmlkfT5cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAxID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPig8L3NwYW4+IDogXCJcIn1cbiAgICAgICAge3Jlc3VsdH1cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAtMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4pPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHshaXNMYXN0ICYmIDxzcGFuIGNsYXNzTmFtZT1cInBzLXVwcGVyY2FzZSBwcy10ZXh0LWJsdWUtNTAwIHBzLWZvbnQtc2VtaWJvbGRcIj4ge2YuYWZ0ZXJ9IDwvc3Bhbj59XG4gICAgICA8L0ZyYWdtZW50PlxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiA8c3Bhbj57Z3JvdXB9PC9zcGFuPjtcbn07XG5cbi8vIE1haW4gY29tcG9uZW50XG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyVHJlZSh7XG4gIGZpbHRlcixcbiAgc2V0RmlsdGVyLFxuICBzZXRBcHBsaWVkRmlsdGVyLFxuICB0YWJsZSxcbn06IHtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbiAgc2V0RmlsdGVyOiAodXBkYXRlZEZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIHNldEFwcGxpZWRGaWx0ZXI6IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICB0YWJsZTogVGFibGU7XG59KSB7XG4gIGNvbnN0IGhhbmRsZUFwcGx5RmlsdGVycyA9ICgpID0+IHtcbiAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTRcIj5cbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudCBncm91cD17ZmlsdGVyfSBvblVwZGF0ZT17c2V0RmlsdGVyfSBvbkRlbGV0ZT17KCkgPT4ge319IGlzUm9vdD17dHJ1ZX0gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZGVmYXVsdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXNlbGYtZW5kXCIgb25DbGljaz17aGFuZGxlQXBwbHlGaWx0ZXJzfT5cbiAgICAgICAgQXBwbHkgRmlsdGVyc1xuICAgICAgPC9CdXR0b24+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDb2x1bW4sIEZpbHRlck9wZXJhdG9yIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9WYWx1ZShjb2x1bW46IENvbHVtbiB8IHVuZGVmaW5lZCwgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogc3RyaW5nKTogdW5rbm93biB7XG4gIGNvbnN0IGRhdGFUeXBlR3JvdXAgPSBjb2x1bW4/LmRhdGF0eXBlLmdyb3VwO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwibnVsbFwiID8gbnVsbCA6IHZhbHVlO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdmFsdWUgPT09IFwidHJ1ZVwiO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJyYXdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiB2YWx1ZTtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJqc29uXCIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpIGFzIHVua25vd247XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcih2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb1N0cmluZyhcbiAgY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsXG4gIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciB8IHVuZGVmaW5lZCxcbiAgdmFsdWU6IHVua25vd24sXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAob3BlcmF0b3IgJiYgKG9wZXJhdG9yID09PSBcImlzXCIgfHwgb3BlcmF0b3IgPT09IFwiaXMgbm90XCIpKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gXCJudWxsXCIgOiBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJib29sZWFuXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZW51bVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgaWYgKHZhbHVlID09PSBcIlwiKSByZXR1cm4gXCJcIjtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuIiwgImltcG9ydCAqIGFzIERyb3Bkb3duTWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgRHJvcGRvd25NZW51VHJpZ2dlciA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEcm9wZG93bk1lbnVHcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51UG9ydGFsID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9Hcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0b1wiIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkRyb3Bkb3duTWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bdmFyKC0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpXSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZFwiLFxuICAgICAgICBcImRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ecm9wZG93bk1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MCBbJj5zdmddOnBzLXNpemUtNCBbJj5zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51SXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtMiBwcy13LTIgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51TGFiZWwuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLW9wYWNpdHktNjBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn07XG5Ecm9wZG93bk1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51TGFiZWwsXG4gIERyb3Bkb3duTWVudVNlcGFyYXRvcixcbiAgRHJvcGRvd25NZW51U2hvcnRjdXQsXG4gIERyb3Bkb3duTWVudUdyb3VwLFxuICBEcm9wZG93bk1lbnVQb3J0YWwsXG4gIERyb3Bkb3duTWVudVN1YixcbiAgRHJvcGRvd25NZW51U3ViQ29udGVudCxcbiAgRHJvcGRvd25NZW51U3ViVHJpZ2dlcixcbiAgRHJvcGRvd25NZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IElucHV0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wczxcImlucHV0XCI+PihcbiAgKHsgY2xhc3NOYW1lLCB0eXBlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMSBwcy1zaGFkb3ctc20gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZmlsZTpwcy1ib3JkZXItMCBmaWxlOnBzLWJnLXRyYW5zcGFyZW50IGZpbGU6cHMtdGV4dC1zbSBmaWxlOnBzLWZvbnQtbWVkaXVtIGZpbGU6cHMtdGV4dC1mb3JlZ3JvdW5kIHBsYWNlaG9sZGVyOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MFwiLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfSxcbik7XG5JbnB1dC5kaXNwbGF5TmFtZSA9IFwiSW5wdXRcIjtcblxuZXhwb3J0IHsgSW5wdXQgfTtcbiIsICJpbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zZWxlY3RcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uRG93biwgQ2hldnJvblVwIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFNlbGVjdCA9IFNlbGVjdFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBTZWxlY3RHcm91cCA9IFNlbGVjdFByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgU2VsZWN0VmFsdWUgPSBTZWxlY3RQcmltaXRpdmUuVmFsdWU7XG5cbmNvbnN0IFNlbGVjdFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0yIHBzLXRleHQtc20gcHMtc2hhZG93LXNtIHBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGF0YS1bcGxhY2Vob2xkZXJdOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0xIGZvY3VzOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJj5zcGFuXTpwcy1saW5lLWNsYW1wLTFcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkljb24gYXNDaGlsZD5cbiAgICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLW9wYWNpdHktNTBcIiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4pKTtcblNlbGVjdFRyaWdnZXIuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsVXBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1weS0xXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZXZyb25VcCBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBwb3NpdGlvbiA9IFwicG9wcGVyXCIsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1yZWxhdGl2ZSBwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBwb3NpdGlvbiA9PT0gXCJwb3BwZXJcIiAmJlxuICAgICAgICAgIFwiZGF0YS1bc2lkZT1ib3R0b21dOnBzLXRyYW5zbGF0ZS15LTEgZGF0YS1bc2lkZT1sZWZ0XTpwcy0tdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXJpZ2h0XTpwcy10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9dG9wXTpwcy0tdHJhbnNsYXRlLXktMVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcG9zaXRpb249e3Bvc2l0aW9ufVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxTZWxlY3RTY3JvbGxVcEJ1dHRvbiAvPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydFxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcC0xXCIsXG4gICAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICAgIFwicHMtaC1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0KV0gcHMtdy1mdWxsIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCldXCIsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0PlxuICAgICAgPFNlbGVjdFNjcm9sbERvd25CdXR0b24gLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblNlbGVjdENvbnRlbnQuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy13LWZ1bGwgcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTIgcHMtcHItOCBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbT5cbikpO1xuU2VsZWN0SXRlbS5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvciByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblNlbGVjdFNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIFNlbGVjdCxcbiAgU2VsZWN0R3JvdXAsXG4gIFNlbGVjdFZhbHVlLFxuICBTZWxlY3RUcmlnZ2VyLFxuICBTZWxlY3RDb250ZW50LFxuICBTZWxlY3RMYWJlbCxcbiAgU2VsZWN0SXRlbSxcbiAgU2VsZWN0U2VwYXJhdG9yLFxuICBTZWxlY3RTY3JvbGxVcEJ1dHRvbixcbiAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCAiaW1wb3J0IHsgRG5kQ29udGV4dCwgdHlwZSBEcmFnRW5kRXZlbnQsIE1vdXNlU2Vuc29yLCB1c2VTZW5zb3IsIHVzZVNlbnNvcnMgfSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHsgYXJyYXlNb3ZlLCBob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSwgU29ydGFibGVDb250ZXh0LCB1c2VTb3J0YWJsZSB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2UsIFJvd1NlbGVjdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW5QaW5uaW5nU3RhdGUsXG4gIHR5cGUgQ29sdW1uU2l6aW5nU3RhdGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgdHlwZSBIZWFkZXIsXG4gIHR5cGUgT25DaGFuZ2VGbixcbiAgdHlwZSBQYWdpbmF0aW9uU3RhdGUsXG4gIHR5cGUgU29ydGluZ1N0YXRlLFxuICB0eXBlIFRhYmxlIGFzIFJlYWN0VGFibGUsXG4gIHVzZVJlYWN0VGFibGUsXG59IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IFJlYWN0VGFibGVEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHNcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgdHlwZSBDU1NQcm9wZXJ0aWVzLFxuICB0eXBlIFByb3BzV2l0aENoaWxkcmVuLFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc2tlbGV0b25cIjtcbmltcG9ydCB7IFRhYmxlLCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZUhlYWRlciwgVGFibGVSb3cgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyIH0gZnJvbSBcIi4vRGF0YUdyaWRIZWFkZXJcIjtcbmltcG9ydCB7IERhdGFHcmlkTG9hZGluZ0JhciB9IGZyb20gXCIuL0RhdGFHcmlkTG9hZGluZ0JhclwiO1xuaW1wb3J0IHsgRGF0YUdyaWRQYWdpbmF0aW9uIH0gZnJvbSBcIi4vRGF0YUdyaWRQYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcblxuLy8gQWRkIHRoaXMgbmV3IGNvbXBvbmVudCBmb3IgZHJhZ2dhYmxlIGhlYWRlciBjZWxsc1xudHlwZSBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBoZWFkZXI6IEhlYWRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIHN0eWxlOiBDU1NQcm9wZXJ0aWVzO1xuICB0YWJsZTogUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVhY3RUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+O1xufT47XG5cbmNvbnN0IERyYWdnYWJsZUhlYWRlckNlbGwgPSAocHJvcHM6IERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGhlYWRlciwgc3R5bGU6IGNvbW1vblN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgZGlzYWJsZURyYWdnaW5nID0gXCJkaXNhYmxlRHJhZ2dpbmdcIiBpbiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZjtcblxuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBzZXROb2RlUmVmLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgfSk7XG5cbiAgY29uc3QgZHJhZ1N0eWxlID0ge1xuICAgIC4uLmNvbW1vblN0eWxlLFxuICAgIGN1cnNvcjogXCJncmFiXCIsXG4gICAgdG91Y2hBY3Rpb246IFwibm9uZVwiLFxuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gIH0gYXMgQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBjb21tb25DbGFzcyA9IGNuKGNsYXNzTmFtZSwgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIpO1xuICBjb25zdCBkcmFnQ2xhc3MgPSBjbihjb21tb25DbGFzcywgaXNEcmFnZ2luZyAmJiBcIiFwcy16LTUwIHBzLWJvcmRlci0yIHBzLWJvcmRlci12aW9sZXQtNTAwXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlSGVhZFxuICAgICAgcmVmPXtzZXROb2RlUmVmfVxuICAgICAgey4uLmF0dHJpYnV0ZXN9XG4gICAgICB7Li4ubGlzdGVuZXJzfVxuICAgICAgc3R5bGU9e2Rpc2FibGVEcmFnZ2luZyA/IGNvbW1vblN0eWxlIDogZHJhZ1N0eWxlfVxuICAgICAgY2xhc3NOYW1lPXtkaXNhYmxlRHJhZ2dpbmcgPyBjb21tb25DbGFzcyA6IGRyYWdDbGFzc31cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L1RhYmxlSGVhZD5cbiAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQcm9wcyB7XG4gIGNvbHVtbkRlZnM6IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5bXTtcbiAgZ2V0QmVmb3JlUm93cz8odGhpczogdm9pZCwgdGFibGU6IFJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogUmVhY3ROb2RlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgb25QYWdpbmF0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT47XG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFJvd1NlbGVjdGlvblN0YXRlPjtcbiAgb25Tb3J0aW5nQ2hhbmdlPzogT25DaGFuZ2VGbjxTb3J0T3JkZXJJdGVtW10+O1xuICBwYWdlQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnaW5hdGlvblN0YXRlOiBQYWdpbmF0aW9uU3RhdGU7XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHJvd1NlbGVjdGlvblN0YXRlOiBSb3dTZWxlY3Rpb25TdGF0ZTtcbiAgc29ydGluZ1N0YXRlPzogU29ydE9yZGVySXRlbVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWQocHJvcHM6IERhdGFHcmlkUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbkRlZnMsXG4gICAgZ2V0QmVmb3JlUm93cyxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNQcm9jZXNzaW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2UsXG4gICAgcGFnZUNvdW50LFxuICAgIHBhZ2luYXRpb25TdGF0ZSxcbiAgICByb3dzLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHNvcnRpbmdTdGF0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFtjb2x1bW5PcmRlciwgc2V0Q29sdW1uT3JkZXJdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2NvbHVtblBpbm5pbmcsIHNldENvbHVtblBpbm5pbmddID0gdXNlU3RhdGU8Q29sdW1uUGlubmluZ1N0YXRlPih7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gIGNvbnN0IFtjb2x1bW5TaXppbmcsIHNldENvbHVtblNpemluZ10gPSB1c2VTdGF0ZTxDb2x1bW5TaXppbmdTdGF0ZT4oe30pO1xuICBjb25zdCBzb3J0aW5nID0gdXNlTWVtbygoKSA9PiB0b1NvcnRpbmdTdGF0ZShzb3J0aW5nU3RhdGUpLCBbc29ydGluZ1N0YXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlMb2FkZXIgPSBpc0xvYWRpbmcgfHwgaXNQcm9jZXNzaW5nO1xuXG4gIC8vIFJlc2V0IGNvbHVtbiBvcmRlciwgcGlubmluZywgYW5kIHNpemluZyB3aGVuIGNvbHVtbkRlZnMgY2hhbmdlICh3aGljaCBoYXBwZW5zIHdoZW4gdGFibGUgY2hhbmdlcylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDb2x1bW5PcmRlcihjb2x1bW5EZWZzLm1hcCgoeyBhY2Nlc3NvcktleSB9KSA9PiBhY2Nlc3NvcktleSkpO1xuICAgIHNldENvbHVtblBpbm5pbmcoeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICAgIHNldENvbHVtblNpemluZyh7fSk7XG4gIH0sIFtjb2x1bW5EZWZzXSk7XG5cbiAgLy8gaGFuZGxlcyBtb3ZpbmcgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjb2x1bW5zIGFuZCBzdGF0ZVxuICBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKHsgYWN0aXZlLCBvdmVyIH06IERyYWdFbmRFdmVudCkge1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgc2V0Q29sdW1uT3JkZXIoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3JkZXIuaW5kZXhPZihhY3RpdmUuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3Qgb3ZlckluZGV4ID0gb3JkZXIuaW5kZXhPZihvdmVyLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiBhcnJheU1vdmUob3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29uZmlndXJlIHRoZSBtb3VzZSBzZW5zb3IgZm9yIGRyYWcgYW5kIGRyb3BcbiAgY29uc3QgbW91c2VTZW5zb3IgPSB1c2VTZW5zb3IoTW91c2VTZW5zb3IsIHtcbiAgICAvLyBSZXF1aXJlIHRoZSBtb3VzZSB0byBtb3ZlIGJ5IDEwIHBpeGVscyBiZWZvcmUgYWN0aXZhdGluZ1xuICAgIGFjdGl2YXRpb25Db25zdHJhaW50OiB7XG4gICAgICBkaXN0YW5jZTogMTAsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKG1vdXNlU2Vuc29yKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGNvbHVtblJlc2l6ZU1vZGU6IFwib25DaGFuZ2VcIixcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGRhdGE6IHJvd3MsXG4gICAgZGVmYXVsdENvbHVtbjogeyBzaXplOiAyMDAsIG1pblNpemU6IDUwLCBtYXhTaXplOiA1MDAgfSxcbiAgICBlbmFibGVDb2x1bW5QaW5uaW5nOiB0cnVlLFxuICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVTb3J0aW5nOiBCb29sZWFuKG9uU29ydGluZ0NoYW5nZSAmJiBzb3J0aW5nU3RhdGUpLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0Um93SWQ6ICh7IF9fcHNfcm93aWQgfSkgPT4gX19wc19yb3dpZCBhcyBzdHJpbmcsXG4gICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICBtYW51YWxTb3J0aW5nOiB0cnVlLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHNldENvbHVtbk9yZGVyLFxuICAgIG9uQ29sdW1uUGlubmluZ0NoYW5nZTogc2V0Q29sdW1uUGlubmluZyxcbiAgICBvbkNvbHVtblNpemluZ0NoYW5nZTogc2V0Q29sdW1uU2l6aW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6ICh1cGRhdGVyT3JWYWx1ZSkgPT5cbiAgICAgIG9uU29ydGluZ0NoYW5nZT8uKChvbGQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdXBkYXRlck9yVmFsdWUgPSB1cGRhdGVyT3JWYWx1ZSh0b1NvcnRpbmdTdGF0ZShvbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvcnRPcmRlckl0ZW1zKHVwZGF0ZXJPclZhbHVlKTtcbiAgICAgIH0pLFxuICAgIHBhZ2VDb3VudCxcbiAgICBzdGF0ZToge1xuICAgICAgY29sdW1uT3JkZXIsXG4gICAgICBjb2x1bW5QaW5uaW5nLFxuICAgICAgY29sdW1uU2l6aW5nLFxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblN0YXRlLFxuICAgICAgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICAgIHNvcnRpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRPRE86IHBhdGNoIHNvIGl0IGlzIG5vdCBidW5kbGVkIGxpa2UgcmVhY3QtcXVlcnkgZGV2dG9vbHMsIG9yIHJlbW92ZSBjb21wbGV0ZWx5IG9uY2UgZGF0YSBncmlkIGlzIHN0YWJsZSBhbmQgdGVzdGVkLiAqL31cbiAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBudWxsIDogPFJlYWN0VGFibGVEZXZ0b29scyB0YWJsZT17dGFibGV9IC8+fVxuICAgICAgPGRpdiBkYXRhLXN0dWRpbz1cImNvbnRlbnRcIiBjbGFzc05hbWU9XCJwcy1mbGV4LTEgcHMtdy0wIHBzLWgtMCBwcy1taW4tdy1mdWxsIHBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdj57ZGlzcGxheUxvYWRlciAmJiA8RGF0YUdyaWRMb2FkaW5nQmFyIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIC1wcy10b3AtWzFweF0gcHMtbGVmdC0wIHBzLXJpZ2h0LTBcIiAvPn08L2Rpdj5cbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17c2Vuc29yc30gb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfT5cbiAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwicHMtdGFibGUtZml4ZWQgcHMtYm9yZGVyLXNlcGFyYXRlIHBzLWJvcmRlci1zcGFjaW5nLTAgcHMtYm94LWJvcmRlciBwcy13LWF1dG9cIj5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zPXtoZWFkZXJHcm91cC5oZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaGVhZGVyKSA9PiAhKFwiZGlzYWJsZURyYWdnaW5nXCIgaW4gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYpKVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGhlYWRlcikgPT4gaGVhZGVyLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k9e2hvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3Igc2VsZWN0IGNvbHVtblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgaGVhZGVyIGZ1bmN0aW9uIGRpcmVjdGx5LCB3aGljaCBzaG91bGQgYmUgU2VsZWN0SGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyRm4gPSBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGhlYWRlckZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGVhZGVyQ29tcG9uZW50ID0gaGVhZGVyRm4oaGVhZGVyLmdldENvbnRleHQoKSkgYXMgdW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgSGVhZGVyQ29tcG9uZW50IGlzIGEgZnVuY3Rpb24gKG5ldyBhcHByb2FjaCB3aXRoIHByb3BzIGZvcndhcmRpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSGVhZGVyQ29tcG9uZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaW5uaW5nU3R5bGVzID0gZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uaW5nU3R5bGVzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3Bpbm5pbmdTdHlsZXMuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtIZWFkZXJDb21wb25lbnQoe30pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBIZWFkZXJDb21wb25lbnQgaXMgYSBkaXJlY3QgSlNYIGVsZW1lbnQgKG9sZCBhcHByb2FjaClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIikuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17Z2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKS5zdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7SGVhZGVyQ29tcG9uZW50IGFzIEpTWC5FbGVtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gUmVndWxhciBjb2x1bW5zIHVzZSB0aGUgZHJhZ2dhYmxlIGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJhZ2dhYmxlSGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyPXtoZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlciBoZWFkZXI9e2hlYWRlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJhZ2dhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9UYWJsZUhlYWRlcj5cbiAgICAgICAgICAgIDxUYWJsZUJvZHk+XG4gICAgICAgICAgICAgIHtnZXRCZWZvcmVSb3dzPy4odGFibGUpfVxuICAgICAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgdGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcy1iZy10YWJsZS1yb3cgcHMtb2RkOmJnLXRhYmxlLXJvdy1vZGQgcHMtZ3JvdXAgWyY6bGFzdC1vZi10eXBlX3RkXTpwcy1ib3JkZXItYi0wIHBzLWdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlIENlbGwgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImdyb3VwLW9kZDpwcy1iZy1uZXV0cmFsLTUwIGdyb3VwLWV2ZW46cHMtYmctd2hpdGUgZ3JvdXAtaG92ZXI6cHMtYmctbmV1dHJhbC0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbCBrZXk9e2NlbGwuaWR9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZWxsLmdldFZhbHVlKCkgYXMgUmVhY3ROb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW49e2NvbHVtbkRlZnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTI0IHBzLXRleHQtbGVmdCBwcy1wLVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00LzVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTIvM1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgICAgPC9UYWJsZT5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICB7IXBhZ2VDb3VudCB8fCBwYWdlQ291bnQgPCAyID8gbnVsbCA6IDxEYXRhR3JpZFBhZ2luYXRpb24gdGFibGU9e3RhYmxlfSB2YXJpYW50PVwibnVtZXJpY1wiIC8+fVxuXG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiAhaXNQcm9jZXNzaW5nICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWFic29sdXRlIC1wcy1pbnNldC0wIHBzLXBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Tm8gcmVzdWx0cyBmb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgIEl0IGRvZXNuJmFwb3M7dCBsb29rIGxpa2UgeW91IGhhdmUgYW55IGRhdGEgaW4gdGhpcyB0YWJsZS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0aW5nU3RhdGUoZnJvbTogU29ydE9yZGVySXRlbVtdIHwgdW5kZWZpbmVkKTogU29ydGluZ1N0YXRlIHtcbiAgcmV0dXJuIGZyb20/Lm1hcCgoaXRlbSkgPT4gKHsgaWQ6IGl0ZW0uY29sdW1uLCBkZXNjOiBpdGVtLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIgfSkpIHx8IFtdO1xufVxuXG5mdW5jdGlvbiB0b1NvcnRPcmRlckl0ZW1zKGZyb206IFNvcnRpbmdTdGF0ZSk6IFNvcnRPcmRlckl0ZW1bXSB7XG4gIHJldHVybiBmcm9tLm1hcCgoaXRlbSkgPT4gKHtcbiAgICBjb2x1bW46IGl0ZW0uaWQsXG4gICAgZGlyZWN0aW9uOiBpdGVtLmRlc2MgPyBcImRlc2NcIiA6IFwiYXNjXCIsXG4gIH0pKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGdldEl0ZW0gPSAoa2V5OiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gICAgaWYgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShpdGVtVmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUPihcbiAga2V5OiBzdHJpbmcsXG4gIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZFxuKTogW1QgfCB1bmRlZmluZWQsIChuZXdWYWw6IFQgfCAoKHByZXZWYWw6IFQpID0+IFQpKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGU8VD4oKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0SXRlbShrZXkpIGFzIFQgfCB1bmRlZmluZWRcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBpbml0aWFsVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHNldFZhbHVlKFxuICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoaW5pdGlhbFZhbHVlKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRWYWx1ZSwga2V5XSlcblxuICBjb25zdCBzZXR0ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAodXBkYXRlcjogYW55KSA9PiB7XG4gICAgICBzZXRWYWx1ZShvbGQgPT4ge1xuICAgICAgICBsZXQgbmV3VmFsID0gdXBkYXRlclxuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlciA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgbmV3VmFsID0gdXBkYXRlcihvbGQpXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gbmV3VmFsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2tleV1cbiAgKVxuXG4gIHJldHVybiBbdmFsdWUsIHNldHRlcl1cbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWUgPSB7XG4gIGJhY2tncm91bmQ6ICcjMGIxNTIxJyxcbiAgYmFja2dyb3VuZEFsdDogJyMxMzIzMzcnLFxuICBmb3JlZ3JvdW5kOiAnd2hpdGUnLFxuICBncmF5OiAnIzNmNGU2MCcsXG4gIGdyYXlBbHQ6ICcjMjIyZTNlJyxcbiAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgaW5wdXRUZXh0Q29sb3I6ICcjMDAwJyxcbiAgc3VjY2VzczogJyMwMGFiNTInLFxuICBkYW5nZXI6ICcjZmYwMDg1JyxcbiAgYWN0aXZlOiAnIzAwNmJmZicsXG4gIHdhcm5pbmc6ICcjZmZiMjAwJyxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgVGhlbWUgPSB0eXBlb2YgZGVmYXVsdFRoZW1lXG5pbnRlcmZhY2UgUHJvdmlkZXJQcm9wcyB7XG4gIHRoZW1lOiBUaGVtZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5jb25zdCBUaGVtZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGRlZmF1bHRUaGVtZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoeyB0aGVtZSwgLi4ucmVzdCB9OiBQcm92aWRlclByb3BzKSB7XG4gIHJldHVybiA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGVtZX0gey4uLnJlc3R9IC8+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHByZWZlcmVuY2UgaW4gc3RhdGUsIHN0YXJ0IHdpdGggdGhlIGN1cnJlbnQgbWF0Y2hcbiAgY29uc3QgW2lzTWF0Y2gsIHNldElzTWF0Y2hdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzXG4gICAgfVxuICB9KVxuXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBtYXRjaGVyXG4gICAgICBjb25zdCBtYXRjaGVyID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpXG5cbiAgICAgIC8vIENyZWF0ZSBvdXIgaGFuZGxlclxuICAgICAgY29uc3Qgb25DaGFuZ2UgPSAoeyBtYXRjaGVzIH06IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PlxuICAgICAgICBzZXRJc01hdGNoKG1hdGNoZXMpXG5cbiAgICAgIC8vIExpc3RlbiBmb3IgY2hhbmdlc1xuICAgICAgbWF0Y2hlci5hZGRMaXN0ZW5lcihvbkNoYW5nZSlcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXNcbiAgICAgICAgbWF0Y2hlci5yZW1vdmVMaXN0ZW5lcihvbkNoYW5nZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc01hdGNoLCBxdWVyeSwgc2V0SXNNYXRjaF0pXG5cbiAgcmV0dXJuIGlzTWF0Y2hcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFRoZW1lLCB1c2VUaGVtZSB9IGZyb20gJy4vdGhlbWUnXG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknXG5cbmNvbnN0IGlzU2VydmVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcblxudHlwZSBTdHlsZWRDb21wb25lbnQ8VD4gPSBUIGV4dGVuZHMgJ2J1dHRvbidcbiAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICAgIEhUTUxCdXR0b25FbGVtZW50XG4gICAgPlxuICA6IFQgZXh0ZW5kcyAnaW5wdXQnXG4gICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgSFRNTElucHV0RWxlbWVudFxuICAgICAgPlxuICAgIDogVCBleHRlbmRzICdzZWxlY3QnXG4gICAgICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgICAgIFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PixcbiAgICAgICAgICBIVE1MU2VsZWN0RWxlbWVudFxuICAgICAgICA+XG4gICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXBcbiAgICAgICAgPyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0+XG4gICAgICAgIDogbmV2ZXJcblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKG1hdGNoOiBSb3V0ZU1hdGNoLCB0aGVtZTogVGhlbWUpIHtcbi8vICAgcmV0dXJuIG1hdGNoLmlzTG9hZGluZ1xuLy8gICAgID8gdGhlbWUuYWN0aXZlXG4vLyAgICAgOiBtYXRjaC5zdGF0dXMgPT09ICdyZWplY3RlZCdcbi8vICAgICA/IHRoZW1lLmRhbmdlclxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncGVuZGluZydcbi8vICAgICA/IHRoZW1lLndhcm5pbmdcbi8vICAgICA6IHRoZW1lLnN1Y2Nlc3Ncbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzTGFiZWwocXVlcnk6IFF1ZXJ5KSB7XG4vLyAgIHJldHVybiBxdWVyeS5zdGF0ZS5pc0ZldGNoaW5nXG4vLyAgICAgPyAnZmV0Y2hpbmcnXG4vLyAgICAgOiAhcXVlcnkuZ2V0T2JzZXJ2ZXJzQ291bnQoKVxuLy8gICAgID8gJ2luYWN0aXZlJ1xuLy8gICAgIDogcXVlcnkuaXNTdGFsZSgpXG4vLyAgICAgPyAnc3RhbGUnXG4vLyAgICAgOiAnZnJlc2gnXG4vLyB9XG5cbnR5cGUgU3R5bGVzID1cbiAgfCBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIHwgKChwcm9wczogUmVjb3JkPHN0cmluZywgYW55PiwgdGhlbWU6IFRoZW1lKSA9PiBSZWFjdC5DU1NQcm9wZXJ0aWVzKVxuXG5leHBvcnQgZnVuY3Rpb24gc3R5bGVkPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0eXBlOiBULFxuICBuZXdTdHlsZXM6IFN0eWxlcyxcbiAgcXVlcmllczogUmVjb3JkPHN0cmluZywgU3R5bGVzPiA9IHt9XG4pIHtcbiAgcmV0dXJuIFJlYWN0LmZvcndhcmRSZWY8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdLCBTdHlsZWRDb21wb25lbnQ8VD4+KFxuICAgICh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG5cbiAgICAgIGNvbnN0IG1lZGlhU3R5bGVzID0gT2JqZWN0LmVudHJpZXMocXVlcmllcykucmVkdWNlKFxuICAgICAgICAoY3VycmVudCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoa2V5KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocmVzdCwgdGhlbWUpIDogdmFsdWUpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGN1cnJlbnRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodHlwZSwge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLih0eXBlb2YgbmV3U3R5bGVzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IG5ld1N0eWxlcyhyZXN0LCB0aGVtZSlcbiAgICAgICAgICAgIDogbmV3U3R5bGVzKSxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi5tZWRpYVN0eWxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmLFxuICAgICAgfSlcbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzTW91bnRlZCgpIHtcbiAgY29uc3QgbW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNb3VudGVkID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gbW91bnRlZFJlZi5jdXJyZW50LCBbXSlcblxuICBSZWFjdFtpc1NlcnZlciA/ICd1c2VFZmZlY3QnIDogJ3VzZUxheW91dEVmZmVjdCddKCgpID0+IHtcbiAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gaXNNb3VudGVkXG59XG5cbi8qKlxuICogVGhpcyBob29rIGlzIGEgc2FmZSB1c2VTdGF0ZSB2ZXJzaW9uIHdoaWNoIHNjaGVkdWxlcyBzdGF0ZSB1cGRhdGVzIGluIG1pY3JvdGFza3NcbiAqIHRvIHByZXZlbnQgdXBkYXRpbmcgYSBjb21wb25lbnQgc3RhdGUgd2hpbGUgUmVhY3QgaXMgcmVuZGVyaW5nIGRpZmZlcmVudCBjb21wb25lbnRzXG4gKiBvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IG1vdW50ZWQgYW55bW9yZS5cbiAqL1xuZnVuY3Rpb24gdXNlU2FmZVN0YXRlPFQ+KGluaXRpYWxTdGF0ZTogVCk6IFtULCAodmFsdWU6IFQpID0+IHZvaWRdIHtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsU3RhdGUpXG5cbiAgY29uc3Qgc2FmZVNldFN0YXRlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBUKSA9PiB7XG4gICAgICBzY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdW50ZWQoKSkge1xuICAgICAgICAgIHNldFN0YXRlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgW2lzTW91bnRlZF1cbiAgKVxuXG4gIHJldHVybiBbc3RhdGUsIHNhZmVTZXRTdGF0ZV1cbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBtaWNyb3Rhc2suXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2NoZWR1bGUgc3RhdGUgdXBkYXRlcyBhZnRlciByZW5kZXJpbmcuXG4gKi9cbmZ1bmN0aW9uIHNjaGVkdWxlTWljcm90YXNrKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGVycm9yID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gICAgKVxufVxuIiwgImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBQYW5lbCA9IHN0eWxlZChcbiAgJ2RpdicsXG4gIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgIGZvbnRTaXplOiAnY2xhbXAoMTJweCwgMS41dncsIDE0cHgpJyxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzoge1xuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSxcbiAgICAnKG1heC13aWR0aDogNjAwcHgpJzoge1xuICAgICAgZm9udFNpemU6ICcuOWVtJyxcbiAgICAgIC8vIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gIH1cbilcblxuY29uc3QgQWN0aXZlUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoKSA9PiAoe1xuICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA3MDBweCknOiAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICAgIGJvcmRlclRvcDogYDJweCBzb2xpZCAke3RoZW1lLmdyYXl9YCxcbiAgICB9KSxcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkKCdidXR0b24nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgYmFja2dyb3VuZDogdGhlbWUuZ3JheSxcbiAgYm9yZGVyOiAnMCcsXG4gIGJvcmRlclJhZGl1czogJy4zZW0nLFxuICBjb2xvcjogJ3doaXRlJyxcbiAgcGFkZGluZzogJy41ZW0nLFxuICBvcGFjaXR5OiBwcm9wcy5kaXNhYmxlZCA/ICcuNScgOiB1bmRlZmluZWQsXG4gIGN1cnNvcjogJ3BvaW50ZXInLFxufSkpXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleXMgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuLy8gICBmb250U2l6ZTogJzAuOWVtJyxcbi8vIH0pXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleSA9IHN0eWxlZCgnc3BhbicsIHtcbi8vICAgZGlzcGxheTogJ2lubGluZS1mbGV4Jyxcbi8vICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4vLyAgIHBhZGRpbmc6ICcuMmVtIC40ZW0nLFxuLy8gICBmb250V2VpZ2h0OiAnYm9sZCcsXG4vLyAgIHRleHRTaGFkb3c6ICcwIDAgMTBweCBibGFjaycsXG4vLyAgIGJvcmRlclJhZGl1czogJy4yZW0nLFxuLy8gfSlcblxuY29uc3QgQ29kZSA9IHN0eWxlZCgnY29kZScsIHtcbiAgZm9udFNpemU6ICcuOWVtJyxcbn0pXG5cbmNvbnN0IElucHV0ID0gc3R5bGVkKCdpbnB1dCcsIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICBib3JkZXI6IDAsXG4gIGJvcmRlclJhZGl1czogJy4yZW0nLFxuICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGxpbmVIZWlnaHQ6IGAxLjNgLFxuICBwYWRkaW5nOiAnLjNlbSAuNGVtJyxcbn0pKVxuXG5jb25zdCBTZWxlY3QgPSBzdHlsZWQoXG4gICdzZWxlY3QnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBkaXNwbGF5OiBgaW5saW5lLWJsb2NrYCxcbiAgICBmb250U2l6ZTogYC45ZW1gLFxuICAgIGZvbnRGYW1pbHk6IGBzYW5zLXNlcmlmYCxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgICBwYWRkaW5nOiBgLjNlbSAxLjVlbSAuM2VtIC41ZW1gLFxuICAgIGhlaWdodDogJ2F1dG8nLFxuICAgIGJvcmRlcjogMCxcbiAgICBib3JkZXJSYWRpdXM6IGAuMmVtYCxcbiAgICBhcHBlYXJhbmNlOiBgbm9uZWAsXG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaW5wdXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSclMjM0NDQ0NDQnPjxwb2x5Z29uIHBvaW50cz0nMCwyNSAxMDAsMjUgNTAsNzUnLz48L3N2Zz5cIilgLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IGBuby1yZXBlYXRgLFxuICAgIGJhY2tncm91bmRQb3NpdGlvbjogYHJpZ2h0IC41NWVtIGNlbnRlcmAsXG4gICAgYmFja2dyb3VuZFNpemU6IGAuNjVlbSBhdXRvLCAxMDAlYCxcbiAgICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDUwMHB4KSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9XG4pXG4iLCAiLy8gQHRzLW5vY2hlY2tcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBFbnRyeSA9IHN0eWxlZCgnZGl2Jywge1xuICBmb250RmFtaWx5OiAnTWVubG8sIG1vbm9zcGFjZScsXG4gIGZvbnRTaXplOiAnMC43cmVtJyxcbiAgbGluZUhlaWdodDogJzEuNycsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59KVxuXG5jb25zdCBMYWJlbCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIGNvbG9yOiAnd2hpdGUnLFxufSlcblxuY29uc3QgVmFsdWUgPSBzdHlsZWQoJ3NwYW4nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBjb2xvcjogdGhlbWUuZGFuZ2VyLFxufSkpXG5cbmNvbnN0IFN1YkVudHJpZXMgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbWFyZ2luTGVmdDogJy4xcmVtJyxcbiAgcGFkZGluZ0xlZnQ6ICcxcmVtJyxcbiAgYm9yZGVyTGVmdDogJzJweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSknLFxufSlcblxuY29uc3QgSW5mbyA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY29sb3I6ICdncmV5JyxcbiAgZm9udFNpemU6ICcuN3JlbScsXG59KVxuXG5jb25zdCBFeHBhbmRlciA9ICh7IGV4cGFuZGVkLCBzdHlsZSA9IHt9LCAuLi5yZXN0IH0pID0+IChcbiAgPHNwYW5cbiAgICBzdHlsZT17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICB0cmFuc2l0aW9uOiAnYWxsIC4xcyBlYXNlJyxcbiAgICAgIHRyYW5zZm9ybTogYHJvdGF0ZSgke2V4cGFuZGVkID8gOTAgOiAwfWRlZykgJHtzdHlsZS50cmFuc2Zvcm0gfHwgJyd9YCxcbiAgICAgIC4uLnN0eWxlLFxuICAgIH19XG4gID5cbiAgICDilrZcbiAgPC9zcGFuPlxuKVxuXG5jb25zdCBEZWZhdWx0UmVuZGVyZXIgPSAoe1xuICBoYW5kbGVFbnRyeSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAvLyBwYXRoLFxuICBzdWJFbnRyaWVzLFxuICBzdWJFbnRyeVBhZ2VzLFxuICB0eXBlLFxuICAvLyBkZXB0aCxcbiAgZXhwYW5kZWQsXG4gIHRvZ2dsZSxcbiAgcGFnZVNpemUsXG4gIHJlbmRlcmVyLFxufSkgPT4ge1xuICBjb25zdCBbdmFsdWVTbmFwc2hvdCwgc2V0VmFsdWVTbmFwc2hvdF0gPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpXG4gIGNvbnN0IFtleHBhbmRlZFBhZ2VzLCBzZXRFeHBhbmRlZFBhZ2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxuXG4gIGNvbnN0IHJlZnJlc2hWYWx1ZVNuYXBzaG90ID0gKCkgPT4ge1xuICAgIHNldFZhbHVlU25hcHNob3QodmFsdWUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEVudHJ5IGtleT17bGFiZWx9PlxuICAgICAge3N1YkVudHJ5UGFnZXM/Lmxlbmd0aCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWwgb25DbGljaz17KCkgPT4gdG9nZ2xlKCl9PlxuICAgICAgICAgICAgPEV4cGFuZGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gLz4ge2xhYmVsfXsnICd9XG4gICAgICAgICAgICA8SW5mbz5cbiAgICAgICAgICAgICAge1N0cmluZyh0eXBlKS50b0xvd2VyQ2FzZSgpID09PSAnaXRlcmFibGUnID8gJyhJdGVyYWJsZSkgJyA6ICcnfVxuICAgICAgICAgICAgICB7c3ViRW50cmllcy5sZW5ndGh9IHtzdWJFbnRyaWVzLmxlbmd0aCA+IDEgPyBgaXRlbXNgIDogYGl0ZW1gfVxuICAgICAgICAgICAgPC9JbmZvPlxuICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAge2V4cGFuZGVkID8gKFxuICAgICAgICAgICAgc3ViRW50cnlQYWdlcy5sZW5ndGggPT09IDEgPyAoXG4gICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgIHtzdWJFbnRyaWVzLm1hcChlbnRyeSA9PiBoYW5kbGVFbnRyeShlbnRyeSkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cnlQYWdlcy5tYXAoKGVudHJpZXMsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICA8RW50cnk+XG4gICAgICAgICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBhbmRlZFBhZ2VzKG9sZCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5pbmNsdWRlcyhpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2xkLmZpbHRlcihkID0+IGQgIT09IGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbLi4ub2xkLCBpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IFt7aW5kZXggKiBwYWdlU2l6ZX0gLi4ueycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCAqIHBhZ2VTaXplICsgcGFnZVNpemUgLSAxfV1cbiAgICAgICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZFBhZ2VzLmluY2x1ZGVzKGluZGV4KSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9FbnRyeT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IHR5cGUgPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICByZW5kZXJlcj17cmVuZGVyZXJ9XG4gICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17cmVmcmVzaFZhbHVlU25hcHNob3R9PlxuICAgICAgICAgICAgICAgIDxMYWJlbD57bGFiZWx9PC9MYWJlbD4g8J+UhHsnICd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlU25hcHNob3R9XG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e3t9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWw+e2xhYmVsfTo8L0xhYmVsPnsnICd9XG4gICAgICAgICAgPFZhbHVlPlxuICAgICAgICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QodmFsdWUpKSl9XG4gICAgICAgICAgPC9WYWx1ZT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvRW50cnk+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwbG9yZXIoe1xuICB2YWx1ZSxcbiAgZGVmYXVsdEV4cGFuZGVkLFxuICByZW5kZXJlciA9IERlZmF1bHRSZW5kZXJlcixcbiAgcGFnZVNpemUgPSAxMDAsXG4gIGRlcHRoID0gMCxcbiAgLi4ucmVzdFxufSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRFeHBhbmRlZClcblxuICBjb25zdCB0b2dnbGUgPSBzZXQgPT4ge1xuICAgIHNldEV4cGFuZGVkKG9sZCA9PiAodHlwZW9mIHNldCAhPT0gJ3VuZGVmaW5lZCcgPyBzZXQgOiAhb2xkKSlcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBbXVxuXG4gIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG4gIGxldCBzdWJFbnRyaWVzXG4gIGNvbnN0IHN1YkVudHJ5UGFnZXMgPSBbXVxuXG4gIGNvbnN0IG1ha2VQcm9wZXJ0eSA9IHN1YiA9PiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IHBhdGguY29uY2F0KHN1Yi5sYWJlbClcbiAgICBjb25zdCBzdWJEZWZhdWx0RXhwYW5kZWQgPVxuICAgICAgZGVmYXVsdEV4cGFuZGVkID09PSB0cnVlXG4gICAgICAgID8geyBbc3ViLmxhYmVsXTogdHJ1ZSB9XG4gICAgICAgIDogZGVmYXVsdEV4cGFuZGVkPy5bc3ViLmxhYmVsXVxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdWIsXG4gICAgICBzdWJQYXRoOiBzdWIsXG4gICAgICBwYXRoOiBuZXdQYXRoLFxuICAgICAgZGVwdGg6IGRlcHRoICsgMSxcbiAgICAgIGRlZmF1bHRFeHBhbmRlZDogc3ViRGVmYXVsdEV4cGFuZGVkLFxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHR5cGUgPSAnYXJyYXknXG4gICAgc3ViRW50cmllcyA9IHZhbHVlLm1hcCgoZCwgaSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsOiBpLFxuICAgICAgICB2YWx1ZTogZCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHR5cGUgPSAnSXRlcmFibGUnXG4gICAgc3ViRW50cmllcyA9IEFycmF5LmZyb20odmFsdWUsICh2YWwsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHR5cGUgPSAnZnVuY3Rpb24nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHR5cGUgPSAnb2JqZWN0J1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBzdWJFbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdWJFbnRyaWVzKSB7XG4gICAgbGV0IGkgPSAwXG5cbiAgICB3aGlsZSAoaSA8IHN1YkVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBzdWJFbnRyeVBhZ2VzLnB1c2goc3ViRW50cmllcy5zbGljZShpLCBpICsgcGFnZVNpemUpKVxuICAgICAgaSA9IGkgKyBwYWdlU2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW5kZXJlcih7XG4gICAgaGFuZGxlRW50cnk6IGVudHJ5ID0+IChcbiAgICAgIDxFeHBsb3JlciBrZXk9e2VudHJ5LmxhYmVsfSByZW5kZXJlcj17cmVuZGVyZXJ9IHsuLi5yZXN0fSB7Li4uZW50cnl9IC8+XG4gICAgKSxcbiAgICB0eXBlLFxuICAgIHN1YkVudHJpZXMsXG4gICAgc3ViRW50cnlQYWdlcyxcbiAgICBkZXB0aCxcbiAgICB2YWx1ZSxcbiAgICBwYXRoLFxuICAgIGV4cGFuZGVkLFxuICAgIHRvZ2dsZSxcbiAgICBwYWdlU2l6ZSxcbiAgICAuLi5yZXN0LFxuICB9KVxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dvKHByb3BzOiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjQwcHhcIlxuICAgICAgaGVpZ2h0PVwiNDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE5MCAxOTBcIlxuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbFJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIGlkPVwib2ctd2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4LjAwMDAwMCwgLTIxLjAwMDAwMClcIj5cbiAgICAgICAgICA8ZyBpZD1cIkdyb3VwLTJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjguMDAwMDAwLCAzMS4wMDAwMDApXCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLCAxMC4wMDAwMDApXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0zOS43MjM5NzEyLDUxLjM0MzYyMzcgQzM2LjYzMTIyNCwzNi4zNjI4NzcgMzUuOTY3NTExMiwyNC44NzI3NzIyIDM3Ljk2NjYzMzEsMTYuNTI5MzU1MSBDMzkuMTU1NTk2NSwxMS41NjcxNjc4IDQxLjMyOTMwODgsNy41MTkwODQ2MiA0NC42MzQ2MDY0LDQuNTk4NDYzMDUgQzQ4LjEyNDEzOTQsMS41MTUwNDc3NyA1Mi41MzYwMzI3LDAuMDAyMDEyMTY2MDYgNTcuNDkzMjU3LDAuMDAyMDEyMTY2MDYgQzY1LjY3MTIwMTMsMC4wMDIwMTIxNjYwNiA3NC4yNjgyNjAyLDMuNzI3MzIxNDMgODMuNDU1NzI0NiwxMC44MDQ0MjY0IEM4Ny4yMDMxMjAzLDEzLjY5MTA0NTggOTEuMDkyNDM2NiwxNy4xNzA0MTEgOTUuMTMxNjUxNSwyMS4yNDQ0NzQ2IEM5NS40NTMxNDA0LDIwLjgzMTAyNjUgOTUuODE2NTQxNiwyMC40NDEwNDUzIDk2LjIyMTQzMDEsMjAuMDgwNjE1MiBDMTA3LjY0MDk4LDkuOTE0OTcxNTggMTE3LjI1NTI0NSwzLjU5ODkyNzE2IDEyNS40Nzg0MDgsMS4xNjM2NTA2OCBDMTMwLjM2Nzg5OSwtMC4yODQzNjQwMDUgMTM0Ljk1ODUyNiwtMC40MjIzMTc5NzggMTM5LjEzODkzNiwwLjk4MzAzMTAyMSBDMTQzLjU1MTYzMSwyLjQ2NjQ2ODQ0IDE0Ny4wNjc2Niw1LjUzMjk0ODg4IDE0OS41NDgzMTQsOS44MjgxMDkxMiBDMTUzLjY0MjI4OCwxNi45MTY2NzM1IDE1NC43MjE5MTgsMjYuMjMxMDk4MyAxNTMuMTk1NTk1LDM3LjczMjAyNDMgQzE1Mi41NzM0NTEsNDIuNDE5OTExMiAxNTEuNTA5ODUsNDcuNTI2MzgzMSAxNTAuMDA3MDk0LDUzLjA1OTMxNTMgQzE1MC41NzQwNDUsNTMuMTI3NzA4NiAxNTEuMTQyNDE2LDUzLjI1MzI4MDggMTUxLjcwNTA0MSw1My40Mzk1Mjk3IEMxNjYuMTkzOTMyLDU4LjIzNTg2NzggMTc2LjQ1MzU4Miw2My4zOTM3NDYyIDE4Mi42NjUwMjEsNjkuMjg4MjgzOSBDMTg2LjM2MDY2OSw3Mi43OTUzODMxIDE4OC43NzM5NzIsNzYuNjk5ODQzNCAxODkuNjQ2MzY1LDgxLjAyMTgyMDQgQzE5MC41NjcxNzYsODUuNTgzNjc0NiAxODkuNjY5MzEzLDkwLjE1OTMzMTYgMTg3LjE5MTU0OCw5NC40NTEyOTY3IEMxODMuMTA1MjExLDEwMS41Mjk2MTQgMTc1LjU5MTY0MywxMDcuMTEyMjEgMTY0Ljg4NzU4NywxMTEuNTM0MDMxIEMxNjAuNTg5NTUyLDExMy4zMDk1MzkgMTU1LjcyNjU3OSwxMTQuOTE3NTU5IDE1MC4yOTMyNTksMTE2LjM2Mzc0OCBDMTUwLjU0MTE3NiwxMTYuOTIyOTIgMTUwLjczMzUyMSwxMTcuNTE2NzU5IDE1MC44NjIxMzgsMTE4LjEzOTc1OCBDMTUzLjk1NDg4NiwxMzMuMTIwNTA1IDE1NC42MTg1OTgsMTQ0LjYxMDYxIDE1Mi42MTk0NzcsMTUyLjk1NDAyNyBDMTUxLjQzMDUxMywxNTcuOTE2MjE0IDE0OS4yNTY4MDEsMTYxLjk2NDI5NyAxNDUuOTUxNTAzLDE2NC44ODQ5MTkgQzE0Mi40NjE5NywxNjcuOTY4MzM0IDEzOC4wNTAwNzcsMTY5LjQ4MTM3IDEzMy4wOTI4NTMsMTY5LjQ4MTM3IEMxMjQuOTE0OTA4LDE2OS40ODEzNyAxMTYuMzE3ODUsMTY1Ljc1NjA2MSAxMDcuMTMwMzg1LDE1OC42Nzg5NTYgQzEwMy4zNDMxMDQsMTU1Ljc2MTYxMyA5OS40MTA4NjU1LDE1Mi4yMzg4MzkgOTUuMzI1NDMzNywxNDguMTA4NjE5IEM5NC45MDUwNzUzLDE0OC43NjU0NzQgOTQuMzg4OTY4MSwxNDkuMzc2MDExIDkzLjc3ODU2OTksMTQ5LjkxOTM4NSBDODIuMzU5MDE5OCwxNjAuMDg1MDI4IDcyLjc0NDc1NSwxNjYuNDAxMDczIDY0LjUyMTU5MTUsMTY4LjgzNjM0OSBDNTkuNjMyMTAwOSwxNzAuMjg0MzY0IDU1LjA0MTQ3MzYsMTcwLjQyMjMxOCA1MC44NjEwNjM2LDE2OS4wMTY5NjkgQzQ2LjQ0ODM2ODYsMTY3LjUzMzUzMiA0Mi45MzIzNDA0LDE2NC40NjcwNTEgNDAuNDUxNjg2MiwxNjAuMTcxODkxIEMzNi4zNTc3MTE2LDE1My4wODMzMjcgMzUuMjc4MDgyMywxNDMuNzY4OTAyIDM2LjgwNDQwNTMsMTMyLjI2Nzk3NiBDMzcuNDQ5MDM4LDEyNy40MTA2MzQgMzguNTY3NjIsMTIyLjEwMzg5OCA0MC4xNTc1ODkxLDExNi4zMzkwMDkgQzM5LjUzNjEwNDEsMTE2LjI3NjEwNCAzOC45MTIwNzU0LDExNi4xNDQ4MTYgMzguMjk0OTU5MSwxMTUuOTQwNTI5IEMyMy44MDYwNjg0LDExMS4xNDQxOTEgMTMuNTQ2NDE4NCwxMDUuOTg2MzEyIDcuMzM0OTc4OTIsMTAwLjA5MTc3NSBDMy42MzkzMzEyMSw5Ni41ODQ2NzU0IDEuMjI2MDI3NTIsOTIuNjgwMjE1MSAwLjM1MzYzNTIzNSw4OC4zNTgyMzgxIEMtMC41NjcxNzYzMzMsODMuNzk2MzgzOSAwLjMzMDY4NjU4MSw3OS4yMjA3MjY5IDIuODA4NDUyMzYsNzQuOTI4NzYxOCBDNi44OTQ3ODg2Myw2Ny44NTA0NDQzIDE0LjQwODM1NjUsNjIuMjY3ODQ4MSAyNS4xMTI0MTMzLDU3Ljg0NjAyNzMgQzI5LjUzODUxNDMsNTYuMDE3NjE1NCAzNC41NjM3MjA4LDU0LjM2NjgyMiA0MC4xOTM5Mzk0LDUyLjg4NzQ2NzQgQzM5Ljk5MzMzOTMsNTIuMzk2OTE3MSAzOS44MzQ5Mzc0LDUxLjg4MTEyMzUgMzkuNzIzOTcxMiw1MS4zNDM2MjM3IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMwMDJDNEJcIlxuICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDk1LjAwMDAwMCwgODUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05NS4wMDAwMDAsIC04NS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk05MS43MzUsMTEwIEw5MS43MzUsMTE2IEw4MC42MzIyMDUxLDExNiBDNzguODQxMTI4NiwxMTYgNzcuMTg2ODYxNCwxMTUuMDQxOTc1IDc2LjI5NTQ0ODksMTEzLjQ4ODQ4MyBMNzQuMjk0LDExMCBMOTEuNzM1LDExMCBaIE0xMTYuMTgxLDExMCBMMTE0LjE4MDI1NiwxMTMuNDg4NDgzIEMxMTMuMjg4ODQ0LDExNS4wNDE5NzUgMTExLjYzNDU3NiwxMTYgMTA5Ljg0MzUsMTE2IEw5OC43MzUsMTE2IEw5OC43MzUsMTEwIEwxMTYuMTgxLDExMCBaIE05MS43MzUsOTYgTDkxLjczNSwxMDMgTDcwLjI3NywxMDMgTDY2LjI2LDk2IEw5MS43MzUsOTYgWiBNMTI0LjIxNSw5NiBMMTIwLjE5OCwxMDMgTDk4LjczNSwxMDMgTDk4LjczNSw5NiBMMTI0LjIxNSw5NiBaIE05MS43MzUsODIgTDkxLjczNSw4OSBMNjIuMjQ0LDg5IEw2MS42NjMyNDM4LDg3Ljk4ODQ4MjYgQzYwLjc3ODkxODcsODYuNDQ3MzQxNyA2MC43Nzg5MTg3LDg0LjU1MjY1ODMgNjEuNjYzMjQzOCw4My4wMTE1MTc0IEw2Mi4yNDMsODIgTDkxLjczNSw4MiBaIE0xMjguMjMyLDgyIEwxMjguODEyNDYxLDgzLjAxMTUxNzQgQzEyOS42OTY3ODYsODQuNTUyNjU4MyAxMjkuNjk2Nzg2LDg2LjQ0NzM0MTcgMTI4LjgxMjQ2MSw4Ny45ODg0ODI2IEwxMjguMjMxLDg5IEw5OC43MzUsODkgTDk4LjczNSw4MiBMMTI4LjIzMiw4MiBaIE05MS43MzUsNjggTDkxLjczNSw3NSBMNjYuMjYsNzUgTDcwLjI3Nyw2OCBMOTEuNzM1LDY4IFogTTEyMC4xOTgsNjggTDEyNC4yMTUsNzUgTDk4LjczNSw3NSBMOTguNzM1LDY4IEwxMjAuMTk4LDY4IFogTTkxLjczNSw1NSBMOTEuNzM1LDYxIEw3NC4yOTMsNjEgTDc2LjI5NTQ0ODksNTcuNTExNTE3NCBDNzcuMTg2ODYxNCw1NS45NTgwMjUgNzguODQxMTI4Niw1NSA4MC42MzIyMDUxLDU1IEw5MS43MzUsNTUgWiBNMTA5Ljg0MzUsNTUgQzExMS42MzQ1NzYsNTUgMTEzLjI4ODg0NCw1NS45NTgwMjUgMTE0LjE4MDI1Niw1Ny41MTE1MTc0IEwxMTYuMTgyLDYxIEw5OC43MzUsNjEgTDk4LjczNSw1NSBMMTA5Ljg0MzUsNTUgWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJQb2x5Z29uLTJcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZEOTRDXCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTU0Ljg2MDE3MjksOTguMzU3NzU3OCBDNTYuMTcxNTIyNCw5Ny42MDgyODU2IDU3LjgzNjAyNDYsOTguMDc0NjAxNCA1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU4LjU3Nzk0MjQsOTkuMzk5MzAzNCBMNTkuMDUyNTg0MywxMDAuMjQzNTIgQzYyLjg1NjMzOTIsMTA2Ljk4Mjk5MyA2Ni44MTkwMTE2LDExMy4zODAxNzYgNzAuOTQwNjAxNiwxMTkuNDM1MDY4IEM3NS44MDc4ODA4LDEyNi41ODU0MjcgODEuMjgxODQsMTMzLjgyNDExIDg3LjM2MjQ3OTIsMTQxLjE1MTExNSBDODguMzE2ODc3OCwxNDIuMzAxMTQgODguMTg0OTQzNywxNDQuMDExMTc2IDg3LjA2NTY4NiwxNDQuOTk3OTM3IEw4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODYuNDU0MjA4NSwxNDUuNTM0NjI1IEM2Ni4zNDY1Mzg5LDE2My4xMDMzMTQgNTMuMjc3ODE4OCwxNjYuNjEyNTUyIDQ3LjI0ODA0ODIsMTU2LjA2MjM0MSBDNDEuMzUwMDY1MiwxNDUuNzQyNzE3IDQzLjQ4NDQ5MTUsMTI2Ljk4Mjg4OCA1My42NTEzMjc0LDk5Ljc4Mjg1MjYgQzUzLjg3NjgxOCw5OS4xNzk1ODIxIDU0LjMwNDU4NjEsOTguNjc1MjkxIDU0Ljg2MDE3MjksOTguMzU3NzU3OCBaIE0xNDAuNTM0MTc3LDExOS4wNDE1MDQgQzE0MS45ODYxMzEsMTE4Ljc4NTE3NyAxNDMuMzc1NDk2LDExOS43NDIxMzggMTQzLjY1OTYzLDEyMS4xOTQyNDIgTDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuODEyODE1LDEyMS45ODYzNzYgQzE0OC43ODIzNjUsMTQ3Ljk5NTQ1OSAxNDUuMjgzMzQ4LDE2MSAxMzMuMzE1NzY0LDE2MSBDMTIxLjYwOTc0NSwxNjEgMTA2LjcwODcyNCwxNDkuOTA5MDA3IDg4LjYxMjcwMTgsMTI3LjcyNzAyMiBDODguMjExMzQ5NSwxMjcuMjM1MDQ3IDg3Ljk5NDU3MjMsMTI2LjYxNzM3MSA4OCwxMjUuOTgxNTA5IEM4OC4wMTMxNTgsMTI0LjQ4MDY4NiA4OS4yMzU3ODU0LDEyMy4yNzQ2NTEgOTAuNzMwOTE4LDEyMy4yODc3NTYgTDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MS42ODQ2NTQ0LDEyMy4yOTQ1MzEgQzk5LjMwNTY5NzksMTIzLjMzNTk5NCAxMDYuNzE0Mzg3LDEyMy4wNzE1OTEgMTEzLjkxMDcyMywxMjIuNTAxMzIzIEMxMjIuNDA5MDM5LDEyMS44Mjc4OCAxMzEuMjgzNTIzLDEyMC42NzQ2MDcgMTQwLjUzNDE3NywxMTkuMDQxNTA0IFogTTE0Ny40MDg3MjYsNjMuODExOTY2MyBDMTQ3LjkzMjEzOSw2Mi40MDI2OTAzIDE0OS41MDgzODYsNjEuNjYzNDUzNyAxNTAuOTU0NTgxLDYyLjE0OTAxMiBMMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MS43NDI1NTIsNjIuNDE1NDg1NCBDMTc3LjU4Mzc2Myw3MS4yMTc5MjIgMTg3LjQwMjM1Niw4MC44OTE2ODA1IDE4MS4xOTgzMzIsOTEuNDM2NzYwOSBDMTc1LjEyOTkwNCwxMDEuNzUxMzY2IDE1Ny40ODQzNDcsMTA5LjI2MDMzOSAxMjguMjYxNjYsMTEzLjk2MzY3OCBDMTI3LjYxMzUyOSwxMTQuMDY3OTk0IDEyNi45NDg2NDMsMTEzLjk0NTk2OSAxMjYuMzgyNzM1LDExMy42MTg4NDMgQzEyNS4wNDcwMjUsMTEyLjg0NjcyOSAxMjQuNjAyMDQ2LDExMS4xNTgyMTQgMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuMzg4ODQ4LDEwOS44NDc0MzggTDEyNS44ODkzMjgsMTA5LjAxMDUgQzEyOS44NzcxODMsMTAyLjMxNjMzIDEzMy40ODEzNTgsOTUuNjU0MjYyMSAxMzYuNzAxODU0LDg5LjAyNDI5NTcgQzE0MC41MDUwMSw4MS4xOTQ4MTc5IDE0NC4wNzM5NjcsNzIuNzkwNzA4MSAxNDcuNDA4NzI2LDYzLjgxMTk2NjMgWiBNNjEuNzM4MzM5OCw1Ni4wMzYzMjE4IEM2Mi4zODY0NzA4LDU1LjkzMjAwNjMgNjMuMDUxMzU2NSw1Ni4wNTQwMzE1IDYzLjYxNzI2NDYsNTYuMzgxMTU3MyBDNjQuOTUyOTc1NCw1Ny4xNTMyNzEgNjUuMzk3OTUzOCw1OC44NDE3ODYyIDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuNjExMTUxNyw2MC4xNTI1NjE1IEw2NC4xMTA2NzE4LDYwLjk4OTUwMDEgQzYwLjEyMjgxNjgsNjcuNjgzNjY5OSA1Ni41MTg2NDE2LDc0LjM0NTczNzkgNTMuMjk4MTQ2Miw4MC45NzU3MDQzIEM0OS40OTQ5OSw4OC44MDUxODIxIDQ1LjkyNjAzMjgsOTcuMjA5MjkxOSA0Mi41OTEyNzQ0LDEwNi4xODgwMzQgQzQyLjA2Nzg2MDgsMTA3LjU5NzMxIDQwLjQ5MTYxNDIsMTA4LjMzNjU0NiAzOS4wNDU0MTksMTA3Ljg1MDk4OCBMMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM4LjI1NzQ0NzUsMTA3LjU4NDUxNSBDMTIuNDE2MjM3Miw5OC43ODIwNzggMi41OTc2NDM5OCw4OS4xMDgzMTk1IDguODAxNjY3ODYsNzguNTYzMjM5MSBDMTQuODcwMDk1Nyw2OC4yNDg2MzM1IDMyLjUxNTY1Myw2MC43Mzk2NjExIDYxLjczODMzOTgsNTYuMDM2MzIxOCBaIE0xMDMuNTQ1NzkyLDI0LjQ2NTM3NDYgQzEyMy42NTM0NjEsNi44OTY2ODY0MSAxMzYuNzIyMTgxLDMuMzg3NDQ3NzggMTQyLjc1MTk1MiwxMy45Mzc2NTg3IEMxNDguNjQ5OTM1LDI0LjI1NzI4MjYgMTQ2LjUxNTUwOCw0My4wMTcxMTIyIDEzNi4zNDg2NzMsNzAuMjE3MTQ3NCBDMTM2LjEyMzE4Miw3MC44MjA0MTc5IDEzNS42OTU0MTQsNzEuMzI0NzA5IDEzNS4xMzk4MjcsNzEuNjQyMjQyMiBDMTMzLjgyODQ3OCw3Mi4zOTE3MTQ0IDEzMi4xNjM5NzUsNzEuOTI1Mzk4NiAxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMS40MjIwNTgsNzAuNjAwNjk2NiBMMTMwLjk0NzQxNiw2OS43NTY0Nzk4IEMxMjcuMTQzNjYxLDYzLjAxNzAwNjUgMTIzLjE4MDk4OCw1Ni42MTk4MjM5IDExOS4wNTkzOTgsNTAuNTY0OTMyIEMxMTQuMTkyMTE5LDQzLjQxNDU3MjcgMTA4LjcxODE2LDM2LjE3NTg5MDMgMTAyLjYzNzUyMSwyOC44NDg4ODQ3IEMxMDEuNjgzMTIyLDI3LjY5ODg2MDIgMTAxLjgxNTA1NiwyNS45ODg4MjQzIDEwMi45MzQzMTQsMjUuMDAyMDYyOSBMMTAyLjkzNDMxNCwyNS4wMDIwNjI5IFogTTU3LjY4NDIzNjEsOCBDNjkuMzkwMjU1MSw4IDg0LjI5MTI3NTgsMTkuMDkwOTkyNiAxMDIuMzg3Mjk4LDQxLjI3Mjk3NzcgQzEwMi43ODg2NTEsNDEuNzY0OTUyNyAxMDMuMDA1NDI4LDQyLjM4MjYyODggMTAzLDQzLjAxODQ5MTEgQzEwMi45ODY4NDIsNDQuNTE5MzE0NCAxMDEuNzY0MjE1LDQ1LjcyNTM0ODkgMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEwxMDAuMjY5MDgyLDQ1LjcxMjI0NDUgTDk5LjMxNTM0NTYsNDUuNzA1NDY4OSBDOTEuNjk0MzAyMSw0NS42NjQwMDYzIDg0LjI4NTYxMjYsNDUuOTI4NDA5MSA3Ny4wODkyNzcyLDQ2LjQ5ODY3NzMgQzY4LjU5MDk2MTIsNDcuMTcyMTIgNTkuNzE2NDc2Nyw0OC4zMjUzOTMgNTAuNDY1ODIzNSw0OS45NTg0OTYyIEM0OS4wMTM4NjkxLDUwLjIxNDgyMzEgNDcuNjI0NTA0NCw0OS4yNTc4NjE4IDQ3LjM0MDM2OTcsNDcuODA1NzU4IEw0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMTg3MTg0Niw0Ny4wMTM2MjM1IEM0Mi4yMTc2MzQ3LDIxLjAwNDU0MTIgNDUuNzE2NjUxOSw4IDU3LjY4NDIzNjEsOCBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIkNvbWJpbmVkLVNoYXBlXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGNDE1NFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gIClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSdcblxuaW1wb3J0IHVzZUxvY2FsU3RvcmFnZSBmcm9tICcuL3VzZUxvY2FsU3RvcmFnZSdcbmltcG9ydCB7IHVzZUlzTW91bnRlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmltcG9ydCB7IFBhbmVsLCBCdXR0b24gfSBmcm9tICcuL3N0eWxlZENvbXBvbmVudHMnXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBkZWZhdWx0VGhlbWUgYXMgdGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuLy8gaW1wb3J0IHsgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgZ2V0UXVlcnlTdGF0dXNDb2xvciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgRXhwbG9yZXIgZnJvbSAnLi9FeHBsb3JlcidcbmltcG9ydCBMb2dvIGZyb20gJy4vTG9nbydcblxuaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVhY3QgdGFibGUgdG8gYXR0YWNoIHRoZSBkZXZ0b29scyB0by5cbiAgICovXG4gIHRhYmxlOiBhbnlcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHBhbmVsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBldGMuXG4gICAqL1xuICBwYW5lbFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgY2xvc2UgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgY2xvc2VCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHRvZ2dsZSBidXR0b24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIG9uQ2xpY2sgKGV4dGVuZCBkZWZhdWx0IGhhbmRsZXIpLCBldGMuXG4gICAqL1xuICB0b2dnbGVCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byByZW5kZXIgdGhlIGRldnRvb2xzIGluc2lkZSBhIGRpZmZlcmVudCB0eXBlIG9mIGNvbnRhaW5lciBlbGVtZW50IGZvciBhMTF5IHB1cnBvc2VzLlxuICAgKiBBbnkgc3RyaW5nIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgdmFsaWQgaW50cmluc2ljIEpTWCBlbGVtZW50IGlzIGFsbG93ZWQuXG4gICAqIERlZmF1bHRzIHRvICdmb290ZXInLlxuICAgKi9cbiAgY29udGFpbmVyRWxlbWVudD86IHN0cmluZyB8IGFueVxufVxuXG5pbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3Qgc3R5bGUgb2JqZWN0IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBpbmxpbmUgc3R5bGVzXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBSZWFjdCBjbGFzc05hbWUgcHJvcGVydHkgdXNlZCB0byBzdHlsZSBhIGNvbXBvbmVudCB3aXRoIGNsYXNzZXNcbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogQSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGFuZWwgaXMgb3BlbiBvciBjbG9zZWRcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0b2dnbGVzIHRoZSBvcGVuIGFuZCBjbG9zZSBzdGF0ZSBvZiB0aGUgcGFuZWxcbiAgICovXG4gIHNldElzT3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzKHtcbiAgaW5pdGlhbElzT3BlbixcbiAgdGFibGUsXG4gIHBhbmVsUHJvcHMgPSB7fSxcbiAgdG9nZ2xlQnV0dG9uUHJvcHMgPSB7fSxcbiAgY29udGFpbmVyRWxlbWVudDogQ29udGFpbmVyID0gJ2Zvb3RlcicsXG59OiBEZXZ0b29sc09wdGlvbnMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3Qgcm9vdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcGFuZWxSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgJ3JlYWN0VGFibGVEZXZ0b29sc09wZW4nLFxuICAgIGluaXRpYWxJc09wZW5cbiAgKVxuICBjb25zdCBpc01vdW50ZWQgPSB1c2VJc01vdW50ZWQoKVxuXG4gIGNvbnN0IHsgc3R5bGU6IHBhbmVsU3R5bGUgPSB7fSwgLi4ub3RoZXJQYW5lbFByb3BzIH0gPSBwYW5lbFByb3BzXG5cbiAgY29uc3Qge1xuICAgIHN0eWxlOiB0b2dnbGVCdXR0b25TdHlsZSA9IHt9LFxuICAgIG9uQ2xpY2s6IG9uVG9nZ2xlQ2xpY2ssXG4gICAgLi4ub3RoZXJUb2dnbGVCdXR0b25Qcm9wc1xuICB9ID0gdG9nZ2xlQnV0dG9uUHJvcHNcblxuICAvLyBEbyBub3QgcmVuZGVyIG9uIHRoZSBzZXJ2ZXJcbiAgaWYgKCFpc01vdW50ZWQoKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgcmVmPXtyb290UmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNcIj5cbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgey4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiT3BlbiBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICAgICAgICAgIG9uVG9nZ2xlQ2xpY2sgJiYgb25Ub2dnbGVDbGljayhlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICBtYXJnaW46ICcuNXJlbScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMS41ZW0nLFxuICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgICAgICAgIC4uLnRvZ2dsZUJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TG9nbyBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFxuICAgICAgICAgICAgcmVmPXtwYW5lbFJlZiBhcyBhbnl9XG4gICAgICAgICAgICB7Li4ub3RoZXJQYW5lbFByb3BzfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBzZXRJc09wZW49e3NldElzT3Blbn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBEZXZ0b29sc1BhbmVsT3B0aW9uc1xuPihmdW5jdGlvbiBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbChwcm9wcywgcmVmKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3Qge1xuICAgIHRhYmxlLFxuICAgIGlzT3BlbiA9IHRydWUsXG4gICAgc2V0SXNPcGVuLFxuICAgIC4uLnBhbmVsUHJvcHNcbiAgfSA9IHByb3BzIGFzIERldnRvb2xzUGFuZWxPcHRpb25zICYge1xuICAgIHRhYmxlOiBUYWJsZTxhbnk+XG4gIH1cblxuICAvLyBjb25zdCBbYWN0aXZlTWF0Y2hJZCwgc2V0QWN0aXZlUm91dGVJZF0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gIC8vICAgJ3JlYWN0VGFibGVEZXZ0b29sc0FjdGl2ZVJvdXRlSWQnLFxuICAvLyAgICcnLFxuICAvLyApXG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPFBhbmVsIHJlZj17cmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFwiIHsuLi5wYW5lbFByb3BzfT5cbiAgICAgICAgPHN0eWxlXG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICoge1xuICAgICAgICAgICAgICBzY3JvbGxiYXItY29sb3I6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH0gJHt0aGVtZS5ncmF5fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IC41ZW07XG4gICAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNDAlJyxcbiAgICAgICAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7dGhlbWUuZ3JheUFsdH1gLFxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdGhlbWUuYmFja2dyb3VuZEFsdCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ29cbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnY2xhbXAoLjhyZW0sIDJ2dywgMS4zcmVtKScsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZWFjdCBUYWJsZXsnICd9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGV2dG9vbHNcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIFJlYWN0IFRhYmxlIERldnRvb2xzXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIGZsZXg6ICcxJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkluc3RhbmNlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGV9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTdGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFN0YXRlKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0QWxsQ29sdW1ucygpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb3JlIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0Q29yZVJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJGaWx0ZXJlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEZpbHRlcmVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlNvcnRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFNvcnRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJHcm91cGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0R3JvdXBlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJFeHBhbmRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEV4cGFuZGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7LyogPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJvdyBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1BhbmVsPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKVxufSlcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctZm9yZWdyb3VuZC8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGZsZXhSZW5kZXIsIHR5cGUgSGVhZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQXJyb3dEb3duV2lkZU5hcnJvdywgQXJyb3dVcFdpZGVOYXJyb3csIENoZXZyb25Eb3duLCBNb3ZlRG93biwgTW92ZVVwLCBQaW4sIFBpbk9mZiwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbn0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgaGVhZGVyOiBIZWFkZXI8VERhdGEsIHVua25vd24+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlcjxURGF0YT4ocHJvcHM6IEhlYWRlclByb3BzPFREYXRhPikge1xuICBjb25zdCB7IGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIHtmbGV4UmVuZGVyKGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciwgaGVhZGVyLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkTG9hZGluZ0Jhcih7IGNsYXNzTmFtZSB9OiBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtbG9hZGluZy1iYXJcbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLVsycHhdIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtYmctdGFibGUtYm9yZGVyIHBzLXotNTBcIiwgY2xhc3NOYW1lKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWFuaW1hdGUtaW5kZXRlcm1pbmF0ZS1iYXIgcHMtaC1mdWxsIHBzLXctMS8zIHBzLXJvdW5kZWQtci1mdWxsIHBzLWJnLXByaW1hcnlcIiAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCwgQ2hldnJvbnNMZWZ0LCBDaGV2cm9uc1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHZhcmlhbnQ/OiBcImJhc2ljXCIgfCBcIm51bWVyaWNcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkUGFnaW5hdGlvbihwcm9wczogRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZSwgdmFyaWFudCA9IFwiYmFzaWNcIiB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBwYWdlSW5kZXggfSA9IHRhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbjtcbiAgY29uc3QgcGFnZUNvdW50ID0gdGFibGUuZ2V0UGFnZUNvdW50KCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJvdW5kZWQtYi1sZyBwcy1vdmVyZmxvdy1jbGlwIHBzLXN0aWNreSBwcy1ib3R0b20tMCBwcy1sZWZ0LTAgcHMtYm9yZGVyLXQtMCB3LWZ1bGwgcHMtei0yMCBwcy1wLTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXNwYWNlLXgtMiBwcy1weS0yIHBzLXB4LTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy1iYWNrZHJvcC1ibHVyLXNtIHBzLWJnLXRhYmxlLWhlYWQvOTBcIj5cbiAgICAgICAge3ZhcmlhbnQgPT09IFwiYmFzaWNcIiA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQcmV2aW91c1xuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBOZXh0XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgUGFnZVxuICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBtaW49ezF9XG4gICAgICAgICAgICAgICAgICBtYXg9e3BhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYWdlSW5kZXggKyAxfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0xNlwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZUluZGV4ID0gZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIC0gMSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXNocmluay0wIHBzLXctbWF4XCI+b2Yge3BhZ2VDb3VudH08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUNvdW50IC0gMSl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtblBpbm5pbmdTdHlsZXMoY29sdW1uOiBDb2x1bW48UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBraW5kOiBcImhlYWRlclwiIHwgXCJjZWxsXCIpIHtcbiAgY29uc3QgaXNQaW5uZWQgPSBjb2x1bW4uZ2V0SXNQaW5uZWQoKTtcbiAgY29uc3QgaXNMZWZ0UGlubmVkID0gaXNQaW5uZWQgPT09IFwibGVmdFwiO1xuICBjb25zdCBpc1JpZ2h0UGlubmVkID0gaXNQaW5uZWQgPT09IFwicmlnaHRcIjtcbiAgY29uc3QgaXNTZWxlY3RDb2x1bW4gPSBjb2x1bW4uaWQgPT09IFwiX19wc19zZWxlY3RcIjtcblxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogY24oXG4gICAgICBcInBzLWdyb3VwIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgIFwicHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXRleHQtZWxsaXBzaXNcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYgXCJwcy1zdGlja3lcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJoZWFkZXJcIiAmJiAoaXNTZWxlY3RDb2x1bW4gPyBcInBzLXotMzBcIiA6IFwicHMtei0yMFwiKSxcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJjZWxsXCIgJiYgKGlzU2VsZWN0Q29sdW1uID8gXCJwcy16LTEwXCIgOiBcInBzLXotMFwiKSxcbiAgICAgIGlzTGVmdFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bMnB4XzBfNXB4Xy0ycHhfcmdiYSgwLDAsMCwwLjEpXVwiLFxuICAgICAgaXNSaWdodFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bLTJweF8wXzVweF8tMnB4X3JnYmEoMCwwLDAsMC4xKV1cIixcbiAgICApLFxuICAgIHN0eWxlOiB7XG4gICAgICBtaW5XaWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICB3aWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICBsZWZ0OiBpc0xlZnRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0U3RhcnQoXCJsZWZ0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiBpc1JpZ2h0UGlubmVkID8gYCR7Y29sdW1uLmdldEFmdGVyKFwicmlnaHRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcG9zaXRpb246IGlzUGlubmVkID8gKFwic3RpY2t5XCIgYXMgY29uc3QpIDogdW5kZWZpbmVkLFxuICAgIH0gYXMgQ1NTUHJvcGVydGllcyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgKiBhcyBUb29sdGlwUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdG9vbHRpcFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRvb2x0aXBQcm92aWRlciA9IFRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXI7XG5cbmNvbnN0IFRvb2x0aXAgPSBUb29sdGlwUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRvb2x0aXBUcmlnZ2VyID0gVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBUb29sdGlwQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1iZy1wcmltYXJ5IHBzLXB4LTMgcHMtcHktMS41IHBzLXRleHQteHMgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtYW5pbWF0ZS1pbiBwcy1mYWRlLWluLTAgcHMtem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1Rvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ub29sdGlwQ29udGVudC5kaXNwbGF5TmFtZSA9IFRvb2x0aXBQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgVG9vbHRpcCwgVG9vbHRpcFRyaWdnZXIsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIgfTtcbiIsICJpbXBvcnQgeyBLZXlSb3VuZCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlckNlbGwoeyBjb2x1bW4gfTogeyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAge2NvbHVtbi5pc0luUHJpbWFyeUtleSAmJiAoXG4gICAgICAgIDxUb29sdGlwUHJvdmlkZXIgZGVsYXlEdXJhdGlvbj17MTIwfT5cbiAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICA8S2V5Um91bmQgc2l6ZT17MTJ9IGNsYXNzTmFtZT1cInBzLXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50IHNpZGU9XCJib3R0b21cIiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlByaW1hcnkgS2V5PC9zcGFuPlxuICAgICAgICAgICAgPC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtbWVkaXVtIHBzLXRydW5jYXRlXCI+e2NvbHVtbi5uYW1lfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC83MCBwcy1sb3dlcmNhc2UgcHMtdHJ1bmNhdGVcIj5cbiAgICAgICAge2NvbHVtbi5kYXRhdHlwZS5uYW1lfVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiLi9Cb29sZWFuSW5wdXRcIjtcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gXCIuL0RhdGVJbnB1dFwiO1xuaW1wb3J0IHsgRW51bUlucHV0IH0gZnJvbSBcIi4vRW51bUlucHV0XCI7XG5pbXBvcnQgeyBKc29uSW5wdXQgfSBmcm9tIFwiLi9Kc29uSW5wdXRcIjtcbmltcG9ydCB7IE51bWVyaWNJbnB1dCB9IGZyb20gXCIuL051bWVyaWNJbnB1dFwiO1xuaW1wb3J0IHsgUmF3SW5wdXQgfSBmcm9tIFwiLi9SYXdJbnB1dFwiO1xuaW1wb3J0IHsgVGltZUlucHV0IH0gZnJvbSBcIi4vVGltZUlucHV0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dChwcm9wczoge1xuICBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCB7IGNlbGwsIGNvbHVtbiwgb25TdWJtaXQgfSA9IHByb3BzO1xuICBjb25zdCB7IGdyb3VwLCBvcHRpb25zLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG4gIGNvbnN0IHJlYWRvbmx5ID0gY29sdW1uLmlzQ29tcHV0ZWQgfHwgcHJvcHMucmVhZG9ubHk7XG5cbiAgY29uc3QgY2VsbFZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIC8vIG9uIHJvdyBpbnNlcnRpb25zLCB3ZSB0cmVhdCB1bmRlZmluZWQgYXMgZW1wdHkgaW5wdXRcbiAgY29uc3QgdmFsdWUgPSBjZWxsVmFsdWUgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBjZWxsVmFsdWU7XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKc29uSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gb3B0aW9ucz17b3B0aW9uc30gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UmF3SW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17aXNPYmplY3RUeXBlKHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9sYWJlbFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQm9vbGVhbklucHV0KHByb3BzOiBCb29sZWFuSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCA/IGZhbHNlIDogKHZhbHVlIGFzIGJvb2xlYW4pKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlVG9TdWJtaXQgPSBzZXRUb051bGwgPyBudWxsIDogY3VycmVudFZhbHVlO1xuICAgIGlmICh2YWx1ZVRvU3VibWl0ICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQodmFsdWVUb1N1Ym1pdCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMCBwcy1weC0yXCI+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPVwiYm9vbGVhbi1pbnB1dFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIj5cbiAgICAgICAgICBCb29sZWFuXG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMjQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgIGlkPVwiYm9vbGVhbi1pbnB1dFwiXG4gICAgICAgICAgICBjaGVja2VkPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGRhdGEtdmFsdWVcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtZm9udC1tb25vXCJcbiAgICAgICAgICBpbml0aWFsPXt7IHg6IC00MCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgeDogMCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTIsIGRlbGF5OiAwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7c2V0VG9OdWxsID8gXCJOVUxMXCIgOiBTdHJpbmcoY3VycmVudFZhbHVlKX1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgTGFiZWxQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1sYWJlbFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBsYWJlbFZhcmlhbnRzID0gY3ZhKFxuICBcInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6cHMtb3BhY2l0eS03MFwiLFxuKTtcblxuY29uc3QgTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PiAmIFZhcmlhbnRQcm9wczx0eXBlb2YgbGFiZWxWYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPExhYmVsUHJpbWl0aXZlLlJvb3QgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24obGFiZWxWYXJpYW50cygpLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbkxhYmVsLmRpc3BsYXlOYW1lID0gTGFiZWxQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgTGFiZWwgfTtcbiIsICJpbXBvcnQgKiBhcyBTd2l0Y2hQcmltaXRpdmVzIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc3dpdGNoXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU3dpdGNoID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTd2l0Y2hQcmltaXRpdmVzLlJvb3RcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWlubGluZS1mbGV4IHBzLWgtNSBwcy13LTkgcHMtc2hyaW5rLTAgcHMtY3Vyc29yLXBvaW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtZnVsbCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0yIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGZvY3VzLXZpc2libGU6cHMtcmluZy1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLWJnLWlucHV0XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gICAgcmVmPXtyZWZ9XG4gID5cbiAgICA8U3dpdGNoUHJpbWl0aXZlcy5UaHVtYlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wb2ludGVyLWV2ZW50cy1ub25lIHBzLWJsb2NrIHBzLWgtNCBwcy13LTQgcHMtcm91bmRlZC1mdWxsIHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LWxnIHBzLXJpbmctMCBwcy10cmFuc2l0aW9uLXRyYW5zZm9ybSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10cmFuc2xhdGUteC00IGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtMFwiLFxuICAgICAgKX1cbiAgICAvPlxuICA8L1N3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbikpO1xuU3dpdGNoLmRpc3BsYXlOYW1lID0gU3dpdGNoUHJpbWl0aXZlcy5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTd2l0Y2ggfTtcbiIsICJpbXBvcnQgeyBDb3JuZXJEb3duTGVmdCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBJbnB1dEFjdGlvbnMgPSAoe1xuICBvblNhdmUsXG4gIG9uQ2FuY2VsLFxuICBvbkNsb3NlLFxuICBvbk51bGxDaGFuZ2UsXG4gIGlzTnVsbCA9IGZhbHNlLFxuICByZWFkb25seSxcbn06IElucHV0QWN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChvbk51bGxDaGFuZ2UpIG9uTnVsbENoYW5nZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIGlmIChvblNhdmUpIG9uU2F2ZSgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGlmIChvbkNhbmNlbCkgb25DYW5jZWwoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdGV4dC14cyBwcy1cIj5cbiAgICAgIHshcmVhZG9ubHkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTIgcHMtbXItYXV0b1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9PlxuICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICBTYXZlIGNoYW5nZXNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH0+XG4gICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtdGV4dC1bOHB4XSBwcy1sZWFkaW5nLW5vbmUgcHMtZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgIEVzY1xuICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgIENhbmNlbCBjaGFuZ2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7b25OdWxsQ2hhbmdlICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCIgaHRtbEZvcj1cInNldC1udWxsYWJsZVwiPlxuICAgICAgICAgICAgICAgIDxTd2l0Y2ggaWQ9XCJzZXQtbnVsbGFibGVcIiBjaGVja2VkPXtpc051bGx9IG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlTnVsbENoYW5nZX0gLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5TZXQgdG8gTlVMTDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIC8vIERldGVjdCBpZiBpbnB1dCBoYXMgdGltZSBjb21wb25lbnRcbiAgICAgIGNvbnN0IGhhc1RpbWUgPSBpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKTtcblxuICAgICAgLy8gSHVtYW4tcmVhZGFibGUgZm9ybWF0IChsb2NhbGl6ZWQpXG4gICAgICBpZiAoaGFzVGltZSkge1xuICAgICAgICAvLyBGb3IgdGltZXN0YW1wcywgc2hvdyBmdWxsIGRhdGUgYW5kIHRpbWVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIGRhdGVzLCBqdXN0IHNob3cgdGhlIGRhdGVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWREYXRlfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlSW5wdXRQcm9wcyB7XG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlucHV0KHByb3BzOiBVc2VJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlIH0gPSBwcm9wcztcblxuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlID8/IFwiXCIpO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtSW5wdXQocHJvcHM6IEVudW1JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIGNvbHVtbiwgdmFsdWUsIG9wdGlvbnMgPSBbXSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGwsIHZhbHVlXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7IC8vIFJlc2V0IG51bGwgc3RhdGUgYXMgd2VsbFxuICB9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLWZvbnQtbW9ubyBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1weC0yIHBzLXB5LTAgcHMtdy1mdWxsIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIHtjdXJyZW50VmFsdWV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1mbGV4LXdyYXAgcHMtZ2FwLTIgcHMtcC0yIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXSBwcy1tYXgtdy1bNTAwcHhdIHctZnVsbCBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLW92ZXJmbG93LXktc2Nyb2xsIHBzLW1heC1oLTMyXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXtvcHRpb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQ6IG9wdGlvbiA9PT0gY3VycmVudFZhbHVlID8gXCJkZWZhdWx0XCIgOiBcIm91dGxpbmVcIiB9KX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSnNvbklucHV0KHByb3BzOiBKc29uSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogKEpTT04ucGFyc2UoY3VycmVudFZhbHVlKSBhcyBvYmplY3QpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGpzb25WYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtYmFzZSBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNJbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0lucHV0KHByb3BzOiBOdW1lcmljSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSkpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gbnVtYmVyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcihjdXJyZW50VmFsdWUpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KG51bWVyaWNWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm51bWVyaWMtaW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgTnVtZXJpY1xuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0lucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3SW5wdXQocHJvcHM6IFJhd0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lSW5wdXQocHJvcHM6IFRpbWVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRpbWUgdmFsdWVzIGluIGEgaHVtYW4tcmVhZGFibGUgbWFubmVyXG4gIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGhhc1RpbWV6b25lID0gL1srLV1cXGR7Mn0oOlxcZHsyfSk/JC8udGVzdChpbnB1dFZhbHVlKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhgMjAwMC0wMS0wMSAke2lucHV0VmFsdWV9YCk7XG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiaDptbSBBXCIpICsgKGhhc1RpbWV6b25lID8gYCAoJHtkYXRlLmZvcm1hdChcIlpcIil9KWAgOiBcIlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5cXGQrKT8oWystXVxcZHsyfSg/OjpcXGR7Mn0pPyk/LztcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5wdXRWYWx1ZS5tYXRjaCh0aW1lUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hbMV0gfHwgXCIxMlwiLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtYXRjaFsyXSB8fCBcIjAwXCI7XG4gICAgICAgIGNvbnN0IHR6T2Zmc2V0ID0gbWF0Y2hbNF0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgcGVyaW9kID0gaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG4gICAgICAgIGNvbnN0IGhvdXIxMiA9IGhvdXJzICUgMTIgPT09IDAgPyAxMiA6IGhvdXJzICUgMTI7XG5cbiAgICAgICAgcmV0dXJuIGAke2hvdXIxMn06JHttaW51dGVzfSAke3BlcmlvZH0ke3R6T2Zmc2V0ID8gYCAoJHt0ek9mZnNldH0pYCA6IFwiXCJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWRUaW1lfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLCBwcm9wcyB9KX1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVmlldyB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXZpZXdcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG50eXBlIE5hdmlnYXRpb25Qcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSAmIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcblxuZXhwb3J0IGZ1bmN0aW9uIE5hdmlnYXRpb24oeyBjbGFzc05hbWUgfTogTmF2aWdhdGlvblByb3BzKSB7XG4gIC8vIFVzZSB0aGUgY3VzdG9tIGhvb2tzIHRvIGdldCBhbGwgbmVjZXNzYXJ5IHN0YXRlIGFuZCBoYW5kbGVyc1xuICBjb25zdCB7IHRhYmxlcywgYWN0aXZlVGFibGUsIGlzTG9hZGluZywgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG4gIGNvbnN0IHsgYWN0aXZlVmlldywgaGFuZGxlVmlld0NoYW5nZSB9ID0gdXNlQWN0aXZlVmlldygpO1xuXG4gIGNvbnN0IHNpZGVCYXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctNDggcHMtZ2FwLTQgcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtMCBwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZCBwcy1zaGFkb3cteHNcIixcbiAgICBjbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c2lkZUJhckNsYXNzZXN9PlxuICAgICAgPE5hdmlnYXRpb24uQmxvY2sgbGFiZWw9XCJTdHVkaW9cIj5cbiAgICAgICAgPE5hdmlnYXRpb24uSXRlbVxuICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVWaWV3ID09PSBcInNjaGVtYS12aXN1YWxpc2VyXCJ9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlVmlld0NoYW5nZShcInNjaGVtYS12aXN1YWxpc2VyXCIpfVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRcIlxuICAgICAgICA+XG4gICAgICAgICAgU2NoZW1hIHZpc3VhbGlzZXJcbiAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG5cbiAgICAgIHsvKiBUT0RPOiBzY2hlbWEgc2VsZWN0b3IuICovfVxuICAgICAgPE5hdmlnYXRpb24uQmxvY2sgbGFiZWw9XCJUYWJsZXNcIj5cbiAgICAgICAge3RhYmxlcy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgIHRhYmxlcy5tYXAoKHRhYmxlKSA9PiAoXG4gICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtXG4gICAgICAgICAgICAgIGtleT17YCR7dGFibGUuc2NoZW1hfS0ke3RhYmxlLm5hbWV9YH1cbiAgICAgICAgICAgICAgYXNDaGlsZFxuICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlVmlldyA9PT0gXCJ0YWJsZXNcIiAmJiBhY3RpdmVUYWJsZSA9PT0gdGFibGV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVWaWV3Q2hhbmdlKFwidGFibGVzXCIpO1xuICAgICAgICAgICAgICAgIGhhbmRsZVRhYmxlQ2hhbmdlKHRhYmxlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHMtcHktMSBwcy1mb250LW1vbm8gcHMtdGV4dC14cyBwcy10ZXh0LWZvcmVncm91bmQvNjAgaG92ZXI6cHMtdGV4dC1mb3JlZ3JvdW5kIHBzLXRyYW5zaXRpb24tYWxsIHBzLWN1cnNvci1wb2ludGVyIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1iZy1zbGF0ZS0yMDAgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWZvcmVncm91bmQgZGF0YS1bYWN0aXZlPXRydWVdOnBzLXRleHQtZm9yZWdyb3VuZGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxhIGhyZWY9e2AjdGFibGU9JHt0YWJsZS5uYW1lfSZzY2hlbWE9JHt0YWJsZS5zY2hlbWF9YH0+e3RhYmxlLm5hbWV9PC9hPlxuICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgKSlcbiAgICAgICAgKSA6IGlzTG9hZGluZyA/IChcbiAgICAgICAgICBBcnJheSg0KVxuICAgICAgICAgICAgLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0ga2V5PXtpbmRleH0gd3JhcENoaWxkcmVuSW5TcGFuPXtmYWxzZX0+XG4gICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtMyBwcy13LWZ1bGxcIiAvPlxuICAgICAgICAgICAgICA8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgICAgICkpXG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE5hdmlnYXRpb24uSXRlbT5ObyB0YWJsZXMgZm91bmQ8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgKX1cbiAgICAgIDwvTmF2aWdhdGlvbi5CbG9jaz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgQmxvY2sgPSAoeyBjbGFzc05hbWUsIGxhYmVsLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+ICYgeyBsYWJlbDogc3RyaW5nIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSB7Li4ucHJvcHN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy1wdC00IHBzLXBiLTIgcHMtcHgtNCBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctc2xhdGUtNTAvNTAgcHMtYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgICA8VGFibGUyIHNpemU9ezE2fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNjBcIiAvPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwicHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bVwiPntsYWJlbH08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmF2IGFyaWEtbGFiZWw9e2xhYmVsfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC1weCBwcy1wYi0zIHBzLXAtMlwiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L25hdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IEl0ZW0gPSAoe1xuICBjbGFzc05hbWUsXG4gIGFzQ2hpbGQgPSBmYWxzZSxcbiAgaXNBY3RpdmUsXG4gIHNpemUsXG4gIGNoaWxkcmVuLFxuICB3cmFwQ2hpbGRyZW5JblNwYW4gPSB0cnVlLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJidXR0b25cIj4gJiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIHNpemU/OiBcImRlZmF1bHRcIiB8IFwic21cIjtcbiAgd3JhcENoaWxkcmVuSW5TcGFuPzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICBkYXRhLXNpZGViYXI9XCJtZW51LWJ1dHRvblwiXG4gICAgICBkYXRhLXNpemU9e3NpemV9XG4gICAgICBkYXRhLWFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXB5LTEuNSBwcy1weC0yIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtcm91bmRlZC1tZCBwcy1mbGV4IHBzLWdhcC0yIHBzLWl0ZW1zLWNlbnRlciBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXRyYW5zcGFyZW50XCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge3dyYXBDaGlsZHJlbkluU3BhbiA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLXRydW5jYXRlXCI+e2NoaWxkcmVufTwvc3Bhbj4gOiBjaGlsZHJlbn1cbiAgICA8L0NvbXA+XG4gICk7XG59O1xuXG5OYXZpZ2F0aW9uLkJsb2NrID0gQmxvY2s7XG5OYXZpZ2F0aW9uLkl0ZW0gPSBJdGVtO1xuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGtleU1hcCwgdXNlUXVlcnlTdGF0ZSwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5pbXBvcnQgeyBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCwgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8qKlxuICogSG9vayB0byBlbmNhcHN1bGF0ZSBhbGwgbG9naWMgZm9yIG1hbmFnaW5nIHRoZSBhY3RpdmUgdGFibGUgc2VsZWN0aW9uLlxuICogSGFuZGxlcyBzeW5jaW5nIHdpdGggVVJMIHBhcmFtcywgZGVmYXVsdCBzZWxlY3Rpb24sIGFuZCBleHBvc2VzIGEgc2ltcGxlIEFQSSBmb3IgY29uc3VtZXJzLlxuICogU2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoaW4gU3R1ZGlvIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIGFkYXB0ZXIsIGVtaXRUZWxlbWV0cnlFdmVudCB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgZGF0YVVwZGF0ZWRBdCB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCBpc0xvYWRpbmcgPSBkYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVDtcblxuICAvLyBHZXQgYWxsIHRhYmxlcyBmb3IgdGhlIGN1cnJlbnQgc2NoZW1hXG4gIGNvbnN0IHRhYmxlczogVGFibGVbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hc1thZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJkYlwiXT8udGFibGVzIHx8IHt9KTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hcywgYWRhcHRlci5kZWZhdWx0U2NoZW1hXSk7XG5cbiAgLy8gQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiB0YWJsZXMgYWNyb3NzIGFsbCBzY2hlbWFzXG4gIGNvbnN0IHRvdGFsVGFibGVDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hcykucmVkdWNlKChzdW0sIHNjaGVtYSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIE9iamVjdC5rZXlzKHNjaGVtYS50YWJsZXMpLmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hc10pO1xuXG4gIGNvbnN0IFtmaXJzdFRhYmxlXSA9IHRhYmxlcztcblxuICBjb25zdCBbdGFibGVBbmRTY2hlbWEsIHNldFRhYmxlQW5kU2NoZW1hXSA9IHVzZVF1ZXJ5U3RhdGVzKFxuICAgIGtleU1hcCh7XG4gICAgICB0YWJsZToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiA/PyBcIlwiLFxuICAgICAgfSxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiA/PyBcIlwiLFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcbiAgLy8gQWRkIHF1ZXJ5IHN0YXRlIGZvciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtc1xuICBjb25zdCBbLCBzZXRQYWdlUGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInBhZ2VJbmRleFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG4gIGNvbnN0IFssIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwic29ydFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG5cbiAgLy8gRWZmZWN0IHRvIHN5bmMgYWN0aXZlIHRhYmxlIHdpdGggVVJMIHBhcmFtIGFuZCBkZWZhdWx0c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmcpIHJldHVybjtcbiAgICAvLyBJZiBzY2hlbWEgYW5kIHRhYmxlIHBhcmFtcyBpbiBVUkwsIHRyeSB0byBzZXQgdGhhdCB0YWJsZVxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8udGFibGUgJiYgdGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRhYmxlRnJvbVBhcmFtID0gdGFibGVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gdGFibGVBbmRTY2hlbWEudGFibGUpO1xuXG4gICAgICBpZiAodGFibGVGcm9tUGFyYW0pIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUodGFibGVGcm9tUGFyYW0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIG5vIHNjaGVtYS90YWJsZSBwYXJhbXMgb3Igbm90IGZvdW5kLCBzZXQgZmlyc3QgdGFibGUgYXMgZGVmYXVsdFxuICAgIGlmICh0YWJsZXMubGVuZ3RoID4gMCAmJiAhYWN0aXZlVGFibGUpIHtcbiAgICAgIHNldEFjdGl2ZVRhYmxlKGZpcnN0VGFibGUgfHwgbnVsbCk7XG4gICAgICBpZiAoZmlyc3RUYWJsZSkge1xuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IGZpcnN0VGFibGUubmFtZSwgc2NoZW1hOiBmaXJzdFRhYmxlLnNjaGVtYSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc0xvYWRpbmcsIHRhYmxlQW5kU2NoZW1hLCB0YWJsZXMsIGZpcnN0VGFibGUsIGFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWFdKTtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBhY3RpdmUgdGFibGUgYW5kIHVwZGF0ZSB0aGUgVVJMIHBhcmFtLlxuICAgKiBBbHNvIGNsZWFycyBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXMuXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdUYWJsZTogVGFibGUpID0+IHtcbiAgICAgIGlmIChhY3RpdmVUYWJsZSAhPT0gbmV3VGFibGUpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobmV3VGFibGUpO1xuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IG5ld1RhYmxlLm5hbWUsIHNjaGVtYTogbmV3VGFibGUuc2NoZW1hIH0pO1xuICAgICAgICAvLyBDbGVhciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXNcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWEsIHNldFBhZ2VQYXJhbSwgc2V0U29ydFBhcmFtXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBpc0xvYWRpbmdcbiAgICBpZiAoZGF0YVVwZGF0ZWRBdCAhPT0gLTEpIHtcbiAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCh7XG4gICAgICAgIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgZXZlbnRfaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIHRhYmxlX2NvdW50OiB0b3RhbFRhYmxlQ291bnQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFt0YWJsZXMsIGVtaXRUZWxlbWV0cnlFdmVudCwgZGF0YVVwZGF0ZWRBdCwgdG90YWxUYWJsZUNvdW50XSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0YWJsZXMsXG4gICAgYWN0aXZlVGFibGUsXG4gICAgaXNMb2FkaW5nLFxuICAgIGhhbmRsZVRhYmxlQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID0gLTE7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnRyb3NwZWN0aW9uKCkge1xuICBjb25zdCB7IGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgaW5pdGlhbERhdGE6IHtcbiAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgW2FkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcImRiXCJdOiB7XG4gICAgICAgICAgdGFibGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aW1lem9uZTogXCJVVENcIixcbiAgICAgIGZpbHRlck9wZXJhdG9yczogW10sXG4gICAgfSBzYXRpc2ZpZXMgSW50cm9zcGVjdGlvbixcbiAgICBpbml0aWFsRGF0YVVwZGF0ZWRBdDogSU5JVElBTF9EQVRBX1VQREFURURfQVQsXG4gICAgcXVlcnlGbjogYXN5bmMgKHsgc2lnbmFsIH0pID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgaW50cm9zcGVjdGlvbl0gPSBhd2FpdCBhZGFwdGVyLmludHJvc3BlY3QoeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnRyb3NwZWN0aW9uO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcImludHJvc3BlY3Rpb25cIl0sXG4gICAgLy8gaWYgaXMgaW5pdGlhbCBkYXRhLCByZWZldGNoIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIG5ldmVyIHJlZmV0Y2ggYXV0b21hdGljYWxseSBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICAvLyB3ZSBjYW4gc3RpbGwgcmVmZXRjaCBtYW51YWxseSB1c2luZyB0aGUgcXVlcnkgY2xpZW50IC0gcHJvYmFibHkgdHJpZ2dlcmVkIGJ5IGEgYnV0dG9uLlxuICAgIHN0YWxlVGltZTogKGN0eCkgPT4gKGN0eC5zdGF0ZS5kYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA/IDAgOiBJbmZpbml0eSksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8vIFR5cGVzIG1hdGNoaW5nIHRoZSBzY2hlbWEgdmlzdWFsaXplcidzIGV4cGVjdGVkIGZvcm1hdFxuZXhwb3J0IHR5cGUgRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBpc1ByaW1hcnk/OiBib29sZWFuO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFRhYmxlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uc2hpcCA9IHtcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTY2hlbWFWaXN1YWxpemF0aW9uRGF0YSA9IHtcbiAgdGFibGVzOiBUYWJsZVtdO1xuICByZWxhdGlvbnNoaXBzOiBSZWxhdGlvbnNoaXBbXTtcbn07XG5cbi8vIEEgc3BlY2lhbCB0YWJsZSB0byBzaG93IHdoZW4gbm8gdGFibGVzIGFyZSBmb3VuZFxuY29uc3QgTk9fVEFCTEVTX05PREU6IFRhYmxlID0ge1xuICBuYW1lOiBcIk5vIFRhYmxlcyBGb3VuZFwiLFxuICBmaWVsZHM6IFt7IG5hbWU6IFwibWVzc2FnZVwiLCB0eXBlOiBcImluZm9cIiwgaXNSZXF1aXJlZDogdHJ1ZSB9XSxcbn07XG5cbi8qKlxuICogSG9vayB0aGF0IHRyYW5zZm9ybXMgdGhlIGRhdGFiYXNlIGludHJvc3BlY3Rpb24gZGF0YSBpbnRvIGEgZm9ybWF0IHN1aXRhYmxlXG4gKiBmb3IgdGhlIHNjaGVtYSB2aXN1YWxpemVyLlxuICpcbiAqIEByZXR1cm5zIFNjaGVtYVZpc3VhbGl6YXRpb25EYXRhIC0gdGFibGVzIGFuZCB0aGVpciByZWxhdGlvbnNoaXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY2hlbWFWaXN1YWxpemF0aW9uKCk6IFNjaGVtYVZpc3VhbGl6YXRpb25EYXRhIHtcbiAgY29uc3QgeyBkYXRhOiBpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmcsIGVycm9yIH0gPSB1c2VJbnRyb3NwZWN0aW9uKCk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybiB7IHRhYmxlczogW10sIHJlbGF0aW9uc2hpcHM6IFtdIH07XG4gICAgfVxuXG4gICAgaWYgKCFpbnRyb3NwZWN0aW9uKSB7XG4gICAgICByZXR1cm4geyB0YWJsZXM6IFtOT19UQUJMRVNfTk9ERV0sIHJlbGF0aW9uc2hpcHM6IFtdIH07XG4gICAgfVxuXG4gICAgY29uc3QgdGFibGVzOiBUYWJsZVtdID0gW107XG4gICAgbGV0IGhhc0FueVRhYmxlcyA9IGZhbHNlO1xuXG4gICAgLy8gUHJvY2VzcyBlYWNoIHNjaGVtYVxuICAgIE9iamVjdC52YWx1ZXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzKS5mb3JFYWNoKChzY2hlbWEpID0+IHtcbiAgICAgIC8vIFByb2Nlc3MgZWFjaCB0YWJsZSBpbiB0aGUgc2NoZW1hXG4gICAgICBPYmplY3QudmFsdWVzKHNjaGVtYS50YWJsZXMpLmZvckVhY2goKHRhYmxlKSA9PiB7XG4gICAgICAgIGhhc0FueVRhYmxlcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZpZWxkczogRmllbGRbXSA9IFtdO1xuXG4gICAgICAgIC8vIFByb2Nlc3MgZWFjaCBjb2x1bW4gaW4gdGhlIHRhYmxlXG4gICAgICAgIE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiBjb2x1bW4uZGF0YXR5cGUubmFtZSxcbiAgICAgICAgICAgIGlzUHJpbWFyeTogY29sdW1uLmlzSW5QcmltYXJ5S2V5LFxuICAgICAgICAgICAgaXNSZXF1aXJlZDogIWNvbHVtbi5udWxsYWJsZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRkIHRoZSB0YWJsZSB0byBvdXIgYXJyYXlcbiAgICAgICAgdGFibGVzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHRhYmxlLm5hbWUsXG4gICAgICAgICAgZmllbGRzLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gUmV0dXJuIGEgcGxhY2Vob2xkZXIgbm9kZSBpZiBubyB0YWJsZXMgd2VyZSBmb3VuZFxuICAgIGlmICghaGFzQW55VGFibGVzIHx8IHRhYmxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHRhYmxlczogW05PX1RBQkxFU19OT0RFXSwgcmVsYXRpb25zaGlwczogW10gfTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGhlIGFjdHVhbCB0YWJsZXMgaWYgd2UgaGF2ZSB0aGVtXG4gICAgcmV0dXJuIHsgdGFibGVzLCByZWxhdGlvbnNoaXBzOiBbXSB9O1xuICB9LCBbaW50cm9zcGVjdGlvbiwgaXNMb2FkaW5nLCBlcnJvcl0pO1xufVxuIiwgImltcG9ydCBcInJlYWN0Zmxvdy9kaXN0L3N0eWxlLmNzc1wiO1xuXG5pbXBvcnQgeyBBbGVydENpcmNsZSwgQ2FsZW5kYXIsIEhhc2gsIEtleSwgTWFpbCwgUGhvbmUsIFVzZXIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyB0eXBlIEZDLCBtZW1vLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RGbG93LCB7XG4gIGFkZEVkZ2UsXG4gIEJhY2tncm91bmQsXG4gIHR5cGUgQ29ubmVjdGlvbixcbiAgQ29ubmVjdGlvbkxpbmVUeXBlLFxuICBDb250cm9scyxcbiAgdHlwZSBFZGdlLFxuICBIYW5kbGUsXG4gIHR5cGUgTm9kZSxcbiAgdHlwZSBOb2RlUHJvcHMsXG4gIHR5cGUgTm9kZVR5cGVzLFxuICBQb3NpdGlvbixcbiAgdXNlRWRnZXNTdGF0ZSxcbiAgdXNlTm9kZXNTdGF0ZSxcbn0gZnJvbSBcInJlYWN0Zmxvd1wiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxudHlwZSBGaWVsZCA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGlzUHJpbWFyeT86IGJvb2xlYW47XG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxudHlwZSBUYWJsZSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBmaWVsZHM6IEZpZWxkW107XG59O1xuXG50eXBlIFNjaGVtYVZpc3VhbGl6YXRpb25Qcm9wcyA9IHtcbiAgdGFibGVzOiBUYWJsZVtdO1xuICByZWxhdGlvbnNoaXBzOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZzsgdHlwZTogc3RyaW5nIH1bXTtcbn07XG5cbmludGVyZmFjZSBUYWJsZU5vZGVEYXRhIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgZmllbGRzOiBGaWVsZFtdO1xufVxuXG5jb25zdCBUYWJsZU5vZGU6IEZDPE5vZGVQcm9wczxUYWJsZU5vZGVEYXRhPj4gPSBtZW1vKCh7IGRhdGEgfSkgPT4ge1xuICBjb25zdCBpc05vVGFibGVzTm9kZSA9IGRhdGEubGFiZWwgPT09IFwiTm8gVGFibGVzIEZvdW5kXCI7XG5cbiAgY29uc3QgZ2V0SWNvbiA9IChmaWVsZE5hbWU6IHN0cmluZywgZmllbGRUeXBlOiBzdHJpbmcpID0+IHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHRoZSBcIk5vIFRhYmxlcyBGb3VuZFwiIG5vZGVcbiAgICBpZiAoaXNOb1RhYmxlc05vZGUgJiYgZmllbGRUeXBlID09PSBcImluZm9cIikge1xuICAgICAgcmV0dXJuIDxBbGVydENpcmNsZSBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz47XG4gICAgfVxuXG4gICAgLy8gUmVndWxhciBmaWVsZCBpY29uc1xuICAgIHN3aXRjaCAoZmllbGROYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgXCJpZFwiOlxuICAgICAgICByZXR1cm4gPEhhc2ggY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+O1xuICAgICAgY2FzZSBcImVtYWlsXCI6XG4gICAgICAgIHJldHVybiA8TWFpbCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz47XG4gICAgICBjYXNlIFwicGhvbmVcIjpcbiAgICAgICAgcmV0dXJuIDxQaG9uZSBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz47XG4gICAgICBjYXNlIFwibmFtZVwiOlxuICAgICAgICByZXR1cm4gPFVzZXIgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+O1xuICAgICAgY2FzZSBcImNyZWF0ZWRhdFwiOlxuICAgICAgY2FzZSBcInVwZGF0ZWRhdFwiOlxuICAgICAgICByZXR1cm4gPENhbGVuZGFyIGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiA8S2V5IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLW1pbi13LVsyNTBweF0gcHMtc2hhZG93LXhsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1ib3JkZXIgcHMtYmctY2FyZFwiLFxuICAgICAgICBpc05vVGFibGVzTm9kZSAmJiBcInBzLWJvcmRlci1vcmFuZ2UtNDAwXCIsXG4gICAgICApfVxuICAgID5cbiAgICAgIDxIYW5kbGUgdHlwZT1cInRhcmdldFwiIHBvc2l0aW9uPXtQb3NpdGlvbi5Ub3B9IHN0eWxlPXt7IG9wYWNpdHk6IDAgfX0gLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXB4LTQgcHMtcHktMyBwcy1ib3JkZXItYlwiLFxuICAgICAgICAgIGlzTm9UYWJsZXNOb2RlICYmIFwicHMtYmctb3JhbmdlLTEwMCBkYXJrOnBzLWJnLW9yYW5nZS05NTAgcHMtdGV4dC1vcmFuZ2UtNzAwIGRhcms6cHMtdGV4dC1vcmFuZ2UtMzAwXCIsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1ib2xkXCI+e2RhdGEubGFiZWx9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcHgtNCBwcy1weS0yXCI+XG4gICAgICAgIHtpc05vVGFibGVzTm9kZSA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXB5LTggcHMtdGV4dC1zbSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQtb3JhbmdlLTUwMFwiPlxuICAgICAgICAgICAgICA8QWxlcnRDaXJjbGUgY2xhc3NOYW1lPVwicHMtdy01IHBzLWgtNVwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4LTFcIj5ObyBkYXRhYmFzZSB0YWJsZXMgZm91bmQuIENvbm5lY3QgdG8gYSBkYXRhYmFzZSB0byBzZWUgeW91ciBzY2hlbWEuPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRhdGEuZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1weS0yIHBzLXRleHQtc21cIixcbiAgICAgICAgICAgICAgICBmaWVsZC5pc1ByaW1hcnkgJiYgXCJwcy10ZXh0LXByaW1hcnlcIixcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e2dldEljb24oZmllbGQubmFtZSwgZmllbGQudHlwZSl9PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4LTFcIj57ZmllbGQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e2ZpZWxkLnR5cGV9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSlcbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPEhhbmRsZSB0eXBlPVwic291cmNlXCIgcG9zaXRpb249e1Bvc2l0aW9uLkJvdHRvbX0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cblRhYmxlTm9kZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVOb2RlXCI7XG5cbmNvbnN0IG5vZGVUeXBlcyA9IHtcbiAgdGFibGVOb2RlOiBUYWJsZU5vZGUsXG59IGFzIE5vZGVUeXBlcztcblxuZXhwb3J0IGZ1bmN0aW9uIFNjaGVtYVZpc3VhbGl6YXRpb24oeyB0YWJsZXMsIHJlbGF0aW9uc2hpcHMgfTogU2NoZW1hVmlzdWFsaXphdGlvblByb3BzKSB7XG4gIGNvbnN0IGluaXRpYWxOb2RlczogTm9kZVtdID0gdGFibGVzLm1hcCgodGFibGUsIGluZGV4KSA9PiAoe1xuICAgIGlkOiB0YWJsZS5uYW1lLFxuICAgIHR5cGU6IFwidGFibGVOb2RlXCIsXG4gICAgZGF0YToge1xuICAgICAgbGFiZWw6IHRhYmxlLm5hbWUsXG4gICAgICBmaWVsZHM6IHRhYmxlLmZpZWxkcyxcbiAgICB9LFxuICAgIHBvc2l0aW9uOiB7IHg6IDI1MCAqIGluZGV4LCB5OiAxMDAgKiBpbmRleCB9LFxuICB9KSk7XG5cbiAgY29uc3QgaW5pdGlhbEVkZ2VzOiBFZGdlW10gPSByZWxhdGlvbnNoaXBzLm1hcCgocmVsLCBpbmRleCkgPT4gKHtcbiAgICBpZDogYGUke2luZGV4fWAsXG4gICAgc291cmNlOiByZWwuZnJvbSxcbiAgICB0YXJnZXQ6IHJlbC50byxcbiAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICBsYWJlbDogcmVsLnR5cGUsXG4gICAgdHlwZTogXCJzbW9vdGhzdGVwXCIsXG4gICAgc3R5bGU6IHsgc3Ryb2tlOiBcImhzbCh2YXIoLS1wcmltYXJ5KSlcIiwgc3Ryb2tlV2lkdGg6IDEsIHN0cm9rZURhc2hhcnJheTogXCI1IDVcIiB9LFxuICAgIGxhYmVsU3R5bGU6IHsgZmlsbDogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsIGZvbnRTaXplOiAxMiB9LFxuICB9KSk7XG5cbiAgY29uc3QgW25vZGVzLCBzZXROb2Rlcywgb25Ob2Rlc0NoYW5nZV0gPSB1c2VOb2Rlc1N0YXRlKGluaXRpYWxOb2Rlcyk7XG4gIGNvbnN0IFtlZGdlcywgc2V0RWRnZXMsIG9uRWRnZXNDaGFuZ2VdID0gdXNlRWRnZXNTdGF0ZShpbml0aWFsRWRnZXMpO1xuXG4gIC8vIFVwZGF0ZSBub2RlcyB3aGVuIHRhYmxlcyBjaGFuZ2VcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXROb2RlcyhcbiAgICAgIHRhYmxlcy5tYXAoKHRhYmxlLCBpbmRleCkgPT4gKHtcbiAgICAgICAgaWQ6IHRhYmxlLm5hbWUsXG4gICAgICAgIHR5cGU6IFwidGFibGVOb2RlXCIsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBsYWJlbDogdGFibGUubmFtZSxcbiAgICAgICAgICBmaWVsZHM6IHRhYmxlLmZpZWxkcyxcbiAgICAgICAgfSxcbiAgICAgICAgcG9zaXRpb246IHsgeDogMjUwICogaW5kZXgsIHk6IDEwMCAqIGluZGV4IH0sXG4gICAgICB9KSksXG4gICAgKTtcbiAgfSwgW3RhYmxlcywgc2V0Tm9kZXNdKTtcblxuICBjb25zdCBvbkNvbm5lY3QgPSB1c2VDYWxsYmFjaygocGFyYW1zOiBFZGdlIHwgQ29ubmVjdGlvbikgPT4gc2V0RWRnZXMoKGVkcykgPT4gYWRkRWRnZShwYXJhbXMsIGVkcykpLCBbc2V0RWRnZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsIHBzLWgtZnVsbCBwcy1iZy1jYXJkXCI+XG4gICAgICA8UmVhY3RGbG93XG4gICAgICAgIG5vZGVzPXtub2Rlc31cbiAgICAgICAgZWRnZXM9e2VkZ2VzfVxuICAgICAgICBvbk5vZGVzQ2hhbmdlPXtvbk5vZGVzQ2hhbmdlfVxuICAgICAgICBvbkVkZ2VzQ2hhbmdlPXtvbkVkZ2VzQ2hhbmdlfVxuICAgICAgICBvbkNvbm5lY3Q9e29uQ29ubmVjdH1cbiAgICAgICAgY29ubmVjdGlvbkxpbmVUeXBlPXtDb25uZWN0aW9uTGluZVR5cGUuU21vb3RoU3RlcH1cbiAgICAgICAgbm9kZVR5cGVzPXtub2RlVHlwZXN9XG4gICAgICAgIGZpdFZpZXdcbiAgICAgID5cbiAgICAgICAgPEJhY2tncm91bmQgY2xhc3NOYW1lPVwicHMtYmctbXV0ZWRcIiBnYXA9ezE2fSAvPlxuICAgICAgICA8Q29udHJvbHMgY2xhc3NOYW1lPVwiIXBzLWJnLVtoc2wodmFyKC0tc3R1ZGlvLWJhY2tncm91bmQpKV0gIXBzLWJvcmRlci1baHNsKHZhcigtLXN0dWRpby1ib3JkZXIpKV0gIXBzLXRleHQtW2hzbCh2YXIoLS1zdHVkaW8tZm9yZWdyb3VuZCkpXVwiIC8+XG4gICAgICA8L1JlYWN0Rmxvdz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VTY2hlbWFWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZS1zY2hlbWEtdmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHsgU2NoZW1hVmlzdWFsaXphdGlvbiB9IGZyb20gXCIuL1Zpc3VhbGlzZXJcIjtcblxuLy8gU2FtcGxlIGRhdGEga2VwdCBhcyByZWZlcmVuY2VcbmNvbnN0IF9zYW1wbGVTY2hlbWEgPSB7XG4gIHRhYmxlczogW1xuICAgIHtcbiAgICAgIG5hbWU6IFwiUGV0IE93bmVyc1wiLFxuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHsgbmFtZTogXCJpZFwiLCB0eXBlOiBcIlVVSURcIiwgaXNQcmltYXJ5OiB0cnVlIH0sXG4gICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwiU3RyaW5nXCIsIGlzUmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiBcImVtYWlsXCIsIHR5cGU6IFwiU3RyaW5nXCIsIGlzUmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiBcInBob25lXCIsIHR5cGU6IFwiU3RyaW5nXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImNyZWF0ZWRBdFwiLCB0eXBlOiBcIkRhdGVUaW1lXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcInVwZGF0ZWRBdFwiLCB0eXBlOiBcIkRhdGVUaW1lXCIgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcIlBldHNcIixcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7IG5hbWU6IFwiaWRcIiwgdHlwZTogXCJVVUlEXCIsIGlzUHJpbWFyeTogdHJ1ZSB9LFxuICAgICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcIlN0cmluZ1wiLCBpc1JlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHsgbmFtZTogXCJzcGVjaWVzXCIsIHR5cGU6IFwiU3RyaW5nXCIsIGlzUmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiBcImJyZWVkXCIsIHR5cGU6IFwiU3RyaW5nXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImJpcnRoRGF0ZVwiLCB0eXBlOiBcIkRhdGVcIiB9LFxuICAgICAgICB7IG5hbWU6IFwib3duZXJJZFwiLCB0eXBlOiBcIlVVSURcIiwgaXNSZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB7IG5hbWU6IFwiY3JlYXRlZEF0XCIsIHR5cGU6IFwiRGF0ZVRpbWVcIiB9LFxuICAgICAgICB7IG5hbWU6IFwidXBkYXRlZEF0XCIsIHR5cGU6IFwiRGF0ZVRpbWVcIiB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxuICByZWxhdGlvbnNoaXBzOiBbeyBmcm9tOiBcIlBldCBPd25lcnNcIiwgdG86IFwiUGV0c1wiLCB0eXBlOiBcIjE6blwiIH1dLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNjaGVtYVZpZXcoKSB7XG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgc2NoZW1hIGRhdGEgZnJvbSBpbnRyb3NwZWN0aW9uXG4gIGNvbnN0IHsgdGFibGVzLCByZWxhdGlvbnNoaXBzIH0gPSB1c2VTY2hlbWFWaXN1YWxpemF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbCBwcy1oLWZ1bGxcIj5cbiAgICAgIDxTY2hlbWFWaXN1YWxpemF0aW9uIHRhYmxlcz17dGFibGVzfSByZWxhdGlvbnNoaXBzPXtyZWxhdGlvbnNoaXBzfSAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjRNQUFBLE9BQVMsbUJBQUFBLEdBQWlCLFVBQUFDLE9BQWMsZUNBeEMsT0FBUyxlQUFBQyxHQUFhLGFBQUFDLE9BQWlCLFFDQXZDLE9BQVMsZUFBQUMsR0FBYSx1QkFBQUMsT0FBMkIsd0JDQ2pELFVBQVlDLE9BQVcsUUFDdkIsT0FBUyxpQkFBQUMsR0FBZSxrQkFBQUMsT0FBc0Isd0JDQzlDLElBQUlDLEdBQXdCLEtBQU0sQ0FDaENDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQWEsR0FDYkMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQSxZQUFZQyxFQUFRLENBQ2xCLEdBQU0sQ0FDSixPQUFBQyxFQUNBLFlBQUFDLEVBQ0EsUUFBQUMsRUFDQSxjQUFBQyxFQUNBLGVBQUFDLEVBQ0EsU0FBQUMsRUFDQSxjQUFBQyxFQUNBLFdBQUFDLEVBQ0EsV0FBQUMsRUFDQSxnQkFBQUMsQ0FDRixFQUFJVixFQUNKLEtBQUtiLEdBQVV3QixHQUFhVixDQUFNLEVBQ2xDLEtBQUtaLEdBQWVhLEVBQ3BCLEtBQUtaLEdBQVdhLEVBQ2hCLEtBQUtmLEdBQWlCZ0IsRUFDdEIsS0FBS1osR0FBY2lCLEVBQ25CLEtBQUtoQixHQUFtQmlCLEVBQ3hCLEtBQUtoQixHQUFrQmlCLEdBQWFOLENBQWMsRUFDbEQsS0FB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QUFTLENBQUN4SCxDQUFZLENBQUMsQ0FBRSxFQUtyQyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsV0FBWSxDQUFDLENBQUV5SCxPQUFRLENBQUN2SCxDQUFXLENBQUMsQ0FBRSxFQUt0QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsaUJBQWtCLENBQUMsQ0FBRSxpQkFBa0IsQ0FBQ1UsQ0FBTyxDQUFDLENBQUUsRUFLbEQsZUFBZ0IsQ0FBQyxDQUFFNkcsT0FBUSxDQUFDLEdBQUcxRixHQUFlLEVBQUUsUUFBUSxFQUFHLEVBSzNELFdBQVksQ0FBQyxDQUFFLFdBQVksQ0FBQzdCLENBQVcsQ0FBQyxDQUFFLEVBSzFDLG1CQUFvQixDQUFDLGtCQUFrQixFQUt2QyxXQUFZLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzFDLG1CQUFvQixDQUFDLGtCQUFrQixFQUt2QyxpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDVSxDQUFPLENBQUMsQ0FBRSxFQUtsRCxlQUFnQixDQUFDLENBQUU4RyxPQUFRM0YsR0FBZSxDQUFBLENBQUUsRUFLNUMsZUFBZ0IsQ0FBQyxDQUFFMEYsT0FBUSxDQUFDMUgsQ0FBVyxDQUFDLENBQUUsRUFLMUMsaUJBQWtCLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBS2hELGlCQUFrQixDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUtoRCxpQkFBa0IsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLaEQsaUJBQWtCLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBS2hELGlCQUFrQixDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUtoRCxpQkFBa0IsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLaEQsZUFBZ0IsQ0FBQyxDQUFFMkgsT0FBUSxDQUFDM0gsQ0FBVyxDQUFDLENBQUUsRUFLMUMsZ0JBQWlCLENBQUMsQ0FBRTRILFFBQVMsQ0FBQyxHQUFJLEdBQUc1RixHQUFlLENBQUEsRUFBRyxFQUt2RCxpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDTCxHQUFVSCxDQUFnQixDQUFDLENBQUUsRUFLckUsWUFBYSxDQUFDLENBQUVvRyxRQUFTLENBQUNqRyxHQUFVQyxFQUFpQixDQUFDLENBQUUsRUFLeEQsZ0JBQWlCLENBQUMsQ0FBRWdHLFFBQVMsQ0FBQ2pJLENBQU0sQ0FBQyxDQUFFLEVBS3ZDLFNBQVUsQ0FBQyxDQUFFa0ksS0FBTW5HLEdBQWdDLENBQUEsQ0FBRSxFQUtyRCxlQUFnQixDQUFDLFlBQVksRUFLN0IsYUFBYyxDQUFDLENBQUVtRyxLQUFNLENBQUNsSSxDQUFNLENBQUMsQ0FBRSxFQUtqQyxlQUFnQixDQUFDLENBQUUsZUFBZ0IsQ0FBQ2tCLENBQU8sQ0FBQyxDQUFFLEVBSzlDLGdCQUFpQixDQUFDLENBQUUsY0FBZSxDQUFDYyxHQUFVQyxFQUFpQixDQUFDLENBQUUsRUFLbEUsb0JBQXFCLENBQUMsQ0FBRSxjQUFlLENBQUNqQyxDQUFNLENBQUMsQ0FBRSxFQU1qRG1JLE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUMsR0FBSSxRQUFTLE9BQVFwRixHQUFjcUYsRUFBaUIsRUFBRyxFQUszRSxlQUFnQixDQUFDLENBQUVELE9BQVEsQ0FBQ3JGLEVBQUssQ0FBQyxDQUFFLEVBS3BDNUIsUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQ0EsQ0FBTyxDQUFDLENBQUUsRUFLaEMsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDLEdBQUdvQixHQUFhLEVBQUksZUFBZ0IsYUFBYSxFQUFHLEVBS2xGLFdBQVksQ0FBQyxDQUFFLFdBQVlBLEdBQWUsQ0FBQSxDQUFFLEVBTzVDK0YsT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQyxHQUFJLE1BQU0sQ0FBQyxDQUFFLEVBS2pDbEksS0FBTSxDQUFDLENBQUVBLEtBQU0sQ0FBQ0EsQ0FBSSxDQUFDLENBQUUsRUFLdkJDLFdBQVksQ0FBQyxDQUFFQSxXQUFZLENBQUNBLENBQVUsQ0FBQyxDQUFFLEVBS3pDSyxTQUFVLENBQUMsQ0FBRUEsU0FBVSxDQUFDQSxDQUFRLENBQUMsQ0FBRSxFQUtuQyxjQUFlLENBQUMsQ0FBRSxjQUFlLENBQUMsR0FBSSxPQUFRc0MsR0FBY2xCLENBQWdCLEVBQUcsRUFLL0VuQixVQUFXLENBQUMsQ0FBRUEsVUFBVyxDQUFDQSxDQUFTLENBQUMsQ0FBRSxFQUt0QyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNDLENBQVMsQ0FBQyxDQUFFLEVBSzVDQyxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDQSxDQUFNLENBQUMsQ0FBRSxFQUs3QlEsU0FBVSxDQUFDLENBQUVBLFNBQVUsQ0FBQ0EsQ0FBUSxDQUFDLENBQUUsRUFLbkNFLE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUNBLEVBQUssQ0FBQyxDQUFFLEVBTTFCLGtCQUFtQixDQUFDLENBQUUsa0JBQW1CLENBQUMsR0FBSSxNQUFNLENBQUMsQ0FBRSxFQUt2RCxnQkFBaUIsQ0FBQyxDQUFFLGdCQUFpQixDQUFDbkIsQ0FBSSxDQUFDLENBQUUsRUFLN0Msc0JBQXVCLENBQUMsQ0FBRSxzQkFBdUIsQ0FBQ0MsQ0FBVSxDQUFDLENBQUUsRUFLL0Qsb0JBQXFCLENBQUMsQ0FBRSxvQkFBcUIsQ0FBQ0ssQ0FBUSxDQUFDLENBQUUsRUFLekQscUJBQXNCLENBQUMsQ0FBRSxxQkFBc0IsQ0FBQ0MsQ0FBUyxDQUFDLENBQUUsRUFLNUQsc0JBQXVCLENBQUMsQ0FBRSxzQkFBdUIsQ0FBQ0MsQ0FBUyxDQUFDLENBQUUsRUFLOUQsa0JBQW1CLENBQUMsQ0FBRSxrQkFBbUIsQ0FBQ0MsQ0FBTSxDQUFDLENBQUUsRUFLbkQsbUJBQW9CLENBQUMsQ0FBRSxtQkFBb0IsQ0FBQ00sQ0FBTyxDQUFDLENBQUUsRUFLdEQsb0JBQXFCLENBQUMsQ0FBRSxvQkFBcUIsQ0FBQ0UsQ0FBUSxDQUFDLENBQUUsRUFLekQsaUJBQWtCLENBQUMsQ0FBRSxpQkFBa0IsQ0FBQ0UsRUFBSyxDQUFDLENBQUUsRUFNaEQsa0JBQW1CLENBQUMsQ0FBRXlHLE9BQVEsQ0FBQyxXQUFZLFVBQVUsQ0FBQyxDQUFFLEVBS3hELGlCQUFrQixDQUFDLENBQUUsaUJBQWtCLENBQUN4SCxDQUFhLENBQUMsQ0FBRSxFQUt4RCxtQkFBb0IsQ0FBQyxDQUFFLG1CQUFvQixDQUFDQSxDQUFhLENBQUMsQ0FBRSxFQUs1RCxtQkFBb0IsQ0FBQyxDQUFFLG1CQUFvQixDQUFDQSxDQUFhLENBQUMsQ0FBRSxFQUs1RCxlQUFnQixDQUFDLENBQUUrSCxNQUFPLENBQUMsT0FBUSxPQUFPLENBQUMsQ0FBRSxFQUs3Q0MsUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQyxNQUFPLFFBQVEsQ0FBQyxDQUFFLEVBTXhDQyxXQUFZLENBQ1IsQ0FDSUEsV0FBWSxDQUNSLE9BQ0EsTUFDQSxHQUNBLFNBQ0EsVUFDQSxTQUNBLFlBQ0EzRyxDQUFnQixDQUV2QixDQUFBLEVBTUw0RyxTQUFVLENBQUMsQ0FBRUEsU0FBVS9GLEdBQXVCLENBQUEsQ0FBRSxFQUtoRGdHLEtBQU0sQ0FBQyxDQUFFQSxLQUFNLENBQUMsU0FBVSxLQUFNLE1BQU8sU0FBVTdHLENBQWdCLEVBQUcsRUFLcEU4RyxNQUFPLENBQUMsQ0FBRUEsTUFBT2pHLEdBQXVCLENBQUEsQ0FBRSxFQUsxQ2tHLFFBQVMsQ0FBQyxDQUFFQSxRQUFTLENBQUMsT0FBUSxPQUFRLE9BQVEsUUFBUyxTQUFVL0csQ0FBZ0IsRUFBRyxFQU1wRmdILFVBQVcsQ0FBQyxDQUFFQSxVQUFXLENBQUMsR0FBSSxNQUFPLE1BQU0sRUFBRyxFQUs5Q3hILE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUNBLENBQUssQ0FBQyxDQUFFLEVBSzFCLFVBQVcsQ0FBQyxDQUFFLFVBQVcsQ0FBQ0EsQ0FBSyxDQUFDLENBQUUsRUFLbEMsVUFBVyxDQUFDLENBQUUsVUFBVyxDQUFDQSxDQUFLLENBQUMsQ0FBRSxFQUtsQ3lILE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUN4RSxHQUFXekMsQ0FBZ0IsQ0FBQyxDQUFFLEVBS2xELGNBQWUsQ0FBQyxDQUFFLGNBQWUsQ0FBQ0osQ0FBUyxDQUFDLENBQUUsRUFLOUMsY0FBZSxDQUFDLENBQUUsY0FBZSxDQUFDQSxDQUFTLENBQUMsQ0FBRSxFQUs5QyxTQUFVLENBQUMsQ0FBRSxTQUFVLENBQUNGLENBQUksQ0FBQyxDQUFFLEVBSy9CLFNBQVUsQ0FBQyxDQUFFLFNBQVUsQ0FBQ0EsQ0FBSSxDQUFDLENBQUUsRUFLL0IsbUJBQW9CLENBQ2hCLENBQ0l3SCxPQUFRLENBQ0osU0FDQSxNQUNBLFlBQ0EsUUFDQSxlQUNBLFNBQ0EsY0FDQSxPQUNBLFdBQ0FsSCxDQUFnQixDQUV2QixDQUFBLEVBT0xtSCxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDLE9BQVFoSixDQUFNLENBQUMsQ0FBRSxFQUtyQ2lKLFdBQVksQ0FBQyxDQUFFQSxXQUFZLENBQUMsT0FBUSxNQUFNLENBQUMsQ0FBRSxFQUs3Q0MsT0FBUSxDQUNKLENBQ0lBLE9BQVEsQ0FDSixPQUNBLFVBQ0EsVUFDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLGNBQ0EsT0FDQSxlQUNBLFdBQ0EsT0FDQSxZQUNBLGdCQUNBLFFBQ0EsT0FDQSxVQUNBLE9BQ0EsV0FDQSxhQUNBLGFBQ0EsYUFDQSxXQUNBLFdBQ0EsV0FDQSxXQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLGNBQ0EsY0FDQSxVQUNBLFdBQ0FySCxDQUFnQixDQUV2QixDQUFBLEVBTUwsY0FBZSxDQUFDLENBQUVzSCxNQUFPLENBQUNuSixDQUFNLENBQUMsQ0FBRSxFQUtuQyxpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDLE9BQVEsTUFBTSxDQUFDLENBQUUsRUFLekRvSixPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDLE9BQVEsSUFBSyxJQUFLLEVBQUUsRUFBRyxFQUszQyxrQkFBbUIsQ0FBQyxDQUFFQyxPQUFRLENBQUMsT0FBUSxRQUFRLENBQUMsQ0FBRSxFQUtsRCxXQUFZLENBQUMsQ0FBRSxXQUFZdkgsRUFBeUIsQ0FBQSxDQUFFLEVBS3RELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsV0FBWSxDQUFDLENBQUUsV0FBWUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3RELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsYUFBYyxDQUFDLENBQUV3SCxLQUFNLENBQUMsUUFBUyxNQUFPLFNBQVUsWUFBWSxFQUFHLEVBS2pFLFlBQWEsQ0FBQyxDQUFFQSxLQUFNLENBQUMsU0FBVSxRQUFRLENBQUMsQ0FBRSxFQUs1QyxZQUFhLENBQUMs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LFFBQVMsQ0FBRSxFQUNoQyxRQUFTLENBQUUsTUFBTyxPQUFRLFFBQVMsQ0FBRSxFQUNyQyxLQUFNLENBQUUsTUFBTyxFQUFHLFFBQVMsQ0FBRSxFQUM3QixXQUFZLENBQUUsU0FBVSxHQUFLLEVBRTdCLFNBQUFqQixHQUFDa0IsR0FBQSxFQUFXLEVBQ2QsRUFFSixFQUVBbEIsR0FBQ2lCLEdBQU8sSUFBUCxDQUNDLFVBQVUsNklBQ1YsV0FBWSxDQUFFLFNBQVUsR0FBSyxFQUU1QixTQUFBTCxJQUFlLFNBQVdaLEdBQUNtQixHQUFBLEVBQWdCLEVBQUtuQixHQUFDb0IsR0FBQSxFQUFXLEVBQy9ELEdBQ0YsRUFDRixDQUVKIiwKICAibmFtZXMiOiBbIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgIlF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAiI2NsaWVudCIsICIjb25saW5lTWFuYWdlciIsICIjcXVlcnlGbGF2b3IiLCAiI3ZlcnNpb24iLCAiI2lzTW91bnRlZCIsICIjc3R5bGVOb25jZSIsICIjc2hhZG93RE9NVGFyZ2V0IiwgIiNidXR0b25Qb3NpdGlvbiIsICIjcG9zaXRpb24iLCAiI2luaXRpYWxJc09wZW4iLCAiI2Vycm9yVHlwZXMiLCAiI0NvbXBvbmVudCIsICIjZGlzcG9zZSIsICJjb25maWciLCAiY2xpZW50IiwgInF1ZXJ5Rmxhdm9yIiwgInZlcnNpb24iLCAib25saW5lTWFuYWdlciIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiY3JlYXRlU2lnbmFsIiwgImlzT3BlbiIsICJlbCIsICJkaXNwb3NlIiwgInJlbmRlciIsICJfc2VsZiQiLCAiYnRuUG9zaXRpb24iLCAicG9zIiwgImVycm9ycyIsICJxdWVyeUNsaWVudCIsICJEZXZ0b29scyIsICJsYXp5IiwgInNldHVwU3R5bGVTaGVldCIsICJjcmVhdGVDb21wb25lbnQiLCAibWVyZ2VQcm9wcyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICIjb25DbG9zZSIsICJvbkNsb3NlIiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAib25saW5lTWFuYWdlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJjcmVhdGVDb250ZXh0IiwgInVzZUNvbnRleHQiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJTb25uZXIiLCAianN4IiwgIlRvYXN0ZXIiLCAicHJvcHMiLCAiY3JlYXRlQWRhcHRlclByb3ZpZGVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VIYXNoQWRhcHRlciIsICJyYXdIYXNoIiwgImhhc2hQYXJhbXMiLCAic2V0SGFzaFBhcmFtcyIsICJ1cGRhdGVVcmwiLCAidXBkYXRlZCIsICJoaXN0b3J5IiwgInBhdGhuYW1lIiwgInNlYXJjaCIsICJoYXNoIiwgInVybCIsICJnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCIsICJyYXciLCAiaGFuZGxlSGFzaENoYW5nZSIsICJOdXFzSGFzaEFkYXB0ZXIiLCAianN4IiwgImpzeHMiLCAicXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiU3R1ZGlvQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlN0dWRpb0NvbnRleHRQcm92aWRlciIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJvdGhlclByb3BzIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgInVzZVN0YXRlIiwgImFjdGl2ZVZpZXciLCAic2V0QWN0aXZlVmlldyIsICJpc0Z1bGxzY3JlZW4iLCAic2V0SXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAic2V0SXNOYXZpZ2F0aW9uT3BlbiIsICJvbkVycm9yIiwgImVycm9yIiwgInRvYXN0IiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VNZW1vIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAicHJldiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzMiIsICJUb2FzdGVyIiwgIk51cXNIYXNoQWRhcHRlciIsICJ1c2VTdHVkaW8iLCAiY29udGV4dCIsICJ1c2VDb250ZXh0IiwgIm51cXNfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJ1c2VRdWVyeVN0YXRlIiwgInVzZVF1ZXJ5U3RhdGVzIiwgIl9fcmVFeHBvcnQiLCAibnVxc19leHBvcnRzIiwgIm51cXNfc3RhciIsICJ1c2VRdWVyeVN0YXRlT3JpZ2luYWwiLCAidXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJfQlJBTkRfU1lNQk9MIiwgInVzZVF1ZXJ5U3RhdGUiLCAia2V5IiwgIm9wdGlvbnMiLCAidXNlUXVlcnlTdGF0ZXMiLCAidXNlQWN0aXZlVmlldyIsICJhY3RpdmVWaWV3IiwgInNldEFjdGl2ZVZpZXciLCAidXNlU3R1ZGlvIiwgInZpZXdQYXJhbSIsICJzZXRWaWV3UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJ2IiwgImNsZWFuVXJsUGFyYW1zRm9yU2NoZW1hVmlzdWFsaXNlciIsICJ1c2VDYWxsYmFjayIsICJoYXNoIiwgInNlYXJjaFBhcmFtcyIsICJwYXJhbSIsICJ1c2VFZmZlY3QiLCAiaGFuZGxlVmlld0NoYW5nZSIsICJuZXdWaWV3IiwgImNsc3giLCAiQ0xBU1NfUEFSVF9TRVBBUkFUT1IiLCAiY3JlYXRlQ2xhc3NHcm91cFV0aWxzIiwgImNvbmZpZyIsICJjbGFzc01hcCIsICJjcmVhdGVDbGFzc01hcCIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJnZXRDbGFzc0dyb3VwSWQiLCAiY2xhc3NOYW1lIiwgImNsYXNzUGFydHMiLCAic3BsaXQiLCAibGVuZ3RoIiwgInNoaWZ0IiwgImdldEdyb3VwUmVjdXJzaXZlIiwgImdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSIsICJnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMiLCAiY2xhc3NHcm91cElkIiwgImhhc1Bvc3RmaXhNb2RpZmllciIsICJjb25mbGljdHMiLCAiY2xhc3NQYXJ0T2JqZWN0IiwgImN1cnJlbnRDbGFzc1BhcnQiLCAibmV4dENsYXNzUGFydE9iamVjdCIsICJuZXh0UGFydCIsICJnZXQiLCAiY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0IiwgInNsaWNlIiwgInVuZGVmaW5lZCIsICJ2YWxpZGF0b3JzIiwgImNsYXNzUmVzdCIsICJqb2luIiwgImZpbmQiLCAidmFsaWRhdG9yIiwgImFyYml0cmFyeVByb3BlcnR5UmVnZXgiLCAidGVzdCIsICJhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSIsICJleGVjIiwgInByb3BlcnR5IiwgInN1YnN0cmluZyIsICJpbmRleE9mIiwgInRoZW1lIiwgInByZWZpeCIsICJNYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgImNsYXNzR3JvdXBzIiwgImZvckVhY2giLCAiY2xhc3NHcm91cCIsICJwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5IiwgImNsYXNzRGVmaW5pdGlvbiIsICJjbGFzc1BhcnRPYmplY3RUb0VkaXQiLCAiZ2V0UGFydCIsICJpc1RoZW1lR2V0dGVyIiwgInB1c2giLCAia2V5IiwgInBhdGgiLCAiY3VycmVudENsYXNzUGFydE9iamVjdCIsICJwYXRoUGFydCIsICJoYXMiLCAic2V0IiwgImZ1bmMiLCAiY2xhc3NHcm91cEVudHJpZXMiLCAibWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cCIsICJmcm9tRW50cmllcyIsICJ2YWx1ZSIsICJjcmVhdGVMcnVDYWNoZSIsICJtYXhDYWNoZVNpemUiLCAiY2FjaGVTaXplIiwgImNhY2hlIiwgInByZXZpb3VzQ2FjaGUiLCAidXBkYXRlIiwgIklNUE9SVEFOVF9NT0RJRklFUiIsICJjcmVhdGVQYXJzZUNsYXNzTmFtZSIsICJzZXBhcmF0b3IiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIiLCAiZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIiLCAic2VwYXJhdG9yTGVuZ3RoIiwgInBhcnNlQ2xhc3NOYW1lIiwgIm1vZGlmaWVycyIsICJicmFja2V0RGVwdGgiLCAibW9kaWZpZXJTdGFydCIsICJwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJpbmRleCIsICJjdXJyZW50Q2hhcmFjdGVyIiwgImJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIiLCAiaGFzSW1wb3J0YW50TW9kaWZpZXIiLCAic3RhcnRzV2l0aCIsICJiYXNlQ2xhc3NOYW1lIiwgIm1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAic29ydE1vZGlmaWVycyIsICJzb3J0ZWRNb2RpZmllcnMiLCAidW5zb3J0ZWRNb2RpZmllcnMiLCAibW9kaWZpZXIiLCAic29ydCIsICJjcmVhdGVDb25maWdVdGlscyIsICJTUExJVF9DTEFTU0VTX1JFR0VYIiwgIm1lcmdlQ2xhc3NMaXN0IiwgImNsYXNzTGlzdCIsICJjb25maWdVdGlscyIsICJjbGFzc0dyb3Vwc0luQ29uZmxpY3QiLCAiY2xhc3NOYW1lcyIsICJ0cmltIiwgInJlc3VsdCIsICJvcmlnaW5hbENsYXNzTmFtZSIsICJCb29sZWFuIiwgInZhcmlhbnRNb2RpZmllciIsICJtb2RpZmllcklkIiwgImNsYXNzSWQiLCAiaW5jbHVkZXMiLCAiY29uZmxpY3RHcm91cHMiLCAiaSIsICJncm91cCIsICJ0d0pvaW4iLCAiYXJndW1lbnQiLCAicmVzb2x2ZWRWYWx1ZSIsICJzdHJpbmciLCAiYXJndW1lbnRzIiwgInRvVmFsdWUiLCAibWl4IiwgImsiLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJjcmVhdGVDb25maWdGaXJzdCIsICJjcmVhdGVDb25maWdSZXN0IiwgImNhY2hlR2V0IiwgImNhY2hlU2V0IiwgImZ1bmN0aW9uVG9DYWxsIiwgImluaXRUYWlsd2luZE1lcmdlIiwgInJlZHVjZSIsICJwcmV2aW91c0NvbmZpZyIsICJjcmVhdGVDb25maWdDdXJyZW50IiwgInRhaWx3aW5kTWVyZ2UiLCAiY2FjaGVkUmVzdWx0IiwgImFwcGx5IiwgImZyb21UaGVtZSIsICJ0aGVtZUdldHRlciIsICJhcmJpdHJhcnlWYWx1ZVJlZ2V4IiwgImZyYWN0aW9uUmVnZXgiLCAic3RyaW5nTGVuZ3RocyIsICJTZXQiLCAidHNoaXJ0VW5pdFJlZ2V4IiwgImxlbmd0aFVuaXRSZWdleCIsICJjb2xvckZ1bmN0aW9uUmVnZXgiLCAic2hhZG93UmVnZXgiLCAiaW1hZ2VSZWdleCIsICJpc0xlbmd0aCIsICJpc051bWJlciIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXRJc0FyYml0cmFyeVZhbHVlIiwgImlzTGVuZ3RoT25seSIsICJOdW1iZXIiLCAiaXNOYU4iLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAiaXNJbnRlZ2VyIiwgImlzUGVyY2VudCIsICJlbmRzV2l0aCIsICJpc0FyYml0cmFyeVZhbHVlIiwgImlzVHNoaXJ0U2l6ZSIsICJzaXplTGFiZWxzIiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc05ldmVyIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAiaW1hZ2VMYWJlbHMiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJpc0ltYWdlIiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImlzU2hhZG93IiwgImlzQW55IiwgImxhYmVsIiwgInRlc3RWYWx1ZSIsICJnZXREZWZhdWx0Q29uZmlnIiwgImNvbG9ycyIsICJmcm9tVGhlbWUiLCAic3BhY2luZyIsICJibHVyIiwgImJyaWdodG5lc3MiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyUmFkaXVzIiwgImJvcmRlclNwYWNpbmciLCAiYm9yZGVyV2lkdGgiLCAiY29udHJhc3QiLCAiZ3JheXNjYWxlIiwgImh1ZVJvdGF0ZSIsICJpbnZlcnQiLCAiZ2FwIiwgImdyYWRpZW50Q29sb3JTdG9wcyIsICJncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyIsICJpbnNldCIsICJtYXJnaW4iLCAib3BhY2l0eSIsICJwYWRkaW5nIiwgInNhdHVyYXRlIiwgInNjYWxlIiwgInNlcGlhIiwgInNrZXciLCAic3BhY2UiLCAidHJhbnNsYXRlIiwgImdldE92ZXJzY3JvbGwiLCAiZ2V0T3ZlcmZsb3ciLCAiZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkiLCAiZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5IiwgImlzTGVuZ3RoIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzTnVtYmVyIiwgImdldFBvc2l0aW9ucyIsICJnZXRMaW5lU3R5bGVzIiwgImdldEJsZW5kTW9kZXMiLCAiZ2V0QWxpZ24iLCAiZ2V0WmVyb0FuZEVtcHR5IiwgImdldEJyZWFrcyIsICJnZXROdW1iZXJBbmRBcmJpdHJhcnkiLCAiY2FjaGVTaXplIiwgInNlcGFyYXRvciIsICJ0aGVtZSIsICJpc0FueSIsICJpc1RzaGlydFNpemUiLCAiaXNQZXJjZW50IiwgImNsYXNzR3JvdXBzIiwgImFzcGVjdCIsICJjb250YWluZXIiLCAiY29sdW1ucyIsICJib3giLCAiZGlzcGxheSIsICJmbG9hdCIsICJjbGVhciIsICJpc29sYXRpb24iLCAib2JqZWN0IiwgIm92ZXJmbG93IiwgIm92ZXJzY3JvbGwiLCAicG9zaXRpb24iLCAic3RhcnQiLCAiZW5kIiwgInRvcCIsICJyaWdodCIsICJib3R0b20iLCAibGVmdCIsICJ2aXNpYmlsaXR5IiwgInoiLCAiaXNJbnRlZ2VyIiwgImJhc2lzIiwgImZsZXgiLCAiZ3JvdyIsICJzaHJpbmsiLCAib3JkZXIiLCAiY29sIiwgInNwYW4iLCAicm93IiwgImp1c3RpZnkiLCAiY29udGVudCIsICJpdGVtcyIsICJzZWxmIiwgInAiLCAicHgiLCAicHkiLCAicHMiLCAicGUiLCAicHQiLCAicHIiLCAicGIiLCAicGwiLCAibSIsICJteCIsICJteSIsICJtcyIsICJtZSIsICJtdCIsICJtciIsICJtYiIsICJtbCIsICJ3IiwgInNjcmVlbiIsICJoIiwgInNpemUiLCAidGV4dCIsICJmb250IiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgInRyYWNraW5nIiwgImxlYWRpbmciLCAibGlzdCIsICJwbGFjZWhvbGRlciIsICJkZWNvcmF0aW9uIiwgImluZGVudCIsICJhbGlnbiIsICJ3aGl0ZXNwYWNlIiwgImJyZWFrIiwgImh5cGhlbnMiLCAiYmciLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJyZXBlYXQiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiZnJvbSIsICJ2aWEiLCAidG8iLCAicm91bmRlZCIsICJib3JkZXIiLCAiZGl2aWRlIiwgIm91dGxpbmUiLCAicmluZyIsICJzaGFkb3ciLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiZmlsdGVyIiwgInRhYmxlIiwgImNhcHRpb24iLCAidHJhbnNpdGlvbiIsICJkdXJhdGlvbiIsICJlYXNlIiwgImRlbGF5IiwgImFuaW1hdGUiLCAidHJhbnNmb3JtIiwgInJvdGF0ZSIsICJvcmlnaW4iLCAiYWNjZW50IiwgImFwcGVhcmFuY2UiLCAiY3Vyc29yIiwgImNhcmV0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic25hcCIsICJ0b3VjaCIsICJzZWxlY3QiLCAiZmlsbCIsICJzdHJva2UiLCAic3IiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAibWVyZ2VDb25maWdzIiwgImJhc2VDb25maWciLCAicHJlZml4IiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImV4dGVuZCIsICJvdmVycmlkZSIsICJvdmVycmlkZVByb3BlcnR5IiwgImNvbmZpZ0tleSIsICJvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMiLCAia2V5IiwgIm1lcmdlQ29uZmlnUHJvcGVydGllcyIsICJiYXNlT2JqZWN0IiwgIm92ZXJyaWRlS2V5IiwgIm92ZXJyaWRlVmFsdWUiLCAidW5kZWZpbmVkIiwgIm92ZXJyaWRlT2JqZWN0IiwgIm1lcmdlT2JqZWN0IiwgIm1lcmdlVmFsdWUiLCAiY29uY2F0IiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY29uZmlnRXh0ZW5zaW9uIiwgImNyZWF0ZUNvbmZpZyIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgInR3TWVyZ2UiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjbiIsICJpbnB1dHMiLCAiY2xzeCIsICJ1c2VJc011dGF0aW5nIiwgInRvS2ViYWJDYXNlIiwgInN0cmluZyIsICJtZXJnZUNsYXNzZXMiLCAiY2xhc3NlcyIsICJjbGFzc05hbWUiLCAiaW5kZXgiLCAiYXJyYXkiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAiSWNvbiIsICJmb3J3YXJkUmVmIiwgImNvbG9yIiwgInNpemUiLCAic3Ryb2tlV2lkdGgiLCAiYWJzb2x1dGVTdHJva2VXaWR0aCIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAiaWNvbk5vZGUiLCAicmVzdCIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJtZXJnZUNsYXNzZXMiLCAidGFnIiwgImF0dHJzIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiaWNvbk5hbWUiLCAiaWNvbk5vZGUiLCAiQ29tcG9uZW50IiwgImZvcndhcmRSZWYiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgIkljb24iLCAibWVyZ2VDbGFzc2VzIiwgInRvS2ViYWJDYXNlIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBcnJvd1VwV2lkZU5hcnJvdyIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNhbGVuZGFyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hlY2siLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblJpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNMZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZUFsZXJ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlSGVscCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcHkiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3JuZXJEb3duTGVmdCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkZpbHRlciIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkdyaXBWZXJ0aWNhbCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkhhc2giLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJLZXlSb3VuZCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1haWwiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNYXhpbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1pbmltaXplIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZURvd24iLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNb3ZlVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRDbG9zZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBhbmVsTGVmdE9wZW4iLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQaG9uZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBpbk9mZiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBpbiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlJlZnJlc2hDdyIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlRhYmxlMiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlVzZXIiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJYIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQW5pbWF0ZU51bWJlciIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidG9hc3QiLCAiY3ZhIiwgImpzeCIsICJiYWRnZVZhcmlhbnRzIiwgImN2YSIsICJCYWRnZSIsICJjbGFzc05hbWUiLCAidmFyaWFudCIsICJwcm9wcyIsICJjbiIsICJTbG90IiwgImN2YSIsICJSZWFjdCIsICJqc3giLCAiYnV0dG9uVmFyaWFudHMiLCAiY3ZhIiwgIkJ1dHRvbiIsICJjbGFzc05hbWUiLCAidmFyaWFudCIsICJzaXplIiwgImFzQ2hpbGQiLCAicHJvcHMiLCAicmVmIiwgIlNsb3QiLCAiY24iLCAiUG9wb3ZlclByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJQb3BvdmVyQ29udGVudCIsICJjbGFzc05hbWUiLCAiYWxpZ24iLCAic2lkZU9mZnNldCIsICJwcm9wcyIsICJyZWYiLCAianN4IiwgImNuIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgImdldFJvd0lkIiwgInJvdyIsICJ0YWJsZSIsICJpZCIsICJpbmZlclJvd0ZpbHRlciIsICJhZGRSb3dJZFRvUm93IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAicmVzdWx0IiwgInJvd3MiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAibmV3RGF0YSIsICJvbGREYXRhIiwgInVzZVF1ZXJ5IiwgInVzZUFjdGl2ZVRhYmxlUXVlcnkiLCAicHJvcHMiLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNvcnRPcmRlciIsICJmaWx0ZXIiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAicHJldmlvdXNEYXRhIiwgInByZXZpb3VzUXVlcnkiLCAic2NoZW1hIiwgInRhYmxlIiwgInNpZ25hbCIsICJlcnJvciIsICJyZXN1bHRzIiwgImFkZFJvd0lkVG9SZXN1bHQiLCAiaXRlbSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZVVwZGF0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInF1ZXJ5S2V5UHJlZml4IiwgInVzZU11dGF0aW9uIiwgInBhcmFtcyIsICJlcnJvciIsICJyZXN1bHQiLCAiY2hhbmdlcyIsICJyb3ciLCAib3ZlcndyaXRlQ2FjaGVkUm93IiwgImNoYW5nZWRSb3ciLCAicm93RmlsdGVyIiwgImluZmVyUm93RmlsdGVyIiwgImNhY2hlZFJvdyIsICJjb2x1bW5OYW1lIiwgInZhbHVlIiwgIm9yaWdpbmFsVmFsdWVzIiwgImRldGFpbHMiLCAidW5jaGFuZ2VkUm93IiwgIl9fcHNfdXBkYXRlZF9hdF9fIiwgImdldEZpbmRlckZuIiwgInRhYmxlIiwgInVwZGF0ZXJGbiIsICJmaW5kZXIiLCAiY2FjaGVkUmVzdWx0IiwgImNhY2hlZFJvd3MiLCAiY2FjaGVkUm93SW5kZXgiLCAibmV3Um93IiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInNob3J0IiwgImRlZmF1bHRGaWx0ZXIiLCAic2hvcnQiLCAiY291bnRGaWx0ZXJzUmVjdXJzaXZlIiwgImZpbHRlckdyb3VwIiwgImNvdW50IiwgImZpbHRlciIsICJ1c2VGaWx0ZXJpbmciLCAiZmlsdGVyUGFyYW0iLCAic2V0RmlsdGVyUGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJhcHBsaWVkRmlsdGVyIiwgInVzZU1lbW8iLCAic2V0QXBwbGllZEZpbHRlciIsICJlZGl0aW5nRmlsdGVyIiwgInNldEVkaXRpbmdGaWx0ZXIiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgInRvdGFsRWRpdGluZ0ZpbHRlcnMiLCAidXNlSXNNdXRhdGluZyIsICJ1c2VJc0luc2VydGluZyIsICJtdXRhdGlvbktleSIsICJ1c2VDYWxsYmFjayIsICJERUZBVUxUX1BBR0VfU0laRSIsICJwYWdpbmF0aW9uUGFyc2VycyIsICJ1c2VQYWdpbmF0aW9uIiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzZXRQYWdpbmF0aW9uIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInNldFBhZ2luYXRpb25TdGF0ZSIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyT3JWYWx1ZSIsICJvbGQiLCAibmV3U3RhdGUiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgInVzZUFjdGl2ZVRhYmxlRGVsZXRlIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInNjaGVtYSIsICJ0YWJsZSIsICJ1c2VNdXRhdGlvbiIsICJyb3dzIiwgImVycm9yIiwgInJlc3VsdCIsICJ1c2VTZWxlY3Rpb24iLCAiZGF0YSIsICJhY3RpdmVUYWJsZSIsICJvbkVycm9yIiwgInVzZVN0dWRpbyIsICJwYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTdGF0ZSIsICJpc1NlbGVjdGluZyIsICJtdXRhdGUiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAidXNlRWZmZWN0IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJyb3dzIiwgInJvdyIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlU29ydGluZyIsICJzb3J0UGFyYW0iLCAic2V0U29ydFBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAicGFyc2VTb3J0aW5nIiwgIml0ZW0iLCAiY29sdW1uIiwgImRpcmVjdGlvbiIsICJlIiwgInNvcnRpbmdTdGF0ZSIsICJzZXRTb3J0aW5nU3RhdGUiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgIm5ld1NvcnRpbmdTdGF0ZSIsICJuZXdTdGF0ZSIsICJyZXNvbHZlZFN0YXRlIiwgInNvcnRTdHJpbmciLCAiaXNPYmplY3RUeXBlIiwgImZvcndhcmRSZWYiLCAiUmVhY3QiLCAianN4IiwgIlRhYmxlIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiVGFibGVIZWFkZXIiLCAiVGFibGVCb2R5IiwgIlRhYmxlRm9vdGVyIiwgIlRhYmxlUm93IiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAiVGFibGVDYXB0aW9uIiwgImlzVmFsaWRFbGVtZW50IiwgIkNvbnRleHRNZW51UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudVN1YlRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImluc2V0IiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uUmlnaHQiLCAiQ29udGV4dE1lbnVTdWJDb250ZW50IiwgIkNvbnRleHRNZW51Q29udGVudCIsICJDb250ZXh0TWVudUl0ZW0iLCAiQ29udGV4dE1lbnVDaGVja2JveEl0ZW0iLCAiY2hlY2tlZCIsICJDaGVjayIsICJDb250ZXh0TWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiQ29udGV4dE1lbnVMYWJlbCIsICJDb250ZXh0TWVudVNlcGFyYXRvciIsICJDb250ZXh0TWVudVNob3J0Y3V0IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkQ2VsbENvbnRleHRNZW51IiwgInByb3BzIiwgImNoaWxkcmVuIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgImNvbnRlbnQiLCAiZXh0cmFjdFRleHRDb250ZW50IiwgImVycm9yIiwgIkNvcHkiLCAibm9kZSIsICJpc1ZhbGlkRWxlbWVudCIsICJqc3giLCAiQ2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAicmVmIiwgInN0eWxlIiwgImZvcndhcmRlZFByb3BzIiwgIlRhYmxlQ2VsbCIsICJjbiIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJqc3giLCAiQm9vbGVhbkNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJEYXRlQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkVtcHR5Q2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkVudW1DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgIm9wdGlvbnMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJKU09OQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIk51bGxDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiTnVtZXJpY0NlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJSYXdDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiVGltZUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJqc3giLCAiZ2V0Q2VsbCIsICJjZWxsIiwgImNvbHVtbiIsICJwcm9wcyIsICJ2YWx1ZSIsICJFbXB0eUNlbGwiLCAiTnVsbENlbGwiLCAiZ3JvdXAiLCAib3B0aW9ucyIsICJpc0FycmF5IiwgIkpTT05DZWxsIiwgIlJhd0NlbGwiLCAiRW51bUNlbGwiLCAiQm9vbGVhbkNlbGwiLCAiRGF0ZUNlbGwiLCAiVGltZUNlbGwiLCAiTnVtZXJpY0NlbGwiLCAiaXNPYmplY3RUeXBlIiwgImZvcndhcmRSZWYiLCAiQ2hlY2tib3hQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIkNoZWNrYm94IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiQ2hlY2siLCAianN4IiwgIlNlbGVjdEhlYWRlckNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAidGFibGUiLCAicmVhZG9ubHkiLCAiY2xhc3NOYW1lIiwgInN0eWxlIiwgInJlc3QiLCAiQ2hlY2tib3giLCAidmFsdWUiLCAiZm9yd2FyZFJlZiIsICJGcmFnbWVudCIsICJqc3giLCAiU2VsZWN0Q2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAicmVmIiwgInN0eWxlIiwgImlzSGVhZGVyIiwgImZvcndhcmRlZFByb3BzIiwgInNlbGVjdENsYXNzZXMiLCAiY24iLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJqc3giLCAiU2VsZWN0Um93Q2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJyb3ciLCAicmVhZG9ubHkiLCAiY2xhc3NOYW1lIiwgInN0eWxlIiwgInJlc3QiLCAiU2VsZWN0Q2VsbCIsICJDaGVja2JveCIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyQ2VsbENvbnRleHQiLCAiUG9wb3ZlckNlbGwiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAib3BlbiIsICJzZXRPcGVuIiwgIlBvcG92ZXJDZWxsVHJpZ2dlciIsICJvbkRvdWJsZUNsaWNrIiwgImNsYXNzTmFtZSIsICJyZWYiLCAidHJpZ2dlclJlZiIsICJub2RlIiwgImNuIiwgIlBvcG92ZXJDZWxsQ29udGVudCIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgImV2ZW50IiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImFjdGlvbnMiLCAiY29udGV4dCIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJoYW5kbGVLZXlEb3duIiwgImpzeCIsICJqc3hzIiwgIldyaXRlYWJsZUNlbGwiLCAicHJvcHMiLCAiY2VsbENvbXBvbmVudCIsICJpbnB1dENvbXBvbmVudCIsICJQb3BvdmVyQ2VsbCIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImNuIiwgImNsb3Nlc3RDZW50ZXIiLCAiRG5kQ29udGV4dCIsICJEcmFnT3ZlcmxheSIsICJLZXlib2FyZFNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJTb3J0YWJsZUNvbnRleHQiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgInVzZVNvcnRhYmxlIiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJDU1MiLCAibW90aW9uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJjcmVhdGVQb3J0YWwiLCAic2hvcnQiLCAiY29lcmNlVG9WYWx1ZSIsICJjb2x1bW4iLCAib3BlcmF0b3IiLCAidmFsdWUiLCAiZGF0YVR5cGVHcm91cCIsICJjb2VyY2VUb1N0cmluZyIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJEcm9wZG93bk1lbnVTdWJDb250ZW50IiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAic2lkZU9mZnNldCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkRyb3Bkb3duTWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIlJlYWN0IiwgImpzeCIsICJJbnB1dCIsICJjbGFzc05hbWUiLCAidHlwZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU2VsZWN0UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIlNlbGVjdCIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvbkRvd24iLCAiU2VsZWN0U2Nyb2xsVXBCdXR0b24iLCAiQ2hldnJvblVwIiwgIlNlbGVjdFNjcm9sbERvd25CdXR0b24iLCAiU2VsZWN0Q29udGVudCIsICJwb3NpdGlvbiIsICJTZWxlY3RMYWJlbCIsICJTZWxlY3RJdGVtIiwgIkNoZWNrIiwgIlNlbGVjdFNlcGFyYXRvciIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJMZWFkaW5nT3BlcmF0b3JTZWxlY3QiLCAidmFsdWUiLCAib25WYWx1ZUNoYW5nZSIsICJkaXNhYmxlZCIsICJ0cmlnZ2VyQ2xhc3NOYW1lIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyIsICJhY3RpdmVJZCIsICJpdGVtcyIsICJ0YWJsZSIsICJhY3RpdmVJdGVtIiwgIml0ZW0iLCAibGVhZGluZ09wZXJhdG9yVmFsdWUiLCAic2hvd0xlYWRpbmdPcEZvck92ZXJsYXkiLCAiYWN0aXZlSXRlbUluZGV4IiwgInByZXZpb3VzSXRlbSIsICJGaWx0ZXJDb25kaXRpb24iLCAiRmlsdGVyR3JvdXBDb21wb25lbnQiLCAiRmlsdGVyTGlzdEl0ZW1zIiwgInBhcmVudEdyb3VwSWQiLCAib25VcGRhdGVJdGVtIiwgIm9uRGVsZXRlSXRlbSIsICJvblJlb3JkZXJJdGVtcyIsICJhY3RpdmVEcmFnSWQiLCAib25EcmFnU3RhcnQiLCAib25EcmFnRW5kU2lnbmFsIiwgInNvcnRhYmxlSXRlbUlkcyIsICJ1c2VNZW1vIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ1c2VTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJLZXlib2FyZFNlbnNvciIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAiRG5kQ29udGV4dCIsICJjbG9zZXN0Q2VudGVyIiwgImV2ZW50IiwgImFjdGl2ZSIsICJvdmVyIiwgIm9sZEluZGV4IiwgIm5ld0luZGV4IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiY3VycmVudEZpbHRlckl0ZW0iLCAiaW5kZXgiLCAic2hvd0xlYWRpbmdPcCIsICJsZWFkaW5nT3BWYWwiLCAib25MZWFkaW5nT3BDaGFuZ2VGbiIsICJpc0xlYWRpbmdPcFRhcmdldExhc3QiLCAicHJldkl0ZW0iLCAibmV3VmFsdWUiLCAidXBkYXRlZFByZXZJdGVtIiwgIlNvcnRhYmxlRmlsdGVySXRlbSIsICJ1cGRhdGVkRmlsdGVyIiwgImNyZWF0ZVBvcnRhbCIsICJEcmFnT3ZlcmxheSIsICJmaWx0ZXIiLCAib25VcGRhdGUiLCAib25EZWxldGUiLCAicGFyZW50RG5kSWQiLCAic2hvd0xlYWRpbmdPcGVyYXRvciIsICJvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSIsICJpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAic2V0Tm9kZVJlZiIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnSGFuZGxlUHJvcHMiLCAiaGFuZGxlQ29sdW1uQ2hhbmdlIiwgImhhbmRsZU9wZXJhdG9yQ2hhbmdlIiwgImhhbmRsZVZhbHVlQ2hhbmdlIiwgImUiLCAicmF3VmFsdWUiLCAiY29sdW1uSW5mbyIsICJjb2VyY2VUb1ZhbHVlIiwgImVkaXRlZFZhbHVlIiwgInNldEVkaXRlZFZhbHVlIiwgInVzZVN0YXRlIiwgImNvZXJjZVRvU3RyaW5nIiwgIm1vdGlvbiIsICJHcmlwVmVydGljYWwiLCAiY29sdW1uIiwgIklucHV0IiwgIkJ1dHRvbiIsICJYIiwgImdyb3VwIiwgImlzUm9vdCIsICJpc0V4cGFuZGVkIiwgInNldElzRXhwYW5kZWQiLCAic2V0QWN0aXZlRHJhZ0lkIiwgImhhbmRsZUFkZEZpbHRlciIsICJuZXdGaWx0ZXIiLCAic2hvcnQiLCAiaGFuZGxlQWRkR3JvdXAiLCAibmV3R3JvdXAiLCAidXBkYXRlSXRlbUluR3JvdXAiLCAidXBkYXRlZEZpbHRlck9yR3JvdXAiLCAibmV3RmlsdGVycyIsICJkZWxldGVJdGVtRnJvbUdyb3VwIiwgImhhbmRsZURyYWdTdGFydCIsICJoYW5kbGVEcmFnRW5kU2lnbmFsIiwgImhhbmRsZVJlb3JkZXJJdGVtcyIsICJyZW9yZGVyZWRGaWx0ZXJzIiwgImFycmF5TW92ZSIsICJyZW5kZXJHcm91cENvbnRlbnQiLCAiY24iLCAiQ2hldnJvbkRvd24iLCAiQ2hldnJvblJpZ2h0IiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQ2lyY2xlSGVscCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIlF1ZXJ5VmlzdWFsaXplciIsICJpc0FuZEdyb3VwT3BlbiIsICJmIiwgImkiLCAicmVzdWx0IiwgImlzTGFzdCIsICJvcGVyYXRvciIsICJGaWx0ZXJUcmVlIiwgInNldEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgIkRuZENvbnRleHQiLCAiTW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ1c2VTb3J0YWJsZSIsICJDU1MiLCAiZ2V0Q29yZVJvd01vZGVsIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0SXRlbSIsICJrZXkiLCAiaXRlbVZhbHVlIiwgImxvY2FsU3RvcmFnZSIsICJKU09OIiwgInBhcnNlIiwgInVzZUxvY2FsU3RvcmFnZSIsICJkZWZhdWx0VmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgImluaXRpYWxWYWx1ZSIsICJzZXR0ZXIiLCAidXNlQ2FsbGJhY2siLCAidXBkYXRlciIsICJvbGQiLCAibmV3VmFsIiwgInNldEl0ZW0iLCAic3RyaW5naWZ5IiwgImRlZmF1bHRUaGVtZSIsICJiYWNrZ3JvdW5kIiwgImJhY2tncm91bmRBbHQiLCAiZm9yZWdyb3VuZCIsICJncmF5IiwgImdyYXlBbHQiLCAiaW5wdXRCYWNrZ3JvdW5kQ29sb3IiLCAiaW5wdXRUZXh0Q29sb3IiLCAic3VjY2VzcyIsICJkYW5nZXIiLCAiYWN0aXZlIiwgIndhcm5pbmciLCAiVGhlbWVDb250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiVGhlbWVQcm92aWRlciIsICJfcmVmIiwgInRoZW1lIiwgInJlc3QiLCAiY3JlYXRlRWxlbWVudCIsICJQcm92aWRlciIsICJfZXh0ZW5kcyIsICJ1c2VUaGVtZSIsICJ1c2VDb250ZXh0IiwgInVzZU1lZGlhUXVlcnkiLCAicXVlcnkiLCAiaXNNYXRjaCIsICJzZXRJc01hdGNoIiwgIndpbmRvdyIsICJtYXRjaE1lZGlhIiwgIm1hdGNoZXMiLCAibWF0Y2hlciIsICJvbkNoYW5nZSIsICJhZGRMaXN0ZW5lciIsICJyZW1vdmVMaXN0ZW5lciIsICJpc1NlcnZlciIsICJzdHlsZWQiLCAidHlwZSIsICJuZXdTdHlsZXMiLCAicXVlcmllcyIsICJmb3J3YXJkUmVmIiwgInJlZiIsICJzdHlsZSIsICJtZWRpYVN0eWxlcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJyZWR1Y2UiLCAiY3VycmVudCIsICJfcmVmMiIsICJ1c2VJc01vdW50ZWQiLCAibW91bnRlZFJlZiIsICJ1c2VSZWYiLCAiaXNNb3VudGVkIiwgIlBhbmVsIiwgIl9wcm9wcyIsICJmb250U2l6ZSIsICJmb250RmFtaWx5IiwgImRpc3BsYXkiLCAiYmFja2dyb3VuZENvbG9yIiwgImNvbG9yIiwgImZsZXhEaXJlY3Rpb24iLCAiZmxleCIsICJvdmVyZmxvdyIsICJoZWlnaHQiLCAiKG1heC13aWR0aDogNzAwcHgpIiwgImJvcmRlclRvcCIsICJCdXR0b24iLCAicHJvcHMiLCAiYXBwZWFyYW5jZSIsICJmb250V2VpZ2h0IiwgImJvcmRlciIsICJib3JkZXJSYWRpdXMiLCAicGFkZGluZyIsICJvcGFjaXR5IiwgImRpc2FibGVkIiwgInVuZGVmaW5lZCIsICJjdXJzb3IiLCAibGluZUhlaWdodCIsICJXZWJraXRBcHBlYXJhbmNlIiwgImJhY2tncm91bmRJbWFnZSIsICJiYWNrZ3JvdW5kUmVwZWF0IiwgImJhY2tncm91bmRQb3NpdGlvbiIsICJiYWNrZ3JvdW5kU2l6ZSIsICJFbnRyeSIsICJvdXRsaW5lIiwgIndvcmRCcmVhayIsICJMYWJlbCIsICJWYWx1ZSIsICJTdWJFbnRyaWVzIiwgIm1hcmdpbkxlZnQiLCAicGFkZGluZ0xlZnQiLCAiYm9yZGVyTGVmdCIsICJJbmZvIiwgIkV4cGFuZGVyIiwgImV4cGFuZGVkIiwgInRyYW5zaXRpb24iLCAidHJhbnNmb3JtIiwgIkRlZmF1bHRSZW5kZXJlciIsICJoYW5kbGVFbnRyeSIsICJsYWJlbCIsICJzdWJFbnRyaWVzIiwgInN1YkVudHJ5UGFnZXMiLCAidG9nZ2xlIiwgInBhZ2VTaXplIiwgInJlbmRlcmVyIiwgInZhbHVlU25hcHNob3QiLCAic2V0VmFsdWVTbmFwc2hvdCIsICJleHBhbmRlZFBhZ2VzIiwgInNldEV4cGFuZGVkUGFnZXMiLCAicmVmcmVzaFZhbHVlU25hcHNob3QiLCAibGVuZ3RoIiwgIkZyYWdtZW50IiwgIm9uQ2xpY2siLCAiU3RyaW5nIiwgInRvTG93ZXJDYXNlIiwgIm1hcCIsICJlbnRyeSIsICJpbmRleCIsICJpbmNsdWRlcyIsICJmaWx0ZXIiLCAiZCIsICJFeHBsb3JlciIsICJkZWZhdWx0RXhwYW5kZWQiLCAiZ2V0T3duUHJvcGVydHlOYW1lcyIsICJfcmVmMyIsICJkZXB0aCIsICJzZXRFeHBhbmRlZCIsICJzZXQiLCAicGF0aCIsICJtYWtlUHJvcGVydHkiLCAic3ViIiwgIm5ld1BhdGgiLCAiY29uY2F0IiwgInN1YkRlZmF1bHRFeHBhbmRlZCIsICJzdWJQYXRoIiwgIkFycmF5IiwgImlzQXJyYXkiLCAiaSIsICJTeW1ib2wiLCAiaXRlcmF0b3IiLCAiZnJvbSIsICJ2YWwiLCAiX3JlZjQiLCAicHVzaCIsICJzbGljZSIsICJMb2dvIiwgIndpZHRoIiwgInZpZXdCb3giLCAidmVyc2lvbiIsICJzdHJva2UiLCAic3Ryb2tlV2lkdGgiLCAiZmlsbCIsICJmaWxsUnVsZSIsICJpZCIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiaW5pdGlhbElzT3BlbiIsICJ0YWJsZSIsICJwYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblByb3BzIiwgImNvbnRhaW5lckVsZW1lbnQiLCAiQ29udGFpbmVyIiwgInJvb3RSZWYiLCAicGFuZWxSZWYiLCAiaXNPcGVuIiwgInNldElzT3BlbiIsICJwYW5lbFN0eWxlIiwgIm90aGVyUGFuZWxQcm9wcyIsICJ0b2dnbGVCdXR0b25TdHlsZSIsICJvblRvZ2dsZUNsaWNrIiwgIm90aGVyVG9nZ2xlQnV0dG9uUHJvcHMiLCAiY2xhc3NOYW1lIiwgIlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIiwgIm1heEhlaWdodCIsICJlIiwgIm1hcmdpbiIsICJkYW5nZXJvdXNseVNldElubmVySFRNTCIsICJfX2h0bWwiLCAibWluSGVpZ2h0IiwgImJvcmRlclJpZ2h0IiwgImp1c3RpZnlDb250ZW50IiwgImFsaWduSXRlbXMiLCAibWFyZ2luUmlnaHQiLCAiZmxleFdyYXAiLCAib3ZlcmZsb3dZIiwgImdldFN0YXRlIiwgImdldEFsbENvbHVtbnMiLCAiZ2V0Q29yZVJvd01vZGVsIiwgImdldEZpbHRlcmVkUm93TW9kZWwiLCAiZ2V0U29ydGVkUm93TW9kZWwiLCAiZ2V0R3JvdXBlZFJvd01vZGVsIiwgImdldEV4cGFuZGVkUm93TW9kZWwiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJqc3giLCAiU2tlbGV0b24iLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgImNuIiwgImZsZXhSZW5kZXIiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZEhlYWRlciIsICJwcm9wcyIsICJoZWFkZXIiLCAiY2xhc3NOYW1lIiwgImNuIiwgImZsZXhSZW5kZXIiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJNb3ZlRG93biIsICJNb3ZlVXAiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQnV0dG9uIiwgIkNoZXZyb25Eb3duIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiRHJvcGRvd25NZW51SXRlbSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgIkFycm93VXBXaWRlTmFycm93IiwgIlgiLCAiUGluT2ZmIiwgIlBpbiIsICJlIiwgImpzeCIsICJEYXRhR3JpZExvYWRpbmdCYXIiLCAiY2xhc3NOYW1lIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkUGFnaW5hdGlvbiIsICJwcm9wcyIsICJ0YWJsZSIsICJ2YXJpYW50IiwgInBhZ2VJbmRleCIsICJwYWdlQ291bnQiLCAiQnV0dG9uIiwgIkNoZXZyb25zTGVmdCIsICJDaGV2cm9uTGVmdCIsICJJbnB1dCIsICJlIiwgIkNoZXZyb25SaWdodCIsICJDaGV2cm9uc1JpZ2h0IiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiY29sdW1uIiwgImtpbmQiLCAiaXNQaW5uZWQiLCAiaXNMZWZ0UGlubmVkIiwgImlzUmlnaHRQaW5uZWQiLCAiaXNTZWxlY3RDb2x1bW4iLCAiY24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRHJhZ2dhYmxlSGVhZGVyQ2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAiaGVhZGVyIiwgImNvbW1vblN0eWxlIiwgImRpc2FibGVEcmFnZ2luZyIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJzZXROb2RlUmVmIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAiZHJhZ1N0eWxlIiwgIkNTUyIsICJjb21tb25DbGFzcyIsICJjbiIsICJkcmFnQ2xhc3MiLCAiVGFibGVIZWFkIiwgIkRhdGFHcmlkIiwgImNvbHVtbkRlZnMiLCAiZ2V0QmVmb3JlUm93cyIsICJpc0xvYWRpbmciLCAiaXNQcm9jZXNzaW5nIiwgIm9uUGFnaW5hdGlvbkNoYW5nZSIsICJvblJvd1NlbGVjdGlvbkNoYW5nZSIsICJvblNvcnRpbmdDaGFuZ2UiLCAicGFnZUNvdW50IiwgInBhZ2luYXRpb25TdGF0ZSIsICJyb3dzIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNvcnRpbmdTdGF0ZSIsICJjb2x1bW5PcmRlciIsICJzZXRDb2x1bW5PcmRlciIsICJ1c2VTdGF0ZSIsICJjb2x1bW5QaW5uaW5nIiwgInNldENvbHVtblBpbm5pbmciLCAiY29sdW1uU2l6aW5nIiwgInNldENvbHVtblNpemluZyIsICJzb3J0aW5nIiwgInVzZU1lbW8iLCAidG9Tb3J0aW5nU3RhdGUiLCAiZGlzcGxheUxvYWRlciIsICJ1c2VFZmZlY3QiLCAiYWNjZXNzb3JLZXkiLCAiaGFuZGxlRHJhZ0VuZCIsICJhY3RpdmUiLCAib3ZlciIsICJvcmRlciIsICJhY3RpdmVJbmRleCIsICJvdmVySW5kZXgiLCAiYXJyYXlNb3ZlIiwgIm1vdXNlU2Vuc29yIiwgInVzZVNlbnNvciIsICJNb3VzZVNlbnNvciIsICJzZW5zb3JzIiwgInVzZVNlbnNvcnMiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRDb3JlUm93TW9kZWwiLCAiX19wc19yb3dpZCIsICJ1cGRhdGVyT3JWYWx1ZSIsICJvbGQiLCAidG9Tb3J0T3JkZXJJdGVtcyIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgIkRuZENvbnRleHQiLCAiVGFibGUiLCAiVGFibGVIZWFkZXIiLCAiaGVhZGVyR3JvdXAiLCAiVGFibGVSb3ciLCAiU29ydGFibGVDb250ZXh0IiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgImhlYWRlckZuIiwgIkhlYWRlckNvbXBvbmVudCIsICJwaW5uaW5nU3R5bGVzIiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiRGF0YUdyaWRIZWFkZXIiLCAiVGFibGVCb2R5IiwgInJvdyIsICJjZWxsIiwgImkiLCAiQ2VsbCIsICJUYWJsZUNlbGwiLCAiU2tlbGV0b24iLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiZnJvbSIsICJpdGVtIiwgIlRvb2x0aXBQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgImNsYXNzTmFtZSIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJjbiIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZEhlYWRlckNlbGwiLCAiY29sdW1uIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIktleVJvdW5kIiwgIlRvb2x0aXBDb250ZW50IiwgImlzT2JqZWN0VHlwZSIsICJtb3Rpb24iLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiTGFiZWxQcmltaXRpdmUiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJsYWJlbFZhcmlhbnRzIiwgImN2YSIsICJMYWJlbCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlN3aXRjaFByaW1pdGl2ZXMiLCAiUmVhY3QiLCAianN4IiwgIlN3aXRjaCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIklucHV0QWN0aW9ucyIsICJvblNhdmUiLCAib25DYW5jZWwiLCAib25DbG9zZSIsICJvbk51bGxDaGFuZ2UiLCAiaXNOdWxsIiwgInJlYWRvbmx5IiwgIkNvcm5lckRvd25MZWZ0IiwgIlN3aXRjaCIsICJjaGVja2VkIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkJvb2xlYW5JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAidmFsdWVUb1N1Ym1pdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAibW90aW9uIiwgIlN3aXRjaCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAidXNlSW5wdXQiLCAicHJvcHMiLCAiaW5pdGlhbFZhbHVlIiwgInZhbHVlIiwgInNldFZhbHVlIiwgImV2ZW50IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJEYXRlSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiZm9ybWF0dGVkRGF0ZSIsICJ1c2VNZW1vIiwgImRhdGUiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJ1c2VDYWxsYmFjayIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJFbnVtSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInZhbHVlIiwgIm9wdGlvbnMiLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZVNlbGVjdE9wdGlvbiIsICJvcHRpb24iLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJiYWRnZVZhcmlhbnRzIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJKc29uSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAianNvblZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTnVtZXJpY0lucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgIm51bWVyaWNWYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIlJhd0lucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZU1lbW8iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIlRpbWVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWRUaW1lIiwgInVzZU1lbW8iLCAiaGFzVGltZXpvbmUiLCAiZGF0ZSIsICJ0aW1lUmVnZXgiLCAibWF0Y2giLCAiaG91cnMiLCAibWludXRlcyIsICJ0ek9mZnNldCIsICJwZXJpb2QiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJqc3giLCAiZ2V0SW5wdXQiLCAicHJvcHMiLCAiY2VsbCIsICJjb2x1bW4iLCAib25TdWJtaXQiLCAiZ3JvdXAiLCAib3B0aW9ucyIsICJpc0FycmF5IiwgInJlYWRvbmx5IiwgImNlbGxWYWx1ZSIsICJ2YWx1ZSIsICJEYXRlSW5wdXQiLCAiVGltZUlucHV0IiwgIkpzb25JbnB1dCIsICJCb29sZWFuSW5wdXQiLCAiRW51bUlucHV0IiwgIk51bWVyaWNJbnB1dCIsICJSYXdJbnB1dCIsICJpc09iamVjdFR5cGUiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgIkZyYWdtZW50IiwgImpzeCIsICJTdGFnZWRSb3dzIiwgInByb3BzIiwgInBhcmVudFRhYmxlIiwgInN0YWdlZFJvd3MiLCAic2V0U3RhZ2VkUm93cyIsICJyZWFkb25seSIsICJ1c2VJc0luc2VydGluZyIsICJ1cGRhdGVTdGFnZWRSb3ciLCAicm93SW5kZXgiLCAicGFydGlhbFJvdyIsICJwcmV2Um93cyIsICJuZXdSb3dzIiwgImNvbHVtbkRlZnMiLCAiY29sdW1uIiwgIkVtcHR5Q2VsbCIsICJjZWxsIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJnZXRJbnB1dCIsICJ2YWx1ZSIsICJ0YWJsZSIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAicm93IiwgImkiLCAiVGFibGVSb3ciLCAiaiIsICJDZWxsIiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQWN0aXZlVGFibGVWaWV3IiwgIl9wcm9wcyIsICJpc011dGF0aW5nIiwgInVzZUlzTXV0YXRpbmciLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJpc0Z1bGxzY3JlZW4iLCAidG9nZ2xlRnVsbHNjcmVlbiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgInNvcnRpbmdTdGF0ZSIsICJzZXRTb3J0aW5nU3RhdGUiLCAidXNlU29ydGluZyIsICJwYWdpbmF0aW9uU3RhdGUiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInVzZVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAic2V0QXBwbGllZEZpbHRlciIsICJlZGl0aW5nRmlsdGVyIiwgInNldEVkaXRpbmdGaWx0ZXIiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VGaWx0ZXJpbmciLCAiZGF0YSIsICJpc0ZldGNoaW5nIiwgInJlZmV0Y2giLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJkZWxldGVTZWxlY3Rpb24iLCAiaXNTZWxlY3RpbmciLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU2VsZWN0aW9uIiwgInJlYWRvbmx5IiwgImNvbHVtbiIsICJpc0luc2VydGluZyIsICJ1c2VJc0luc2VydGluZyIsICJpbnNlcnQiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAidXBkYXRlIiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgInVzZUVmZmVjdCIsICJzYXZlU3RhZ2VkUm93cyIsICJ0b2FzdCIsICJuZXdTdGFnZWRSb3ciLCAib2xkIiwgImRyb3BTdGFnZWRSb3dzIiwgImhhbmRsZUNlbGxJbnB1dFN1Ym1pdCIsICJ2YWx1ZSIsICJyb3ciLCAib25GaWx0ZXJPcGVuQ2hhbmdlIiwgIm9wZW4iLCAiY29uY3JldGVDb2x1bW5EZWZzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjZWxsIiwgInByb3BzIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJnZXRJbnB1dCIsICJ2aXJ0dWFsQ29sdW1uRGVmcyIsICJ0YWJsZSIsICJTZWxlY3RIZWFkZXJDZWxsIiwgIlNlbGVjdFJvd0NlbGwiLCAiY29sdW1uRGVmcyIsICJkZWZhdWx0Q29sdW1uU29ydGluZyIsICJCdXR0b24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiUGFuZWxMZWZ0T3BlbiIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgImNuIiwgIkZpbHRlciIsICJCYWRnZSIsICJBbmltYXRlTnVtYmVyIiwgIlBvcG92ZXJDb250ZW50IiwgIkZpbHRlclRyZWUiLCAiZmlsdGVyIiwgIlJlZnJlc2hDdyIsICJNaW5pbWl6ZSIsICJNYXhpbWl6ZSIsICJEYXRhR3JpZCIsICJTdGFnZWRSb3dzIiwgImdldFBhZ2VDb3VudCIsICJyb3dDb3VudCIsICJwYWdlU2l6ZSIsICJwYWdlQ291bnQiLCAiYSIsICJiIiwgImFNZXRhIiwgImJNZXRhIiwgIlNsb3QiLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXVpZHY0IiwgInVzZVF1ZXJ5IiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAic2lnbmFsIiwgImVycm9yIiwgImludHJvc3BlY3Rpb24iLCAiY3R4IiwgInVzZUFjdGl2ZVRhYmxlIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZVN0dWRpbyIsICJpbnRyb3NwZWN0aW9uIiwgImRhdGFVcGRhdGVkQXQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJpc0xvYWRpbmciLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAidGFibGVzIiwgInVzZU1lbW8iLCAidG90YWxUYWJsZUNvdW50IiwgInN1bSIsICJzY2hlbWEiLCAiZmlyc3RUYWJsZSIsICJ0YWJsZUFuZFNjaGVtYSIsICJzZXRUYWJsZUFuZFNjaGVtYSIsICJ1c2VRdWVyeVN0YXRlcyIsICJ2IiwgInNldFBhZ2VQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInNldFNvcnRQYXJhbSIsICJ1c2VFZmZlY3QiLCAidGFibGVGcm9tUGFyYW0iLCAidCIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VDYWxsYmFjayIsICJuZXdUYWJsZSIsICJ1dWlkdjQiLCAianN4IiwgImpzeHMiLCAiTmF2aWdhdGlvbiIsICJjbGFzc05hbWUiLCAidGFibGVzIiwgImFjdGl2ZVRhYmxlIiwgImlzTG9hZGluZyIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VBY3RpdmVUYWJsZSIsICJhY3RpdmVWaWV3IiwgImhhbmRsZVZpZXdDaGFuZ2UiLCAidXNlQWN0aXZlVmlldyIsICJzaWRlQmFyQ2xhc3NlcyIsICJjbiIsICJ0YWJsZSIsICJfIiwgImluZGV4IiwgIlNrZWxldG9uIiwgIkJsb2NrIiwgImxhYmVsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIlRhYmxlMiIsICJJdGVtIiwgImFzQ2hpbGQiLCAiaXNBY3RpdmUiLCAic2l6ZSIsICJ3cmFwQ2hpbGRyZW5JblNwYW4iLCAiU2xvdCIsICJ1c2VNZW1vIiwgIk5PX1RBQkxFU19OT0RFIiwgInVzZVNjaGVtYVZpc3VhbGl6YXRpb24iLCAiaW50cm9zcGVjdGlvbiIsICJpc0xvYWRpbmciLCAiZXJyb3IiLCAidXNlSW50cm9zcGVjdGlvbiIsICJ1c2VNZW1vIiwgInRhYmxlcyIsICJoYXNBbnlUYWJsZXMiLCAic2NoZW1hIiwgInRhYmxlIiwgImZpZWxkcyIsICJjb2x1bW4iLCAibWVtbyIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAiUmVhY3RGbG93IiwgImFkZEVkZ2UiLCAiQmFja2dyb3VuZCIsICJDb25uZWN0aW9uTGluZVR5cGUiLCAiQ29udHJvbHMiLCAiSGFuZGxlIiwgIlBvc2l0aW9uIiwgInVzZUVkZ2VzU3RhdGUiLCAidXNlTm9kZXNTdGF0ZSIsICJqc3giLCAianN4cyIsICJUYWJsZU5vZGUiLCAibWVtbyIsICJkYXRhIiwgImlzTm9UYWJsZXNOb2RlIiwgImdldEljb24iLCAiZmllbGROYW1lIiwgImZpZWxkVHlwZSIsICJDaXJjbGVBbGVydCIsICJIYXNoIiwgIk1haWwiLCAiUGhvbmUiLCAiVXNlciIsICJDYWxlbmRhciIsICJLZXkiLCAiY24iLCAiSGFuZGxlIiwgIlBvc2l0aW9uIiwgImZpZWxkIiwgImluZGV4IiwgIm5vZGVUeXBlcyIsICJTY2hlbWFWaXN1YWxpemF0aW9uIiwgInRhYmxlcyIsICJyZWxhdGlvbnNoaXBzIiwgImluaXRpYWxOb2RlcyIsICJ0YWJsZSIsICJpbml0aWFsRWRnZXMiLCAicmVsIiwgIm5vZGVzIiwgInNldE5vZGVzIiwgIm9uTm9kZXNDaGFuZ2UiLCAidXNlTm9kZXNTdGF0ZSIsICJlZGdlcyIsICJzZXRFZGdlcyIsICJvbkVkZ2VzQ2hhbmdlIiwgInVzZUVkZ2VzU3RhdGUiLCAidXNlRWZmZWN0IiwgIm9uQ29ubmVjdCIsICJ1c2VDYWxsYmFjayIsICJwYXJhbXMiLCAiZWRzIiwgImFkZEVkZ2UiLCAiUmVhY3RGbG93IiwgIkNvbm5lY3Rpb25MaW5lVHlwZSIsICJCYWNrZ3JvdW5kIiwgIkNvbnRyb2xzIiwgImpzeCIsICJTY2hlbWFWaWV3IiwgInRhYmxlcyIsICJyZWxhdGlvbnNoaXBzIiwgInVzZVNjaGVtYVZpc3VhbGl6YXRpb24iLCAianN4IiwgIlNjaGVtYVZpc3VhbGl6YXRpb24iLCAianN4IiwgImpzeHMiLCAiU3R1ZGlvIiwgInByb3BzIiwgImFkYXB0ZXIiLCAib25FcnJvciIsICJvblRlbGVtZXRyeUV2ZW50IiwgIlN0dWRpb0NvbnRleHRQcm92aWRlciIsICJTdHVkaW9Db250ZW50IiwgImlzRnVsbHNjcmVlbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInVzZVN0dWRpbyIsICJhY3RpdmVWaWV3IiwgInVzZUFjdGl2ZVZpZXciLCAiY29udGFpbmVyQ2xhc3NlcyIsICJjbiIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk5hdmlnYXRpb24iLCAiQWN0aXZlVGFibGVWaWV3IiwgIlNjaGVtYVZpZXciXQp9Cg==
|
|
347
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS12aWV3LnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jb250ZXh0LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9SZWFjdFF1ZXJ5RGV2dG9vbHMudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcXVlcnktZGV2dG9vbHNANS43Mi4yL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcXVlcnktZGV2dG9vbHMvYnVpbGQvaW5kZXguanMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzUGFuZWwudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc29ubmVyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTnVxc0hhc2hBZGFwdGVyLnRzeCIsICIuLi8uLi91aS9ob29rcy9udXFzLnRzIiwgIi4uLy4uL3VpL2xpYi91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY2xhc3MtZ3JvdXAtdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2xydS1jYWNoZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvcGFyc2UtY2xhc3MtbmFtZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY29uZmlnLXV0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9tZXJnZS1jbGFzc2xpc3QudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3R3LWpvaW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NyZWF0ZS10YWlsd2luZC1tZXJnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZnJvbS10aGVtZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdmFsaWRhdG9ycy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZGVmYXVsdC1jb25maWcudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNvbmZpZ3MudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2V4dGVuZC10YWlsd2luZC1tZXJnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctbWVyZ2UudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL0FjdGl2ZVRhYmxlVmlldy50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvc2hhcmVkL3NyYy91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2RlZmF1bHRBdHRyaWJ1dGVzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2NyZWF0ZUx1Y2lkZUljb24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy1kb3duLXdpZGUtbmFycm93LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jYWxlbmRhci50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtYWxlcnQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtaGVscC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NvcHkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3JuZXItZG93bi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZmlsdGVyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZ3JpcC12ZXJ0aWNhbC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2hhc2gudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXktcm91bmQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tYWlsLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWF4aW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9taW5pbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1vcGVuLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGhvbmUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4tb2ZmLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcmVmcmVzaC1jdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3RhYmxlLTIudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy91c2VyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9ob29rcy91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdC50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXF1ZXJ5LnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtdXBkYXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1maWx0ZXJpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL2dldC1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Cb29sZWFuQ2VsbC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90YWJsZS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdENlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRMb2FkaW5nQmFyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZFBhZ2luYXRpb24udHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nLnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdG9vbHRpcC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvZ2V0LWlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvQm9vbGVhbklucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2xhYmVsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3N3aXRjaC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2lucHV0LWFjdGlvbnMudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9EYXRlSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC91c2UtaW5wdXQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0VudW1JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0pzb25JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L051bWVyaWNJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1Jhd0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvVGltZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vU3RhZ2VkUm93cy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL05hdmlnYXRpb24udHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNjaGVtYS12aXN1YWxpemF0aW9uLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9zY2hlbWEvVmlzdWFsaXNlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL3NjaGVtYS9TY2hlbWFWaWV3LnRzeCJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciB9IGZyb20gXCIuLi8uLi9kYXRhXCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVWaWV3IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdmlld1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBBY3RpdmVUYWJsZVZpZXcgfSBmcm9tIFwiLi9BY3RpdmVUYWJsZVZpZXdcIjtcbmltcG9ydCB7IFN0dWRpb0NvbnRleHRQcm92aWRlciwgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gXCIuL05hdmlnYXRpb25cIjtcbmltcG9ydCB7IFNjaGVtYVZpZXcgfSBmcm9tIFwiLi9zY2hlbWEvU2NoZW1hVmlld1wiO1xuXG5leHBvcnQgdHlwZSBTdHVkaW9UZWxlbWV0cnlFdmVudCA9IHtcbiAgZXZlbnQ6IFwic3R1ZGlvX2xhdW5jaGVkXCI7XG4gIHBheWxvYWQ6IHtcbiAgICBldmVudF9pZDogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogc3RyaW5nO1xuICAgIHVzZXJfaWQ/OiBzdHJpbmc7XG4gICAgd29ya3NwYWNlX2lkPzogc3RyaW5nO1xuICAgIG9yZ2FuaXphdGlvbl9pZD86IHN0cmluZztcbiAgICBlbWJlZGRpbmdfdHlwZT86IHN0cmluZztcbiAgICB2ZW5kb3JfaWQ/OiBzdHJpbmc7XG4gICAgdGFibGVfY291bnQ6IG51bWJlcjtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3R1ZGlvUHJvcHMge1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgb25UZWxlbWV0cnlFdmVudD86IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBNYWluIFN0dWRpbyBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBkYXRhYmFzZSB2aXN1YWxpemF0aW9uIGFuZCBtYW5hZ2VtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW8ocHJvcHM6IFN0dWRpb1Byb3BzKSB7XG4gIGNvbnN0IHsgYWRhcHRlciwgb25FcnJvciwgb25UZWxlbWV0cnlFdmVudCB9ID0gcHJvcHM7XG5cbiAgaWYgKCFhZGFwdGVyKSB7XG4gICAgY29uc29sZS5lcnJvcihcIk5vIGFkYXB0ZXIgcHJvdmlkZWQgdG8gU3R1ZGlvIGNvbXBvbmVudFwiKTtcbiAgICByZXR1cm4gPGRpdj5FcnJvcjogTm8gYWRhcHRlciBwcm92aWRlZDwvZGl2PjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0dWRpb0NvbnRleHRQcm92aWRlciBhZGFwdGVyPXthZGFwdGVyfSBvbkVycm9yPXtvbkVycm9yfSBvblRlbGVtZXRyeUV2ZW50PXtvblRlbGVtZXRyeUV2ZW50fT5cbiAgICAgIDxTdHVkaW9Db250ZW50IC8+XG4gICAgPC9TdHVkaW9Db250ZXh0UHJvdmlkZXI+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFN0dWRpb0NvbnRlbnQoKSB7XG4gIGNvbnN0IHsgaXNGdWxsc2NyZWVuLCBpc05hdmlnYXRpb25PcGVuIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBhY3RpdmVWaWV3IH0gPSB1c2VBY3RpdmVWaWV3KCk7XG5cbiAgY29uc3QgY29udGFpbmVyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGwgcHMtbWluLWgtMCBwcy1tYXgtaC1mdWxsXCIsXG4gICAgaXNGdWxsc2NyZWVuICYmIFwicHMtZml4ZWQgcHMtaW5zZXQtMCBwcy16LVs5OTk5XSBwcy1iZy1iYWNrZ3JvdW5kIHBzLXAtMlwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBkYXRhLWZ1bGxzY3JlZW49e2lzRnVsbHNjcmVlbn0gY2xhc3NOYW1lPXtjb250YWluZXJDbGFzc2VzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1nYXAtMCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC01MCBwcy1yZWxhdGl2ZSBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtcm91bmRlZC1sZ1wiPlxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gJiYgKFxuICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHdpZHRoOiBcImF1dG9cIiwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPE5hdmlnYXRpb24gLz5cbiAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cblxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtMTAwIHBzLWZsZXgtY29sIHBzLXAtcHggcHMtcm91bmRlZC1sZyBwcy1zZWxmLXN0YXJ0IHBzLWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLW1heC1oLWZ1bGwgcHMtb3ZlcmZsb3ctY2xpcFwiXG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICA+XG4gICAgICAgICAge2FjdGl2ZVZpZXcgPT09IFwidGFibGVzXCIgPyA8QWN0aXZlVGFibGVWaWV3IC8+IDogPFNjaGVtYVZpZXcgLz59XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgU3R1ZGlvVmlldywgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG4vKipcbiAqIEhvb2sgdG8gZW5jYXBzdWxhdGUgYWxsIGxvZ2ljIGZvciBtYW5hZ2luZyB0aGUgYWN0aXZlIHZpZXcuXG4gKiBIYW5kbGVzIHN5bmNpbmcgd2l0aCBVUkwgcGFyYW1zIGFuZCBleHBvc2VzIGEgc2ltcGxlIEFQSSBmb3IgY29uc3VtZXJzLlxuICogU2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoaW4gU3R1ZGlvIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVWaWV3KCkge1xuICBjb25zdCB7IGFjdGl2ZVZpZXcsIHNldEFjdGl2ZVZpZXcgfSA9IHVzZVN0dWRpbygpO1xuXG4gIC8vIEdldCBhbGwgdGhlIHBhcmFtcyB3ZSBtaWdodCBuZWVkIHRvIGNsZWFuIHVwXG4gIGNvbnN0IFt2aWV3UGFyYW0sIHNldFZpZXdQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBcInRhYmxlc1wiIGFzIFN0dWRpb1ZpZXcsXG4gICAgcGFyc2U6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiAodiBhcyBTdHVkaW9WaWV3KSB8fCBcInRhYmxlc1wiLFxuICAgIHNlcmlhbGl6ZTogKHY6IFN0dWRpb1ZpZXcgfCBudWxsKSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIENsZWFuIHVwIFVSTCBwYXJhbXMgdGhhdCBhcmUgbm90IG5lZWRlZCBmb3Igc2NoZW1hIHZpc3VhbGlzZXJcbiAgY29uc3QgY2xlYW5VcmxQYXJhbXNGb3JTY2hlbWFWaXN1YWxpc2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIEdldCB0aGUgY3VycmVudCBoYXNoIGFuZCBjcmVhdGUgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0XG4gICAgY29uc3QgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoaGFzaCk7XG5cbiAgICAvLyBSZW1vdmUgYWxsIHBhcmFtcyBleGNlcHQgJ3ZpZXcnXG4gICAgZm9yIChjb25zdCBwYXJhbSBvZiBBcnJheS5mcm9tKHNlYXJjaFBhcmFtcy5rZXlzKCkpKSB7XG4gICAgICBpZiAocGFyYW0gIT09IFwidmlld1wiKSB7XG4gICAgICAgIHNlYXJjaFBhcmFtcy5kZWxldGUocGFyYW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSB2aWV3IHBhcmFtIGlzIHNldCB0byBzY2hlbWEtdmlzdWFsaXNlclxuICAgIHNlYXJjaFBhcmFtcy5zZXQoXCJ2aWV3XCIsIFwic2NoZW1hLXZpc3VhbGlzZXJcIik7XG5cbiAgICAvLyBVcGRhdGUgdGhlIFVSTFxuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBcIlwiLCBgIyR7c2VhcmNoUGFyYW1zLnRvU3RyaW5nKCl9YCk7XG4gIH0sIFtdKTtcblxuICAvLyBFZmZlY3QgdG8gc3luYyBhY3RpdmUgdmlldyB3aXRoIFVSTCBwYXJhbVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh2aWV3UGFyYW0gJiYgKHZpZXdQYXJhbSA9PT0gXCJ0YWJsZXNcIiB8fCB2aWV3UGFyYW0gPT09IFwic2NoZW1hLXZpc3VhbGlzZXJcIikpIHtcbiAgICAgIHNldEFjdGl2ZVZpZXcodmlld1BhcmFtKTtcbiAgICB9XG4gIH0sIFt2aWV3UGFyYW0sIHNldEFjdGl2ZVZpZXddKTtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBhY3RpdmUgdmlldyBhbmQgdXBkYXRlIHRoZSBVUkwgcGFyYW0uXG4gICAqL1xuICBjb25zdCBoYW5kbGVWaWV3Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG5ld1ZpZXc6IFN0dWRpb1ZpZXcpID0+IHtcbiAgICAgIGlmIChhY3RpdmVWaWV3ICE9PSBuZXdWaWV3KSB7XG4gICAgICAgIHNldEFjdGl2ZVZpZXcobmV3Vmlldyk7XG5cbiAgICAgICAgLy8gQ2xlYW4gdXAgVVJMIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0byBzY2hlbWEgdmlzdWFsaXNlclxuICAgICAgICBpZiAobmV3VmlldyA9PT0gXCJzY2hlbWEtdmlzdWFsaXNlclwiKSB7XG4gICAgICAgICAgY2xlYW5VcmxQYXJhbXNGb3JTY2hlbWFWaXN1YWxpc2VyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRm9yIHRhYmxlcyB2aWV3LCBqdXN0IHVwZGF0ZSB0aGUgdmlldyBwYXJhbVxuICAgICAgICAgIHZvaWQgc2V0Vmlld1BhcmFtKG5ld1ZpZXcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbYWN0aXZlVmlldywgc2V0QWN0aXZlVmlldywgc2V0Vmlld1BhcmFtLCBjbGVhblVybFBhcmFtc0ZvclNjaGVtYVZpc3VhbGlzZXJdLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgYWN0aXZlVmlldyxcbiAgICBoYW5kbGVWaWV3Q2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBRdWVyeUNsaWVudFByb3ZpZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgUmVhY3RRdWVyeURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc29ubmVyXCI7XG5pbXBvcnQgeyBOdXFzSGFzaEFkYXB0ZXIgfSBmcm9tIFwiLi9OdXFzSGFzaEFkYXB0ZXJcIjtcbmltcG9ydCB7IFN0dWRpb1RlbGVtZXRyeUV2ZW50IH0gZnJvbSBcIi4vU3R1ZGlvXCI7XG5cbi8vIERlZmluZSB0aGUgYXZhaWxhYmxlIHZpZXdzIGluIHRoZSBzdHVkaW9cbmV4cG9ydCB0eXBlIFN0dWRpb1ZpZXcgPSBcInRhYmxlc1wiIHwgXCJzY2hlbWEtdmlzdWFsaXNlclwiO1xuXG4vKipcbiAqIFN0dWRpbyBjb250ZXh0IHZhbHVlIGludGVyZmFjZVxuICovXG5pbnRlcmZhY2UgU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgYWN0aXZlVGFibGU6IFRhYmxlIHwgbnVsbDtcbiAgYWN0aXZlVmlldzogU3R1ZGlvVmlldztcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgc2V0QWN0aXZlVGFibGU6ICh0YWJsZTogVGFibGUgfCBudWxsKSA9PiB2b2lkO1xuICBzZXRBY3RpdmVWaWV3OiAodmlldzogU3R1ZGlvVmlldykgPT4gdm9pZDtcbiAgb25FcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgZW1pdFRlbGVtZXRyeUV2ZW50OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG4gIC8vIFVJIHN0YXRlXG4gIGlzRnVsbHNjcmVlbjogYm9vbGVhbjtcbiAgdG9nZ2xlRnVsbHNjcmVlbjogKCkgPT4gdm9pZDtcbiAgaXNOYXZpZ2F0aW9uT3BlbjogYm9vbGVhbjtcbiAgdG9nZ2xlTmF2aWdhdGlvbjogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKTtcblxuLyoqXG4gKiBDb250ZXh0IGZvciBzaGFyaW5nIFN0dWRpbyBzdGF0ZSBhY3Jvc3MgY29tcG9uZW50c1xuICovXG5jb25zdCBTdHVkaW9Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxTdHVkaW9Db250ZXh0VmFsdWUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgb25UZWxlbWV0cnlFdmVudD86IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbn0+O1xuXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvQ29udGV4dFByb3ZpZGVyKHByb3BzOiBTdHVkaW9Db250ZXh0UHJvdmlkZXJQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCAuLi5vdGhlclByb3BzIH0gPSBwcm9wcztcbiAgY29uc3QgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZV0gPSB1c2VTdGF0ZTxUYWJsZSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbYWN0aXZlVmlldywgc2V0QWN0aXZlVmlld10gPSB1c2VTdGF0ZTxTdHVkaW9WaWV3PihcInRhYmxlc1wiKTtcbiAgY29uc3QgW2lzRnVsbHNjcmVlbiwgc2V0SXNGdWxsc2NyZWVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzTmF2aWdhdGlvbk9wZW4sIHNldElzTmF2aWdhdGlvbk9wZW5dID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgbGV0IG9uRXJyb3IgPSBwcm9wcy5vbkVycm9yO1xuICBvbkVycm9yID8/PSAoZXJyb3I6IEVycm9yKSA9PiB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKTtcblxuICBjb25zdCBlbWl0VGVsZW1ldHJ5RXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMub25UZWxlbWV0cnlFdmVudCA/PyAoKCkgPT4ge30pO1xuICB9LCBbcHJvcHMub25UZWxlbWV0cnlFdmVudF0pO1xuXG4gIGNvbnN0IHRvZ2dsZUZ1bGxzY3JlZW4gPSAoKSA9PiBzZXRJc0Z1bGxzY3JlZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgY29uc3QgdG9nZ2xlTmF2aWdhdGlvbiA9ICgpID0+IHNldElzTmF2aWdhdGlvbk9wZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgcmV0dXJuIChcbiAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgIDxSZWFjdFF1ZXJ5RGV2dG9vbHMgLz5cbiAgICAgIDxUb2FzdGVyIC8+XG4gICAgICA8TnVxc0hhc2hBZGFwdGVyPlxuICAgICAgICA8U3R1ZGlvQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAuLi5vdGhlclByb3BzLFxuICAgICAgICAgICAgYWN0aXZlVGFibGUsXG4gICAgICAgICAgICBhY3RpdmVWaWV3LFxuICAgICAgICAgICAgaXNGdWxsc2NyZWVuLFxuICAgICAgICAgICAgc2V0QWN0aXZlVGFibGUsXG4gICAgICAgICAgICBzZXRBY3RpdmVWaWV3LFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCxcbiAgICAgICAgICAgIHRvZ2dsZUZ1bGxzY3JlZW4sXG4gICAgICAgICAgICBpc05hdmlnYXRpb25PcGVuLFxuICAgICAgICAgICAgdG9nZ2xlTmF2aWdhdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1N0dWRpb0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L051cXNIYXNoQWRhcHRlcj5cbiAgICA8L1F1ZXJ5Q2xpZW50UHJvdmlkZXI+XG4gICk7XG59XG5cbi8qKlxuICogSG9vayB0byBhY2Nlc3MgU3R1ZGlvIGNvbnRleHRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdXNlZCBvdXRzaWRlIG9mIFN0dWRpby5Qcm92aWRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3R1ZGlvKCk6IFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFN0dWRpb0NvbnRleHQpO1xuXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImB1c2VTdHVkaW9gIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgU3R1ZGlvQ29udGV4dC5Qcm92aWRlcmBcIik7XG4gIH1cblxuICByZXR1cm4gY29udGV4dDtcbn1cbiIsICIndXNlIGNsaWVudCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgb25saW5lTWFuYWdlciwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7XG4gIERldnRvb2xzQnV0dG9uUG9zaXRpb24sXG4gIERldnRvb2xzRXJyb3JUeXBlLFxuICBEZXZ0b29sc1Bvc2l0aW9uLFxufSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuXG5leHBvcnQgaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0cnVlIGlmIHlvdSB3YW50IHRoZSBkZXYgdG9vbHMgdG8gZGVmYXVsdCB0byBiZWluZyBvcGVuXG4gICAqL1xuICBpbml0aWFsSXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBSZWFjdCBRdWVyeSBsb2dvIHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBkZXZ0b29scyBwYW5lbC5cbiAgICogJ3RvcC1sZWZ0JyB8ICd0b3AtcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICdib3R0b20tcmlnaHQnXG4gICAqIERlZmF1bHRzIHRvICdib3R0b20tcmlnaHQnLlxuICAgKi9cbiAgYnV0dG9uUG9zaXRpb24/OiBEZXZ0b29sc0J1dHRvblBvc2l0aW9uXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIFJlYWN0IFF1ZXJ5IGRldnRvb2xzIHBhbmVsLlxuICAgKiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0J1xuICAgKiBEZWZhdWx0cyB0byAnYm90dG9tJy5cbiAgICovXG4gIHBvc2l0aW9uPzogRGV2dG9vbHNQb3NpdGlvblxuICAvKipcbiAgICogQ3VzdG9tIGluc3RhbmNlIG9mIFF1ZXJ5Q2xpZW50XG4gICAqL1xuICBjbGllbnQ/OiBRdWVyeUNsaWVudFxuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBkZWZpbmUgY3VzdG9tIGVycm9ycyB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGUgZGV2dG9vbHMuXG4gICAqL1xuICBlcnJvclR5cGVzPzogQXJyYXk8RGV2dG9vbHNFcnJvclR5cGU+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBwYXNzIGEgbm9uY2UgdG8gdGhlIHN0eWxlIHRhZyB0aGF0IGlzIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKENTUCkgbm9uY2UgdG8gYWxsb3cgaW5saW5lIHN0eWxlcy5cbiAgICovXG4gIHN0eWxlTm9uY2U/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gYXR0YWNoIHRoZSBkZXZ0b29sJ3Mgc3R5bGVzIHRvIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAgICovXG4gIHNoYWRvd0RPTVRhcmdldD86IFNoYWRvd1Jvb3Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0UXVlcnlEZXZ0b29scyhcbiAgcHJvcHM6IERldnRvb2xzT3B0aW9ucyxcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KHByb3BzLmNsaWVudClcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7XG4gICAgYnV0dG9uUG9zaXRpb24sXG4gICAgcG9zaXRpb24sXG4gICAgaW5pdGlhbElzT3BlbixcbiAgICBlcnJvclR5cGVzLFxuICAgIHN0eWxlTm9uY2UsXG4gICAgc2hhZG93RE9NVGFyZ2V0LFxuICB9ID0gcHJvcHNcbiAgY29uc3QgW2RldnRvb2xzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIG5ldyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMoe1xuICAgICAgY2xpZW50OiBxdWVyeUNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yOiAnUmVhY3QgUXVlcnknLFxuICAgICAgdmVyc2lvbjogJzUnLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgfSksXG4gIClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldENsaWVudChxdWVyeUNsaWVudClcbiAgfSwgW3F1ZXJ5Q2xpZW50LCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYnV0dG9uUG9zaXRpb24pIHtcbiAgICAgIGRldnRvb2xzLnNldEJ1dHRvblBvc2l0aW9uKGJ1dHRvblBvc2l0aW9uKVxuICAgIH1cbiAgfSwgW2J1dHRvblBvc2l0aW9uLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgIGRldnRvb2xzLnNldFBvc2l0aW9uKHBvc2l0aW9uKVxuICAgIH1cbiAgfSwgW3Bvc2l0aW9uLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRJbml0aWFsSXNPcGVuKGluaXRpYWxJc09wZW4gfHwgZmFsc2UpXG4gIH0sIFtpbml0aWFsSXNPcGVuLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRFcnJvclR5cGVzKGVycm9yVHlwZXMgfHwgW10pXG4gIH0sIFtlcnJvclR5cGVzLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIGRldnRvb2xzLm1vdW50KHJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkZXZ0b29scy51bm1vdW50KClcbiAgICB9XG4gIH0sIFtkZXZ0b29sc10pXG5cbiAgcmV0dXJuIDxkaXYgZGlyPVwibHRyXCIgY2xhc3NOYW1lPVwidHNxZC1wYXJlbnQtY29udGFpbmVyXCIgcmVmPXtyZWZ9PjwvZGl2PlxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNpZ25hbCwgcmVuZGVyLCBsYXp5LCBzZXR1cFN0eWxlU2hlZXQsIGNyZWF0ZUNvbXBvbmVudCwgbWVyZ2VQcm9wcyB9IGZyb20gJy4vY2h1bmsvSFI3WVhaNUguanMnO1xuXG4vLyBzcmMvVGFuc3RhY2tRdWVyeURldnRvb2xzLnRzeFxudmFyIFRhbnN0YWNrUXVlcnlEZXZ0b29scyA9IGNsYXNzIHtcbiAgI2NsaWVudDtcbiAgI29ubGluZU1hbmFnZXI7XG4gICNxdWVyeUZsYXZvcjtcbiAgI3ZlcnNpb247XG4gICNpc01vdW50ZWQgPSBmYWxzZTtcbiAgI3N0eWxlTm9uY2U7XG4gICNzaGFkb3dET01UYXJnZXQ7XG4gICNidXR0b25Qb3NpdGlvbjtcbiAgI3Bvc2l0aW9uO1xuICAjaW5pdGlhbElzT3BlbjtcbiAgI2Vycm9yVHlwZXM7XG4gICNDb21wb25lbnQ7XG4gICNkaXNwb3NlO1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcixcbiAgICAgIHZlcnNpb24sXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldFxuICAgIH0gPSBjb25maWc7XG4gICAgdGhpcy4jY2xpZW50ID0gY3JlYXRlU2lnbmFsKGNsaWVudCk7XG4gICAgdGhpcy4jcXVlcnlGbGF2b3IgPSBxdWVyeUZsYXZvcjtcbiAgICB0aGlzLiN2ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLiNvbmxpbmVNYW5hZ2VyID0gb25saW5lTWFuYWdlcjtcbiAgICB0aGlzLiNzdHlsZU5vbmNlID0gc3R5bGVOb25jZTtcbiAgICB0aGlzLiNzaGFkb3dET01UYXJnZXQgPSBzaGFkb3dET01UYXJnZXQ7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb24gPSBjcmVhdGVTaWduYWwoYnV0dG9uUG9zaXRpb24pO1xuICAgIHRoaXMuI3Bvc2l0aW9uID0gY3JlYXRlU2lnbmFsKHBvc2l0aW9uKTtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuID0gY3JlYXRlU2lnbmFsKGluaXRpYWxJc09wZW4pO1xuICAgIHRoaXMuI2Vycm9yVHlwZXMgPSBjcmVhdGVTaWduYWwoZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0QnV0dG9uUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0UG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNwb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0SW5pdGlhbElzT3Blbihpc09wZW4pIHtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuWzFdKGlzT3Blbik7XG4gIH1cbiAgc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzKSB7XG4gICAgdGhpcy4jZXJyb3JUeXBlc1sxXShlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy4jY2xpZW50WzFdKGNsaWVudCk7XG4gIH1cbiAgbW91bnQoZWwpIHtcbiAgICBpZiAodGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBhbHJlYWR5IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGRpc3Bvc2UgPSByZW5kZXIoKCkgPT4ge1xuICAgICAgY29uc3QgX3NlbGYkID0gdGhpcztcbiAgICAgIGNvbnN0IFtidG5Qb3NpdGlvbl0gPSB0aGlzLiNidXR0b25Qb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtwb3NdID0gdGhpcy4jcG9zaXRpb247XG4gICAgICBjb25zdCBbaXNPcGVuXSA9IHRoaXMuI2luaXRpYWxJc09wZW47XG4gICAgICBjb25zdCBbZXJyb3JzXSA9IHRoaXMuI2Vycm9yVHlwZXM7XG4gICAgICBjb25zdCBbcXVlcnlDbGllbnRdID0gdGhpcy4jY2xpZW50O1xuICAgICAgbGV0IERldnRvb2xzO1xuICAgICAgaWYgKHRoaXMuI0NvbXBvbmVudCkge1xuICAgICAgICBEZXZ0b29scyA9IHRoaXMuI0NvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERldnRvb2xzID0gbGF6eSgoKSA9PiBpbXBvcnQoJy4vRGV2dG9vbHNDb21wb25lbnQvQ1BJT1pTNVguanMnKSk7XG4gICAgICAgIHRoaXMuI0NvbXBvbmVudCA9IERldnRvb2xzO1xuICAgICAgfVxuICAgICAgc2V0dXBTdHlsZVNoZWV0KHRoaXMuI3N0eWxlTm9uY2UsIHRoaXMuI3NoYWRvd0RPTVRhcmdldCk7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERldnRvb2xzLCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IHF1ZXJ5Rmxhdm9yKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3F1ZXJ5Rmxhdm9yO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiN2ZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25saW5lTWFuYWdlcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNvbmxpbmVNYW5hZ2VyO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgc2hhZG93RE9NVGFyZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3NoYWRvd0RPTVRhcmdldDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBxdWVyeUNsaWVudCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgYnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGJ0blBvc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcG9zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBpbml0aWFsSXNPcGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yVHlwZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycygpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSwgZWwpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IHRydWU7XG4gICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gIH1cbiAgdW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHRoaXMuI2Rpc3Bvc2U/LigpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IGZhbHNlO1xuICB9XG59O1xuXG4vLyBzcmMvVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwudHN4XG52YXIgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgPSBjbGFzcyB7XG4gICNjbGllbnQ7XG4gICNvbmxpbmVNYW5hZ2VyO1xuICAjcXVlcnlGbGF2b3I7XG4gICN2ZXJzaW9uO1xuICAjaXNNb3VudGVkID0gZmFsc2U7XG4gICNzdHlsZU5vbmNlO1xuICAjc2hhZG93RE9NVGFyZ2V0O1xuICAjYnV0dG9uUG9zaXRpb247XG4gICNwb3NpdGlvbjtcbiAgI2luaXRpYWxJc09wZW47XG4gICNlcnJvclR5cGVzO1xuICAjb25DbG9zZTtcbiAgI0NvbXBvbmVudDtcbiAgI2Rpc3Bvc2U7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgICAgb25DbG9zZVxuICAgIH0gPSBjb25maWc7XG4gICAgdGhpcy4jY2xpZW50ID0gY3JlYXRlU2lnbmFsKGNsaWVudCk7XG4gICAgdGhpcy4jcXVlcnlGbGF2b3IgPSBxdWVyeUZsYXZvcjtcbiAgICB0aGlzLiN2ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLiNvbmxpbmVNYW5hZ2VyID0gb25saW5lTWFuYWdlcjtcbiAgICB0aGlzLiNzdHlsZU5vbmNlID0gc3R5bGVOb25jZTtcbiAgICB0aGlzLiNzaGFkb3dET01UYXJnZXQgPSBzaGFkb3dET01UYXJnZXQ7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb24gPSBjcmVhdGVTaWduYWwoYnV0dG9uUG9zaXRpb24pO1xuICAgIHRoaXMuI3Bvc2l0aW9uID0gY3JlYXRlU2lnbmFsKHBvc2l0aW9uKTtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuID0gY3JlYXRlU2lnbmFsKGluaXRpYWxJc09wZW4pO1xuICAgIHRoaXMuI2Vycm9yVHlwZXMgPSBjcmVhdGVTaWduYWwoZXJyb3JUeXBlcyk7XG4gICAgdGhpcy4jb25DbG9zZSA9IGNyZWF0ZVNpZ25hbChvbkNsb3NlKTtcbiAgfVxuICBzZXRCdXR0b25Qb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI3Bvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRJbml0aWFsSXNPcGVuKGlzT3Blbikge1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW5bMV0oaXNPcGVuKTtcbiAgfVxuICBzZXRFcnJvclR5cGVzKGVycm9yVHlwZXMpIHtcbiAgICB0aGlzLiNlcnJvclR5cGVzWzFdKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLiNjbGllbnRbMV0oY2xpZW50KTtcbiAgfVxuICBzZXRPbkNsb3NlKG9uQ2xvc2UpIHtcbiAgICB0aGlzLiNvbkNsb3NlWzFdKCgpID0+IG9uQ2xvc2UpO1xuICB9XG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgYWxyZWFkeSBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwb3NlID0gcmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IF9zZWxmJCA9IHRoaXM7XG4gICAgICBjb25zdCBbYnRuUG9zaXRpb25dID0gdGhpcy4jYnV0dG9uUG9zaXRpb247XG4gICAgICBjb25zdCBbcG9zXSA9IHRoaXMuI3Bvc2l0aW9uO1xuICAgICAgY29uc3QgW2lzT3Blbl0gPSB0aGlzLiNpbml0aWFsSXNPcGVuO1xuICAgICAgY29uc3QgW2Vycm9yc10gPSB0aGlzLiNlcnJvclR5cGVzO1xuICAgICAgY29uc3QgW3F1ZXJ5Q2xpZW50XSA9IHRoaXMuI2NsaWVudDtcbiAgICAgIGNvbnN0IFtvbkNsb3NlXSA9IHRoaXMuI29uQ2xvc2U7XG4gICAgICBsZXQgRGV2dG9vbHM7XG4gICAgICBpZiAodGhpcy4jQ29tcG9uZW50KSB7XG4gICAgICAgIERldnRvb2xzID0gdGhpcy4jQ29tcG9uZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRGV2dG9vbHMgPSBsYXp5KCgpID0+IGltcG9ydCgnLi9EZXZ0b29sc1BhbmVsQ29tcG9uZW50L09LRjZFNDVSLmpzJykpO1xuICAgICAgICB0aGlzLiNDb21wb25lbnQgPSBEZXZ0b29scztcbiAgICAgIH1cbiAgICAgIHNldHVwU3R5bGVTaGVldCh0aGlzLiNzdHlsZU5vbmNlLCB0aGlzLiNzaGFkb3dET01UYXJnZXQpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZXZ0b29scywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGdldCBxdWVyeUZsYXZvcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNxdWVyeUZsYXZvcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jdmVyc2lvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9ubGluZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jb25saW5lTWFuYWdlcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNoYWRvd0RPTVRhcmdldCgpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNzaGFkb3dET01UYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZ2V0IGNsaWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcXVlcnlDbGllbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBidG5Qb3NpdGlvbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgaW5pdGlhbElzT3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNPcGVuKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvclR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcnMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9uQ2xvc2UoKSB7XG4gICAgICAgICAgcmV0dXJuIG9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0sIGVsKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICB9XG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICB0aGlzLiNkaXNwb3NlPy4oKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzLCBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCB9O1xuIiwgIid1c2UgY2xpZW50J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBvbmxpbmVNYW5hZ2VyLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcbmltcG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBEZXZ0b29sc0Vycm9yVHlwZSB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGluc3RhbmNlIG9mIFF1ZXJ5Q2xpZW50XG4gICAqL1xuICBjbGllbnQ/OiBRdWVyeUNsaWVudFxuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBkZWZpbmUgY3VzdG9tIGVycm9ycyB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGUgZGV2dG9vbHMuXG4gICAqL1xuICBlcnJvclR5cGVzPzogQXJyYXk8RGV2dG9vbHNFcnJvclR5cGU+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBwYXNzIGEgbm9uY2UgdG8gdGhlIHN0eWxlIHRhZyB0aGF0IGlzIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKENTUCkgbm9uY2UgdG8gYWxsb3cgaW5saW5lIHN0eWxlcy5cbiAgICovXG4gIHN0eWxlTm9uY2U/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gYXR0YWNoIHRoZSBkZXZ0b29sJ3Mgc3R5bGVzIHRvIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAgICovXG4gIHNoYWRvd0RPTVRhcmdldD86IFNoYWRvd1Jvb3RcblxuICAvKipcbiAgICogQ3VzdG9tIHN0eWxlcyBmb3IgdGhlIGRldnRvb2xzIHBhbmVsXG4gICAqIEBkZWZhdWx0IHsgaGVpZ2h0OiAnNTAwcHgnIH1cbiAgICogQGV4YW1wbGUgeyBoZWlnaHQ6ICcxMDAlJyB9XG4gICAqIEBleGFtcGxlIHsgaGVpZ2h0OiAnMTAwJScsIHdpZHRoOiAnMTAwJScgfVxuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGRldnRvb2xzIHBhbmVsIGlzIGNsb3NlZFxuICAgKi9cbiAgb25DbG9zZT86ICgpID0+IHVua25vd25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsKFxuICBwcm9wczogRGV2dG9vbHNQYW5lbE9wdGlvbnMsXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudChwcm9wcy5jbGllbnQpXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBlcnJvclR5cGVzLCBzdHlsZU5vbmNlLCBzaGFkb3dET01UYXJnZXQgfSA9IHByb3BzXG4gIGNvbnN0IFtkZXZ0b29sc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICBuZXcgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwoe1xuICAgICAgY2xpZW50OiBxdWVyeUNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yOiAnUmVhY3QgUXVlcnknLFxuICAgICAgdmVyc2lvbjogJzUnLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uOiAnYm90dG9tLWxlZnQnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgaW5pdGlhbElzT3BlbjogdHJ1ZSxcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgICAgb25DbG9zZTogcHJvcHMub25DbG9zZSxcbiAgICB9KSxcbiAgKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0Q2xpZW50KHF1ZXJ5Q2xpZW50KVxuICB9LCBbcXVlcnlDbGllbnQsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldE9uQ2xvc2UocHJvcHMub25DbG9zZSA/PyAoKCkgPT4ge30pKVxuICB9LCBbcHJvcHMub25DbG9zZSwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzIHx8IFtdKVxuICB9LCBbZXJyb3JUeXBlcywgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBkZXZ0b29scy5tb3VudChyZWYuY3VycmVudClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGV2dG9vbHMudW5tb3VudCgpXG4gICAgfVxuICB9LCBbZGV2dG9vbHNdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3sgaGVpZ2h0OiAnNTAwcHgnLCAuLi5wcm9wcy5zdHlsZSB9fVxuICAgICAgY2xhc3NOYW1lPVwidHNxZC1wYXJlbnQtY29udGFpbmVyXCJcbiAgICAgIHJlZj17cmVmfVxuICAgID48L2Rpdj5cbiAgKVxufVxuIiwgIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgKiBhcyBEZXZ0b29scyBmcm9tICcuL1JlYWN0UXVlcnlEZXZ0b29scydcbmltcG9ydCAqIGFzIERldnRvb2xzUGFuZWwgZnJvbSAnLi9SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCdcblxuZXhwb3J0IGNvbnN0IFJlYWN0UXVlcnlEZXZ0b29sczogKHR5cGVvZiBEZXZ0b29scylbJ1JlYWN0UXVlcnlEZXZ0b29scyddID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICA6IERldnRvb2xzLlJlYWN0UXVlcnlEZXZ0b29sc1xuXG5leHBvcnQgY29uc3QgUmVhY3RRdWVyeURldnRvb2xzUGFuZWw6ICh0eXBlb2YgRGV2dG9vbHNQYW5lbClbJ1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsJ10gPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIDogRGV2dG9vbHNQYW5lbC5SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbFxuIiwgImltcG9ydCB7IFRvYXN0ZXIgYXMgU29ubmVyIH0gZnJvbSBcInNvbm5lclwiO1xuXG4vLyBpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAL3VpL3N0dWRpby91dGlsL3RoZW1lLXByb3ZpZGVyXCI7XG5cbnR5cGUgVG9hc3RlclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNvbm5lcj47XG5cbmNvbnN0IFRvYXN0ZXIgPSAoeyAuLi5wcm9wcyB9OiBUb2FzdGVyUHJvcHMpID0+IHtcbiAgLy8gY29uc3QgeyB0aGVtZSA9IFwic3lzdGVtXCIgfSA9IHVzZVRoZW1lKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8U29ubmVyXG4gICAgICAvLyB0aGVtZT17dGhlbWUgYXMgVG9hc3RlclByb3BzW1widGhlbWVcIl19XG4gICAgICBjbGFzc05hbWU9XCJwcy10b2FzdGVyIHBzLWdyb3VwXCJcbiAgICAgIHRvYXN0T3B0aW9ucz17e1xuICAgICAgICBjbGFzc05hbWVzOiB7XG4gICAgICAgICAgdG9hc3Q6XG4gICAgICAgICAgICBcImdyb3VwIHRvYXN0IGdyb3VwLVsudG9hc3Rlcl06YmctYmFja2dyb3VuZCBncm91cC1bLnRvYXN0ZXJdOnRleHQtZm9yZWdyb3VuZCBncm91cC1bLnRvYXN0ZXJdOmJvcmRlci1ib3JkZXIgZ3JvdXAtWy50b2FzdGVyXTpzaGFkb3ctbGdcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgICBhY3Rpb25CdXR0b246IFwiZ3JvdXAtWy50b2FzdF06YmctcHJpbWFyeSBncm91cC1bLnRvYXN0XTp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgICAgICAgIGNhbmNlbEJ1dHRvbjogXCJncm91cC1bLnRvYXN0XTpiZy1tdXRlZCBncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFRvYXN0ZXIgfTtcbiIsICJpbXBvcnQge1xuICB1bnN0YWJsZV9BZGFwdGVyT3B0aW9ucyBhcyBBZGFwdGVyT3B0aW9ucyxcbiAgdW5zdGFibGVfY3JlYXRlQWRhcHRlclByb3ZpZGVyIGFzIGNyZWF0ZUFkYXB0ZXJQcm92aWRlcixcbn0gZnJvbSBcIm51cXMvYWRhcHRlcnMvY3VzdG9tXCI7XG5pbXBvcnQgeyBGQywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IHR5cGUgeyBkZWZhdWx0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogSG9vayB0aGF0IE51cXMgd2lsbCBjYWxsIHRvIHJlYWQgJiB3cml0ZSBVUkwgc3RhdGUuXG4gKi9cbmZ1bmN0aW9uIHVzZUhhc2hBZGFwdGVyKCkge1xuICAvLyByZWFkIGN1cnJlbnQgc3RhdGUgZnJvbSBldmVyeXRoaW5nIGFmdGVyIHRoZSBcdTIwMUMjXHUyMDFEXG4gIGNvbnN0IHJhd0hhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcbiAgY29uc3QgW2hhc2hQYXJhbXMsIHNldEhhc2hQYXJhbXNdID0gdXNlU3RhdGUobmV3IFVSTFNlYXJjaFBhcmFtcyhyYXdIYXNoKSk7XG5cbiAgLy8gd3JpdGUgbmV3IHN0YXRlIGJhY2sgaW50byB0aGUgaGFzaCBmcmFnbWVudFxuICBmdW5jdGlvbiB1cGRhdGVVcmwodXBkYXRlZDogVVJMU2VhcmNoUGFyYW1zLCB7IGhpc3RvcnkgfTogQWRhcHRlck9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHBhdGhuYW1lLCBzZWFyY2ggfSA9IHdpbmRvdy5sb2NhdGlvbjtcbiAgICBjb25zdCBoYXNoID0gdXBkYXRlZC50b1N0cmluZygpO1xuICAgIGNvbnN0IHVybCA9IGAke3BhdGhuYW1lfSR7c2VhcmNofSMke2hhc2h9YDtcblxuICAgIGlmIChoaXN0b3J5ID09PSBcInB1c2hcIikge1xuICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsIFwiXCIsIHVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgIH1cblxuICAgIHNldEhhc2hQYXJhbXModXBkYXRlZCk7XG4gIH1cblxuICAvLyBleHBvc2UgYSBzbmFwc2hvdCBvZiB0aGUgY3VycmVudCBwYXJhbXNcbiAgZnVuY3Rpb24gZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QoKSB7XG4gICAgY29uc3QgcmF3ID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG5cbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhyYXcpO1xuICB9XG5cbiAgLy8gc3luYyBzdGF0ZSB3aGVuIHVzZXIgbmF2aWdhdGVzIHZpYSBicm93c2VyIGNvbnRyb2xzIG9yIGV4dGVybmFsIHNjcmlwdFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIGhhbmRsZUhhc2hDaGFuZ2UoKSB7XG4gICAgICBjb25zdCByYXdIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gICAgICBzZXRIYXNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIiwgaGFuZGxlSGFzaENoYW5nZSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4geyBzZWFyY2hQYXJhbXM6IGhhc2hQYXJhbXMsIHVwZGF0ZVVybCwgZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QgfTtcbn1cblxuLyoqXG4gKiBUaGUgYWRhcHRlciBwcm92aWRlciBjb21wb25lbnQgeW91IHdyYXAgeW91ciBhcHAgaW4uXG4gKi9cbmV4cG9ydCBjb25zdCBOdXFzSGFzaEFkYXB0ZXIgPSBjcmVhdGVBZGFwdGVyUHJvdmlkZXIodXNlSGFzaEFkYXB0ZXIpIGFzIEZDPFByb3BzV2l0aENoaWxkcmVuPjtcbiIsICIvLyB3ZSdyZSBlbnN1cmluZyB0aGF0IGtleXMgYXJlIHR5cGUtc2FmZS4gdGhlcmUgaXMgbm8gcHJvcGVyIHdheSB0byBhY2hpZXZlIGl0IGluIGBudXFzYC5cbi8vIHRoZSBgZGVjbGFyZSBtb2R1bGVgIHRlY2huaXF1ZSByZXN1bHRzIGluIGFkZGluZyBvdmVybG9hZHMsIG5vdCBvdmVycmlkaW5nIHRoZSBleGlzdGluZyBmdW5jdGlvbnMuXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9ucyxcbiAgdHlwZSBQYXJzZXIsXG4gIHVzZVF1ZXJ5U3RhdGUgYXMgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVSZXR1cm4sXG4gIHVzZVF1ZXJ5U3RhdGVzIGFzIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzUmV0dXJuLFxufSBmcm9tIFwibnVxc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5leHBvcnQgKiBmcm9tIFwibnVxc1wiO1xuXG5leHBvcnQgdHlwZSBTdGF0ZUtleSA9IFwicGFnZUluZGV4XCIgfCBcInBhZ2VTaXplXCIgfCBcInRhYmxlXCIgfCBcInNvcnRcIiB8IFwic2NoZW1hXCIgfCBcInRlc3RcIiB8IFwiZmlsdGVyXCIgfCBcInZpZXdcIjtcblxuLy8gbGlmdGVkIGZyb20gQHByaXNtYS9jbGllbnQvcnVudGltZVxudHlwZSBFeGFjdDxBLCBXPiA9XG4gIHwgKEEgZXh0ZW5kcyB1bmtub3duXG4gICAgICA/IFcgZXh0ZW5kcyBBXG4gICAgICAgID8ge1xuICAgICAgICAgICAgW0sgaW4ga2V5b2YgQV06IEV4YWN0PEFbS10sIFdbS10+O1xuICAgICAgICAgIH1cbiAgICAgICAgOiBXXG4gICAgICA6IG5ldmVyKVxuICB8IChBIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHwgYm9vbGVhbiB8IFtdID8gQSA6IG5ldmVyKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBrZXlNYXA8Y29uc3QgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+PihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAga2V5TWFwOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4ga2V5TWFwIGFzIG5ldmVyO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHVybEtleXM8Y29uc3QgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+PihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdXJsS2V5czogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIHVybEtleXMgYXMgbmV2ZXI7XG59XG5cbmNvbnN0IF9CUkFORF9TWU1CT0wgPSBTeW1ib2woXCJCUkFORF9TWU1CT0xcIik7XG5cbnR5cGUgQnJhbmRlZEtleU1hcDxNYXA+ID0gTWFwICYge1xuICBbSyBpbiB0eXBlb2YgX0JSQU5EX1NZTUJPTF06IG5ldmVyO1xufTtcblxuLyoqXG4gKiBAc2VlIHtAbGluayB1c2VRdWVyeVN0YXRlT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlPFQ+KFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBVc2VRdWVyeVN0YXRlT3B0aW9uczxUPiAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IFQ7XG4gIH0sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdHlwZW9mIG9wdGlvbnMuZGVmYXVsdFZhbHVlPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlPFQ+KFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBVc2VRdWVyeVN0YXRlT3B0aW9uczxUPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IE9wdGlvbnMgJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIH0sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdHlwZW9mIG9wdGlvbnMuZGVmYXVsdFZhbHVlPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBQaWNrPFVzZVF1ZXJ5U3RhdGVPcHRpb25zPHN0cmluZz4sIGtleW9mIE9wdGlvbnM+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5KTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHVuZGVmaW5lZD47XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSwgb3B0aW9ucz86IGFueSk6IGFueSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlT3JpZ2luYWwoa2V5LCBvcHRpb25zKTtcbn1cblxudHlwZSBVc2VRdWVyeVN0YXRlc0tleXNNYXA8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+PiA9IFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pixcbj4gPSB7XG4gIFtLZXkgaW4ga2V5b2YgTWFwXTogS2V5TWFwVmFsdWU8TWFwW0tleV0+O1xufTtcblxudHlwZSBLZXlNYXBWYWx1ZTxUeXBlPiA9IFBhcnNlcjxUeXBlPiAmXG4gIE9wdGlvbnMgJiB7XG4gICAgZGVmYXVsdFZhbHVlPzogVHlwZTtcbiAgfTtcblxuLyoqXG4gKiBAc2VlIHtAbGluayB1c2VRdWVyeVN0YXRlc09yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZXM8S2V5TWFwIGV4dGVuZHMgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPihcbiAga2V5TWFwOiBCcmFuZGVkS2V5TWFwPEtleU1hcD4sXG4gIG9wdGlvbnM/OiBQYXJ0aWFsPFVzZVF1ZXJ5U3RhdGVzT3B0aW9uczxLZXlNYXA+Pixcbik6IFVzZVF1ZXJ5U3RhdGVzUmV0dXJuPEtleU1hcD4ge1xuICByZXR1cm4gdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbChrZXlNYXAgYXMgbmV2ZXIsIG9wdGlvbnMpO1xufVxuIiwgIi8vIHNoYWRjbiB1dGlsc1xuaW1wb3J0IHsgdHlwZSBDbGFzc1ZhbHVlLCBjbHN4IH0gZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IGV4dGVuZFRhaWx3aW5kTWVyZ2UgfSBmcm9tIFwidGFpbHdpbmQtbWVyZ2VcIjtcblxuZXhwb3J0IGNvbnN0IHR3TWVyZ2UgPSBleHRlbmRUYWlsd2luZE1lcmdlKHtcbiAgcHJlZml4OiBcInBzLVwiLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjbiguLi5pbnB1dHM6IENsYXNzVmFsdWVbXSkge1xuICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpO1xufVxuIiwgImltcG9ydCB7XG4gICAgQ2xhc3NHcm91cCxcbiAgICBDbGFzc1ZhbGlkYXRvcixcbiAgICBDb25maWcsXG4gICAgR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgR2VuZXJpY0NvbmZpZyxcbiAgICBHZW5lcmljVGhlbWVHcm91cElkcyxcbiAgICBUaGVtZUdldHRlcixcbiAgICBUaGVtZU9iamVjdCxcbn0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBDbGFzc1BhcnRPYmplY3Qge1xuICAgIG5leHRQYXJ0OiBNYXA8c3RyaW5nLCBDbGFzc1BhcnRPYmplY3Q+XG4gICAgdmFsaWRhdG9yczogQ2xhc3NWYWxpZGF0b3JPYmplY3RbXVxuICAgIGNsYXNzR3JvdXBJZD86IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG59XG5cbmludGVyZmFjZSBDbGFzc1ZhbGlkYXRvck9iamVjdCB7XG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkc1xuICAgIHZhbGlkYXRvcjogQ2xhc3NWYWxpZGF0b3Jcbn1cblxuY29uc3QgQ0xBU1NfUEFSVF9TRVBBUkFUT1IgPSAnLSdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCBjbGFzc01hcCA9IGNyZWF0ZUNsYXNzTWFwKGNvbmZpZylcbiAgICBjb25zdCB7IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyB9ID0gY29uZmlnXG5cbiAgICBjb25zdCBnZXRDbGFzc0dyb3VwSWQgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY2xhc3NQYXJ0cyA9IGNsYXNzTmFtZS5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgICAgICAvLyBDbGFzc2VzIGxpa2UgYC1pbnNldC0xYCBwcm9kdWNlIGFuIGVtcHR5IHN0cmluZyBhcyBmaXJzdCBjbGFzc1BhcnQuIFdlIGFzc3VtZSB0aGF0IGNsYXNzZXMgZm9yIG5lZ2F0aXZlIHZhbHVlcyBhcmUgdXNlZCBjb3JyZWN0bHkgYW5kIHJlbW92ZSBpdCBmcm9tIGNsYXNzUGFydHMuXG4gICAgICAgIGlmIChjbGFzc1BhcnRzWzBdID09PSAnJyAmJiBjbGFzc1BhcnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgY2xhc3NQYXJ0cy5zaGlmdCgpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NNYXApIHx8IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpXG4gICAgfVxuXG4gICAgY29uc3QgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzID0gKFxuICAgICAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXI6IGJvb2xlYW4sXG4gICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZsaWN0cyA9IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHNbY2xhc3NHcm91cElkXSB8fCBbXVxuXG4gICAgICAgIGlmIChoYXNQb3N0Zml4TW9kaWZpZXIgJiYgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY29uZmxpY3RzLCAuLi5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSFdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmxpY3RzXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0Q2xhc3NHcm91cElkLFxuICAgICAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMsXG4gICAgfVxufVxuXG5jb25zdCBnZXRHcm91cFJlY3Vyc2l2ZSA9IChcbiAgICBjbGFzc1BhcnRzOiBzdHJpbmdbXSxcbiAgICBjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCxcbik6IEdlbmVyaWNDbGFzc0dyb3VwSWRzIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoY2xhc3NQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC5jbGFzc0dyb3VwSWRcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q2xhc3NQYXJ0ID0gY2xhc3NQYXJ0c1swXSFcbiAgICBjb25zdCBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChjdXJyZW50Q2xhc3NQYXJ0KVxuICAgIGNvbnN0IGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCA9IG5leHRDbGFzc1BhcnRPYmplY3RcbiAgICAgICAgPyBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLnNsaWNlKDEpLCBuZXh0Q2xhc3NQYXJ0T2JqZWN0KVxuICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgaWYgKGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY2xhc3NSZXN0ID0gY2xhc3NQYXJ0cy5qb2luKENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLmZpbmQoKHsgdmFsaWRhdG9yIH0pID0+IHZhbGlkYXRvcihjbGFzc1Jlc3QpKT8uY2xhc3NHcm91cElkXG59XG5cbmNvbnN0IGFyYml0cmFyeVByb3BlcnR5UmVnZXggPSAvXlxcWyguKylcXF0kL1xuXG5jb25zdCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoYXJiaXRyYXJ5UHJvcGVydHlSZWdleC50ZXN0KGNsYXNzTmFtZSkpIHtcbiAgICAgICAgY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUgPSBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LmV4ZWMoY2xhc3NOYW1lKSFbMV1cbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZT8uc3Vic3RyaW5nKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lLmluZGV4T2YoJzonKSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgLy8gSSB1c2UgdHdvIGRvdHMgaGVyZSBiZWNhdXNlIG9uZSBkb3QgaXMgdXNlZCBhcyBwcmVmaXggZm9yIGNsYXNzIGdyb3VwcyBpbiBwbHVnaW5zXG4gICAgICAgICAgICByZXR1cm4gJ2FyYml0cmFyeS4uJyArIHByb3BlcnR5XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NNYXAgPSAoY29uZmlnOiBDb25maWc8R2VuZXJpY0NsYXNzR3JvdXBJZHMsIEdlbmVyaWNUaGVtZUdyb3VwSWRzPikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWUsIHByZWZpeCB9ID0gY29uZmlnXG4gICAgY29uc3QgY2xhc3NNYXA6IENsYXNzUGFydE9iamVjdCA9IHtcbiAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXA8c3RyaW5nLCBDbGFzc1BhcnRPYmplY3Q+KCksXG4gICAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhjb25maWcuY2xhc3NHcm91cHMpLFxuICAgICAgICBwcmVmaXgsXG4gICAgKVxuXG4gICAgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcy5mb3JFYWNoKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzR3JvdXAsIGNsYXNzTWFwLCBjbGFzc0dyb3VwSWQsIHRoZW1lKVxuICAgIH0pXG5cbiAgICByZXR1cm4gY2xhc3NNYXBcbn1cblxuY29uc3QgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSA9IChcbiAgICBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbiAgICBjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCxcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIHRoZW1lOiBUaGVtZU9iamVjdDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBjbGFzc0dyb3VwLmZvckVhY2goKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzUGFydE9iamVjdFRvRWRpdCA9XG4gICAgICAgICAgICAgICAgY2xhc3NEZWZpbml0aW9uID09PSAnJyA/IGNsYXNzUGFydE9iamVjdCA6IGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0RlZmluaXRpb24pXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3RUb0VkaXQuY2xhc3NHcm91cElkID0gY2xhc3NHcm91cElkXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAoaXNUaGVtZUdldHRlcihjbGFzc0RlZmluaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NEZWZpbml0aW9uKHRoZW1lKSxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0LFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yOiBjbGFzc0RlZmluaXRpb24sXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLmZvckVhY2goKFtrZXksIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXAsXG4gICAgICAgICAgICAgICAgZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGtleSksXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IGdldFBhcnQgPSAoY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsIHBhdGg6IHN0cmluZykgPT4ge1xuICAgIGxldCBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0XG5cbiAgICBwYXRoLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKS5mb3JFYWNoKChwYXRoUGFydCkgPT4ge1xuICAgICAgICBpZiAoIWN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuaGFzKHBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5zZXQocGF0aFBhcnQsIHtcbiAgICAgICAgICAgICAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChwYXRoUGFydCkhXG4gICAgfSlcblxuICAgIHJldHVybiBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0XG59XG5cbmNvbnN0IGlzVGhlbWVHZXR0ZXIgPSAoZnVuYzogQ2xhc3NWYWxpZGF0b3IgfCBUaGVtZUdldHRlcik6IGZ1bmMgaXMgVGhlbWVHZXR0ZXIgPT5cbiAgICAoZnVuYyBhcyBUaGVtZUdldHRlcikuaXNUaGVtZUdldHRlclxuXG5jb25zdCBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gKFxuICAgIGNsYXNzR3JvdXBFbnRyaWVzOiBBcnJheTxbY2xhc3NHcm91cElkOiBzdHJpbmcsIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+XT4sXG4gICAgcHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBBcnJheTxbY2xhc3NHcm91cElkOiBzdHJpbmcsIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+XT4gPT4ge1xuICAgIGlmICghcHJlZml4KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllc1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllcy5tYXAoKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cCA9IGNsYXNzR3JvdXAubWFwKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBjbGFzc0RlZmluaXRpb25cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW3ByZWZpeCArIGtleSwgdmFsdWVdKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjbGFzc0RlZmluaXRpb25cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gW2NsYXNzR3JvdXBJZCwgcHJlZml4ZWRDbGFzc0dyb3VwXVxuICAgIH0pXG59XG4iLCAiLy8gRXhwb3J0IGlzIG5lZWRlZCBiZWNhdXNlIFR5cGVTY3JpcHQgY29tcGxhaW5zIGFib3V0IGFuIGVycm9yIG90aGVyd2lzZTpcbi8vIEVycm9yOiBcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2NvbmZpZy11dGlscy50cyg4LDE3KTogc2VtYW50aWMgZXJyb3IgVFM0MDU4OiBSZXR1cm4gdHlwZSBvZiBleHBvcnRlZCBmdW5jdGlvbiBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnTHJ1Q2FjaGUnIGZyb20gZXh0ZXJuYWwgbW9kdWxlIFwiXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9scnUtY2FjaGVcIiBidXQgY2Fubm90IGJlIG5hbWVkLlxuZXhwb3J0IGludGVyZmFjZSBMcnVDYWNoZTxLZXksIFZhbHVlPiB7XG4gICAgZ2V0KGtleTogS2V5KTogVmFsdWUgfCB1bmRlZmluZWRcbiAgICBzZXQoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSk6IHZvaWRcbn1cblxuLy8gTFJVIGNhY2hlIGluc3BpcmVkIGZyb20gaGFzaGxydSAoaHR0cHM6Ly9naXRodWIuY29tL2RvbWluaWN0YXJyL2hhc2hscnUvYmxvYi92MS4wLjQvaW5kZXguanMpIGJ1dCBvYmplY3QgcmVwbGFjZWQgd2l0aCBNYXAgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZVxuZXhwb3J0IGNvbnN0IGNyZWF0ZUxydUNhY2hlID0gPEtleSwgVmFsdWU+KG1heENhY2hlU2l6ZTogbnVtYmVyKTogTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4gPT4ge1xuICAgIGlmIChtYXhDYWNoZVNpemUgPCAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNldDogKCkgPT4ge30sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgY2FjaGVTaXplID0gMFxuICAgIGxldCBjYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuICAgIGxldCBwcmV2aW91c0NhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG5cbiAgICBjb25zdCB1cGRhdGUgPSAoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSkgPT4ge1xuICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgY2FjaGVTaXplKytcblxuICAgICAgICBpZiAoY2FjaGVTaXplID4gbWF4Q2FjaGVTaXplKSB7XG4gICAgICAgICAgICBjYWNoZVNpemUgPSAwXG4gICAgICAgICAgICBwcmV2aW91c0NhY2hlID0gY2FjaGVcbiAgICAgICAgICAgIGNhY2hlID0gbmV3IE1hcCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXQoa2V5KSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBjYWNoZS5nZXQoa2V5KVxuXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IHByZXZpb3VzQ2FjaGUuZ2V0KGtleSkpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBJTVBPUlRBTlRfTU9ESUZJRVIgPSAnISdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IHsgc2VwYXJhdG9yLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSB9ID0gY29uZmlnXG4gICAgY29uc3QgaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgPSBzZXBhcmF0b3IubGVuZ3RoID09PSAxXG4gICAgY29uc3QgZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgPSBzZXBhcmF0b3JbMF1cbiAgICBjb25zdCBzZXBhcmF0b3JMZW5ndGggPSBzZXBhcmF0b3IubGVuZ3RoXG5cbiAgICAvLyBwYXJzZUNsYXNzTmFtZSBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2Jsb2IvdjMuMi4yL3NyYy91dGlsL3NwbGl0QXRUb3BMZXZlbE9ubHkuanNcbiAgICBjb25zdCBwYXJzZUNsYXNzTmFtZSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSBbXVxuXG4gICAgICAgIGxldCBicmFja2V0RGVwdGggPSAwXG4gICAgICAgIGxldCBtb2RpZmllclN0YXJ0ID0gMFxuICAgICAgICBsZXQgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZFxuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjbGFzc05hbWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudENoYXJhY3RlciA9IGNsYXNzTmFtZVtpbmRleF1cblxuICAgICAgICAgICAgaWYgKGJyYWNrZXREZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENoYXJhY3RlciA9PT0gZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgKGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoKSA9PT0gc2VwYXJhdG9yKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMucHVzaChjbGFzc05hbWUuc2xpY2UobW9kaWZpZXJTdGFydCwgaW5kZXgpKVxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllclN0YXJ0ID0gaW5kZXggKyBzZXBhcmF0b3JMZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJy8nKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICBicmFja2V0RGVwdGgrK1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICBicmFja2V0RGVwdGgtLVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciA9XG4gICAgICAgICAgICBtb2RpZmllcnMubGVuZ3RoID09PSAwID8gY2xhc3NOYW1lIDogY2xhc3NOYW1lLnN1YnN0cmluZyhtb2RpZmllclN0YXJ0KVxuICAgICAgICBjb25zdCBoYXNJbXBvcnRhbnRNb2RpZmllciA9XG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN0YXJ0c1dpdGgoSU1QT1JUQU5UX01PRElGSUVSKVxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdWJzdHJpbmcoMSlcbiAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPVxuICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gJiYgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPiBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgPyBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAtIG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb2RpZmllcnMsXG4gICAgICAgICAgICBoYXNJbXBvcnRhbnRNb2RpZmllcixcbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWUsXG4gICAgICAgICAgICBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKSB7XG4gICAgICAgIHJldHVybiAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKHsgY2xhc3NOYW1lLCBwYXJzZUNsYXNzTmFtZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwYXJzZUNsYXNzTmFtZVxufVxuXG4vKipcbiAqIFNvcnRzIG1vZGlmaWVycyBhY2NvcmRpbmcgdG8gZm9sbG93aW5nIHNjaGVtYTpcbiAqIC0gUHJlZGVmaW5lZCBtb2RpZmllcnMgYXJlIHNvcnRlZCBhbHBoYWJldGljYWxseVxuICogLSBXaGVuIGFuIGFyYml0cmFyeSB2YXJpYW50IGFwcGVhcnMsIGl0IG11c3QgYmUgcHJlc2VydmVkIHdoaWNoIG1vZGlmaWVycyBhcmUgYmVmb3JlIGFuZCBhZnRlciBpdFxuICovXG5leHBvcnQgY29uc3Qgc29ydE1vZGlmaWVycyA9IChtb2RpZmllcnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKG1vZGlmaWVycy5sZW5ndGggPD0gMSkge1xuICAgICAgICByZXR1cm4gbW9kaWZpZXJzXG4gICAgfVxuXG4gICAgY29uc3Qgc29ydGVkTW9kaWZpZXJzOiBzdHJpbmdbXSA9IFtdXG4gICAgbGV0IHVuc29ydGVkTW9kaWZpZXJzOiBzdHJpbmdbXSA9IFtdXG5cbiAgICBtb2RpZmllcnMuZm9yRWFjaCgobW9kaWZpZXIpID0+IHtcbiAgICAgICAgY29uc3QgaXNBcmJpdHJhcnlWYXJpYW50ID0gbW9kaWZpZXJbMF0gPT09ICdbJ1xuXG4gICAgICAgIGlmIChpc0FyYml0cmFyeVZhcmlhbnQpIHtcbiAgICAgICAgICAgIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSwgbW9kaWZpZXIpXG4gICAgICAgICAgICB1bnNvcnRlZE1vZGlmaWVycyA9IFtdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bnNvcnRlZE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSlcblxuICAgIHJldHVybiBzb3J0ZWRNb2RpZmllcnNcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgfSBmcm9tICcuL2NsYXNzLWdyb3VwLXV0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlTHJ1Q2FjaGUgfSBmcm9tICcuL2xydS1jYWNoZSdcbmltcG9ydCB7IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCB0eXBlIENvbmZpZ1V0aWxzID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29uZmlnVXRpbHM+XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb25maWdVdGlscyA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+ICh7XG4gICAgY2FjaGU6IGNyZWF0ZUxydUNhY2hlPHN0cmluZywgc3RyaW5nPihjb25maWcuY2FjaGVTaXplKSxcbiAgICBwYXJzZUNsYXNzTmFtZTogY3JlYXRlUGFyc2VDbGFzc05hbWUoY29uZmlnKSxcbiAgICAuLi5jcmVhdGVDbGFzc0dyb3VwVXRpbHMoY29uZmlnKSxcbn0pXG4iLCAiaW1wb3J0IHsgQ29uZmlnVXRpbHMgfSBmcm9tICcuL2NvbmZpZy11dGlscydcbmltcG9ydCB7IElNUE9SVEFOVF9NT0RJRklFUiwgc29ydE1vZGlmaWVycyB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcblxuY29uc3QgU1BMSVRfQ0xBU1NFU19SRUdFWCA9IC9cXHMrL1xuXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc0xpc3QgPSAoY2xhc3NMaXN0OiBzdHJpbmcsIGNvbmZpZ1V0aWxzOiBDb25maWdVdGlscykgPT4ge1xuICAgIGNvbnN0IHsgcGFyc2VDbGFzc05hbWUsIGdldENsYXNzR3JvdXBJZCwgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIH0gPSBjb25maWdVdGlsc1xuXG4gICAgLyoqXG4gICAgICogU2V0IG9mIGNsYXNzR3JvdXBJZHMgaW4gZm9sbG93aW5nIGZvcm1hdDpcbiAgICAgKiBge2ltcG9ydGFudE1vZGlmaWVyfXt2YXJpYW50TW9kaWZpZXJzfXtjbGFzc0dyb3VwSWR9YFxuICAgICAqIEBleGFtcGxlICdmbG9hdCdcbiAgICAgKiBAZXhhbXBsZSAnaG92ZXI6Zm9jdXM6YmctY29sb3InXG4gICAgICogQGV4YW1wbGUgJ21kOiFwcidcbiAgICAgKi9cbiAgICBjb25zdCBjbGFzc0dyb3Vwc0luQ29uZmxpY3Q6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjbGFzc05hbWVzID0gY2xhc3NMaXN0LnRyaW0oKS5zcGxpdChTUExJVF9DTEFTU0VTX1JFR0VYKVxuXG4gICAgbGV0IHJlc3VsdCA9ICcnXG5cbiAgICBmb3IgKGxldCBpbmRleCA9IGNsYXNzTmFtZXMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXggLT0gMSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbENsYXNzTmFtZSA9IGNsYXNzTmFtZXNbaW5kZXhdIVxuXG4gICAgICAgIGNvbnN0IHsgbW9kaWZpZXJzLCBoYXNJbXBvcnRhbnRNb2RpZmllciwgYmFzZUNsYXNzTmFtZSwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiB9ID1cbiAgICAgICAgICAgIHBhcnNlQ2xhc3NOYW1lKG9yaWdpbmFsQ2xhc3NOYW1lKVxuXG4gICAgICAgIGxldCBoYXNQb3N0Zml4TW9kaWZpZXIgPSBCb29sZWFuKG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pXG4gICAgICAgIGxldCBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXJcbiAgICAgICAgICAgICAgICA/IGJhc2VDbGFzc05hbWUuc3Vic3RyaW5nKDAsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pXG4gICAgICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgICAgICAgIGlmICghaGFzUG9zdGZpeE1vZGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoYmFzZUNsYXNzTmFtZSlcblxuICAgICAgICAgICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllciA9IGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYW50TW9kaWZpZXIgPSBzb3J0TW9kaWZpZXJzKG1vZGlmaWVycykuam9pbignOicpXG5cbiAgICAgICAgY29uc3QgbW9kaWZpZXJJZCA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IHZhcmlhbnRNb2RpZmllciArIElNUE9SVEFOVF9NT0RJRklFUlxuICAgICAgICAgICAgOiB2YXJpYW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBjbGFzc0lkID0gbW9kaWZpZXJJZCArIGNsYXNzR3JvdXBJZFxuXG4gICAgICAgIGlmIChjbGFzc0dyb3Vwc0luQ29uZmxpY3QuaW5jbHVkZXMoY2xhc3NJZCkpIHtcbiAgICAgICAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG9taXR0ZWQgZHVlIHRvIGNvbmZsaWN0XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2goY2xhc3NJZClcblxuICAgICAgICBjb25zdCBjb25mbGljdEdyb3VwcyA9IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyhjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcilcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25mbGljdEdyb3Vwcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBjb25mbGljdEdyb3Vwc1tpXSFcbiAgICAgICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKG1vZGlmaWVySWQgKyBncm91cClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG5vdCBpbiBjb25mbGljdFxuICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG4iLCAiLyoqXG4gKiBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4IGFuZCBtb2RpZmllZCB0byBzdWl0IHRoZSBuZWVkcyBvZiB0YWlsd2luZC1tZXJnZSBiZXR0ZXIuXG4gKlxuICogU3BlY2lmaWNhbGx5OlxuICogLSBSdW50aW1lIGNvZGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvc3JjL2luZGV4LmpzXG4gKiAtIFR5cGVTY3JpcHQgdHlwZXMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvY2xzeC5kLnRzXG4gKlxuICogT3JpZ2luYWwgY29kZSBoYXMgTUlUIGxpY2Vuc2U6IENvcHlyaWdodCAoYykgTHVrZSBFZHdhcmRzIDxsdWtlLmVkd2FyZHMwNUBnbWFpbC5jb20+IChsdWtlZWQuY29tKVxuICovXG5cbmV4cG9ydCB0eXBlIENsYXNzTmFtZVZhbHVlID0gQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgMCB8IDBuIHwgZmFsc2VcbnR5cGUgQ2xhc3NOYW1lQXJyYXkgPSBDbGFzc05hbWVWYWx1ZVtdXG5cbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oLi4uY2xhc3NMaXN0czogQ2xhc3NOYW1lVmFsdWVbXSk6IHN0cmluZ1xuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbigpIHtcbiAgICBsZXQgaW5kZXggPSAwXG4gICAgbGV0IGFyZ3VtZW50OiBDbGFzc05hbWVWYWx1ZVxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKChhcmd1bWVudCA9IGFyZ3VtZW50c1tpbmRleCsrXSkpIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUoYXJndW1lbnQpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmdcbn1cblxuY29uc3QgdG9WYWx1ZSA9IChtaXg6IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBtaXggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBtaXhcbiAgICB9XG5cbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICBmb3IgKGxldCBrID0gMDsgayA8IG1peC5sZW5ndGg7IGsrKykge1xuICAgICAgICBpZiAobWl4W2tdKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKG1peFtrXSBhcyBDbGFzc05hbWVBcnJheSB8IHN0cmluZykpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ29uZmlnVXRpbHMgfSBmcm9tICcuL2NvbmZpZy11dGlscydcbmltcG9ydCB7IG1lcmdlQ2xhc3NMaXN0IH0gZnJvbSAnLi9tZXJnZS1jbGFzc2xpc3QnXG5pbXBvcnQgeyBDbGFzc05hbWVWYWx1ZSwgdHdKb2luIH0gZnJvbSAnLi90dy1qb2luJ1xuaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnRmlyc3QgPSAoKSA9PiBHZW5lcmljQ29uZmlnXG50eXBlIENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiBHZW5lcmljQ29uZmlnXG50eXBlIFRhaWx3aW5kTWVyZ2UgPSAoLi4uY2xhc3NMaXN0czogQ2xhc3NOYW1lVmFsdWVbXSkgPT4gc3RyaW5nXG50eXBlIENvbmZpZ1V0aWxzID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29uZmlnVXRpbHM+XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgIGNyZWF0ZUNvbmZpZ0ZpcnN0OiBDcmVhdGVDb25maWdGaXJzdCxcbiAgICAuLi5jcmVhdGVDb25maWdSZXN0OiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbik6IFRhaWx3aW5kTWVyZ2Uge1xuICAgIGxldCBjb25maWdVdGlsczogQ29uZmlnVXRpbHNcbiAgICBsZXQgY2FjaGVHZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydnZXQnXVxuICAgIGxldCBjYWNoZVNldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ3NldCddXG4gICAgbGV0IGZ1bmN0aW9uVG9DYWxsID0gaW5pdFRhaWx3aW5kTWVyZ2VcblxuICAgIGZ1bmN0aW9uIGluaXRUYWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZUNvbmZpZ1Jlc3QucmVkdWNlKFxuICAgICAgICAgICAgKHByZXZpb3VzQ29uZmlnLCBjcmVhdGVDb25maWdDdXJyZW50KSA9PiBjcmVhdGVDb25maWdDdXJyZW50KHByZXZpb3VzQ29uZmlnKSxcbiAgICAgICAgICAgIGNyZWF0ZUNvbmZpZ0ZpcnN0KCkgYXMgR2VuZXJpY0NvbmZpZyxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbmZpZ1V0aWxzID0gY3JlYXRlQ29uZmlnVXRpbHMoY29uZmlnKVxuICAgICAgICBjYWNoZUdldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLmdldFxuICAgICAgICBjYWNoZVNldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLnNldFxuICAgICAgICBmdW5jdGlvblRvQ2FsbCA9IHRhaWx3aW5kTWVyZ2VcblxuICAgICAgICByZXR1cm4gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZUdldChjbGFzc0xpc3QpXG5cbiAgICAgICAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbWVyZ2VDbGFzc0xpc3QoY2xhc3NMaXN0LCBjb25maWdVdGlscylcbiAgICAgICAgY2FjaGVTZXQoY2xhc3NMaXN0LCByZXN1bHQpXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiBjYWxsVGFpbHdpbmRNZXJnZSgpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uVG9DYWxsKHR3Sm9pbi5hcHBseShudWxsLCBhcmd1bWVudHMgYXMgYW55KSlcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgRGVmYXVsdFRoZW1lR3JvdXBJZHMsIE5vSW5mZXIsIFRoZW1lR2V0dGVyLCBUaGVtZU9iamVjdCB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBmcm9tVGhlbWUgPSA8XG4gICAgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIGV4dGVuZHMgc3RyaW5nID0gRGVmYXVsdFRoZW1lR3JvdXBJZHMsXG4+KGtleTogTm9JbmZlcjxEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHM+KTogVGhlbWVHZXR0ZXIgPT4ge1xuICAgIGNvbnN0IHRoZW1lR2V0dGVyID0gKHRoZW1lOiBUaGVtZU9iamVjdDxEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHM+KSA9PlxuICAgICAgICB0aGVtZVtrZXldIHx8IFtdXG5cbiAgICB0aGVtZUdldHRlci5pc1RoZW1lR2V0dGVyID0gdHJ1ZSBhcyBjb25zdFxuXG4gICAgcmV0dXJuIHRoZW1lR2V0dGVyXG59XG4iLCAiY29uc3QgYXJiaXRyYXJ5VmFsdWVSZWdleCA9IC9eXFxbKD86KFthLXotXSspOik/KC4rKVxcXSQvaVxuY29uc3QgZnJhY3Rpb25SZWdleCA9IC9eXFxkK1xcL1xcZCskL1xuY29uc3Qgc3RyaW5nTGVuZ3RocyA9IG5ldyBTZXQoWydweCcsICdmdWxsJywgJ3NjcmVlbiddKVxuY29uc3QgdHNoaXJ0VW5pdFJlZ2V4ID0gL14oXFxkKyhcXC5cXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkL1xuY29uc3QgbGVuZ3RoVW5pdFJlZ2V4ID1cbiAgICAvXFxkKyglfHB4fHI/ZW18W3NkbF0/dihbaHdpYl18bWlufG1heCl8cHR8cGN8aW58Y218bW18Y2FwfGNofGV4fHI/bGh8Y3Eod3xofGl8YnxtaW58bWF4KSl8XFxiKGNhbGN8bWlufG1heHxjbGFtcClcXCguK1xcKXxeMCQvXG5jb25zdCBjb2xvckZ1bmN0aW9uUmVnZXggPSAvXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCkpXFwoLitcXCkkL1xuLy8gU2hhZG93IGFsd2F5cyBiZWdpbnMgd2l0aCB4IGFuZCB5IG9mZnNldCBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZSBvcHRpb25hbGx5IHByZXBlbmRlZCBieSBpbnNldFxuY29uc3Qgc2hhZG93UmVnZXggPSAvXihpbnNldF8pPy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApXy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApL1xuY29uc3QgaW1hZ2VSZWdleCA9XG4gICAgL14odXJsfGltYWdlfGltYWdlLXNldHxjcm9zcy1mYWRlfGVsZW1lbnR8KHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsfGNvbmljKS1ncmFkaWVudClcXCguK1xcKSQvXG5cbmV4cG9ydCBjb25zdCBpc0xlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGlzTnVtYmVyKHZhbHVlKSB8fCBzdHJpbmdMZW5ndGhzLmhhcyh2YWx1ZSkgfHwgZnJhY3Rpb25SZWdleC50ZXN0KHZhbHVlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbGVuZ3RoJywgaXNMZW5ndGhPbmx5KVxuXG5leHBvcnQgY29uc3QgaXNOdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgIU51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlOdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ251bWJlcicsIGlzTnVtYmVyKVxuXG5leHBvcnQgY29uc3QgaXNJbnRlZ2VyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzUGVyY2VudCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS5lbmRzV2l0aCgnJScpICYmIGlzTnVtYmVyKHZhbHVlLnNsaWNlKDAsIC0xKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5VmFsdWUgPSAodmFsdWU6IHN0cmluZykgPT4gYXJiaXRyYXJ5VmFsdWVSZWdleC50ZXN0KHZhbHVlKVxuXG5leHBvcnQgY29uc3QgaXNUc2hpcnRTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IHRzaGlydFVuaXRSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBzaXplTGFiZWxzID0gbmV3IFNldChbJ2xlbmd0aCcsICdzaXplJywgJ3BlcmNlbnRhZ2UnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBzaXplTGFiZWxzLCBpc05ldmVyKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlQb3NpdGlvbiA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdwb3NpdGlvbicsIGlzTmV2ZXIpXG5cbmNvbnN0IGltYWdlTGFiZWxzID0gbmV3IFNldChbJ2ltYWdlJywgJ3VybCddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlJbWFnZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBpbWFnZUxhYmVscywgaXNJbWFnZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5U2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICcnLCBpc1NoYWRvdylcblxuZXhwb3J0IGNvbnN0IGlzQW55ID0gKCkgPT4gdHJ1ZVxuXG5jb25zdCBnZXRJc0FyYml0cmFyeVZhbHVlID0gKFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgbGFiZWw6IHN0cmluZyB8IFNldDxzdHJpbmc+LFxuICAgIHRlc3RWYWx1ZTogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhcmJpdHJhcnlWYWx1ZVJlZ2V4LmV4ZWModmFsdWUpXG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGlmIChyZXN1bHRbMV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnID8gcmVzdWx0WzFdID09PSBsYWJlbCA6IGxhYmVsLmhhcyhyZXN1bHRbMV0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGVzdFZhbHVlKHJlc3VsdFsyXSEpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbmNvbnN0IGlzTGVuZ3RoT25seSA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIC8vIGBjb2xvckZ1bmN0aW9uUmVnZXhgIGNoZWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGNvbG9yIGZ1bmN0aW9ucyBjYW4gaGF2ZSBwZXJjZW50YWdlcyBpbiB0aGVtIHdoaWNoIHdoaWNoIHdvdWxkIGJlIGluY29ycmVjdGx5IGNsYXNzaWZpZWQgYXMgbGVuZ3Rocy5cbiAgICAvLyBGb3IgZXhhbXBsZSwgYGhzbCgwIDAlIDAlKWAgd291bGQgYmUgY2xhc3NpZmllZCBhcyBhIGxlbmd0aCB3aXRob3V0IHRoaXMgY2hlY2suXG4gICAgLy8gSSBjb3VsZCBhbHNvIHVzZSBsb29rYmVoaW5kIGFzc2VydGlvbiBpbiBgbGVuZ3RoVW5pdFJlZ2V4YCBidXQgdGhhdCBpc24ndCBzdXBwb3J0ZWQgd2lkZWx5IGVub3VnaC5cbiAgICBsZW5ndGhVbml0UmVnZXgudGVzdCh2YWx1ZSkgJiYgIWNvbG9yRnVuY3Rpb25SZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc05ldmVyID0gKCkgPT4gZmFsc2VcblxuY29uc3QgaXNTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gc2hhZG93UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNJbWFnZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBpbWFnZVJlZ2V4LnRlc3QodmFsdWUpXG4iLCAiaW1wb3J0IHsgZnJvbVRoZW1lIH0gZnJvbSAnLi9mcm9tLXRoZW1lJ1xuaW1wb3J0IHsgQ29uZmlnLCBEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHtcbiAgICBpc0FueSxcbiAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgIGlzQXJiaXRyYXJ5TGVuZ3RoLFxuICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgIGlzQXJiaXRyYXJ5UG9zaXRpb24sXG4gICAgaXNBcmJpdHJhcnlTaGFkb3csXG4gICAgaXNBcmJpdHJhcnlTaXplLFxuICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgaXNJbnRlZ2VyLFxuICAgIGlzTGVuZ3RoLFxuICAgIGlzTnVtYmVyLFxuICAgIGlzUGVyY2VudCxcbiAgICBpc1RzaGlydFNpemUsXG59IGZyb20gJy4vdmFsaWRhdG9ycydcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRDb25maWcgPSAoKSA9PiB7XG4gICAgY29uc3QgY29sb3JzID0gZnJvbVRoZW1lKCdjb2xvcnMnKVxuICAgIGNvbnN0IHNwYWNpbmcgPSBmcm9tVGhlbWUoJ3NwYWNpbmcnKVxuICAgIGNvbnN0IGJsdXIgPSBmcm9tVGhlbWUoJ2JsdXInKVxuICAgIGNvbnN0IGJyaWdodG5lc3MgPSBmcm9tVGhlbWUoJ2JyaWdodG5lc3MnKVxuICAgIGNvbnN0IGJvcmRlckNvbG9yID0gZnJvbVRoZW1lKCdib3JkZXJDb2xvcicpXG4gICAgY29uc3QgYm9yZGVyUmFkaXVzID0gZnJvbVRoZW1lKCdib3JkZXJSYWRpdXMnKVxuICAgIGNvbnN0IGJvcmRlclNwYWNpbmcgPSBmcm9tVGhlbWUoJ2JvcmRlclNwYWNpbmcnKVxuICAgIGNvbnN0IGJvcmRlcldpZHRoID0gZnJvbVRoZW1lKCdib3JkZXJXaWR0aCcpXG4gICAgY29uc3QgY29udHJhc3QgPSBmcm9tVGhlbWUoJ2NvbnRyYXN0JylcbiAgICBjb25zdCBncmF5c2NhbGUgPSBmcm9tVGhlbWUoJ2dyYXlzY2FsZScpXG4gICAgY29uc3QgaHVlUm90YXRlID0gZnJvbVRoZW1lKCdodWVSb3RhdGUnKVxuICAgIGNvbnN0IGludmVydCA9IGZyb21UaGVtZSgnaW52ZXJ0JylcbiAgICBjb25zdCBnYXAgPSBmcm9tVGhlbWUoJ2dhcCcpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BzID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcHMnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucycpXG4gICAgY29uc3QgaW5zZXQgPSBmcm9tVGhlbWUoJ2luc2V0JylcbiAgICBjb25zdCBtYXJnaW4gPSBmcm9tVGhlbWUoJ21hcmdpbicpXG4gICAgY29uc3Qgb3BhY2l0eSA9IGZyb21UaGVtZSgnb3BhY2l0eScpXG4gICAgY29uc3QgcGFkZGluZyA9IGZyb21UaGVtZSgncGFkZGluZycpXG4gICAgY29uc3Qgc2F0dXJhdGUgPSBmcm9tVGhlbWUoJ3NhdHVyYXRlJylcbiAgICBjb25zdCBzY2FsZSA9IGZyb21UaGVtZSgnc2NhbGUnKVxuICAgIGNvbnN0IHNlcGlhID0gZnJvbVRoZW1lKCdzZXBpYScpXG4gICAgY29uc3Qgc2tldyA9IGZyb21UaGVtZSgnc2tldycpXG4gICAgY29uc3Qgc3BhY2UgPSBmcm9tVGhlbWUoJ3NwYWNlJylcbiAgICBjb25zdCB0cmFuc2xhdGUgPSBmcm9tVGhlbWUoJ3RyYW5zbGF0ZScpXG5cbiAgICBjb25zdCBnZXRPdmVyc2Nyb2xsID0gKCkgPT4gWydhdXRvJywgJ2NvbnRhaW4nLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0T3ZlcmZsb3cgPSAoKSA9PiBbJ2F1dG8nLCAnaGlkZGVuJywgJ2NsaXAnLCAndmlzaWJsZScsICdzY3JvbGwnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkgPSAoKSA9PiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkgPSAoKSA9PiBbJycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFBvc2l0aW9ucyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAnbGVmdC1ib3R0b20nLFxuICAgICAgICAgICAgJ2xlZnQtdG9wJyxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAncmlnaHQtYm90dG9tJyxcbiAgICAgICAgICAgICdyaWdodC10b3AnLFxuICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRMaW5lU3R5bGVzID0gKCkgPT4gWydzb2xpZCcsICdkYXNoZWQnLCAnZG90dGVkJywgJ2RvdWJsZScsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRCbGVuZE1vZGVzID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAnbXVsdGlwbHknLFxuICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAnb3ZlcmxheScsXG4gICAgICAgICAgICAnZGFya2VuJyxcbiAgICAgICAgICAgICdsaWdodGVuJyxcbiAgICAgICAgICAgICdjb2xvci1kb2RnZScsXG4gICAgICAgICAgICAnY29sb3ItYnVybicsXG4gICAgICAgICAgICAnaGFyZC1saWdodCcsXG4gICAgICAgICAgICAnc29mdC1saWdodCcsXG4gICAgICAgICAgICAnZGlmZmVyZW5jZScsXG4gICAgICAgICAgICAnZXhjbHVzaW9uJyxcbiAgICAgICAgICAgICdodWUnLFxuICAgICAgICAgICAgJ3NhdHVyYXRpb24nLFxuICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICdsdW1pbm9zaXR5JyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEFsaWduID0gKCkgPT5cbiAgICAgICAgWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2JldHdlZW4nLCAnYXJvdW5kJywgJ2V2ZW5seScsICdzdHJldGNoJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRaZXJvQW5kRW1wdHkgPSAoKSA9PiBbJycsICcwJywgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRCcmVha3MgPSAoKSA9PlxuICAgICAgICBbJ2F1dG8nLCAnYXZvaWQnLCAnYWxsJywgJ2F2b2lkLXBhZ2UnLCAncGFnZScsICdsZWZ0JywgJ3JpZ2h0JywgJ2NvbHVtbiddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5ID0gKCkgPT4gW2lzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FjaGVTaXplOiA1MDAsXG4gICAgICAgIHNlcGFyYXRvcjogJzonLFxuICAgICAgICB0aGVtZToge1xuICAgICAgICAgICAgY29sb3JzOiBbaXNBbnldLFxuICAgICAgICAgICAgc3BhY2luZzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBibHVyOiBbJ25vbmUnLCAnJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJyaWdodG5lc3M6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFtjb2xvcnNdLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbJ25vbmUnLCAnJywgJ2Z1bGwnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYm9yZGVyU3BhY2luZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlcldpZHRoOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGNvbnRyYXN0OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGdyYXlzY2FsZTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBodWVSb3RhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgaW52ZXJ0OiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGdhcDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wczogW2NvbG9yc10sXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uczogW2lzUGVyY2VudCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgaW5zZXQ6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgbWFyZ2luOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG9wYWNpdHk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgcGFkZGluZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNhdHVyYXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNjYWxlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNlcGlhOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIHNrZXc6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc3BhY2U6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICAvLyBMYXlvdXRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXNwZWN0IFJhdGlvXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXNwZWN0LXJhdGlvXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFzcGVjdDogW3sgYXNwZWN0OiBbJ2F1dG8nLCAnc3F1YXJlJywgJ3ZpZGVvJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRhaW5lclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRhaW5lclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250YWluZXI6IFsnY29udGFpbmVyJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbHVtbnM6IFt7IGNvbHVtbnM6IFtpc1RzaGlydFNpemVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBBZnRlclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWFmdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1hZnRlcic6IFt7ICdicmVhay1hZnRlcic6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBCZWZvcmVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1iZWZvcmVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWJlZm9yZSc6IFt7ICdicmVhay1iZWZvcmUnOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgSW5zaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstaW5zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1pbnNpZGUnOiBbeyAnYnJlYWstaW5zaWRlJzogWydhdXRvJywgJ2F2b2lkJywgJ2F2b2lkLXBhZ2UnLCAnYXZvaWQtY29sdW1uJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBEZWNvcmF0aW9uIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LWRlY29yYXRpb24tYnJlYWtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JveC1kZWNvcmF0aW9uJzogW3sgJ2JveC1kZWNvcmF0aW9uJzogWydzbGljZScsICdjbG9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2l6aW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNpemluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3g6IFt7IGJveDogWydib3JkZXInLCAnY29udGVudCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXNwbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGlzcGxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkaXNwbGF5OiBbXG4gICAgICAgICAgICAgICAgJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lJyxcbiAgICAgICAgICAgICAgICAnZmxleCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1mbGV4JyxcbiAgICAgICAgICAgICAgICAndGFibGUnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtdGFibGUnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jYXB0aW9uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2VsbCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNvbHVtbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNvbHVtbi1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWZvb3Rlci1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWhlYWRlci1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLXJvdy1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLXJvdycsXG4gICAgICAgICAgICAgICAgJ2Zsb3ctcm9vdCcsXG4gICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnRzJyxcbiAgICAgICAgICAgICAgICAnbGlzdC1pdGVtJyxcbiAgICAgICAgICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsb2F0c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Zsb2F0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZsb2F0OiBbeyBmbG9hdDogWydyaWdodCcsICdsZWZ0JywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENsZWFyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2xlYXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2xlYXI6IFt7IGNsZWFyOiBbJ2xlZnQnLCAncmlnaHQnLCAnYm90aCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJc29sYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pc29sYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaXNvbGF0aW9uOiBbJ2lzb2xhdGUnLCAnaXNvbGF0aW9uLWF1dG8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IEZpdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1maXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ29iamVjdC1maXQnOiBbeyBvYmplY3Q6IFsnY29udGFpbicsICdjb3ZlcicsICdmaWxsJywgJ25vbmUnLCAnc2NhbGUtZG93biddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ29iamVjdC1wb3NpdGlvbic6IFt7IG9iamVjdDogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvdmVyZmxvdzogW3sgb3ZlcmZsb3c6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteCc6IFt7ICdvdmVyZmxvdy14JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy15JzogW3sgJ292ZXJmbG93LXknOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbeyBvdmVyc2Nyb2xsOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJzY3JvbGwteCc6IFt7ICdvdmVyc2Nyb2xsLXgnOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJzY3JvbGwteSc6IFt7ICdvdmVyc2Nyb2xsLXknOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcG9zaXRpb246IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBSaWdodCAvIEJvdHRvbSAvIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5zZXQ6IFt7IGluc2V0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodCAvIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXgnOiBbeyAnaW5zZXQteCc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteSc6IFt7ICdpbnNldC15JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3RhcnQ6IFt7IHN0YXJ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZW5kOiBbeyBlbmQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3A6IFt7IHRvcDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmlnaHQ6IFt7IHJpZ2h0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm90dG9tOiBbeyBib3R0b206IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVmdDogW3sgbGVmdDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmlzaWJpbGl0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Zpc2liaWxpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogWyd2aXNpYmxlJywgJ2ludmlzaWJsZScsICdjb2xsYXBzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBaLUluZGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvei1pbmRleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB6OiBbeyB6OiBbJ2F1dG8nLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gRmxleGJveCBhbmQgR3JpZFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IEJhc2lzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1iYXNpc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBiYXNpczogW3sgYmFzaXM6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IERpcmVjdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZGlyZWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LWRpcmVjdGlvbic6IFt7IGZsZXg6IFsncm93JywgJ3Jvdy1yZXZlcnNlJywgJ2NvbCcsICdjb2wtcmV2ZXJzZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtd3JhcCc6IFt7IGZsZXg6IFsnd3JhcCcsICd3cmFwLXJldmVyc2UnLCAnbm93cmFwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZsZXg6IFt7IGZsZXg6IFsnMScsICdhdXRvJywgJ2luaXRpYWwnLCAnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IEdyb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWdyb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JvdzogW3sgZ3JvdzogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggU2hyaW5rXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1zaHJpbmtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hyaW5rOiBbeyBzaHJpbms6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPcmRlclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29yZGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9yZGVyOiBbeyBvcmRlcjogWydmaXJzdCcsICdsYXN0JywgJ25vbmUnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtY29scyc6IFt7ICdncmlkLWNvbHMnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29sOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNwYW46IFsnZnVsbCcsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydCc6IFt7ICdjb2wtc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLWVuZCc6IFt7ICdjb2wtZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBSb3dzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLXJvd3MnOiBbeyAnZ3JpZC1yb3dzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7IHJvdzogWydhdXRvJywgeyBzcGFuOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LXN0YXJ0JzogW3sgJ3Jvdy1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctZW5kJzogW3sgJ3Jvdy1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gRmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1mbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWZsb3cnOiBbeyAnZ3JpZC1mbG93JzogWydyb3cnLCAnY29sJywgJ2RlbnNlJywgJ3Jvdy1kZW5zZScsICdjb2wtZGVuc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1jb2xzJzogW3sgJ2F1dG8tY29scyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBSb3dzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tcm93cyc6IFt7ICdhdXRvLXJvd3MnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ2FwOiBbeyBnYXA6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXgnOiBbeyAnZ2FwLXgnOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC15JzogW3sgJ2dhcC15JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogW3sganVzdGlmeTogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbeyAnanVzdGlmeS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1zZWxmJzogW3sgJ2p1c3RpZnktc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWNvbnRlbnQnOiBbeyBjb250ZW50OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1pdGVtcyc6IFt7IGl0ZW1zOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tc2VsZic6IFt7IHNlbGY6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWNvbnRlbnQnOiBbeyAncGxhY2UtY29udGVudCc6IFsuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtaXRlbXMnOiBbeyAncGxhY2UtaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Utc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Utc2VsZic6IFt7ICdwbGFjZS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLy8gU3BhY2luZ1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwOiBbeyBwOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHg6IFt7IHB4OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHk6IFt7IHB5OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBzOiBbeyBwczogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGU6IFt7IHBlOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwdDogW3sgcHQ6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHI6IFt7IHByOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwYjogW3sgcGI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwbDogW3sgcGw6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG06IFt7IG06IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBteDogW3sgbXg6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBteTogW3sgbXk6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXM6IFt7IG1zOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtZTogW3sgbWU6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG10OiBbeyBtdDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtcjogW3sgbXI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1iOiBbeyBtYjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1sOiBbeyBtbDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS14JzogW3sgJ3NwYWNlLXgnOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS14LXJldmVyc2UnOiBbJ3NwYWNlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteSc6IFt7ICdzcGFjZS15JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteS1yZXZlcnNlJzogWydzcGFjZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8vIFNpemluZ1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2x2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4td2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21pbi13JzogW3sgJ21pbi13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXgtV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC13JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ21heC13JzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZnVsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncHJvc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzY3JlZW46IFtpc1RzaGlydFNpemVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RzaGlydFNpemUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2hlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2x2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZHZoJyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21pbi1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21pbi1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXgtSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWF4LWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNpemU6IFt7IHNpemU6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCddIH1dLFxuICAgICAgICAgICAgLy8gVHlwb2dyYXBoeVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFt7IHRleHQ6IFsnYmFzZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFNtb290aGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc21vb3RoaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNtb290aGluZyc6IFsnYW50aWFsaWFzZWQnLCAnc3VicGl4ZWwtYW50aWFsaWFzZWQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnOiBbJ2l0YWxpYycsICdub3QtaXRhbGljJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgV2VpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC13ZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2VtaWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxhY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgRmFtaWx5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1mYW1pbHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5JzogW3sgZm9udDogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFsnbm9ybWFsLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ29yZGluYWwnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnc2xhc2hlZC16ZXJvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2xpbmluZy1udW1zJywgJ29sZHN0eWxlLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ3Byb3BvcnRpb25hbC1udW1zJywgJ3RhYnVsYXItbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2RpYWdvbmFsLWZyYWN0aW9ucycsICdzdGFja2VkLWZyYWN0b25zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExldHRlciBTcGFjaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGV0dGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIENsYW1wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1jbGFtcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFt7ICdsaW5lLWNsYW1wJzogWydub25lJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWFkaW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZWFkaW5nOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NudWcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmVsYXhlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbG9vc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIEltYWdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1pbWFnZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1pbWFnZSc6IFt7ICdsaXN0LWltYWdlJzogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1zdHlsZS10eXBlJzogW3sgbGlzdDogWydub25lJywgJ2Rpc2MnLCAnZGVjaW1hbCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1zdHlsZS1wb3NpdGlvbic6IFt7IGxpc3Q6IFsnaW5zaWRlJywgJ291dHNpZGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItY29sb3InOiBbeyBwbGFjZWhvbGRlcjogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW3sgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1hbGlnbm1lbnQnOiBbeyB0ZXh0OiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0JywgJ2p1c3RpZnknLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWNvbG9yJzogW3sgdGV4dDogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vcGFjaXR5JzogW3sgJ3RleHQtb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24nOiBbJ3VuZGVybGluZScsICdvdmVybGluZScsICdsaW5lLXRocm91Z2gnLCAnbm8tdW5kZXJsaW5lJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXN0eWxlJzogW3sgZGVjb3JhdGlvbjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ3dhdnknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFRoaWNrbmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MnOiBbXG4gICAgICAgICAgICAgICAgeyBkZWNvcmF0aW9uOiBbJ2F1dG8nLCAnZnJvbS1mb250JywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBVbmRlcmxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC11bmRlcmxpbmUtb2Zmc2V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd1bmRlcmxpbmUtb2Zmc2V0JzogW3sgJ3VuZGVybGluZS1vZmZzZXQnOiBbJ2F1dG8nLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJzogW3sgZGVjb3JhdGlvbjogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC10cmFuc2Zvcm1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtdHJhbnNmb3JtJzogWyd1cHBlcmNhc2UnLCAnbG93ZXJjYXNlJywgJ2NhcGl0YWxpemUnLCAnbm9ybWFsLWNhc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3ZlcmZsb3cnOiBbJ3RydW5jYXRlJywgJ3RleHQtZWxsaXBzaXMnLCAndGV4dC1jbGlwJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC13cmFwJzogW3sgdGV4dDogWyd3cmFwJywgJ25vd3JhcCcsICdiYWxhbmNlJywgJ3ByZXR0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEluZGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtaW5kZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluZGVudDogW3sgaW5kZW50OiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWZXJ0aWNhbCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92ZXJ0aWNhbC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndmVydGljYWwtYWxpZ24nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBhbGlnbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2VsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pZGRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXRvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1ib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1YicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3VwZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hpdGVzcGFjZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3doaXRlc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgd2hpdGVzcGFjZTogW1xuICAgICAgICAgICAgICAgIHsgd2hpdGVzcGFjZTogWydub3JtYWwnLCAnbm93cmFwJywgJ3ByZScsICdwcmUtbGluZScsICdwcmUtd3JhcCcsICdicmVhay1zcGFjZXMnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV29yZCBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dvcmQtYnJlYWtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJlYWs6IFt7IGJyZWFrOiBbJ25vcm1hbCcsICd3b3JkcycsICdhbGwnLCAna2VlcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIeXBoZW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHlwaGVuc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBoeXBoZW5zOiBbeyBoeXBoZW5zOiBbJ25vbmUnLCAnbWFudWFsJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGVudDogW3sgY29udGVudDogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBCYWNrZ3JvdW5kc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEF0dGFjaG1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWF0dGFjaG1lbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWF0dGFjaG1lbnQnOiBbeyBiZzogWydmaXhlZCcsICdsb2NhbCcsICdzY3JvbGwnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBDbGlwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jbGlwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jbGlwJzogW3sgJ2JnLWNsaXAnOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnLCAndGV4dCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9wYWNpdHknOiBbeyAnYmctb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9yaWdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3JpZ2luJzogW3sgJ2JnLW9yaWdpbic6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctcG9zaXRpb24nOiBbeyBiZzogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVBvc2l0aW9uXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBSZXBlYXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXJlcGVhdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctcmVwZWF0JzogW3sgYmc6IFsnbm8tcmVwZWF0JywgeyByZXBlYXQ6IFsnJywgJ3gnLCAneScsICdyb3VuZCcsICdzcGFjZSddIH1dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXNpemUnOiBbeyBiZzogWydhdXRvJywgJ2NvdmVyJywgJ2NvbnRhaW4nLCBpc0FyYml0cmFyeVNpemVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEltYWdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1pbWFnZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctaW1hZ2UnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyAnZ3JhZGllbnQtdG8nOiBbJ3QnLCAndHInLCAncicsICdicicsICdiJywgJ2JsJywgJ2wnLCAndGwnXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNvbG9yJzogW3sgYmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LWZyb20tcG9zJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXZpYS1wb3MnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXRvLXBvcyc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LWZyb20nOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXZpYSc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXRvJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLy8gQm9yZGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3VuZGVkOiBbeyByb3VuZGVkOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFt7ICdyb3VuZGVkLXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbeyAncm91bmRlZC1lJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10JzogW3sgJ3JvdW5kZWQtdCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1yJzogW3sgJ3JvdW5kZWQtcic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYic6IFt7ICdyb3VuZGVkLWInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1sJzogW3sgJ3JvdW5kZWQtbCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zcyc6IFt7ICdyb3VuZGVkLXNzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zZSc6IFt7ICdyb3VuZGVkLXNlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZWUnOiBbeyAncm91bmRlZC1lZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZXMnOiBbeyAncm91bmRlZC1lcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10bCc6IFt7ICdyb3VuZGVkLXRsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10cic6IFt7ICdyb3VuZGVkLXRyJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1icic6IFt7ICdyb3VuZGVkLWJyJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJsJzogW3sgJ3JvdW5kZWQtYmwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdyc6IFt7IGJvcmRlcjogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFt7ICdib3JkZXIteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcyc6IFt7ICdib3JkZXItcyc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWUnOiBbeyAnYm9yZGVyLWUnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy10JzogW3sgJ2JvcmRlci10JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1sJzogW3sgJ2JvcmRlci1sJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLW9wYWNpdHknOiBbeyAnYm9yZGVyLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXN0eWxlJzogW3sgYm9yZGVyOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnaGlkZGVuJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteCc6IFt7ICdkaXZpZGUteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14LXJldmVyc2UnOiBbJ2RpdmlkZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15JzogW3sgJ2RpdmlkZS15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXktcmV2ZXJzZSc6IFsnZGl2aWRlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFt7ICdkaXZpZGUtb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtc3R5bGUnOiBbeyBkaXZpZGU6IGdldExpbmVTdHlsZXMoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbeyBib3JkZXI6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3IteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3IteSc6IFt7ICdib3JkZXIteSc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JzogW3sgJ2JvcmRlci10JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3Itcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJzogW3sgJ2JvcmRlci1sJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtY29sb3InOiBbeyBkaXZpZGU6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLXN0eWxlJzogW3sgb3V0bGluZTogWycnLCAuLi5nZXRMaW5lU3R5bGVzKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtb2Zmc2V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLW9mZnNldCc6IFt7ICdvdXRsaW5lLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLXcnOiBbeyBvdXRsaW5lOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtY29sb3InOiBbeyBvdXRsaW5lOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdyc6IFt7IHJpbmc6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoIEluc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13LWluc2V0JzogWydyaW5nLWluc2V0J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLWNvbG9yJzogW3sgcmluZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vcGFjaXR5JzogW3sgJ3Jpbmctb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtdyc6IFt7ICdyaW5nLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC1jb2xvcic6IFt7ICdyaW5nLW9mZnNldCc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLy8gRWZmZWN0c1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2hhZG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaGFkb3c6IFt7IHNoYWRvdzogWycnLCAnaW5uZXInLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlTaGFkb3ddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2hhZG93IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvdy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2hhZG93LWNvbG9yJzogW3sgc2hhZG93OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcGFjaXR5OiBbeyBvcGFjaXR5OiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1peCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWl4LWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21peC1ibGVuZCc6IFt7ICdtaXgtYmxlbmQnOiBbLi4uZ2V0QmxlbmRNb2RlcygpLCAncGx1cy1saWdodGVyJywgJ3BsdXMtZGFya2VyJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYmxlbmQnOiBbeyAnYmctYmxlbmQnOiBnZXRCbGVuZE1vZGVzKCkgfV0sXG4gICAgICAgICAgICAvLyBGaWx0ZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWx0ZXI6IFt7IGZpbHRlcjogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBibHVyOiBbeyBibHVyOiBbYmx1cl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyaWdodG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmlnaHRuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyaWdodG5lc3M6IFt7IGJyaWdodG5lc3M6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250cmFzdDogW3sgY29udHJhc3Q6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERyb3AgU2hhZG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZHJvcC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Ryb3Atc2hhZG93JzogW3sgJ2Ryb3Atc2hhZG93JzogWycnLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncmF5c2NhbGU6IFt7IGdyYXlzY2FsZTogW2dyYXlzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh1ZSBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9odWUtcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdodWUtcm90YXRlJzogW3sgJ2h1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSW52ZXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaW52ZXJ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGludmVydDogW3sgaW52ZXJ0OiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzYXR1cmF0ZTogW3sgc2F0dXJhdGU6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VwaWE6IFt7IHNlcGlhOiBbc2VwaWFdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWZpbHRlcic6IFt7ICdiYWNrZHJvcC1maWx0ZXInOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1ibHVyJzogW3sgJ2JhY2tkcm9wLWJsdXInOiBbYmx1cl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEJyaWdodG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1icmlnaHRuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW3sgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW3sgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbeyAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW2dyYXlzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEh1ZSBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1odWUtcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1odWUtcm90YXRlJzogW3sgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSW52ZXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaW52ZXJ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1pbnZlcnQnOiBbeyAnYmFja2Ryb3AtaW52ZXJ0JzogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1vcGFjaXR5JzogW3sgJ2JhY2tkcm9wLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3sgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2VwaWEnOiBbeyAnYmFja2Ryb3Atc2VwaWEnOiBbc2VwaWFdIH1dLFxuICAgICAgICAgICAgLy8gVGFibGVzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xsYXBzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xsYXBzZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbGxhcHNlJzogW3sgYm9yZGVyOiBbJ2NvbGxhcHNlJywgJ3NlcGFyYXRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW3sgJ2JvcmRlci1zcGFjaW5nJzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbeyAnYm9yZGVyLXNwYWNpbmcteCc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy15JzogW3sgJ2JvcmRlci1zcGFjaW5nLXknOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRhYmxlIExheW91dFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RhYmxlLWxheW91dFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGFibGUtbGF5b3V0JzogW3sgdGFibGU6IFsnYXV0bycsICdmaXhlZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYXB0aW9uIFNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jYXB0aW9uLXNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2FwdGlvbjogW3sgY2FwdGlvbjogWyd0b3AnLCAnYm90dG9tJ10gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2l0aW9ucyBhbmQgQW5pbWF0aW9uXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5pc2l0aW9uIFByb3BlcnR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1wcm9wZXJ0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9ycycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hhZG93JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEdXJhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZHVyYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZHVyYXRpb246IFt7IGR1cmF0aW9uOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBUaW1pbmcgRnVuY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlYXNlOiBbeyBlYXNlOiBbJ2xpbmVhcicsICdpbicsICdvdXQnLCAnaW4tb3V0JywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRGVsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWRlbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRlbGF5OiBbeyBkZWxheTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFuaW1hdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FuaW1hdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhbmltYXRlOiBbeyBhbmltYXRlOiBbJ25vbmUnLCAnc3BpbicsICdwaW5nJywgJ3B1bHNlJywgJ2JvdW5jZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNmb3Jtc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBbeyB0cmFuc2Zvcm06IFsnJywgJ2dwdScsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2NhbGU6IFt7IHNjYWxlOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXgnOiBbeyAnc2NhbGUteCc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteSc6IFt7ICdzY2FsZS15JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdGF0ZTogW3sgcm90YXRlOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS14JzogW3sgJ3RyYW5zbGF0ZS14JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteSc6IFt7ICd0cmFuc2xhdGUteSc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTa2V3IFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdza2V3LXgnOiBbeyAnc2tldy14JzogW3NrZXddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTa2V3IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdza2V3LXknOiBbeyAnc2tldy15JzogW3NrZXddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2Zvcm0gT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtLW9yaWdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNmb3JtLW9yaWdpbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtcmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tcmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBJbnRlcmFjdGl2aXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFjY2VudCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FjY2VudC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhY2NlbnQ6IFt7IGFjY2VudDogWydhdXRvJywgY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXBwZWFyYW5jZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FwcGVhcmFuY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXBwZWFyYW5jZTogW3sgYXBwZWFyYW5jZTogWydub25lJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ3Vyc29yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY3Vyc29yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2FpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbW92ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnaGVscCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm90LWFsbG93ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQtbWVudScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncHJvZ3Jlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Nyb3NzaGFpcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndmVydGljYWwtdGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxpYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vLWRyb3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyYWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyYWJiaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwtc2Nyb2xsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2wtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyb3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3MtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmUtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdudy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdldy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25zLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmVzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253c2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd6b29tLWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd6b29tLW91dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYXJldCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3QtaW4tdGltZS1tb2RlI2NhcmV0LWNvbG9yLXV0aWxpdGllc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY2FyZXQtY29sb3InOiBbeyBjYXJldDogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBvaW50ZXIgRXZlbnRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9pbnRlci1ldmVudHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BvaW50ZXItZXZlbnRzJzogW3sgJ3BvaW50ZXItZXZlbnRzJzogWydub25lJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmVzaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmVzaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJlc2l6ZTogW3sgcmVzaXplOiBbJ25vbmUnLCAneScsICd4JywgJyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1iZWhhdmlvcic6IFt7IHNjcm9sbDogWydhdXRvJywgJ3Ntb290aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbeyAnc2Nyb2xsLW0nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbeyAnc2Nyb2xsLW14JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW15JzogW3sgJ3Njcm9sbC1teSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXMnOiBbeyAnc2Nyb2xsLW1zJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWUnOiBbeyAnc2Nyb2xsLW1lJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXQnOiBbeyAnc2Nyb2xsLW10JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcic6IFt7ICdzY3JvbGwtbXInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tYic6IFt7ICdzY3JvbGwtbWInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWwnOiBbeyAnc2Nyb2xsLW1sJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXAnOiBbeyAnc2Nyb2xsLXAnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1weCc6IFt7ICdzY3JvbGwtcHgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1weSc6IFt7ICdzY3JvbGwtcHknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHMnOiBbeyAnc2Nyb2xsLXBzJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wZSc6IFt7ICdzY3JvbGwtcGUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB0JzogW3sgJ3Njcm9sbC1wdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcic6IFt7ICdzY3JvbGwtcHInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBiJzogW3sgJ3Njcm9sbC1wYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBsJzogW3sgJ3Njcm9sbC1wbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIEFsaWduXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtYWxpZ24nOiBbeyBzbmFwOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYWxpZ24tbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBTdG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtc3RvcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1zdG9wJzogW3sgc25hcDogWydub3JtYWwnLCAnYWx3YXlzJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXR5cGUnOiBbeyBzbmFwOiBbJ25vbmUnLCAneCcsICd5JywgJ2JvdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZSBTdHJpY3RuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1zdHJpY3RuZXNzJzogW3sgc25hcDogWydtYW5kYXRvcnknLCAncHJveGltaXR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3VjaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdG91Y2g6IFsnYXV0bycsICdub25lJywgJ21hbmlwdWxhdGlvbiddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gteCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICd0b3VjaC1wYW4nOiBbJ3gnLCAnbGVmdCcsICdyaWdodCddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gteSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICd0b3VjaC1wYW4nOiBbJ3knLCAndXAnLCAnZG93biddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gUGluY2ggWm9vbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoLXBpbmNoLXpvb20nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVXNlciBTZWxlY3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy91c2VyLXNlbGVjdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZWxlY3Q6IFt7IHNlbGVjdDogWydub25lJywgJ3RleHQnLCAnYWxsJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lsbCBDaGFuZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWxsLWNoYW5nZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnd2lsbC1jaGFuZ2UnOiBbXG4gICAgICAgICAgICAgICAgeyAnd2lsbC1jaGFuZ2UnOiBbJ2F1dG8nLCAnc2Nyb2xsJywgJ2NvbnRlbnRzJywgJ3RyYW5zZm9ybScsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gU1ZHXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZpbGxcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWxsXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbGw6IFt7IGZpbGw6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3Ryb2tlLXcnOiBbeyBzdHJva2U6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGgsIGlzQXJiaXRyYXJ5TnVtYmVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0cm9rZTogW3sgc3Ryb2tlOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLy8gQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JlZW4gUmVhZGVyc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjcmVlbi1yZWFkZXJzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNyOiBbJ3NyLW9ubHknLCAnbm90LXNyLW9ubHknXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9yY2VkIENvbG9yIEFkanVzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvcmNlZC1jb2xvci1hZGp1c3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbeyAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFsnYXV0bycsICdub25lJ10gfV0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIG92ZXJmbG93OiBbJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAgICAgICAgICAgb3ZlcnNjcm9sbDogWydvdmVyc2Nyb2xsLXgnLCAnb3ZlcnNjcm9sbC15J10sXG4gICAgICAgICAgICBpbnNldDogWydpbnNldC14JywgJ2luc2V0LXknLCAnc3RhcnQnLCAnZW5kJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXgnOiBbJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC15JzogWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICAgICAgICBmbGV4OiBbJ2Jhc2lzJywgJ2dyb3cnLCAnc2hyaW5rJ10sXG4gICAgICAgICAgICBnYXA6IFsnZ2FwLXgnLCAnZ2FwLXknXSxcbiAgICAgICAgICAgIHA6IFsncHgnLCAncHknLCAncHMnLCAncGUnLCAncHQnLCAncHInLCAncGInLCAncGwnXSxcbiAgICAgICAgICAgIHB4OiBbJ3ByJywgJ3BsJ10sXG4gICAgICAgICAgICBweTogWydwdCcsICdwYiddLFxuICAgICAgICAgICAgbTogWydteCcsICdteScsICdtcycsICdtZScsICdtdCcsICdtcicsICdtYicsICdtbCddLFxuICAgICAgICAgICAgbXg6IFsnbXInLCAnbWwnXSxcbiAgICAgICAgICAgIG15OiBbJ210JywgJ21iJ10sXG4gICAgICAgICAgICBzaXplOiBbJ3cnLCAnaCddLFxuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbXG4gICAgICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybycsXG4gICAgICAgICAgICAgICAgJ2Z2bi1maWd1cmUnLFxuICAgICAgICAgICAgICAgICdmdm4tc3BhY2luZycsXG4gICAgICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbJ2Rpc3BsYXknLCAnb3ZlcmZsb3cnXSxcbiAgICAgICAgICAgIHJvdW5kZWQ6IFtcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10JyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1yJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1iJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1sJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc2UnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdGwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1icicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYmwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbJ3JvdW5kZWQtc3MnLCAncm91bmRlZC1lcyddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFsncm91bmRlZC1zZScsICdyb3VuZGVkLWVlJ10sXG4gICAgICAgICAgICAncm91bmRlZC10JzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtdHInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbJ3JvdW5kZWQtdHInLCAncm91bmRlZC1iciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtYic6IFsncm91bmRlZC1icicsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAncm91bmRlZC1sJzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFsnYm9yZGVyLXNwYWNpbmcteCcsICdib3JkZXItc3BhY2luZy15J10sXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXMnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1lJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1iJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci13LXgnOiBbJ2JvcmRlci13LXInLCAnYm9yZGVyLXctbCddLFxuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctYiddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1iJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3IteCc6IFsnYm9yZGVyLWNvbG9yLXInLCAnYm9yZGVyLWNvbG9yLWwnXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3IteSc6IFsnYm9yZGVyLWNvbG9yLXQnLCAnYm9yZGVyLWNvbG9yLWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW14JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW15JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1zJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1lJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW10JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1yJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1iJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogWydzY3JvbGwtbXInLCAnc2Nyb2xsLW1sJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW15JzogWydzY3JvbGwtbXQnLCAnc2Nyb2xsLW1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXAnOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1weCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1weScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1weCc6IFsnc2Nyb2xsLXByJywgJ3Njcm9sbC1wbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1weSc6IFsnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wYiddLFxuICAgICAgICAgICAgdG91Y2g6IFsndG91Y2gteCcsICd0b3VjaC15JywgJ3RvdWNoLXB6J10sXG4gICAgICAgICAgICAndG91Y2gteCc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC15JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaCddLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6IHtcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgfSxcbiAgICB9IGFzIGNvbnN0IHNhdGlzZmllcyBDb25maWc8RGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzPlxufVxuIiwgImltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbi8qKlxuICogQHBhcmFtIGJhc2VDb25maWcgQ29uZmlnIHdoZXJlIG90aGVyIGNvbmZpZyB3aWxsIGJlIG1lcmdlZCBpbnRvLiBUaGlzIG9iamVjdCB3aWxsIGJlIG11dGF0ZWQuXG4gKiBAcGFyYW0gY29uZmlnRXh0ZW5zaW9uIFBhcnRpYWwgY29uZmlnIHRvIG1lcmdlIGludG8gdGhlIGBiYXNlQ29uZmlnYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlQ29uZmlncyA9IDxDbGFzc0dyb3VwSWRzIGV4dGVuZHMgc3RyaW5nLCBUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXI+KFxuICAgIGJhc2VDb25maWc6IEdlbmVyaWNDb25maWcsXG4gICAge1xuICAgICAgICBjYWNoZVNpemUsXG4gICAgICAgIHByZWZpeCxcbiAgICAgICAgc2VwYXJhdG9yLFxuICAgICAgICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSxcbiAgICAgICAgZXh0ZW5kID0ge30sXG4gICAgICAgIG92ZXJyaWRlID0ge30sXG4gICAgfTogQ29uZmlnRXh0ZW5zaW9uPENsYXNzR3JvdXBJZHMsIFRoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnY2FjaGVTaXplJywgY2FjaGVTaXplKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3ByZWZpeCcsIHByZWZpeClcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdzZXBhcmF0b3InLCBzZXBhcmF0b3IpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUnLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSlcblxuICAgIGZvciAoY29uc3QgY29uZmlnS2V5IGluIG92ZXJyaWRlKSB7XG4gICAgICAgIG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgICAgICBvdmVycmlkZVtjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIGV4dGVuZCkge1xuICAgICAgICBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgICAgIGV4dGVuZFtrZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZUNvbmZpZ1xufVxuXG5jb25zdCBvdmVycmlkZVByb3BlcnR5ID0gPFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBUPihcbiAgICBiYXNlT2JqZWN0OiBULFxuICAgIG92ZXJyaWRlS2V5OiBLLFxuICAgIG92ZXJyaWRlVmFsdWU6IFRbS10gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAob3ZlcnJpZGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJhc2VPYmplY3Rbb3ZlcnJpZGVLZXldID0gb3ZlcnJpZGVWYWx1ZVxuICAgIH1cbn1cblxuY29uc3Qgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgb3ZlcnJpZGVPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAob3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgICAgICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZU9iamVjdCwga2V5LCBvdmVycmlkZU9iamVjdFtrZXldKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5jb25zdCBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBtZXJnZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChtZXJnZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXJnZU9iamVjdCkge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VWYWx1ZSA9IG1lcmdlT2JqZWN0W2tleV1cblxuICAgICAgICAgICAgaWYgKG1lcmdlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGJhc2VPYmplY3Rba2V5XSA9IChiYXNlT2JqZWN0W2tleV0gfHwgW10pLmNvbmNhdChtZXJnZVZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuaW1wb3J0IHsgbWVyZ2VDb25maWdzIH0gZnJvbSAnLi9tZXJnZS1jb25maWdzJ1xuaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHMsIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiBHZW5lcmljQ29uZmlnXG5cbmV4cG9ydCBjb25zdCBleHRlbmRUYWlsd2luZE1lcmdlID0gPFxuICAgIEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbj4oXG4gICAgY29uZmlnRXh0ZW5zaW9uOlxuICAgICAgICB8IENvbmZpZ0V4dGVuc2lvbjxcbiAgICAgICAgICAgICAgRGVmYXVsdENsYXNzR3JvdXBJZHMgfCBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyxcbiAgICAgICAgICAgICAgRGVmYXVsdFRoZW1lR3JvdXBJZHMgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkc1xuICAgICAgICAgID5cbiAgICAgICAgfCBDcmVhdGVDb25maWdTdWJzZXF1ZW50LFxuICAgIC4uLmNyZWF0ZUNvbmZpZzogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pID0+XG4gICAgdHlwZW9mIGNvbmZpZ0V4dGVuc2lvbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZywgY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpXG4gICAgICAgIDogY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICAgICAgICAgICAgKCkgPT4gbWVyZ2VDb25maWdzKGdldERlZmF1bHRDb25maWcoKSwgY29uZmlnRXh0ZW5zaW9uKSxcbiAgICAgICAgICAgICAgLi4uY3JlYXRlQ29uZmlnLFxuICAgICAgICAgIClcbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcblxuZXhwb3J0IGNvbnN0IHR3TWVyZ2UgPSBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcpXG4iLCAiaW1wb3J0IHsgdXNlSXNNdXRhdGluZyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCB7IHR5cGUgQ29sdW1uRGVmIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgRmlsdGVySWNvbiwgTWF4aW1pemUsIE1pbmltaXplLCBQYW5lbExlZnRDbG9zZSwgUGFuZWxMZWZ0T3BlbiwgUmVmcmVzaEN3IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZU51bWJlciB9IGZyb20gXCJtb3Rpb24tcGx1cy9yZWFjdFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHR5cGUgeyBCaWdJbnRTdHJpbmcsIE51bWVyaWNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vZGF0YS90eXBlLXV0aWxzXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IFBvcG92ZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyVHJpZ2dlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3BvcG92ZXJcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtaW5zZXJ0XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZVF1ZXJ5IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtcXVlcnlcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlVXBkYXRlIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtdXBkYXRlXCI7XG5pbXBvcnQgeyB1c2VGaWx0ZXJpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWZpbHRlcmluZ1wiO1xuaW1wb3J0IHsgdXNlSXNJbnNlcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWlzLWluc2VydGluZ1wiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtcGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1zZWxlY3Rpb25cIjtcbmltcG9ydCB7IHVzZVNvcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNvcnRpbmdcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBnZXRDZWxsIH0gZnJvbSBcIi4vY2VsbC9nZXQtY2VsbFwiO1xuaW1wb3J0IHsgU2VsZWN0SGVhZGVyQ2VsbCwgU2VsZWN0SGVhZGVyQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RSb3dDZWxsLCBTZWxlY3RSb3dDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL1NlbGVjdFJvd0NlbGxcIjtcbmltcG9ydCB7IFdyaXRlYWJsZUNlbGwgfSBmcm9tIFwiLi9jZWxsL1dyaXRlYWJsZUNlbGxcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCB7IEZpbHRlclRyZWUgfSBmcm9tIFwiLi9GaWx0ZXJUcmVlXCI7XG5pbXBvcnQgeyBEYXRhR3JpZCB9IGZyb20gXCIuL2dyaWQvRGF0YUdyaWRcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyQ2VsbCB9IGZyb20gXCIuL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBnZXRJbnB1dCB9IGZyb20gXCIuL2lucHV0L2dldC1pbnB1dFwiO1xuaW1wb3J0IHsgU3RhZ2VkUm93cyB9IGZyb20gXCIuL1N0YWdlZFJvd3NcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVUYWJsZVZpZXdQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aXZlVGFibGVWaWV3KF9wcm9wczogQWN0aXZlVGFibGVWaWV3UHJvcHMpIHtcbiAgY29uc3QgaXNNdXRhdGluZyA9IEJvb2xlYW4odXNlSXNNdXRhdGluZygpKTtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciwgaXNGdWxsc2NyZWVuLCB0b2dnbGVGdWxsc2NyZWVuLCB0b2dnbGVOYXZpZ2F0aW9uLCBpc05hdmlnYXRpb25PcGVuIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBzb3J0aW5nU3RhdGUsIHNldFNvcnRpbmdTdGF0ZSB9ID0gdXNlU29ydGluZygpO1xuICBjb25zdCB7IHBhZ2luYXRpb25TdGF0ZSwgc2V0UGFnaW5hdGlvblN0YXRlIH0gPSB1c2VQYWdpbmF0aW9uKCk7XG4gIGNvbnN0IFtzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+KFtdKTtcbiAgY29uc3QgeyBhcHBsaWVkRmlsdGVyLCBzZXRBcHBsaWVkRmlsdGVyLCBlZGl0aW5nRmlsdGVyLCBzZXRFZGl0aW5nRmlsdGVyLCB0b3RhbEVkaXRpbmdGaWx0ZXJzIH0gPSB1c2VGaWx0ZXJpbmcoKTtcblxuICBjb25zdCB7IGRhdGEsIGlzRmV0Y2hpbmcsIHJlZmV0Y2ggfSA9IHVzZUFjdGl2ZVRhYmxlUXVlcnkoe1xuICAgIC4uLnBhZ2luYXRpb25TdGF0ZSxcbiAgICBzb3J0T3JkZXI6IHNvcnRpbmdTdGF0ZSxcbiAgICBmaWx0ZXI6IGFwcGxpZWRGaWx0ZXIsXG4gIH0pO1xuICBjb25zdCB7IGRlbGV0ZVNlbGVjdGlvbiwgaXNTZWxlY3RpbmcsIHJvd1NlbGVjdGlvblN0YXRlLCBzZXRSb3dTZWxlY3Rpb25TdGF0ZSB9ID0gdXNlU2VsZWN0aW9uKGRhdGEpO1xuXG4gIGNvbnN0IHJlYWRvbmx5ID0gIU9iamVjdC52YWx1ZXMoYWN0aXZlVGFibGU/LmNvbHVtbnMgPz8ge30pLnNvbWUoKGNvbHVtbikgPT4gY29sdW1uLmlzSW5QcmltYXJ5S2V5KTtcbiAgY29uc3QgaXNJbnNlcnRpbmcgPSB1c2VJc0luc2VydGluZygpO1xuICBjb25zdCBpbnNlcnQgPSB1c2VBY3RpdmVUYWJsZUluc2VydCgpO1xuICBjb25zdCB1cGRhdGUgPSB1c2VBY3RpdmVUYWJsZVVwZGF0ZSgpO1xuXG4gIC8vIHJlc2V0IGluc2VydFJvd3Mgd2hlbiBhY3RpdmVUYWJsZSBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRTdGFnZWRSb3dzKFtdKSwgW2FjdGl2ZVRhYmxlXSk7XG5cbiAgaWYgKCFhY3RpdmVUYWJsZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZVN0YWdlZFJvd3MoKSB7XG4gICAgaW5zZXJ0Lm11dGF0ZShzdGFnZWRSb3dzLCB7XG4gICAgICBvbkVycm9yLFxuICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICB0b2FzdC5zdWNjZXNzKFwiUm93cyBpbnNlcnRlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgICAgIHNldFN0YWdlZFJvd3MoW10pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5ld1N0YWdlZFJvdygpIHtcbiAgICAvLyBUT0RPOiB0aGUgbmV3IG9iamVjdCBzaG91bGQgaGF2ZSBzb21lIHRoaW5ncyBzZXQgdG8gbnVsbCBpZiB0aGV5J3JlIG51bGxhYmxlIG9yIGhhdmUgYSBkZWZhdWx0IHZhbHVlP1xuICAgIHNldFN0YWdlZFJvd3MoKG9sZCkgPT4gWy4uLm9sZCwge31dKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRyb3BTdGFnZWRSb3dzKCkge1xuICAgIHNldFN0YWdlZFJvd3MoW10pO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlOiB1bmtub3duLCBjb2x1bW46IENvbHVtbiwgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIHVwZGF0ZS5tdXRhdGUoe1xuICAgICAgZGV0YWlsczogeyBjaGFuZ2VzOiB7IFtjb2x1bW4ubmFtZV06IHZhbHVlIH0sIHJvdywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LFxuICAgICAgb3B0aW9uczoge30sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkZpbHRlck9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbikge1xuICAgIGlmIChvcGVuID09PSB0cnVlKSB7XG4gICAgICBzZXRFZGl0aW5nRmlsdGVyKGFwcGxpZWRGaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRBcHBsaWVkRmlsdGVyKGVkaXRpbmdGaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlYWwgY29sdW1uIGRlZmluaXRpb25zIHRoYXQgY29ycmVzcG9uZCB0byBkYXRhYmFzZSBjb2x1bW5zXG4gIGNvbnN0IGNvbmNyZXRlQ29sdW1uRGVmcyA9IE9iamVjdC52YWx1ZXMoYWN0aXZlVGFibGU/LmNvbHVtbnMgPz8ge30pLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjb2x1bW4ubmFtZSxcbiAgICAgIGFjY2Vzc29yS2V5OiBjb2x1bW4ubmFtZSxcbiAgICAgIG1ldGE6IGNvbHVtbixcbiAgICAgIGhlYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIERhdGFHcmlkSGVhZGVyQ2VsbCh7IGNvbHVtbiB9KTtcbiAgICAgIH0sXG4gICAgICBjZWxsKHsgY2VsbCB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4gKFxuICAgICAgICAgIDxXcml0ZWFibGVDZWxsXG4gICAgICAgICAgICBjZWxsQ29tcG9uZW50PXtnZXRDZWxsKHsgY2VsbCwgY29sdW1uLCBwcm9wcyB9KX1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICAgIG9uU3VibWl0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUNlbGxJbnB1dFN1Ym1pdCh2YWx1ZSwgY29sdW1uLCBjZWxsLnJvdy5vcmlnaW5hbCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB9KTtcblxuICAvLyB0aGVzZSBhcmUgY29sdW1ucyB0aGF0IGV4aXN0IHZpcnR1YWxseSBhbmQgYXJlIG5vdCBkYiBjb2x1bW5zXG4gIGNvbnN0IHZpcnR1YWxDb2x1bW5EZWZzID0gW1xuICAgIHtcbiAgICAgIGlkOiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBhY2Nlc3NvcktleTogXCJfX3BzX3NlbGVjdFwiLFxuICAgICAgZW5hYmxlUGlubmluZzogdHJ1ZSxcbiAgICAgIGVuYWJsZVJlc2l6aW5nOiBmYWxzZSxcbiAgICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgICAgZGlzYWJsZURyYWdnaW5nOiB0cnVlLFxuICAgICAgc2l6ZTogNTAsXG4gICAgICBtaW5TaXplOiA1MCxcbiAgICAgIGhlYWRlcih7IHRhYmxlIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxTZWxlY3RIZWFkZXJDZWxsUHJvcHMsIFwidGFibGVcIiB8IFwicmVhZG9ubHlcIj4pID0+IChcbiAgICAgICAgICA8U2VsZWN0SGVhZGVyQ2VsbCB0YWJsZT17dGFibGV9IHJlYWRvbmx5PXtyZWFkb25seX0gey4uLnByb3BzfSAvPlxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyByb3cgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PFNlbGVjdFJvd0NlbGxQcm9wcywgXCJyb3dcIiB8IFwicmVhZG9ubHlcIj4pID0+IHtcbiAgICAgICAgICByZXR1cm4gPFNlbGVjdFJvd0NlbGwgcm93PXtyb3d9IHJlYWRvbmx5PXtyZWFkb25seX0gey4uLnByb3BzfSAvPjtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXSBzYXRpc2ZpZXMgKENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gJiB7IGRpc2FibGVEcmFnZ2luZz86IGJvb2xlYW4gfSlbXTtcblxuICBjb25zdCBjb2x1bW5EZWZzID0gWy4uLmNvbmNyZXRlQ29sdW1uRGVmcywgLi4udmlydHVhbENvbHVtbkRlZnNdLnNvcnQoZGVmYXVsdENvbHVtblNvcnRpbmcpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtYmctc3R1ZGlvLWhlYWRlci1iYWNrZ3JvdW5kIHBzLWZsZXggcHMtdy1mdWxsIHBzLXAtMiBwcy1weS0zIHBzLWJvcmRlci1iIHBzLWJnLWNhcmQgcHMtcm91bmRlZC10LWxnXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbCBwcy1nYXAtMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWdyb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17dG9nZ2xlTmF2aWdhdGlvbn0+XG4gICAgICAgICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gPyA8UGFuZWxMZWZ0Q2xvc2UgLz4gOiA8UGFuZWxMZWZ0T3BlbiAvPn1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxQb3BvdmVyIG9uT3BlbkNoYW5nZT17b25GaWx0ZXJPcGVuQ2hhbmdlfT5cbiAgICAgICAgICAgICAgICA8UG9wb3ZlclRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBjbGFzc05hbWU9e2NuKHRvdGFsRWRpdGluZ0ZpbHRlcnMgPiAwICYmIFwicHMtYm9yZGVyLXByaW1hcnlcIil9PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAge3RvdGFsRWRpdGluZ0ZpbHRlcnMgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuaW1hdGVOdW1iZXIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVyc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBhbGlnbj1cInN0YXJ0XCIgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInBzLXctbWluIHBzLW1heC1oLVs1MjBweF0gcHMtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICA8RmlsdGVyVHJlZVxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI9e2VkaXRpbmdGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICAgIHNldEZpbHRlcj17c2V0RWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXRpbmdGaWx0ZXIoZmlsdGVyKTsgLy8gVXBkYXRlIHRoZSBlZGl0aW5nIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGFwcGxpZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgdGFibGU9e2FjdGl2ZVRhYmxlfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJDb250ZW50PlxuICAgICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtuZXdTdGFnZWRSb3d9IGRpc2FibGVkPXtpc0luc2VydGluZyA+IDB9PlxuICAgICAgICAgICAgICAgIEluc2VydCByb3dcbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIHtzdGFnZWRSb3dzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtzYXZlU3RhZ2VkUm93c30+XG4gICAgICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgey8qIE5lZWRzIHNvbWUgaW1wcm92ZW1lbnQgKi99XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2Ryb3BTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzU2VsZWN0aW5nICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZGVsZXRlU2VsZWN0aW9ufT5cbiAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9eygpID0+IHZvaWQgcmVmZXRjaCgpfSBkaXNhYmxlZD17aXNGZXRjaGluZ30+XG4gICAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9e2NuKFwicHMtaC00IHBzLXctNFwiLCBpc0ZldGNoaW5nICYmIFwicHMtYW5pbWF0ZS1zcGluXCIpfSAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17dG9nZ2xlRnVsbHNjcmVlbn0+XG4gICAgICAgICAgICAgICAge2lzRnVsbHNjcmVlbiA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxEYXRhR3JpZFxuICAgICAgICBjb2x1bW5EZWZzPXtjb2x1bW5EZWZzfVxuICAgICAgICBnZXRCZWZvcmVSb3dzPXsodGFibGUpID0+IDxTdGFnZWRSb3dzIHsuLi57IHRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH19IC8+fVxuICAgICAgICBpc0xvYWRpbmc9e2lzRmV0Y2hpbmd9XG4gICAgICAgIGlzUHJvY2Vzc2luZz17aXNNdXRhdGluZ31cbiAgICAgICAgb25QYWdpbmF0aW9uQ2hhbmdlPXtzZXRQYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlPXtzZXRSb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgb25Tb3J0aW5nQ2hhbmdlPXtzZXRTb3J0aW5nU3RhdGV9XG4gICAgICAgIHBhZ2VDb3VudD17Z2V0UGFnZUNvdW50KGRhdGE/LmZpbHRlcmVkUm93Q291bnQgPz8gSW5maW5pdHksIHBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSl9XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZT17cGFnaW5hdGlvblN0YXRlfVxuICAgICAgICByb3dzPXtkYXRhPy5yb3dzID8/IFtdfVxuICAgICAgICByb3dTZWxlY3Rpb25TdGF0ZT17cm93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIHNvcnRpbmdTdGF0ZT17c29ydGluZ1N0YXRlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFnZUNvdW50KHJvd0NvdW50OiBudW1iZXIgfCBiaWdpbnQgfCBOdW1lcmljU3RyaW5nIHwgQmlnSW50U3RyaW5nLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJvd0NvdW50ID09PSBJbmZpbml0eSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VDb3VudCA9IE51bWJlcigoQmlnSW50KHJvd0NvdW50KSArIEJpZ0ludChwYWdlU2l6ZSkgLSBCaWdJbnQoMSkpIC8gQmlnSW50KHBhZ2VTaXplKSk7XG5cbiAgcmV0dXJuIE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhZ2VDb3VudCkgPyBwYWdlQ291bnQgOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENvbHVtblNvcnRpbmcoYTogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiwgYjogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pikge1xuICBjb25zdCBhTWV0YSA9IGEubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGJNZXRhID0gYi5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcblxuICBpZiAoYS5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiIHx8IGIuaWQgPT09IFwiX19wc19zZWxlY3RcIikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaWYgKGFNZXRhID09PSB1bmRlZmluZWQgfHwgYk1ldGEgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAwOyAvLyBjYW4ndCBiZSBjb21wYXJlZCwgc2hvdWxkbid0IGhhcHBlblxuICB9XG5cbiAgaWYgKGFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmICFiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoIWFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmIGJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gYU1ldGEubmFtZS5sb2NhbGVDb21wYXJlKGJNZXRhLm5hbWUpO1xufVxuIiwgImltcG9ydCB7IENhbWVsVG9QYXNjYWwgfSBmcm9tICcuL3V0aWxpdHktdHlwZXMnO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBrZWJhYiBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBrZWJhYml6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0tlYmFiQ2FzZSA9IChzdHJpbmc6IHN0cmluZykgPT5cbiAgc3RyaW5nLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGNhbWVsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGNhbWVsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvQ2FtZWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCkgPT5cbiAgc3RyaW5nLnJlcGxhY2UoL14oW0EtWl0pfFtcXHMtX10rKFxcdykvZywgKG1hdGNoLCBwMSwgcDIpID0+XG4gICAgcDIgPyBwMi50b1VwcGVyQ2FzZSgpIDogcDEudG9Mb3dlckNhc2UoKSxcbiAgKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gcGFzY2FsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHBhc2NhbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b1Bhc2NhbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKTogQ2FtZWxUb1Bhc2NhbDxUPiA9PiB7XG4gIGNvbnN0IGNhbWVsQ2FzZSA9IHRvQ2FtZWxDYXNlKHN0cmluZyk7XG5cbiAgcmV0dXJuIChjYW1lbENhc2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjYW1lbENhc2Uuc2xpY2UoMSkpIGFzIENhbWVsVG9QYXNjYWw8VD47XG59O1xuXG4vKipcbiAqIE1lcmdlcyBjbGFzc2VzIGludG8gYSBzaW5nbGUgc3RyaW5nXG4gKlxuICogQHBhcmFtIHthcnJheX0gY2xhc3Nlc1xuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmcgb2YgY2xhc3Nlc1xuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc2VzID0gPENsYXNzVHlwZSA9IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KC4uLmNsYXNzZXM6IENsYXNzVHlwZVtdKSA9PlxuICBjbGFzc2VzXG4gICAgLmZpbHRlcigoY2xhc3NOYW1lLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIEJvb2xlYW4oY2xhc3NOYW1lKSAmJlxuICAgICAgICAoY2xhc3NOYW1lIGFzIHN0cmluZykudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICBhcnJheS5pbmRleE9mKGNsYXNzTmFtZSkgPT09IGluZGV4XG4gICAgICApO1xuICAgIH0pXG4gICAgLmpvaW4oJyAnKVxuICAgIC50cmltKCk7XG4iLCAiZXhwb3J0IGRlZmF1bHQge1xuICB4bWxuczogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgd2lkdGg6IDI0LFxuICBoZWlnaHQ6IDI0LFxuICB2aWV3Qm94OiAnMCAwIDI0IDI0JyxcbiAgZmlsbDogJ25vbmUnLFxuICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICBzdHJva2VXaWR0aDogMixcbiAgc3Ryb2tlTGluZWNhcDogJ3JvdW5kJyxcbiAgc3Ryb2tlTGluZWpvaW46ICdyb3VuZCcsXG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVmYXVsdEF0dHJpYnV0ZXMgZnJvbSAnLi9kZWZhdWx0QXR0cmlidXRlcyc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcyB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcblxuaW50ZXJmYWNlIEljb25Db21wb25lbnRQcm9wcyBleHRlbmRzIEx1Y2lkZVByb3BzIHtcbiAgaWNvbk5vZGU6IEljb25Ob2RlO1xufVxuXG4vKipcbiAqIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICpcbiAqIEBjb21wb25lbnQgSWNvblxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY29sb3IgLSBUaGUgY29sb3Igb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zaXplIC0gVGhlIHNpemUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zdHJva2VXaWR0aCAtIFRoZSBzdHJva2Ugd2lkdGggb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuYWJzb2x1dGVTdHJva2VXaWR0aCAtIFdoZXRoZXIgdG8gdXNlIGFic29sdXRlIHN0cm9rZSB3aWR0aFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNsYXNzTmFtZSAtIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5jaGlsZHJlbiAtIFRoZSBjaGlsZHJlbiBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuaWNvbk5vZGUgLSBUaGUgaWNvbiBub2RlIG9mIHRoZSBpY29uXG4gKlxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgSWNvbiA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvbkNvbXBvbmVudFByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzaXplID0gMjQsXG4gICAgICBzdHJva2VXaWR0aCA9IDIsXG4gICAgICBhYnNvbHV0ZVN0cm9rZVdpZHRoLFxuICAgICAgY2xhc3NOYW1lID0gJycsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgLi4ucmVzdFxuICAgIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAgICdzdmcnLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIC4uLmRlZmF1bHRBdHRyaWJ1dGVzLFxuICAgICAgICB3aWR0aDogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLFxuICAgICAgICBzdHJva2U6IGNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aDogYWJzb2x1dGVTdHJva2VXaWR0aCA/IChOdW1iZXIoc3Ryb2tlV2lkdGgpICogMjQpIC8gTnVtYmVyKHNpemUpIDogc3Ryb2tlV2lkdGgsXG4gICAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKCdsdWNpZGUnLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgLi4uaWNvbk5vZGUubWFwKChbdGFnLCBhdHRyc10pID0+IGNyZWF0ZUVsZW1lbnQodGFnLCBhdHRycykpLFxuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pLFxuICAgICAgXSxcbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzLCB0b0tlYmFiQ2FzZSB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcblxuLyoqXG4gKiBDcmVhdGUgYSBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpY29uTmFtZVxuICogQHBhcmFtIHthcnJheX0gaWNvbk5vZGVcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IGNyZWF0ZUx1Y2lkZUljb24gPSAoaWNvbk5hbWU6IHN0cmluZywgaWNvbk5vZGU6IEljb25Ob2RlKSA9PiB7XG4gIGNvbnN0IENvbXBvbmVudCA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgTHVjaWRlUHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PlxuICAgIGNyZWF0ZUVsZW1lbnQoSWNvbiwge1xuICAgICAgcmVmLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcyhgbHVjaWRlLSR7dG9LZWJhYkNhc2UoaWNvbk5hbWUpfWAsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KSxcbiAgKTtcblxuICBDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgJHtpY29uTmFtZX1gO1xuXG4gIHJldHVybiBDb21wb25lbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVMdWNpZGVJY29uO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dEb3duV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBeE5pQTBJRFFnTkMwMElpQXZQZ29nSUR4d1lYUm9JR1E5SWswM0lESXdWalFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURSb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRGhvTnlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9OQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93RG93bldpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd0Rvd25XaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyAxNiA0IDQgNC00Jywga2V5OiAnMWNvNndqJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgMjBWNCcsIGtleTogJzF5b3hlYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA0aDEwJywga2V5OiAnMXc4N2djJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDhoNycsIGtleTogJ2RqeWUzNCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmg0Jywga2V5OiAncTh0aWg0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd0Rvd25XaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dVcFdpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QTRJRFF0TkNBMElEUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUY2dOSFl4TmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURFMmFEY2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREl3YURRaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LXVwLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dVcFdpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd1VwV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgOCA0LTQgNCA0Jywga2V5OiAnMTF3bDd1JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgNHYxNicsIGtleTogJzFnbGZjeCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmgxMCcsIGtleTogJzE0MzhqaScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxNmg3Jywga2V5OiAndW9zaXN2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDIwaDQnLCBrZXk6ICcxa3JjMzInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93VXBXaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2FsZW5kYXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXlkalFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEUySURKMk5DSWdMejRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqUWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWsweklERXdhREU0SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2FsZW5kYXJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDYWxlbmRhciA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NhbGVuZGFyJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAydjQnLCBrZXk6ICcxY21weW0nIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMnY0Jywga2V5OiAnNG04MXZrJyB9XSxcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICc0Jywgcng6ICcyJywga2V5OiAnMWhvcGN5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTBoMTgnLCBrZXk6ICc4dG9lbjgnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENhbGVuZGFyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hlY2tcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOaUE1SURFM2JDMDFMVFVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hlY2tcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGVjayA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZWNrJywgW1sncGF0aCcsIHsgZDogJ00yMCA2IDkgMTdsLTUtNScsIGtleTogJzFnbWYyYycgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2s7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBNUlEWWdOaUEyTFRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tZG93blxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25Eb3duID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkRvd24nLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDkgNiA2IDYtNicsIGtleTogJ3FydW5zbCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkRvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVZ01UZ3ROaTAySURZdE5pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25MZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTUgMTgtNi02IDYtNicsIGtleTogJzF3bmZnMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE9TQXhPQ0EyTFRZdE5pMDJJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblJpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblJpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtOSAxOCA2LTYtNi02Jywga2V5OiAnbXRoaHdxJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVFV0TmkwMkxUWWdOaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi11cFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25VcCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25VcCcsIFtbJ3BhdGgnLCB7IGQ6ICdtMTggMTUtNi02LTYgNicsIGtleTogJzE1M3VkeicgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblVwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNMZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVEVnTVRjdE5TMDFJRFV0TlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UY3ROUzAxSURVdE5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNMZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNMZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTEgMTctNS01IDUtNScsIGtleTogJzEzemhhZicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xOCAxNy01LTUgNS01Jywga2V5OiAnaDhhOGV0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc0xlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUF4TnlBMUxUVXROUzAxSWlBdlBnb2dJRHh3WVhSb0lHUTlJbTB4TXlBeE55QTFMVFV0TlMwMUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNSaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDE3IDUtNS01LTUnLCBrZXk6ICd4bmp3cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMyAxNyA1LTUtNS01Jywga2V5OiAnMTd4bW1mJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlQWxlcnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGJHbHVaU0I0TVQwaU1USWlJSGd5UFNJeE1pSWdlVEU5SWpnaUlIa3lQU0l4TWlJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRJaUlIZ3lQU0l4TWk0d01TSWdlVEU5SWpFMklpQjVNajBpTVRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1hbGVydFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZUFsZXJ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlQWxlcnQnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxMicsIHgyOiAnMTInLCB5MTogJzgnLCB5MjogJzEyJywga2V5OiAnMXBrZXVoJyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzEyJywgeDI6ICcxMi4wMScsIHkxOiAnMTYnLCB5MjogJzE2Jywga2V5OiAnNGRmcTkwJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVBbGVydDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZUhlbHBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TNHdPU0E1WVRNZ015QXdJREFnTVNBMUxqZ3pJREZqTUNBeUxUTWdNeTB6SURNaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeUlERTNhQzR3TVNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1oZWxwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlSGVscCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZUhlbHAnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgMycsIGtleTogJzF1NzczcycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN2guMDEnLCBrZXk6ICdwMzJwMDUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZUhlbHA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGUgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGUnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29weVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UUWlJR2hsYVdkb2REMGlNVFFpSUhnOUlqZ2lJSGs5SWpnaUlISjRQU0l5SWlCeWVUMGlNaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5OQ0F4Tm1NdE1TNHhJREF0TWkwdU9TMHlMVEpXTkdNd0xURXVNUzQ1TFRJZ01pMHlhREV3WXpFdU1TQXdJRElnTGprZ01pQXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3B5XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29weSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NvcHknLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxNCcsIGhlaWdodDogJzE0JywgeDogJzgnLCB5OiAnOCcsIHJ4OiAnMicsIHJ5OiAnMicsIGtleTogJzE3anllYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ000IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDInLCBrZXk6ICd6aXg5dWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcHk7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3JuZXJEb3duTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXeHBibVVnY0c5cGJuUnpQU0k1SURFd0lEUWdNVFVnT1NBeU1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOSFkzWVRRZ05DQXdJREFnTVMwMElEUklOQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29ybmVyLWRvd24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcm5lckRvd25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ29ybmVyRG93bkxlZnQnLCBbXG4gIFsncG9seWxpbmUnLCB7IHBvaW50czogJzkgMTAgNCAxNSA5IDIwJywga2V5OiAncjNqcHJ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDQnLCBrZXk6ICc2bzViN2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcm5lckRvd25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgRmlsdGVyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVdkdmJpQndiMmx1ZEhNOUlqSXlJRE1nTWlBeklERXdJREV5TGpRMklERXdJREU1SURFMElESXhJREUwSURFeUxqUTJJREl5SURNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2ZpbHRlclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEZpbHRlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ0ZpbHRlcicsIFtcbiAgWydwb2x5Z29uJywgeyBwb2ludHM6ICcyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzJywga2V5OiAnMXlnNzdmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBHcmlwVmVydGljYWxcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSTVJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpVaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJakU1SWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlNVFVpSUdONVBTSTFJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1Ua2lJSEk5SWpFaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2dyaXAtdmVydGljYWxcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBHcmlwVmVydGljYWwgPSBjcmVhdGVMdWNpZGVJY29uKCdHcmlwVmVydGljYWwnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdmN0Z2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICdocDB0Y2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZmtqamY2JyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdG1haWonIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnMTlsMjhlJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdmNHpvajMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdyaXBWZXJ0aWNhbDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEhhc2hcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGJHbHVaU0I0TVQwaU5DSWdlREk5SWpJd0lpQjVNVDBpT1NJZ2VUSTlJamtpSUM4K0NpQWdQR3hwYm1VZ2VERTlJalFpSUhneVBTSXlNQ0lnZVRFOUlqRTFJaUI1TWowaU1UVWlJQzgrQ2lBZ1BHeHBibVVnZURFOUlqRXdJaUI0TWowaU9DSWdlVEU5SWpNaUlIa3lQU0l5TVNJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRZaUlIZ3lQU0l4TkNJZ2VURTlJak1pSUhreVBTSXlNU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvaGFzaFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEhhc2ggPSBjcmVhdGVMdWNpZGVJY29uKCdIYXNoJywgW1xuICBbJ2xpbmUnLCB7IHgxOiAnNCcsIHgyOiAnMjAnLCB5MTogJzknLCB5MjogJzknLCBrZXk6ICc0bGh0Y3QnIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnNCcsIHgyOiAnMjAnLCB5MTogJzE1JywgeTI6ICcxNScsIGtleTogJ3Z5dTBrZCcgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxMCcsIHgyOiAnOCcsIHkxOiAnMycsIHkyOiAnMjEnLCBrZXk6ICcxZ2dwOG8nIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnMTYnLCB4MjogJzE0JywgeTE6ICczJywgeTI6ICcyMScsIGtleTogJ3dleWNncCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgSGFzaDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVJvdW5kXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaTQxT0RZZ01UY3VOREUwUVRJZ01pQXdJREFnTUNBeUlERTRMamd5T0ZZeU1XRXhJREVnTUNBd0lEQWdNU0F4YUROaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhREZoTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFDNHhOekpoTWlBeUlEQWdNQ0F3SURFdU5ERTBMUzQxT0Rac0xqZ3hOQzB1T0RFMFlUWXVOU0EyTGpVZ01DQXhJREF0TkMwMGVpSWdMejRLSUNBOFkybHlZMnhsSUdONFBTSXhOaTQxSWlCamVUMGlOeTQxSWlCeVBTSXVOU0lnWm1sc2JEMGlZM1Z5Y21WdWRFTnZiRzl5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMva2V5LXJvdW5kXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgS2V5Um91bmQgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXlSb3VuZCcsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIuNTg2IDE3LjQxNEEyIDIgMCAwIDAgMiAxOC44MjhWMjFhMSAxIDAgMCAwIDEgMWgzYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWguMTcyYTIgMiAwIDAgMCAxLjQxNC0uNTg2bC44MTQtLjgxNGE2LjUgNi41IDAgMSAwLTQtNHonLFxuICAgICAga2V5OiAnMXM2dDd0JyxcbiAgICB9LFxuICBdLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNi41JywgY3k6ICc3LjUnLCByOiAnLjUnLCBmaWxsOiAnY3VycmVudENvbG9yJywga2V5OiAndzBla3BnJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBLZXlSb3VuZDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVdU5TQTNMalVnTWk0eklESXVNMkV4SURFZ01DQXdJREFnTVM0MElEQnNNaTR4TFRJdU1XRXhJREVnTUNBd0lEQWdNQzB4TGpSTU1Ua2dOQ0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNakVnTWkwNUxqWWdPUzQySWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpjdU5TSWdZM2s5SWpFMUxqVWlJSEk5SWpVdU5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXkgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXknLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNS41IDcuNSAyLjMgMi4zYTEgMSAwIDAgMCAxLjQgMGwyLjEtMi4xYTEgMSAwIDAgMCAwLTEuNEwxOSA0Jywga2V5OiAnZzBmbGRrJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTIxIDItOS42IDkuNicsIGtleTogJzFqMGhvOCcgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzcuNScsIGN5OiAnMTUuNScsIHI6ICc1LjUnLCBrZXk6ICd5cWIzaHInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1haWxcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNakFpSUdobGFXZG9kRDBpTVRZaUlIZzlJaklpSUhrOUlqUWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weU1pQTNMVGd1T1RjZ05TNDNZVEV1T1RRZ01TNDVOQ0F3SURBZ01TMHlMakEySURCTU1pQTNJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tYWlsXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWFpbCA9IGNyZWF0ZUx1Y2lkZUljb24oJ01haWwnLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcyMCcsIGhlaWdodDogJzE2JywgeDogJzInLCB5OiAnNCcsIHJ4OiAnMicsIGtleTogJzE4bjNrMScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yMiA3LTguOTcgNS43YTEuOTQgMS45NCAwIDAgMS0yLjA2IDBMMiA3Jywga2V5OiAnMW9jcmczJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNYWlsO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWF4aW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWXpJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0VmpWaE1pQXlJREFnTUNBd0xUSXRNbWd0TXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5uWXpZVElnTWlBd0lEQWdNQ0F5SURKb015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakZvTTJFeUlESWdNQ0F3SURBZ01pMHlkaTB6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWF4aW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNYXhpbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01heGltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzSDVhMiAyIDAgMCAwLTIgMnYzJywga2V5OiAnMWRjbWl0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhWNWEyIDIgMCAwIDAtMi0yaC0zJywga2V5OiAnMWU0Z3QzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZ2M2EyIDIgMCAwIDAgMiAyaDMnLCBrZXk6ICd3c2w1c2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjFoM2EyIDIgMCAwIDAgMi0ydi0zJywga2V5OiAnMTh0cmVrJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNYXhpbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1pbmltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6ZGpOaE1pQXlJREFnTUNBeExUSWdNa2d6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNGFDMHpZVElnTWlBd0lEQWdNUzB5TFRKV015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObWd6WVRJZ01pQXdJREFnTVNBeUlESjJNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGMkxUTmhNaUF5SURBZ01DQXhJREl0TW1neklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21pbmltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWluaW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNaW5pbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM3YzYTIgMiAwIDAgMS0yIDJIMycsIGtleTogJ2hvaGJ0cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4aC0zYTIgMiAwIDAgMS0yLTJWMycsIGtleTogJzVqdzFmMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2aDNhMiAyIDAgMCAxIDIgMnYzJywga2V5OiAnMTk4dHZyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxdi0zYTIgMiAwIDAgMSAyLTJoMycsIGtleTogJ3BoOG14cCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWluaW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE9Fd3hNaUF5TWt3eE5pQXhPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVEb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxOEwxMiAyMkwxNiAxOCcsIGtleTogJ2Nza3ZmdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVVcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBMlRERXlJREpNTVRZZ05pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlVXAnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDZMMTIgMkwxNiA2Jywga2V5OiAnMXl2a3l4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVVcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdENsb3NlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMklERTFMVE10TXlBekxUTWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0Q2xvc2UgPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRDbG9zZScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNiAxNS0zLTMgMy0zJywga2V5OiAnMTR5OTl6JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRDbG9zZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdE9wZW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUwSURrZ015QXpMVE1nTXlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtb3BlblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdE9wZW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRPcGVuJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE0IDkgMyAzLTMgMycsIGtleTogJzgwMTBlZScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0T3BlbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBob25lXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaklnTVRZdU9USjJNMkV5SURJZ01DQXdJREV0TWk0eE9DQXlJREU1TGpjNUlERTVMamM1SURBZ01DQXhMVGd1TmpNdE15NHdOeUF4T1M0MUlERTVMalVnTUNBd0lERXROaTAySURFNUxqYzVJREU1TGpjNUlEQWdNQ0F4TFRNdU1EY3RPQzQyTjBFeUlESWdNQ0F3SURFZ05DNHhNU0F5YUROaE1pQXlJREFnTUNBeElESWdNUzQzTWlBeE1pNDROQ0F4TWk0NE5DQXdJREFnTUNBdU55QXlMamd4SURJZ01pQXdJREFnTVMwdU5EVWdNaTR4TVV3NExqQTVJRGt1T1RGaE1UWWdNVFlnTUNBd0lEQWdOaUEyYkRFdU1qY3RNUzR5TjJFeUlESWdNQ0F3SURFZ01pNHhNUzB1TkRVZ01USXVPRFFnTVRJdU9EUWdNQ0F3SURBZ01pNDRNUzQzUVRJZ01pQXdJREFnTVNBeU1pQXhOaTQ1TW5vaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bob25lXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGhvbmUgPSBjcmVhdGVMdWNpZGVJY29uKCdQaG9uZScsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6JyxcbiAgICAgIGtleTogJ2ZvaXFyNScsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaG9uZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpbk9mZlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFVnT1M0ek5GWTNZVEVnTVNBd0lEQWdNU0F4TFRFZ01pQXlJREFnTUNBd0lEQXRORWczTGpnNUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weUlESWdNakFnTWpBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRrZ09YWXhMamMyWVRJZ01pQXdJREFnTVMweExqRXhJREV1Tnpsc0xURXVOemd1T1VFeUlESWdNQ0F3SURBZ05TQXhOUzR5TkZZeE5tRXhJREVnTUNBd0lEQWdNU0F4YURFeElpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bpbi1vZmZcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW5PZmYgPSBjcmVhdGVMdWNpZGVJY29uKCdQaW5PZmYnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE1IDkuMzRWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRINy44OScsIGtleTogJ3pud256cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yIDIgMjAgMjAnLCBrZXk6ICcxb29ld3knIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSA5djEuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTEnLFxuICAgICAga2V5OiAnYzlxaG0yJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbk9mZjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PU0F4TUM0M05tRXlJRElnTUNBd0lERXRNUzR4TVNBeExqYzViQzB4TGpjNExqbEJNaUF5SURBZ01DQXdJRFVnTVRVdU1qUldNVFpoTVNBeElEQWdNQ0F3SURFZ01XZ3hNbUV4SURFZ01DQXdJREFnTVMweGRpMHVOelpoTWlBeUlEQWdNQ0F3TFRFdU1URXRNUzQzT1d3dE1TNDNPQzB1T1VFeUlESWdNQ0F3SURFZ01UVWdNVEF1TnpaV04yRXhJREVnTUNBd0lERWdNUzB4SURJZ01pQXdJREFnTUNBd0xUUklPR0V5SURJZ01DQXdJREFnTUNBMElERWdNU0F3SURBZ01TQXhJREY2SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluID0gY3JlYXRlTHVjaWRlSWNvbignUGluJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDEwLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LS43NmEyIDIgMCAwIDAtMS4xMS0xLjc5bC0xLjc4LS45QTIgMiAwIDAgMSAxNSAxMC43NlY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg4YTIgMiAwIDAgMCAwIDQgMSAxIDAgMCAxIDEgMXonLFxuICAgICAga2V5OiAnMW5rejhiJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFJlZnJlc2hDd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE1tRTVJRGtnTUNBd0lERWdPUzA1SURrdU56VWdPUzQzTlNBd0lEQWdNU0EyTGpjMElESXVOelJNTWpFZ09DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qRWdNM1kxYUMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQXhNbUU1SURrZ01DQXdJREV0T1NBNUlEa3VOelVnT1M0M05TQXdJREFnTVMwMkxqYzBMVEl1TnpSTU15QXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5PQ0F4TmtnemRqVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9yZWZyZXNoLWN3XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUmVmcmVzaEN3ID0gY3JlYXRlTHVjaWRlSWNvbignUmVmcmVzaEN3JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOCcsIGtleTogJ3Y5aDV2YycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAzdjVoLTUnLCBrZXk6ICcxcTd0bzAnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTYnLCBrZXk6ICczdWlmbDMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxNkgzdjUnLCBrZXk6ICcxY3Y2NzgnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnJlc2hDdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFRhYmxlMlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT1NBelNEVmhNaUF5SURBZ01DQXdMVElnTW5ZMGJUWXRObWd4TUdFeUlESWdNQ0F3SURFZ01pQXlkalJOT1NBemRqRTRiVEFnTUdneE1HRXlJRElnTUNBd0lEQWdNaTB5VmpsTk9TQXlNVWcxWVRJZ01pQXdJREFnTVMweUxUSldPVzB3SURCb01UZ2lJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy90YWJsZS0yXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgVGFibGUyID0gY3JlYXRlTHVjaWRlSWNvbignVGFibGUyJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAzSDVhMiAyIDAgMCAwLTIgMnY0bTYtNmgxMGEyIDIgMCAwIDEgMiAydjRNOSAzdjE4bTAgMGgxMGEyIDIgMCAwIDAgMi0yVjlNOSAyMUg1YTIgMiAwIDAgMS0yLTJWOW0wIDBoMTgnLFxuICAgICAga2V5OiAnZ3VnajgzJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlMjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFVzZXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1Ua2dNakYyTFRKaE5DQTBJREFnTUNBd0xUUXRORWc1WVRRZ05DQXdJREFnTUMwMElEUjJNaUlnTHo0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJamNpSUhJOUlqUWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy91c2VyXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgVXNlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ1VzZXInLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyJywga2V5OiAnOTc1a2VsJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzcnLCByOiAnNCcsIGtleTogJzE3eXMwZCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgVXNlcjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFhcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1UZ2dOaUEySURFNElpQXZQZ29nSUR4d1lYUm9JR1E5SW0wMklEWWdNVElnTVRJaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3hcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBYID0gY3JlYXRlTHVjaWRlSWNvbignWCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTE4IDYgNiAxOCcsIGtleTogJzFibDVmOCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ202IDYgMTIgMTInLCBrZXk6ICdkOGJrNnYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFg7XG4iLCAiaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBiYWRnZVZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1weC0yLjUgcHMtcHktMC41IHBzLXRleHQteHMgcHMtZm9udC1zZW1pYm9sZCBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0yIGZvY3VzOnBzLXJpbmctcmluZyBmb2N1czpwcy1yaW5nLW9mZnNldC0yXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzgwXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgIFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvODBcIixcbiAgICAgICAgb3V0bGluZTogXCJwcy10ZXh0LWZvcmVncm91bmRcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhZGdlUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIFZhcmlhbnRQcm9wczx0eXBlb2YgYmFkZ2VWYXJpYW50cz4ge31cblxuZnVuY3Rpb24gQmFkZ2UoeyBjbGFzc05hbWUsIHZhcmlhbnQsIC4uLnByb3BzIH06IEJhZGdlUHJvcHMpIHtcbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbihiYWRnZVZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgQmFkZ2UsIGJhZGdlVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJ1dHRvblZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1nYXAtMiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvOTBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6IFwicHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS85MFwiLFxuICAgICAgICBvdXRsaW5lOlxuICAgICAgICAgIFwicHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBnaG9zdDogXCJob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBsaW5rOiBcInBzLXRleHQtcHJpbWFyeSBwcy11bmRlcmxpbmUtb2Zmc2V0LTQgaG92ZXI6cHMtdW5kZXJsaW5lXCIsXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWgtOSBwcy1weC00IHBzLXB5LTJcIixcbiAgICAgICAgeHM6IFwicHMtaC02IHBzLXJvdW5kZWQtbWQgcHMtcHgtMiBwcy10ZXh0LXhzXCIsXG4gICAgICAgIHNtOiBcInBzLWgtOCBwcy1yb3VuZGVkLW1kIHBzLXB4LTMgcHMtdGV4dC14c1wiLFxuICAgICAgICBsZzogXCJwcy1oLTEwIHBzLXJvdW5kZWQtbWQgcHMtcHgtOFwiLFxuICAgICAgICBpY29uOiBcInBzLWgtOSBwcy13LTlcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgICAgc2l6ZTogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uUHJvcHNcbiAgZXh0ZW5kcyBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz4ge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQnV0dG9uUHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIHZhcmlhbnQsIHNpemUsIGFzQ2hpbGQgPSBmYWxzZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcbiAgICByZXR1cm4gPENvbXAgY2xhc3NOYW1lPXtjbihidXR0b25WYXJpYW50cyh7IHZhcmlhbnQsIHNpemUsIGNsYXNzTmFtZSB9KSl9IHJlZj17cmVmfSB7Li4ucHJvcHN9IC8+O1xuICB9LFxuKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbiwgYnV0dG9uVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFBvcG92ZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFBvcG92ZXJUcmlnZ2VyID0gUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBQb3BvdmVyQW5jaG9yID0gUG9wb3ZlclByaW1pdGl2ZS5BbmNob3I7XG5cbmNvbnN0IFBvcG92ZXJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtdy03MiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtNCBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtcG9wb3Zlci1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFBvcG92ZXIsIFBvcG92ZXJUcmlnZ2VyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlckFuY2hvciB9O1xuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgYWRkUm93SWRUb1Jlc3VsdCB9IGZyb20gXCIuL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZUluc2VydCgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiaW5zZXJ0XCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5pbnNlcnQoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWRkUm93SWRUb1Jlc3VsdChyZXN1bHQsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MobmV3RGF0YSkge1xuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGE8QWRhcHRlclF1ZXJ5UmVzdWx0PihcbiAgICAgICAge1xuICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAvLyBoZXJlIHdlIHBhcnRpYWxseSBtYXRjaCB0aGUgcXVlcnkga2V5IHRvIGdldCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICAgIH0sXG4gICAgICAgIChvbGREYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKG9sZERhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG9sZERhdGE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9sZERhdGEsXG4gICAgICAgICAgICByb3dzOiBbLi4ubmV3RGF0YS5yb3dzLCAuLi5vbGREYXRhLnJvd3NdLFxuICAgICAgICAgIH0gc2F0aXNmaWVzIEFkYXB0ZXJRdWVyeVJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IGluZmVyUm93RmlsdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuZnVuY3Rpb24gZ2V0Um93SWQocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IGlkID0ge1xuICAgIGZpbHRlcjogaW5mZXJSb3dGaWx0ZXIocm93LCB0YWJsZS5jb2x1bW5zKSxcbiAgICB0YWJsZTogYCR7dGFibGUuc2NoZW1hfS4ke3RhYmxlLm5hbWV9YCxcbiAgfTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaWQpO1xufVxuXG5mdW5jdGlvbiBhZGRSb3dJZFRvUm93KHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRhYmxlOiBUYWJsZSkge1xuICByZXR1cm4geyAuLi5yb3csIF9fcHNfcm93aWQ6IGdldFJvd0lkKHJvdywgdGFibGUpIH07XG59XG5cbnR5cGUgQWRhcHRlclJlc3VsdCA9IHtcbiAgcm93PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJvd3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJvd0lkVG9SZXN1bHQ8VCBleHRlbmRzIEFkYXB0ZXJSZXN1bHQ+KHJlc3VsdDogVCwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IHsgcm93LCByb3dzIH0gPSByZXN1bHQ7XG5cbiAgaWYgKHJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3c6IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkgfTtcbiAgfVxuICBpZiAocm93cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3dzOiByb3dzLm1hcCgocm93KSA9PiBhZGRSb3dJZFRvUm93KHJvdywgdGFibGUpKSB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEZpbHRlckdyb3VwLCBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMge1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgc29ydE9yZGVyOiBTb3J0T3JkZXJJdGVtW107XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHByb3BzOiBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMpIHtcbiAgY29uc3QgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIGZpbHRlciB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBlbmFibGVkOiBCb29sZWFuKGFjdGl2ZVRhYmxlKSxcbiAgICBnY1RpbWU6IDAsXG4gICAgcGxhY2Vob2xkZXJEYXRhKHByZXZpb3VzRGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkLCBwcmV2aW91c1F1ZXJ5KSB7XG4gICAgICBjb25zdCBbLCBzY2hlbWEsICwgdGFibGVdID0gcHJldmlvdXNRdWVyeT8ucXVlcnlLZXkgfHwgW107XG5cbiAgICAgIGlmIChzY2hlbWEgIT09IGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgdGFibGUgIT09IGFjdGl2ZVRhYmxlPy5uYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0YTtcbiAgICB9LFxuICAgIGFzeW5jIHF1ZXJ5Rm4oeyBzaWduYWwgfSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGFkYXB0ZXIucXVlcnkoXG4gICAgICAgIHsgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydE9yZGVyLCB0YWJsZTogYWN0aXZlVGFibGUhLCBmaWx0ZXIgfSxcbiAgICAgICAgeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdHMsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1xuICAgICAgXCJzY2hlbWFcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgbnVsbCxcbiAgICAgIFwidGFibGVcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5uYW1lIHx8IG51bGwsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInNvcnRPcmRlclwiLFxuICAgICAgc29ydE9yZGVyLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgfHwgXCJuYXR1cmFsXCIsXG4gICAgICBcInBhZ2VJbmRleFwiLFxuICAgICAgcGFnZUluZGV4LFxuICAgICAgXCJwYWdlU2l6ZVwiLFxuICAgICAgcGFnZVNpemUsXG4gICAgICBcImZpbHRlclwiLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSxcbiAgICBdLFxuICAgIHN0YWxlVGltZTogSW5maW5pdHksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHR5cGUgUXVlcnlDbGllbnQsIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEFkYXB0ZXJVcGRhdGVEZXRhaWxzLCBBZGFwdGVyVXBkYXRlT3B0aW9ucywgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBpbmZlclJvd0ZpbHRlciB9IGZyb20gXCIuLi8uLi9kYXRhL3F1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVVwZGF0ZVBhcmFtcyB7XG4gIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzO1xuICBvcHRpb25zOiBBZGFwdGVyVXBkYXRlT3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIGNvbnN0IHF1ZXJ5S2V5UHJlZml4ID0gW1wic2NoZW1hXCIsIGFjdGl2ZVRhYmxlPy5zY2hlbWEgPz8gbnVsbCwgXCJ0YWJsZVwiLCBhY3RpdmVUYWJsZT8ubmFtZSA/PyBudWxsXSBhcyBjb25zdDtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChwYXJhbXM6IFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLnVwZGF0ZShwYXJhbXMuZGV0YWlscywgcGFyYW1zLm9wdGlvbnMpO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBtdXRhdGlvbktleTogWy4uLnF1ZXJ5S2V5UHJlZml4LCBcInVwZGF0ZVwiXSxcbiAgICBvbkVycm9yKGVycm9yLCBwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgY2hhbmdlcywgcm93IH0gPSBwYXJhbXMuZGV0YWlscztcblxuICAgICAgb25FcnJvcihlcnJvcik7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IGNoYW5nZWRSb3cgPSB7IC4uLnJvdywgLi4uY2hhbmdlcyB9O1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIoY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIHJldmVydENoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNhY2hlZFJvdyxcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKGNoYW5nZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKG9yaWdpbmFsVmFsdWVzLCBjb2x1bW5OYW1lKSA9PiAoeyAuLi5vcmlnaW5hbFZhbHVlcywgW2NvbHVtbk5hbWVdOiByb3dbY29sdW1uTmFtZV0gfSksXG4gICAgICAgICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbk11dGF0ZShwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgZGV0YWlscyB9ID0gcGFyYW1zO1xuXG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IHJvdzogdW5jaGFuZ2VkUm93IH0gPSBkZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIodW5jaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlDaGFuZ2VzKGNhY2hlZFJvdykge1xuICAgICAgICAgIHJldHVybiB7IC4uLmNhY2hlZFJvdywgLi4uZGV0YWlscy5jaGFuZ2VzIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhyZXN1bHQsIHBhcmFtcykge1xuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlSZWFsRGF0YVdoZW5GcmVzaGVyKGNhY2hlZFJvdykge1xuICAgICAgICAgIGNvbnN0IHsgX19wc191cGRhdGVkX2F0X18gfSA9IGNhY2hlZFJvdztcbiAgICAgICAgICBjb25zdCB7IHJvdyB9ID0gcmVzdWx0O1xuXG4gICAgICAgICAgLy8gcmVzdWx0IHJvdyBpcyBzdGFsZS5cbiAgICAgICAgICBpZiAoX19wc191cGRhdGVkX2F0X18gIT0gbnVsbCAmJiByb3cuX19wc191cGRhdGVkX2F0X18gPD0gX19wc191cGRhdGVkX2F0X18pIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSb3c7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5yb3cgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gb3ZlcndyaXRlQ2FjaGVkUm93KHBhcmFtczoge1xuICBnZXRGaW5kZXJGbjogKCkgPT4gKGNhY2hlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgdXBkYXRlckZuOiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5Q2xpZW50OiBRdWVyeUNsaWVudDtcbn0pIHtcbiAgY29uc3QgeyBnZXRGaW5kZXJGbiwgcXVlcnlDbGllbnQsIHRhYmxlLCB1cGRhdGVyRm4gfSA9IHBhcmFtcztcblxuICBsZXQgZmluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRGaW5kZXJGbj47XG5cbiAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGEoXG4gICAgeyBleGFjdDogZmFsc2UsIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgdGFibGUuc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLm5hbWUsIFwicXVlcnlcIl0gfSxcbiAgICAoY2FjaGVkUmVzdWx0OiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgeyByb3dzOiBjYWNoZWRSb3dzID0gW10gfSA9IGNhY2hlZFJlc3VsdCB8fCB7fTtcblxuICAgICAgaWYgKGNhY2hlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhY2hlZFJvd0luZGV4ID0gY2FjaGVkUm93cy5maW5kSW5kZXgoKGZpbmRlciA/Pz0gZ2V0RmluZGVyRm4oKSkpO1xuXG4gICAgICBpZiAoY2FjaGVkUm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1JvdyA9IHVwZGF0ZXJGbihjYWNoZWRSb3dzW2NhY2hlZFJvd0luZGV4XSEpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jYWNoZWRSZXN1bHQhLFxuICAgICAgICByb3dzOiBbLi4uY2FjaGVkUm93cy5zbGljZSgwLCBjYWNoZWRSb3dJbmRleCksIG5ld1JvdywgLi4uY2FjaGVkUm93cy5zbGljZShjYWNoZWRSb3dJbmRleCArIDEpXSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmlsdGVyOiBGaWx0ZXJHcm91cCA9IHtcbiAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICBmaWx0ZXJzOiBbXSxcbiAgYWZ0ZXI6IFwiYW5kXCIsXG4gIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxufTtcblxuY29uc3QgY291bnRGaWx0ZXJzUmVjdXJzaXZlID0gKGZpbHRlckdyb3VwOiBGaWx0ZXJHcm91cCk6IG51bWJlciA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlckdyb3VwLmZpbHRlcnMpIHtcbiAgICBpZiAoZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIC8vIE9ubHkgY291bnQgZmlsdGVycyB0aGF0IGhhdmUgYSBub24tZW1wdHkgY29sdW1uIHNlbGVjdGVkXG4gICAgICBpZiAoZmlsdGVyLmNvbHVtbi50cmltKCkpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZpbHRlci5raW5kID09PSBcIkZpbHRlckdyb3VwXCIpIHtcbiAgICAgIGNvdW50ICs9IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShmaWx0ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY291bnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRmlsdGVyaW5nKCkge1xuICBjb25zdCBbZmlsdGVyUGFyYW0sIHNldEZpbHRlclBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJmaWx0ZXJcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogSlNPTi5zdHJpbmdpZnkoZGVmYXVsdEZpbHRlciksXG4gIH0pO1xuXG4gIGNvbnN0IGFwcGxpZWRGaWx0ZXIgPSB1c2VNZW1vKCgpID0+IEpTT04ucGFyc2UoZmlsdGVyUGFyYW0pIGFzIEZpbHRlckdyb3VwLCBbZmlsdGVyUGFyYW1dKTtcbiAgY29uc3Qgc2V0QXBwbGllZEZpbHRlciA9IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkIHNldEZpbHRlclBhcmFtKEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xuXG4gIGNvbnN0IFtlZGl0aW5nRmlsdGVyLCBzZXRFZGl0aW5nRmlsdGVyXSA9IHVzZVN0YXRlPEZpbHRlckdyb3VwPihhcHBsaWVkRmlsdGVyKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gIH0sIFthcHBsaWVkRmlsdGVyXSk7XG5cbiAgY29uc3QgdG90YWxFZGl0aW5nRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGVkaXRpbmdGaWx0ZXIpLCBbZWRpdGluZ0ZpbHRlcl0pO1xuXG4gIHJldHVybiB7XG4gICAgYXBwbGllZEZpbHRlcixcbiAgICBzZXRBcHBsaWVkRmlsdGVyLFxuICAgIGVkaXRpbmdGaWx0ZXIsXG4gICAgc2V0RWRpdGluZ0ZpbHRlcixcbiAgICB0b3RhbEVkaXRpbmdGaWx0ZXJzLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbi8qKlxuICogSG9vayB0byBrbm93IHdoZXRoZXIgYW4gaW5zZXJ0IGlzIGN1cnJlbnRseSBvbmdvaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSXNJbnNlcnRpbmcoKSB7XG4gIHJldHVybiB1c2VJc011dGF0aW5nKHtcbiAgICBwcmVkaWNhdGUoeyBvcHRpb25zOiB7IG11dGF0aW9uS2V5IH0gfSkge1xuICAgICAgcmV0dXJuIG11dGF0aW9uS2V5Py5bNF0gPT09IFwiaW5zZXJ0XCI7XG4gICAgfSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBPbkNoYW5nZUZuLCBQYWdpbmF0aW9uU3RhdGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBrZXlNYXAsIHBhcnNlQXNJbmRleCwgcGFyc2VBc0ludGVnZXIsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG4vLyBUT0RPOiBldmVudHVhbGx5IGNvbmZpZ3VyYWJsZSAvIGNvbnRyb2xsZWQgYnkgdXNlci4gYmFieSBzdGVwcy4uXG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDI1O1xuXG5jb25zdCBwYWdpbmF0aW9uUGFyc2VycyA9IGtleU1hcCh7XG4gIHBhZ2VJbmRleDogcGFyc2VBc0luZGV4LndpdGhEZWZhdWx0KDApLCAvLyB6ZXJvLWJhc2VkXG4gIHBhZ2VTaXplOiBwYXJzZUFzSW50ZWdlci53aXRoRGVmYXVsdChERUZBVUxUX1BBR0VfU0laRSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhZ2luYXRpb24oKSB7XG4gIGNvbnN0IFt7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSwgc2V0UGFnaW5hdGlvbl0gPSB1c2VRdWVyeVN0YXRlcyhwYWdpbmF0aW9uUGFyc2Vycyk7XG5cbiAgLy8gQ29tcGF0aWJsZSB3aXRoIFRhblN0YWNrIFRhYmxlJ3MgT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+XG4gIGNvbnN0IHNldFBhZ2luYXRpb25TdGF0ZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+ID0gdXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXJPclZhbHVlKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZXJPclZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKChvbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHVwZGF0ZXJPclZhbHVlKG9sZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZ2VJbmRleDogbmV3U3RhdGUucGFnZUluZGV4LFxuICAgICAgICAgICAgcGFnZVNpemU6IG5ld1N0YXRlLnBhZ2VTaXplLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKHtcbiAgICAgICAgICBwYWdlSW5kZXg6IHVwZGF0ZXJPclZhbHVlLnBhZ2VJbmRleCxcbiAgICAgICAgICBwYWdlU2l6ZTogdXBkYXRlck9yVmFsdWUucGFnZVNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3NldFBhZ2luYXRpb25dLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgcGFnaW5hdGlvblN0YXRlOiB7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSxcbiAgICBzZXRQYWdpbmF0aW9uU3RhdGUsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVEZWxldGUgfSBmcm9tIFwiLi91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZVwiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuL3VzZS1wYWdpbmF0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3Rpb24oZGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSk7XG4gIGNvbnN0IGlzU2VsZWN0aW5nID0gT2JqZWN0LmtleXMocm93U2VsZWN0aW9uU3RhdGUpLmxlbmd0aCAhPT0gMDtcbiAgY29uc3QgeyBtdXRhdGUgfSA9IHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KSwgW2FjdGl2ZVRhYmxlLCBwYWdpbmF0aW9uU3RhdGUucGFnZUluZGV4XSk7XG5cbiAgZnVuY3Rpb24gZGVsZXRlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IHJvd3MgPSBkYXRhPy5yb3dzLmZpbHRlcigocm93KSA9PiB7XG4gICAgICByZXR1cm4gcm93U2VsZWN0aW9uU3RhdGVbcm93Ll9fcHNfcm93aWQgYXMgc3RyaW5nXTtcbiAgICB9KTtcblxuICAgIG11dGF0ZShyb3dzID8/IFtdLCB7XG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KTtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZWxldGVTZWxlY3Rpb24sXG4gICAgc2V0Um93U2VsZWN0aW9uU3RhdGUsXG4gICAgcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgaXNTZWxlY3RpbmcsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiZGVsZXRlXCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5kZWxldGUoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgYXN5bmMgb25TdWNjZXNzKCkge1xuICAgICAgYXdhaXQgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoe1xuICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNvcnRpbmcoKSB7XG4gIC8vIFVzZSBudXFzIHRvIG1hbmFnZSBzb3J0aW5nIHN0YXRlIGluIFVSTFxuICBjb25zdCBbc29ydFBhcmFtLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcInNvcnRcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogXCJcIixcbiAgfSk7XG5cbiAgLy8gUGFyc2Ugc29ydGluZyBmcm9tIFVSTCBwYXJhbWV0ZXJcbiAgY29uc3QgcGFyc2VTb3J0aW5nID0gKHNvcnRQYXJhbTogc3RyaW5nIHwgbnVsbCk6IFNvcnRPcmRlckl0ZW1bXSA9PiB7XG4gICAgaWYgKCFzb3J0UGFyYW0pIHJldHVybiBbXTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBGb3JtYXQ6IGNvbHVtbjpkaXJlY3Rpb24sY29sdW1uOmRpcmVjdGlvblxuICAgICAgcmV0dXJuIHNvcnRQYXJhbVxuICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dID0gaXRlbS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgaWYgKCFjb2x1bW4gfHwgIWRpcmVjdGlvbiB8fCAhW1wiYXNjXCIsIFwiZGVzY1wiXS5pbmNsdWRlcyhkaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgY29sdW1uLCBkaXJlY3Rpb246IGRpcmVjdGlvbiBhcyBcImFzY1wiIHwgXCJkZXNjXCIgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBTb3J0T3JkZXJJdGVtW107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBwYXJzZSBzb3J0aW5nIHBhcmFtZXRlcjpcIiwgZSk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuXG4gIC8vIENyZWF0ZSBhIHN0YWJsZSBzb3J0aW5nIHN0YXRlIHRoYXQncyBkZXJpdmVkIGZyb20gVVJMIHBhcmFtZXRlcnNcbiAgY29uc3QgW3NvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlXSA9IHVzZVN0YXRlKCgpID0+IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pKTtcblxuICAvLyBLZWVwIGludGVybmFsIHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIFVSTCBwYXJhbWV0ZXJzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV3U29ydGluZ1N0YXRlID0gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSk7XG4gICAgc2V0U29ydGluZ1N0YXRlKG5ld1NvcnRpbmdTdGF0ZSk7XG4gIH0sIFtzb3J0UGFyYW1dKTtcblxuICAvLyBVcGRhdGUgVVJMIHdoZW4gc29ydGluZyBjaGFuZ2VzIGZyb20gdGhlIFVJXG4gIGNvbnN0IGhhbmRsZVNvcnRpbmdDaGFuZ2UgPSAobmV3U3RhdGU6IFNvcnRPcmRlckl0ZW1bXSB8ICgob2xkOiBTb3J0T3JkZXJJdGVtW10pID0+IFNvcnRPcmRlckl0ZW1bXSkpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFN0YXRlID0gdHlwZW9mIG5ld1N0YXRlID09PSBcImZ1bmN0aW9uXCIgPyBuZXdTdGF0ZShzb3J0aW5nU3RhdGUpIDogbmV3U3RhdGU7XG4gICAgc2V0U29ydGluZ1N0YXRlKHJlc29sdmVkU3RhdGUpO1xuXG4gICAgLy8gU2VyaWFsaXplIHNvcnRpbmcgc3RhdGUgdG8gVVJMIHBhcmFtZXRlclxuICAgIGNvbnN0IHNvcnRTdHJpbmcgPVxuICAgICAgcmVzb2x2ZWRTdGF0ZS5sZW5ndGggPiAwID8gcmVzb2x2ZWRTdGF0ZS5tYXAoKGl0ZW0pID0+IGAke2l0ZW0uY29sdW1ufToke2l0ZW0uZGlyZWN0aW9ufWApLmpvaW4oXCIsXCIpIDogbnVsbDtcblxuICAgIHZvaWQgc2V0U29ydFBhcmFtKHNvcnRTdHJpbmcpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc29ydGluZ1N0YXRlLFxuICAgIHNldFNvcnRpbmdTdGF0ZTogaGFuZGxlU29ydGluZ0NoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBDZWxsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlIH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEJvb2xlYW5DZWxsIH0gZnJvbSBcIi4vQm9vbGVhbkNlbGxcIjtcbmltcG9ydCB0eXBlIHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuaW1wb3J0IHsgRGF0ZUNlbGwgfSBmcm9tIFwiLi9EYXRlQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBFbnVtQ2VsbCB9IGZyb20gXCIuL0VudW1DZWxsXCI7XG5pbXBvcnQgeyBKU09OQ2VsbCB9IGZyb20gXCIuL0pTT05DZWxsXCI7XG5pbXBvcnQgeyBOdWxsQ2VsbCB9IGZyb20gXCIuL051bGxDZWxsXCI7XG5pbXBvcnQgeyBOdW1lcmljQ2VsbCB9IGZyb20gXCIuL051bWVyaWNDZWxsXCI7XG5pbXBvcnQgeyBSYXdDZWxsIH0gZnJvbSBcIi4vUmF3Q2VsbFwiO1xuaW1wb3J0IHsgVGltZUNlbGwgfSBmcm9tIFwiLi9UaW1lQ2VsbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2VsbCh7XG4gIGNlbGwsXG4gIGNvbHVtbixcbiAgcHJvcHMsXG59OiB7XG4gIGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBjb2x1bW46IENvbHVtbjtcbiAgcHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn0pIHtcbiAgY29uc3QgdmFsdWUgPSBjZWxsLmdldFZhbHVlKCk7XG5cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gPEVtcHR5Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IC8+O1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDxOdWxsQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IC8+O1xuICB9XG5cbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SlNPTkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIDxSYXdDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSBvcHRpb25zPXtvcHRpb25zfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwicmF3XCIpIHtcbiAgICBpZiAoaXNPYmplY3RUeXBlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIDxKU09OQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIDxSYXdDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlfSAvPjtcbiAgfVxuXG4gIGdyb3VwIHNhdGlzZmllcyBuZXZlcjtcbiAgdGhyb3cgbmV3IEVycm9yKGBEYXRhdHlwZSBncm91cCBcIiR7Z3JvdXAgYXMgc3RyaW5nfVwiIHdhcyBub3QgaGFuZGxlZCBpbiAnL2NlbGwvZ2V0LWNlbGwudHN4J2ApO1xufVxuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbkNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgQm9vbGVhbkNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogQm9vbGVhbkNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGRpdiBkYXRhLWNlbGwtdHlwZT1cImJvb2xlYW5cIj57U3RyaW5nKEJvb2xlYW4odmFsdWUpKX08L2Rpdj5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkJvb2xlYW5DZWxsLmRpc3BsYXlOYW1lID0gXCJCb29sZWFuQ2VsbFwiO1xuXG5leHBvcnQgeyBCb29sZWFuQ2VsbCB9O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtdy1mdWxsIHBzLW92ZXJmbG93LWF1dG8gcHMtZmxleCBwcy1pdGVtcy1zdGFydCBwcy1oLWZ1bGxcIj5cbiAgICAgIDx0YWJsZSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLXctZnVsbCBwcy1jYXB0aW9uLWJvdHRvbSBwcy10ZXh0LXNtXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5UYWJsZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVcIjtcblxuY29uc3QgVGFibGVIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRoZWFkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVIZWFkZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZGVyXCI7XG5cbmNvbnN0IFRhYmxlQm9keSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRib2R5IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwiWyZfdHI6bGFzdC1jaGlsZF06cHMtYm9yZGVyLTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9IFwiVGFibGVCb2R5XCI7XG5cbmNvbnN0IFRhYmxlRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGZvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWJvcmRlci10IHBzLWJnLW11dGVkLzUwIHBzLWZvbnQtbWVkaXVtIFsmPnRyXTpsYXN0OnBzLWJvcmRlci1iLTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUZvb3RlclwiO1xuXG5jb25zdCBUYWJsZVJvdyA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlUm93RWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlUm93RWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0clxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWJvcmRlci1iIHBzLXRyYW5zaXRpb24tY29sb3JzIGhvdmVyOnBzLWJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpwcy1iZy1tdXRlZFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVSb3cuZGlzcGxheU5hbWUgPSBcIlRhYmxlUm93XCI7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRoSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGhcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWgtMTAgcHMtcHgtMiBwcy10ZXh0LWxlZnQgcHMtYWxpZ24tbWlkZGxlIHBzLWZvbnQtbWVkaXVtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVIZWFkLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRcIjtcblxuY29uc3QgVGFibGVDZWxsID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGRIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtYWxpZ24tbWlkZGxlXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVDZWxsLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNlbGxcIjtcblxuY29uc3QgVGFibGVDYXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8Y2FwdGlvbiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLW10LTQgcHMtdGV4dC1zbSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQ2FwdGlvbi5kaXNwbGF5TmFtZSA9IFwiVGFibGVDYXB0aW9uXCI7XG5cbmV4cG9ydCB7IFRhYmxlLCBUYWJsZUhlYWRlciwgVGFibGVCb2R5LCBUYWJsZUZvb3RlciwgVGFibGVIZWFkLCBUYWJsZVJvdywgVGFibGVDZWxsLCBUYWJsZUNhcHRpb24gfTtcbiIsICJpbXBvcnQgeyBDb3B5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbnRleHRNZW51LCBDb250ZXh0TWVudUNvbnRlbnQsIENvbnRleHRNZW51SXRlbSwgQ29udGV4dE1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51XCI7XG5cbmV4cG9ydCB0eXBlIERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjxvYmplY3Q+O1xuXG4vLyBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIGludmVyc2lmaWVkIC0gdG8gbWFrZSBpdCBleHRlbnNpYmxlLCBhbmQgYWRhcHRhYmxlIHRvIGRpZmZlcmVudCBzaXR1YXRpb25zLlxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkQ2VsbENvbnRleHRNZW51KHByb3BzOiBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHRNZW51PlxuICAgICAgPENvbnRleHRNZW51VHJpZ2dlciBjbGFzc05hbWU9XCJwcy1ibG9jayBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0NvbnRleHRNZW51VHJpZ2dlcj5cbiAgICAgIDxDb250ZXh0TWVudUNvbnRlbnQ+XG4gICAgICAgIDxDb250ZXh0TWVudUl0ZW1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZXh0cmFjdFRleHRDb250ZW50KGNoaWxkcmVuKTtcbiAgICAgICAgICAgIHZvaWQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQ6XCIsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPENvcHkgc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgQ29weVxuICAgICAgICA8L0NvbnRleHRNZW51SXRlbT5cbiAgICAgIDwvQ29udGV4dE1lbnVDb250ZW50PlxuICAgIDwvQ29udGV4dE1lbnU+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUZXh0Q29udGVudChub2RlOiBSZWFjdE5vZGUpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIFN0cmluZyhub2RlKTtcbiAgfVxuXG4gIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgY29uc3QgcHJvcHMgPSBub2RlLnByb3BzIGFzIHsgdGV4dD86IHN0cmluZzsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfTtcblxuICAgIC8vIEhhbmRsZSBSZXZlYWxUZXh0IGNvbXBvbmVudCBzcGVjaWZpY2FsbHlcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJSZXZlYWxUZXh0XCIpIHtcbiAgICAgIHJldHVybiBwcm9wcy50ZXh0IHx8IFwiXCI7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIE51bGxWYWx1ZSBjb21wb25lbnRcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJOdWxsVmFsdWVcIikge1xuICAgICAgcmV0dXJuIFwiTlVMTFwiO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IGV4dHJhY3QgdGV4dCBmcm9tIGNoaWxkcmVuXG4gICAgaWYgKHByb3BzLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gZXh0cmFjdFRleHRDb250ZW50KHByb3BzLmNoaWxkcmVuIGFzIFJlYWN0Tm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgIHJldHVybiBub2RlLm1hcChleHRyYWN0VGV4dENvbnRlbnQpLmpvaW4oXCJcIik7XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cbiIsICJpbXBvcnQgKiBhcyBDb250ZXh0TWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQtbWVudVwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25SaWdodCwgQ2lyY2xlIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENvbnRleHRNZW51ID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgQ29udGV4dE1lbnVUcmlnZ2VyID0gQ29udGV4dE1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgQ29udGV4dE1lbnVHcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVBvcnRhbCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9Hcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy1tbC1hdXRvIHBzLWgtNCBwcy13LTRcIiAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkNvbnRleHRNZW51U3ViVHJpZ2dlci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuQ29udGV4dE1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkNvbnRleHRNZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4pKTtcbkNvbnRleHRNZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGQgcHMtdGV4dC1mb3JlZ3JvdW5kXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1ib3JkZXJcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPXtjbihcInBzLW1sLWF1dG8gcHMtdGV4dC14cyBwcy10cmFja2luZy13aWRlc3QgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKTtcbn07XG5Db250ZXh0TWVudVNob3J0Y3V0LmRpc3BsYXlOYW1lID0gXCJDb250ZXh0TWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIENvbnRleHRNZW51LFxuICBDb250ZXh0TWVudVRyaWdnZXIsXG4gIENvbnRleHRNZW51Q29udGVudCxcbiAgQ29udGV4dE1lbnVJdGVtLFxuICBDb250ZXh0TWVudUNoZWNrYm94SXRlbSxcbiAgQ29udGV4dE1lbnVSYWRpb0l0ZW0sXG4gIENvbnRleHRNZW51TGFiZWwsXG4gIENvbnRleHRNZW51U2VwYXJhdG9yLFxuICBDb250ZXh0TWVudVNob3J0Y3V0LFxuICBDb250ZXh0TWVudUdyb3VwLFxuICBDb250ZXh0TWVudVBvcnRhbCxcbiAgQ29udGV4dE1lbnVTdWIsXG4gIENvbnRleHRNZW51U3ViQ29udGVudCxcbiAgQ29udGV4dE1lbnVTdWJUcmlnZ2VyLFxuICBDb250ZXh0TWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCB7IHR5cGUgQ1NTUHJvcGVydGllcywgRGV0YWlsZWRIVE1MUHJvcHMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVDZWxsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUgfSBmcm9tIFwiLi4vZ3JpZC9EYXRhR3JpZENlbGxDb250ZXh0TWVudVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENlbGxQcm9wcyBleHRlbmRzIFByb3BzV2l0aENoaWxkcmVuLCBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczx1bmtub3duPiwgdW5rbm93bj4ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENlbGwocHJvcHM6IENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGxcbiAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcC0wIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgICAgICAvLyBcImRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctMiBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluZGlnby00MDAgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbnNldFwiLFxuICAgICAgICBcInBzLWN1cnNvci1wb2ludGVyXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICA+XG4gICAgICA8RGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+e2NoaWxkcmVufTwvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5jb25zdCBEYXRlQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBEYXRlQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkRhdGVDZWxsLmRpc3BsYXlOYW1lID0gXCJEYXRlQ2VsbFwiO1xuXG5leHBvcnQgeyBEYXRlQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuY29uc3QgRW1wdHlDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEVtcHR5Q2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9IC8+O1xufSk7XG5FbXB0eUNlbGwuZGlzcGxheU5hbWUgPSBcIkVtcHR5Q2VsbFwiO1xuXG5leHBvcnQgeyBFbXB0eUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuY29uc3QgRW51bUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRW51bUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCBvcHRpb25zLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5FbnVtQ2VsbC5kaXNwbGF5TmFtZSA9IFwiRW51bUNlbGxcIjtcblxuZXhwb3J0IHsgRW51bUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpTT05DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdO1xufVxuXG5jb25zdCBKU09OQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBKU09OQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7SlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuSlNPTkNlbGwuZGlzcGxheU5hbWUgPSBcIkpTT05DZWxsXCI7XG5cbmV4cG9ydCB7IEpTT05DZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOdWxsQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmNvbnN0IE51bGxDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IE51bGxDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGNvZGUgY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCI+TlVMTDwvY29kZT5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbk51bGxDZWxsLmRpc3BsYXlOYW1lID0gXCJOdWxsQ2VsbFwiO1xuXG5leHBvcnQgeyBOdWxsQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtZXJpY0NlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgTnVtZXJpY0NlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogTnVtZXJpY0NlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGRpdiBkYXRhLWNlbGwtdHlwZT1cIm51bWVyaWNcIj57dmFsdWUgPT09IG51bGwgPyBcIk5VTExcIiA6IFN0cmluZyh2YWx1ZSl9PC9kaXY+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5OdW1lcmljQ2VsbC5kaXNwbGF5TmFtZSA9IFwiTnVtZXJpY0NlbGxcIjtcblxuZXhwb3J0IHsgTnVtZXJpY0NlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0NlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgUmF3Q2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBSYXdDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuUmF3Q2VsbC5kaXNwbGF5TmFtZSA9IFwiUmF3Q2VsbFwiO1xuXG5leHBvcnQgeyBSYXdDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5jb25zdCBUaW1lQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBUaW1lQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcblRpbWVDZWxsLmRpc3BsYXlOYW1lID0gXCJUaW1lQ2VsbFwiO1xuXG5leHBvcnQgeyBUaW1lQ2VsbCB9O1xuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RIZWFkZXJDZWxsUHJvcHMge1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG59XG5cbmNvbnN0IFNlbGVjdEhlYWRlckNlbGwgPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBTZWxlY3RIZWFkZXJDZWxsUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgdGFibGUsIHJlYWRvbmx5LCBjbGFzc05hbWUsIHN0eWxlLCAuLi5yZXN0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSBzdHlsZT17c3R5bGV9IHsuLi5yZXN0fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtdy1mdWxsXCI+XG4gICAgICAgIDxDaGVja2JveFxuICAgICAgICAgIGNoZWNrZWQ9e3RhYmxlLmdldElzQWxsUm93c1NlbGVjdGVkKCl9XG4gICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXsodmFsdWUpID0+IHRhYmxlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZCghIXZhbHVlKX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuXG5TZWxlY3RIZWFkZXJDZWxsLmRpc3BsYXlOYW1lID0gXCJTZWxlY3RIZWFkZXJDZWxsXCI7XG5cbmV4cG9ydCB7IFNlbGVjdEhlYWRlckNlbGwgfTtcbiIsICJpbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNoZWNrYm94XCI7XG5pbXBvcnQgeyBDaGVjayB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDaGVja2JveFByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1oLTQgcHMtdy00IHBzLXNocmluay0wIHBzLXJvdW5kZWQtc20gcHMtYm9yZGVyIHBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy1iZy1wcmltYXJ5IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy10ZXh0LWN1cnJlbnRcIil9PlxuICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgIDwvQ2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yPlxuICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4pKTtcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gQ2hlY2tib3hQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbiIsICJpbXBvcnQgeyBSb3cgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5pbXBvcnQgeyBTZWxlY3RDZWxsIH0gZnJvbSBcIi4vU2VsZWN0Q2VsbFwiO1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RSb3dDZWxsUHJvcHMge1xuICByb3c6IFJvdzxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3QgU2VsZWN0Um93Q2VsbCA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIFNlbGVjdFJvd0NlbGxQcm9wcz4oKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyByb3csIHJlYWRvbmx5LCBjbGFzc05hbWUsIHN0eWxlLCAuLi5yZXN0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3RDZWxsIHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfSB7Li4ucmVzdH0+XG4gICAgICA8Q2hlY2tib3hcbiAgICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgICAgZGlzYWJsZWQ9eyFyb3cuZ2V0Q2FuU2VsZWN0KCkgfHwgcmVhZG9ubHl9XG4gICAgICAgIG9uQ2hlY2tlZENoYW5nZT17cm93LmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcigpfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdENlbGw+XG4gICk7XG59KTtcblxuU2VsZWN0Um93Q2VsbC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0Um93Q2VsbFwiO1xuXG5leHBvcnQgeyBTZWxlY3RSb3dDZWxsIH07XG4iLCAiaW1wb3J0IHsgdHlwZSBDU1NQcm9wZXJ0aWVzLCBEZXRhaWxlZEhUTUxQcm9wcywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUNlbGwsIFRhYmxlSGVhZCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGlzSGVhZGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdENlbGwocHJvcHM6IFNlbGVjdENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIGlzSGVhZGVyID0gZmFsc2UsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICBjb25zdCBzZWxlY3RDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1wLTAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXVwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc0hlYWRlciA/IChcbiAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKHNlbGVjdENsYXNzZXMsIFwicHMtaC0xMCBwcy1iZy10YWJsZS1oZWFkIHBzLXotMzAgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWxlZnQtMFwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihzZWxlY3RDbGFzc2VzLCBcInBzLXotMTAgcHMtaC1bMzlweF1cIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIHNldE9wZW46IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbmNvbnN0IFBvcG92ZXJDZWxsID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH06IFBvcG92ZXJQcmltaXRpdmUuUG9wb3ZlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgb3Blbiwgc2V0T3BlbiB9fT5cbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlJvb3Qgb3Blbj17b3Blbn0gb25PcGVuQ2hhbmdlPXtzZXRPcGVufSB7Li4ucHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuUm9vdD5cbiAgICA8L1BvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5Qb3BvdmVyQ2VsbC5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+IHtcbiAgb25Eb3VibGVDbGljaz86ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiwgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHM+KFxuICAoeyBjaGlsZHJlbiwgb25Eb3VibGVDbGljaywgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAvLyBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuICAgIC8vIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG5cbiAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGhhbmRsZURvY3VtZW50Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAvLyAgICAgaWYgKHRyaWdnZXJSZWYuY3VycmVudCAmJiAhdHJpZ2dlclJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhcIk91dHNpZGUgY2xpY2sgLSByZW1vdmluZyBmb2N1c1wiKTtcbiAgICAvLyAgICAgICBzZXRJc0ZvY3VzZWQoZmFsc2UpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9O1xuXG4gICAgLy8gICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vIH0sIFtdKTtcblxuICAgIC8vIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyAgIHNldElzRm9jdXNlZCh0cnVlKTtcbiAgICAvLyAgIGNvbnRleHQ/LnNldE9wZW4odHJ1ZSk7XG5cbiAgICAvLyAgIGlmIChlLmRldGFpbCA9PT0gMiAmJiBvbkRvdWJsZUNsaWNrKSB7XG4gICAgLy8gICAgIG9uRG91YmxlQ2xpY2soKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXJcbiAgICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHJlZihub2RlKTtcbiAgICAgICAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkXG4gICAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgICAgLy8gb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIC8vIGRhdGEtZm9jdXM9e2lzRm9jdXNlZC50b1N0cmluZygpfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidy1mdWxsIGgtZnVsbCBjdXJzb3ItcG9pbnRlclwiLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPlxuICAgICk7XG4gIH0sXG4pO1xuUG9wb3ZlckNlbGxUcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFRyaWdnZXJcIjtcblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTIgcHMtei01MCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgdGhpcyBvdXJzZWx2ZXMsIGRvIG5vdCBsZXQgcmFkaXggdGFrZSBvdmVyXG4gICAgICBvbkVzY2FwZUtleURvd249eyhldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ2VsbENvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3BvdmVyQWN0aW9ucyhhY3Rpb25zOiB7XG4gIG9uU2F2ZT86ICgpID0+IGJvb2xlYW4gfCB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vblNhdmUpIHtcbiAgICAgIGFjdGlvbnMub25TYXZlKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25TYXZlLCBjb250ZXh0XSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25DYW5jZWwpIHtcbiAgICAgIGFjdGlvbnMub25DYW5jZWwoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vbkNhbmNlbCwgY29udGV4dF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgZW50ZXIgaXMgcHJlc3NlZCBhbmQgcHJlc3NlZCB3aXRob3V0IHNoaWZ0XG4gICAgICBpZiAoKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCJSZXR1cm5cIikgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGhhbmRsZVNhdmUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgfSwgW2hhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbF0pO1xuXG4gIHJldHVybiB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9O1xufVxuXG5leHBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxUcmlnZ2VyLCBQb3BvdmVyQ2VsbENvbnRlbnQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxDb250ZW50LCBQb3BvdmVyQ2VsbFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlYWJsZUNlbGxQcm9wcyB7XG4gIGNlbGxDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgaW5wdXRDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdyaXRlYWJsZUNlbGwocHJvcHM6IFdyaXRlYWJsZUNlbGxQcm9wcykge1xuICBjb25zdCB7IGNlbGxDb21wb25lbnQsIGlucHV0Q29tcG9uZW50IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbD5cbiAgICAgIDxQb3BvdmVyQ2VsbFRyaWdnZXIgYXNDaGlsZD57Y2VsbENvbXBvbmVudH08L1BvcG92ZXJDZWxsVHJpZ2dlcj5cbiAgICAgIDxQb3BvdmVyQ2VsbENvbnRlbnRcbiAgICAgICAgYWxpZ249XCJzdGFydFwiXG4gICAgICAgIGFsaWduT2Zmc2V0PXstMX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXJvdW5kZWQtbm9uZSBwcy1iZy1tdXRlZFwiLFxuICAgICAgICAgIFwicHMtcC0wIHBzLXotMzAgcHMtZ2FwLTAgcHMtYm9yZGVyLXByaW1hcnlcIixcbiAgICAgICAgICBcInBzLXctW2NhbGModmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKV8rXzFweCldIHBzLW1heC13LTcyIHBzLW1pbi13LVsyMDBweF1cIixcbiAgICAgICAgKX1cbiAgICAgICAgc2lkZU9mZnNldD17LTQwfVxuICAgICAgPlxuICAgICAgICB7aW5wdXRDb21wb25lbnR9XG4gICAgICA8L1BvcG92ZXJDZWxsQ29udGVudD5cbiAgICA8L1BvcG92ZXJDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7XG4gIGNsb3Nlc3RDZW50ZXIsXG4gIERuZENvbnRleHQsXG4gIHR5cGUgRHJhZ0VuZEV2ZW50LFxuICBEcmFnT3ZlcmxheSxcbiAgdHlwZSBEcmFnU3RhcnRFdmVudCxcbiAgS2V5Ym9hcmRTZW5zb3IsXG4gIFBvaW50ZXJTZW5zb3IsXG4gIHR5cGUgVW5pcXVlSWRlbnRpZmllcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzLFxufSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHtcbiAgYXJyYXlNb3ZlLFxuICBTb3J0YWJsZUNvbnRleHQsXG4gIHNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyxcbiAgdXNlU29ydGFibGUsXG4gIHZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSxcbn0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBDaGV2cm9uRG93biwgQ2hldnJvblJpZ2h0LCBHcmlwVmVydGljYWwsIEhlbHBDaXJjbGUsIFggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW5GaWx0ZXIsIEZpbHRlckdyb3VwLCBGaWx0ZXJPcGVyYXRvciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IGNvZXJjZVRvU3RyaW5nLCBjb2VyY2VUb1ZhbHVlIH0gZnJvbSBcIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgRHJvcGRvd25NZW51LCBEcm9wZG93bk1lbnVDb250ZW50LCBEcm9wZG93bk1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbmNvbnN0IExlYWRpbmdPcGVyYXRvclNlbGVjdCA9ICh7XG4gIHZhbHVlLFxuICBvblZhbHVlQ2hhbmdlLFxuICBkaXNhYmxlZCxcbiAgdHJpZ2dlckNsYXNzTmFtZSA9IFwicHMtdy0yMCBwcy10ZXh0LXhzIHBzLWgtOFwiLFxufToge1xuICB2YWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uVmFsdWVDaGFuZ2U6ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0cmlnZ2VyQ2xhc3NOYW1lPzogc3RyaW5nO1xufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTZWxlY3QgdmFsdWU9e3ZhbHVlfSBvblZhbHVlQ2hhbmdlPXtvblZhbHVlQ2hhbmdlfSBkaXNhYmxlZD17ZGlzYWJsZWR9PlxuICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPXt0cmlnZ2VyQ2xhc3NOYW1lfT5cbiAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiTG9naWNcIiAvPlxuICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiYW5kXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+QU5EPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPk9SPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICA8L1NlbGVjdD5cbiAgKTtcbn07XG5cbi8vIFJlbmRlcnMgdGhlIHByZXZpZXcgb2YgdGhlIGl0ZW0gYmVpbmcgZHJhZ2dlZCBpbiB0aGUgRHJhZ092ZXJsYXkuXG5jb25zdCBEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyA9ICh7XG4gIGFjdGl2ZUlkLFxuICBpdGVtcyxcbiAgdGFibGUsXG59OiB7XG4gIGFjdGl2ZUlkOiBVbmlxdWVJZGVudGlmaWVyO1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICB0YWJsZTogVGFibGU7XG59KSA9PiB7XG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG4gIGlmICghYWN0aXZlSXRlbSkgcmV0dXJuIG51bGw7XG5cbiAgbGV0IGxlYWRpbmdPcGVyYXRvclZhbHVlOiBcImFuZFwiIHwgXCJvclwiID0gXCJhbmRcIjsgLy8gRGVmYXVsdFxuICBsZXQgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSBmYWxzZTtcbiAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG5cbiAgaWYgKGFjdGl2ZUl0ZW1JbmRleCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0l0ZW0gPSBpdGVtc1thY3RpdmVJdGVtSW5kZXggLSAxXTtcbiAgICBpZiAocHJldmlvdXNJdGVtKSB7XG4gICAgICAvLyAnYWZ0ZXInIGZyb20gdGhlIHByZXZpb3VzIGl0ZW0gZGV0ZXJtaW5lcyB0aGUgb3BlcmF0b3IgbGVhZGluZyBpbnRvIHRoZSBjdXJyZW50IGl0ZW1cbiAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlID0gcHJldmlvdXNJdGVtLmFmdGVyO1xuICAgICAgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhY3RpdmVJdGVtLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICBmaWx0ZXI9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIHVwZGF0ZXNcbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fSAvLyBPdmVybGF5IGlzIG5vbi1pbnRlcmFjdGl2ZSBmb3IgZGVsZXRlc1xuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX0gLy8gTm9uLWludGVyYWN0aXZlXG4gICAgICAvPlxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudFxuICAgICAgICBncm91cD17YWN0aXZlSXRlbX1cbiAgICAgICAgb25VcGRhdGU9eygpID0+IHt9fVxuICAgICAgICBvbkRlbGV0ZT17KCkgPT4ge319XG4gICAgICAgIGlzUm9vdD17ZmFsc2V9IC8vIERyYWdnZWQgaXRlbSBpbiBvdmVybGF5IGlzIG5vdCB0aGUgcm9vdFxuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX1cbiAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtmYWxzZX0gLy8gTm9uLWludGVyYWN0aXZlIGZvciBwcmV2aWV3XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn07XG5cbi8vIE1hbmFnZXMgRE5EIGNvbnRleHQgYW5kIHJlbmRlcmluZyBvZiBzb3J0YWJsZSBmaWx0ZXIgaXRlbXMgZm9yIGEgZ3JvdXAuXG5jb25zdCBGaWx0ZXJMaXN0SXRlbXMgPSAoe1xuICBpdGVtcyxcbiAgcGFyZW50R3JvdXBJZCxcbiAgdGFibGUsXG4gIG9uVXBkYXRlSXRlbSxcbiAgb25EZWxldGVJdGVtLFxuICBvblJlb3JkZXJJdGVtcyxcbiAgYWN0aXZlRHJhZ0lkLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnRW5kU2lnbmFsLFxufToge1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICBwYXJlbnRHcm91cElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIG9uVXBkYXRlSXRlbTogKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRJdGVtOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGVJdGVtOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25SZW9yZGVySXRlbXM6IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBhY3RpdmVEcmFnSWQ6IFVuaXF1ZUlkZW50aWZpZXIgfCBudWxsO1xuICBvbkRyYWdTdGFydDogKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4gdm9pZDtcbiAgb25EcmFnRW5kU2lnbmFsOiAoKSA9PiB2b2lkOyAvLyBDYWxsYmFjayB0byBzaWduYWwgZHJhZyBvcGVyYXRpb24gY29tcGxldGlvblxufSkgPT4ge1xuICBjb25zdCBzb3J0YWJsZUl0ZW1JZHMgPSB1c2VNZW1vKCgpID0+IGl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCksIFtpdGVtc10pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhcbiAgICB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwgeyBhY3RpdmF0aW9uQ29uc3RyYWludDogeyBkaXN0YW5jZTogOCB9IH0pLFxuICAgIHVzZVNlbnNvcihLZXlib2FyZFNlbnNvciwgeyBjb29yZGluYXRlR2V0dGVyOiBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMgfSksXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlSW50ZXJuYWxEcmFnRW5kID0gKGV2ZW50OiBEcmFnRW5kRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGFjdGl2ZSwgb3ZlciB9ID0gZXZlbnQ7XG4gICAgaWYgKG92ZXIgJiYgYWN0aXZlLmlkICE9PSBvdmVyLmlkKSB7XG4gICAgICBjb25zdCBvbGRJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlLmlkKTtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBvdmVyLmlkKTtcbiAgICAgIGlmIChvbGRJbmRleCAhPT0gLTEgJiYgbmV3SW5kZXggIT09IC0xKSB7XG4gICAgICAgIG9uUmVvcmRlckl0ZW1zKG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICAgIG9uRHJhZ0VuZFNpZ25hbCgpOyAvLyBTaWduYWwgdG8gcGFyZW50IHRoYXQgZHJhZyBoYXMgZW5kZWQgKGUuZy4sIHRvIGNsZWFyIGFjdGl2ZURyYWdJZClcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEbmRDb250ZXh0XG4gICAgICBzZW5zb3JzPXtzZW5zb3JzfVxuICAgICAgY29sbGlzaW9uRGV0ZWN0aW9uPXtjbG9zZXN0Q2VudGVyfVxuICAgICAgb25EcmFnU3RhcnQ9e29uRHJhZ1N0YXJ0fVxuICAgICAgb25EcmFnRW5kPXtoYW5kbGVJbnRlcm5hbERyYWdFbmR9XG4gICAgPlxuICAgICAgPFNvcnRhYmxlQ29udGV4dCBpdGVtcz17c29ydGFibGVJdGVtSWRzfSBzdHJhdGVneT17dmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fT5cbiAgICAgICAge2l0ZW1zLm1hcCgoY3VycmVudEZpbHRlckl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHNob3dMZWFkaW5nT3AgPSBmYWxzZTtcbiAgICAgICAgICBsZXQgbGVhZGluZ09wVmFsOiBcImFuZFwiIHwgXCJvclwiIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBvbkxlYWRpbmdPcENoYW5nZUZuOiAoKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICBzaG93TGVhZGluZ09wID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZJdGVtID0gaXRlbXNbaW5kZXggLSAxXSE7XG4gICAgICAgICAgICBsZWFkaW5nT3BWYWwgPSBwcmV2SXRlbS5hZnRlcjtcbiAgICAgICAgICAgIG9uTGVhZGluZ09wQ2hhbmdlRm4gPSAobmV3VmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByZXZJdGVtID0geyAuLi5wcmV2SXRlbSwgYWZ0ZXI6IG5ld1ZhbHVlIH07XG4gICAgICAgICAgICAgIG9uVXBkYXRlSXRlbShpbmRleCAtIDEsIHVwZGF0ZWRQcmV2SXRlbSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gaW5kZXggLSAxID09PSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U29ydGFibGVGaWx0ZXJJdGVtXG4gICAgICAgICAgICAgIGtleT17Y3VycmVudEZpbHRlckl0ZW0uaWR9XG4gICAgICAgICAgICAgIGZpbHRlcj17Y3VycmVudEZpbHRlckl0ZW19XG4gICAgICAgICAgICAgIG9uVXBkYXRlPXsodXBkYXRlZEZpbHRlcikgPT4gb25VcGRhdGVJdGVtKGluZGV4LCB1cGRhdGVkRmlsdGVyKX1cbiAgICAgICAgICAgICAgb25EZWxldGU9eygpID0+IG9uRGVsZXRlSXRlbShpbmRleCl9XG4gICAgICAgICAgICAgIHBhcmVudERuZElkPXtwYXJlbnRHcm91cElkfVxuICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3B9XG4gICAgICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BWYWx9XG4gICAgICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcENoYW5nZUZufVxuICAgICAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgIHtjcmVhdGVQb3J0YWwoXG4gICAgICAgIDxEcmFnT3ZlcmxheT5cbiAgICAgICAgICB7YWN0aXZlRHJhZ0lkID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1vcGFjaXR5LTgwXCI+XG4gICAgICAgICAgICAgIDxEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyBhY3RpdmVJZD17YWN0aXZlRHJhZ0lkfSBpdGVtcz17aXRlbXN9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L0RyYWdPdmVybGF5PixcbiAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICl9XG4gICAgPC9EbmRDb250ZXh0PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNvcnRhYmxlIGZpbHRlciBpdGVtXG5jb25zdCBTb3J0YWJsZUZpbHRlckl0ZW0gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgcGFyZW50RG5kSWQsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cDtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIHBhcmVudERuZElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGZpbHRlci5pZCxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiBmaWx0ZXIua2luZCxcbiAgICAgIHBhcmVudElkOiBwYXJlbnREbmRJZCxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIG9wYWNpdHk6IGlzRHJhZ2dpbmcgPyAwLjUgOiAxLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3NldE5vZGVSZWZ9IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtZ2FwLTJcIj5cbiAgICAgIHtmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIiA/IChcbiAgICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgICBncm91cD17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNpbmdsZSBmaWx0ZXIgY29uZGl0aW9uXG5jb25zdCBGaWx0ZXJDb25kaXRpb24gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlcikgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlQ29sdW1uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgY29sdW1uOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVyYXRvckNoYW5nZSA9ICh2YWx1ZTogRmlsdGVyT3BlcmF0b3IpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgb3BlcmF0b3I6IHZhbHVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBjb2x1bW5JbmZvID0gdGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXTtcblxuICAgIGlmIChjb2x1bW5JbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlVG9WYWx1ZShjb2x1bW5JbmZvLCBmaWx0ZXIub3BlcmF0b3IsIHJhd1ZhbHVlKTtcblxuICAgICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIHZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgW2VkaXRlZFZhbHVlLCBzZXRFZGl0ZWRWYWx1ZV0gPSB1c2VTdGF0ZShcbiAgICBjb2VyY2VUb1N0cmluZyh0YWJsZS5jb2x1bW5zW2ZpbHRlci5jb2x1bW5dLCBmaWx0ZXIub3BlcmF0b3IsIGZpbHRlci52YWx1ZSksXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCJcbiAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCI+XG4gICAgICAgICAgPEdyaXBWZXJ0aWNhbCBjbGFzc05hbWU9XCJwcy10ZXh0LWdyYXktNTAwXCIgc2l6ZT17MTZ9IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSA/IChcbiAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIuY29sdW1ufSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVDb2x1bW5DaGFuZ2V9PlxuICAgICAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdy0yOCBwcy10ZXh0LXhzIHBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY29sdW1uXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7T2JqZWN0LmtleXModGFibGUuY29sdW1ucykubWFwKChjb2x1bW4pID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e2NvbHVtbn0gdmFsdWU9e2NvbHVtbn0+XG4gICAgICAgICAgICAgICAgICB7Y29sdW1ufVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIub3BlcmF0b3J9IG9uVmFsdWVDaGFuZ2U9eyh2YWx1ZSkgPT4gaGFuZGxlT3BlcmF0b3JDaGFuZ2UodmFsdWUgYXMgRmlsdGVyT3BlcmF0b3IpfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiT3BlcmF0b3JcIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPVwiPj08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiIT1cIj4hPTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+XCI+Jmd0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+PVwiPiZndDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjxcIj4mbHQ7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjw9XCI+Jmx0Oz08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXNcIj5pczwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpcyBub3RcIj5pcyBub3Q8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibGlrZVwiPmxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGxpa2VcIj5ub3QgbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpbGlrZVwiPmlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBpbGlrZVwiPm5vdCBpbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgdmFsdWU9e2VkaXRlZFZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgIHNldEVkaXRlZFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UoZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy13LTI0IHBzLXRleHQteHMgcHMtaC04XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBmaWx0ZXIgZ3JvdXAgKEFORC9PUilcbmNvbnN0IEZpbHRlckdyb3VwQ29tcG9uZW50ID0gKHtcbiAgZ3JvdXAsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICBpc1Jvb3QgPSBmYWxzZSxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBncm91cDogRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEdyb3VwOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgaXNSb290PzogYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVEcmFnSWQsIHNldEFjdGl2ZURyYWdJZF0gPSB1c2VTdGF0ZTxVbmlxdWVJZGVudGlmaWVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQWRkRmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcjogQ29sdW1uRmlsdGVyID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkNvbHVtbkZpbHRlclwiLFxuICAgICAgY29sdW1uOiBPYmplY3Qua2V5cyh0YWJsZS5jb2x1bW5zKVswXSA/PyBcIlwiLCAvLyBBbHdheXMgc2VsZWN0IGZpcnN0IGNvbFxuICAgICAgb3BlcmF0b3I6IFwiPVwiLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3RmlsdGVyXSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGRHcm91cCA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdHcm91cDogRmlsdGVyR3JvdXAgPSB7XG4gICAgICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbiAgICAgIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgfTtcblxuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IFsuLi5ncm91cC5maWx0ZXJzLCBuZXdHcm91cF0gfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlSXRlbUluR3JvdXAgPSAoaW5kZXg6IG51bWJlciwgdXBkYXRlZEZpbHRlck9yR3JvdXA6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzW2luZGV4XSA9IHVwZGF0ZWRGaWx0ZXJPckdyb3VwO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlSXRlbUZyb21Hcm91cCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdTdGFydEV2ZW50KSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKGV2ZW50LmFjdGl2ZS5pZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZFNpZ25hbCA9ICgpID0+IHtcbiAgICBzZXRBY3RpdmVEcmFnSWQobnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVvcmRlckl0ZW1zID0gKG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAob2xkSW5kZXggPT09IG5ld0luZGV4KSByZXR1cm47XG4gICAgY29uc3QgcmVvcmRlcmVkRmlsdGVycyA9IGFycmF5TW92ZShncm91cC5maWx0ZXJzLCBvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IHJlb3JkZXJlZEZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyR3JvdXBDb250ZW50ID0gKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCFncm91cC5maWx0ZXJzIHx8IGdyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXBsLTYgcHMtdGV4dC1zbSBwcy10ZXh0LW5ldXRyYWwtNTAwIHBzLWl0YWxpY1wiPlxuICAgICAgICAgIFRoaXMgZ3JvdXAgaXMgZW1wdHkuIEFkZCBhIGZpbHRlciBvciBhbm90aGVyIGdyb3VwLlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxtb3Rpb24uZGl2IHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmUgcHMtZ2FwLTJcIiwgaXNSb290ID8gXCJcIiA6IFwicHMtcGItMlwiKX0+XG4gICAgICAgICAgPEZpbHRlckxpc3RJdGVtc1xuICAgICAgICAgICAgaXRlbXM9e2dyb3VwLmZpbHRlcnN9XG4gICAgICAgICAgICBwYXJlbnRHcm91cElkPXtncm91cC5pZH1cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIG9uVXBkYXRlSXRlbT17dXBkYXRlSXRlbUluR3JvdXB9XG4gICAgICAgICAgICBvbkRlbGV0ZUl0ZW09e2RlbGV0ZUl0ZW1Gcm9tR3JvdXB9XG4gICAgICAgICAgICBvblJlb3JkZXJJdGVtcz17aGFuZGxlUmVvcmRlckl0ZW1zfVxuICAgICAgICAgICAgYWN0aXZlRHJhZ0lkPXthY3RpdmVEcmFnSWR9XG4gICAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgICAgb25EcmFnRW5kU2lnbmFsPXtoYW5kbGVEcmFnRW5kU2lnbmFsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGxcIiwgaXNFeHBhbmRlZCA/IFwicHMtZ2FwLTJcIiA6IFwiXCIpfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cywganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgICAgICAgIDxkaXYgey4uLmRyYWdIYW5kbGVQcm9wc30gY2xhc3NOYW1lPVwicHMtY3Vyc29yLWdyYWJcIiBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX0+XG4gICAgICAgICAgICAgICAge2lzRXhwYW5kZWQgPyA8Q2hldnJvbkRvd24gc2l6ZT17MTZ9IC8+IDogPENoZXZyb25SaWdodCBzaXplPXsxNn0gLz59XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgJiYgIWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWRkRmlsdGVyfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgb3ZlcmZsb3ctaGlkZGVuIHBzLXRyYW5zaXRpb24tYWxsXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZGQgRmlsdGVyXG4gICAgICAgICAgICAgIHtncm91cC5maWx0ZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDxCYWRnZSBjbGFzc05hbWU9XCJwcy10cmFuc2l0aW9uLWFsbFwiPlxuICAgICAgICAgICAgICAgICAgPEFuaW1hdGVOdW1iZXIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT57Z3JvdXAuZmlsdGVycy5sZW5ndGh9PC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2hhbmRsZUFkZEdyb3VwfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMVwiPlxuICAgICAgICAgICAgICBBZGQgR3JvdXBcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHtpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiPlxuICAgICAgICAgICAgICAgICAgICA8SGVscENpcmNsZSBjbGFzc05hbWU9XCJwcy1zaXplLTRcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50IGFsaWduPVwiY2VudGVyXCIgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcC00IHBzLXRleHQtY2VudGVyIHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIE5vIGZpbHRlcnMgYXBwbGllZCB5ZXQuIEFkZCBmaWx0ZXJzIHRvIHByZXZpZXcgeW91ciBxdWVyeS5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtMiBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLWJnLW5ldXRyYWwtMTAwIHBzLXJvdW5kZWQtc20gcHMtZm9udC1tb25vXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2dyb3VwfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oaXNSb290ID8gXCJcIiA6IFwicHMtbWwtNlwiKX0+e3JlbmRlckdyb3VwQ29udGVudCgpfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tb3Rpb24uZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IHRvIHZpc3VhbGl6ZSB0aGUgcXVlcnkgc3RyaW5nXG5jb25zdCBRdWVyeVZpc3VhbGl6ZXIgPSAoeyBmaWx0ZXIgfTogeyBmaWx0ZXI6IEZpbHRlckdyb3VwIH0pOiBSZWFjdE5vZGUgPT4ge1xuICBsZXQgaXNBbmRHcm91cE9wZW4gPSAwO1xuXG4gIGlmIChmaWx0ZXIuZmlsdGVycy5sZW5ndGggPT09IDApIHJldHVybiBcIiggKVwiO1xuXG4gIGNvbnN0IGdyb3VwID0gZmlsdGVyLmZpbHRlcnMubWFwKChmLCBpKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogUmVhY3ROb2RlO1xuICAgIGNvbnN0IGlzTGFzdCA9IGZpbHRlci5maWx0ZXJzLmxlbmd0aCAtIDEgPT09IGk7XG5cbiAgICBpZiAoaXNBbmRHcm91cE9wZW4gPT09IC0xKSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGYuYWZ0ZXIgPT09IFwiYW5kXCIgJiYgIWlzTGFzdCkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gKz0gMTtcbiAgICB9XG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuICYmIChpc0xhc3QgfHwgZi5hZnRlciA9PT0gXCJvclwiKSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAtMTtcbiAgICB9XG5cbiAgICBpZiAoZi5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICBjb25zdCB7IGNvbHVtbiwgb3BlcmF0b3IgfSA9IGY7XG5cbiAgICAgIHJlc3VsdCA9IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8c3Bhbj4ge2NvbHVtbn0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPiB7b3BlcmF0b3J9IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4gPyA8L3NwYW4+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2Z9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8RnJhZ21lbnQga2V5PXtmLmlkfT5cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAxID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPig8L3NwYW4+IDogXCJcIn1cbiAgICAgICAge3Jlc3VsdH1cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAtMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4pPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHshaXNMYXN0ICYmIDxzcGFuIGNsYXNzTmFtZT1cInBzLXVwcGVyY2FzZSBwcy10ZXh0LWJsdWUtNTAwIHBzLWZvbnQtc2VtaWJvbGRcIj4ge2YuYWZ0ZXJ9IDwvc3Bhbj59XG4gICAgICA8L0ZyYWdtZW50PlxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiA8c3Bhbj57Z3JvdXB9PC9zcGFuPjtcbn07XG5cbi8vIE1haW4gY29tcG9uZW50XG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyVHJlZSh7XG4gIGZpbHRlcixcbiAgc2V0RmlsdGVyLFxuICBzZXRBcHBsaWVkRmlsdGVyLFxuICB0YWJsZSxcbn06IHtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbiAgc2V0RmlsdGVyOiAodXBkYXRlZEZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIHNldEFwcGxpZWRGaWx0ZXI6IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICB0YWJsZTogVGFibGU7XG59KSB7XG4gIGNvbnN0IGhhbmRsZUFwcGx5RmlsdGVycyA9ICgpID0+IHtcbiAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTRcIj5cbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudCBncm91cD17ZmlsdGVyfSBvblVwZGF0ZT17c2V0RmlsdGVyfSBvbkRlbGV0ZT17KCkgPT4ge319IGlzUm9vdD17dHJ1ZX0gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZGVmYXVsdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXNlbGYtZW5kXCIgb25DbGljaz17aGFuZGxlQXBwbHlGaWx0ZXJzfT5cbiAgICAgICAgQXBwbHkgRmlsdGVyc1xuICAgICAgPC9CdXR0b24+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDb2x1bW4sIEZpbHRlck9wZXJhdG9yIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9WYWx1ZShjb2x1bW46IENvbHVtbiB8IHVuZGVmaW5lZCwgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogc3RyaW5nKTogdW5rbm93biB7XG4gIGNvbnN0IGRhdGFUeXBlR3JvdXAgPSBjb2x1bW4/LmRhdGF0eXBlLmdyb3VwO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwibnVsbFwiID8gbnVsbCA6IHZhbHVlO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdmFsdWUgPT09IFwidHJ1ZVwiO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJyYXdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiB2YWx1ZTtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJqc29uXCIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpIGFzIHVua25vd247XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcih2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb1N0cmluZyhcbiAgY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsXG4gIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciB8IHVuZGVmaW5lZCxcbiAgdmFsdWU6IHVua25vd24sXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAob3BlcmF0b3IgJiYgKG9wZXJhdG9yID09PSBcImlzXCIgfHwgb3BlcmF0b3IgPT09IFwiaXMgbm90XCIpKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gXCJudWxsXCIgOiBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJib29sZWFuXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZW51bVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgaWYgKHZhbHVlID09PSBcIlwiKSByZXR1cm4gXCJcIjtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuIiwgImltcG9ydCAqIGFzIERyb3Bkb3duTWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgRHJvcGRvd25NZW51VHJpZ2dlciA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEcm9wZG93bk1lbnVHcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51UG9ydGFsID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9Hcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0b1wiIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkRyb3Bkb3duTWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bdmFyKC0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpXSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZFwiLFxuICAgICAgICBcImRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ecm9wZG93bk1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MCBbJj5zdmddOnBzLXNpemUtNCBbJj5zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51SXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtMiBwcy13LTIgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51TGFiZWwuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLW9wYWNpdHktNjBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn07XG5Ecm9wZG93bk1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51TGFiZWwsXG4gIERyb3Bkb3duTWVudVNlcGFyYXRvcixcbiAgRHJvcGRvd25NZW51U2hvcnRjdXQsXG4gIERyb3Bkb3duTWVudUdyb3VwLFxuICBEcm9wZG93bk1lbnVQb3J0YWwsXG4gIERyb3Bkb3duTWVudVN1YixcbiAgRHJvcGRvd25NZW51U3ViQ29udGVudCxcbiAgRHJvcGRvd25NZW51U3ViVHJpZ2dlcixcbiAgRHJvcGRvd25NZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IElucHV0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wczxcImlucHV0XCI+PihcbiAgKHsgY2xhc3NOYW1lLCB0eXBlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMSBwcy1zaGFkb3ctc20gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZmlsZTpwcy1ib3JkZXItMCBmaWxlOnBzLWJnLXRyYW5zcGFyZW50IGZpbGU6cHMtdGV4dC1zbSBmaWxlOnBzLWZvbnQtbWVkaXVtIGZpbGU6cHMtdGV4dC1mb3JlZ3JvdW5kIHBsYWNlaG9sZGVyOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MFwiLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfSxcbik7XG5JbnB1dC5kaXNwbGF5TmFtZSA9IFwiSW5wdXRcIjtcblxuZXhwb3J0IHsgSW5wdXQgfTtcbiIsICJpbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zZWxlY3RcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uRG93biwgQ2hldnJvblVwIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFNlbGVjdCA9IFNlbGVjdFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBTZWxlY3RHcm91cCA9IFNlbGVjdFByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgU2VsZWN0VmFsdWUgPSBTZWxlY3RQcmltaXRpdmUuVmFsdWU7XG5cbmNvbnN0IFNlbGVjdFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0yIHBzLXRleHQtc20gcHMtc2hhZG93LXNtIHBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGF0YS1bcGxhY2Vob2xkZXJdOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0xIGZvY3VzOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJj5zcGFuXTpwcy1saW5lLWNsYW1wLTFcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkljb24gYXNDaGlsZD5cbiAgICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLW9wYWNpdHktNTBcIiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4pKTtcblNlbGVjdFRyaWdnZXIuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsVXBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1weS0xXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZXZyb25VcCBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBwb3NpdGlvbiA9IFwicG9wcGVyXCIsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1yZWxhdGl2ZSBwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBwb3NpdGlvbiA9PT0gXCJwb3BwZXJcIiAmJlxuICAgICAgICAgIFwiZGF0YS1bc2lkZT1ib3R0b21dOnBzLXRyYW5zbGF0ZS15LTEgZGF0YS1bc2lkZT1sZWZ0XTpwcy0tdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXJpZ2h0XTpwcy10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9dG9wXTpwcy0tdHJhbnNsYXRlLXktMVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcG9zaXRpb249e3Bvc2l0aW9ufVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxTZWxlY3RTY3JvbGxVcEJ1dHRvbiAvPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydFxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcC0xXCIsXG4gICAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICAgIFwicHMtaC1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0KV0gcHMtdy1mdWxsIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCldXCIsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0PlxuICAgICAgPFNlbGVjdFNjcm9sbERvd25CdXR0b24gLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblNlbGVjdENvbnRlbnQuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy13LWZ1bGwgcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTIgcHMtcHItOCBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbT5cbikpO1xuU2VsZWN0SXRlbS5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvciByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblNlbGVjdFNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIFNlbGVjdCxcbiAgU2VsZWN0R3JvdXAsXG4gIFNlbGVjdFZhbHVlLFxuICBTZWxlY3RUcmlnZ2VyLFxuICBTZWxlY3RDb250ZW50LFxuICBTZWxlY3RMYWJlbCxcbiAgU2VsZWN0SXRlbSxcbiAgU2VsZWN0U2VwYXJhdG9yLFxuICBTZWxlY3RTY3JvbGxVcEJ1dHRvbixcbiAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCAiaW1wb3J0IHsgRG5kQ29udGV4dCwgdHlwZSBEcmFnRW5kRXZlbnQsIE1vdXNlU2Vuc29yLCB1c2VTZW5zb3IsIHVzZVNlbnNvcnMgfSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHsgYXJyYXlNb3ZlLCBob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSwgU29ydGFibGVDb250ZXh0LCB1c2VTb3J0YWJsZSB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2UsIFJvd1NlbGVjdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW5QaW5uaW5nU3RhdGUsXG4gIHR5cGUgQ29sdW1uU2l6aW5nU3RhdGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgdHlwZSBIZWFkZXIsXG4gIHR5cGUgT25DaGFuZ2VGbixcbiAgdHlwZSBQYWdpbmF0aW9uU3RhdGUsXG4gIHR5cGUgU29ydGluZ1N0YXRlLFxuICB0eXBlIFRhYmxlIGFzIFJlYWN0VGFibGUsXG4gIHVzZVJlYWN0VGFibGUsXG59IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IFJlYWN0VGFibGVEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHNcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgdHlwZSBDU1NQcm9wZXJ0aWVzLFxuICB0eXBlIFByb3BzV2l0aENoaWxkcmVuLFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc2tlbGV0b25cIjtcbmltcG9ydCB7IFRhYmxlLCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZUhlYWRlciwgVGFibGVSb3cgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyIH0gZnJvbSBcIi4vRGF0YUdyaWRIZWFkZXJcIjtcbmltcG9ydCB7IERhdGFHcmlkTG9hZGluZ0JhciB9IGZyb20gXCIuL0RhdGFHcmlkTG9hZGluZ0JhclwiO1xuaW1wb3J0IHsgRGF0YUdyaWRQYWdpbmF0aW9uIH0gZnJvbSBcIi4vRGF0YUdyaWRQYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcblxuLy8gQWRkIHRoaXMgbmV3IGNvbXBvbmVudCBmb3IgZHJhZ2dhYmxlIGhlYWRlciBjZWxsc1xudHlwZSBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBoZWFkZXI6IEhlYWRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIHN0eWxlOiBDU1NQcm9wZXJ0aWVzO1xuICB0YWJsZTogUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVhY3RUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+O1xufT47XG5cbmNvbnN0IERyYWdnYWJsZUhlYWRlckNlbGwgPSAocHJvcHM6IERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGhlYWRlciwgc3R5bGU6IGNvbW1vblN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgZGlzYWJsZURyYWdnaW5nID0gXCJkaXNhYmxlRHJhZ2dpbmdcIiBpbiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZjtcblxuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBzZXROb2RlUmVmLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgfSk7XG5cbiAgY29uc3QgZHJhZ1N0eWxlID0ge1xuICAgIC4uLmNvbW1vblN0eWxlLFxuICAgIGN1cnNvcjogXCJncmFiXCIsXG4gICAgdG91Y2hBY3Rpb246IFwibm9uZVwiLFxuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gIH0gYXMgQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBjb21tb25DbGFzcyA9IGNuKGNsYXNzTmFtZSwgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIpO1xuICBjb25zdCBkcmFnQ2xhc3MgPSBjbihjb21tb25DbGFzcywgaXNEcmFnZ2luZyAmJiBcIiFwcy16LTUwIHBzLWJvcmRlci0yIHBzLWJvcmRlci12aW9sZXQtNTAwXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlSGVhZFxuICAgICAgcmVmPXtzZXROb2RlUmVmfVxuICAgICAgey4uLmF0dHJpYnV0ZXN9XG4gICAgICB7Li4ubGlzdGVuZXJzfVxuICAgICAgc3R5bGU9e2Rpc2FibGVEcmFnZ2luZyA/IGNvbW1vblN0eWxlIDogZHJhZ1N0eWxlfVxuICAgICAgY2xhc3NOYW1lPXtkaXNhYmxlRHJhZ2dpbmcgPyBjb21tb25DbGFzcyA6IGRyYWdDbGFzc31cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L1RhYmxlSGVhZD5cbiAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQcm9wcyB7XG4gIGNvbHVtbkRlZnM6IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5bXTtcbiAgZ2V0QmVmb3JlUm93cz8odGhpczogdm9pZCwgdGFibGU6IFJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogUmVhY3ROb2RlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgb25QYWdpbmF0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT47XG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFJvd1NlbGVjdGlvblN0YXRlPjtcbiAgb25Tb3J0aW5nQ2hhbmdlPzogT25DaGFuZ2VGbjxTb3J0T3JkZXJJdGVtW10+O1xuICBwYWdlQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnaW5hdGlvblN0YXRlOiBQYWdpbmF0aW9uU3RhdGU7XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHJvd1NlbGVjdGlvblN0YXRlOiBSb3dTZWxlY3Rpb25TdGF0ZTtcbiAgc29ydGluZ1N0YXRlPzogU29ydE9yZGVySXRlbVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWQocHJvcHM6IERhdGFHcmlkUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbkRlZnMsXG4gICAgZ2V0QmVmb3JlUm93cyxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNQcm9jZXNzaW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2UsXG4gICAgcGFnZUNvdW50LFxuICAgIHBhZ2luYXRpb25TdGF0ZSxcbiAgICByb3dzLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHNvcnRpbmdTdGF0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFtjb2x1bW5PcmRlciwgc2V0Q29sdW1uT3JkZXJdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2NvbHVtblBpbm5pbmcsIHNldENvbHVtblBpbm5pbmddID0gdXNlU3RhdGU8Q29sdW1uUGlubmluZ1N0YXRlPih7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gIGNvbnN0IFtjb2x1bW5TaXppbmcsIHNldENvbHVtblNpemluZ10gPSB1c2VTdGF0ZTxDb2x1bW5TaXppbmdTdGF0ZT4oe30pO1xuICBjb25zdCBzb3J0aW5nID0gdXNlTWVtbygoKSA9PiB0b1NvcnRpbmdTdGF0ZShzb3J0aW5nU3RhdGUpLCBbc29ydGluZ1N0YXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlMb2FkZXIgPSBpc0xvYWRpbmcgfHwgaXNQcm9jZXNzaW5nO1xuXG4gIC8vIFJlc2V0IGNvbHVtbiBvcmRlciwgcGlubmluZywgYW5kIHNpemluZyB3aGVuIGNvbHVtbkRlZnMgY2hhbmdlICh3aGljaCBoYXBwZW5zIHdoZW4gdGFibGUgY2hhbmdlcylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDb2x1bW5PcmRlcihjb2x1bW5EZWZzLm1hcCgoeyBhY2Nlc3NvcktleSB9KSA9PiBhY2Nlc3NvcktleSkpO1xuICAgIHNldENvbHVtblBpbm5pbmcoeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICAgIHNldENvbHVtblNpemluZyh7fSk7XG4gIH0sIFtjb2x1bW5EZWZzXSk7XG5cbiAgLy8gaGFuZGxlcyBtb3ZpbmcgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjb2x1bW5zIGFuZCBzdGF0ZVxuICBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKHsgYWN0aXZlLCBvdmVyIH06IERyYWdFbmRFdmVudCkge1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgc2V0Q29sdW1uT3JkZXIoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3JkZXIuaW5kZXhPZihhY3RpdmUuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3Qgb3ZlckluZGV4ID0gb3JkZXIuaW5kZXhPZihvdmVyLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiBhcnJheU1vdmUob3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29uZmlndXJlIHRoZSBtb3VzZSBzZW5zb3IgZm9yIGRyYWcgYW5kIGRyb3BcbiAgY29uc3QgbW91c2VTZW5zb3IgPSB1c2VTZW5zb3IoTW91c2VTZW5zb3IsIHtcbiAgICAvLyBSZXF1aXJlIHRoZSBtb3VzZSB0byBtb3ZlIGJ5IDEwIHBpeGVscyBiZWZvcmUgYWN0aXZhdGluZ1xuICAgIGFjdGl2YXRpb25Db25zdHJhaW50OiB7XG4gICAgICBkaXN0YW5jZTogMTAsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKG1vdXNlU2Vuc29yKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGNvbHVtblJlc2l6ZU1vZGU6IFwib25DaGFuZ2VcIixcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGRhdGE6IHJvd3MsXG4gICAgZGVmYXVsdENvbHVtbjogeyBzaXplOiAyMDAsIG1pblNpemU6IDUwLCBtYXhTaXplOiA1MDAgfSxcbiAgICBlbmFibGVDb2x1bW5QaW5uaW5nOiB0cnVlLFxuICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVTb3J0aW5nOiBCb29sZWFuKG9uU29ydGluZ0NoYW5nZSAmJiBzb3J0aW5nU3RhdGUpLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0Um93SWQ6ICh7IF9fcHNfcm93aWQgfSkgPT4gX19wc19yb3dpZCBhcyBzdHJpbmcsXG4gICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICBtYW51YWxTb3J0aW5nOiB0cnVlLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHNldENvbHVtbk9yZGVyLFxuICAgIG9uQ29sdW1uUGlubmluZ0NoYW5nZTogc2V0Q29sdW1uUGlubmluZyxcbiAgICBvbkNvbHVtblNpemluZ0NoYW5nZTogc2V0Q29sdW1uU2l6aW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6ICh1cGRhdGVyT3JWYWx1ZSkgPT5cbiAgICAgIG9uU29ydGluZ0NoYW5nZT8uKChvbGQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdXBkYXRlck9yVmFsdWUgPSB1cGRhdGVyT3JWYWx1ZSh0b1NvcnRpbmdTdGF0ZShvbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvcnRPcmRlckl0ZW1zKHVwZGF0ZXJPclZhbHVlKTtcbiAgICAgIH0pLFxuICAgIHBhZ2VDb3VudCxcbiAgICBzdGF0ZToge1xuICAgICAgY29sdW1uT3JkZXIsXG4gICAgICBjb2x1bW5QaW5uaW5nLFxuICAgICAgY29sdW1uU2l6aW5nLFxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblN0YXRlLFxuICAgICAgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICAgIHNvcnRpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRPRE86IHBhdGNoIHNvIGl0IGlzIG5vdCBidW5kbGVkIGxpa2UgcmVhY3QtcXVlcnkgZGV2dG9vbHMsIG9yIHJlbW92ZSBjb21wbGV0ZWx5IG9uY2UgZGF0YSBncmlkIGlzIHN0YWJsZSBhbmQgdGVzdGVkLiAqL31cbiAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBudWxsIDogPFJlYWN0VGFibGVEZXZ0b29scyB0YWJsZT17dGFibGV9IC8+fVxuICAgICAgPGRpdiBkYXRhLXN0dWRpbz1cImNvbnRlbnRcIiBjbGFzc05hbWU9XCJwcy1mbGV4LTEgcHMtdy0wIHBzLWgtMCBwcy1taW4tdy1mdWxsIHBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdj57ZGlzcGxheUxvYWRlciAmJiA8RGF0YUdyaWRMb2FkaW5nQmFyIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIC1wcy10b3AtWzFweF0gcHMtbGVmdC0wIHBzLXJpZ2h0LTBcIiAvPn08L2Rpdj5cbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17c2Vuc29yc30gb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfT5cbiAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwicHMtdGFibGUtZml4ZWQgcHMtYm9yZGVyLXNlcGFyYXRlIHBzLWJvcmRlci1zcGFjaW5nLTAgcHMtYm94LWJvcmRlciBwcy13LWF1dG9cIj5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zPXtoZWFkZXJHcm91cC5oZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaGVhZGVyKSA9PiAhKFwiZGlzYWJsZURyYWdnaW5nXCIgaW4gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYpKVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGhlYWRlcikgPT4gaGVhZGVyLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k9e2hvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3Igc2VsZWN0IGNvbHVtblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgaGVhZGVyIGZ1bmN0aW9uIGRpcmVjdGx5LCB3aGljaCBzaG91bGQgYmUgU2VsZWN0SGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyRm4gPSBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGhlYWRlckZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGVhZGVyQ29tcG9uZW50ID0gaGVhZGVyRm4oaGVhZGVyLmdldENvbnRleHQoKSkgYXMgdW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgSGVhZGVyQ29tcG9uZW50IGlzIGEgZnVuY3Rpb24gKG5ldyBhcHByb2FjaCB3aXRoIHByb3BzIGZvcndhcmRpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSGVhZGVyQ29tcG9uZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaW5uaW5nU3R5bGVzID0gZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uaW5nU3R5bGVzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3Bpbm5pbmdTdHlsZXMuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtIZWFkZXJDb21wb25lbnQoe30pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBIZWFkZXJDb21wb25lbnQgaXMgYSBkaXJlY3QgSlNYIGVsZW1lbnQgKG9sZCBhcHByb2FjaClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIikuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17Z2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKS5zdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7SGVhZGVyQ29tcG9uZW50IGFzIEpTWC5FbGVtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gUmVndWxhciBjb2x1bW5zIHVzZSB0aGUgZHJhZ2dhYmxlIGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJhZ2dhYmxlSGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyPXtoZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlciBoZWFkZXI9e2hlYWRlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJhZ2dhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9UYWJsZUhlYWRlcj5cbiAgICAgICAgICAgIDxUYWJsZUJvZHk+XG4gICAgICAgICAgICAgIHtnZXRCZWZvcmVSb3dzPy4odGFibGUpfVxuICAgICAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgdGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcy1iZy10YWJsZS1yb3cgcHMtb2RkOmJnLXRhYmxlLXJvdy1vZGQgcHMtZ3JvdXAgWyY6bGFzdC1vZi10eXBlX3RkXTpwcy1ib3JkZXItYi0wIHBzLWdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlIENlbGwgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImdyb3VwLW9kZDpwcy1iZy1uZXV0cmFsLTUwIGdyb3VwLWV2ZW46cHMtYmctd2hpdGUgZ3JvdXAtaG92ZXI6cHMtYmctbmV1dHJhbC0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbCBrZXk9e2NlbGwuaWR9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZWxsLmdldFZhbHVlKCkgYXMgUmVhY3ROb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW49e2NvbHVtbkRlZnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTI0IHBzLXRleHQtbGVmdCBwcy1wLVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00LzVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTIvM1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgICAgPC9UYWJsZT5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICB7IXBhZ2VDb3VudCB8fCBwYWdlQ291bnQgPCAyID8gbnVsbCA6IDxEYXRhR3JpZFBhZ2luYXRpb24gdGFibGU9e3RhYmxlfSB2YXJpYW50PVwibnVtZXJpY1wiIC8+fVxuXG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiAhaXNQcm9jZXNzaW5nICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWFic29sdXRlIC1wcy1pbnNldC0wIHBzLXBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Tm8gcmVzdWx0cyBmb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgIEl0IGRvZXNuJmFwb3M7dCBsb29rIGxpa2UgeW91IGhhdmUgYW55IGRhdGEgaW4gdGhpcyB0YWJsZS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0aW5nU3RhdGUoZnJvbTogU29ydE9yZGVySXRlbVtdIHwgdW5kZWZpbmVkKTogU29ydGluZ1N0YXRlIHtcbiAgcmV0dXJuIGZyb20/Lm1hcCgoaXRlbSkgPT4gKHsgaWQ6IGl0ZW0uY29sdW1uLCBkZXNjOiBpdGVtLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIgfSkpIHx8IFtdO1xufVxuXG5mdW5jdGlvbiB0b1NvcnRPcmRlckl0ZW1zKGZyb206IFNvcnRpbmdTdGF0ZSk6IFNvcnRPcmRlckl0ZW1bXSB7XG4gIHJldHVybiBmcm9tLm1hcCgoaXRlbSkgPT4gKHtcbiAgICBjb2x1bW46IGl0ZW0uaWQsXG4gICAgZGlyZWN0aW9uOiBpdGVtLmRlc2MgPyBcImRlc2NcIiA6IFwiYXNjXCIsXG4gIH0pKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGdldEl0ZW0gPSAoa2V5OiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gICAgaWYgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShpdGVtVmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUPihcbiAga2V5OiBzdHJpbmcsXG4gIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZFxuKTogW1QgfCB1bmRlZmluZWQsIChuZXdWYWw6IFQgfCAoKHByZXZWYWw6IFQpID0+IFQpKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGU8VD4oKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0SXRlbShrZXkpIGFzIFQgfCB1bmRlZmluZWRcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBpbml0aWFsVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHNldFZhbHVlKFxuICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoaW5pdGlhbFZhbHVlKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRWYWx1ZSwga2V5XSlcblxuICBjb25zdCBzZXR0ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAodXBkYXRlcjogYW55KSA9PiB7XG4gICAgICBzZXRWYWx1ZShvbGQgPT4ge1xuICAgICAgICBsZXQgbmV3VmFsID0gdXBkYXRlclxuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlciA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgbmV3VmFsID0gdXBkYXRlcihvbGQpXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gbmV3VmFsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2tleV1cbiAgKVxuXG4gIHJldHVybiBbdmFsdWUsIHNldHRlcl1cbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWUgPSB7XG4gIGJhY2tncm91bmQ6ICcjMGIxNTIxJyxcbiAgYmFja2dyb3VuZEFsdDogJyMxMzIzMzcnLFxuICBmb3JlZ3JvdW5kOiAnd2hpdGUnLFxuICBncmF5OiAnIzNmNGU2MCcsXG4gIGdyYXlBbHQ6ICcjMjIyZTNlJyxcbiAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgaW5wdXRUZXh0Q29sb3I6ICcjMDAwJyxcbiAgc3VjY2VzczogJyMwMGFiNTInLFxuICBkYW5nZXI6ICcjZmYwMDg1JyxcbiAgYWN0aXZlOiAnIzAwNmJmZicsXG4gIHdhcm5pbmc6ICcjZmZiMjAwJyxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgVGhlbWUgPSB0eXBlb2YgZGVmYXVsdFRoZW1lXG5pbnRlcmZhY2UgUHJvdmlkZXJQcm9wcyB7XG4gIHRoZW1lOiBUaGVtZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5jb25zdCBUaGVtZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGRlZmF1bHRUaGVtZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoeyB0aGVtZSwgLi4ucmVzdCB9OiBQcm92aWRlclByb3BzKSB7XG4gIHJldHVybiA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGVtZX0gey4uLnJlc3R9IC8+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHByZWZlcmVuY2UgaW4gc3RhdGUsIHN0YXJ0IHdpdGggdGhlIGN1cnJlbnQgbWF0Y2hcbiAgY29uc3QgW2lzTWF0Y2gsIHNldElzTWF0Y2hdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzXG4gICAgfVxuICB9KVxuXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBtYXRjaGVyXG4gICAgICBjb25zdCBtYXRjaGVyID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpXG5cbiAgICAgIC8vIENyZWF0ZSBvdXIgaGFuZGxlclxuICAgICAgY29uc3Qgb25DaGFuZ2UgPSAoeyBtYXRjaGVzIH06IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PlxuICAgICAgICBzZXRJc01hdGNoKG1hdGNoZXMpXG5cbiAgICAgIC8vIExpc3RlbiBmb3IgY2hhbmdlc1xuICAgICAgbWF0Y2hlci5hZGRMaXN0ZW5lcihvbkNoYW5nZSlcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXNcbiAgICAgICAgbWF0Y2hlci5yZW1vdmVMaXN0ZW5lcihvbkNoYW5nZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc01hdGNoLCBxdWVyeSwgc2V0SXNNYXRjaF0pXG5cbiAgcmV0dXJuIGlzTWF0Y2hcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFRoZW1lLCB1c2VUaGVtZSB9IGZyb20gJy4vdGhlbWUnXG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknXG5cbmNvbnN0IGlzU2VydmVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcblxudHlwZSBTdHlsZWRDb21wb25lbnQ8VD4gPSBUIGV4dGVuZHMgJ2J1dHRvbidcbiAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICAgIEhUTUxCdXR0b25FbGVtZW50XG4gICAgPlxuICA6IFQgZXh0ZW5kcyAnaW5wdXQnXG4gICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgSFRNTElucHV0RWxlbWVudFxuICAgICAgPlxuICAgIDogVCBleHRlbmRzICdzZWxlY3QnXG4gICAgICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgICAgIFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PixcbiAgICAgICAgICBIVE1MU2VsZWN0RWxlbWVudFxuICAgICAgICA+XG4gICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXBcbiAgICAgICAgPyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0+XG4gICAgICAgIDogbmV2ZXJcblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKG1hdGNoOiBSb3V0ZU1hdGNoLCB0aGVtZTogVGhlbWUpIHtcbi8vICAgcmV0dXJuIG1hdGNoLmlzTG9hZGluZ1xuLy8gICAgID8gdGhlbWUuYWN0aXZlXG4vLyAgICAgOiBtYXRjaC5zdGF0dXMgPT09ICdyZWplY3RlZCdcbi8vICAgICA/IHRoZW1lLmRhbmdlclxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncGVuZGluZydcbi8vICAgICA/IHRoZW1lLndhcm5pbmdcbi8vICAgICA6IHRoZW1lLnN1Y2Nlc3Ncbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzTGFiZWwocXVlcnk6IFF1ZXJ5KSB7XG4vLyAgIHJldHVybiBxdWVyeS5zdGF0ZS5pc0ZldGNoaW5nXG4vLyAgICAgPyAnZmV0Y2hpbmcnXG4vLyAgICAgOiAhcXVlcnkuZ2V0T2JzZXJ2ZXJzQ291bnQoKVxuLy8gICAgID8gJ2luYWN0aXZlJ1xuLy8gICAgIDogcXVlcnkuaXNTdGFsZSgpXG4vLyAgICAgPyAnc3RhbGUnXG4vLyAgICAgOiAnZnJlc2gnXG4vLyB9XG5cbnR5cGUgU3R5bGVzID1cbiAgfCBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIHwgKChwcm9wczogUmVjb3JkPHN0cmluZywgYW55PiwgdGhlbWU6IFRoZW1lKSA9PiBSZWFjdC5DU1NQcm9wZXJ0aWVzKVxuXG5leHBvcnQgZnVuY3Rpb24gc3R5bGVkPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0eXBlOiBULFxuICBuZXdTdHlsZXM6IFN0eWxlcyxcbiAgcXVlcmllczogUmVjb3JkPHN0cmluZywgU3R5bGVzPiA9IHt9XG4pIHtcbiAgcmV0dXJuIFJlYWN0LmZvcndhcmRSZWY8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdLCBTdHlsZWRDb21wb25lbnQ8VD4+KFxuICAgICh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG5cbiAgICAgIGNvbnN0IG1lZGlhU3R5bGVzID0gT2JqZWN0LmVudHJpZXMocXVlcmllcykucmVkdWNlKFxuICAgICAgICAoY3VycmVudCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoa2V5KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocmVzdCwgdGhlbWUpIDogdmFsdWUpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGN1cnJlbnRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodHlwZSwge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLih0eXBlb2YgbmV3U3R5bGVzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IG5ld1N0eWxlcyhyZXN0LCB0aGVtZSlcbiAgICAgICAgICAgIDogbmV3U3R5bGVzKSxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi5tZWRpYVN0eWxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmLFxuICAgICAgfSlcbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzTW91bnRlZCgpIHtcbiAgY29uc3QgbW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNb3VudGVkID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gbW91bnRlZFJlZi5jdXJyZW50LCBbXSlcblxuICBSZWFjdFtpc1NlcnZlciA/ICd1c2VFZmZlY3QnIDogJ3VzZUxheW91dEVmZmVjdCddKCgpID0+IHtcbiAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gaXNNb3VudGVkXG59XG5cbi8qKlxuICogVGhpcyBob29rIGlzIGEgc2FmZSB1c2VTdGF0ZSB2ZXJzaW9uIHdoaWNoIHNjaGVkdWxlcyBzdGF0ZSB1cGRhdGVzIGluIG1pY3JvdGFza3NcbiAqIHRvIHByZXZlbnQgdXBkYXRpbmcgYSBjb21wb25lbnQgc3RhdGUgd2hpbGUgUmVhY3QgaXMgcmVuZGVyaW5nIGRpZmZlcmVudCBjb21wb25lbnRzXG4gKiBvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IG1vdW50ZWQgYW55bW9yZS5cbiAqL1xuZnVuY3Rpb24gdXNlU2FmZVN0YXRlPFQ+KGluaXRpYWxTdGF0ZTogVCk6IFtULCAodmFsdWU6IFQpID0+IHZvaWRdIHtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsU3RhdGUpXG5cbiAgY29uc3Qgc2FmZVNldFN0YXRlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBUKSA9PiB7XG4gICAgICBzY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdW50ZWQoKSkge1xuICAgICAgICAgIHNldFN0YXRlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgW2lzTW91bnRlZF1cbiAgKVxuXG4gIHJldHVybiBbc3RhdGUsIHNhZmVTZXRTdGF0ZV1cbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBtaWNyb3Rhc2suXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2NoZWR1bGUgc3RhdGUgdXBkYXRlcyBhZnRlciByZW5kZXJpbmcuXG4gKi9cbmZ1bmN0aW9uIHNjaGVkdWxlTWljcm90YXNrKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGVycm9yID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gICAgKVxufVxuIiwgImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBQYW5lbCA9IHN0eWxlZChcbiAgJ2RpdicsXG4gIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgIGZvbnRTaXplOiAnY2xhbXAoMTJweCwgMS41dncsIDE0cHgpJyxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzoge1xuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSxcbiAgICAnKG1heC13aWR0aDogNjAwcHgpJzoge1xuICAgICAgZm9udFNpemU6ICcuOWVtJyxcbiAgICAgIC8vIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gIH1cbilcblxuY29uc3QgQWN0aXZlUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoKSA9PiAoe1xuICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA3MDBweCknOiAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICAgIGJvcmRlclRvcDogYDJweCBzb2xpZCAke3RoZW1lLmdyYXl9YCxcbiAgICB9KSxcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkKCdidXR0b24nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgYmFja2dyb3VuZDogdGhlbWUuZ3JheSxcbiAgYm9yZGVyOiAnMCcsXG4gIGJvcmRlclJhZGl1czogJy4zZW0nLFxuICBjb2xvcjogJ3doaXRlJyxcbiAgcGFkZGluZzogJy41ZW0nLFxuICBvcGFjaXR5OiBwcm9wcy5kaXNhYmxlZCA/ICcuNScgOiB1bmRlZmluZWQsXG4gIGN1cnNvcjogJ3BvaW50ZXInLFxufSkpXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleXMgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuLy8gICBmb250U2l6ZTogJzAuOWVtJyxcbi8vIH0pXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleSA9IHN0eWxlZCgnc3BhbicsIHtcbi8vICAgZGlzcGxheTogJ2lubGluZS1mbGV4Jyxcbi8vICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4vLyAgIHBhZGRpbmc6ICcuMmVtIC40ZW0nLFxuLy8gICBmb250V2VpZ2h0OiAnYm9sZCcsXG4vLyAgIHRleHRTaGFkb3c6ICcwIDAgMTBweCBibGFjaycsXG4vLyAgIGJvcmRlclJhZGl1czogJy4yZW0nLFxuLy8gfSlcblxuY29uc3QgQ29kZSA9IHN0eWxlZCgnY29kZScsIHtcbiAgZm9udFNpemU6ICcuOWVtJyxcbn0pXG5cbmNvbnN0IElucHV0ID0gc3R5bGVkKCdpbnB1dCcsIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICBib3JkZXI6IDAsXG4gIGJvcmRlclJhZGl1czogJy4yZW0nLFxuICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGxpbmVIZWlnaHQ6IGAxLjNgLFxuICBwYWRkaW5nOiAnLjNlbSAuNGVtJyxcbn0pKVxuXG5jb25zdCBTZWxlY3QgPSBzdHlsZWQoXG4gICdzZWxlY3QnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBkaXNwbGF5OiBgaW5saW5lLWJsb2NrYCxcbiAgICBmb250U2l6ZTogYC45ZW1gLFxuICAgIGZvbnRGYW1pbHk6IGBzYW5zLXNlcmlmYCxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgICBwYWRkaW5nOiBgLjNlbSAxLjVlbSAuM2VtIC41ZW1gLFxuICAgIGhlaWdodDogJ2F1dG8nLFxuICAgIGJvcmRlcjogMCxcbiAgICBib3JkZXJSYWRpdXM6IGAuMmVtYCxcbiAgICBhcHBlYXJhbmNlOiBgbm9uZWAsXG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaW5wdXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSclMjM0NDQ0NDQnPjxwb2x5Z29uIHBvaW50cz0nMCwyNSAxMDAsMjUgNTAsNzUnLz48L3N2Zz5cIilgLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IGBuby1yZXBlYXRgLFxuICAgIGJhY2tncm91bmRQb3NpdGlvbjogYHJpZ2h0IC41NWVtIGNlbnRlcmAsXG4gICAgYmFja2dyb3VuZFNpemU6IGAuNjVlbSBhdXRvLCAxMDAlYCxcbiAgICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDUwMHB4KSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9XG4pXG4iLCAiLy8gQHRzLW5vY2hlY2tcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBFbnRyeSA9IHN0eWxlZCgnZGl2Jywge1xuICBmb250RmFtaWx5OiAnTWVubG8sIG1vbm9zcGFjZScsXG4gIGZvbnRTaXplOiAnMC43cmVtJyxcbiAgbGluZUhlaWdodDogJzEuNycsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59KVxuXG5jb25zdCBMYWJlbCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIGNvbG9yOiAnd2hpdGUnLFxufSlcblxuY29uc3QgVmFsdWUgPSBzdHlsZWQoJ3NwYW4nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBjb2xvcjogdGhlbWUuZGFuZ2VyLFxufSkpXG5cbmNvbnN0IFN1YkVudHJpZXMgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbWFyZ2luTGVmdDogJy4xcmVtJyxcbiAgcGFkZGluZ0xlZnQ6ICcxcmVtJyxcbiAgYm9yZGVyTGVmdDogJzJweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSknLFxufSlcblxuY29uc3QgSW5mbyA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY29sb3I6ICdncmV5JyxcbiAgZm9udFNpemU6ICcuN3JlbScsXG59KVxuXG5jb25zdCBFeHBhbmRlciA9ICh7IGV4cGFuZGVkLCBzdHlsZSA9IHt9LCAuLi5yZXN0IH0pID0+IChcbiAgPHNwYW5cbiAgICBzdHlsZT17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICB0cmFuc2l0aW9uOiAnYWxsIC4xcyBlYXNlJyxcbiAgICAgIHRyYW5zZm9ybTogYHJvdGF0ZSgke2V4cGFuZGVkID8gOTAgOiAwfWRlZykgJHtzdHlsZS50cmFuc2Zvcm0gfHwgJyd9YCxcbiAgICAgIC4uLnN0eWxlLFxuICAgIH19XG4gID5cbiAgICDilrZcbiAgPC9zcGFuPlxuKVxuXG5jb25zdCBEZWZhdWx0UmVuZGVyZXIgPSAoe1xuICBoYW5kbGVFbnRyeSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAvLyBwYXRoLFxuICBzdWJFbnRyaWVzLFxuICBzdWJFbnRyeVBhZ2VzLFxuICB0eXBlLFxuICAvLyBkZXB0aCxcbiAgZXhwYW5kZWQsXG4gIHRvZ2dsZSxcbiAgcGFnZVNpemUsXG4gIHJlbmRlcmVyLFxufSkgPT4ge1xuICBjb25zdCBbdmFsdWVTbmFwc2hvdCwgc2V0VmFsdWVTbmFwc2hvdF0gPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpXG4gIGNvbnN0IFtleHBhbmRlZFBhZ2VzLCBzZXRFeHBhbmRlZFBhZ2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxuXG4gIGNvbnN0IHJlZnJlc2hWYWx1ZVNuYXBzaG90ID0gKCkgPT4ge1xuICAgIHNldFZhbHVlU25hcHNob3QodmFsdWUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEVudHJ5IGtleT17bGFiZWx9PlxuICAgICAge3N1YkVudHJ5UGFnZXM/Lmxlbmd0aCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWwgb25DbGljaz17KCkgPT4gdG9nZ2xlKCl9PlxuICAgICAgICAgICAgPEV4cGFuZGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gLz4ge2xhYmVsfXsnICd9XG4gICAgICAgICAgICA8SW5mbz5cbiAgICAgICAgICAgICAge1N0cmluZyh0eXBlKS50b0xvd2VyQ2FzZSgpID09PSAnaXRlcmFibGUnID8gJyhJdGVyYWJsZSkgJyA6ICcnfVxuICAgICAgICAgICAgICB7c3ViRW50cmllcy5sZW5ndGh9IHtzdWJFbnRyaWVzLmxlbmd0aCA+IDEgPyBgaXRlbXNgIDogYGl0ZW1gfVxuICAgICAgICAgICAgPC9JbmZvPlxuICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAge2V4cGFuZGVkID8gKFxuICAgICAgICAgICAgc3ViRW50cnlQYWdlcy5sZW5ndGggPT09IDEgPyAoXG4gICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgIHtzdWJFbnRyaWVzLm1hcChlbnRyeSA9PiBoYW5kbGVFbnRyeShlbnRyeSkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cnlQYWdlcy5tYXAoKGVudHJpZXMsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICA8RW50cnk+XG4gICAgICAgICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBhbmRlZFBhZ2VzKG9sZCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5pbmNsdWRlcyhpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2xkLmZpbHRlcihkID0+IGQgIT09IGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbLi4ub2xkLCBpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IFt7aW5kZXggKiBwYWdlU2l6ZX0gLi4ueycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCAqIHBhZ2VTaXplICsgcGFnZVNpemUgLSAxfV1cbiAgICAgICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZFBhZ2VzLmluY2x1ZGVzKGluZGV4KSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9FbnRyeT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IHR5cGUgPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICByZW5kZXJlcj17cmVuZGVyZXJ9XG4gICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17cmVmcmVzaFZhbHVlU25hcHNob3R9PlxuICAgICAgICAgICAgICAgIDxMYWJlbD57bGFiZWx9PC9MYWJlbD4g8J+UhHsnICd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlU25hcHNob3R9XG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e3t9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWw+e2xhYmVsfTo8L0xhYmVsPnsnICd9XG4gICAgICAgICAgPFZhbHVlPlxuICAgICAgICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QodmFsdWUpKSl9XG4gICAgICAgICAgPC9WYWx1ZT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvRW50cnk+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwbG9yZXIoe1xuICB2YWx1ZSxcbiAgZGVmYXVsdEV4cGFuZGVkLFxuICByZW5kZXJlciA9IERlZmF1bHRSZW5kZXJlcixcbiAgcGFnZVNpemUgPSAxMDAsXG4gIGRlcHRoID0gMCxcbiAgLi4ucmVzdFxufSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRFeHBhbmRlZClcblxuICBjb25zdCB0b2dnbGUgPSBzZXQgPT4ge1xuICAgIHNldEV4cGFuZGVkKG9sZCA9PiAodHlwZW9mIHNldCAhPT0gJ3VuZGVmaW5lZCcgPyBzZXQgOiAhb2xkKSlcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBbXVxuXG4gIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG4gIGxldCBzdWJFbnRyaWVzXG4gIGNvbnN0IHN1YkVudHJ5UGFnZXMgPSBbXVxuXG4gIGNvbnN0IG1ha2VQcm9wZXJ0eSA9IHN1YiA9PiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IHBhdGguY29uY2F0KHN1Yi5sYWJlbClcbiAgICBjb25zdCBzdWJEZWZhdWx0RXhwYW5kZWQgPVxuICAgICAgZGVmYXVsdEV4cGFuZGVkID09PSB0cnVlXG4gICAgICAgID8geyBbc3ViLmxhYmVsXTogdHJ1ZSB9XG4gICAgICAgIDogZGVmYXVsdEV4cGFuZGVkPy5bc3ViLmxhYmVsXVxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdWIsXG4gICAgICBzdWJQYXRoOiBzdWIsXG4gICAgICBwYXRoOiBuZXdQYXRoLFxuICAgICAgZGVwdGg6IGRlcHRoICsgMSxcbiAgICAgIGRlZmF1bHRFeHBhbmRlZDogc3ViRGVmYXVsdEV4cGFuZGVkLFxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHR5cGUgPSAnYXJyYXknXG4gICAgc3ViRW50cmllcyA9IHZhbHVlLm1hcCgoZCwgaSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsOiBpLFxuICAgICAgICB2YWx1ZTogZCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHR5cGUgPSAnSXRlcmFibGUnXG4gICAgc3ViRW50cmllcyA9IEFycmF5LmZyb20odmFsdWUsICh2YWwsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHR5cGUgPSAnZnVuY3Rpb24nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHR5cGUgPSAnb2JqZWN0J1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBzdWJFbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdWJFbnRyaWVzKSB7XG4gICAgbGV0IGkgPSAwXG5cbiAgICB3aGlsZSAoaSA8IHN1YkVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBzdWJFbnRyeVBhZ2VzLnB1c2goc3ViRW50cmllcy5zbGljZShpLCBpICsgcGFnZVNpemUpKVxuICAgICAgaSA9IGkgKyBwYWdlU2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW5kZXJlcih7XG4gICAgaGFuZGxlRW50cnk6IGVudHJ5ID0+IChcbiAgICAgIDxFeHBsb3JlciBrZXk9e2VudHJ5LmxhYmVsfSByZW5kZXJlcj17cmVuZGVyZXJ9IHsuLi5yZXN0fSB7Li4uZW50cnl9IC8+XG4gICAgKSxcbiAgICB0eXBlLFxuICAgIHN1YkVudHJpZXMsXG4gICAgc3ViRW50cnlQYWdlcyxcbiAgICBkZXB0aCxcbiAgICB2YWx1ZSxcbiAgICBwYXRoLFxuICAgIGV4cGFuZGVkLFxuICAgIHRvZ2dsZSxcbiAgICBwYWdlU2l6ZSxcbiAgICAuLi5yZXN0LFxuICB9KVxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dvKHByb3BzOiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjQwcHhcIlxuICAgICAgaGVpZ2h0PVwiNDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE5MCAxOTBcIlxuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbFJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIGlkPVwib2ctd2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4LjAwMDAwMCwgLTIxLjAwMDAwMClcIj5cbiAgICAgICAgICA8ZyBpZD1cIkdyb3VwLTJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjguMDAwMDAwLCAzMS4wMDAwMDApXCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLCAxMC4wMDAwMDApXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0zOS43MjM5NzEyLDUxLjM0MzYyMzcgQzM2LjYzMTIyNCwzNi4zNjI4NzcgMzUuOTY3NTExMiwyNC44NzI3NzIyIDM3Ljk2NjYzMzEsMTYuNTI5MzU1MSBDMzkuMTU1NTk2NSwxMS41NjcxNjc4IDQxLjMyOTMwODgsNy41MTkwODQ2MiA0NC42MzQ2MDY0LDQuNTk4NDYzMDUgQzQ4LjEyNDEzOTQsMS41MTUwNDc3NyA1Mi41MzYwMzI3LDAuMDAyMDEyMTY2MDYgNTcuNDkzMjU3LDAuMDAyMDEyMTY2MDYgQzY1LjY3MTIwMTMsMC4wMDIwMTIxNjYwNiA3NC4yNjgyNjAyLDMuNzI3MzIxNDMgODMuNDU1NzI0NiwxMC44MDQ0MjY0IEM4Ny4yMDMxMjAzLDEzLjY5MTA0NTggOTEuMDkyNDM2NiwxNy4xNzA0MTEgOTUuMTMxNjUxNSwyMS4yNDQ0NzQ2IEM5NS40NTMxNDA0LDIwLjgzMTAyNjUgOTUuODE2NTQxNiwyMC40NDEwNDUzIDk2LjIyMTQzMDEsMjAuMDgwNjE1MiBDMTA3LjY0MDk4LDkuOTE0OTcxNTggMTE3LjI1NTI0NSwzLjU5ODkyNzE2IDEyNS40Nzg0MDgsMS4xNjM2NTA2OCBDMTMwLjM2Nzg5OSwtMC4yODQzNjQwMDUgMTM0Ljk1ODUyNiwtMC40MjIzMTc5NzggMTM5LjEzODkzNiwwLjk4MzAzMTAyMSBDMTQzLjU1MTYzMSwyLjQ2NjQ2ODQ0IDE0Ny4wNjc2Niw1LjUzMjk0ODg4IDE0OS41NDgzMTQsOS44MjgxMDkxMiBDMTUzLjY0MjI4OCwxNi45MTY2NzM1IDE1NC43MjE5MTgsMjYuMjMxMDk4MyAxNTMuMTk1NTk1LDM3LjczMjAyNDMgQzE1Mi41NzM0NTEsNDIuNDE5OTExMiAxNTEuNTA5ODUsNDcuNTI2MzgzMSAxNTAuMDA3MDk0LDUzLjA1OTMxNTMgQzE1MC41NzQwNDUsNTMuMTI3NzA4NiAxNTEuMTQyNDE2LDUzLjI1MzI4MDggMTUxLjcwNTA0MSw1My40Mzk1Mjk3IEMxNjYuMTkzOTMyLDU4LjIzNTg2NzggMTc2LjQ1MzU4Miw2My4zOTM3NDYyIDE4Mi42NjUwMjEsNjkuMjg4MjgzOSBDMTg2LjM2MDY2OSw3Mi43OTUzODMxIDE4OC43NzM5NzIsNzYuNjk5ODQzNCAxODkuNjQ2MzY1LDgxLjAyMTgyMDQgQzE5MC41NjcxNzYsODUuNTgzNjc0NiAxODkuNjY5MzEzLDkwLjE1OTMzMTYgMTg3LjE5MTU0OCw5NC40NTEyOTY3IEMxODMuMTA1MjExLDEwMS41Mjk2MTQgMTc1LjU5MTY0MywxMDcuMTEyMjEgMTY0Ljg4NzU4NywxMTEuNTM0MDMxIEMxNjAuNTg5NTUyLDExMy4zMDk1MzkgMTU1LjcyNjU3OSwxMTQuOTE3NTU5IDE1MC4yOTMyNTksMTE2LjM2Mzc0OCBDMTUwLjU0MTE3NiwxMTYuOTIyOTIgMTUwLjczMzUyMSwxMTcuNTE2NzU5IDE1MC44NjIxMzgsMTE4LjEzOTc1OCBDMTUzLjk1NDg4NiwxMzMuMTIwNTA1IDE1NC42MTg1OTgsMTQ0LjYxMDYxIDE1Mi42MTk0NzcsMTUyLjk1NDAyNyBDMTUxLjQzMDUxMywxNTcuOTE2MjE0IDE0OS4yNTY4MDEsMTYxLjk2NDI5NyAxNDUuOTUxNTAzLDE2NC44ODQ5MTkgQzE0Mi40NjE5NywxNjcuOTY4MzM0IDEzOC4wNTAwNzcsMTY5LjQ4MTM3IDEzMy4wOTI4NTMsMTY5LjQ4MTM3IEMxMjQuOTE0OTA4LDE2OS40ODEzNyAxMTYuMzE3ODUsMTY1Ljc1NjA2MSAxMDcuMTMwMzg1LDE1OC42Nzg5NTYgQzEwMy4zNDMxMDQsMTU1Ljc2MTYxMyA5OS40MTA4NjU1LDE1Mi4yMzg4MzkgOTUuMzI1NDMzNywxNDguMTA4NjE5IEM5NC45MDUwNzUzLDE0OC43NjU0NzQgOTQuMzg4OTY4MSwxNDkuMzc2MDExIDkzLjc3ODU2OTksMTQ5LjkxOTM4NSBDODIuMzU5MDE5OCwxNjAuMDg1MDI4IDcyLjc0NDc1NSwxNjYuNDAxMDczIDY0LjUyMTU5MTUsMTY4LjgzNjM0OSBDNTkuNjMyMTAwOSwxNzAuMjg0MzY0IDU1LjA0MTQ3MzYsMTcwLjQyMjMxOCA1MC44NjEwNjM2LDE2OS4wMTY5NjkgQzQ2LjQ0ODM2ODYsMTY3LjUzMzUzMiA0Mi45MzIzNDA0LDE2NC40NjcwNTEgNDAuNDUxNjg2MiwxNjAuMTcxODkxIEMzNi4zNTc3MTE2LDE1My4wODMzMjcgMzUuMjc4MDgyMywxNDMuNzY4OTAyIDM2LjgwNDQwNTMsMTMyLjI2Nzk3NiBDMzcuNDQ5MDM4LDEyNy40MTA2MzQgMzguNTY3NjIsMTIyLjEwMzg5OCA0MC4xNTc1ODkxLDExNi4zMzkwMDkgQzM5LjUzNjEwNDEsMTE2LjI3NjEwNCAzOC45MTIwNzU0LDExNi4xNDQ4MTYgMzguMjk0OTU5MSwxMTUuOTQwNTI5IEMyMy44MDYwNjg0LDExMS4xNDQxOTEgMTMuNTQ2NDE4NCwxMDUuOTg2MzEyIDcuMzM0OTc4OTIsMTAwLjA5MTc3NSBDMy42MzkzMzEyMSw5Ni41ODQ2NzU0IDEuMjI2MDI3NTIsOTIuNjgwMjE1MSAwLjM1MzYzNTIzNSw4OC4zNTgyMzgxIEMtMC41NjcxNzYzMzMsODMuNzk2MzgzOSAwLjMzMDY4NjU4MSw3OS4yMjA3MjY5IDIuODA4NDUyMzYsNzQuOTI4NzYxOCBDNi44OTQ3ODg2Myw2Ny44NTA0NDQzIDE0LjQwODM1NjUsNjIuMjY3ODQ4MSAyNS4xMTI0MTMzLDU3Ljg0NjAyNzMgQzI5LjUzODUxNDMsNTYuMDE3NjE1NCAzNC41NjM3MjA4LDU0LjM2NjgyMiA0MC4xOTM5Mzk0LDUyLjg4NzQ2NzQgQzM5Ljk5MzMzOTMsNTIuMzk2OTE3MSAzOS44MzQ5Mzc0LDUxLjg4MTEyMzUgMzkuNzIzOTcxMiw1MS4zNDM2MjM3IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMwMDJDNEJcIlxuICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDk1LjAwMDAwMCwgODUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05NS4wMDAwMDAsIC04NS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk05MS43MzUsMTEwIEw5MS43MzUsMTE2IEw4MC42MzIyMDUxLDExNiBDNzguODQxMTI4NiwxMTYgNzcuMTg2ODYxNCwxMTUuMDQxOTc1IDc2LjI5NTQ0ODksMTEzLjQ4ODQ4MyBMNzQuMjk0LDExMCBMOTEuNzM1LDExMCBaIE0xMTYuMTgxLDExMCBMMTE0LjE4MDI1NiwxMTMuNDg4NDgzIEMxMTMuMjg4ODQ0LDExNS4wNDE5NzUgMTExLjYzNDU3NiwxMTYgMTA5Ljg0MzUsMTE2IEw5OC43MzUsMTE2IEw5OC43MzUsMTEwIEwxMTYuMTgxLDExMCBaIE05MS43MzUsOTYgTDkxLjczNSwxMDMgTDcwLjI3NywxMDMgTDY2LjI2LDk2IEw5MS43MzUsOTYgWiBNMTI0LjIxNSw5NiBMMTIwLjE5OCwxMDMgTDk4LjczNSwxMDMgTDk4LjczNSw5NiBMMTI0LjIxNSw5NiBaIE05MS43MzUsODIgTDkxLjczNSw4OSBMNjIuMjQ0LDg5IEw2MS42NjMyNDM4LDg3Ljk4ODQ4MjYgQzYwLjc3ODkxODcsODYuNDQ3MzQxNyA2MC43Nzg5MTg3LDg0LjU1MjY1ODMgNjEuNjYzMjQzOCw4My4wMTE1MTc0IEw2Mi4yNDMsODIgTDkxLjczNSw4MiBaIE0xMjguMjMyLDgyIEwxMjguODEyNDYxLDgzLjAxMTUxNzQgQzEyOS42OTY3ODYsODQuNTUyNjU4MyAxMjkuNjk2Nzg2LDg2LjQ0NzM0MTcgMTI4LjgxMjQ2MSw4Ny45ODg0ODI2IEwxMjguMjMxLDg5IEw5OC43MzUsODkgTDk4LjczNSw4MiBMMTI4LjIzMiw4MiBaIE05MS43MzUsNjggTDkxLjczNSw3NSBMNjYuMjYsNzUgTDcwLjI3Nyw2OCBMOTEuNzM1LDY4IFogTTEyMC4xOTgsNjggTDEyNC4yMTUsNzUgTDk4LjczNSw3NSBMOTguNzM1LDY4IEwxMjAuMTk4LDY4IFogTTkxLjczNSw1NSBMOTEuNzM1LDYxIEw3NC4yOTMsNjEgTDc2LjI5NTQ0ODksNTcuNTExNTE3NCBDNzcuMTg2ODYxNCw1NS45NTgwMjUgNzguODQxMTI4Niw1NSA4MC42MzIyMDUxLDU1IEw5MS43MzUsNTUgWiBNMTA5Ljg0MzUsNTUgQzExMS42MzQ1NzYsNTUgMTEzLjI4ODg0NCw1NS45NTgwMjUgMTE0LjE4MDI1Niw1Ny41MTE1MTc0IEwxMTYuMTgyLDYxIEw5OC43MzUsNjEgTDk4LjczNSw1NSBMMTA5Ljg0MzUsNTUgWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJQb2x5Z29uLTJcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZEOTRDXCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTU0Ljg2MDE3MjksOTguMzU3NzU3OCBDNTYuMTcxNTIyNCw5Ny42MDgyODU2IDU3LjgzNjAyNDYsOTguMDc0NjAxNCA1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU4LjU3Nzk0MjQsOTkuMzk5MzAzNCBMNTkuMDUyNTg0MywxMDAuMjQzNTIgQzYyLjg1NjMzOTIsMTA2Ljk4Mjk5MyA2Ni44MTkwMTE2LDExMy4zODAxNzYgNzAuOTQwNjAxNiwxMTkuNDM1MDY4IEM3NS44MDc4ODA4LDEyNi41ODU0MjcgODEuMjgxODQsMTMzLjgyNDExIDg3LjM2MjQ3OTIsMTQxLjE1MTExNSBDODguMzE2ODc3OCwxNDIuMzAxMTQgODguMTg0OTQzNywxNDQuMDExMTc2IDg3LjA2NTY4NiwxNDQuOTk3OTM3IEw4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODYuNDU0MjA4NSwxNDUuNTM0NjI1IEM2Ni4zNDY1Mzg5LDE2My4xMDMzMTQgNTMuMjc3ODE4OCwxNjYuNjEyNTUyIDQ3LjI0ODA0ODIsMTU2LjA2MjM0MSBDNDEuMzUwMDY1MiwxNDUuNzQyNzE3IDQzLjQ4NDQ5MTUsMTI2Ljk4Mjg4OCA1My42NTEzMjc0LDk5Ljc4Mjg1MjYgQzUzLjg3NjgxOCw5OS4xNzk1ODIxIDU0LjMwNDU4NjEsOTguNjc1MjkxIDU0Ljg2MDE3MjksOTguMzU3NzU3OCBaIE0xNDAuNTM0MTc3LDExOS4wNDE1MDQgQzE0MS45ODYxMzEsMTE4Ljc4NTE3NyAxNDMuMzc1NDk2LDExOS43NDIxMzggMTQzLjY1OTYzLDEyMS4xOTQyNDIgTDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuODEyODE1LDEyMS45ODYzNzYgQzE0OC43ODIzNjUsMTQ3Ljk5NTQ1OSAxNDUuMjgzMzQ4LDE2MSAxMzMuMzE1NzY0LDE2MSBDMTIxLjYwOTc0NSwxNjEgMTA2LjcwODcyNCwxNDkuOTA5MDA3IDg4LjYxMjcwMTgsMTI3LjcyNzAyMiBDODguMjExMzQ5NSwxMjcuMjM1MDQ3IDg3Ljk5NDU3MjMsMTI2LjYxNzM3MSA4OCwxMjUuOTgxNTA5IEM4OC4wMTMxNTgsMTI0LjQ4MDY4NiA4OS4yMzU3ODU0LDEyMy4yNzQ2NTEgOTAuNzMwOTE4LDEyMy4yODc3NTYgTDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MS42ODQ2NTQ0LDEyMy4yOTQ1MzEgQzk5LjMwNTY5NzksMTIzLjMzNTk5NCAxMDYuNzE0Mzg3LDEyMy4wNzE1OTEgMTEzLjkxMDcyMywxMjIuNTAxMzIzIEMxMjIuNDA5MDM5LDEyMS44Mjc4OCAxMzEuMjgzNTIzLDEyMC42NzQ2MDcgMTQwLjUzNDE3NywxMTkuMDQxNTA0IFogTTE0Ny40MDg3MjYsNjMuODExOTY2MyBDMTQ3LjkzMjEzOSw2Mi40MDI2OTAzIDE0OS41MDgzODYsNjEuNjYzNDUzNyAxNTAuOTU0NTgxLDYyLjE0OTAxMiBMMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MS43NDI1NTIsNjIuNDE1NDg1NCBDMTc3LjU4Mzc2Myw3MS4yMTc5MjIgMTg3LjQwMjM1Niw4MC44OTE2ODA1IDE4MS4xOTgzMzIsOTEuNDM2NzYwOSBDMTc1LjEyOTkwNCwxMDEuNzUxMzY2IDE1Ny40ODQzNDcsMTA5LjI2MDMzOSAxMjguMjYxNjYsMTEzLjk2MzY3OCBDMTI3LjYxMzUyOSwxMTQuMDY3OTk0IDEyNi45NDg2NDMsMTEzLjk0NTk2OSAxMjYuMzgyNzM1LDExMy42MTg4NDMgQzEyNS4wNDcwMjUsMTEyLjg0NjcyOSAxMjQuNjAyMDQ2LDExMS4xNTgyMTQgMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuMzg4ODQ4LDEwOS44NDc0MzggTDEyNS44ODkzMjgsMTA5LjAxMDUgQzEyOS44NzcxODMsMTAyLjMxNjMzIDEzMy40ODEzNTgsOTUuNjU0MjYyMSAxMzYuNzAxODU0LDg5LjAyNDI5NTcgQzE0MC41MDUwMSw4MS4xOTQ4MTc5IDE0NC4wNzM5NjcsNzIuNzkwNzA4MSAxNDcuNDA4NzI2LDYzLjgxMTk2NjMgWiBNNjEuNzM4MzM5OCw1Ni4wMzYzMjE4IEM2Mi4zODY0NzA4LDU1LjkzMjAwNjMgNjMuMDUxMzU2NSw1Ni4wNTQwMzE1IDYzLjYxNzI2NDYsNTYuMzgxMTU3MyBDNjQuOTUyOTc1NCw1Ny4xNTMyNzEgNjUuMzk3OTUzOCw1OC44NDE3ODYyIDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuNjExMTUxNyw2MC4xNTI1NjE1IEw2NC4xMTA2NzE4LDYwLjk4OTUwMDEgQzYwLjEyMjgxNjgsNjcuNjgzNjY5OSA1Ni41MTg2NDE2LDc0LjM0NTczNzkgNTMuMjk4MTQ2Miw4MC45NzU3MDQzIEM0OS40OTQ5OSw4OC44MDUxODIxIDQ1LjkyNjAzMjgsOTcuMjA5MjkxOSA0Mi41OTEyNzQ0LDEwNi4xODgwMzQgQzQyLjA2Nzg2MDgsMTA3LjU5NzMxIDQwLjQ5MTYxNDIsMTA4LjMzNjU0NiAzOS4wNDU0MTksMTA3Ljg1MDk4OCBMMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM4LjI1NzQ0NzUsMTA3LjU4NDUxNSBDMTIuNDE2MjM3Miw5OC43ODIwNzggMi41OTc2NDM5OCw4OS4xMDgzMTk1IDguODAxNjY3ODYsNzguNTYzMjM5MSBDMTQuODcwMDk1Nyw2OC4yNDg2MzM1IDMyLjUxNTY1Myw2MC43Mzk2NjExIDYxLjczODMzOTgsNTYuMDM2MzIxOCBaIE0xMDMuNTQ1NzkyLDI0LjQ2NTM3NDYgQzEyMy42NTM0NjEsNi44OTY2ODY0MSAxMzYuNzIyMTgxLDMuMzg3NDQ3NzggMTQyLjc1MTk1MiwxMy45Mzc2NTg3IEMxNDguNjQ5OTM1LDI0LjI1NzI4MjYgMTQ2LjUxNTUwOCw0My4wMTcxMTIyIDEzNi4zNDg2NzMsNzAuMjE3MTQ3NCBDMTM2LjEyMzE4Miw3MC44MjA0MTc5IDEzNS42OTU0MTQsNzEuMzI0NzA5IDEzNS4xMzk4MjcsNzEuNjQyMjQyMiBDMTMzLjgyODQ3OCw3Mi4zOTE3MTQ0IDEzMi4xNjM5NzUsNzEuOTI1Mzk4NiAxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMS40MjIwNTgsNzAuNjAwNjk2NiBMMTMwLjk0NzQxNiw2OS43NTY0Nzk4IEMxMjcuMTQzNjYxLDYzLjAxNzAwNjUgMTIzLjE4MDk4OCw1Ni42MTk4MjM5IDExOS4wNTkzOTgsNTAuNTY0OTMyIEMxMTQuMTkyMTE5LDQzLjQxNDU3MjcgMTA4LjcxODE2LDM2LjE3NTg5MDMgMTAyLjYzNzUyMSwyOC44NDg4ODQ3IEMxMDEuNjgzMTIyLDI3LjY5ODg2MDIgMTAxLjgxNTA1NiwyNS45ODg4MjQzIDEwMi45MzQzMTQsMjUuMDAyMDYyOSBMMTAyLjkzNDMxNCwyNS4wMDIwNjI5IFogTTU3LjY4NDIzNjEsOCBDNjkuMzkwMjU1MSw4IDg0LjI5MTI3NTgsMTkuMDkwOTkyNiAxMDIuMzg3Mjk4LDQxLjI3Mjk3NzcgQzEwMi43ODg2NTEsNDEuNzY0OTUyNyAxMDMuMDA1NDI4LDQyLjM4MjYyODggMTAzLDQzLjAxODQ5MTEgQzEwMi45ODY4NDIsNDQuNTE5MzE0NCAxMDEuNzY0MjE1LDQ1LjcyNTM0ODkgMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEwxMDAuMjY5MDgyLDQ1LjcxMjI0NDUgTDk5LjMxNTM0NTYsNDUuNzA1NDY4OSBDOTEuNjk0MzAyMSw0NS42NjQwMDYzIDg0LjI4NTYxMjYsNDUuOTI4NDA5MSA3Ny4wODkyNzcyLDQ2LjQ5ODY3NzMgQzY4LjU5MDk2MTIsNDcuMTcyMTIgNTkuNzE2NDc2Nyw0OC4zMjUzOTMgNTAuNDY1ODIzNSw0OS45NTg0OTYyIEM0OS4wMTM4NjkxLDUwLjIxNDgyMzEgNDcuNjI0NTA0NCw0OS4yNTc4NjE4IDQ3LjM0MDM2OTcsNDcuODA1NzU4IEw0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMTg3MTg0Niw0Ny4wMTM2MjM1IEM0Mi4yMTc2MzQ3LDIxLjAwNDU0MTIgNDUuNzE2NjUxOSw4IDU3LjY4NDIzNjEsOCBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIkNvbWJpbmVkLVNoYXBlXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGNDE1NFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gIClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSdcblxuaW1wb3J0IHVzZUxvY2FsU3RvcmFnZSBmcm9tICcuL3VzZUxvY2FsU3RvcmFnZSdcbmltcG9ydCB7IHVzZUlzTW91bnRlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmltcG9ydCB7IFBhbmVsLCBCdXR0b24gfSBmcm9tICcuL3N0eWxlZENvbXBvbmVudHMnXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBkZWZhdWx0VGhlbWUgYXMgdGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuLy8gaW1wb3J0IHsgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgZ2V0UXVlcnlTdGF0dXNDb2xvciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgRXhwbG9yZXIgZnJvbSAnLi9FeHBsb3JlcidcbmltcG9ydCBMb2dvIGZyb20gJy4vTG9nbydcblxuaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVhY3QgdGFibGUgdG8gYXR0YWNoIHRoZSBkZXZ0b29scyB0by5cbiAgICovXG4gIHRhYmxlOiBhbnlcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHBhbmVsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBldGMuXG4gICAqL1xuICBwYW5lbFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgY2xvc2UgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgY2xvc2VCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHRvZ2dsZSBidXR0b24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIG9uQ2xpY2sgKGV4dGVuZCBkZWZhdWx0IGhhbmRsZXIpLCBldGMuXG4gICAqL1xuICB0b2dnbGVCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byByZW5kZXIgdGhlIGRldnRvb2xzIGluc2lkZSBhIGRpZmZlcmVudCB0eXBlIG9mIGNvbnRhaW5lciBlbGVtZW50IGZvciBhMTF5IHB1cnBvc2VzLlxuICAgKiBBbnkgc3RyaW5nIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgdmFsaWQgaW50cmluc2ljIEpTWCBlbGVtZW50IGlzIGFsbG93ZWQuXG4gICAqIERlZmF1bHRzIHRvICdmb290ZXInLlxuICAgKi9cbiAgY29udGFpbmVyRWxlbWVudD86IHN0cmluZyB8IGFueVxufVxuXG5pbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3Qgc3R5bGUgb2JqZWN0IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBpbmxpbmUgc3R5bGVzXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBSZWFjdCBjbGFzc05hbWUgcHJvcGVydHkgdXNlZCB0byBzdHlsZSBhIGNvbXBvbmVudCB3aXRoIGNsYXNzZXNcbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogQSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGFuZWwgaXMgb3BlbiBvciBjbG9zZWRcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0b2dnbGVzIHRoZSBvcGVuIGFuZCBjbG9zZSBzdGF0ZSBvZiB0aGUgcGFuZWxcbiAgICovXG4gIHNldElzT3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzKHtcbiAgaW5pdGlhbElzT3BlbixcbiAgdGFibGUsXG4gIHBhbmVsUHJvcHMgPSB7fSxcbiAgdG9nZ2xlQnV0dG9uUHJvcHMgPSB7fSxcbiAgY29udGFpbmVyRWxlbWVudDogQ29udGFpbmVyID0gJ2Zvb3RlcicsXG59OiBEZXZ0b29sc09wdGlvbnMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3Qgcm9vdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcGFuZWxSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgJ3JlYWN0VGFibGVEZXZ0b29sc09wZW4nLFxuICAgIGluaXRpYWxJc09wZW5cbiAgKVxuICBjb25zdCBpc01vdW50ZWQgPSB1c2VJc01vdW50ZWQoKVxuXG4gIGNvbnN0IHsgc3R5bGU6IHBhbmVsU3R5bGUgPSB7fSwgLi4ub3RoZXJQYW5lbFByb3BzIH0gPSBwYW5lbFByb3BzXG5cbiAgY29uc3Qge1xuICAgIHN0eWxlOiB0b2dnbGVCdXR0b25TdHlsZSA9IHt9LFxuICAgIG9uQ2xpY2s6IG9uVG9nZ2xlQ2xpY2ssXG4gICAgLi4ub3RoZXJUb2dnbGVCdXR0b25Qcm9wc1xuICB9ID0gdG9nZ2xlQnV0dG9uUHJvcHNcblxuICAvLyBEbyBub3QgcmVuZGVyIG9uIHRoZSBzZXJ2ZXJcbiAgaWYgKCFpc01vdW50ZWQoKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgcmVmPXtyb290UmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNcIj5cbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgey4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiT3BlbiBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICAgICAgICAgIG9uVG9nZ2xlQ2xpY2sgJiYgb25Ub2dnbGVDbGljayhlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICBtYXJnaW46ICcuNXJlbScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMS41ZW0nLFxuICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgICAgICAgIC4uLnRvZ2dsZUJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TG9nbyBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFxuICAgICAgICAgICAgcmVmPXtwYW5lbFJlZiBhcyBhbnl9XG4gICAgICAgICAgICB7Li4ub3RoZXJQYW5lbFByb3BzfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBzZXRJc09wZW49e3NldElzT3Blbn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBEZXZ0b29sc1BhbmVsT3B0aW9uc1xuPihmdW5jdGlvbiBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbChwcm9wcywgcmVmKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3Qge1xuICAgIHRhYmxlLFxuICAgIGlzT3BlbiA9IHRydWUsXG4gICAgc2V0SXNPcGVuLFxuICAgIC4uLnBhbmVsUHJvcHNcbiAgfSA9IHByb3BzIGFzIERldnRvb2xzUGFuZWxPcHRpb25zICYge1xuICAgIHRhYmxlOiBUYWJsZTxhbnk+XG4gIH1cblxuICAvLyBjb25zdCBbYWN0aXZlTWF0Y2hJZCwgc2V0QWN0aXZlUm91dGVJZF0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gIC8vICAgJ3JlYWN0VGFibGVEZXZ0b29sc0FjdGl2ZVJvdXRlSWQnLFxuICAvLyAgICcnLFxuICAvLyApXG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPFBhbmVsIHJlZj17cmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFwiIHsuLi5wYW5lbFByb3BzfT5cbiAgICAgICAgPHN0eWxlXG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICoge1xuICAgICAgICAgICAgICBzY3JvbGxiYXItY29sb3I6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH0gJHt0aGVtZS5ncmF5fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IC41ZW07XG4gICAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNDAlJyxcbiAgICAgICAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7dGhlbWUuZ3JheUFsdH1gLFxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdGhlbWUuYmFja2dyb3VuZEFsdCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ29cbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnY2xhbXAoLjhyZW0sIDJ2dywgMS4zcmVtKScsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZWFjdCBUYWJsZXsnICd9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGV2dG9vbHNcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIFJlYWN0IFRhYmxlIERldnRvb2xzXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIGZsZXg6ICcxJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkluc3RhbmNlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGV9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTdGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFN0YXRlKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0QWxsQ29sdW1ucygpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb3JlIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0Q29yZVJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJGaWx0ZXJlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEZpbHRlcmVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlNvcnRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFNvcnRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJHcm91cGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0R3JvdXBlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJFeHBhbmRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEV4cGFuZGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7LyogPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJvdyBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1BhbmVsPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKVxufSlcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctZm9yZWdyb3VuZC8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGZsZXhSZW5kZXIsIHR5cGUgSGVhZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQXJyb3dEb3duV2lkZU5hcnJvdywgQXJyb3dVcFdpZGVOYXJyb3csIENoZXZyb25Eb3duLCBNb3ZlRG93biwgTW92ZVVwLCBQaW4sIFBpbk9mZiwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbn0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgaGVhZGVyOiBIZWFkZXI8VERhdGEsIHVua25vd24+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlcjxURGF0YT4ocHJvcHM6IEhlYWRlclByb3BzPFREYXRhPikge1xuICBjb25zdCB7IGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIHtmbGV4UmVuZGVyKGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciwgaGVhZGVyLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkTG9hZGluZ0Jhcih7IGNsYXNzTmFtZSB9OiBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtbG9hZGluZy1iYXJcbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLVsycHhdIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtYmctdGFibGUtYm9yZGVyIHBzLXotNTBcIiwgY2xhc3NOYW1lKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWFuaW1hdGUtaW5kZXRlcm1pbmF0ZS1iYXIgcHMtaC1mdWxsIHBzLXctMS8zIHBzLXJvdW5kZWQtci1mdWxsIHBzLWJnLXByaW1hcnlcIiAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCwgQ2hldnJvbnNMZWZ0LCBDaGV2cm9uc1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHZhcmlhbnQ/OiBcImJhc2ljXCIgfCBcIm51bWVyaWNcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkUGFnaW5hdGlvbihwcm9wczogRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZSwgdmFyaWFudCA9IFwiYmFzaWNcIiB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBwYWdlSW5kZXggfSA9IHRhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbjtcbiAgY29uc3QgcGFnZUNvdW50ID0gdGFibGUuZ2V0UGFnZUNvdW50KCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJvdW5kZWQtYi1sZyBwcy1vdmVyZmxvdy1jbGlwIHBzLXN0aWNreSBwcy1ib3R0b20tMCBwcy1sZWZ0LTAgcHMtYm9yZGVyLXQtMCB3LWZ1bGwgcHMtei0yMCBwcy1wLTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXNwYWNlLXgtMiBwcy1weS0yIHBzLXB4LTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy1iYWNrZHJvcC1ibHVyLXNtIHBzLWJnLXRhYmxlLWhlYWQvOTBcIj5cbiAgICAgICAge3ZhcmlhbnQgPT09IFwiYmFzaWNcIiA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQcmV2aW91c1xuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBOZXh0XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgUGFnZVxuICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBtaW49ezF9XG4gICAgICAgICAgICAgICAgICBtYXg9e3BhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYWdlSW5kZXggKyAxfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0xNlwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZUluZGV4ID0gZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIC0gMSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXNocmluay0wIHBzLXctbWF4XCI+b2Yge3BhZ2VDb3VudH08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUNvdW50IC0gMSl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtblBpbm5pbmdTdHlsZXMoY29sdW1uOiBDb2x1bW48UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBraW5kOiBcImhlYWRlclwiIHwgXCJjZWxsXCIpIHtcbiAgY29uc3QgaXNQaW5uZWQgPSBjb2x1bW4uZ2V0SXNQaW5uZWQoKTtcbiAgY29uc3QgaXNMZWZ0UGlubmVkID0gaXNQaW5uZWQgPT09IFwibGVmdFwiO1xuICBjb25zdCBpc1JpZ2h0UGlubmVkID0gaXNQaW5uZWQgPT09IFwicmlnaHRcIjtcbiAgY29uc3QgaXNTZWxlY3RDb2x1bW4gPSBjb2x1bW4uaWQgPT09IFwiX19wc19zZWxlY3RcIjtcblxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogY24oXG4gICAgICBcInBzLWdyb3VwIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgIFwicHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXRleHQtZWxsaXBzaXNcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYgXCJwcy1zdGlja3lcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJoZWFkZXJcIiAmJiAoaXNTZWxlY3RDb2x1bW4gPyBcInBzLXotMzBcIiA6IFwicHMtei0yMFwiKSxcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJjZWxsXCIgJiYgKGlzU2VsZWN0Q29sdW1uID8gXCJwcy16LTEwXCIgOiBcInBzLXotMFwiKSxcbiAgICAgIGlzTGVmdFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bMnB4XzBfNXB4Xy0ycHhfcmdiYSgwLDAsMCwwLjEpXVwiLFxuICAgICAgaXNSaWdodFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bLTJweF8wXzVweF8tMnB4X3JnYmEoMCwwLDAsMC4xKV1cIixcbiAgICApLFxuICAgIHN0eWxlOiB7XG4gICAgICBtaW5XaWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICB3aWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICBsZWZ0OiBpc0xlZnRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0U3RhcnQoXCJsZWZ0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiBpc1JpZ2h0UGlubmVkID8gYCR7Y29sdW1uLmdldEFmdGVyKFwicmlnaHRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcG9zaXRpb246IGlzUGlubmVkID8gKFwic3RpY2t5XCIgYXMgY29uc3QpIDogdW5kZWZpbmVkLFxuICAgIH0gYXMgQ1NTUHJvcGVydGllcyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgKiBhcyBUb29sdGlwUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdG9vbHRpcFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRvb2x0aXBQcm92aWRlciA9IFRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXI7XG5cbmNvbnN0IFRvb2x0aXAgPSBUb29sdGlwUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRvb2x0aXBUcmlnZ2VyID0gVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBUb29sdGlwQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1iZy1wcmltYXJ5IHBzLXB4LTMgcHMtcHktMS41IHBzLXRleHQteHMgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtYW5pbWF0ZS1pbiBwcy1mYWRlLWluLTAgcHMtem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1Rvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ub29sdGlwQ29udGVudC5kaXNwbGF5TmFtZSA9IFRvb2x0aXBQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgVG9vbHRpcCwgVG9vbHRpcFRyaWdnZXIsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIgfTtcbiIsICJpbXBvcnQgeyBLZXlSb3VuZCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlckNlbGwoeyBjb2x1bW4gfTogeyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAge2NvbHVtbi5pc0luUHJpbWFyeUtleSAmJiAoXG4gICAgICAgIDxUb29sdGlwUHJvdmlkZXIgZGVsYXlEdXJhdGlvbj17MTIwfT5cbiAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICA8S2V5Um91bmQgc2l6ZT17MTJ9IGNsYXNzTmFtZT1cInBzLXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50IHNpZGU9XCJib3R0b21cIiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlByaW1hcnkgS2V5PC9zcGFuPlxuICAgICAgICAgICAgPC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtbWVkaXVtIHBzLXRydW5jYXRlXCI+e2NvbHVtbi5uYW1lfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC83MCBwcy1sb3dlcmNhc2UgcHMtdHJ1bmNhdGVcIj5cbiAgICAgICAge2NvbHVtbi5kYXRhdHlwZS5uYW1lfVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiLi9Cb29sZWFuSW5wdXRcIjtcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gXCIuL0RhdGVJbnB1dFwiO1xuaW1wb3J0IHsgRW51bUlucHV0IH0gZnJvbSBcIi4vRW51bUlucHV0XCI7XG5pbXBvcnQgeyBKc29uSW5wdXQgfSBmcm9tIFwiLi9Kc29uSW5wdXRcIjtcbmltcG9ydCB7IE51bWVyaWNJbnB1dCB9IGZyb20gXCIuL051bWVyaWNJbnB1dFwiO1xuaW1wb3J0IHsgUmF3SW5wdXQgfSBmcm9tIFwiLi9SYXdJbnB1dFwiO1xuaW1wb3J0IHsgVGltZUlucHV0IH0gZnJvbSBcIi4vVGltZUlucHV0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dChwcm9wczoge1xuICBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCB7IGNlbGwsIGNvbHVtbiwgb25TdWJtaXQgfSA9IHByb3BzO1xuICBjb25zdCB7IGdyb3VwLCBvcHRpb25zLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG4gIGNvbnN0IHJlYWRvbmx5ID0gY29sdW1uLmlzQ29tcHV0ZWQgfHwgcHJvcHMucmVhZG9ubHk7XG5cbiAgY29uc3QgY2VsbFZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIC8vIG9uIHJvdyBpbnNlcnRpb25zLCB3ZSB0cmVhdCB1bmRlZmluZWQgYXMgZW1wdHkgaW5wdXRcbiAgY29uc3QgdmFsdWUgPSBjZWxsVmFsdWUgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBjZWxsVmFsdWU7XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKc29uSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gb3B0aW9ucz17b3B0aW9uc30gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UmF3SW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17aXNPYmplY3RUeXBlKHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9sYWJlbFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQm9vbGVhbklucHV0KHByb3BzOiBCb29sZWFuSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCA/IGZhbHNlIDogKHZhbHVlIGFzIGJvb2xlYW4pKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlVG9TdWJtaXQgPSBzZXRUb051bGwgPyBudWxsIDogY3VycmVudFZhbHVlO1xuICAgIGlmICh2YWx1ZVRvU3VibWl0ICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQodmFsdWVUb1N1Ym1pdCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMCBwcy1weC0yXCI+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPVwiYm9vbGVhbi1pbnB1dFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIj5cbiAgICAgICAgICBCb29sZWFuXG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMjQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgIGlkPVwiYm9vbGVhbi1pbnB1dFwiXG4gICAgICAgICAgICBjaGVja2VkPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGRhdGEtdmFsdWVcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtZm9udC1tb25vXCJcbiAgICAgICAgICBpbml0aWFsPXt7IHg6IC00MCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgeDogMCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTIsIGRlbGF5OiAwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7c2V0VG9OdWxsID8gXCJOVUxMXCIgOiBTdHJpbmcoY3VycmVudFZhbHVlKX1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgTGFiZWxQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1sYWJlbFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBsYWJlbFZhcmlhbnRzID0gY3ZhKFxuICBcInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6cHMtb3BhY2l0eS03MFwiLFxuKTtcblxuY29uc3QgTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PiAmIFZhcmlhbnRQcm9wczx0eXBlb2YgbGFiZWxWYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPExhYmVsUHJpbWl0aXZlLlJvb3QgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24obGFiZWxWYXJpYW50cygpLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbkxhYmVsLmRpc3BsYXlOYW1lID0gTGFiZWxQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgTGFiZWwgfTtcbiIsICJpbXBvcnQgKiBhcyBTd2l0Y2hQcmltaXRpdmVzIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc3dpdGNoXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU3dpdGNoID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTd2l0Y2hQcmltaXRpdmVzLlJvb3RcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWlubGluZS1mbGV4IHBzLWgtNSBwcy13LTkgcHMtc2hyaW5rLTAgcHMtY3Vyc29yLXBvaW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtZnVsbCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0yIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGZvY3VzLXZpc2libGU6cHMtcmluZy1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLWJnLWlucHV0XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gICAgcmVmPXtyZWZ9XG4gID5cbiAgICA8U3dpdGNoUHJpbWl0aXZlcy5UaHVtYlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wb2ludGVyLWV2ZW50cy1ub25lIHBzLWJsb2NrIHBzLWgtNCBwcy13LTQgcHMtcm91bmRlZC1mdWxsIHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LWxnIHBzLXJpbmctMCBwcy10cmFuc2l0aW9uLXRyYW5zZm9ybSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10cmFuc2xhdGUteC00IGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtMFwiLFxuICAgICAgKX1cbiAgICAvPlxuICA8L1N3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbikpO1xuU3dpdGNoLmRpc3BsYXlOYW1lID0gU3dpdGNoUHJpbWl0aXZlcy5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTd2l0Y2ggfTtcbiIsICJpbXBvcnQgeyBDb3JuZXJEb3duTGVmdCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBJbnB1dEFjdGlvbnMgPSAoe1xuICBvblNhdmUsXG4gIG9uQ2FuY2VsLFxuICBvbkNsb3NlLFxuICBvbk51bGxDaGFuZ2UsXG4gIGlzTnVsbCA9IGZhbHNlLFxuICByZWFkb25seSxcbn06IElucHV0QWN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChvbk51bGxDaGFuZ2UpIG9uTnVsbENoYW5nZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIGlmIChvblNhdmUpIG9uU2F2ZSgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGlmIChvbkNhbmNlbCkgb25DYW5jZWwoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdGV4dC14cyBwcy1cIj5cbiAgICAgIHshcmVhZG9ubHkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTIgcHMtbXItYXV0b1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9PlxuICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICBTYXZlIGNoYW5nZXNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH0+XG4gICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtdGV4dC1bOHB4XSBwcy1sZWFkaW5nLW5vbmUgcHMtZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgIEVzY1xuICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgIENhbmNlbCBjaGFuZ2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7b25OdWxsQ2hhbmdlICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCIgaHRtbEZvcj1cInNldC1udWxsYWJsZVwiPlxuICAgICAgICAgICAgICAgIDxTd2l0Y2ggaWQ9XCJzZXQtbnVsbGFibGVcIiBjaGVja2VkPXtpc051bGx9IG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlTnVsbENoYW5nZX0gLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5TZXQgdG8gTlVMTDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIC8vIERldGVjdCBpZiBpbnB1dCBoYXMgdGltZSBjb21wb25lbnRcbiAgICAgIGNvbnN0IGhhc1RpbWUgPSBpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKTtcblxuICAgICAgLy8gSHVtYW4tcmVhZGFibGUgZm9ybWF0IChsb2NhbGl6ZWQpXG4gICAgICBpZiAoaGFzVGltZSkge1xuICAgICAgICAvLyBGb3IgdGltZXN0YW1wcywgc2hvdyBmdWxsIGRhdGUgYW5kIHRpbWVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIGRhdGVzLCBqdXN0IHNob3cgdGhlIGRhdGVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWREYXRlfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlSW5wdXRQcm9wcyB7XG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlucHV0KHByb3BzOiBVc2VJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlIH0gPSBwcm9wcztcblxuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlID8/IFwiXCIpO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtSW5wdXQocHJvcHM6IEVudW1JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIGNvbHVtbiwgdmFsdWUsIG9wdGlvbnMgPSBbXSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGwsIHZhbHVlXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7IC8vIFJlc2V0IG51bGwgc3RhdGUgYXMgd2VsbFxuICB9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLWZvbnQtbW9ubyBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1weC0yIHBzLXB5LTAgcHMtdy1mdWxsIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIHtjdXJyZW50VmFsdWV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1mbGV4LXdyYXAgcHMtZ2FwLTIgcHMtcC0yIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXSBwcy1tYXgtdy1bNTAwcHhdIHctZnVsbCBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLW92ZXJmbG93LXktc2Nyb2xsIHBzLW1heC1oLTMyXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXtvcHRpb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQ6IG9wdGlvbiA9PT0gY3VycmVudFZhbHVlID8gXCJkZWZhdWx0XCIgOiBcIm91dGxpbmVcIiB9KX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSnNvbklucHV0KHByb3BzOiBKc29uSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogKEpTT04ucGFyc2UoY3VycmVudFZhbHVlKSBhcyBvYmplY3QpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGpzb25WYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtYmFzZSBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNJbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0lucHV0KHByb3BzOiBOdW1lcmljSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSkpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gbnVtYmVyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcihjdXJyZW50VmFsdWUpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KG51bWVyaWNWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm51bWVyaWMtaW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgTnVtZXJpY1xuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0lucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3SW5wdXQocHJvcHM6IFJhd0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lSW5wdXQocHJvcHM6IFRpbWVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRpbWUgdmFsdWVzIGluIGEgaHVtYW4tcmVhZGFibGUgbWFubmVyXG4gIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGhhc1RpbWV6b25lID0gL1srLV1cXGR7Mn0oOlxcZHsyfSk/JC8udGVzdChpbnB1dFZhbHVlKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhgMjAwMC0wMS0wMSAke2lucHV0VmFsdWV9YCk7XG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiaDptbSBBXCIpICsgKGhhc1RpbWV6b25lID8gYCAoJHtkYXRlLmZvcm1hdChcIlpcIil9KWAgOiBcIlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5cXGQrKT8oWystXVxcZHsyfSg/OjpcXGR7Mn0pPyk/LztcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5wdXRWYWx1ZS5tYXRjaCh0aW1lUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hbMV0gfHwgXCIxMlwiLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtYXRjaFsyXSB8fCBcIjAwXCI7XG4gICAgICAgIGNvbnN0IHR6T2Zmc2V0ID0gbWF0Y2hbNF0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgcGVyaW9kID0gaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG4gICAgICAgIGNvbnN0IGhvdXIxMiA9IGhvdXJzICUgMTIgPT09IDAgPyAxMiA6IGhvdXJzICUgMTI7XG5cbiAgICAgICAgcmV0dXJuIGAke2hvdXIxMn06JHttaW51dGVzfSAke3BlcmlvZH0ke3R6T2Zmc2V0ID8gYCAoJHt0ek9mZnNldH0pYCA6IFwiXCJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWRUaW1lfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLCBwcm9wcyB9KX1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVmlldyB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXZpZXdcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG50eXBlIE5hdmlnYXRpb25Qcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSAmIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcblxuZXhwb3J0IGZ1bmN0aW9uIE5hdmlnYXRpb24oeyBjbGFzc05hbWUgfTogTmF2aWdhdGlvblByb3BzKSB7XG4gIC8vIFVzZSB0aGUgY3VzdG9tIGhvb2tzIHRvIGdldCBhbGwgbmVjZXNzYXJ5IHN0YXRlIGFuZCBoYW5kbGVyc1xuICBjb25zdCB7IHRhYmxlcywgYWN0aXZlVGFibGUsIGlzTG9hZGluZywgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG4gIGNvbnN0IHsgYWN0aXZlVmlldywgaGFuZGxlVmlld0NoYW5nZSB9ID0gdXNlQWN0aXZlVmlldygpO1xuXG4gIGNvbnN0IHNpZGVCYXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctNDggcHMtZ2FwLTQgcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtMCBwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZCBwcy1zaGFkb3cteHNcIixcbiAgICBjbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c2lkZUJhckNsYXNzZXN9PlxuICAgICAgPE5hdmlnYXRpb24uQmxvY2sgbGFiZWw9XCJTdHVkaW9cIj5cbiAgICAgICAgPE5hdmlnYXRpb24uSXRlbVxuICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVWaWV3ID09PSBcInNjaGVtYS12aXN1YWxpc2VyXCJ9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlVmlld0NoYW5nZShcInNjaGVtYS12aXN1YWxpc2VyXCIpfVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRcIlxuICAgICAgICA+XG4gICAgICAgICAgU2NoZW1hIHZpc3VhbGlzZXJcbiAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG5cbiAgICAgIHsvKiBUT0RPOiBzY2hlbWEgc2VsZWN0b3IuICovfVxuICAgICAgPE5hdmlnYXRpb24uQmxvY2sgbGFiZWw9XCJUYWJsZXNcIj5cbiAgICAgICAge3RhYmxlcy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgIHRhYmxlcy5tYXAoKHRhYmxlKSA9PiAoXG4gICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtXG4gICAgICAgICAgICAgIGtleT17YCR7dGFibGUuc2NoZW1hfS0ke3RhYmxlLm5hbWV9YH1cbiAgICAgICAgICAgICAgYXNDaGlsZFxuICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlVmlldyA9PT0gXCJ0YWJsZXNcIiAmJiBhY3RpdmVUYWJsZSA9PT0gdGFibGV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVWaWV3Q2hhbmdlKFwidGFibGVzXCIpO1xuICAgICAgICAgICAgICAgIGhhbmRsZVRhYmxlQ2hhbmdlKHRhYmxlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHMtcHktMSBwcy1mb250LW1vbm8gcHMtdGV4dC14cyBwcy10ZXh0LWZvcmVncm91bmQvNjAgaG92ZXI6cHMtdGV4dC1mb3JlZ3JvdW5kIHBzLXRyYW5zaXRpb24tYWxsIHBzLWN1cnNvci1wb2ludGVyIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1iZy1zbGF0ZS0yMDAgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWZvcmVncm91bmQgZGF0YS1bYWN0aXZlPXRydWVdOnBzLXRleHQtZm9yZWdyb3VuZGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxhIGhyZWY9e2AjdGFibGU9JHt0YWJsZS5uYW1lfSZzY2hlbWE9JHt0YWJsZS5zY2hlbWF9YH0+e3RhYmxlLm5hbWV9PC9hPlxuICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgKSlcbiAgICAgICAgKSA6IGlzTG9hZGluZyA/IChcbiAgICAgICAgICBBcnJheSg0KVxuICAgICAgICAgICAgLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0ga2V5PXtpbmRleH0gd3JhcENoaWxkcmVuSW5TcGFuPXtmYWxzZX0+XG4gICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtMyBwcy13LWZ1bGxcIiAvPlxuICAgICAgICAgICAgICA8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgICAgICkpXG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE5hdmlnYXRpb24uSXRlbT5ObyB0YWJsZXMgZm91bmQ8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgKX1cbiAgICAgIDwvTmF2aWdhdGlvbi5CbG9jaz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgQmxvY2sgPSAoeyBjbGFzc05hbWUsIGxhYmVsLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+ICYgeyBsYWJlbDogc3RyaW5nIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSB7Li4ucHJvcHN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy1wdC00IHBzLXBiLTIgcHMtcHgtNCBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctc2xhdGUtNTAvNTAgcHMtYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgICA8VGFibGUyIHNpemU9ezE2fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNjBcIiAvPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwicHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bVwiPntsYWJlbH08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmF2IGFyaWEtbGFiZWw9e2xhYmVsfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC1weCBwcy1wYi0zIHBzLXAtMlwiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L25hdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IEl0ZW0gPSAoe1xuICBjbGFzc05hbWUsXG4gIGFzQ2hpbGQgPSBmYWxzZSxcbiAgaXNBY3RpdmUsXG4gIHNpemUsXG4gIGNoaWxkcmVuLFxuICB3cmFwQ2hpbGRyZW5JblNwYW4gPSB0cnVlLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJidXR0b25cIj4gJiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIHNpemU/OiBcImRlZmF1bHRcIiB8IFwic21cIjtcbiAgd3JhcENoaWxkcmVuSW5TcGFuPzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICBkYXRhLXNpZGViYXI9XCJtZW51LWJ1dHRvblwiXG4gICAgICBkYXRhLXNpemU9e3NpemV9XG4gICAgICBkYXRhLWFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXB5LTEuNSBwcy1weC0yIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtcm91bmRlZC1tZCBwcy1mbGV4IHBzLWdhcC0yIHBzLWl0ZW1zLWNlbnRlciBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXRyYW5zcGFyZW50XCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge3dyYXBDaGlsZHJlbkluU3BhbiA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLXRydW5jYXRlXCI+e2NoaWxkcmVufTwvc3Bhbj4gOiBjaGlsZHJlbn1cbiAgICA8L0NvbXA+XG4gICk7XG59O1xuXG5OYXZpZ2F0aW9uLkJsb2NrID0gQmxvY2s7XG5OYXZpZ2F0aW9uLkl0ZW0gPSBJdGVtO1xuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGtleU1hcCwgdXNlUXVlcnlTdGF0ZSwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5pbXBvcnQgeyBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCwgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8qKlxuICogSG9vayB0byBlbmNhcHN1bGF0ZSBhbGwgbG9naWMgZm9yIG1hbmFnaW5nIHRoZSBhY3RpdmUgdGFibGUgc2VsZWN0aW9uLlxuICogSGFuZGxlcyBzeW5jaW5nIHdpdGggVVJMIHBhcmFtcywgZGVmYXVsdCBzZWxlY3Rpb24sIGFuZCBleHBvc2VzIGEgc2ltcGxlIEFQSSBmb3IgY29uc3VtZXJzLlxuICogU2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoaW4gU3R1ZGlvIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIGFkYXB0ZXIsIGVtaXRUZWxlbWV0cnlFdmVudCB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgZGF0YVVwZGF0ZWRBdCB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCBpc0xvYWRpbmcgPSBkYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVDtcblxuICAvLyBHZXQgYWxsIHRhYmxlcyBmb3IgdGhlIGN1cnJlbnQgc2NoZW1hXG4gIGNvbnN0IHRhYmxlczogVGFibGVbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hc1thZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJkYlwiXT8udGFibGVzIHx8IHt9KTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hcywgYWRhcHRlci5kZWZhdWx0U2NoZW1hXSk7XG5cbiAgLy8gQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiB0YWJsZXMgYWNyb3NzIGFsbCBzY2hlbWFzXG4gIGNvbnN0IHRvdGFsVGFibGVDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hcykucmVkdWNlKChzdW0sIHNjaGVtYSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIE9iamVjdC5rZXlzKHNjaGVtYS50YWJsZXMpLmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hc10pO1xuXG4gIGNvbnN0IFtmaXJzdFRhYmxlXSA9IHRhYmxlcztcblxuICBjb25zdCBbdGFibGVBbmRTY2hlbWEsIHNldFRhYmxlQW5kU2NoZW1hXSA9IHVzZVF1ZXJ5U3RhdGVzKFxuICAgIGtleU1hcCh7XG4gICAgICB0YWJsZToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiA/PyBcIlwiLFxuICAgICAgfSxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiA/PyBcIlwiLFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcbiAgLy8gQWRkIHF1ZXJ5IHN0YXRlIGZvciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtc1xuICBjb25zdCBbLCBzZXRQYWdlUGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInBhZ2VJbmRleFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG4gIGNvbnN0IFssIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwic29ydFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG5cbiAgLy8gRWZmZWN0IHRvIHN5bmMgYWN0aXZlIHRhYmxlIHdpdGggVVJMIHBhcmFtIGFuZCBkZWZhdWx0c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmcpIHJldHVybjtcbiAgICAvLyBJZiBzY2hlbWEgYW5kIHRhYmxlIHBhcmFtcyBpbiBVUkwsIHRyeSB0byBzZXQgdGhhdCB0YWJsZVxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8udGFibGUgJiYgdGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRhYmxlRnJvbVBhcmFtID0gdGFibGVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gdGFibGVBbmRTY2hlbWEudGFibGUpO1xuXG4gICAgICBpZiAodGFibGVGcm9tUGFyYW0pIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUodGFibGVGcm9tUGFyYW0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIG5vIHNjaGVtYS90YWJsZSBwYXJhbXMgb3Igbm90IGZvdW5kLCBzZXQgZmlyc3QgdGFibGUgYXMgZGVmYXVsdFxuICAgIGlmICh0YWJsZXMubGVuZ3RoID4gMCAmJiAhYWN0aXZlVGFibGUpIHtcbiAgICAgIHNldEFjdGl2ZVRhYmxlKGZpcnN0VGFibGUgfHwgbnVsbCk7XG4gICAgICBpZiAoZmlyc3RUYWJsZSkge1xuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IGZpcnN0VGFibGUubmFtZSwgc2NoZW1hOiBmaXJzdFRhYmxlLnNjaGVtYSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc0xvYWRpbmcsIHRhYmxlQW5kU2NoZW1hLCB0YWJsZXMsIGZpcnN0VGFibGUsIGFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWFdKTtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBhY3RpdmUgdGFibGUgYW5kIHVwZGF0ZSB0aGUgVVJMIHBhcmFtLlxuICAgKiBBbHNvIGNsZWFycyBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXMuXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdUYWJsZTogVGFibGUpID0+IHtcbiAgICAgIGlmIChhY3RpdmVUYWJsZSAhPT0gbmV3VGFibGUpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobmV3VGFibGUpO1xuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IG5ld1RhYmxlLm5hbWUsIHNjaGVtYTogbmV3VGFibGUuc2NoZW1hIH0pO1xuICAgICAgICAvLyBDbGVhciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXNcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWEsIHNldFBhZ2VQYXJhbSwgc2V0U29ydFBhcmFtXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBpc0xvYWRpbmdcbiAgICBpZiAoZGF0YVVwZGF0ZWRBdCAhPT0gLTEpIHtcbiAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCh7XG4gICAgICAgIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgZXZlbnRfaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIHRhYmxlX2NvdW50OiB0b3RhbFRhYmxlQ291bnQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFt0YWJsZXMsIGVtaXRUZWxlbWV0cnlFdmVudCwgZGF0YVVwZGF0ZWRBdCwgdG90YWxUYWJsZUNvdW50XSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0YWJsZXMsXG4gICAgYWN0aXZlVGFibGUsXG4gICAgaXNMb2FkaW5nLFxuICAgIGhhbmRsZVRhYmxlQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID0gLTE7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnRyb3NwZWN0aW9uKCkge1xuICBjb25zdCB7IGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgaW5pdGlhbERhdGE6IHtcbiAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgW2FkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcImRiXCJdOiB7XG4gICAgICAgICAgdGFibGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aW1lem9uZTogXCJVVENcIixcbiAgICAgIGZpbHRlck9wZXJhdG9yczogW10sXG4gICAgfSBzYXRpc2ZpZXMgSW50cm9zcGVjdGlvbixcbiAgICBpbml0aWFsRGF0YVVwZGF0ZWRBdDogSU5JVElBTF9EQVRBX1VQREFURURfQVQsXG4gICAgcXVlcnlGbjogYXN5bmMgKHsgc2lnbmFsIH0pID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgaW50cm9zcGVjdGlvbl0gPSBhd2FpdCBhZGFwdGVyLmludHJvc3BlY3QoeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnRyb3NwZWN0aW9uO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcImludHJvc3BlY3Rpb25cIl0sXG4gICAgLy8gaWYgaXMgaW5pdGlhbCBkYXRhLCByZWZldGNoIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIG5ldmVyIHJlZmV0Y2ggYXV0b21hdGljYWxseSBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICAvLyB3ZSBjYW4gc3RpbGwgcmVmZXRjaCBtYW51YWxseSB1c2luZyB0aGUgcXVlcnkgY2xpZW50IC0gcHJvYmFibHkgdHJpZ2dlcmVkIGJ5IGEgYnV0dG9uLlxuICAgIHN0YWxlVGltZTogKGN0eCkgPT4gKGN0eC5zdGF0ZS5kYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA/IDAgOiBJbmZpbml0eSksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8vIFR5cGVzIG1hdGNoaW5nIHRoZSBzY2hlbWEgdmlzdWFsaXplcidzIGV4cGVjdGVkIGZvcm1hdFxuZXhwb3J0IHR5cGUgRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBpc1ByaW1hcnk/OiBib29sZWFuO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFRhYmxlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uc2hpcCA9IHtcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTY2hlbWFWaXN1YWxpemF0aW9uRGF0YSA9IHtcbiAgdGFibGVzOiBUYWJsZVtdO1xuICByZWxhdGlvbnNoaXBzOiBSZWxhdGlvbnNoaXBbXTtcbn07XG5cbi8vIEEgc3BlY2lhbCB0YWJsZSB0byBzaG93IHdoZW4gbm8gdGFibGVzIGFyZSBmb3VuZFxuY29uc3QgTk9fVEFCTEVTX05PREU6IFRhYmxlID0ge1xuICBuYW1lOiBcIk5vIFRhYmxlcyBGb3VuZFwiLFxuICBmaWVsZHM6IFt7IG5hbWU6IFwibWVzc2FnZVwiLCB0eXBlOiBcImluZm9cIiwgaXNSZXF1aXJlZDogdHJ1ZSB9XSxcbn07XG5cbi8qKlxuICogQW5hbHl6ZXMgYSBmaWVsZCBuYW1lIHRvIGRldGVybWluZSBpZiBpdCBtaWdodCBiZSBhIGZvcmVpZ24ga2V5XG4gKiBDb21tb24gcGF0dGVybnMgaW5jbHVkZTogdGFibGVOYW1lX2lkLCB0YWJsZU5hbWVJZCwgZXRjLlxuICovXG5mdW5jdGlvbiBwb3RlbnRpYWxGb3JlaWduVGFibGUoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgLy8gQ2hlY2sgZm9yIGZpZWxkX2lkIHBhdHRlcm4gKGUuZy4gdXNlcl9pZClcbiAgY29uc3Qgc25ha2VDYXNlTWF0Y2ggPSBmaWVsZE5hbWUubWF0Y2goL14oLispX2lkJC8pO1xuICBpZiAoc25ha2VDYXNlTWF0Y2ggJiYgc25ha2VDYXNlTWF0Y2hbMV0pIHtcbiAgICByZXR1cm4gc25ha2VDYXNlTWF0Y2hbMV07XG4gIH1cblxuICAvLyBDaGVjayBmb3IgY2FtZWxDYXNlIHBhdHRlcm4gKGUuZy4gdXNlcklkKVxuICBjb25zdCBjYW1lbENhc2VNYXRjaCA9IGZpZWxkTmFtZS5tYXRjaCgvXiguKylJZCQvKTtcbiAgaWYgKGNhbWVsQ2FzZU1hdGNoICYmIGNhbWVsQ2FzZU1hdGNoWzFdKSB7XG4gICAgcmV0dXJuIGNhbWVsQ2FzZU1hdGNoWzFdO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIHNpbmd1bGFyIGZvcm0gbWF0Y2hlcyBhIHBsdXJhbCB0YWJsZSBuYW1lXG4gKiBWZXJ5IGJhc2ljIGltcGxlbWVudGF0aW9uIC0gd291bGQgbmVlZCBtb3JlIHNvcGhpc3RpY2F0ZWQgcGx1cmFsaXphdGlvbiBydWxlcyBmb3IgcHJvZHVjdGlvblxuICovXG5mdW5jdGlvbiBzaW5ndWxhckZvcm1NYXRjaGVzKHNpbmd1bGFyOiBzdHJpbmcsIHRhYmxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIENvbnZlcnQgYm90aCB0byBsb3dlcmNhc2UgZm9yIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvblxuICBjb25zdCBzaW5ndWxhckxvd2VyID0gc2luZ3VsYXIudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgdGFibGVOYW1lTG93ZXIgPSB0YWJsZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBDaGVjayBpZiBzaW5ndWxhciBtYXRjaGVzIHRoZSB0YWJsZSBuYW1lIGV4YWN0bHlcbiAgaWYgKHNpbmd1bGFyTG93ZXIgPT09IHRhYmxlTmFtZUxvd2VyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBWZXJ5IGJhc2ljIHBsdXJhbGl6YXRpb24gY2hlY2tcbiAgLy8gQ2hlY2sgaWYgdGFibGVOYW1lIGlzIHBsdXJhbCBmb3JtIG9mIHNpbmd1bGFyIChlLmcuIHVzZXIgLT4gdXNlcnMpXG4gIGlmICh0YWJsZU5hbWVMb3dlciA9PT0gYCR7c2luZ3VsYXJMb3dlcn1zYCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gSGFuZGxlIHNvbWUgY29tbW9uIGlycmVndWxhciBwbHVyYWxzXG4gIGNvbnN0IGlycmVndWxhclBsdXJhbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcbiAgICBwZXJzb246IFtcInBlb3BsZVwiLCBcInBlcnNvbnNcIl0sXG4gICAgY2hpbGQ6IFtcImNoaWxkcmVuXCJdLFxuICAgIG1hbjogW1wibWVuXCJdLFxuICAgIHdvbWFuOiBbXCJ3b21lblwiXSxcbiAgICBmb290OiBbXCJmZWV0XCJdLFxuICAgIHRvb3RoOiBbXCJ0ZWV0aFwiXSxcbiAgICBnb29zZTogW1wiZ2Vlc2VcIl0sXG4gICAgbW91c2U6IFtcIm1pY2VcIl0sXG4gICAgZGF0dW06IFtcImRhdGFcIl0sXG4gICAgYW5hbHlzaXM6IFtcImFuYWx5c2VzXCJdLFxuICAgIGNyaXRlcmlvbjogW1wiY3JpdGVyaWFcIl0sXG4gICAgbWVkaXVtOiBbXCJtZWRpYVwiXSxcbiAgfTtcblxuICBpZiAoaXJyZWd1bGFyUGx1cmFsc1tzaW5ndWxhckxvd2VyXT8uaW5jbHVkZXModGFibGVOYW1lTG93ZXIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogSG9vayB0aGF0IHRyYW5zZm9ybXMgdGhlIGRhdGFiYXNlIGludHJvc3BlY3Rpb24gZGF0YSBpbnRvIGEgZm9ybWF0IHN1aXRhYmxlXG4gKiBmb3IgdGhlIHNjaGVtYSB2aXN1YWxpemVyLlxuICpcbiAqIEByZXR1cm5zIFNjaGVtYVZpc3VhbGl6YXRpb25EYXRhIC0gdGFibGVzIGFuZCB0aGVpciByZWxhdGlvbnNoaXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY2hlbWFWaXN1YWxpemF0aW9uKCk6IFNjaGVtYVZpc3VhbGl6YXRpb25EYXRhIHtcbiAgY29uc3QgeyBkYXRhOiBpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmcsIGVycm9yIH0gPSB1c2VJbnRyb3NwZWN0aW9uKCk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybiB7IHRhYmxlczogW10sIHJlbGF0aW9uc2hpcHM6IFtdIH07XG4gICAgfVxuXG4gICAgaWYgKCFpbnRyb3NwZWN0aW9uKSB7XG4gICAgICByZXR1cm4geyB0YWJsZXM6IFtOT19UQUJMRVNfTk9ERV0sIHJlbGF0aW9uc2hpcHM6IFtdIH07XG4gICAgfVxuXG4gICAgY29uc3QgdGFibGVzOiBUYWJsZVtdID0gW107XG4gICAgY29uc3QgdGFibGVNYXA6IFJlY29yZDxzdHJpbmcsIFRhYmxlPiA9IHt9O1xuICAgIGxldCBoYXNBbnlUYWJsZXMgPSBmYWxzZTtcblxuICAgIC8vIFByb2Nlc3MgZWFjaCBzY2hlbWFcbiAgICBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hcykuZm9yRWFjaCgoc2NoZW1hKSA9PiB7XG4gICAgICAvLyBQcm9jZXNzIGVhY2ggdGFibGUgaW4gdGhlIHNjaGVtYVxuICAgICAgT2JqZWN0LnZhbHVlcyhzY2hlbWEudGFibGVzKS5mb3JFYWNoKCh0YWJsZSkgPT4ge1xuICAgICAgICBoYXNBbnlUYWJsZXMgPSB0cnVlO1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXTtcblxuICAgICAgICAvLyBQcm9jZXNzIGVhY2ggY29sdW1uIGluIHRoZSB0YWJsZVxuICAgICAgICBPYmplY3QudmFsdWVzKHRhYmxlLmNvbHVtbnMpLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgdHlwZTogY29sdW1uLmRhdGF0eXBlLm5hbWUsXG4gICAgICAgICAgICBpc1ByaW1hcnk6IGNvbHVtbi5pc0luUHJpbWFyeUtleSxcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ6ICFjb2x1bW4ubnVsbGFibGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgdGFibGUgdG8gb3VyIGFycmF5IGFuZCBtYXBcbiAgICAgICAgY29uc3QgdGFibGVPYmplY3Q6IFRhYmxlID0ge1xuICAgICAgICAgIG5hbWU6IHRhYmxlLm5hbWUsXG4gICAgICAgICAgZmllbGRzLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRhYmxlcy5wdXNoKHRhYmxlT2JqZWN0KTtcbiAgICAgICAgdGFibGVNYXBbdGFibGUubmFtZV0gPSB0YWJsZU9iamVjdDtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gUmV0dXJuIGEgcGxhY2Vob2xkZXIgbm9kZSBpZiBubyB0YWJsZXMgd2VyZSBmb3VuZFxuICAgIGlmICghaGFzQW55VGFibGVzIHx8IHRhYmxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHRhYmxlczogW05PX1RBQkxFU19OT0RFXSwgcmVsYXRpb25zaGlwczogW10gfTtcbiAgICB9XG5cbiAgICAvLyBEZXRlY3QgcmVsYXRpb25zaGlwcyBieSBhbmFseXppbmcgZmllbGQgbmFtZXNcbiAgICBjb25zdCByZWxhdGlvbnNoaXBzOiBSZWxhdGlvbnNoaXBbXSA9IFtdO1xuXG4gICAgLy8gRm9yIGVhY2ggdGFibGUsIGV4YW1pbmUgaXRzIGZpZWxkcyBmb3IgcG90ZW50aWFsIGZvcmVpZ24ga2V5c1xuICAgIHRhYmxlcy5mb3JFYWNoKChzb3VyY2VUYWJsZSkgPT4ge1xuICAgICAgc291cmNlVGFibGUuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgIC8vIFNraXAgcHJpbWFyeSBrZXkgZmllbGRzXG4gICAgICAgIGlmIChmaWVsZC5pc1ByaW1hcnkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgZmllbGQgbmFtZSBzdWdnZXN0cyBhIGZvcmVpZ24ga2V5XG4gICAgICAgIGNvbnN0IHBvdGVudGlhbFRhYmxlID0gcG90ZW50aWFsRm9yZWlnblRhYmxlKGZpZWxkLm5hbWUpO1xuICAgICAgICBpZiAoIXBvdGVudGlhbFRhYmxlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTG9vayBmb3IgYSBtYXRjaGluZyB0YWJsZVxuICAgICAgICBjb25zdCB0YXJnZXRUYWJsZUVudHJ5ID0gT2JqZWN0LmVudHJpZXModGFibGVNYXApLmZpbmQoKFt0YWJsZU5hbWVdKSA9PlxuICAgICAgICAgIHNpbmd1bGFyRm9ybU1hdGNoZXMocG90ZW50aWFsVGFibGUsIHRhYmxlTmFtZSksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRhcmdldFRhYmxlRW50cnkpIHtcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0VGFibGVOYW1lXSA9IHRhcmdldFRhYmxlRW50cnk7XG5cbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgdGFyZ2V0IHRhYmxlIGhhcyBhIHByaW1hcnkga2V5XG4gICAgICAgICAgY29uc3QgdGFyZ2V0VGFibGUgPSB0YWJsZU1hcFt0YXJnZXRUYWJsZU5hbWVdO1xuICAgICAgICAgIGlmICh0YXJnZXRUYWJsZSkge1xuICAgICAgICAgICAgY29uc3QgaGFzUHJpbWFyeUtleSA9IHRhcmdldFRhYmxlLmZpZWxkcy5zb21lKChmKSA9PiBmLmlzUHJpbWFyeSk7XG5cbiAgICAgICAgICAgIGlmIChoYXNQcmltYXJ5S2V5KSB7XG4gICAgICAgICAgICAgIC8vIEFkZCB0aGUgcmVsYXRpb25zaGlwIChhc3N1bWluZyBvbmUtdG8tbWFueSBieSBkZWZhdWx0KVxuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGZyb206IHRhcmdldFRhYmxlTmFtZSwgLy8gVGhlIHRhYmxlIGJlaW5nIHJlZmVyZW5jZWRcbiAgICAgICAgICAgICAgICB0bzogc291cmNlVGFibGUubmFtZSwgLy8gVGhlIHRhYmxlIHdpdGggdGhlIGZvcmVpZ24ga2V5XG4gICAgICAgICAgICAgICAgdHlwZTogXCIxOm5cIiwgLy8gQXNzdW1pbmcgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBSZXR1cm4gdGhlIHRhYmxlcyBhbmQgZGV0ZWN0ZWQgcmVsYXRpb25zaGlwc1xuICAgIHJldHVybiB7IHRhYmxlcywgcmVsYXRpb25zaGlwcyB9O1xuICB9LCBbaW50cm9zcGVjdGlvbiwgaXNMb2FkaW5nLCBlcnJvcl0pO1xufVxuIiwgImltcG9ydCBcInJlYWN0Zmxvdy9kaXN0L3N0eWxlLmNzc1wiO1xuXG5pbXBvcnQgeyBBbGVydENpcmNsZSwgQ2FsZW5kYXIsIEhhc2gsIEtleSwgTWFpbCwgUGhvbmUsIFVzZXIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyB0eXBlIEZDLCBtZW1vLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RGbG93LCB7XG4gIGFkZEVkZ2UsXG4gIEJhY2tncm91bmQsXG4gIHR5cGUgQ29ubmVjdGlvbixcbiAgQ29ubmVjdGlvbkxpbmVUeXBlLFxuICBDb250cm9scyxcbiAgdHlwZSBFZGdlLFxuICBIYW5kbGUsXG4gIHR5cGUgTm9kZSxcbiAgdHlwZSBOb2RlUHJvcHMsXG4gIHR5cGUgTm9kZVR5cGVzLFxuICBQb3NpdGlvbixcbiAgdXNlRWRnZXNTdGF0ZSxcbiAgdXNlTm9kZXNTdGF0ZSxcbn0gZnJvbSBcInJlYWN0Zmxvd1wiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxudHlwZSBGaWVsZCA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGlzUHJpbWFyeT86IGJvb2xlYW47XG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxudHlwZSBUYWJsZSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBmaWVsZHM6IEZpZWxkW107XG59O1xuXG50eXBlIFNjaGVtYVZpc3VhbGl6YXRpb25Qcm9wcyA9IHtcbiAgdGFibGVzOiBUYWJsZVtdO1xuICByZWxhdGlvbnNoaXBzOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZzsgdHlwZTogc3RyaW5nIH1bXTtcbn07XG5cbmludGVyZmFjZSBUYWJsZU5vZGVEYXRhIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgZmllbGRzOiBGaWVsZFtdO1xufVxuXG5jb25zdCBUYWJsZU5vZGU6IEZDPE5vZGVQcm9wczxUYWJsZU5vZGVEYXRhPj4gPSBtZW1vKCh7IGRhdGEgfSkgPT4ge1xuICBjb25zdCBpc05vVGFibGVzTm9kZSA9IGRhdGEubGFiZWwgPT09IFwiTm8gVGFibGVzIEZvdW5kXCI7XG5cbiAgY29uc3QgZ2V0SWNvbiA9IChmaWVsZE5hbWU6IHN0cmluZywgZmllbGRUeXBlOiBzdHJpbmcpID0+IHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHRoZSBcIk5vIFRhYmxlcyBGb3VuZFwiIG5vZGVcbiAgICBpZiAoaXNOb1RhYmxlc05vZGUgJiYgZmllbGRUeXBlID09PSBcImluZm9cIikge1xuICAgICAgcmV0dXJuIDxBbGVydENpcmNsZSBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz47XG4gICAgfVxuXG4gICAgLy8gUmVndWxhciBmaWVsZCBpY29uc1xuICAgIHN3aXRjaCAoZmllbGROYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgXCJpZFwiOlxuICAgICAgICByZXR1cm4gPEhhc2ggY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+O1xuICAgICAgY2FzZSBcImVtYWlsXCI6XG4gICAgICAgIHJldHVybiA8TWFpbCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz47XG4gICAgICBjYXNlIFwicGhvbmVcIjpcbiAgICAgICAgcmV0dXJuIDxQaG9uZSBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz47XG4gICAgICBjYXNlIFwibmFtZVwiOlxuICAgICAgICByZXR1cm4gPFVzZXIgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+O1xuICAgICAgY2FzZSBcImNyZWF0ZWRhdFwiOlxuICAgICAgY2FzZSBcInVwZGF0ZWRhdFwiOlxuICAgICAgICByZXR1cm4gPENhbGVuZGFyIGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiA8S2V5IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLW1pbi13LVsyNTBweF0gcHMtc2hhZG93LXhsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1ib3JkZXIgcHMtYmctY2FyZFwiLFxuICAgICAgICBpc05vVGFibGVzTm9kZSAmJiBcInBzLWJvcmRlci1vcmFuZ2UtNDAwXCIsXG4gICAgICApfVxuICAgID5cbiAgICAgIDxIYW5kbGUgdHlwZT1cInRhcmdldFwiIHBvc2l0aW9uPXtQb3NpdGlvbi5Ub3B9IHN0eWxlPXt7IG9wYWNpdHk6IDAgfX0gLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXB4LTQgcHMtcHktMyBwcy1ib3JkZXItYlwiLFxuICAgICAgICAgIGlzTm9UYWJsZXNOb2RlICYmIFwicHMtYmctb3JhbmdlLTEwMCBkYXJrOnBzLWJnLW9yYW5nZS05NTAgcHMtdGV4dC1vcmFuZ2UtNzAwIGRhcms6cHMtdGV4dC1vcmFuZ2UtMzAwXCIsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1ib2xkXCI+e2RhdGEubGFiZWx9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcHgtNCBwcy1weS0yXCI+XG4gICAgICAgIHtpc05vVGFibGVzTm9kZSA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXB5LTggcHMtdGV4dC1zbSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQtb3JhbmdlLTUwMFwiPlxuICAgICAgICAgICAgICA8QWxlcnRDaXJjbGUgY2xhc3NOYW1lPVwicHMtdy01IHBzLWgtNVwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4LTFcIj5ObyBkYXRhYmFzZSB0YWJsZXMgZm91bmQuIENvbm5lY3QgdG8gYSBkYXRhYmFzZSB0byBzZWUgeW91ciBzY2hlbWEuPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRhdGEuZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1weS0yIHBzLXRleHQtc21cIixcbiAgICAgICAgICAgICAgICBmaWVsZC5pc1ByaW1hcnkgJiYgXCJwcy10ZXh0LXByaW1hcnlcIixcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e2dldEljb24oZmllbGQubmFtZSwgZmllbGQudHlwZSl9PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4LTFcIj57ZmllbGQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e2ZpZWxkLnR5cGV9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSlcbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPEhhbmRsZSB0eXBlPVwic291cmNlXCIgcG9zaXRpb249e1Bvc2l0aW9uLkJvdHRvbX0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cblRhYmxlTm9kZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVOb2RlXCI7XG5cbmNvbnN0IG5vZGVUeXBlcyA9IHtcbiAgdGFibGVOb2RlOiBUYWJsZU5vZGUsXG59IGFzIE5vZGVUeXBlcztcblxuLyoqXG4gKiBDcmVhdGUgYSBsYXlvdXQgZm9yIHRoZSBub2RlcyB3aXRoIHRhYmxlcyBwbGFjZWQgaW4gYSBncmlkIGZvcm1hdGlvblxuICogd2l0aCByZWxhdGVkIHRhYmxlcyBwbGFjZWQgY2xvc2VyIHRvIGVhY2ggb3RoZXIuXG4gKi9cbmZ1bmN0aW9uIGdldExheW91dGVkTm9kZXModGFibGVzOiBUYWJsZVtdLCBfcmVsYXRpb25zaGlwczogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9W10pOiBOb2RlW10ge1xuICAvLyBJZiB0aGVyZSBhcmUgb25seSBhIGZldyB0YWJsZXMsIHVzZSBhIHNpbXBsZSBob3Jpem9udGFsIGxheW91dFxuICBpZiAodGFibGVzLmxlbmd0aCA8PSAzKSB7XG4gICAgcmV0dXJuIHRhYmxlcy5tYXAoKHRhYmxlLCBpbmRleCkgPT4gKHtcbiAgICAgIGlkOiB0YWJsZS5uYW1lLFxuICAgICAgdHlwZTogXCJ0YWJsZU5vZGVcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWw6IHRhYmxlLm5hbWUsXG4gICAgICAgIGZpZWxkczogdGFibGUuZmllbGRzLFxuICAgICAgfSxcbiAgICAgIHBvc2l0aW9uOiB7IHg6IDM1MCAqIGluZGV4LCB5OiA1MCB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIC8vIEZvciBtb3JlIHRhYmxlcywgdXNlIGEgZ3JpZCBsYXlvdXRcbiAgY29uc3QgR1JJRF9HQVBfWCA9IDM1MDtcbiAgY29uc3QgR1JJRF9HQVBfWSA9IDMwMDtcbiAgY29uc3QgQ09MVU1OUyA9IE1hdGguY2VpbChNYXRoLnNxcnQodGFibGVzLmxlbmd0aCkpO1xuXG4gIHJldHVybiB0YWJsZXMubWFwKCh0YWJsZSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBjb2x1bW4gPSBpbmRleCAlIENPTFVNTlM7XG4gICAgY29uc3Qgcm93ID0gTWF0aC5mbG9vcihpbmRleCAvIENPTFVNTlMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0YWJsZS5uYW1lLFxuICAgICAgdHlwZTogXCJ0YWJsZU5vZGVcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWw6IHRhYmxlLm5hbWUsXG4gICAgICAgIGZpZWxkczogdGFibGUuZmllbGRzLFxuICAgICAgfSxcbiAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgIHg6IGNvbHVtbiAqIEdSSURfR0FQX1gsXG4gICAgICAgIHk6IHJvdyAqIEdSSURfR0FQX1ksXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2NoZW1hVmlzdWFsaXphdGlvbih7IHRhYmxlcywgcmVsYXRpb25zaGlwcyB9OiBTY2hlbWFWaXN1YWxpemF0aW9uUHJvcHMpIHtcbiAgLy8gQ3JlYXRlIGEgbWFwIG9mIG5vZGUgSURzIGZvciBxdWljayBsb29rdXBcbiAgY29uc3Qgbm9kZUlkU2V0ID0gdXNlTWVtbygoKSA9PiBuZXcgU2V0KHRhYmxlcy5tYXAoKHRhYmxlKSA9PiB0YWJsZS5uYW1lKSksIFt0YWJsZXNdKTtcblxuICAvLyBGaWx0ZXIgb3V0IHJlbGF0aW9uc2hpcHMgd2hlcmUgZWl0aGVyIHNvdXJjZSBvciB0YXJnZXQgZG9lc24ndCBleGlzdFxuICBjb25zdCB2YWxpZFJlbGF0aW9uc2hpcHMgPSB1c2VNZW1vKFxuICAgICgpID0+IHJlbGF0aW9uc2hpcHMuZmlsdGVyKChyZWwpID0+IG5vZGVJZFNldC5oYXMocmVsLmZyb20pICYmIG5vZGVJZFNldC5oYXMocmVsLnRvKSksXG4gICAgW3JlbGF0aW9uc2hpcHMsIG5vZGVJZFNldF0sXG4gICk7XG5cbiAgLy8gQ3JlYXRlIGFuIG9yZ2FuaXplZCBsYXlvdXQgZm9yIG5vZGVzXG4gIGNvbnN0IGluaXRpYWxOb2RlcyA9IHVzZU1lbW8oKCkgPT4gZ2V0TGF5b3V0ZWROb2Rlcyh0YWJsZXMsIHZhbGlkUmVsYXRpb25zaGlwcyksIFt0YWJsZXMsIHZhbGlkUmVsYXRpb25zaGlwc10pO1xuXG4gIC8vIENyZWF0ZSBlZGdlcyB3aXRoIGFwcHJvcHJpYXRlIHN0eWxpbmdcbiAgY29uc3QgaW5pdGlhbEVkZ2VzOiBFZGdlW10gPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICB2YWxpZFJlbGF0aW9uc2hpcHMubWFwKChyZWwsIGluZGV4KSA9PiAoe1xuICAgICAgICBpZDogYGUke2luZGV4fWAsXG4gICAgICAgIHNvdXJjZTogcmVsLmZyb20sXG4gICAgICAgIHRhcmdldDogcmVsLnRvLFxuICAgICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IHJlbC50eXBlLFxuICAgICAgICB0eXBlOiBcInNtb290aHN0ZXBcIixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBzdHJva2U6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgIHN0cm9rZURhc2hhcnJheTogXCI1IDVcIixcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZToge1xuICAgICAgICAgIGZpbGw6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICBbdmFsaWRSZWxhdGlvbnNoaXBzXSxcbiAgKTtcblxuICBjb25zdCBbbm9kZXMsIHNldE5vZGVzLCBvbk5vZGVzQ2hhbmdlXSA9IHVzZU5vZGVzU3RhdGUoaW5pdGlhbE5vZGVzKTtcbiAgY29uc3QgW2VkZ2VzLCBzZXRFZGdlcywgb25FZGdlc0NoYW5nZV0gPSB1c2VFZGdlc1N0YXRlKGluaXRpYWxFZGdlcyk7XG5cbiAgLy8gVXBkYXRlIG5vZGVzIHdoZW4gdGFibGVzIGNoYW5nZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldE5vZGVzKGdldExheW91dGVkTm9kZXModGFibGVzLCB2YWxpZFJlbGF0aW9uc2hpcHMpKTtcbiAgfSwgW3RhYmxlcywgdmFsaWRSZWxhdGlvbnNoaXBzLCBzZXROb2Rlc10pO1xuXG4gIC8vIFVwZGF0ZSBlZGdlcyB3aGVuIHJlbGF0aW9uc2hpcHMgY2hhbmdlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RWRnZXMoXG4gICAgICB2YWxpZFJlbGF0aW9uc2hpcHMubWFwKChyZWwsIGluZGV4KSA9PiAoe1xuICAgICAgICBpZDogYGUke2luZGV4fWAsXG4gICAgICAgIHNvdXJjZTogcmVsLmZyb20sXG4gICAgICAgIHRhcmdldDogcmVsLnRvLFxuICAgICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IHJlbC50eXBlLFxuICAgICAgICB0eXBlOiBcInNtb290aHN0ZXBcIixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBzdHJva2U6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgIHN0cm9rZURhc2hhcnJheTogXCI1IDVcIixcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZToge1xuICAgICAgICAgIGZpbGw6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICApO1xuICB9LCBbdmFsaWRSZWxhdGlvbnNoaXBzLCBzZXRFZGdlc10pO1xuXG4gIGNvbnN0IG9uQ29ubmVjdCA9IHVzZUNhbGxiYWNrKChwYXJhbXM6IEVkZ2UgfCBDb25uZWN0aW9uKSA9PiBzZXRFZGdlcygoZWRzKSA9PiBhZGRFZGdlKHBhcmFtcywgZWRzKSksIFtzZXRFZGdlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGwgcHMtaC1mdWxsIHBzLWJnLWNhcmRcIj5cbiAgICAgIDxSZWFjdEZsb3dcbiAgICAgICAgbm9kZXM9e25vZGVzfVxuICAgICAgICBlZGdlcz17ZWRnZXN9XG4gICAgICAgIG9uTm9kZXNDaGFuZ2U9e29uTm9kZXNDaGFuZ2V9XG4gICAgICAgIG9uRWRnZXNDaGFuZ2U9e29uRWRnZXNDaGFuZ2V9XG4gICAgICAgIG9uQ29ubmVjdD17b25Db25uZWN0fVxuICAgICAgICBjb25uZWN0aW9uTGluZVR5cGU9e0Nvbm5lY3Rpb25MaW5lVHlwZS5TbW9vdGhTdGVwfVxuICAgICAgICBub2RlVHlwZXM9e25vZGVUeXBlc31cbiAgICAgICAgZml0Vmlld1xuICAgICAgICBmaXRWaWV3T3B0aW9ucz17eyBwYWRkaW5nOiAwLjIgfX1cbiAgICAgID5cbiAgICAgICAgPEJhY2tncm91bmQgY2xhc3NOYW1lPVwicHMtYmctbXV0ZWRcIiBnYXA9ezE2fSAvPlxuICAgICAgICA8Q29udHJvbHMgY2xhc3NOYW1lPVwiIXBzLWJnLVtoc2wodmFyKC0tc3R1ZGlvLWJhY2tncm91bmQpKV0gIXBzLWJvcmRlci1baHNsKHZhcigtLXN0dWRpby1ib3JkZXIpKV0gIXBzLXRleHQtW2hzbCh2YXIoLS1zdHVkaW8tZm9yZWdyb3VuZCkpXVwiIC8+XG4gICAgICA8L1JlYWN0Rmxvdz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VTY2hlbWFWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZS1zY2hlbWEtdmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHsgU2NoZW1hVmlzdWFsaXphdGlvbiB9IGZyb20gXCIuL1Zpc3VhbGlzZXJcIjtcblxuLy8gU2FtcGxlIGRhdGEga2VwdCBhcyByZWZlcmVuY2VcbmNvbnN0IF9zYW1wbGVTY2hlbWEgPSB7XG4gIHRhYmxlczogW1xuICAgIHtcbiAgICAgIG5hbWU6IFwiUGV0IE93bmVyc1wiLFxuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHsgbmFtZTogXCJpZFwiLCB0eXBlOiBcIlVVSURcIiwgaXNQcmltYXJ5OiB0cnVlIH0sXG4gICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwiU3RyaW5nXCIsIGlzUmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiBcImVtYWlsXCIsIHR5cGU6IFwiU3RyaW5nXCIsIGlzUmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiBcInBob25lXCIsIHR5cGU6IFwiU3RyaW5nXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImNyZWF0ZWRBdFwiLCB0eXBlOiBcIkRhdGVUaW1lXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcInVwZGF0ZWRBdFwiLCB0eXBlOiBcIkRhdGVUaW1lXCIgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcIlBldHNcIixcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7IG5hbWU6IFwiaWRcIiwgdHlwZTogXCJVVUlEXCIsIGlzUHJpbWFyeTogdHJ1ZSB9LFxuICAgICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcIlN0cmluZ1wiLCBpc1JlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHsgbmFtZTogXCJzcGVjaWVzXCIsIHR5cGU6IFwiU3RyaW5nXCIsIGlzUmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiBcImJyZWVkXCIsIHR5cGU6IFwiU3RyaW5nXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImJpcnRoRGF0ZVwiLCB0eXBlOiBcIkRhdGVcIiB9LFxuICAgICAgICB7IG5hbWU6IFwib3duZXJJZFwiLCB0eXBlOiBcIlVVSURcIiwgaXNSZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB7IG5hbWU6IFwiY3JlYXRlZEF0XCIsIHR5cGU6IFwiRGF0ZVRpbWVcIiB9LFxuICAgICAgICB7IG5hbWU6IFwidXBkYXRlZEF0XCIsIHR5cGU6IFwiRGF0ZVRpbWVcIiB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxuICByZWxhdGlvbnNoaXBzOiBbeyBmcm9tOiBcIlBldCBPd25lcnNcIiwgdG86IFwiUGV0c1wiLCB0eXBlOiBcIjE6blwiIH1dLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNjaGVtYVZpZXcoKSB7XG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgc2NoZW1hIGRhdGEgZnJvbSBpbnRyb3NwZWN0aW9uXG4gIGNvbnN0IHsgdGFibGVzLCByZWxhdGlvbnNoaXBzIH0gPSB1c2VTY2hlbWFWaXN1YWxpemF0aW9uKCk7XG5cbiAgLy8gRGVidWc6IExvZyBkZXRlY3RlZCByZWxhdGlvbnNoaXBzXG4gIGNvbnNvbGUubG9nKFwiRGV0ZWN0ZWQgcmVsYXRpb25zaGlwczpcIiwgcmVsYXRpb25zaGlwcyk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbCBwcy1oLWZ1bGxcIj5cbiAgICAgIDxTY2hlbWFWaXN1YWxpemF0aW9uIHRhYmxlcz17dGFibGVzfSByZWxhdGlvbnNoaXBzPXtyZWxhdGlvbnNoaXBzfSAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjRNQUFBLE9BQVMsbUJBQUFBLEdBQWlCLFVBQUFDLE9BQWMsZUNBeEMsT0FBUyxlQUFBQyxHQUFhLGFBQUFDLE9BQWlCLFFDQXZDLE9BQVMsZUFBQUMsR0FBYSx1QkFBQUMsT0FBMkIsd0JDQ2pELFVBQVlDLE9BQVcsUUFDdkIsT0FBUyxpQkFBQUMsR0FBZSxrQkFBQUMsT0FBc0Isd0JDQzlDLElBQUlDLEdBQXdCLEtBQU0sQ0FDaENDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQWEsR0FDYkMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMs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IiwgIm1vdGlvbiIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAiUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICIjY2xpZW50IiwgIiNvbmxpbmVNYW5hZ2VyIiwgIiNxdWVyeUZsYXZvciIsICIjdmVyc2lvbiIsICIjaXNNb3VudGVkIiwgIiNzdHlsZU5vbmNlIiwgIiNzaGFkb3dET01UYXJnZXQiLCAiI2J1dHRvblBvc2l0aW9uIiwgIiNwb3NpdGlvbiIsICIjaW5pdGlhbElzT3BlbiIsICIjZXJyb3JUeXBlcyIsICIjQ29tcG9uZW50IiwgIiNkaXNwb3NlIiwgImNvbmZpZyIsICJjbGllbnQiLCAicXVlcnlGbGF2b3IiLCAidmVyc2lvbiIsICJvbmxpbmVNYW5hZ2VyIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJjcmVhdGVTaWduYWwiLCAiaXNPcGVuIiwgImVsIiwgImRpc3Bvc2UiLCAicmVuZGVyIiwgIl9zZWxmJCIsICJidG5Qb3NpdGlvbiIsICJwb3MiLCAiZXJyb3JzIiwgInF1ZXJ5Q2xpZW50IiwgIkRldnRvb2xzIiwgImxhenkiLCAic2V0dXBTdHlsZVNoZWV0IiwgImNyZWF0ZUNvbXBvbmVudCIsICJtZXJnZVByb3BzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIiNvbkNsb3NlIiwgIm9uQ2xvc2UiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiYnV0dG9uUG9zaXRpb24iLCAicG9zaXRpb24iLCAiaW5pdGlhbElzT3BlbiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0IiwgIm9ubGluZU1hbmFnZXIiLCAidXNlUXVlcnlDbGllbnQiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgInByb3BzIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInJlZiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIm9ubGluZU1hbmFnZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzIiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInRvYXN0IiwgIlNvbm5lciIsICJqc3giLCAiVG9hc3RlciIsICJwcm9wcyIsICJjcmVhdGVBZGFwdGVyUHJvdmlkZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZUhhc2hBZGFwdGVyIiwgInJhd0hhc2giLCAiaGFzaFBhcmFtcyIsICJzZXRIYXNoUGFyYW1zIiwgInVwZGF0ZVVybCIsICJ1cGRhdGVkIiwgImhpc3RvcnkiLCAicGF0aG5hbWUiLCAic2VhcmNoIiwgImhhc2giLCAidXJsIiwgImdldFNlYXJjaFBhcmFtc1NuYXBzaG90IiwgInJhdyIsICJoYW5kbGVIYXNoQ2hhbmdlIiwgIk51cXNIYXNoQWRhcHRlciIsICJqc3giLCAianN4cyIsICJxdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJTdHVkaW9Db250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgInByb3BzIiwgImNoaWxkcmVuIiwgIm90aGVyUHJvcHMiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAidXNlU3RhdGUiLCAiYWN0aXZlVmlldyIsICJzZXRBY3RpdmVWaWV3IiwgImlzRnVsbHNjcmVlbiIsICJzZXRJc0Z1bGxzY3JlZW4iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJzZXRJc05hdmlnYXRpb25PcGVuIiwgIm9uRXJyb3IiLCAiZXJyb3IiLCAidG9hc3QiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZU1lbW8iLCAidG9nZ2xlRnVsbHNjcmVlbiIsICJwcmV2IiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMyIiwgIlRvYXN0ZXIiLCAiTnVxc0hhc2hBZGFwdGVyIiwgInVzZVN0dWRpbyIsICJjb250ZXh0IiwgInVzZUNvbnRleHQiLCAibnVxc19leHBvcnRzIiwgIl9fZXhwb3J0IiwgImtleU1hcCIsICJ1cmxLZXlzIiwgInVzZVF1ZXJ5U3RhdGUiLCAidXNlUXVlcnlTdGF0ZXMiLCAiX19yZUV4cG9ydCIsICJudXFzX2V4cG9ydHMiLCAibnVxc19zdGFyIiwgInVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCIsICJ1c2VRdWVyeVN0YXRlc09yaWdpbmFsIiwgImtleU1hcCIsICJ1cmxLZXlzIiwgIl9CUkFORF9TWU1CT0wiLCAidXNlUXVlcnlTdGF0ZSIsICJrZXkiLCAib3B0aW9ucyIsICJ1c2VRdWVyeVN0YXRlcyIsICJ1c2VBY3RpdmVWaWV3IiwgImFjdGl2ZVZpZXciLCAic2V0QWN0aXZlVmlldyIsICJ1c2VTdHVkaW8iLCAidmlld1BhcmFtIiwgInNldFZpZXdQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInYiLCAiY2xlYW5VcmxQYXJhbXNGb3JTY2hlbWFWaXN1YWxpc2VyIiwgInVzZUNhbGxiYWNrIiwgImhhc2giLCAic2VhcmNoUGFyYW1zIiwgInBhcmFtIiwgInVzZUVmZmVjdCIsICJoYW5kbGVWaWV3Q2hhbmdlIiwgIm5ld1ZpZXciLCAiY2xzeCIsICJDTEFTU19QQVJUX1NFUEFSQVRPUiIsICJjcmVhdGVDbGFzc0dyb3VwVXRpbHMiLCAiY29uZmlnIiwgImNsYXNzTWFwIiwgImNyZWF0ZUNsYXNzTWFwIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgImdldENsYXNzR3JvdXBJZCIsICJjbGFzc05hbWUiLCAiY2xhc3NQYXJ0cyIsICJzcGxpdCIsICJsZW5ndGgiLCAic2hpZnQiLCAiZ2V0R3JvdXBSZWN1cnNpdmUiLCAiZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5IiwgImdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyIsICJjbGFzc0dyb3VwSWQiLCAiaGFzUG9zdGZpeE1vZGlmaWVyIiwgImNvbmZsaWN0cyIsICJjbGFzc1BhcnRPYmplY3QiLCAiY3VycmVudENsYXNzUGFydCIsICJuZXh0Q2xhc3NQYXJ0T2JqZWN0IiwgIm5leHRQYXJ0IiwgImdldCIsICJjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQiLCAic2xpY2UiLCAidW5kZWZpbmVkIiwgInZhbGlkYXRvcnMiLCAiY2xhc3NSZXN0IiwgImpvaW4iLCAiZmluZCIsICJ2YWxpZGF0b3IiLCAiYXJiaXRyYXJ5UHJvcGVydHlSZWdleCIsICJ0ZXN0IiwgImFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lIiwgImV4ZWMiLCAicHJvcGVydHkiLCAic3Vic3RyaW5nIiwgImluZGV4T2YiLCAidGhlbWUiLCAicHJlZml4IiwgIk1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgImdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAiY2xhc3NHcm91cHMiLCAiZm9yRWFjaCIsICJjbGFzc0dyb3VwIiwgInByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkiLCAiY2xhc3NEZWZpbml0aW9uIiwgImNsYXNzUGFydE9iamVjdFRvRWRpdCIsICJnZXRQYXJ0IiwgImlzVGhlbWVHZXR0ZXIiLCAicHVzaCIsICJrZXkiLCAicGF0aCIsICJjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0IiwgInBhdGhQYXJ0IiwgImhhcyIsICJzZXQiLCAiZnVuYyIsICJjbGFzc0dyb3VwRW50cmllcyIsICJtYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwIiwgImZyb21FbnRyaWVzIiwgInZhbHVlIiwgImNyZWF0ZUxydUNhY2hlIiwgIm1heENhY2hlU2l6ZSIsICJjYWNoZVNpemUiLCAiY2FjaGUiLCAicHJldmlvdXNDYWNoZSIsICJ1cGRhdGUiLCAiSU1QT1JUQU5UX01PRElGSUVSIiwgImNyZWF0ZVBhcnNlQ2xhc3NOYW1lIiwgInNlcGFyYXRvciIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciIsICJmaXJzdFNlcGFyYXRvckNoYXJhY3RlciIsICJzZXBhcmF0b3JMZW5ndGgiLCAicGFyc2VDbGFzc05hbWUiLCAibW9kaWZpZXJzIiwgImJyYWNrZXREZXB0aCIsICJtb2RpZmllclN0YXJ0IiwgInBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgImluZGV4IiwgImN1cnJlbnRDaGFyYWN0ZXIiLCAiYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciIsICJoYXNJbXBvcnRhbnRNb2RpZmllciIsICJzdGFydHNXaXRoIiwgImJhc2VDbGFzc05hbWUiLCAibWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJzb3J0TW9kaWZpZXJzIiwgInNvcnRlZE1vZGlmaWVycyIsICJ1bnNvcnRlZE1vZGlmaWVycyIsICJtb2RpZmllciIsICJzb3J0IiwgImNyZWF0ZUNvbmZpZ1V0aWxzIiwgIlNQTElUX0NMQVNTRVNfUkVHRVgiLCAibWVyZ2VDbGFzc0xpc3QiLCAiY2xhc3NMaXN0IiwgImNvbmZpZ1V0aWxzIiwgImNsYXNzR3JvdXBzSW5Db25mbGljdCIsICJjbGFzc05hbWVzIiwgInRyaW0iLCAicmVzdWx0IiwgIm9yaWdpbmFsQ2xhc3NOYW1lIiwgIkJvb2xlYW4iLCAidmFyaWFudE1vZGlmaWVyIiwgIm1vZGlmaWVySWQiLCAiY2xhc3NJZCIsICJpbmNsdWRlcyIsICJjb25mbGljdEdyb3VwcyIsICJpIiwgImdyb3VwIiwgInR3Sm9pbiIsICJhcmd1bWVudCIsICJyZXNvbHZlZFZhbHVlIiwgInN0cmluZyIsICJhcmd1bWVudHMiLCAidG9WYWx1ZSIsICJtaXgiLCAiayIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgImNyZWF0ZUNvbmZpZ0ZpcnN0IiwgImNyZWF0ZUNvbmZpZ1Jlc3QiLCAiY2FjaGVHZXQiLCAiY2FjaGVTZXQiLCAiZnVuY3Rpb25Ub0NhbGwiLCAiaW5pdFRhaWx3aW5kTWVyZ2UiLCAicmVkdWNlIiwgInByZXZpb3VzQ29uZmlnIiwgImNyZWF0ZUNvbmZpZ0N1cnJlbnQiLCAidGFpbHdpbmRNZXJnZSIsICJjYWNoZWRSZXN1bHQiLCAiYXBwbHkiLCAiZnJvbVRoZW1lIiwgInRoZW1lR2V0dGVyIiwgImFyYml0cmFyeVZhbHVlUmVnZXgiLCAiZnJhY3Rpb25SZWdleCIsICJzdHJpbmdMZW5ndGhzIiwgIlNldCIsICJ0c2hpcnRVbml0UmVnZXgiLCAibGVuZ3RoVW5pdFJlZ2V4IiwgImNvbG9yRnVuY3Rpb25SZWdleCIsICJzaGFkb3dSZWdleCIsICJpbWFnZVJlZ2V4IiwgImlzTGVuZ3RoIiwgImlzTnVtYmVyIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldElzQXJiaXRyYXJ5VmFsdWUiLCAiaXNMZW5ndGhPbmx5IiwgIk51bWJlciIsICJpc05hTiIsICJpc0FyYml0cmFyeU51bWJlciIsICJpc0ludGVnZXIiLCAiaXNQZXJjZW50IiwgImVuZHNXaXRoIiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiaXNUc2hpcnRTaXplIiwgInNpemVMYWJlbHMiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzTmV2ZXIiLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJpbWFnZUxhYmVscyIsICJpc0FyYml0cmFyeUltYWdlIiwgImlzSW1hZ2UiLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiaXNTaGFkb3ciLCAiaXNBbnkiLCAibGFiZWwiLCAidGVzdFZhbHVlIiwgImdldERlZmF1bHRDb25maWciLCAiY29sb3JzIiwgImZyb21UaGVtZSIsICJzcGFjaW5nIiwgImJsdXIiLCAiYnJpZ2h0bmVzcyIsICJib3JkZXJDb2xvciIsICJib3JkZXJSYWRpdXMiLCAiYm9yZGVyU3BhY2luZyIsICJib3JkZXJXaWR0aCIsICJjb250cmFzdCIsICJncmF5c2NhbGUiLCAiaHVlUm90YXRlIiwgImludmVydCIsICJnYXAiLCAiZ3JhZGllbnRDb2xvclN0b3BzIiwgImdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zIiwgImluc2V0IiwgIm1hcmdpbiIsICJvcGFjaXR5IiwgInBhZGRpbmciLCAic2F0dXJhdGUiLCAic2NhbGUiLCAic2VwaWEiLCAic2tldyIsICJzcGFjZSIsICJ0cmFuc2xhdGUiLCAiZ2V0T3ZlcnNjcm9sbCIsICJnZXRPdmVyZmxvdyIsICJnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSIsICJnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkiLCAiaXNMZW5ndGgiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkiLCAiaXNOdW1iZXIiLCAiZ2V0UG9zaXRpb25zIiwgImdldExpbmVTdHlsZXMiLCAiZ2V0QmxlbmRNb2RlcyIsICJnZXRBbGlnbiIsICJnZXRaZXJvQW5kRW1wdHkiLCAiZ2V0QnJlYWtzIiwgImdldE51bWJlckFuZEFyYml0cmFyeSIsICJjYWNoZVNpemUiLCAic2VwYXJhdG9yIiwgInRoZW1lIiwgImlzQW55IiwgImlzVHNoaXJ0U2l6ZSIsICJpc1BlcmNlbnQiLCAiY2xhc3NHcm91cHMiLCAiYXNwZWN0IiwgImNvbnRhaW5lciIsICJjb2x1bW5zIiwgImJveCIsICJkaXNwbGF5IiwgImZsb2F0IiwgImNsZWFyIiwgImlzb2xhdGlvbiIsICJvYmplY3QiLCAib3ZlcmZsb3ciLCAib3ZlcnNjcm9sbCIsICJwb3NpdGlvbiIsICJzdGFydCIsICJlbmQiLCAidG9wIiwgInJpZ2h0IiwgImJvdHRvbSIsICJsZWZ0IiwgInZpc2liaWxpdHkiLCAieiIsICJpc0ludGVnZXIiLCAiYmFzaXMiLCAiZmxleCIsICJncm93IiwgInNocmluayIsICJvcmRlciIsICJjb2wiLCAic3BhbiIsICJyb3ciLCAianVzdGlmeSIsICJjb250ZW50IiwgIml0ZW1zIiwgInNlbGYiLCAicCIsICJweCIsICJweSIsICJwcyIsICJwZSIsICJwdCIsICJwciIsICJwYiIsICJwbCIsICJtIiwgIm14IiwgIm15IiwgIm1zIiwgIm1lIiwgIm10IiwgIm1yIiwgIm1iIiwgIm1sIiwgInciLCAic2NyZWVuIiwgImgiLCAic2l6ZSIsICJ0ZXh0IiwgImZvbnQiLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAidHJhY2tpbmciLCAibGVhZGluZyIsICJsaXN0IiwgInBsYWNlaG9sZGVyIiwgImRlY29yYXRpb24iLCAiaW5kZW50IiwgImFsaWduIiwgIndoaXRlc3BhY2UiLCAiYnJlYWsiLCAiaHlwaGVucyIsICJiZyIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgInJlcGVhdCIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJmcm9tIiwgInZpYSIsICJ0byIsICJyb3VuZGVkIiwgImJvcmRlciIsICJkaXZpZGUiLCAib3V0bGluZSIsICJyaW5nIiwgInNoYWRvdyIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJmaWx0ZXIiLCAidGFibGUiLCAiY2FwdGlvbiIsICJ0cmFuc2l0aW9uIiwgImR1cmF0aW9uIiwgImVhc2UiLCAiZGVsYXkiLCAiYW5pbWF0ZSIsICJ0cmFuc2Zvcm0iLCAicm90YXRlIiwgIm9yaWdpbiIsICJhY2NlbnQiLCAiYXBwZWFyYW5jZSIsICJjdXJzb3IiLCAiY2FyZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzbmFwIiwgInRvdWNoIiwgInNlbGVjdCIsICJmaWxsIiwgInN0cm9rZSIsICJzciIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJtZXJnZUNvbmZpZ3MiLCAiYmFzZUNvbmZpZyIsICJwcmVmaXgiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiZXh0ZW5kIiwgIm92ZXJyaWRlIiwgIm92ZXJyaWRlUHJvcGVydHkiLCAiY29uZmlnS2V5IiwgIm92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyIsICJrZXkiLCAibWVyZ2VDb25maWdQcm9wZXJ0aWVzIiwgImJhc2VPYmplY3QiLCAib3ZlcnJpZGVLZXkiLCAib3ZlcnJpZGVWYWx1ZSIsICJ1bmRlZmluZWQiLCAib3ZlcnJpZGVPYmplY3QiLCAibWVyZ2VPYmplY3QiLCAibWVyZ2VWYWx1ZSIsICJjb25jYXQiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjb25maWdFeHRlbnNpb24iLCAiY3JlYXRlQ29uZmlnIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAidHdNZXJnZSIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNuIiwgImlucHV0cyIsICJjbHN4IiwgInVzZUlzTXV0YXRpbmciLCAidG9LZWJhYkNhc2UiLCAic3RyaW5nIiwgIm1lcmdlQ2xhc3NlcyIsICJjbGFzc2VzIiwgImNsYXNzTmFtZSIsICJpbmRleCIsICJhcnJheSIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJJY29uIiwgImZvcndhcmRSZWYiLCAiY29sb3IiLCAic2l6ZSIsICJzdHJva2VXaWR0aCIsICJhYnNvbHV0ZVN0cm9rZVdpZHRoIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJpY29uTm9kZSIsICJyZXN0IiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIm1lcmdlQ2xhc3NlcyIsICJ0YWciLCAiYXR0cnMiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJpY29uTmFtZSIsICJpY29uTm9kZSIsICJDb21wb25lbnQiLCAiZm9yd2FyZFJlZiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiSWNvbiIsICJtZXJnZUNsYXNzZXMiLCAidG9LZWJhYkNhc2UiLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFycm93VXBXaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2FsZW5kYXIiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGVjayIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25Eb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uUmlnaHQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc0xlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlQWxlcnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaXJjbGVIZWxwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ29weSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcm5lckRvd25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiRmlsdGVyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiR3JpcFZlcnRpY2FsIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiSGFzaCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiS2V5IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWFpbCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1heGltaXplIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWluaW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNb3ZlRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVVcCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBhbmVsTGVmdENsb3NlIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0T3BlbiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBob25lIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUmVmcmVzaEN3IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiVGFibGUyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiVXNlciIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlgiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJjdmEiLCAianN4IiwgImJhZGdlVmFyaWFudHMiLCAiY3ZhIiwgIkJhZGdlIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInByb3BzIiwgImNuIiwgIlNsb3QiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJidXR0b25WYXJpYW50cyIsICJjdmEiLCAiQnV0dG9uIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInNpemUiLCAiYXNDaGlsZCIsICJwcm9wcyIsICJyZWYiLCAiU2xvdCIsICJjbiIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIlBvcG92ZXJDb250ZW50IiwgImNsYXNzTmFtZSIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJqc3giLCAiY24iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAiZ2V0Um93SWQiLCAicm93IiwgInRhYmxlIiwgImlkIiwgImluZmVyUm93RmlsdGVyIiwgImFkZFJvd0lkVG9Sb3ciLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJyZXN1bHQiLCAicm93cyIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJuZXdEYXRhIiwgIm9sZERhdGEiLCAidXNlUXVlcnkiLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJwcm9wcyIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic29ydE9yZGVyIiwgImZpbHRlciIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJwcmV2aW91c0RhdGEiLCAicHJldmlvdXNRdWVyeSIsICJzY2hlbWEiLCAidGFibGUiLCAic2lnbmFsIiwgImVycm9yIiwgInJlc3VsdHMiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJpdGVtIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicXVlcnlLZXlQcmVmaXgiLCAidXNlTXV0YXRpb24iLCAicGFyYW1zIiwgImVycm9yIiwgInJlc3VsdCIsICJjaGFuZ2VzIiwgInJvdyIsICJvdmVyd3JpdGVDYWNoZWRSb3ciLCAiY2hhbmdlZFJvdyIsICJyb3dGaWx0ZXIiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiY2FjaGVkUm93IiwgImNvbHVtbk5hbWUiLCAidmFsdWUiLCAib3JpZ2luYWxWYWx1ZXMiLCAiZGV0YWlscyIsICJ1bmNoYW5nZWRSb3ciLCAiX19wc191cGRhdGVkX2F0X18iLCAiZ2V0RmluZGVyRm4iLCAidGFibGUiLCAidXBkYXRlckZuIiwgImZpbmRlciIsICJjYWNoZWRSZXN1bHQiLCAiY2FjaGVkUm93cyIsICJjYWNoZWRSb3dJbmRleCIsICJuZXdSb3ciLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAic2hvcnQiLCAiZGVmYXVsdEZpbHRlciIsICJzaG9ydCIsICJjb3VudEZpbHRlcnNSZWN1cnNpdmUiLCAiZmlsdGVyR3JvdXAiLCAiY291bnQiLCAiZmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJmaWx0ZXJQYXJhbSIsICJzZXRGaWx0ZXJQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAidXNlTWVtbyIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VJc011dGF0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgIm11dGF0aW9uS2V5IiwgInVzZUNhbGxiYWNrIiwgIkRFRkFVTFRfUEFHRV9TSVpFIiwgInBhZ2luYXRpb25QYXJzZXJzIiwgInVzZVBhZ2luYXRpb24iLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNldFBhZ2luYXRpb24iLCAidXNlUXVlcnlTdGF0ZXMiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJuZXdTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgInVzZVNlbGVjdGlvbiIsICJkYXRhIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVN0YXRlIiwgImlzU2VsZWN0aW5nIiwgIm11dGF0ZSIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJ1c2VFZmZlY3QiLCAiZGVsZXRlU2VsZWN0aW9uIiwgInJvd3MiLCAicm93IiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInNvcnRQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJwYXJzZVNvcnRpbmciLCAiaXRlbSIsICJjb2x1bW4iLCAiZGlyZWN0aW9uIiwgImUiLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAibmV3U29ydGluZ1N0YXRlIiwgIm5ld1N0YXRlIiwgInJlc29sdmVkU3RhdGUiLCAic29ydFN0cmluZyIsICJpc09iamVjdFR5cGUiLCAiZm9yd2FyZFJlZiIsICJSZWFjdCIsICJqc3giLCAiVGFibGUiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJUYWJsZUhlYWRlciIsICJUYWJsZUJvZHkiLCAiVGFibGVGb290ZXIiLCAiVGFibGVSb3ciLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJUYWJsZUNhcHRpb24iLCAiaXNWYWxpZEVsZW1lbnQiLCAiQ29udGV4dE1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiQ29udGV4dE1lbnUiLCAiQ29udGV4dE1lbnVUcmlnZ2VyIiwgIkNvbnRleHRNZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJDb250ZXh0TWVudVN1YkNvbnRlbnQiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJDb250ZXh0TWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkNvbnRleHRNZW51UmFkaW9JdGVtIiwgIkNpcmNsZSIsICJDb250ZXh0TWVudUxhYmVsIiwgIkNvbnRleHRNZW51U2VwYXJhdG9yIiwgIkNvbnRleHRNZW51U2hvcnRjdXQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiQ29udGV4dE1lbnUiLCAiQ29udGV4dE1lbnVUcmlnZ2VyIiwgIkNvbnRleHRNZW51Q29udGVudCIsICJDb250ZXh0TWVudUl0ZW0iLCAiY29udGVudCIsICJleHRyYWN0VGV4dENvbnRlbnQiLCAiZXJyb3IiLCAiQ29weSIsICJub2RlIiwgImlzVmFsaWRFbGVtZW50IiwgImpzeCIsICJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJyZWYiLCAic3R5bGUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiVGFibGVDZWxsIiwgImNuIiwgIkRhdGFHcmlkQ2VsbENvbnRleHRNZW51IiwgImpzeCIsICJCb29sZWFuQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkRhdGVDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRW1wdHlDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRW51bUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAib3B0aW9ucyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkpTT05DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiTnVsbENlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJOdW1lcmljQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIlJhd0NlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJUaW1lQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImpzeCIsICJnZXRDZWxsIiwgImNlbGwiLCAiY29sdW1uIiwgInByb3BzIiwgInZhbHVlIiwgIkVtcHR5Q2VsbCIsICJOdWxsQ2VsbCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAiSlNPTkNlbGwiLCAiUmF3Q2VsbCIsICJFbnVtQ2VsbCIsICJCb29sZWFuQ2VsbCIsICJEYXRlQ2VsbCIsICJUaW1lQ2VsbCIsICJOdW1lcmljQ2VsbCIsICJpc09iamVjdFR5cGUiLCAiZm9yd2FyZFJlZiIsICJDaGVja2JveFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiQ2hlY2tib3giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJDaGVjayIsICJqc3giLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJ0YWJsZSIsICJyZWFkb25seSIsICJjbGFzc05hbWUiLCAic3R5bGUiLCAicmVzdCIsICJDaGVja2JveCIsICJ2YWx1ZSIsICJmb3J3YXJkUmVmIiwgIkZyYWdtZW50IiwgImpzeCIsICJTZWxlY3RDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJyZWYiLCAic3R5bGUiLCAiaXNIZWFkZXIiLCAiZm9yd2FyZGVkUHJvcHMiLCAic2VsZWN0Q2xhc3NlcyIsICJjbiIsICJUYWJsZUhlYWQiLCAiVGFibGVDZWxsIiwgImpzeCIsICJTZWxlY3RSb3dDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgInJvdyIsICJyZWFkb25seSIsICJjbGFzc05hbWUiLCAic3R5bGUiLCAicmVzdCIsICJTZWxlY3RDZWxsIiwgIkNoZWNrYm94IiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXJDZWxsQ29udGV4dCIsICJQb3BvdmVyQ2VsbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJvcGVuIiwgInNldE9wZW4iLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIm9uRG91YmxlQ2xpY2siLCAiY2xhc3NOYW1lIiwgInJlZiIsICJ0cmlnZ2VyUmVmIiwgIm5vZGUiLCAiY24iLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAiZXZlbnQiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYWN0aW9ucyIsICJjb250ZXh0IiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgImhhbmRsZUtleURvd24iLCAianN4IiwgImpzeHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJwcm9wcyIsICJjZWxsQ29tcG9uZW50IiwgImlucHV0Q29tcG9uZW50IiwgIlBvcG92ZXJDZWxsIiwgIlBvcG92ZXJDZWxsVHJpZ2dlciIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiY24iLCAiY2xvc2VzdENlbnRlciIsICJEbmRDb250ZXh0IiwgIkRyYWdPdmVybGF5IiwgIktleWJvYXJkU2Vuc29yIiwgIlBvaW50ZXJTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgIlNvcnRhYmxlQ29udGV4dCIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAidXNlU29ydGFibGUiLCAidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIkNTUyIsICJtb3Rpb24iLCAiQW5pbWF0ZU51bWJlciIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImNyZWF0ZVBvcnRhbCIsICJzaG9ydCIsICJjb2VyY2VUb1ZhbHVlIiwgImNvbHVtbiIsICJvcGVyYXRvciIsICJ2YWx1ZSIsICJkYXRhVHlwZUdyb3VwIiwgImNvZXJjZVRvU3RyaW5nIiwgIkRyb3Bkb3duTWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJEcm9wZG93bk1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkRyb3Bkb3duTWVudVN1YkNvbnRlbnQiLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJzaWRlT2Zmc2V0IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiRHJvcGRvd25NZW51UmFkaW9JdGVtIiwgIkNpcmNsZSIsICJEcm9wZG93bk1lbnVMYWJlbCIsICJEcm9wZG93bk1lbnVTZXBhcmF0b3IiLCAiRHJvcGRvd25NZW51U2hvcnRjdXQiLCAiUmVhY3QiLCAianN4IiwgIklucHV0IiwgImNsYXNzTmFtZSIsICJ0eXBlIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTZWxlY3RQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiU2VsZWN0IiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdFRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uRG93biIsICJTZWxlY3RTY3JvbGxVcEJ1dHRvbiIsICJDaGV2cm9uVXAiLCAiU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiIsICJTZWxlY3RDb250ZW50IiwgInBvc2l0aW9uIiwgIlNlbGVjdExhYmVsIiwgIlNlbGVjdEl0ZW0iLCAiQ2hlY2siLCAiU2VsZWN0U2VwYXJhdG9yIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkxlYWRpbmdPcGVyYXRvclNlbGVjdCIsICJ2YWx1ZSIsICJvblZhbHVlQ2hhbmdlIiwgImRpc2FibGVkIiwgInRyaWdnZXJDbGFzc05hbWUiLCAiU2VsZWN0IiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJTZWxlY3RJdGVtIiwgIkRyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3IiwgImFjdGl2ZUlkIiwgIml0ZW1zIiwgInRhYmxlIiwgImFjdGl2ZUl0ZW0iLCAiaXRlbSIsICJsZWFkaW5nT3BlcmF0b3JWYWx1ZSIsICJzaG93TGVhZGluZ09wRm9yT3ZlcmxheSIsICJhY3RpdmVJdGVtSW5kZXgiLCAicHJldmlvdXNJdGVtIiwgIkZpbHRlckNvbmRpdGlvbiIsICJGaWx0ZXJHcm91cENvbXBvbmVudCIsICJGaWx0ZXJMaXN0SXRlbXMiLCAicGFyZW50R3JvdXBJZCIsICJvblVwZGF0ZUl0ZW0iLCAib25EZWxldGVJdGVtIiwgIm9uUmVvcmRlckl0ZW1zIiwgImFjdGl2ZURyYWdJZCIsICJvbkRyYWdTdGFydCIsICJvbkRyYWdFbmRTaWduYWwiLCAic29ydGFibGVJdGVtSWRzIiwgInVzZU1lbW8iLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInVzZVNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgIktleWJvYXJkU2Vuc29yIiwgInNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyIsICJEbmRDb250ZXh0IiwgImNsb3Nlc3RDZW50ZXIiLCAiZXZlbnQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib2xkSW5kZXgiLCAibmV3SW5kZXgiLCAiU29ydGFibGVDb250ZXh0IiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJjdXJyZW50RmlsdGVySXRlbSIsICJpbmRleCIsICJzaG93TGVhZGluZ09wIiwgImxlYWRpbmdPcFZhbCIsICJvbkxlYWRpbmdPcENoYW5nZUZuIiwgImlzTGVhZGluZ09wVGFyZ2V0TGFzdCIsICJwcmV2SXRlbSIsICJuZXdWYWx1ZSIsICJ1cGRhdGVkUHJldkl0ZW0iLCAiU29ydGFibGVGaWx0ZXJJdGVtIiwgInVwZGF0ZWRGaWx0ZXIiLCAiY3JlYXRlUG9ydGFsIiwgIkRyYWdPdmVybGF5IiwgImZpbHRlciIsICJvblVwZGF0ZSIsICJvbkRlbGV0ZSIsICJwYXJlbnREbmRJZCIsICJzaG93TGVhZGluZ09wZXJhdG9yIiwgIm9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlIiwgImlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJzZXROb2RlUmVmIiwgInRyYW5zZm9ybSIsICJ0cmFuc2l0aW9uIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAic3R5bGUiLCAiQ1NTIiwgImRyYWdIYW5kbGVQcm9wcyIsICJoYW5kbGVDb2x1bW5DaGFuZ2UiLCAiaGFuZGxlT3BlcmF0b3JDaGFuZ2UiLCAiaGFuZGxlVmFsdWVDaGFuZ2UiLCAiZSIsICJyYXdWYWx1ZSIsICJjb2x1bW5JbmZvIiwgImNvZXJjZVRvVmFsdWUiLCAiZWRpdGVkVmFsdWUiLCAic2V0RWRpdGVkVmFsdWUiLCAidXNlU3RhdGUiLCAiY29lcmNlVG9TdHJpbmciLCAibW90aW9uIiwgIkdyaXBWZXJ0aWNhbCIsICJjb2x1bW4iLCAiSW5wdXQiLCAiQnV0dG9uIiwgIlgiLCAiZ3JvdXAiLCAiaXNSb290IiwgImlzRXhwYW5kZWQiLCAic2V0SXNFeHBhbmRlZCIsICJzZXRBY3RpdmVEcmFnSWQiLCAiaGFuZGxlQWRkRmlsdGVyIiwgIm5ld0ZpbHRlciIsICJzaG9ydCIsICJoYW5kbGVBZGRHcm91cCIsICJuZXdHcm91cCIsICJ1cGRhdGVJdGVtSW5Hcm91cCIsICJ1cGRhdGVkRmlsdGVyT3JHcm91cCIsICJuZXdGaWx0ZXJzIiwgImRlbGV0ZUl0ZW1Gcm9tR3JvdXAiLCAiaGFuZGxlRHJhZ1N0YXJ0IiwgImhhbmRsZURyYWdFbmRTaWduYWwiLCAiaGFuZGxlUmVvcmRlckl0ZW1zIiwgInJlb3JkZXJlZEZpbHRlcnMiLCAiYXJyYXlNb3ZlIiwgInJlbmRlckdyb3VwQ29udGVudCIsICJjbiIsICJDaGV2cm9uRG93biIsICJDaGV2cm9uUmlnaHQiLCAiQmFkZ2UiLCAiQW5pbWF0ZU51bWJlciIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJDaXJjbGVIZWxwIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiUXVlcnlWaXN1YWxpemVyIiwgImlzQW5kR3JvdXBPcGVuIiwgImYiLCAiaSIsICJyZXN1bHQiLCAiaXNMYXN0IiwgIm9wZXJhdG9yIiwgIkZpbHRlclRyZWUiLCAic2V0RmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiRG5kQ29udGV4dCIsICJNb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAidXNlU2Vuc29ycyIsICJhcnJheU1vdmUiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiU29ydGFibGVDb250ZXh0IiwgInVzZVNvcnRhYmxlIiwgIkNTUyIsICJnZXRDb3JlUm93TW9kZWwiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRJdGVtIiwgImtleSIsICJpdGVtVmFsdWUiLCAibG9jYWxTdG9yYWdlIiwgIkpTT04iLCAicGFyc2UiLCAidXNlTG9jYWxTdG9yYWdlIiwgImRlZmF1bHRWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAiaW5pdGlhbFZhbHVlIiwgInNldHRlciIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyIiwgIm9sZCIsICJuZXdWYWwiLCAic2V0SXRlbSIsICJzdHJpbmdpZnkiLCAiZGVmYXVsdFRoZW1lIiwgImJhY2tncm91bmQiLCAiYmFja2dyb3VuZEFsdCIsICJmb3JlZ3JvdW5kIiwgImdyYXkiLCAiZ3JheUFsdCIsICJpbnB1dEJhY2tncm91bmRDb2xvciIsICJpbnB1dFRleHRDb2xvciIsICJzdWNjZXNzIiwgImRhbmdlciIsICJhY3RpdmUiLCAid2FybmluZyIsICJUaGVtZUNvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJUaGVtZVByb3ZpZGVyIiwgIl9yZWYiLCAidGhlbWUiLCAicmVzdCIsICJjcmVhdGVFbGVtZW50IiwgIlByb3ZpZGVyIiwgIl9leHRlbmRzIiwgInVzZVRoZW1lIiwgInVzZUNvbnRleHQiLCAidXNlTWVkaWFRdWVyeSIsICJxdWVyeSIsICJpc01hdGNoIiwgInNldElzTWF0Y2giLCAid2luZG93IiwgIm1hdGNoTWVkaWEiLCAibWF0Y2hlcyIsICJtYXRjaGVyIiwgIm9uQ2hhbmdlIiwgImFkZExpc3RlbmVyIiwgInJlbW92ZUxpc3RlbmVyIiwgImlzU2VydmVyIiwgInN0eWxlZCIsICJ0eXBlIiwgIm5ld1N0eWxlcyIsICJxdWVyaWVzIiwgImZvcndhcmRSZWYiLCAicmVmIiwgInN0eWxlIiwgIm1lZGlhU3R5bGVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgInJlZHVjZSIsICJjdXJyZW50IiwgIl9yZWYyIiwgInVzZUlzTW91bnRlZCIsICJtb3VudGVkUmVmIiwgInVzZVJlZiIsICJpc01vdW50ZWQiLCAiUGFuZWwiLCAiX3Byb3BzIiwgImZvbnRTaXplIiwgImZvbnRGYW1pbHkiLCAiZGlzcGxheSIsICJiYWNrZ3JvdW5kQ29sb3IiLCAiY29sb3IiLCAiZmxleERpcmVjdGlvbiIsICJmbGV4IiwgIm92ZXJmbG93IiwgImhlaWdodCIsICIobWF4LXdpZHRoOiA3MDBweCkiLCAiYm9yZGVyVG9wIiwgIkJ1dHRvbiIsICJwcm9wcyIsICJhcHBlYXJhbmNlIiwgImZvbnRXZWlnaHQiLCAiYm9yZGVyIiwgImJvcmRlclJhZGl1cyIsICJwYWRkaW5nIiwgIm9wYWNpdHkiLCAiZGlzYWJsZWQiLCAidW5kZWZpbmVkIiwgImN1cnNvciIsICJsaW5lSGVpZ2h0IiwgIldlYmtpdEFwcGVhcmFuY2UiLCAiYmFja2dyb3VuZEltYWdlIiwgImJhY2tncm91bmRSZXBlYXQiLCAiYmFja2dyb3VuZFBvc2l0aW9uIiwgImJhY2tncm91bmRTaXplIiwgIkVudHJ5IiwgIm91dGxpbmUiLCAid29yZEJyZWFrIiwgIkxhYmVsIiwgIlZhbHVlIiwgIlN1YkVudHJpZXMiLCAibWFyZ2luTGVmdCIsICJwYWRkaW5nTGVmdCIsICJib3JkZXJMZWZ0IiwgIkluZm8iLCAiRXhwYW5kZXIiLCAiZXhwYW5kZWQiLCAidHJhbnNpdGlvbiIsICJ0cmFuc2Zvcm0iLCAiRGVmYXVsdFJlbmRlcmVyIiwgImhhbmRsZUVudHJ5IiwgImxhYmVsIiwgInN1YkVudHJpZXMiLCAic3ViRW50cnlQYWdlcyIsICJ0b2dnbGUiLCAicGFnZVNpemUiLCAicmVuZGVyZXIiLCAidmFsdWVTbmFwc2hvdCIsICJzZXRWYWx1ZVNuYXBzaG90IiwgImV4cGFuZGVkUGFnZXMiLCAic2V0RXhwYW5kZWRQYWdlcyIsICJyZWZyZXNoVmFsdWVTbmFwc2hvdCIsICJsZW5ndGgiLCAiRnJhZ21lbnQiLCAib25DbGljayIsICJTdHJpbmciLCAidG9Mb3dlckNhc2UiLCAibWFwIiwgImVudHJ5IiwgImluZGV4IiwgImluY2x1ZGVzIiwgImZpbHRlciIsICJkIiwgIkV4cGxvcmVyIiwgImRlZmF1bHRFeHBhbmRlZCIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgIl9yZWYzIiwgImRlcHRoIiwgInNldEV4cGFuZGVkIiwgInNldCIsICJwYXRoIiwgIm1ha2VQcm9wZXJ0eSIsICJzdWIiLCAibmV3UGF0aCIsICJjb25jYXQiLCAic3ViRGVmYXVsdEV4cGFuZGVkIiwgInN1YlBhdGgiLCAiQXJyYXkiLCAiaXNBcnJheSIsICJpIiwgIlN5bWJvbCIsICJpdGVyYXRvciIsICJmcm9tIiwgInZhbCIsICJfcmVmNCIsICJwdXNoIiwgInNsaWNlIiwgIkxvZ28iLCAid2lkdGgiLCAidmlld0JveCIsICJ2ZXJzaW9uIiwgInN0cm9rZSIsICJzdHJva2VXaWR0aCIsICJmaWxsIiwgImZpbGxSdWxlIiwgImlkIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJpbml0aWFsSXNPcGVuIiwgInRhYmxlIiwgInBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uUHJvcHMiLCAiY29udGFpbmVyRWxlbWVudCIsICJDb250YWluZXIiLCAicm9vdFJlZiIsICJwYW5lbFJlZiIsICJpc09wZW4iLCAic2V0SXNPcGVuIiwgInBhbmVsU3R5bGUiLCAib3RoZXJQYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblN0eWxlIiwgIm9uVG9nZ2xlQ2xpY2siLCAib3RoZXJUb2dnbGVCdXR0b25Qcm9wcyIsICJjbGFzc05hbWUiLCAiUmVhY3RUYWJsZURldnRvb2xzUGFuZWwiLCAibWF4SGVpZ2h0IiwgImUiLCAibWFyZ2luIiwgImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwgIl9faHRtbCIsICJtaW5IZWlnaHQiLCAiYm9yZGVyUmlnaHQiLCAianVzdGlmeUNvbnRlbnQiLCAiYWxpZ25JdGVtcyIsICJtYXJnaW5SaWdodCIsICJmbGV4V3JhcCIsICJvdmVyZmxvd1kiLCAiZ2V0U3RhdGUiLCAiZ2V0QWxsQ29sdW1ucyIsICJnZXRDb3JlUm93TW9kZWwiLCAiZ2V0RmlsdGVyZWRSb3dNb2RlbCIsICJnZXRTb3J0ZWRSb3dNb2RlbCIsICJnZXRHcm91cGVkUm93TW9kZWwiLCAiZ2V0RXhwYW5kZWRSb3dNb2RlbCIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgImpzeCIsICJTa2VsZXRvbiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAiY24iLCAiZmxleFJlbmRlciIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyIiwgInByb3BzIiwgImhlYWRlciIsICJjbGFzc05hbWUiLCAiY24iLCAiZmxleFJlbmRlciIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk1vdmVEb3duIiwgIk1vdmVVcCIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJCdXR0b24iLCAiQ2hldnJvbkRvd24iLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiWCIsICJQaW5PZmYiLCAiUGluIiwgImUiLCAianN4IiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJjbGFzc05hbWUiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgInByb3BzIiwgInRhYmxlIiwgInZhcmlhbnQiLCAicGFnZUluZGV4IiwgInBhZ2VDb3VudCIsICJCdXR0b24iLCAiQ2hldnJvbnNMZWZ0IiwgIkNoZXZyb25MZWZ0IiwgIklucHV0IiwgImUiLCAiQ2hldnJvblJpZ2h0IiwgIkNoZXZyb25zUmlnaHQiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJjb2x1bW4iLCAia2luZCIsICJpc1Bpbm5lZCIsICJpc0xlZnRQaW5uZWQiLCAiaXNSaWdodFBpbm5lZCIsICJpc1NlbGVjdENvbHVtbiIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEcmFnZ2FibGVIZWFkZXJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJoZWFkZXIiLCAiY29tbW9uU3R5bGUiLCAiZGlzYWJsZURyYWdnaW5nIiwgImF0dHJpYnV0ZXMiLCAibGlzdGVuZXJzIiwgInRyYW5zZm9ybSIsICJ0cmFuc2l0aW9uIiwgInNldE5vZGVSZWYiLCAiaXNEcmFnZ2luZyIsICJ1c2VTb3J0YWJsZSIsICJkcmFnU3R5bGUiLCAiQ1NTIiwgImNvbW1vbkNsYXNzIiwgImNuIiwgImRyYWdDbGFzcyIsICJUYWJsZUhlYWQiLCAiRGF0YUdyaWQiLCAiY29sdW1uRGVmcyIsICJnZXRCZWZvcmVSb3dzIiwgImlzTG9hZGluZyIsICJpc1Byb2Nlc3NpbmciLCAib25QYWdpbmF0aW9uQ2hhbmdlIiwgIm9uUm93U2VsZWN0aW9uQ2hhbmdlIiwgIm9uU29ydGluZ0NoYW5nZSIsICJwYWdlQ291bnQiLCAicGFnaW5hdGlvblN0YXRlIiwgInJvd3MiLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic29ydGluZ1N0YXRlIiwgImNvbHVtbk9yZGVyIiwgInNldENvbHVtbk9yZGVyIiwgInVzZVN0YXRlIiwgImNvbHVtblBpbm5pbmciLCAic2V0Q29sdW1uUGlubmluZyIsICJjb2x1bW5TaXppbmciLCAic2V0Q29sdW1uU2l6aW5nIiwgInNvcnRpbmciLCAidXNlTWVtbyIsICJ0b1NvcnRpbmdTdGF0ZSIsICJkaXNwbGF5TG9hZGVyIiwgInVzZUVmZmVjdCIsICJhY2Nlc3NvcktleSIsICJoYW5kbGVEcmFnRW5kIiwgImFjdGl2ZSIsICJvdmVyIiwgIm9yZGVyIiwgImFjdGl2ZUluZGV4IiwgIm92ZXJJbmRleCIsICJhcnJheU1vdmUiLCAibW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgIk1vdXNlU2Vuc29yIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ0YWJsZSIsICJ1c2VSZWFjdFRhYmxlIiwgImdldENvcmVSb3dNb2RlbCIsICJfX3BzX3Jvd2lkIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJ0b1NvcnRPcmRlckl0ZW1zIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJEYXRhR3JpZExvYWRpbmdCYXIiLCAiRG5kQ29udGV4dCIsICJUYWJsZSIsICJUYWJsZUhlYWRlciIsICJoZWFkZXJHcm91cCIsICJUYWJsZVJvdyIsICJTb3J0YWJsZUNvbnRleHQiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiaGVhZGVyRm4iLCAiSGVhZGVyQ29tcG9uZW50IiwgInBpbm5pbmdTdHlsZXMiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJEYXRhR3JpZEhlYWRlciIsICJUYWJsZUJvZHkiLCAicm93IiwgImNlbGwiLCAiaSIsICJDZWxsIiwgIlRhYmxlQ2VsbCIsICJTa2VsZXRvbiIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJmcm9tIiwgIml0ZW0iLCAiVG9vbHRpcFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiY2xhc3NOYW1lIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjb2x1bW4iLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiS2V5Um91bmQiLCAiVG9vbHRpcENvbnRlbnQiLCAiaXNPYmplY3RUeXBlIiwgIm1vdGlvbiIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJMYWJlbFByaW1pdGl2ZSIsICJjdmEiLCAiUmVhY3QiLCAianN4IiwgImxhYmVsVmFyaWFudHMiLCAiY3ZhIiwgIkxhYmVsIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU3dpdGNoUHJpbWl0aXZlcyIsICJSZWFjdCIsICJqc3giLCAiU3dpdGNoIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSW5wdXRBY3Rpb25zIiwgIm9uU2F2ZSIsICJvbkNhbmNlbCIsICJvbkNsb3NlIiwgIm9uTnVsbENoYW5nZSIsICJpc051bGwiLCAicmVhZG9ubHkiLCAiQ29ybmVyRG93bkxlZnQiLCAiU3dpdGNoIiwgImNoZWNrZWQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQm9vbGVhbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJ2YWx1ZVRvU3VibWl0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJtb3Rpb24iLCAiU3dpdGNoIiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ1c2VJbnB1dCIsICJwcm9wcyIsICJpbml0aWFsVmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiZXZlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIkRhdGVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWREYXRlIiwgInVzZU1lbW8iLCAiZGF0ZSIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgInVzZUNhbGxiYWNrIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkVudW1JbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAidmFsdWUiLCAib3B0aW9ucyIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlU2VsZWN0T3B0aW9uIiwgIm9wdGlvbiIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImJhZGdlVmFyaWFudHMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkpzb25JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJqc29uVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJOdW1lcmljSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAibnVtZXJpY1ZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiUmF3SW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiVGltZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImZvcm1hdHRlZFRpbWUiLCAidXNlTWVtbyIsICJoYXNUaW1lem9uZSIsICJkYXRlIiwgInRpbWVSZWdleCIsICJtYXRjaCIsICJob3VycyIsICJtaW51dGVzIiwgInR6T2Zmc2V0IiwgInBlcmlvZCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImpzeCIsICJnZXRJbnB1dCIsICJwcm9wcyIsICJjZWxsIiwgImNvbHVtbiIsICJvblN1Ym1pdCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAicmVhZG9ubHkiLCAiY2VsbFZhbHVlIiwgInZhbHVlIiwgIkRhdGVJbnB1dCIsICJUaW1lSW5wdXQiLCAiSnNvbklucHV0IiwgIkJvb2xlYW5JbnB1dCIsICJFbnVtSW5wdXQiLCAiTnVtZXJpY0lucHV0IiwgIlJhd0lucHV0IiwgImlzT2JqZWN0VHlwZSIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAiRnJhZ21lbnQiLCAianN4IiwgIlN0YWdlZFJvd3MiLCAicHJvcHMiLCAicGFyZW50VGFibGUiLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInJlYWRvbmx5IiwgInVzZUlzSW5zZXJ0aW5nIiwgInVwZGF0ZVN0YWdlZFJvdyIsICJyb3dJbmRleCIsICJwYXJ0aWFsUm93IiwgInByZXZSb3dzIiwgIm5ld1Jvd3MiLCAiY29sdW1uRGVmcyIsICJjb2x1bW4iLCAiRW1wdHlDZWxsIiwgImNlbGwiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgImdldElucHV0IiwgInZhbHVlIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJyb3ciLCAiaSIsICJUYWJsZVJvdyIsICJqIiwgIkNlbGwiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJBY3RpdmVUYWJsZVZpZXciLCAiX3Byb3BzIiwgImlzTXV0YXRpbmciLCAidXNlSXNNdXRhdGluZyIsICJhY3RpdmVUYWJsZSIsICJvbkVycm9yIiwgImlzRnVsbHNjcmVlbiIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInBhZ2luYXRpb25TdGF0ZSIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAidXNlU3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUZpbHRlcmluZyIsICJkYXRhIiwgImlzRmV0Y2hpbmciLCAicmVmZXRjaCIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJpc1NlbGVjdGluZyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTZWxlY3Rpb24iLCAicmVhZG9ubHkiLCAiY29sdW1uIiwgImlzSW5zZXJ0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgImluc2VydCIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJ1cGRhdGUiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAidXNlRWZmZWN0IiwgInNhdmVTdGFnZWRSb3dzIiwgInRvYXN0IiwgIm5ld1N0YWdlZFJvdyIsICJvbGQiLCAiZHJvcFN0YWdlZFJvd3MiLCAiaGFuZGxlQ2VsbElucHV0U3VibWl0IiwgInZhbHVlIiwgInJvdyIsICJvbkZpbHRlck9wZW5DaGFuZ2UiLCAib3BlbiIsICJjb25jcmV0ZUNvbHVtbkRlZnMiLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgImNlbGwiLCAicHJvcHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgImdldElucHV0IiwgInZpcnR1YWxDb2x1bW5EZWZzIiwgInRhYmxlIiwgIlNlbGVjdEhlYWRlckNlbGwiLCAiU2VsZWN0Um93Q2VsbCIsICJjb2x1bW5EZWZzIiwgImRlZmF1bHRDb2x1bW5Tb3J0aW5nIiwgIkJ1dHRvbiIsICJQYW5lbExlZnRDbG9zZSIsICJQYW5lbExlZnRPcGVuIiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiY24iLCAiRmlsdGVyIiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiRmlsdGVyVHJlZSIsICJmaWx0ZXIiLCAiUmVmcmVzaEN3IiwgIk1pbmltaXplIiwgIk1heGltaXplIiwgIkRhdGFHcmlkIiwgIlN0YWdlZFJvd3MiLCAiZ2V0UGFnZUNvdW50IiwgInJvd0NvdW50IiwgInBhZ2VTaXplIiwgInBhZ2VDb3VudCIsICJhIiwgImIiLCAiYU1ldGEiLCAiYk1ldGEiLCAiU2xvdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1dWlkdjQiLCAidXNlUXVlcnkiLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJzaWduYWwiLCAiZXJyb3IiLCAiaW50cm9zcGVjdGlvbiIsICJjdHgiLCAidXNlQWN0aXZlVGFibGUiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJlbWl0VGVsZW1ldHJ5RXZlbnQiLCAidXNlU3R1ZGlvIiwgImludHJvc3BlY3Rpb24iLCAiZGF0YVVwZGF0ZWRBdCIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImlzTG9hZGluZyIsICJJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCIsICJ0YWJsZXMiLCAidXNlTWVtbyIsICJ0b3RhbFRhYmxlQ291bnQiLCAic3VtIiwgInNjaGVtYSIsICJmaXJzdFRhYmxlIiwgInRhYmxlQW5kU2NoZW1hIiwgInNldFRhYmxlQW5kU2NoZW1hIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInYiLCAic2V0UGFnZVBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAic2V0U29ydFBhcmFtIiwgInVzZUVmZmVjdCIsICJ0YWJsZUZyb21QYXJhbSIsICJ0IiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUNhbGxiYWNrIiwgIm5ld1RhYmxlIiwgInV1aWR2NCIsICJqc3giLCAianN4cyIsICJOYXZpZ2F0aW9uIiwgImNsYXNzTmFtZSIsICJ0YWJsZXMiLCAiYWN0aXZlVGFibGUiLCAiaXNMb2FkaW5nIiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUFjdGl2ZVRhYmxlIiwgImFjdGl2ZVZpZXciLCAiaGFuZGxlVmlld0NoYW5nZSIsICJ1c2VBY3RpdmVWaWV3IiwgInNpZGVCYXJDbGFzc2VzIiwgImNuIiwgInRhYmxlIiwgIl8iLCAiaW5kZXgiLCAiU2tlbGV0b24iLCAiQmxvY2siLCAibGFiZWwiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAiVGFibGUyIiwgIkl0ZW0iLCAiYXNDaGlsZCIsICJpc0FjdGl2ZSIsICJzaXplIiwgIndyYXBDaGlsZHJlbkluU3BhbiIsICJTbG90IiwgInVzZU1lbW8iLCAiTk9fVEFCTEVTX05PREUiLCAicG90ZW50aWFsRm9yZWlnblRhYmxlIiwgImZpZWxkTmFtZSIsICJzbmFrZUNhc2VNYXRjaCIsICJjYW1lbENhc2VNYXRjaCIsICJzaW5ndWxhckZvcm1NYXRjaGVzIiwgInNpbmd1bGFyIiwgInRhYmxlTmFtZSIsICJzaW5ndWxhckxvd2VyIiwgInRhYmxlTmFtZUxvd2VyIiwgInVzZVNjaGVtYVZpc3VhbGl6YXRpb24iLCAiaW50cm9zcGVjdGlvbiIsICJpc0xvYWRpbmciLCAiZXJyb3IiLCAidXNlSW50cm9zcGVjdGlvbiIsICJ1c2VNZW1vIiwgInRhYmxlcyIsICJ0YWJsZU1hcCIsICJoYXNBbnlUYWJsZXMiLCAic2NoZW1hIiwgInRhYmxlIiwgImZpZWxkcyIsICJjb2x1bW4iLCAidGFibGVPYmplY3QiLCAicmVsYXRpb25zaGlwcyIsICJzb3VyY2VUYWJsZSIsICJmaWVsZCIsICJwb3RlbnRpYWxUYWJsZSIsICJ0YXJnZXRUYWJsZUVudHJ5IiwgInRhcmdldFRhYmxlTmFtZSIsICJ0YXJnZXRUYWJsZSIsICJmIiwgIm1lbW8iLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAiUmVhY3RGbG93IiwgImFkZEVkZ2UiLCAiQmFja2dyb3VuZCIsICJDb25uZWN0aW9uTGluZVR5cGUiLCAiQ29udHJvbHMiLCAiSGFuZGxlIiwgIlBvc2l0aW9uIiwgInVzZUVkZ2VzU3RhdGUiLCAidXNlTm9kZXNTdGF0ZSIsICJqc3giLCAianN4cyIsICJUYWJsZU5vZGUiLCAibWVtbyIsICJkYXRhIiwgImlzTm9UYWJsZXNOb2RlIiwgImdldEljb24iLCAiZmllbGROYW1lIiwgImZpZWxkVHlwZSIsICJDaXJjbGVBbGVydCIsICJIYXNoIiwgIk1haWwiLCAiUGhvbmUiLCAiVXNlciIsICJDYWxlbmRhciIsICJLZXkiLCAiY24iLCAiSGFuZGxlIiwgIlBvc2l0aW9uIiwgImZpZWxkIiwgImluZGV4IiwgIm5vZGVUeXBlcyIsICJnZXRMYXlvdXRlZE5vZGVzIiwgInRhYmxlcyIsICJfcmVsYXRpb25zaGlwcyIsICJ0YWJsZSIsICJHUklEX0dBUF9YIiwgIkdSSURfR0FQX1kiLCAiQ09MVU1OUyIsICJjb2x1bW4iLCAicm93IiwgIlNjaGVtYVZpc3VhbGl6YXRpb24iLCAicmVsYXRpb25zaGlwcyIsICJub2RlSWRTZXQiLCAidXNlTWVtbyIsICJ2YWxpZFJlbGF0aW9uc2hpcHMiLCAicmVsIiwgImluaXRpYWxOb2RlcyIsICJpbml0aWFsRWRnZXMiLCAibm9kZXMiLCAic2V0Tm9kZXMiLCAib25Ob2Rlc0NoYW5nZSIsICJ1c2VOb2Rlc1N0YXRlIiwgImVkZ2VzIiwgInNldEVkZ2VzIiwgIm9uRWRnZXNDaGFuZ2UiLCAidXNlRWRnZXNTdGF0ZSIsICJ1c2VFZmZlY3QiLCAib25Db25uZWN0IiwgInVzZUNhbGxiYWNrIiwgInBhcmFtcyIsICJlZHMiLCAiYWRkRWRnZSIsICJSZWFjdEZsb3ciLCAiQ29ubmVjdGlvbkxpbmVUeXBlIiwgIkJhY2tncm91bmQiLCAiQ29udHJvbHMiLCAianN4IiwgIlNjaGVtYVZpZXciLCAidGFibGVzIiwgInJlbGF0aW9uc2hpcHMiLCAidXNlU2NoZW1hVmlzdWFsaXphdGlvbiIsICJqc3giLCAiU2NoZW1hVmlzdWFsaXphdGlvbiIsICJqc3giLCAianN4cyIsICJTdHVkaW8iLCAicHJvcHMiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgIm9uVGVsZW1ldHJ5RXZlbnQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgIlN0dWRpb0NvbnRlbnQiLCAiaXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgImFjdGl2ZVZpZXciLCAidXNlQWN0aXZlVmlldyIsICJjb250YWluZXJDbGFzc2VzIiwgImNuIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTmF2aWdhdGlvbiIsICJBY3RpdmVUYWJsZVZpZXciLCAiU2NoZW1hVmlldyJdCn0K
|